From 9ba8c7a51c55073ef6b3d9b12aee74e5ad5b53db Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Fri, 19 Jan 2024 12:40:47 -0800 Subject: [PATCH] Allow `autoImportFileExcludePatterns` to match anywhere in the file path (#57090) --- src/compiler/utilities.ts | 11 +- src/services/exportInfoMap.ts | 4 +- .../autoImportFileExcludePatterns2.js | 1024 ++++++++++++++++ ...oImportFileExcludePatterns_networkPaths.js | 1024 ++++++++++++++++ ...oImportFileExcludePatterns_windowsPaths.js | 1077 +++++++++++++++++ .../server/autoImportFileExcludePatterns2.ts | 31 + ...oImportFileExcludePatterns_networkPaths.ts | 31 + ...oImportFileExcludePatterns_windowsPaths.ts | 31 + 8 files changed, 3229 insertions(+), 4 deletions(-) create mode 100644 tests/baselines/reference/tsserver/fourslashServer/autoImportFileExcludePatterns2.js create mode 100644 tests/baselines/reference/tsserver/fourslashServer/autoImportFileExcludePatterns_networkPaths.js create mode 100644 tests/baselines/reference/tsserver/fourslashServer/autoImportFileExcludePatterns_windowsPaths.js create mode 100644 tests/cases/fourslash/server/autoImportFileExcludePatterns2.ts create mode 100644 tests/cases/fourslash/server/autoImportFileExcludePatterns_networkPaths.ts create mode 100644 tests/cases/fourslash/server/autoImportFileExcludePatterns_windowsPaths.ts diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 4680a78c5ac..f9ec2c9b486 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -9140,7 +9140,8 @@ export const commonPackageFolders: readonly string[] = ["node_modules", "bower_c const implicitExcludePathRegexPattern = `(?!(${commonPackageFolders.join("|")})(/|$))`; -interface WildcardMatcher { +/** @internal */ +export interface WildcardMatcher { singleAsteriskRegexFragment: string; doubleAsteriskRegexFragment: string; replaceWildcardCharacter: (match: string) => string; @@ -9222,7 +9223,13 @@ export function getPatternFromSpec(spec: string, basePath: string, usage: "files return pattern && `^(${pattern})${usage === "exclude" ? "($|/)" : "$"}`; } -function getSubPatternFromSpec(spec: string, basePath: string, usage: "files" | "directories" | "exclude", { singleAsteriskRegexFragment, doubleAsteriskRegexFragment, replaceWildcardCharacter }: WildcardMatcher): string | undefined { +/** @internal */ +export function getSubPatternFromSpec( + spec: string, + basePath: string, + usage: "files" | "directories" | "exclude", + { singleAsteriskRegexFragment, doubleAsteriskRegexFragment, replaceWildcardCharacter }: WildcardMatcher = wildcardMatchers[usage], +): string | undefined { let subpattern = ""; let hasWrittenComponent = false; const components = getNormalizedPathComponents(spec, basePath); diff --git a/src/services/exportInfoMap.ts b/src/services/exportInfoMap.ts index 3c3ec8c757b..322631ad92c 100644 --- a/src/services/exportInfoMap.ts +++ b/src/services/exportInfoMap.ts @@ -21,8 +21,8 @@ import { getNamesForExportedSymbol, getNodeModulePathParts, getPackageNameFromTypesPackageName, - getPatternFromSpec, getRegexFromPattern, + getSubPatternFromSpec, getSymbolId, hostGetCanonicalFileName, hostUsesCaseSensitiveFileNames, @@ -425,7 +425,7 @@ export function forEachExternalModuleToImportFrom( const excludePatterns = preferences.autoImportFileExcludePatterns && mapDefined(preferences.autoImportFileExcludePatterns, spec => { // The client is expected to send rooted path specs since we don't know // what directory a relative path is relative to. - const pattern = getPatternFromSpec(spec, "", "exclude"); + const pattern = getSubPatternFromSpec(spec, "", "exclude"); return pattern ? getRegexFromPattern(pattern, useCaseSensitiveFileNames) : undefined; }); diff --git a/tests/baselines/reference/tsserver/fourslashServer/autoImportFileExcludePatterns2.js b/tests/baselines/reference/tsserver/fourslashServer/autoImportFileExcludePatterns2.js new file mode 100644 index 00000000000..52df1e85691 --- /dev/null +++ b/tests/baselines/reference/tsserver/fourslashServer/autoImportFileExcludePatterns2.js @@ -0,0 +1,1024 @@ +currentDirectory:: / useCaseSensitiveFileNames: false +Info seq [hh:mm:ss:mss] Provided types map file "/typesMap.json" doesn't exist +//// [/lib.d.ts] +lib.d.ts-Text + +//// [/lib.decorators.d.ts] +lib.decorators.d.ts-Text + +//// [/lib.decorators.legacy.d.ts] +lib.decorators.legacy.d.ts-Text + +//// [/project/index.ts] +S3 + +//// [/project/node_modules/aws-sdk/clients/s3.d.ts] +export declare class S3 {} + +//// [/project/node_modules/aws-sdk/index.d.ts] +export * from "./clients/s3"; + +//// [/project/node_modules/aws-sdk/package.json] +{ "name": "aws-sdk", "version": "2.0.0", "main": "index.js" } + +//// [/project/package.json] +{ "dependencies": { "aws-sdk": "*" } } + + +Info seq [hh:mm:ss:mss] request: + { + "seq": 0, + "type": "request", + "arguments": { + "file": "/project/node_modules/aws-sdk/package.json" + }, + "command": "open" + } +Info seq [hh:mm:ss:mss] Search path: /project/node_modules/aws-sdk +Info seq [hh:mm:ss:mss] For info: /project/node_modules/aws-sdk/package.json :: No config files found. +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /lib.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /lib.decorators.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /lib.decorators.legacy.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /project/node_modules/aws-sdk/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /project/node_modules/aws-sdk/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /dev/null/inferredProject1* Version: 1 structureChanged: true structureIsReused:: Not Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred) +Info seq [hh:mm:ss:mss] Files (4) + /lib.d.ts Text-1 lib.d.ts-Text + /lib.decorators.d.ts Text-1 lib.decorators.d.ts-Text + /lib.decorators.legacy.d.ts Text-1 lib.decorators.legacy.d.ts-Text + /project/node_modules/aws-sdk/package.json SVC-1-0 "{ \"name\": \"aws-sdk\", \"version\": \"2.0.0\", \"main\": \"index.js\" }" + + + ../../../lib.d.ts + Default library for target 'es5' + ../../../lib.decorators.d.ts + Library referenced via 'decorators' from file '../../../lib.d.ts' + ../../../lib.decorators.legacy.d.ts + Library referenced via 'decorators.legacy' from file '../../../lib.d.ts' + package.json + Root file specified for compilation + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred) +Info seq [hh:mm:ss:mss] Files (4) + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] Open files: +Info seq [hh:mm:ss:mss] FileName: /project/node_modules/aws-sdk/package.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* +After Request +watchedFiles:: +/lib.d.ts: *new* + {"pollingInterval":500} +/lib.decorators.d.ts: *new* + {"pollingInterval":500} +/lib.decorators.legacy.d.ts: *new* + {"pollingInterval":500} + +watchedDirectoriesRecursive:: +/project/node_modules/aws-sdk/node_modules/@types: *new* + {} + +Info seq [hh:mm:ss:mss] request: + { + "seq": 1, + "type": "request", + "arguments": { + "file": "/project/index.ts" + }, + "command": "open" + } +Info seq [hh:mm:ss:mss] Search path: /project +Info seq [hh:mm:ss:mss] For info: /project/index.ts :: No config files found. +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /dev/null/inferredProject2* +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /dev/null/inferredProject2* Version: 1 structureChanged: true structureIsReused:: Not Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject2*' (Inferred) +Info seq [hh:mm:ss:mss] Files (4) + /lib.d.ts Text-1 lib.d.ts-Text + /lib.decorators.d.ts Text-1 lib.decorators.d.ts-Text + /lib.decorators.legacy.d.ts Text-1 lib.decorators.legacy.d.ts-Text + /project/index.ts SVC-1-0 "S3" + + + ../lib.d.ts + Default library for target 'es5' + ../lib.decorators.d.ts + Library referenced via 'decorators' from file '../lib.d.ts' + ../lib.decorators.legacy.d.ts + Library referenced via 'decorators.legacy' from file '../lib.d.ts' + index.ts + Root file specified for compilation + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /project/package.json 250 undefined WatchType: package.json file +Info seq [hh:mm:ss:mss] AutoImportProviderProject: found 1 root files in 1 dependencies in * ms +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /project/node_modules/aws-sdk/index.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /dev/null/autoImportProviderProject1* +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /project/node_modules/aws-sdk/package.json 2000 undefined Project: /dev/null/autoImportProviderProject1* WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /project/node_modules/aws-sdk/clients/s3.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /dev/null/autoImportProviderProject1* Version: 1 structureChanged: true structureIsReused:: Not Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project '/dev/null/autoImportProviderProject1*' (AutoImportProvider) +Info seq [hh:mm:ss:mss] Files (2) + /project/node_modules/aws-sdk/clients/s3.d.ts Text-1 "export declare class S3 {}" + /project/node_modules/aws-sdk/index.d.ts Text-1 "export * from \"./clients/s3\";" + + + node_modules/aws-sdk/clients/s3.d.ts + Imported via "./clients/s3" from file 'node_modules/aws-sdk/index.d.ts' with packageId 'aws-sdk/clients/s3.d.ts@2.0.0' + node_modules/aws-sdk/index.d.ts + Root file specified for compilation + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred) +Info seq [hh:mm:ss:mss] Files (4) + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject2*' (Inferred) +Info seq [hh:mm:ss:mss] Files (4) + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] Project '/dev/null/autoImportProviderProject1*' (AutoImportProvider) +Info seq [hh:mm:ss:mss] Files (2) + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] Open files: +Info seq [hh:mm:ss:mss] FileName: /project/node_modules/aws-sdk/package.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] FileName: /project/index.ts ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject2* +After Request +watchedFiles:: +/lib.d.ts: + {"pollingInterval":500} +/lib.decorators.d.ts: + {"pollingInterval":500} +/lib.decorators.legacy.d.ts: + {"pollingInterval":500} +/project/node_modules/aws-sdk/clients/s3.d.ts: *new* + {"pollingInterval":500} +/project/node_modules/aws-sdk/index.d.ts: *new* + {"pollingInterval":500} +/project/node_modules/aws-sdk/package.json: *new* + {"pollingInterval":2000} +/project/package.json: *new* + {"pollingInterval":250} + +watchedDirectoriesRecursive:: +/project/node_modules/aws-sdk/node_modules/@types: + {} + +Info seq [hh:mm:ss:mss] request: + { + "seq": 2, + "type": "request", + "arguments": { + "preferences": { + "includeCompletionsForModuleExports": true, + "autoImportFileExcludePatterns": [ + "**/node_modules/aws-sdk" + ] + } + }, + "command": "configure" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "configure", + "request_seq": 2, + "success": true + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 3, + "type": "request", + "arguments": { + "file": "/project/index.ts", + "line": 1, + "offset": 3 + }, + "command": "completionInfo" + } +Info seq [hh:mm:ss:mss] getCompletionData: Get current token: * +Info seq [hh:mm:ss:mss] getCompletionData: Is inside comment: * +Info seq [hh:mm:ss:mss] getCompletionData: Get previous token: * +Info seq [hh:mm:ss:mss] getCompletionData: Semantic work: * +Info seq [hh:mm:ss:mss] getCompletionsAtPosition: getCompletionEntriesFromSymbols: * +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "completionInfo", + "request_seq": 3, + "success": true, + "body": { + "flags": 0, + "isGlobalCompletion": true, + "isMemberCompletion": false, + "isNewIdentifierLocation": false, + "optionalReplacementSpan": { + "start": { + "line": 1, + "offset": 1 + }, + "end": { + "line": 1, + "offset": 3 + } + }, + "entries": [ + { + "name": "abstract", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "any", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "Array", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "ArrayBuffer", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "as", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "asserts", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "async", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "await", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "bigint", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "boolean", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "Boolean", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "break", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "case", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "catch", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "class", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "const", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "continue", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "DataView", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "Date", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "debugger", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "declare", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "decodeURI", + "kind": "function", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "decodeURIComponent", + "kind": "function", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "default", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "delete", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "do", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "else", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "encodeURI", + "kind": "function", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "encodeURIComponent", + "kind": "function", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "enum", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "Error", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "eval", + "kind": "function", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "EvalError", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "export", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "extends", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "false", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "finally", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "Float32Array", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "Float64Array", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "for", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "function", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "Function", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "globalThis", + "kind": "module", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "if", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "implements", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "import", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "in", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "infer", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "Infinity", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "instanceof", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "Int16Array", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "Int32Array", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "Int8Array", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "interface", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "Intl", + "kind": "module", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "isFinite", + "kind": "function", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "isNaN", + "kind": "function", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "JSON", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "keyof", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "let", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "Math", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "module", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "namespace", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "NaN", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "never", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "new", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "null", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "number", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "Number", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "object", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "Object", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "package", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "parseFloat", + "kind": "function", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "parseInt", + "kind": "function", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "RangeError", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "readonly", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "ReferenceError", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "RegExp", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "return", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "satisfies", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "string", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "String", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "super", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "switch", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "symbol", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "SyntaxError", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "this", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "throw", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "true", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "try", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "type", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "TypeError", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "typeof", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "Uint16Array", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "Uint32Array", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "Uint8Array", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "Uint8ClampedArray", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "undefined", + "kind": "var", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "unique", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "unknown", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "URIError", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "var", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "void", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "while", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "with", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "yield", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "escape", + "kind": "function", + "kindModifiers": "deprecated,declare", + "sortText": "z15" + }, + { + "name": "unescape", + "kind": "function", + "kindModifiers": "deprecated,declare", + "sortText": "z15" + } + ] + } + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 4, + "type": "request", + "arguments": { + "preferences": { + "autoImportFileExcludePatterns": [ + "**/node_modules/aws-sdk" + ] + } + }, + "command": "configure" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "configure", + "request_seq": 4, + "success": true + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 5, + "type": "request", + "arguments": { + "preferences": { + "autoImportFileExcludePatterns": [ + "**/node_modules/aws-sdk" + ] + } + }, + "command": "configure" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "configure", + "request_seq": 5, + "success": true + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 6, + "type": "request", + "arguments": { + "file": "/project/index.ts", + "includeLinePosition": true + }, + "command": "syntacticDiagnosticsSync" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "syntacticDiagnosticsSync", + "request_seq": 6, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 7, + "type": "request", + "arguments": { + "file": "/project/index.ts", + "includeLinePosition": true + }, + "command": "semanticDiagnosticsSync" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "semanticDiagnosticsSync", + "request_seq": 7, + "success": true, + "body": [ + { + "message": "Cannot find name 'S3'.", + "start": 0, + "length": 2, + "category": "error", + "code": 2304, + "startLocation": { + "line": 1, + "offset": 1 + }, + "endLocation": { + "line": 1, + "offset": 3 + } + } + ] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 8, + "type": "request", + "arguments": { + "file": "/project/index.ts", + "includeLinePosition": true + }, + "command": "suggestionDiagnosticsSync" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "suggestionDiagnosticsSync", + "request_seq": 8, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 9, + "type": "request", + "arguments": { + "file": "/project/index.ts", + "startLine": 1, + "startOffset": 1, + "endLine": 1, + "endOffset": 3, + "errorCodes": [ + 2304 + ] + }, + "command": "getCodeFixes" + } +Info seq [hh:mm:ss:mss] forEachExternalModuleToImportFrom autoImportProvider: * +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "getCodeFixes", + "request_seq": 9, + "success": true, + "body": [] + } \ No newline at end of file diff --git a/tests/baselines/reference/tsserver/fourslashServer/autoImportFileExcludePatterns_networkPaths.js b/tests/baselines/reference/tsserver/fourslashServer/autoImportFileExcludePatterns_networkPaths.js new file mode 100644 index 00000000000..72819155050 --- /dev/null +++ b/tests/baselines/reference/tsserver/fourslashServer/autoImportFileExcludePatterns_networkPaths.js @@ -0,0 +1,1024 @@ +currentDirectory:: / useCaseSensitiveFileNames: false +Info seq [hh:mm:ss:mss] Provided types map file "/typesMap.json" doesn't exist +//// [/lib.d.ts] +lib.d.ts-Text + +//// [/lib.decorators.d.ts] +lib.decorators.d.ts-Text + +//// [/lib.decorators.legacy.d.ts] +lib.decorators.legacy.d.ts-Text + +//// [//tsclient/project/index.ts] +S3 + +//// [//tsclient/project/node_modules/aws-sdk/clients/s3.d.ts] +export declare class S3 {} + +//// [//tsclient/project/node_modules/aws-sdk/index.d.ts] +export * from "./clients/s3"; + +//// [//tsclient/project/node_modules/aws-sdk/package.json] +{ "name": "aws-sdk", "version": "2.0.0", "main": "index.js" } + +//// [//tsclient/project/package.json] +{ "dependencies": { "aws-sdk": "*" } } + + +Info seq [hh:mm:ss:mss] request: + { + "seq": 0, + "type": "request", + "arguments": { + "file": "//tsclient/project/node_modules/aws-sdk/package.json" + }, + "command": "open" + } +Info seq [hh:mm:ss:mss] Search path: //tsclient/project/node_modules/aws-sdk +Info seq [hh:mm:ss:mss] For info: //tsclient/project/node_modules/aws-sdk/package.json :: No config files found. +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /lib.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /lib.decorators.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /lib.decorators.legacy.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: //tsclient/project/node_modules/aws-sdk/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: //tsclient/project/node_modules/aws-sdk/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /dev/null/inferredProject1* Version: 1 structureChanged: true structureIsReused:: Not Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred) +Info seq [hh:mm:ss:mss] Files (4) + /lib.d.ts Text-1 lib.d.ts-Text + /lib.decorators.d.ts Text-1 lib.decorators.d.ts-Text + /lib.decorators.legacy.d.ts Text-1 lib.decorators.legacy.d.ts-Text + //tsclient/project/node_modules/aws-sdk/package.json SVC-1-0 "{ \"name\": \"aws-sdk\", \"version\": \"2.0.0\", \"main\": \"index.js\" }" + + + /lib.d.ts + Default library for target 'es5' + /lib.decorators.d.ts + Library referenced via 'decorators' from file '/lib.d.ts' + /lib.decorators.legacy.d.ts + Library referenced via 'decorators.legacy' from file '/lib.d.ts' + package.json + Root file specified for compilation + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred) +Info seq [hh:mm:ss:mss] Files (4) + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] Open files: +Info seq [hh:mm:ss:mss] FileName: //tsclient/project/node_modules/aws-sdk/package.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* +After Request +watchedFiles:: +/lib.d.ts: *new* + {"pollingInterval":500} +/lib.decorators.d.ts: *new* + {"pollingInterval":500} +/lib.decorators.legacy.d.ts: *new* + {"pollingInterval":500} + +watchedDirectoriesRecursive:: +//tsclient/project/node_modules/aws-sdk/node_modules/@types: *new* + {} + +Info seq [hh:mm:ss:mss] request: + { + "seq": 1, + "type": "request", + "arguments": { + "file": "//tsclient/project/index.ts" + }, + "command": "open" + } +Info seq [hh:mm:ss:mss] Search path: //tsclient/project +Info seq [hh:mm:ss:mss] For info: //tsclient/project/index.ts :: No config files found. +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /dev/null/inferredProject2* +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /dev/null/inferredProject2* Version: 1 structureChanged: true structureIsReused:: Not Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject2*' (Inferred) +Info seq [hh:mm:ss:mss] Files (4) + /lib.d.ts Text-1 lib.d.ts-Text + /lib.decorators.d.ts Text-1 lib.decorators.d.ts-Text + /lib.decorators.legacy.d.ts Text-1 lib.decorators.legacy.d.ts-Text + //tsclient/project/index.ts SVC-1-0 "S3" + + + /lib.d.ts + Default library for target 'es5' + /lib.decorators.d.ts + Library referenced via 'decorators' from file '/lib.d.ts' + /lib.decorators.legacy.d.ts + Library referenced via 'decorators.legacy' from file '/lib.d.ts' + index.ts + Root file specified for compilation + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: //tsclient/project/package.json 250 undefined WatchType: package.json file +Info seq [hh:mm:ss:mss] AutoImportProviderProject: found 1 root files in 1 dependencies in * ms +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: //tsclient/project/node_modules/aws-sdk/index.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /dev/null/autoImportProviderProject1* +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: //tsclient/project/node_modules/aws-sdk/package.json 2000 undefined Project: /dev/null/autoImportProviderProject1* WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: //tsclient/project/node_modules/aws-sdk/clients/s3.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /dev/null/autoImportProviderProject1* Version: 1 structureChanged: true structureIsReused:: Not Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project '/dev/null/autoImportProviderProject1*' (AutoImportProvider) +Info seq [hh:mm:ss:mss] Files (2) + //tsclient/project/node_modules/aws-sdk/clients/s3.d.ts Text-1 "export declare class S3 {}" + //tsclient/project/node_modules/aws-sdk/index.d.ts Text-1 "export * from \"./clients/s3\";" + + + node_modules/aws-sdk/clients/s3.d.ts + Imported via "./clients/s3" from file 'node_modules/aws-sdk/index.d.ts' with packageId 'aws-sdk/clients/s3.d.ts@2.0.0' + node_modules/aws-sdk/index.d.ts + Root file specified for compilation + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred) +Info seq [hh:mm:ss:mss] Files (4) + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject2*' (Inferred) +Info seq [hh:mm:ss:mss] Files (4) + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] Project '/dev/null/autoImportProviderProject1*' (AutoImportProvider) +Info seq [hh:mm:ss:mss] Files (2) + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] Open files: +Info seq [hh:mm:ss:mss] FileName: //tsclient/project/node_modules/aws-sdk/package.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] FileName: //tsclient/project/index.ts ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject2* +After Request +watchedFiles:: +//tsclient/project/node_modules/aws-sdk/clients/s3.d.ts: *new* + {"pollingInterval":500} +//tsclient/project/node_modules/aws-sdk/index.d.ts: *new* + {"pollingInterval":500} +//tsclient/project/node_modules/aws-sdk/package.json: *new* + {"pollingInterval":2000} +//tsclient/project/package.json: *new* + {"pollingInterval":250} +/lib.d.ts: + {"pollingInterval":500} +/lib.decorators.d.ts: + {"pollingInterval":500} +/lib.decorators.legacy.d.ts: + {"pollingInterval":500} + +watchedDirectoriesRecursive:: +//tsclient/project/node_modules/aws-sdk/node_modules/@types: + {} + +Info seq [hh:mm:ss:mss] request: + { + "seq": 2, + "type": "request", + "arguments": { + "preferences": { + "includeCompletionsForModuleExports": true, + "autoImportFileExcludePatterns": [ + "\\\\tsclient\\project\\node_modules\\aws-sdk" + ] + } + }, + "command": "configure" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "configure", + "request_seq": 2, + "success": true + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 3, + "type": "request", + "arguments": { + "file": "//tsclient/project/index.ts", + "line": 1, + "offset": 3 + }, + "command": "completionInfo" + } +Info seq [hh:mm:ss:mss] getCompletionData: Get current token: * +Info seq [hh:mm:ss:mss] getCompletionData: Is inside comment: * +Info seq [hh:mm:ss:mss] getCompletionData: Get previous token: * +Info seq [hh:mm:ss:mss] getCompletionData: Semantic work: * +Info seq [hh:mm:ss:mss] getCompletionsAtPosition: getCompletionEntriesFromSymbols: * +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "completionInfo", + "request_seq": 3, + "success": true, + "body": { + "flags": 0, + "isGlobalCompletion": true, + "isMemberCompletion": false, + "isNewIdentifierLocation": false, + "optionalReplacementSpan": { + "start": { + "line": 1, + "offset": 1 + }, + "end": { + "line": 1, + "offset": 3 + } + }, + "entries": [ + { + "name": "abstract", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "any", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "Array", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "ArrayBuffer", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "as", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "asserts", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "async", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "await", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "bigint", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "boolean", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "Boolean", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "break", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "case", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "catch", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "class", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "const", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "continue", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "DataView", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "Date", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "debugger", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "declare", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "decodeURI", + "kind": "function", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "decodeURIComponent", + "kind": "function", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "default", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "delete", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "do", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "else", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "encodeURI", + "kind": "function", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "encodeURIComponent", + "kind": "function", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "enum", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "Error", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "eval", + "kind": "function", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "EvalError", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "export", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "extends", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "false", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "finally", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "Float32Array", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "Float64Array", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "for", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "function", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "Function", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "globalThis", + "kind": "module", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "if", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "implements", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "import", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "in", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "infer", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "Infinity", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "instanceof", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "Int16Array", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "Int32Array", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "Int8Array", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "interface", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "Intl", + "kind": "module", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "isFinite", + "kind": "function", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "isNaN", + "kind": "function", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "JSON", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "keyof", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "let", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "Math", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "module", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "namespace", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "NaN", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "never", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "new", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "null", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "number", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "Number", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "object", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "Object", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "package", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "parseFloat", + "kind": "function", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "parseInt", + "kind": "function", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "RangeError", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "readonly", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "ReferenceError", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "RegExp", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "return", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "satisfies", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "string", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "String", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "super", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "switch", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "symbol", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "SyntaxError", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "this", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "throw", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "true", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "try", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "type", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "TypeError", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "typeof", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "Uint16Array", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "Uint32Array", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "Uint8Array", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "Uint8ClampedArray", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "undefined", + "kind": "var", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "unique", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "unknown", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "URIError", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "var", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "void", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "while", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "with", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "yield", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "escape", + "kind": "function", + "kindModifiers": "deprecated,declare", + "sortText": "z15" + }, + { + "name": "unescape", + "kind": "function", + "kindModifiers": "deprecated,declare", + "sortText": "z15" + } + ] + } + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 4, + "type": "request", + "arguments": { + "preferences": { + "autoImportFileExcludePatterns": [ + "\\\\tsclient\\project\\node_modules\\aws-sdk" + ] + } + }, + "command": "configure" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "configure", + "request_seq": 4, + "success": true + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 5, + "type": "request", + "arguments": { + "preferences": { + "autoImportFileExcludePatterns": [ + "\\\\tsclient\\project\\node_modules\\aws-sdk" + ] + } + }, + "command": "configure" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "configure", + "request_seq": 5, + "success": true + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 6, + "type": "request", + "arguments": { + "file": "//tsclient/project/index.ts", + "includeLinePosition": true + }, + "command": "syntacticDiagnosticsSync" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "syntacticDiagnosticsSync", + "request_seq": 6, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 7, + "type": "request", + "arguments": { + "file": "//tsclient/project/index.ts", + "includeLinePosition": true + }, + "command": "semanticDiagnosticsSync" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "semanticDiagnosticsSync", + "request_seq": 7, + "success": true, + "body": [ + { + "message": "Cannot find name 'S3'.", + "start": 0, + "length": 2, + "category": "error", + "code": 2304, + "startLocation": { + "line": 1, + "offset": 1 + }, + "endLocation": { + "line": 1, + "offset": 3 + } + } + ] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 8, + "type": "request", + "arguments": { + "file": "//tsclient/project/index.ts", + "includeLinePosition": true + }, + "command": "suggestionDiagnosticsSync" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "suggestionDiagnosticsSync", + "request_seq": 8, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 9, + "type": "request", + "arguments": { + "file": "//tsclient/project/index.ts", + "startLine": 1, + "startOffset": 1, + "endLine": 1, + "endOffset": 3, + "errorCodes": [ + 2304 + ] + }, + "command": "getCodeFixes" + } +Info seq [hh:mm:ss:mss] forEachExternalModuleToImportFrom autoImportProvider: * +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "getCodeFixes", + "request_seq": 9, + "success": true, + "body": [] + } \ No newline at end of file diff --git a/tests/baselines/reference/tsserver/fourslashServer/autoImportFileExcludePatterns_windowsPaths.js b/tests/baselines/reference/tsserver/fourslashServer/autoImportFileExcludePatterns_windowsPaths.js new file mode 100644 index 00000000000..7e181732f10 --- /dev/null +++ b/tests/baselines/reference/tsserver/fourslashServer/autoImportFileExcludePatterns_windowsPaths.js @@ -0,0 +1,1077 @@ +currentDirectory:: / useCaseSensitiveFileNames: false +Info seq [hh:mm:ss:mss] Provided types map file "/typesMap.json" doesn't exist +//// [/lib.d.ts] +lib.d.ts-Text + +//// [/lib.decorators.d.ts] +lib.decorators.d.ts-Text + +//// [/lib.decorators.legacy.d.ts] +lib.decorators.legacy.d.ts-Text + +//// [c:/project/index.ts] +S3 + +//// [c:/project/node_modules/aws-sdk/clients/s3.d.ts] +export declare class S3 {} + +//// [c:/project/node_modules/aws-sdk/index.d.ts] +export * from "./clients/s3"; + +//// [c:/project/node_modules/aws-sdk/package.json] +{ "name": "aws-sdk", "version": "2.0.0", "main": "index.js" } + +//// [c:/project/package.json] +{ "dependencies": { "aws-sdk": "*" } } + + +Info seq [hh:mm:ss:mss] request: + { + "seq": 0, + "type": "request", + "arguments": { + "file": "c:/project/node_modules/aws-sdk/package.json" + }, + "command": "open" + } +Info seq [hh:mm:ss:mss] Search path: c:/project/node_modules/aws-sdk +Info seq [hh:mm:ss:mss] For info: c:/project/node_modules/aws-sdk/package.json :: No config files found. +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: c:/project/node_modules/aws-sdk/tsconfig.json 2000 undefined WatchType: Config file for the inferred project root +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: c:/project/node_modules/aws-sdk/jsconfig.json 2000 undefined WatchType: Config file for the inferred project root +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: c:/project/node_modules/tsconfig.json 2000 undefined WatchType: Config file for the inferred project root +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: c:/project/node_modules/jsconfig.json 2000 undefined WatchType: Config file for the inferred project root +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /lib.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: c:/project/node_modules/aws-sdk/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: c:/project/node_modules/aws-sdk/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: c:/project/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: c:/project/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /lib.decorators.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /lib.decorators.legacy.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: c:/project/node_modules/aws-sdk/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: c:/project/node_modules/aws-sdk/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: c:/project/node_modules/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: c:/project/node_modules/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: c:/project/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: c:/project/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /dev/null/inferredProject1* Version: 1 structureChanged: true structureIsReused:: Not Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred) +Info seq [hh:mm:ss:mss] Files (4) + /lib.d.ts Text-1 lib.d.ts-Text + /lib.decorators.d.ts Text-1 lib.decorators.d.ts-Text + /lib.decorators.legacy.d.ts Text-1 lib.decorators.legacy.d.ts-Text + c:/project/node_modules/aws-sdk/package.json SVC-1-0 "{ \"name\": \"aws-sdk\", \"version\": \"2.0.0\", \"main\": \"index.js\" }" + + + /lib.d.ts + Default library for target 'es5' + /lib.decorators.d.ts + Library referenced via 'decorators' from file '/lib.d.ts' + /lib.decorators.legacy.d.ts + Library referenced via 'decorators.legacy' from file '/lib.d.ts' + package.json + Root file specified for compilation + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred) +Info seq [hh:mm:ss:mss] Files (4) + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] Open files: +Info seq [hh:mm:ss:mss] FileName: c:/project/node_modules/aws-sdk/package.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* +After Request +watchedFiles:: +/lib.d.ts: *new* + {"pollingInterval":500} +/lib.decorators.d.ts: *new* + {"pollingInterval":500} +/lib.decorators.legacy.d.ts: *new* + {"pollingInterval":500} +c:/project/node_modules/aws-sdk/jsconfig.json: *new* + {"pollingInterval":2000} +c:/project/node_modules/aws-sdk/tsconfig.json: *new* + {"pollingInterval":2000} +c:/project/node_modules/jsconfig.json: *new* + {"pollingInterval":2000} +c:/project/node_modules/tsconfig.json: *new* + {"pollingInterval":2000} + +watchedDirectoriesRecursive:: +c:/project/node_modules: *new* + {} +c:/project/node_modules/@types: *new* + {} +c:/project/node_modules/aws-sdk/node_modules: *new* + {} +c:/project/node_modules/aws-sdk/node_modules/@types: *new* + {} +c:/project/node_modules/node_modules/@types: *new* + {} + +Info seq [hh:mm:ss:mss] request: + { + "seq": 1, + "type": "request", + "arguments": { + "file": "c:/project/index.ts" + }, + "command": "open" + } +Info seq [hh:mm:ss:mss] Search path: c:/project +Info seq [hh:mm:ss:mss] For info: c:/project/index.ts :: No config files found. +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /dev/null/inferredProject2* +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: c:/project/node_modules 1 undefined Project: /dev/null/inferredProject2* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: c:/project/node_modules 1 undefined Project: /dev/null/inferredProject2* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: c:/project/node_modules/@types 1 undefined Project: /dev/null/inferredProject2* WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: c:/project/node_modules/@types 1 undefined Project: /dev/null/inferredProject2* WatchType: Type roots +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /dev/null/inferredProject2* Version: 1 structureChanged: true structureIsReused:: Not Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject2*' (Inferred) +Info seq [hh:mm:ss:mss] Files (4) + /lib.d.ts Text-1 lib.d.ts-Text + /lib.decorators.d.ts Text-1 lib.decorators.d.ts-Text + /lib.decorators.legacy.d.ts Text-1 lib.decorators.legacy.d.ts-Text + c:/project/index.ts SVC-1-0 "S3" + + + /lib.d.ts + Default library for target 'es5' + /lib.decorators.d.ts + Library referenced via 'decorators' from file '/lib.d.ts' + /lib.decorators.legacy.d.ts + Library referenced via 'decorators.legacy' from file '/lib.d.ts' + index.ts + Root file specified for compilation + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: c:/project/package.json 250 undefined WatchType: package.json file +Info seq [hh:mm:ss:mss] AutoImportProviderProject: found 1 root files in 1 dependencies in * ms +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: c:/project/node_modules/aws-sdk/index.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /dev/null/autoImportProviderProject1* +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: c:/project/node_modules 1 undefined Project: /dev/null/autoImportProviderProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: c:/project/node_modules 1 undefined Project: /dev/null/autoImportProviderProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: c:/project/node_modules/aws-sdk/package.json 2000 undefined Project: /dev/null/autoImportProviderProject1* WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: c:/project/node_modules/aws-sdk/clients/s3.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /dev/null/autoImportProviderProject1* Version: 1 structureChanged: true structureIsReused:: Not Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project '/dev/null/autoImportProviderProject1*' (AutoImportProvider) +Info seq [hh:mm:ss:mss] Files (2) + c:/project/node_modules/aws-sdk/clients/s3.d.ts Text-1 "export declare class S3 {}" + c:/project/node_modules/aws-sdk/index.d.ts Text-1 "export * from \"./clients/s3\";" + + + node_modules/aws-sdk/clients/s3.d.ts + Imported via "./clients/s3" from file 'node_modules/aws-sdk/index.d.ts' with packageId 'aws-sdk/clients/s3.d.ts@2.0.0' + node_modules/aws-sdk/index.d.ts + Root file specified for compilation + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred) +Info seq [hh:mm:ss:mss] Files (4) + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject2*' (Inferred) +Info seq [hh:mm:ss:mss] Files (4) + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] Project '/dev/null/autoImportProviderProject1*' (AutoImportProvider) +Info seq [hh:mm:ss:mss] Files (2) + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] Open files: +Info seq [hh:mm:ss:mss] FileName: c:/project/node_modules/aws-sdk/package.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] FileName: c:/project/index.ts ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject2* +After Request +watchedFiles:: +/lib.d.ts: + {"pollingInterval":500} +/lib.decorators.d.ts: + {"pollingInterval":500} +/lib.decorators.legacy.d.ts: + {"pollingInterval":500} +c:/project/node_modules/aws-sdk/clients/s3.d.ts: *new* + {"pollingInterval":500} +c:/project/node_modules/aws-sdk/index.d.ts: *new* + {"pollingInterval":500} +c:/project/node_modules/aws-sdk/jsconfig.json: + {"pollingInterval":2000} +c:/project/node_modules/aws-sdk/package.json: *new* + {"pollingInterval":2000} +c:/project/node_modules/aws-sdk/tsconfig.json: + {"pollingInterval":2000} +c:/project/node_modules/jsconfig.json: + {"pollingInterval":2000} +c:/project/node_modules/tsconfig.json: + {"pollingInterval":2000} +c:/project/package.json: *new* + {"pollingInterval":250} + +watchedDirectoriesRecursive:: +c:/project/node_modules: + {} + {} *new* + {} *new* +c:/project/node_modules/@types: + {} + {} *new* +c:/project/node_modules/aws-sdk/node_modules: + {} +c:/project/node_modules/aws-sdk/node_modules/@types: + {} +c:/project/node_modules/node_modules/@types: + {} + +Info seq [hh:mm:ss:mss] request: + { + "seq": 2, + "type": "request", + "arguments": { + "preferences": { + "includeCompletionsForModuleExports": true, + "autoImportFileExcludePatterns": [ + "**\\node_modules\\aws-sdk" + ] + } + }, + "command": "configure" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "configure", + "request_seq": 2, + "success": true + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 3, + "type": "request", + "arguments": { + "file": "c:/project/index.ts", + "line": 1, + "offset": 3 + }, + "command": "completionInfo" + } +Info seq [hh:mm:ss:mss] getCompletionData: Get current token: * +Info seq [hh:mm:ss:mss] getCompletionData: Is inside comment: * +Info seq [hh:mm:ss:mss] getCompletionData: Get previous token: * +Info seq [hh:mm:ss:mss] getCompletionData: Semantic work: * +Info seq [hh:mm:ss:mss] getCompletionsAtPosition: getCompletionEntriesFromSymbols: * +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "completionInfo", + "request_seq": 3, + "success": true, + "body": { + "flags": 0, + "isGlobalCompletion": true, + "isMemberCompletion": false, + "isNewIdentifierLocation": false, + "optionalReplacementSpan": { + "start": { + "line": 1, + "offset": 1 + }, + "end": { + "line": 1, + "offset": 3 + } + }, + "entries": [ + { + "name": "abstract", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "any", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "Array", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "ArrayBuffer", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "as", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "asserts", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "async", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "await", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "bigint", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "boolean", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "Boolean", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "break", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "case", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "catch", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "class", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "const", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "continue", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "DataView", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "Date", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "debugger", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "declare", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "decodeURI", + "kind": "function", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "decodeURIComponent", + "kind": "function", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "default", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "delete", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "do", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "else", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "encodeURI", + "kind": "function", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "encodeURIComponent", + "kind": "function", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "enum", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "Error", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "eval", + "kind": "function", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "EvalError", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "export", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "extends", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "false", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "finally", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "Float32Array", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "Float64Array", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "for", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "function", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "Function", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "globalThis", + "kind": "module", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "if", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "implements", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "import", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "in", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "infer", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "Infinity", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "instanceof", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "Int16Array", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "Int32Array", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "Int8Array", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "interface", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "Intl", + "kind": "module", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "isFinite", + "kind": "function", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "isNaN", + "kind": "function", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "JSON", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "keyof", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "let", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "Math", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "module", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "namespace", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "NaN", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "never", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "new", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "null", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "number", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "Number", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "object", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "Object", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "package", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "parseFloat", + "kind": "function", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "parseInt", + "kind": "function", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "RangeError", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "readonly", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "ReferenceError", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "RegExp", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "return", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "satisfies", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "string", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "String", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "super", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "switch", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "symbol", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "SyntaxError", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "this", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "throw", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "true", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "try", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "type", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "TypeError", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "typeof", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "Uint16Array", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "Uint32Array", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "Uint8Array", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "Uint8ClampedArray", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "undefined", + "kind": "var", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "unique", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "unknown", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "URIError", + "kind": "var", + "kindModifiers": "declare", + "sortText": "15" + }, + { + "name": "var", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "void", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "while", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "with", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "yield", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15" + }, + { + "name": "escape", + "kind": "function", + "kindModifiers": "deprecated,declare", + "sortText": "z15" + }, + { + "name": "unescape", + "kind": "function", + "kindModifiers": "deprecated,declare", + "sortText": "z15" + } + ] + } + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 4, + "type": "request", + "arguments": { + "preferences": { + "autoImportFileExcludePatterns": [ + "**\\node_modules\\aws-sdk" + ] + } + }, + "command": "configure" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "configure", + "request_seq": 4, + "success": true + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 5, + "type": "request", + "arguments": { + "preferences": { + "autoImportFileExcludePatterns": [ + "**\\node_modules\\aws-sdk" + ] + } + }, + "command": "configure" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "configure", + "request_seq": 5, + "success": true + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 6, + "type": "request", + "arguments": { + "file": "c:/project/index.ts", + "includeLinePosition": true + }, + "command": "syntacticDiagnosticsSync" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "syntacticDiagnosticsSync", + "request_seq": 6, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 7, + "type": "request", + "arguments": { + "file": "c:/project/index.ts", + "includeLinePosition": true + }, + "command": "semanticDiagnosticsSync" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "semanticDiagnosticsSync", + "request_seq": 7, + "success": true, + "body": [ + { + "message": "Cannot find name 'S3'.", + "start": 0, + "length": 2, + "category": "error", + "code": 2304, + "startLocation": { + "line": 1, + "offset": 1 + }, + "endLocation": { + "line": 1, + "offset": 3 + } + } + ] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 8, + "type": "request", + "arguments": { + "file": "c:/project/index.ts", + "includeLinePosition": true + }, + "command": "suggestionDiagnosticsSync" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "suggestionDiagnosticsSync", + "request_seq": 8, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 9, + "type": "request", + "arguments": { + "file": "c:/project/index.ts", + "startLine": 1, + "startOffset": 1, + "endLine": 1, + "endOffset": 3, + "errorCodes": [ + 2304 + ] + }, + "command": "getCodeFixes" + } +Info seq [hh:mm:ss:mss] forEachExternalModuleToImportFrom autoImportProvider: * +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "getCodeFixes", + "request_seq": 9, + "success": true, + "body": [] + } \ No newline at end of file diff --git a/tests/cases/fourslash/server/autoImportFileExcludePatterns2.ts b/tests/cases/fourslash/server/autoImportFileExcludePatterns2.ts new file mode 100644 index 00000000000..67a26521023 --- /dev/null +++ b/tests/cases/fourslash/server/autoImportFileExcludePatterns2.ts @@ -0,0 +1,31 @@ +/// + +// @module: commonjs + +// @Filename: /project/node_modules/aws-sdk/package.json +//// { "name": "aws-sdk", "version": "2.0.0", "main": "index.js" } + +// @Filename: /project/node_modules/aws-sdk/index.d.ts +//// export * from "./clients/s3"; + +// @Filename: /project/node_modules/aws-sdk/clients/s3.d.ts +//// export declare class S3 {} + +// @Filename: /project/package.json +//// { "dependencies": { "aws-sdk": "*" } } + +// @Filename: /project/index.ts +//// S3/**/ + +const autoImportFileExcludePatterns = ["**/node_modules/aws-sdk"]; + +verify.completions({ + marker: "", + excludes: "S3", + preferences: { + includeCompletionsForModuleExports: true, + autoImportFileExcludePatterns, + } +}); + +verify.importFixAtPosition([], /*errorCode*/ undefined, { autoImportFileExcludePatterns }); diff --git a/tests/cases/fourslash/server/autoImportFileExcludePatterns_networkPaths.ts b/tests/cases/fourslash/server/autoImportFileExcludePatterns_networkPaths.ts new file mode 100644 index 00000000000..83eb01de36b --- /dev/null +++ b/tests/cases/fourslash/server/autoImportFileExcludePatterns_networkPaths.ts @@ -0,0 +1,31 @@ +/// + +// @module: commonjs + +// @Filename: //tsclient/project/node_modules/aws-sdk/package.json +//// { "name": "aws-sdk", "version": "2.0.0", "main": "index.js" } + +// @Filename: //tsclient/project/node_modules/aws-sdk/index.d.ts +//// export * from "./clients/s3"; + +// @Filename: //tsclient/project/node_modules/aws-sdk/clients/s3.d.ts +//// export declare class S3 {} + +// @Filename: //tsclient/project/package.json +//// { "dependencies": { "aws-sdk": "*" } } + +// @Filename: //tsclient/project/index.ts +//// S3/**/ + +const autoImportFileExcludePatterns = ["\\\\tsclient\\project\\node_modules\\aws-sdk"]; + +verify.completions({ + marker: "", + excludes: "S3", + preferences: { + includeCompletionsForModuleExports: true, + autoImportFileExcludePatterns, + } +}); + +verify.importFixAtPosition([], /*errorCode*/ undefined, { autoImportFileExcludePatterns }); diff --git a/tests/cases/fourslash/server/autoImportFileExcludePatterns_windowsPaths.ts b/tests/cases/fourslash/server/autoImportFileExcludePatterns_windowsPaths.ts new file mode 100644 index 00000000000..b9cb90c8bbf --- /dev/null +++ b/tests/cases/fourslash/server/autoImportFileExcludePatterns_windowsPaths.ts @@ -0,0 +1,31 @@ +/// + +// @module: commonjs + +// @Filename: c:/project/node_modules/aws-sdk/package.json +//// { "name": "aws-sdk", "version": "2.0.0", "main": "index.js" } + +// @Filename: c:/project/node_modules/aws-sdk/index.d.ts +//// export * from "./clients/s3"; + +// @Filename: c:/project/node_modules/aws-sdk/clients/s3.d.ts +//// export declare class S3 {} + +// @Filename: c:/project/package.json +//// { "dependencies": { "aws-sdk": "*" } } + +// @Filename: c:/project/index.ts +//// S3/**/ + +const autoImportFileExcludePatterns = ["**\\node_modules\\aws-sdk"]; + +verify.completions({ + marker: "", + excludes: "S3", + preferences: { + includeCompletionsForModuleExports: true, + autoImportFileExcludePatterns, + } +}); + +verify.importFixAtPosition([], /*errorCode*/ undefined, { autoImportFileExcludePatterns });