From 238651d77ff1c689b13c7239606c8cf3ae90e4d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= <mateuszburzynski@gmail.com> Date: Mon, 11 Mar 2024 11:06:38 +0100 Subject: [PATCH 01/26] Add string literal completions for `package.json` `imports` field --- src/compiler/utilities.ts | 17 + src/services/stringCompletions.ts | 153 +++++-- .../importCompletions_importsMap1.js | 378 ++++++++++++++++ .../importCompletions_importsMap2.js | 404 ++++++++++++++++++ .../importCompletions_importsMap3.js | 404 ++++++++++++++++++ .../importCompletions_importsMap4.js | 357 ++++++++++++++++ .../importCompletions_importsMap5.js | 374 ++++++++++++++++ ...ionsPackageJsonExportsSpecifierEndsInTs.ts | 31 ++ ...ompletionsPackageJsonImportsConditions1.ts | 25 ++ ...ortCompletionsPackageJsonImportsLength1.ts | 46 ++ ...ortCompletionsPackageJsonImportsLength2.ts | 47 ++ ...ortCompletionsPackageJsonImportsPattern.ts | 22 + ...nsPackageJsonImportsPattern_capsInPath1.ts | 22 + ...nsPackageJsonImportsPattern_capsInPath2.ts | 27 ++ ...CompletionsPackageJsonImportsPattern_js.ts | 22 + ...pletionsPackageJsonImportsPattern_js_ts.ts | 22 + ...CompletionsPackageJsonImportsPattern_ts.ts | 22 + ...pletionsPackageJsonImportsPattern_ts_js.ts | 22 + ...pletionsPackageJsonImportsPattern_ts_ts.ts | 22 + .../importCompletionsPackageJsonImports_js.ts | 22 + .../importCompletionsPackageJsonImports_ts.ts | 22 + .../server/importCompletions_importsMap1.ts | 36 ++ .../server/importCompletions_importsMap2.ts | 36 ++ .../server/importCompletions_importsMap3.ts | 36 ++ .../server/importCompletions_importsMap4.ts | 33 ++ .../server/importCompletions_importsMap5.ts | 34 ++ 26 files changed, 2610 insertions(+), 26 deletions(-) create mode 100644 tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap1.js create mode 100644 tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap2.js create mode 100644 tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap3.js create mode 100644 tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap4.js create mode 100644 tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap5.js create mode 100644 tests/cases/fourslash/importCompletionsPackageJsonExportsSpecifierEndsInTs.ts create mode 100644 tests/cases/fourslash/importCompletionsPackageJsonImportsConditions1.ts create mode 100644 tests/cases/fourslash/importCompletionsPackageJsonImportsLength1.ts create mode 100644 tests/cases/fourslash/importCompletionsPackageJsonImportsLength2.ts create mode 100644 tests/cases/fourslash/importCompletionsPackageJsonImportsPattern.ts create mode 100644 tests/cases/fourslash/importCompletionsPackageJsonImportsPattern_capsInPath1.ts create mode 100644 tests/cases/fourslash/importCompletionsPackageJsonImportsPattern_capsInPath2.ts create mode 100644 tests/cases/fourslash/importCompletionsPackageJsonImportsPattern_js.ts create mode 100644 tests/cases/fourslash/importCompletionsPackageJsonImportsPattern_js_ts.ts create mode 100644 tests/cases/fourslash/importCompletionsPackageJsonImportsPattern_ts.ts create mode 100644 tests/cases/fourslash/importCompletionsPackageJsonImportsPattern_ts_js.ts create mode 100644 tests/cases/fourslash/importCompletionsPackageJsonImportsPattern_ts_ts.ts create mode 100644 tests/cases/fourslash/importCompletionsPackageJsonImports_js.ts create mode 100644 tests/cases/fourslash/importCompletionsPackageJsonImports_ts.ts create mode 100644 tests/cases/fourslash/server/importCompletions_importsMap1.ts create mode 100644 tests/cases/fourslash/server/importCompletions_importsMap2.ts create mode 100644 tests/cases/fourslash/server/importCompletions_importsMap3.ts create mode 100644 tests/cases/fourslash/server/importCompletions_importsMap4.ts create mode 100644 tests/cases/fourslash/server/importCompletions_importsMap5.ts diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 6bbc51a4ad121..1c3b951646c14 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -192,6 +192,7 @@ import { getParseTreeNode, getPathComponents, getPathFromPathComponents, + getRelativePathFromDirectory, getRelativePathToDirectoryOrUrl, getResolutionModeOverride, getRootLength, @@ -471,6 +472,7 @@ import { ResolvedModuleWithFailedLookupLocations, ResolvedTypeReferenceDirective, ResolvedTypeReferenceDirectiveWithFailedLookupLocations, + resolvePath, ReturnStatement, SatisfiesExpression, ScriptKind, @@ -6288,6 +6290,21 @@ export function getPossibleOriginalInputExtensionForExtension(path: string) { [Extension.Tsx, Extension.Ts, Extension.Jsx, Extension.Js]; } +/** @internal */ +export function getPossibleOriginalInputPathWithoutChangingExt( + filePath: string, + ignoreCase: boolean, + outputDir: string | undefined, + getCommonSourceDirectory: () => string, +): string { + return outputDir ? + resolvePath( + getCommonSourceDirectory(), + getRelativePathFromDirectory(outputDir, filePath, ignoreCase), + ) : + filePath; +} + /** * Returns 'undefined' if and only if 'options.paths' is undefined. * diff --git a/src/services/stringCompletions.ts b/src/services/stringCompletions.ts index 5cb669be5368c..03320135c7dfb 100644 --- a/src/services/stringCompletions.ts +++ b/src/services/stringCompletions.ts @@ -20,9 +20,11 @@ import { CompletionEntry, CompletionEntryDetails, CompletionInfo, + concatenate, contains, containsPath, ContextFlags, + createModuleSpecifierResolutionHost, createSortedArray, createTextSpan, createTextSpanFromStringLiteralLikeContent, @@ -59,6 +61,8 @@ import { getPackageJsonTypesVersionsPaths, getPathComponents, getPathsBasePath, + getPossibleOriginalInputExtensionForExtension, + getPossibleOriginalInputPathWithoutChangingExt, getReplacementSpanForContextToken, getResolvePackageJsonExports, getSupportedExtensions, @@ -70,6 +74,7 @@ import { hasProperty, hasTrailingDirectorySeparator, hostGetCanonicalFileName, + hostUsesCaseSensitiveFileNames, IndexedAccessTypeNode, isApplicableVersionedTypesKey, isArray, @@ -99,6 +104,7 @@ import { MapLike, moduleResolutionUsesNodeModules, ModuleSpecifierEnding, + ModuleSpecifierResolutionHost, moduleSpecifiers, newCaseClauseTracker, Node, @@ -595,7 +601,7 @@ function getStringLiteralCompletionsFromModuleNamesWorker(sourceFile: SourceFile return isPathRelativeToScript(literalValue) || !compilerOptions.baseUrl && !compilerOptions.paths && (isRootedDiskPath(literalValue) || isUrl(literalValue)) ? getCompletionEntriesForRelativeModules(literalValue, scriptDirectory, compilerOptions, host, scriptPath, extensionOptions) - : getCompletionEntriesForNonRelativeModules(literalValue, scriptDirectory, mode, compilerOptions, host, extensionOptions, typeChecker); + : getCompletionEntriesForNonRelativeModules(literalValue, scriptDirectory, mode, compilerOptions, host, createModuleSpecifierResolutionHost(program, host), extensionOptions, typeChecker); } interface ExtensionOptions { @@ -628,7 +634,7 @@ function getCompletionEntriesForRelativeModules(literalValue: string, scriptDire ); } else { - return arrayFrom(getCompletionEntriesForDirectoryFragment(literalValue, scriptDirectory, extensionOptions, host, /*moduleSpecifierIsRelative*/ true, scriptPath).values()); + return arrayFrom(getCompletionEntriesForDirectoryFragment(literalValue, scriptDirectory, extensionOptions, compilerOptions, host, /*moduleSpecifierIsRelative*/ true, scriptPath).values()); } } @@ -671,7 +677,7 @@ function getCompletionEntriesForDirectoryFragmentWithRootDirs(rootDirs: string[] const ignoreCase = !(host.useCaseSensitiveFileNames && host.useCaseSensitiveFileNames()); const baseDirectories = getBaseDirectoriesFromRootDirs(rootDirs, basePath, scriptDirectory, ignoreCase); return deduplicate<NameAndKind>( - flatMap(baseDirectories, baseDirectory => arrayFrom(getCompletionEntriesForDirectoryFragment(fragment, baseDirectory, extensionOptions, host, /*moduleSpecifierIsRelative*/ true, exclude).values())), + flatMap(baseDirectories, baseDirectory => arrayFrom(getCompletionEntriesForDirectoryFragment(fragment, baseDirectory, extensionOptions, compilerOptions, host, /*moduleSpecifierIsRelative*/ true, exclude).values())), (itemA, itemB) => itemA.name === itemB.name && itemA.kind === itemB.kind && itemA.extension === itemB.extension, ); } @@ -687,6 +693,7 @@ function getCompletionEntriesForDirectoryFragment( fragment: string, scriptDirectory: string, extensionOptions: ExtensionOptions, + compilerOptions: CompilerOptions, host: LanguageServiceHost, moduleSpecifierIsRelative: boolean, exclude?: string, @@ -726,7 +733,7 @@ function getCompletionEntriesForDirectoryFragment( if (versionPaths) { const packageDirectory = getDirectoryPath(packageJsonPath); const pathInPackage = absolutePath.slice(ensureTrailingDirectorySeparator(packageDirectory).length); - if (addCompletionEntriesFromPaths(result, pathInPackage, packageDirectory, extensionOptions, host, versionPaths)) { + if (addCompletionEntriesFromPaths(result, pathInPackage, packageDirectory, extensionOptions, compilerOptions, host, /*moduleSpecifierResolutionHost*/ undefined, versionPaths)) { // A true result means one of the `versionPaths` was matched, which will block relative resolution // to files and folders from here. All reachable paths given the pattern match are already added. return result; @@ -820,7 +827,9 @@ function addCompletionEntriesFromPaths( fragment: string, baseDirectory: string, extensionOptions: ExtensionOptions, + compilerOptions: CompilerOptions, host: LanguageServiceHost, + moduleSpecifierResolutionHost: ModuleSpecifierResolutionHost | undefined, paths: MapLike<string[]>, ) { const getPatternsForKey = (key: string) => paths[key]; @@ -831,17 +840,20 @@ function addCompletionEntriesFromPaths( const lengthB = typeof patternB === "object" ? patternB.prefix.length : b.length; return compareValues(lengthB, lengthA); }; - return addCompletionEntriesFromPathsOrExports(result, /*isExports*/ false, fragment, baseDirectory, extensionOptions, host, getOwnKeys(paths), getPatternsForKey, comparePaths); + return addCompletionEntriesFromPathsOrExports(result, /*isExports*/ false, /*isImports*/ false, fragment, baseDirectory, extensionOptions, compilerOptions, host, moduleSpecifierResolutionHost, getOwnKeys(paths), getPatternsForKey, comparePaths); } /** @returns whether `fragment` was a match for any `paths` (which should indicate whether any other path completions should be offered) */ function addCompletionEntriesFromPathsOrExports( result: NameAndKindSet, isExports: boolean, + isImports: boolean, fragment: string, baseDirectory: string, extensionOptions: ExtensionOptions, + compilerOptions: CompilerOptions, host: LanguageServiceHost, + moduleSpecifierResolutionHost: ModuleSpecifierResolutionHost | undefined, keys: readonly string[], getPatternsForKey: (key: string) => string[] | undefined, comparePaths: (a: string, b: string) => Comparison, @@ -875,7 +887,7 @@ function addCompletionEntriesFromPathsOrExports( if (typeof pathPattern === "string" || matchedPath === undefined || comparePaths(key, matchedPath) !== Comparison.GreaterThan) { pathResults.push({ matchedPattern: isMatch, - results: getCompletionsForPathMapping(keyWithoutLeadingDotSlash, patterns, fragment, baseDirectory, extensionOptions, isExports && isMatch, host) + results: getCompletionsForPathMapping(keyWithoutLeadingDotSlash, patterns, fragment, baseDirectory, extensionOptions, (isExports || isImports) && endsWith(keyWithoutLeadingDotSlash, '*'), isImports, compilerOptions, host, moduleSpecifierResolutionHost) .map(({ name, kind, extension }) => nameAndKind(name, kind, extension)), }); } @@ -899,6 +911,7 @@ function getCompletionEntriesForNonRelativeModules( mode: ResolutionMode, compilerOptions: CompilerOptions, host: LanguageServiceHost, + moduleSpecifierResolutionHost: ModuleSpecifierResolutionHost, extensionOptions: ExtensionOptions, typeChecker: TypeChecker, ): readonly NameAndKind[] { @@ -909,12 +922,12 @@ function getCompletionEntriesForNonRelativeModules( if (baseUrl) { const absolute = normalizePath(combinePaths(host.getCurrentDirectory(), baseUrl)); - getCompletionEntriesForDirectoryFragment(fragment, absolute, extensionOptions, host, /*moduleSpecifierIsRelative*/ false, /*exclude*/ undefined, result); + getCompletionEntriesForDirectoryFragment(fragment, absolute, extensionOptions, compilerOptions, host, /*moduleSpecifierIsRelative*/ false, /*exclude*/ undefined, result); } if (paths) { const absolute = getPathsBasePath(compilerOptions, host)!; - addCompletionEntriesFromPaths(result, fragment, absolute, extensionOptions, host, paths); + addCompletionEntriesFromPaths(result, fragment, absolute, extensionOptions, compilerOptions, host, moduleSpecifierResolutionHost, paths); } const fragmentDirectory = getFragmentDirectory(fragment); @@ -938,10 +951,41 @@ function getCompletionEntriesForNonRelativeModules( } } if (!foundGlobal) { + let seenPackageScope = false; let ancestorLookup: (directory: string) => void | undefined = ancestor => { const nodeModules = combinePaths(ancestor, "node_modules"); if (tryDirectoryExists(host, nodeModules)) { - getCompletionEntriesForDirectoryFragment(fragment, nodeModules, extensionOptions, host, /*moduleSpecifierIsRelative*/ false, /*exclude*/ undefined, result); + getCompletionEntriesForDirectoryFragment(fragment, nodeModules, extensionOptions, compilerOptions, host, /*moduleSpecifierIsRelative*/ false, /*exclude*/ undefined, result); + } + if (!seenPackageScope) { + const packageFile = combinePaths(ancestor, "package.json"); + if (seenPackageScope = tryFileExists(host, packageFile)) { + const packageJson = readJson(packageFile, host); + const imports = (packageJson as any).imports; + if (imports) { + if (typeof imports !== "object" || imports === null) { // eslint-disable-line no-null/no-null + return; // null imports or entrypoint only, no sub-modules available + } + + const keys = getOwnKeys(imports); + const conditions = getConditions(compilerOptions, mode); + addCompletionEntriesFromPathsOrExports( + result, + /*isExports*/ false, + /*isImports*/ true, + fragment, + ancestor, + extensionOptions, + compilerOptions, + host, + moduleSpecifierResolutionHost, + keys, + key => singleElementArray(getPatternFromFirstMatchingCondition(imports[key], conditions)), + comparePatternKeys, + ); + return; + } + } } }; if (fragmentDirectory && getResolvePackageJsonExports(compilerOptions)) { @@ -965,6 +1009,7 @@ function getCompletionEntriesForNonRelativeModules( if (tryFileExists(host, packageFile)) { const packageJson = readJson(packageFile, host); const exports = (packageJson as any).exports; + const imports = (packageJson as any).imports; if (exports) { if (typeof exports !== "object" || exports === null) { // eslint-disable-line no-null/no-null return; // null exports or entrypoint only, no sub-modules available @@ -975,16 +1020,43 @@ function getCompletionEntriesForNonRelativeModules( addCompletionEntriesFromPathsOrExports( result, /*isExports*/ true, + /*isImports*/ false, fragmentSubpath, packageDirectory, extensionOptions, + compilerOptions, host, + moduleSpecifierResolutionHost, keys, key => singleElementArray(getPatternFromFirstMatchingCondition(exports[key], conditions)), comparePatternKeys, ); return; } + if (!seenPackageScope && imports) { + if (typeof imports !== "object" || imports === null) { // eslint-disable-line no-null/no-null + return; // null imports or entrypoint only, no sub-modules available + } + const keys = getOwnKeys(imports); + const fragmentSubpath = components.join("/") + (components.length && hasTrailingDirectorySeparator(fragment) ? "/" : ""); + const conditions = getConditions(compilerOptions, mode); + addCompletionEntriesFromPathsOrExports( + result, + /*isExports*/ false, + /*isImports*/ true, + fragmentSubpath, + packageDirectory, + extensionOptions, + compilerOptions, + host, + moduleSpecifierResolutionHost, + keys, + key => singleElementArray(getPatternFromFirstMatchingCondition(imports[key], conditions)), + comparePatternKeys, + ); + return; + } + seenPackageScope = true; } return nodeModulesDirectoryLookup(ancestor); }; @@ -1021,20 +1093,26 @@ function getCompletionsForPathMapping( packageDirectory: string, extensionOptions: ExtensionOptions, isExportsWildcard: boolean, + isImports: boolean, + compilerOptions: CompilerOptions, host: LanguageServiceHost, + moduleSpecifierResolutionHost: ModuleSpecifierResolutionHost | undefined ): readonly NameAndKind[] { - if (!endsWith(path, "*")) { + const parsedPath = tryParsePattern(path) + if (!parsedPath) { + return emptyArray; + } + // no stars in the pattern + if (typeof parsedPath === "string") { // For a path mapping "foo": ["/x/y/z.ts"], add "foo" itself as a completion. - return !path.includes("*") ? justPathMappingName(path, ScriptElementKind.scriptElement) : emptyArray; + return justPathMappingName(path, ScriptElementKind.scriptElement); } - - const pathPrefix = path.slice(0, path.length - 1); - const remainingFragment = tryRemovePrefix(fragment, pathPrefix); + const remainingFragment = tryRemovePrefix(fragment, parsedPath.prefix); if (remainingFragment === undefined) { - const starIsFullPathComponent = path[path.length - 2] === "/"; - return starIsFullPathComponent ? justPathMappingName(pathPrefix, ScriptElementKind.directory) : flatMap(patterns, pattern => getModulesForPathsPattern("", packageDirectory, pattern, extensionOptions, isExportsWildcard, host)?.map(({ name, ...rest }) => ({ name: pathPrefix + name, ...rest }))); + const starIsFullPathComponent = endsWith(path, '/*'); + return starIsFullPathComponent ? justPathMappingName(parsedPath.prefix, ScriptElementKind.directory) : flatMap(patterns, pattern => getModulesForPathsPattern("", packageDirectory, pattern, extensionOptions, isExportsWildcard, isImports, compilerOptions, host, moduleSpecifierResolutionHost)?.map(({ name, ...rest }) => ({ name: parsedPath.prefix + name + parsedPath.suffix, ...rest }))); } - return flatMap(patterns, pattern => getModulesForPathsPattern(remainingFragment, packageDirectory, pattern, extensionOptions, isExportsWildcard, host)); + return flatMap(patterns, pattern => getModulesForPathsPattern(remainingFragment, packageDirectory, pattern, extensionOptions, isExportsWildcard, isImports, compilerOptions, host, moduleSpecifierResolutionHost)); function justPathMappingName(name: string, kind: ScriptElementKind.directory | ScriptElementKind.scriptElement): readonly NameAndKind[] { return startsWith(name, fragment) ? [{ name: removeTrailingDirectorySeparator(name), kind, extension: undefined }] : emptyArray; @@ -1047,7 +1125,10 @@ function getModulesForPathsPattern( pattern: string, extensionOptions: ExtensionOptions, isExportsWildcard: boolean, + isImports: boolean, + compilerOptions: CompilerOptions, host: LanguageServiceHost, + moduleSpecifierResolutionHost: ModuleSpecifierResolutionHost | undefined ): readonly NameAndKind[] | undefined { if (!host.readDirectory) { return undefined; @@ -1072,9 +1153,11 @@ function getModulesForPathsPattern( const normalizedSuffix = normalizePath(parsed.suffix); const declarationExtension = normalizedSuffix && getDeclarationEmitExtensionForPath("_" + normalizedSuffix); - const matchingSuffixes = declarationExtension ? [changeExtension(normalizedSuffix, declarationExtension), normalizedSuffix] : [normalizedSuffix]; + const inputExtension = isImports && normalizedSuffix ? getPossibleOriginalInputExtensionForExtension("_" + normalizedSuffix) : undefined; + const matchingSuffixes = [...(inputExtension ? inputExtension.map(ext => changeExtension(normalizedSuffix, ext)) : []), declarationExtension && changeExtension(normalizedSuffix, declarationExtension), normalizedSuffix].filter(isString); // Need to normalize after combining: If we combinePaths("a", "../b"), we want "b" and not "a/../b". const baseDirectory = normalizePath(combinePaths(packageDirectory, expandedPrefixDirectory)); + const inputBaseDirectory = isImports && getPossibleOriginalInputPathWithoutChangingExt(baseDirectory, !hostUsesCaseSensitiveFileNames(moduleSpecifierResolutionHost!), compilerOptions.outDir, () => moduleSpecifierResolutionHost!.getCommonSourceDirectory()); const completePrefix = fragmentHasPath ? baseDirectory : ensureTrailingDirectorySeparator(baseDirectory) + normalizedPrefixBase; // If we have a suffix, then we read the directory all the way down to avoid returning completions for @@ -1089,13 +1172,13 @@ function getModulesForPathsPattern( ? matchingSuffixes.map(suffix => "**/*" + suffix) : ["./*"]; - const matches = mapDefined(tryReadDirectory(host, baseDirectory, extensionOptions.extensionsToSearch, /*exclude*/ undefined, includeGlobs), match => { - const trimmedWithPattern = trimPrefixAndSuffix(match); + let matches = mapDefined(tryReadDirectory(host, baseDirectory, extensionOptions.extensionsToSearch, /*exclude*/ undefined, includeGlobs), match => { + const trimmedWithPattern = trimPrefixAndSuffix(match, completePrefix); if (trimmedWithPattern) { if (containsSlash(trimmedWithPattern)) { return directoryResult(getPathComponents(removeLeadingDirectorySeparator(trimmedWithPattern))[1]); } - const { name, extension } = getFilenameWithExtensionOption(trimmedWithPattern, host.getCompilationSettings(), extensionOptions, isExportsWildcard); + const { name, extension } = getFilenameWithExtensionOption(trimmedWithPattern, compilerOptions, extensionOptions, isExportsWildcard); return nameAndKind(name, ScriptElementKind.scriptElement, extension); } }); @@ -1106,11 +1189,29 @@ function getModulesForPathsPattern( const directories = normalizedSuffix ? emptyArray : mapDefined(tryGetDirectories(host, baseDirectory), dir => dir === "node_modules" ? undefined : directoryResult(dir)); - return [...matches, ...directories]; - function trimPrefixAndSuffix(path: string): string | undefined { + if (inputBaseDirectory && inputBaseDirectory !== baseDirectory) { + const completeInputPrefix = fragmentHasPath ? inputBaseDirectory : ensureTrailingDirectorySeparator(inputBaseDirectory) + normalizedPrefixBase; + const inputMatches = mapDefined(tryReadDirectory(host, inputBaseDirectory, extensionOptions.extensionsToSearch, /*exclude*/ undefined, includeGlobs), match => { + const trimmedWithPattern = trimPrefixAndSuffix(match, completeInputPrefix); + if (trimmedWithPattern) { + if (containsSlash(trimmedWithPattern)) { + return directoryResult(getPathComponents(removeLeadingDirectorySeparator(trimmedWithPattern))[1]); + } + const { name, extension } = getFilenameWithExtensionOption(trimmedWithPattern, compilerOptions, extensionOptions, isExportsWildcard); + return nameAndKind(name, ScriptElementKind.scriptElement, extension); + } + }); + matches = concatenate(matches, inputMatches); + } + + matches = concatenate(matches, directories); + + return matches; + + function trimPrefixAndSuffix(path: string, prefix: string): string | undefined { return firstDefined(matchingSuffixes, suffix => { - const inner = withoutStartAndEnd(normalizePath(path), completePrefix, suffix); + const inner = withoutStartAndEnd(normalizePath(path), prefix, suffix); return inner === undefined ? undefined : removeLeadingDirectorySeparator(inner); }); } @@ -1154,7 +1255,7 @@ function getTripleSlashReferenceCompletion(sourceFile: SourceFile, position: num const [, prefix, kind, toComplete] = match; const scriptPath = getDirectoryPath(sourceFile.path); - const names = kind === "path" ? getCompletionEntriesForDirectoryFragment(toComplete, scriptPath, getExtensionOptions(compilerOptions, ReferenceKind.Filename, sourceFile), host, /*moduleSpecifierIsRelative*/ true, sourceFile.path) + const names = kind === "path" ? getCompletionEntriesForDirectoryFragment(toComplete, scriptPath, getExtensionOptions(compilerOptions, ReferenceKind.Filename, sourceFile), compilerOptions, host, /*moduleSpecifierIsRelative*/ true, sourceFile.path) : kind === "types" ? getCompletionEntriesFromTypings(host, compilerOptions, scriptPath, getFragmentDirectory(toComplete), getExtensionOptions(compilerOptions, ReferenceKind.ModuleSpecifier, sourceFile)) : Debug.fail(); return addReplacementSpans(toComplete, range.pos + prefix.length, arrayFrom(names.values())); @@ -1195,7 +1296,7 @@ function getCompletionEntriesFromTypings(host: LanguageServiceHost, options: Com const baseDirectory = combinePaths(directory, typeDirectoryName); const remainingFragment = tryRemoveDirectoryPrefix(fragmentDirectory, packageName, hostGetCanonicalFileName(host)); if (remainingFragment !== undefined) { - getCompletionEntriesForDirectoryFragment(remainingFragment, baseDirectory, extensionOptions, host, /*moduleSpecifierIsRelative*/ false, /*exclude*/ undefined, result); + getCompletionEntriesForDirectoryFragment(remainingFragment, baseDirectory, extensionOptions, options, host, /*moduleSpecifierIsRelative*/ false, /*exclude*/ undefined, result); } } } diff --git a/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap1.js b/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap1.js new file mode 100644 index 0000000000000..cb6d6d9792752 --- /dev/null +++ b/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap1.js @@ -0,0 +1,378 @@ +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 + +//// [/package.json] +{ + "type": "module", + "imports": { + "#is-browser": { + "browser": "./dist/env/browser.js", + "default": "./dist/env/node.js" + } + } +} + +//// [/src/a.ts] +import {} from ""; + +//// [/src/env/browser.ts] +export const isBrowser = true; + +//// [/src/env/node.ts] +export const isBrowser = false; + +//// [/tsconfig.json] +{ + "compilerOptions": { + "module": "nodenext", + "rootDir": "src", + "outDir": "dist" + } +} + + +Info seq [hh:mm:ss:mss] request: + { + "seq": 0, + "type": "request", + "arguments": { + "file": "/tsconfig.json" + }, + "command": "open" + } +Info seq [hh:mm:ss:mss] Search path: / +Info seq [hh:mm:ss:mss] For info: /tsconfig.json :: Config file name: /tsconfig.json +Info seq [hh:mm:ss:mss] Creating configuration project /tsconfig.json +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /tsconfig.json 2000 undefined Project: /tsconfig.json WatchType: Config file +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "projectLoadingStart", + "body": { + "projectName": "/tsconfig.json", + "reason": "Creating possible configured project for /tsconfig.json to open" + } + } +Info seq [hh:mm:ss:mss] Config: /tsconfig.json : { + "rootNames": [ + "/lib.d.ts", + "/lib.decorators.d.ts", + "/lib.decorators.legacy.d.ts", + "/src/a.ts", + "/src/env/browser.ts", + "/src/env/node.ts" + ], + "options": { + "module": 199, + "rootDir": "/src", + "outDir": "/dist", + "configFilePath": "/tsconfig.json" + } +} +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: 1 undefined Config: /tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: 1 undefined Config: /tsconfig.json WatchType: Wild card directory +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] FileWatcher:: Added:: WatchInfo: /src/a.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /src/env/browser.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /src/env/node.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /tsconfig.json +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /tsconfig.json projectStateVersion: 1 projectProgramVersion: 0 structureChanged: true structureIsReused:: Not Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project '/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (6) + /lib.decorators.d.ts Text-1 lib.decorators.d.ts-Text + /lib.decorators.legacy.d.ts Text-1 lib.decorators.legacy.d.ts-Text + /lib.d.ts Text-1 lib.d.ts-Text + /src/a.ts Text-1 "import {} from \"\";" + /src/env/browser.ts Text-1 "export const isBrowser = true;" + /src/env/node.ts Text-1 "export const isBrowser = false;" + + + lib.decorators.d.ts + Library referenced via 'decorators' from file 'lib.d.ts' + Matched by default include pattern '**/*' + lib.decorators.legacy.d.ts + Library referenced via 'decorators.legacy' from file 'lib.d.ts' + Matched by default include pattern '**/*' + lib.d.ts + Matched by default include pattern '**/*' + src/a.ts + Matched by default include pattern '**/*' + File is ECMAScript module because 'package.json' has field "type" with value "module" + src/env/browser.ts + Matched by default include pattern '**/*' + File is ECMAScript module because 'package.json' has field "type" with value "module" + src/env/node.ts + Matched by default include pattern '**/*' + File is ECMAScript module because 'package.json' has field "type" with value "module" + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "projectLoadingFinish", + "body": { + "projectName": "/tsconfig.json" + } + } +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "configFileDiag", + "body": { + "triggerFile": "/tsconfig.json", + "configFile": "/tsconfig.json", + "diagnostics": [] + } + } +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /dev/null/inferredProject1* projectStateVersion: 1 projectProgramVersion: 0 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 + /tsconfig.json SVC-1-0 "{\n \"compilerOptions\": {\n \"module\": \"nodenext\",\n \"rootDir\": \"src\",\n \"outDir\": \"dist\"\n }\n}" + + + 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' + tsconfig.json + Root file specified for compilation + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /package.json 250 undefined WatchType: package.json file +Info seq [hh:mm:ss:mss] Project '/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (6) + +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: /tsconfig.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} +/package.json: *new* + {"pollingInterval":250} +/src/a.ts: *new* + {"pollingInterval":500} +/src/env/browser.ts: *new* + {"pollingInterval":500} +/src/env/node.ts: *new* + {"pollingInterval":500} +/tsconfig.json: *new* + {"pollingInterval":2000} + +watchedDirectoriesRecursive:: +: *new* + {} + +Projects:: +/dev/null/inferredProject1* (Inferred) *new* + projectStateVersion: 1 + projectProgramVersion: 1 +/tsconfig.json (Configured) *new* + projectStateVersion: 1 + projectProgramVersion: 1 + noOpenRef: true + +ScriptInfos:: +/lib.d.ts *new* + version: Text-1 + containingProjects: 2 + /tsconfig.json + /dev/null/inferredProject1* +/lib.decorators.d.ts *new* + version: Text-1 + containingProjects: 2 + /tsconfig.json + /dev/null/inferredProject1* +/lib.decorators.legacy.d.ts *new* + version: Text-1 + containingProjects: 2 + /tsconfig.json + /dev/null/inferredProject1* +/src/a.ts *new* + version: Text-1 + containingProjects: 1 + /tsconfig.json +/src/env/browser.ts *new* + version: Text-1 + containingProjects: 1 + /tsconfig.json +/src/env/node.ts *new* + version: Text-1 + containingProjects: 1 + /tsconfig.json +/tsconfig.json (Open) *new* + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 1, + "type": "request", + "arguments": { + "file": "/src/a.ts" + }, + "command": "open" + } +Info seq [hh:mm:ss:mss] FileWatcher:: Close:: WatchInfo: /src/a.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] Search path: /src +Info seq [hh:mm:ss:mss] For info: /src/a.ts :: Config file name: /tsconfig.json +Info seq [hh:mm:ss:mss] Project '/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (6) + +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: /tsconfig.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] FileName: /src/a.ts ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /tsconfig.json +After Request +watchedFiles:: +/lib.d.ts: + {"pollingInterval":500} +/lib.decorators.d.ts: + {"pollingInterval":500} +/lib.decorators.legacy.d.ts: + {"pollingInterval":500} +/package.json: + {"pollingInterval":250} +/src/env/browser.ts: + {"pollingInterval":500} +/src/env/node.ts: + {"pollingInterval":500} +/tsconfig.json: + {"pollingInterval":2000} + +watchedFiles *deleted*:: +/src/a.ts: + {"pollingInterval":500} + +watchedDirectoriesRecursive:: +: + {} + +Projects:: +/dev/null/inferredProject1* (Inferred) + projectStateVersion: 1 + projectProgramVersion: 1 +/tsconfig.json (Configured) *changed* + projectStateVersion: 1 + projectProgramVersion: 1 + noOpenRef: false *changed* + +ScriptInfos:: +/lib.d.ts + version: Text-1 + containingProjects: 2 + /tsconfig.json + /dev/null/inferredProject1* +/lib.decorators.d.ts + version: Text-1 + containingProjects: 2 + /tsconfig.json + /dev/null/inferredProject1* +/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 2 + /tsconfig.json + /dev/null/inferredProject1* +/src/a.ts (Open) *changed* + open: true *changed* + version: Text-1 + containingProjects: 1 + /tsconfig.json *default* +/src/env/browser.ts + version: Text-1 + containingProjects: 1 + /tsconfig.json +/src/env/node.ts + version: Text-1 + containingProjects: 1 + /tsconfig.json +/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 2, + "type": "request", + "arguments": { + "preferences": {} + }, + "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": "/src/a.ts", + "line": 1, + "offset": 17 + }, + "command": "completionInfo" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "completionInfo", + "request_seq": 3, + "success": true, + "body": { + "isGlobalCompletion": false, + "isMemberCompletion": false, + "isNewIdentifierLocation": true, + "entries": [ + { + "name": "#is-browser", + "kind": "script", + "kindModifiers": "", + "sortText": "11" + } + ] + } + } \ No newline at end of file diff --git a/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap2.js b/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap2.js new file mode 100644 index 0000000000000..2393185c4d001 --- /dev/null +++ b/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap2.js @@ -0,0 +1,404 @@ +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 + +//// [/package.json] +{ + "type": "module", + "imports": { + "#internal/*": "./dist/internal/*" + } +} + +//// [/src/a.ts] +import {} from ""; +import {} from "#internal/"; + +//// [/src/internal/foo.ts] +export function something(name: string) {} + +//// [/tsconfig.json] +{ + "compilerOptions": { + "module": "nodenext", + "rootDir": "src", + "outDir": "dist" + } +} + + +Info seq [hh:mm:ss:mss] request: + { + "seq": 0, + "type": "request", + "arguments": { + "file": "/tsconfig.json" + }, + "command": "open" + } +Info seq [hh:mm:ss:mss] Search path: / +Info seq [hh:mm:ss:mss] For info: /tsconfig.json :: Config file name: /tsconfig.json +Info seq [hh:mm:ss:mss] Creating configuration project /tsconfig.json +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /tsconfig.json 2000 undefined Project: /tsconfig.json WatchType: Config file +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "projectLoadingStart", + "body": { + "projectName": "/tsconfig.json", + "reason": "Creating possible configured project for /tsconfig.json to open" + } + } +Info seq [hh:mm:ss:mss] Config: /tsconfig.json : { + "rootNames": [ + "/lib.d.ts", + "/lib.decorators.d.ts", + "/lib.decorators.legacy.d.ts", + "/src/a.ts", + "/src/internal/foo.ts" + ], + "options": { + "module": 199, + "rootDir": "/src", + "outDir": "/dist", + "configFilePath": "/tsconfig.json" + } +} +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: 1 undefined Config: /tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: 1 undefined Config: /tsconfig.json WatchType: Wild card directory +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] FileWatcher:: Added:: WatchInfo: /src/a.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /src/internal/foo.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /tsconfig.json +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /tsconfig.json projectStateVersion: 1 projectProgramVersion: 0 structureChanged: true structureIsReused:: Not Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project '/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (5) + /lib.decorators.d.ts Text-1 lib.decorators.d.ts-Text + /lib.decorators.legacy.d.ts Text-1 lib.decorators.legacy.d.ts-Text + /lib.d.ts Text-1 lib.d.ts-Text + /src/a.ts Text-1 "import {} from \"\";\nimport {} from \"#internal/\";" + /src/internal/foo.ts Text-1 "export function something(name: string) {}" + + + lib.decorators.d.ts + Library referenced via 'decorators' from file 'lib.d.ts' + Matched by default include pattern '**/*' + lib.decorators.legacy.d.ts + Library referenced via 'decorators.legacy' from file 'lib.d.ts' + Matched by default include pattern '**/*' + lib.d.ts + Matched by default include pattern '**/*' + src/a.ts + Matched by default include pattern '**/*' + File is ECMAScript module because 'package.json' has field "type" with value "module" + src/internal/foo.ts + Matched by default include pattern '**/*' + File is ECMAScript module because 'package.json' has field "type" with value "module" + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "projectLoadingFinish", + "body": { + "projectName": "/tsconfig.json" + } + } +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "configFileDiag", + "body": { + "triggerFile": "/tsconfig.json", + "configFile": "/tsconfig.json", + "diagnostics": [] + } + } +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /dev/null/inferredProject1* projectStateVersion: 1 projectProgramVersion: 0 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 + /tsconfig.json SVC-1-0 "{\n \"compilerOptions\": {\n \"module\": \"nodenext\",\n \"rootDir\": \"src\",\n \"outDir\": \"dist\"\n }\n}" + + + 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' + tsconfig.json + Root file specified for compilation + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /package.json 250 undefined WatchType: package.json file +Info seq [hh:mm:ss:mss] Project '/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (5) + +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: /tsconfig.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} +/package.json: *new* + {"pollingInterval":250} +/src/a.ts: *new* + {"pollingInterval":500} +/src/internal/foo.ts: *new* + {"pollingInterval":500} +/tsconfig.json: *new* + {"pollingInterval":2000} + +watchedDirectoriesRecursive:: +: *new* + {} + +Projects:: +/dev/null/inferredProject1* (Inferred) *new* + projectStateVersion: 1 + projectProgramVersion: 1 +/tsconfig.json (Configured) *new* + projectStateVersion: 1 + projectProgramVersion: 1 + noOpenRef: true + +ScriptInfos:: +/lib.d.ts *new* + version: Text-1 + containingProjects: 2 + /tsconfig.json + /dev/null/inferredProject1* +/lib.decorators.d.ts *new* + version: Text-1 + containingProjects: 2 + /tsconfig.json + /dev/null/inferredProject1* +/lib.decorators.legacy.d.ts *new* + version: Text-1 + containingProjects: 2 + /tsconfig.json + /dev/null/inferredProject1* +/src/a.ts *new* + version: Text-1 + containingProjects: 1 + /tsconfig.json +/src/internal/foo.ts *new* + version: Text-1 + containingProjects: 1 + /tsconfig.json +/tsconfig.json (Open) *new* + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 1, + "type": "request", + "arguments": { + "file": "/src/a.ts" + }, + "command": "open" + } +Info seq [hh:mm:ss:mss] FileWatcher:: Close:: WatchInfo: /src/a.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] Search path: /src +Info seq [hh:mm:ss:mss] For info: /src/a.ts :: Config file name: /tsconfig.json +Info seq [hh:mm:ss:mss] Project '/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (5) + +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: /tsconfig.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] FileName: /src/a.ts ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /tsconfig.json +After Request +watchedFiles:: +/lib.d.ts: + {"pollingInterval":500} +/lib.decorators.d.ts: + {"pollingInterval":500} +/lib.decorators.legacy.d.ts: + {"pollingInterval":500} +/package.json: + {"pollingInterval":250} +/src/internal/foo.ts: + {"pollingInterval":500} +/tsconfig.json: + {"pollingInterval":2000} + +watchedFiles *deleted*:: +/src/a.ts: + {"pollingInterval":500} + +watchedDirectoriesRecursive:: +: + {} + +Projects:: +/dev/null/inferredProject1* (Inferred) + projectStateVersion: 1 + projectProgramVersion: 1 +/tsconfig.json (Configured) *changed* + projectStateVersion: 1 + projectProgramVersion: 1 + noOpenRef: false *changed* + +ScriptInfos:: +/lib.d.ts + version: Text-1 + containingProjects: 2 + /tsconfig.json + /dev/null/inferredProject1* +/lib.decorators.d.ts + version: Text-1 + containingProjects: 2 + /tsconfig.json + /dev/null/inferredProject1* +/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 2 + /tsconfig.json + /dev/null/inferredProject1* +/src/a.ts (Open) *changed* + open: true *changed* + version: Text-1 + containingProjects: 1 + /tsconfig.json *default* +/src/internal/foo.ts + version: Text-1 + containingProjects: 1 + /tsconfig.json +/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 2, + "type": "request", + "arguments": { + "preferences": {} + }, + "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": "/src/a.ts", + "line": 1, + "offset": 17 + }, + "command": "completionInfo" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "completionInfo", + "request_seq": 3, + "success": true, + "body": { + "isGlobalCompletion": false, + "isMemberCompletion": false, + "isNewIdentifierLocation": true, + "entries": [ + { + "name": "#internal", + "kind": "directory", + "kindModifiers": "", + "sortText": "11" + } + ] + } + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 4, + "type": "request", + "arguments": { + "preferences": {} + }, + "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": { + "file": "/src/a.ts", + "line": 2, + "offset": 27 + }, + "command": "completionInfo" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "completionInfo", + "request_seq": 5, + "success": true, + "body": { + "isGlobalCompletion": false, + "isMemberCompletion": false, + "isNewIdentifierLocation": true, + "entries": [ + { + "name": "foo.js", + "kind": "script", + "kindModifiers": ".js", + "sortText": "11" + } + ] + } + } \ No newline at end of file diff --git a/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap3.js b/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap3.js new file mode 100644 index 0000000000000..714d7ae2e846f --- /dev/null +++ b/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap3.js @@ -0,0 +1,404 @@ +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 + +//// [/package.json] +{ + "type": "module", + "imports": { + "#internal/": "./dist/internal/" + } +} + +//// [/src/a.ts] +import {} from ""; +import {} from "#internal/"; + +//// [/src/internal/foo.ts] +export function something(name: string) {} + +//// [/tsconfig.json] +{ + "compilerOptions": { + "module": "nodenext", + "rootDir": "src", + "outDir": "dist" + } +} + + +Info seq [hh:mm:ss:mss] request: + { + "seq": 0, + "type": "request", + "arguments": { + "file": "/tsconfig.json" + }, + "command": "open" + } +Info seq [hh:mm:ss:mss] Search path: / +Info seq [hh:mm:ss:mss] For info: /tsconfig.json :: Config file name: /tsconfig.json +Info seq [hh:mm:ss:mss] Creating configuration project /tsconfig.json +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /tsconfig.json 2000 undefined Project: /tsconfig.json WatchType: Config file +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "projectLoadingStart", + "body": { + "projectName": "/tsconfig.json", + "reason": "Creating possible configured project for /tsconfig.json to open" + } + } +Info seq [hh:mm:ss:mss] Config: /tsconfig.json : { + "rootNames": [ + "/lib.d.ts", + "/lib.decorators.d.ts", + "/lib.decorators.legacy.d.ts", + "/src/a.ts", + "/src/internal/foo.ts" + ], + "options": { + "module": 199, + "rootDir": "/src", + "outDir": "/dist", + "configFilePath": "/tsconfig.json" + } +} +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: 1 undefined Config: /tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: 1 undefined Config: /tsconfig.json WatchType: Wild card directory +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] FileWatcher:: Added:: WatchInfo: /src/a.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /src/internal/foo.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /tsconfig.json +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /tsconfig.json projectStateVersion: 1 projectProgramVersion: 0 structureChanged: true structureIsReused:: Not Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project '/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (5) + /lib.decorators.d.ts Text-1 lib.decorators.d.ts-Text + /lib.decorators.legacy.d.ts Text-1 lib.decorators.legacy.d.ts-Text + /lib.d.ts Text-1 lib.d.ts-Text + /src/a.ts Text-1 "import {} from \"\";\nimport {} from \"#internal/\";" + /src/internal/foo.ts Text-1 "export function something(name: string) {}" + + + lib.decorators.d.ts + Library referenced via 'decorators' from file 'lib.d.ts' + Matched by default include pattern '**/*' + lib.decorators.legacy.d.ts + Library referenced via 'decorators.legacy' from file 'lib.d.ts' + Matched by default include pattern '**/*' + lib.d.ts + Matched by default include pattern '**/*' + src/a.ts + Matched by default include pattern '**/*' + File is ECMAScript module because 'package.json' has field "type" with value "module" + src/internal/foo.ts + Matched by default include pattern '**/*' + File is ECMAScript module because 'package.json' has field "type" with value "module" + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "projectLoadingFinish", + "body": { + "projectName": "/tsconfig.json" + } + } +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "configFileDiag", + "body": { + "triggerFile": "/tsconfig.json", + "configFile": "/tsconfig.json", + "diagnostics": [] + } + } +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /dev/null/inferredProject1* projectStateVersion: 1 projectProgramVersion: 0 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 + /tsconfig.json SVC-1-0 "{\n \"compilerOptions\": {\n \"module\": \"nodenext\",\n \"rootDir\": \"src\",\n \"outDir\": \"dist\"\n }\n}" + + + 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' + tsconfig.json + Root file specified for compilation + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /package.json 250 undefined WatchType: package.json file +Info seq [hh:mm:ss:mss] Project '/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (5) + +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: /tsconfig.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} +/package.json: *new* + {"pollingInterval":250} +/src/a.ts: *new* + {"pollingInterval":500} +/src/internal/foo.ts: *new* + {"pollingInterval":500} +/tsconfig.json: *new* + {"pollingInterval":2000} + +watchedDirectoriesRecursive:: +: *new* + {} + +Projects:: +/dev/null/inferredProject1* (Inferred) *new* + projectStateVersion: 1 + projectProgramVersion: 1 +/tsconfig.json (Configured) *new* + projectStateVersion: 1 + projectProgramVersion: 1 + noOpenRef: true + +ScriptInfos:: +/lib.d.ts *new* + version: Text-1 + containingProjects: 2 + /tsconfig.json + /dev/null/inferredProject1* +/lib.decorators.d.ts *new* + version: Text-1 + containingProjects: 2 + /tsconfig.json + /dev/null/inferredProject1* +/lib.decorators.legacy.d.ts *new* + version: Text-1 + containingProjects: 2 + /tsconfig.json + /dev/null/inferredProject1* +/src/a.ts *new* + version: Text-1 + containingProjects: 1 + /tsconfig.json +/src/internal/foo.ts *new* + version: Text-1 + containingProjects: 1 + /tsconfig.json +/tsconfig.json (Open) *new* + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 1, + "type": "request", + "arguments": { + "file": "/src/a.ts" + }, + "command": "open" + } +Info seq [hh:mm:ss:mss] FileWatcher:: Close:: WatchInfo: /src/a.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] Search path: /src +Info seq [hh:mm:ss:mss] For info: /src/a.ts :: Config file name: /tsconfig.json +Info seq [hh:mm:ss:mss] Project '/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (5) + +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: /tsconfig.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] FileName: /src/a.ts ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /tsconfig.json +After Request +watchedFiles:: +/lib.d.ts: + {"pollingInterval":500} +/lib.decorators.d.ts: + {"pollingInterval":500} +/lib.decorators.legacy.d.ts: + {"pollingInterval":500} +/package.json: + {"pollingInterval":250} +/src/internal/foo.ts: + {"pollingInterval":500} +/tsconfig.json: + {"pollingInterval":2000} + +watchedFiles *deleted*:: +/src/a.ts: + {"pollingInterval":500} + +watchedDirectoriesRecursive:: +: + {} + +Projects:: +/dev/null/inferredProject1* (Inferred) + projectStateVersion: 1 + projectProgramVersion: 1 +/tsconfig.json (Configured) *changed* + projectStateVersion: 1 + projectProgramVersion: 1 + noOpenRef: false *changed* + +ScriptInfos:: +/lib.d.ts + version: Text-1 + containingProjects: 2 + /tsconfig.json + /dev/null/inferredProject1* +/lib.decorators.d.ts + version: Text-1 + containingProjects: 2 + /tsconfig.json + /dev/null/inferredProject1* +/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 2 + /tsconfig.json + /dev/null/inferredProject1* +/src/a.ts (Open) *changed* + open: true *changed* + version: Text-1 + containingProjects: 1 + /tsconfig.json *default* +/src/internal/foo.ts + version: Text-1 + containingProjects: 1 + /tsconfig.json +/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 2, + "type": "request", + "arguments": { + "preferences": {} + }, + "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": "/src/a.ts", + "line": 1, + "offset": 17 + }, + "command": "completionInfo" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "completionInfo", + "request_seq": 3, + "success": true, + "body": { + "isGlobalCompletion": false, + "isMemberCompletion": false, + "isNewIdentifierLocation": true, + "entries": [ + { + "name": "#internal", + "kind": "script", + "kindModifiers": "", + "sortText": "11" + } + ] + } + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 4, + "type": "request", + "arguments": { + "preferences": {} + }, + "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": { + "file": "/src/a.ts", + "line": 2, + "offset": 27 + }, + "command": "completionInfo" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "completionInfo", + "request_seq": 5, + "success": true, + "body": { + "isGlobalCompletion": false, + "isMemberCompletion": false, + "isNewIdentifierLocation": true, + "entries": [ + { + "name": "#internal", + "kind": "script", + "kindModifiers": "", + "sortText": "11" + } + ] + } + } \ No newline at end of file diff --git a/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap4.js b/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap4.js new file mode 100644 index 0000000000000..8abf584d37047 --- /dev/null +++ b/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap4.js @@ -0,0 +1,357 @@ +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 + +//// [/package.json] +{ + "type": "module", + "imports": { + "#is-browser": { + "types": "./dist/env/browser.d.ts", + "default": "./dist/env/browser.js" + } + } +} + +//// [/src/a.ts] +import {} from ""; + +//// [/src/env/browser.ts] +export const isBrowser = true; + +//// [/tsconfig.json] +{ + "compilerOptions": { + "module": "nodenext", + "rootDir": "src", + "outDir": "dist" + } +} + + +Info seq [hh:mm:ss:mss] request: + { + "seq": 0, + "type": "request", + "arguments": { + "file": "/tsconfig.json" + }, + "command": "open" + } +Info seq [hh:mm:ss:mss] Search path: / +Info seq [hh:mm:ss:mss] For info: /tsconfig.json :: Config file name: /tsconfig.json +Info seq [hh:mm:ss:mss] Creating configuration project /tsconfig.json +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /tsconfig.json 2000 undefined Project: /tsconfig.json WatchType: Config file +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "projectLoadingStart", + "body": { + "projectName": "/tsconfig.json", + "reason": "Creating possible configured project for /tsconfig.json to open" + } + } +Info seq [hh:mm:ss:mss] Config: /tsconfig.json : { + "rootNames": [ + "/lib.d.ts", + "/lib.decorators.d.ts", + "/lib.decorators.legacy.d.ts", + "/src/a.ts", + "/src/env/browser.ts" + ], + "options": { + "module": 199, + "rootDir": "/src", + "outDir": "/dist", + "configFilePath": "/tsconfig.json" + } +} +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: 1 undefined Config: /tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: 1 undefined Config: /tsconfig.json WatchType: Wild card directory +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] FileWatcher:: Added:: WatchInfo: /src/a.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /src/env/browser.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /tsconfig.json +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /tsconfig.json projectStateVersion: 1 projectProgramVersion: 0 structureChanged: true structureIsReused:: Not Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project '/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (5) + /lib.decorators.d.ts Text-1 lib.decorators.d.ts-Text + /lib.decorators.legacy.d.ts Text-1 lib.decorators.legacy.d.ts-Text + /lib.d.ts Text-1 lib.d.ts-Text + /src/a.ts Text-1 "import {} from \"\";" + /src/env/browser.ts Text-1 "export const isBrowser = true;" + + + lib.decorators.d.ts + Library referenced via 'decorators' from file 'lib.d.ts' + Matched by default include pattern '**/*' + lib.decorators.legacy.d.ts + Library referenced via 'decorators.legacy' from file 'lib.d.ts' + Matched by default include pattern '**/*' + lib.d.ts + Matched by default include pattern '**/*' + src/a.ts + Matched by default include pattern '**/*' + File is ECMAScript module because 'package.json' has field "type" with value "module" + src/env/browser.ts + Matched by default include pattern '**/*' + File is ECMAScript module because 'package.json' has field "type" with value "module" + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "projectLoadingFinish", + "body": { + "projectName": "/tsconfig.json" + } + } +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "configFileDiag", + "body": { + "triggerFile": "/tsconfig.json", + "configFile": "/tsconfig.json", + "diagnostics": [] + } + } +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /dev/null/inferredProject1* projectStateVersion: 1 projectProgramVersion: 0 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 + /tsconfig.json SVC-1-0 "{\n \"compilerOptions\": {\n \"module\": \"nodenext\",\n \"rootDir\": \"src\",\n \"outDir\": \"dist\"\n }\n}" + + + 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' + tsconfig.json + Root file specified for compilation + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /package.json 250 undefined WatchType: package.json file +Info seq [hh:mm:ss:mss] Project '/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (5) + +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: /tsconfig.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} +/package.json: *new* + {"pollingInterval":250} +/src/a.ts: *new* + {"pollingInterval":500} +/src/env/browser.ts: *new* + {"pollingInterval":500} +/tsconfig.json: *new* + {"pollingInterval":2000} + +watchedDirectoriesRecursive:: +: *new* + {} + +Projects:: +/dev/null/inferredProject1* (Inferred) *new* + projectStateVersion: 1 + projectProgramVersion: 1 +/tsconfig.json (Configured) *new* + projectStateVersion: 1 + projectProgramVersion: 1 + noOpenRef: true + +ScriptInfos:: +/lib.d.ts *new* + version: Text-1 + containingProjects: 2 + /tsconfig.json + /dev/null/inferredProject1* +/lib.decorators.d.ts *new* + version: Text-1 + containingProjects: 2 + /tsconfig.json + /dev/null/inferredProject1* +/lib.decorators.legacy.d.ts *new* + version: Text-1 + containingProjects: 2 + /tsconfig.json + /dev/null/inferredProject1* +/src/a.ts *new* + version: Text-1 + containingProjects: 1 + /tsconfig.json +/src/env/browser.ts *new* + version: Text-1 + containingProjects: 1 + /tsconfig.json +/tsconfig.json (Open) *new* + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 1, + "type": "request", + "arguments": { + "file": "/src/a.ts" + }, + "command": "open" + } +Info seq [hh:mm:ss:mss] FileWatcher:: Close:: WatchInfo: /src/a.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] Search path: /src +Info seq [hh:mm:ss:mss] For info: /src/a.ts :: Config file name: /tsconfig.json +Info seq [hh:mm:ss:mss] Project '/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (5) + +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: /tsconfig.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] FileName: /src/a.ts ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /tsconfig.json +After Request +watchedFiles:: +/lib.d.ts: + {"pollingInterval":500} +/lib.decorators.d.ts: + {"pollingInterval":500} +/lib.decorators.legacy.d.ts: + {"pollingInterval":500} +/package.json: + {"pollingInterval":250} +/src/env/browser.ts: + {"pollingInterval":500} +/tsconfig.json: + {"pollingInterval":2000} + +watchedFiles *deleted*:: +/src/a.ts: + {"pollingInterval":500} + +watchedDirectoriesRecursive:: +: + {} + +Projects:: +/dev/null/inferredProject1* (Inferred) + projectStateVersion: 1 + projectProgramVersion: 1 +/tsconfig.json (Configured) *changed* + projectStateVersion: 1 + projectProgramVersion: 1 + noOpenRef: false *changed* + +ScriptInfos:: +/lib.d.ts + version: Text-1 + containingProjects: 2 + /tsconfig.json + /dev/null/inferredProject1* +/lib.decorators.d.ts + version: Text-1 + containingProjects: 2 + /tsconfig.json + /dev/null/inferredProject1* +/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 2 + /tsconfig.json + /dev/null/inferredProject1* +/src/a.ts (Open) *changed* + open: true *changed* + version: Text-1 + containingProjects: 1 + /tsconfig.json *default* +/src/env/browser.ts + version: Text-1 + containingProjects: 1 + /tsconfig.json +/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 2, + "type": "request", + "arguments": { + "preferences": {} + }, + "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": "/src/a.ts", + "line": 1, + "offset": 17 + }, + "command": "completionInfo" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "completionInfo", + "request_seq": 3, + "success": true, + "body": { + "isGlobalCompletion": false, + "isMemberCompletion": false, + "isNewIdentifierLocation": true, + "entries": [ + { + "name": "#is-browser", + "kind": "script", + "kindModifiers": "", + "sortText": "11" + } + ] + } + } \ No newline at end of file diff --git a/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap5.js b/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap5.js new file mode 100644 index 0000000000000..b326df6504397 --- /dev/null +++ b/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap5.js @@ -0,0 +1,374 @@ +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 + +//// [/package.json] +{ + "type": "module", + "imports": { + "#is-browser": { + "types": "./types/env/browser.d.ts", + "default": "./not-dist-on-purpose/env/browser.js" + } + } +} + +//// [/src/a.ts] +import {} from ""; + +//// [/src/env/browser.ts] +export const isBrowser = true; + +//// [/tsconfig.json] +{ + "compilerOptions": { + "module": "nodenext", + "rootDir": "src", + "outDir": "dist", + "declarationDir": "types", + } +} + + +Info seq [hh:mm:ss:mss] request: + { + "seq": 0, + "type": "request", + "arguments": { + "file": "/tsconfig.json" + }, + "command": "open" + } +Info seq [hh:mm:ss:mss] Search path: / +Info seq [hh:mm:ss:mss] For info: /tsconfig.json :: Config file name: /tsconfig.json +Info seq [hh:mm:ss:mss] Creating configuration project /tsconfig.json +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /tsconfig.json 2000 undefined Project: /tsconfig.json WatchType: Config file +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "projectLoadingStart", + "body": { + "projectName": "/tsconfig.json", + "reason": "Creating possible configured project for /tsconfig.json to open" + } + } +Info seq [hh:mm:ss:mss] Config: /tsconfig.json : { + "rootNames": [ + "/lib.d.ts", + "/lib.decorators.d.ts", + "/lib.decorators.legacy.d.ts", + "/src/a.ts", + "/src/env/browser.ts" + ], + "options": { + "module": 199, + "rootDir": "/src", + "outDir": "/dist", + "declarationDir": "/types", + "configFilePath": "/tsconfig.json" + } +} +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: 1 undefined Config: /tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: 1 undefined Config: /tsconfig.json WatchType: Wild card directory +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] FileWatcher:: Added:: WatchInfo: /src/a.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /src/env/browser.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /tsconfig.json +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /tsconfig.json projectStateVersion: 1 projectProgramVersion: 0 structureChanged: true structureIsReused:: Not Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project '/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (5) + /lib.decorators.d.ts Text-1 lib.decorators.d.ts-Text + /lib.decorators.legacy.d.ts Text-1 lib.decorators.legacy.d.ts-Text + /lib.d.ts Text-1 lib.d.ts-Text + /src/a.ts Text-1 "import {} from \"\";" + /src/env/browser.ts Text-1 "export const isBrowser = true;" + + + lib.decorators.d.ts + Library referenced via 'decorators' from file 'lib.d.ts' + Matched by default include pattern '**/*' + lib.decorators.legacy.d.ts + Library referenced via 'decorators.legacy' from file 'lib.d.ts' + Matched by default include pattern '**/*' + lib.d.ts + Matched by default include pattern '**/*' + src/a.ts + Matched by default include pattern '**/*' + File is ECMAScript module because 'package.json' has field "type" with value "module" + src/env/browser.ts + Matched by default include pattern '**/*' + File is ECMAScript module because 'package.json' has field "type" with value "module" + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "projectLoadingFinish", + "body": { + "projectName": "/tsconfig.json" + } + } +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "configFileDiag", + "body": { + "triggerFile": "/tsconfig.json", + "configFile": "/tsconfig.json", + "diagnostics": [ + { + "start": { + "line": 6, + "offset": 5 + }, + "end": { + "line": 6, + "offset": 21 + }, + "text": "Option 'declarationDir' cannot be specified without specifying option 'declaration' or option 'composite'.", + "code": 5069, + "category": "error", + "fileName": "/tsconfig.json" + } + ] + } + } +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /dev/null/inferredProject1* projectStateVersion: 1 projectProgramVersion: 0 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 + /tsconfig.json SVC-1-0 "{\n \"compilerOptions\": {\n \"module\": \"nodenext\",\n \"rootDir\": \"src\",\n \"outDir\": \"dist\",\n \"declarationDir\": \"types\",\n }\n}" + + + 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' + tsconfig.json + Root file specified for compilation + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /package.json 250 undefined WatchType: package.json file +Info seq [hh:mm:ss:mss] Project '/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (5) + +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: /tsconfig.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} +/package.json: *new* + {"pollingInterval":250} +/src/a.ts: *new* + {"pollingInterval":500} +/src/env/browser.ts: *new* + {"pollingInterval":500} +/tsconfig.json: *new* + {"pollingInterval":2000} + +watchedDirectoriesRecursive:: +: *new* + {} + +Projects:: +/dev/null/inferredProject1* (Inferred) *new* + projectStateVersion: 1 + projectProgramVersion: 1 +/tsconfig.json (Configured) *new* + projectStateVersion: 1 + projectProgramVersion: 1 + noOpenRef: true + +ScriptInfos:: +/lib.d.ts *new* + version: Text-1 + containingProjects: 2 + /tsconfig.json + /dev/null/inferredProject1* +/lib.decorators.d.ts *new* + version: Text-1 + containingProjects: 2 + /tsconfig.json + /dev/null/inferredProject1* +/lib.decorators.legacy.d.ts *new* + version: Text-1 + containingProjects: 2 + /tsconfig.json + /dev/null/inferredProject1* +/src/a.ts *new* + version: Text-1 + containingProjects: 1 + /tsconfig.json +/src/env/browser.ts *new* + version: Text-1 + containingProjects: 1 + /tsconfig.json +/tsconfig.json (Open) *new* + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 1, + "type": "request", + "arguments": { + "file": "/src/a.ts" + }, + "command": "open" + } +Info seq [hh:mm:ss:mss] FileWatcher:: Close:: WatchInfo: /src/a.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] Search path: /src +Info seq [hh:mm:ss:mss] For info: /src/a.ts :: Config file name: /tsconfig.json +Info seq [hh:mm:ss:mss] Project '/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (5) + +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: /tsconfig.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] FileName: /src/a.ts ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /tsconfig.json +After Request +watchedFiles:: +/lib.d.ts: + {"pollingInterval":500} +/lib.decorators.d.ts: + {"pollingInterval":500} +/lib.decorators.legacy.d.ts: + {"pollingInterval":500} +/package.json: + {"pollingInterval":250} +/src/env/browser.ts: + {"pollingInterval":500} +/tsconfig.json: + {"pollingInterval":2000} + +watchedFiles *deleted*:: +/src/a.ts: + {"pollingInterval":500} + +watchedDirectoriesRecursive:: +: + {} + +Projects:: +/dev/null/inferredProject1* (Inferred) + projectStateVersion: 1 + projectProgramVersion: 1 +/tsconfig.json (Configured) *changed* + projectStateVersion: 1 + projectProgramVersion: 1 + noOpenRef: false *changed* + +ScriptInfos:: +/lib.d.ts + version: Text-1 + containingProjects: 2 + /tsconfig.json + /dev/null/inferredProject1* +/lib.decorators.d.ts + version: Text-1 + containingProjects: 2 + /tsconfig.json + /dev/null/inferredProject1* +/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 2 + /tsconfig.json + /dev/null/inferredProject1* +/src/a.ts (Open) *changed* + open: true *changed* + version: Text-1 + containingProjects: 1 + /tsconfig.json *default* +/src/env/browser.ts + version: Text-1 + containingProjects: 1 + /tsconfig.json +/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 2, + "type": "request", + "arguments": { + "preferences": {} + }, + "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": "/src/a.ts", + "line": 1, + "offset": 17 + }, + "command": "completionInfo" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "completionInfo", + "request_seq": 3, + "success": true, + "body": { + "isGlobalCompletion": false, + "isMemberCompletion": false, + "isNewIdentifierLocation": true, + "entries": [ + { + "name": "#is-browser", + "kind": "script", + "kindModifiers": "", + "sortText": "11" + } + ] + } + } \ No newline at end of file diff --git a/tests/cases/fourslash/importCompletionsPackageJsonExportsSpecifierEndsInTs.ts b/tests/cases/fourslash/importCompletionsPackageJsonExportsSpecifierEndsInTs.ts new file mode 100644 index 0000000000000..0549081b7ddeb --- /dev/null +++ b/tests/cases/fourslash/importCompletionsPackageJsonExportsSpecifierEndsInTs.ts @@ -0,0 +1,31 @@ +/// <reference path="fourslash.ts" /> + +// @module: nodenext + +// @Filename: /node_modules/pkg/package.json +//// { +//// "name": "pkg", +//// "version": "1.0.0", +//// "exports": { +//// "./something.ts": "./a.js" +//// } +//// } + +// @Filename: /node_modules/pkg/a.d.ts +//// export function foo(): void; + +// @Filename: /package.json +//// { +//// "dependencies": { +//// "pkg": "*" +//// } +//// } + +// @Filename: /index.ts +//// import {} from "pkg//*1*/"; + +verify.completions({ + marker: ["1"], + exact: ["something.ts"], + isNewIdentifierLocation: true, +}); diff --git a/tests/cases/fourslash/importCompletionsPackageJsonImportsConditions1.ts b/tests/cases/fourslash/importCompletionsPackageJsonImportsConditions1.ts new file mode 100644 index 0000000000000..9bac2d834dd42 --- /dev/null +++ b/tests/cases/fourslash/importCompletionsPackageJsonImportsConditions1.ts @@ -0,0 +1,25 @@ +/// <reference path="fourslash.ts" /> + +// @module: nodenext + +// @Filename: /package.json +//// { +//// "imports": { +//// "#thing": { +//// "types": { "import": "./types-esm/thing.d.mts", "require": "./types/thing.d.ts" }, +//// "default": { "import": "./esm/thing.mjs", "require": "./dist/thing.js" } +//// } +//// } +//// } + +// @Filename: /types/thing.d.ts +//// export function something(name: string): any; + +// @Filename: /src/foo.ts +//// import {} from "/*1*/"; + +verify.completions({ + marker: ["1"], + exact: ["#thing"], + isNewIdentifierLocation: true, +}); diff --git a/tests/cases/fourslash/importCompletionsPackageJsonImportsLength1.ts b/tests/cases/fourslash/importCompletionsPackageJsonImportsLength1.ts new file mode 100644 index 0000000000000..36380677a29de --- /dev/null +++ b/tests/cases/fourslash/importCompletionsPackageJsonImportsLength1.ts @@ -0,0 +1,46 @@ +/// <reference path="fourslash.ts" /> + +// @module: nodenext + +// @Filename: /package.json +//// { +//// "imports": { +//// "#*": "./src/*.ts" +//// } +//// } + +// @Filename: /src/a/b/c/something.ts +//// export function something(name: string): any; + +// @Filename: /src/a/b/c/d.ts +//// import {} from "/*1*/"; +//// import {} from "#a//*2*/"; +//// import {} from "#a/b//*3*/"; +//// import {} from "#a/b/c//*4*/"; +//// import {} from "#a/b/c/something//*5*/"; + +verify.completions({ + marker: ["1"], + exact: ["#a"], + isNewIdentifierLocation: true, +}); +verify.completions({ + marker: ["2"], + exact: ["b"], + isNewIdentifierLocation: true, +}); +verify.completions({ + marker: ["3"], + exact: ["c"], + isNewIdentifierLocation: true, +}); +verify.completions({ + marker: ["4"], + exact: ["d", "something"], + isNewIdentifierLocation: true, +}); +verify.completions({ + marker: ["5"], + exact: [], + isNewIdentifierLocation: true, +}); diff --git a/tests/cases/fourslash/importCompletionsPackageJsonImportsLength2.ts b/tests/cases/fourslash/importCompletionsPackageJsonImportsLength2.ts new file mode 100644 index 0000000000000..8dd812c00ef2c --- /dev/null +++ b/tests/cases/fourslash/importCompletionsPackageJsonImportsLength2.ts @@ -0,0 +1,47 @@ +/// <reference path="fourslash.ts" /> + +// @module: nodenext + +// @Filename: /package.json +//// { +//// "imports": { +//// "#*": "./src/*.ts" +//// } +//// } + +// @Filename: /src/a/b/c/something.ts +//// export function something(name: string): any; + +// @Filename: /a.ts +//// import {} from "/*1*/"; +//// import {} from "#a//*2*/"; +//// import {} from "#a/b//*3*/"; +//// import {} from "#a/b/c//*4*/"; +//// import {} from "#a/b/c/something//*5*/"; + +verify.completions({ + marker: ["1"], + exact: ["#a"], + isNewIdentifierLocation: true, +}); +verify.completions({ + marker: ["2"], + exact: ["b"], + isNewIdentifierLocation: true, +}); +verify.completions({ + marker: ["3"], + exact: ["c"], + isNewIdentifierLocation: true, +}); +verify.completions({ + marker: ["4"], + exact: ["something"], + isNewIdentifierLocation: true, +}); +verify.completions({ + marker: ["5"], + exact: [], + isNewIdentifierLocation: true, +}); + diff --git a/tests/cases/fourslash/importCompletionsPackageJsonImportsPattern.ts b/tests/cases/fourslash/importCompletionsPackageJsonImportsPattern.ts new file mode 100644 index 0000000000000..89b84c7b5bf47 --- /dev/null +++ b/tests/cases/fourslash/importCompletionsPackageJsonImportsPattern.ts @@ -0,0 +1,22 @@ +/// <reference path="fourslash.ts" /> + +// @module: nodenext + +// @Filename: /package.json +//// { +//// "imports": { +//// "#*": "./src/*" +//// } +//// } + +// @Filename: /src/something.ts +//// export function something(name: string): any; + +// @Filename: /a.ts +//// import {} from "/*1*/"; + +verify.completions({ + marker: ["1"], + exact: ["#something.js"], + isNewIdentifierLocation: true, +}); diff --git a/tests/cases/fourslash/importCompletionsPackageJsonImportsPattern_capsInPath1.ts b/tests/cases/fourslash/importCompletionsPackageJsonImportsPattern_capsInPath1.ts new file mode 100644 index 0000000000000..f75079c117361 --- /dev/null +++ b/tests/cases/fourslash/importCompletionsPackageJsonImportsPattern_capsInPath1.ts @@ -0,0 +1,22 @@ +/// <reference path="fourslash.ts" /> + +// @module: nodenext + +// @Filename: /Dev/package.json +//// { +//// "imports": { +//// "#thing": "./src/something.js" +//// } +//// } + +// @Filename: /Dev/src/something.ts +//// export function something(name: string): any; + +// @Filename: /Dev/a.ts +//// import {} from "/*1*/"; + +verify.completions({ + marker: ["1"], + exact: ["#thing"], + isNewIdentifierLocation: true, +}); diff --git a/tests/cases/fourslash/importCompletionsPackageJsonImportsPattern_capsInPath2.ts b/tests/cases/fourslash/importCompletionsPackageJsonImportsPattern_capsInPath2.ts new file mode 100644 index 0000000000000..fcb66e518d0f4 --- /dev/null +++ b/tests/cases/fourslash/importCompletionsPackageJsonImportsPattern_capsInPath2.ts @@ -0,0 +1,27 @@ +/// <reference path="fourslash.ts" /> + +// @module: nodenext + +// @Filename: /Dev/package.json +//// { +//// "imports": { +//// "#thing/*": "./src/*.js" +//// } +//// } + +// @Filename: /Dev/src/something.ts +//// export function something(name: string): any; + +// @Filename: /Dev/a.ts +//// import {} from "#thing//*2*/"; + +// verify.completions({ +// marker: ["1"], +// exact: ["#thing"], +// isNewIdentifierLocation: true, +// }); +verify.completions({ + marker: ["2"], + exact: ["something"], + isNewIdentifierLocation: true, +}); diff --git a/tests/cases/fourslash/importCompletionsPackageJsonImportsPattern_js.ts b/tests/cases/fourslash/importCompletionsPackageJsonImportsPattern_js.ts new file mode 100644 index 0000000000000..62c47e19cfb12 --- /dev/null +++ b/tests/cases/fourslash/importCompletionsPackageJsonImportsPattern_js.ts @@ -0,0 +1,22 @@ +/// <reference path="fourslash.ts" /> + +// @module: nodenext + +// @Filename: /package.json +//// { +//// "imports": { +//// "#*": "./src/*.js" +//// } +//// } + +// @Filename: /src/something.ts +//// export function something(name: string): any; + +// @Filename: /a.ts +//// import {} from "/*1*/"; + +verify.completions({ + marker: ["1"], + exact: ["#something"], + isNewIdentifierLocation: true, +}); diff --git a/tests/cases/fourslash/importCompletionsPackageJsonImportsPattern_js_ts.ts b/tests/cases/fourslash/importCompletionsPackageJsonImportsPattern_js_ts.ts new file mode 100644 index 0000000000000..0b79cad7fbc52 --- /dev/null +++ b/tests/cases/fourslash/importCompletionsPackageJsonImportsPattern_js_ts.ts @@ -0,0 +1,22 @@ +/// <reference path="fourslash.ts" /> + +// @module: nodenext + +// @Filename: /package.json +//// { +//// "imports": { +//// "#*.js": "./src/*.ts" +//// } +//// } + +// @Filename: /src/something.ts +//// export function something(name: string): any; + +// @Filename: /a.ts +//// import {} from "/*1*/"; + +verify.completions({ + marker: ["1"], + exact: ["#something.js"], + isNewIdentifierLocation: true, +}); \ No newline at end of file diff --git a/tests/cases/fourslash/importCompletionsPackageJsonImportsPattern_ts.ts b/tests/cases/fourslash/importCompletionsPackageJsonImportsPattern_ts.ts new file mode 100644 index 0000000000000..ef3ef47db4367 --- /dev/null +++ b/tests/cases/fourslash/importCompletionsPackageJsonImportsPattern_ts.ts @@ -0,0 +1,22 @@ +/// <reference path="fourslash.ts" /> + +// @module: nodenext + +// @Filename: /package.json +//// { +//// "imports": { +//// "#*": "./src/*.ts" +//// } +//// } + +// @Filename: /src/something.ts +//// export function something(name: string): any; + +// @Filename: /a.ts +//// import {} from "/*1*/"; + +verify.completions({ + marker: ["1"], + exact: ["#something"], + isNewIdentifierLocation: true, +}); diff --git a/tests/cases/fourslash/importCompletionsPackageJsonImportsPattern_ts_js.ts b/tests/cases/fourslash/importCompletionsPackageJsonImportsPattern_ts_js.ts new file mode 100644 index 0000000000000..595d3b0a7194d --- /dev/null +++ b/tests/cases/fourslash/importCompletionsPackageJsonImportsPattern_ts_js.ts @@ -0,0 +1,22 @@ +/// <reference path="fourslash.ts" /> + +// @module: nodenext + +// @Filename: /package.json +//// { +//// "imports": { +//// "#*.ts": "./src/*.js" +//// } +//// } + +// @Filename: /src/something.ts +//// export function something(name: string): any; + +// @Filename: /a.ts +//// import {} from "/*1*/"; + +verify.completions({ + marker: ["1"], + exact: ["#something.ts"], + isNewIdentifierLocation: true, +}); diff --git a/tests/cases/fourslash/importCompletionsPackageJsonImportsPattern_ts_ts.ts b/tests/cases/fourslash/importCompletionsPackageJsonImportsPattern_ts_ts.ts new file mode 100644 index 0000000000000..e6dafdb1a3dc7 --- /dev/null +++ b/tests/cases/fourslash/importCompletionsPackageJsonImportsPattern_ts_ts.ts @@ -0,0 +1,22 @@ +/// <reference path="fourslash.ts" /> + +// @module: nodenext + +// @Filename: /package.json +//// { +//// "imports": { +//// "#*.ts": "./src/*.ts" +//// } +//// } + +// @Filename: /src/something.ts +//// export function something(name: string): any; + +// @Filename: /a.ts +//// import {} from "/*1*/"; + +verify.completions({ + marker: ["1"], + exact: ["#something.ts"], + isNewIdentifierLocation: true, +}); diff --git a/tests/cases/fourslash/importCompletionsPackageJsonImports_js.ts b/tests/cases/fourslash/importCompletionsPackageJsonImports_js.ts new file mode 100644 index 0000000000000..b650f213eaa89 --- /dev/null +++ b/tests/cases/fourslash/importCompletionsPackageJsonImports_js.ts @@ -0,0 +1,22 @@ +/// <reference path="fourslash.ts" /> + +// @module: nodenext + +// @Filename: /package.json +//// { +//// "imports": { +//// "#thing": "./src/something.js" +//// } +//// } + +// @Filename: /src/something.ts +//// export function something(name: string): any; + +// @Filename: /a.ts +//// import {} from "/*1*/"; + +verify.completions({ + marker: ["1"], + exact: ["#thing"], + isNewIdentifierLocation: true, +}); diff --git a/tests/cases/fourslash/importCompletionsPackageJsonImports_ts.ts b/tests/cases/fourslash/importCompletionsPackageJsonImports_ts.ts new file mode 100644 index 0000000000000..0c8563e8665b3 --- /dev/null +++ b/tests/cases/fourslash/importCompletionsPackageJsonImports_ts.ts @@ -0,0 +1,22 @@ +/// <reference path="fourslash.ts" /> + +// @module: nodenext + +// @Filename: /package.json +//// { +//// "imports": { +//// "#thing": "./src/something.ts" +//// } +//// } + +// @Filename: /src/something.ts +//// export function something(name: string): any; + +// @Filename: /a.ts +//// import {} from "/*1*/"; + +verify.completions({ + marker: ["1"], + exact: ["#thing"], + isNewIdentifierLocation: true, +}); diff --git a/tests/cases/fourslash/server/importCompletions_importsMap1.ts b/tests/cases/fourslash/server/importCompletions_importsMap1.ts new file mode 100644 index 0000000000000..d21821e087cfd --- /dev/null +++ b/tests/cases/fourslash/server/importCompletions_importsMap1.ts @@ -0,0 +1,36 @@ +/// <reference path="../fourslash.ts"/> + +// @Filename: /tsconfig.json +//// { +//// "compilerOptions": { +//// "module": "nodenext", +//// "rootDir": "src", +//// "outDir": "dist" +//// } +//// } + +// @Filename: /package.json +//// { +//// "type": "module", +//// "imports": { +//// "#is-browser": { +//// "browser": "./dist/env/browser.js", +//// "default": "./dist/env/node.js" +//// } +//// } +//// } + +// @Filename: /src/env/browser.ts +//// export const isBrowser = true; + +// @Filename: /src/env/node.ts +//// export const isBrowser = false; + +// @Filename: /src/a.ts +//// import {} from "/*1*/"; + +verify.completions({ + marker: ["1"], + exact: ["#is-browser"], + isNewIdentifierLocation: true, +}); diff --git a/tests/cases/fourslash/server/importCompletions_importsMap2.ts b/tests/cases/fourslash/server/importCompletions_importsMap2.ts new file mode 100644 index 0000000000000..b83d83052b826 --- /dev/null +++ b/tests/cases/fourslash/server/importCompletions_importsMap2.ts @@ -0,0 +1,36 @@ +/// <reference path="../fourslash.ts"/> + +// @Filename: /tsconfig.json +//// { +//// "compilerOptions": { +//// "module": "nodenext", +//// "rootDir": "src", +//// "outDir": "dist" +//// } +//// } + +// @Filename: /package.json +//// { +//// "type": "module", +//// "imports": { +//// "#internal/*": "./dist/internal/*" +//// } +//// } + +// @Filename: /src/internal/foo.ts +//// export function something(name: string) {} + +// @Filename: /src/a.ts +//// import {} from "/*1*/"; +//// import {} from "#internal//*2*/"; + +verify.completions({ + marker: ["1"], + exact: ["#internal"], + isNewIdentifierLocation: true, +}); +verify.completions({ + marker: ["2"], + exact: ["foo.js"], + isNewIdentifierLocation: true, +}); diff --git a/tests/cases/fourslash/server/importCompletions_importsMap3.ts b/tests/cases/fourslash/server/importCompletions_importsMap3.ts new file mode 100644 index 0000000000000..02691c7700c76 --- /dev/null +++ b/tests/cases/fourslash/server/importCompletions_importsMap3.ts @@ -0,0 +1,36 @@ +/// <reference path="../fourslash.ts"/> + +// @Filename: /tsconfig.json +//// { +//// "compilerOptions": { +//// "module": "nodenext", +//// "rootDir": "src", +//// "outDir": "dist" +//// } +//// } + +// @Filename: /package.json +//// { +//// "type": "module", +//// "imports": { +//// "#internal/": "./dist/internal/" +//// } +//// } + +// @Filename: /src/internal/foo.ts +//// export function something(name: string) {} + +// @Filename: /src/a.ts +//// import {} from "/*1*/"; +//// import {} from "#internal//*2*/"; + +verify.completions({ + marker: ["1"], + exact: ["#internal"], + isNewIdentifierLocation: true, +}); +verify.completions({ + marker: ["2"], + exact: ["foo.js"], + isNewIdentifierLocation: true, +}); diff --git a/tests/cases/fourslash/server/importCompletions_importsMap4.ts b/tests/cases/fourslash/server/importCompletions_importsMap4.ts new file mode 100644 index 0000000000000..c770776e81d70 --- /dev/null +++ b/tests/cases/fourslash/server/importCompletions_importsMap4.ts @@ -0,0 +1,33 @@ +/// <reference path="../fourslash.ts"/> + +// @Filename: /tsconfig.json +//// { +//// "compilerOptions": { +//// "module": "nodenext", +//// "rootDir": "src", +//// "outDir": "dist" +//// } +//// } + +// @Filename: /package.json +//// { +//// "type": "module", +//// "imports": { +//// "#is-browser": { +//// "types": "./dist/env/browser.d.ts", +//// "default": "./dist/env/browser.js" +//// } +//// } +//// } + +// @Filename: /src/env/browser.ts +//// export const isBrowser = true; + +// @Filename: /src/a.ts +//// import {} from "/*1*/"; + +verify.completions({ + marker: ["1"], + exact: ["#is-browser"], + isNewIdentifierLocation: true, +}); diff --git a/tests/cases/fourslash/server/importCompletions_importsMap5.ts b/tests/cases/fourslash/server/importCompletions_importsMap5.ts new file mode 100644 index 0000000000000..dc188357917d3 --- /dev/null +++ b/tests/cases/fourslash/server/importCompletions_importsMap5.ts @@ -0,0 +1,34 @@ +/// <reference path="../fourslash.ts"/> + +// @Filename: /tsconfig.json +//// { +//// "compilerOptions": { +//// "module": "nodenext", +//// "rootDir": "src", +//// "outDir": "dist", +//// "declarationDir": "types", +//// } +//// } + +// @Filename: /package.json +//// { +//// "type": "module", +//// "imports": { +//// "#is-browser": { +//// "types": "./types/env/browser.d.ts", +//// "default": "./not-dist-on-purpose/env/browser.js" +//// } +//// } +//// } + +// @Filename: /src/env/browser.ts +//// export const isBrowser = true; + +// @Filename: /src/a.ts +//// import {} from "/*1*/"; + +verify.completions({ + marker: ["1"], + exact: ["#is-browser"], + isNewIdentifierLocation: true, +}); From 2adb14c118180a1e6930bacd9c7bd6839f7a01c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= <mateuszburzynski@gmail.com> Date: Mon, 11 Mar 2024 11:52:23 +0100 Subject: [PATCH 02/26] format --- src/services/stringCompletions.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/services/stringCompletions.ts b/src/services/stringCompletions.ts index 03320135c7dfb..b932f6a522372 100644 --- a/src/services/stringCompletions.ts +++ b/src/services/stringCompletions.ts @@ -887,7 +887,7 @@ function addCompletionEntriesFromPathsOrExports( if (typeof pathPattern === "string" || matchedPath === undefined || comparePaths(key, matchedPath) !== Comparison.GreaterThan) { pathResults.push({ matchedPattern: isMatch, - results: getCompletionsForPathMapping(keyWithoutLeadingDotSlash, patterns, fragment, baseDirectory, extensionOptions, (isExports || isImports) && endsWith(keyWithoutLeadingDotSlash, '*'), isImports, compilerOptions, host, moduleSpecifierResolutionHost) + results: getCompletionsForPathMapping(keyWithoutLeadingDotSlash, patterns, fragment, baseDirectory, extensionOptions, (isExports || isImports) && endsWith(keyWithoutLeadingDotSlash, "*"), isImports, compilerOptions, host, moduleSpecifierResolutionHost) .map(({ name, kind, extension }) => nameAndKind(name, kind, extension)), }); } @@ -1096,9 +1096,9 @@ function getCompletionsForPathMapping( isImports: boolean, compilerOptions: CompilerOptions, host: LanguageServiceHost, - moduleSpecifierResolutionHost: ModuleSpecifierResolutionHost | undefined + moduleSpecifierResolutionHost: ModuleSpecifierResolutionHost | undefined, ): readonly NameAndKind[] { - const parsedPath = tryParsePattern(path) + const parsedPath = tryParsePattern(path); if (!parsedPath) { return emptyArray; } @@ -1109,7 +1109,7 @@ function getCompletionsForPathMapping( } const remainingFragment = tryRemovePrefix(fragment, parsedPath.prefix); if (remainingFragment === undefined) { - const starIsFullPathComponent = endsWith(path, '/*'); + const starIsFullPathComponent = endsWith(path, "/*"); return starIsFullPathComponent ? justPathMappingName(parsedPath.prefix, ScriptElementKind.directory) : flatMap(patterns, pattern => getModulesForPathsPattern("", packageDirectory, pattern, extensionOptions, isExportsWildcard, isImports, compilerOptions, host, moduleSpecifierResolutionHost)?.map(({ name, ...rest }) => ({ name: parsedPath.prefix + name + parsedPath.suffix, ...rest }))); } return flatMap(patterns, pattern => getModulesForPathsPattern(remainingFragment, packageDirectory, pattern, extensionOptions, isExportsWildcard, isImports, compilerOptions, host, moduleSpecifierResolutionHost)); @@ -1128,7 +1128,7 @@ function getModulesForPathsPattern( isImports: boolean, compilerOptions: CompilerOptions, host: LanguageServiceHost, - moduleSpecifierResolutionHost: ModuleSpecifierResolutionHost | undefined + moduleSpecifierResolutionHost: ModuleSpecifierResolutionHost | undefined, ): readonly NameAndKind[] | undefined { if (!host.readDirectory) { return undefined; @@ -1157,7 +1157,7 @@ function getModulesForPathsPattern( const matchingSuffixes = [...(inputExtension ? inputExtension.map(ext => changeExtension(normalizedSuffix, ext)) : []), declarationExtension && changeExtension(normalizedSuffix, declarationExtension), normalizedSuffix].filter(isString); // Need to normalize after combining: If we combinePaths("a", "../b"), we want "b" and not "a/../b". const baseDirectory = normalizePath(combinePaths(packageDirectory, expandedPrefixDirectory)); - const inputBaseDirectory = isImports && getPossibleOriginalInputPathWithoutChangingExt(baseDirectory, !hostUsesCaseSensitiveFileNames(moduleSpecifierResolutionHost!), compilerOptions.outDir, () => moduleSpecifierResolutionHost!.getCommonSourceDirectory()); + const inputBaseDirectory = isImports && getPossibleOriginalInputPathWithoutChangingExt(baseDirectory, !hostUsesCaseSensitiveFileNames(moduleSpecifierResolutionHost!), compilerOptions.outDir, () => moduleSpecifierResolutionHost!.getCommonSourceDirectory()); const completePrefix = fragmentHasPath ? baseDirectory : ensureTrailingDirectorySeparator(baseDirectory) + normalizedPrefixBase; // If we have a suffix, then we read the directory all the way down to avoid returning completions for From 08eaa1640cb7731fd0f808131dec092f24a03ced Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= <mateuszburzynski@gmail.com> Date: Sat, 28 Sep 2024 23:47:10 +0200 Subject: [PATCH 03/26] fixed server fixtures --- .../importCompletions_importsMap1.js | 383 +++++++++++------- .../importCompletions_importsMap2.js | 382 +++++++++++------ .../importCompletions_importsMap3.js | 382 +++++++++++------ .../importCompletions_importsMap4.js | 363 +++++++++++------ .../importCompletions_importsMap5.js | 364 +++++++++++------ .../server/importCompletions_importsMap1.ts | 10 +- .../server/importCompletions_importsMap2.ts | 8 +- .../server/importCompletions_importsMap3.ts | 8 +- .../server/importCompletions_importsMap4.ts | 8 +- .../server/importCompletions_importsMap5.ts | 8 +- 10 files changed, 1235 insertions(+), 681 deletions(-) diff --git a/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap1.js b/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap1.js index cb6d6d9792752..20790f3d8c3cf 100644 --- a/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap1.js +++ b/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap1.js @@ -1,15 +1,17 @@ -currentDirectory:: / useCaseSensitiveFileNames: false -Info seq [hh:mm:ss:mss] Provided types map file "/typesMap.json" doesn't exist -//// [/lib.d.ts] +Info seq [hh:mm:ss:mss] currentDirectory:: /home/src/Vscode/Projects/bin useCaseSensitiveFileNames:: false +Info seq [hh:mm:ss:mss] libs Location:: /home/src/tslibs/TS/Lib +Info seq [hh:mm:ss:mss] globalTypingsCacheLocation:: /home/src/Library/Caches/typescript +Info seq [hh:mm:ss:mss] Provided types map file "/home/src/tslibs/TS/Lib/typesMap.json" doesn't exist +//// [/home/src/tslibs/TS/Lib/lib.d.ts] lib.d.ts-Text -//// [/lib.decorators.d.ts] +//// [/home/src/tslibs/TS/Lib/lib.decorators.d.ts] lib.decorators.d.ts-Text -//// [/lib.decorators.legacy.d.ts] +//// [/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts] lib.decorators.legacy.d.ts-Text -//// [/package.json] +//// [/home/src/workspaces/project/package.json] { "type": "module", "imports": { @@ -20,16 +22,16 @@ lib.decorators.legacy.d.ts-Text } } -//// [/src/a.ts] +//// [/home/src/workspaces/project/src/a.ts] import {} from ""; -//// [/src/env/browser.ts] +//// [/home/src/workspaces/project/src/env/browser.ts] export const isBrowser = true; -//// [/src/env/node.ts] +//// [/home/src/workspaces/project/src/env/node.ts] export const isBrowser = false; -//// [/tsconfig.json] +//// [/home/src/workspaces/project/tsconfig.json] { "compilerOptions": { "module": "nodenext", @@ -44,68 +46,58 @@ Info seq [hh:mm:ss:mss] request: "seq": 0, "type": "request", "arguments": { - "file": "/tsconfig.json" + "file": "/home/src/workspaces/project/tsconfig.json" }, "command": "open" } -Info seq [hh:mm:ss:mss] Search path: / -Info seq [hh:mm:ss:mss] For info: /tsconfig.json :: Config file name: /tsconfig.json -Info seq [hh:mm:ss:mss] Creating configuration project /tsconfig.json -Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /tsconfig.json 2000 undefined Project: /tsconfig.json WatchType: Config file +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined:: Result: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] Creating ConfiguredProject: /home/src/workspaces/project/tsconfig.json, currentDirectory: /home/src/workspaces/project +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/tsconfig.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Config file +Info seq [hh:mm:ss:mss] Config: /home/src/workspaces/project/tsconfig.json : { + "rootNames": [ + "/home/src/workspaces/project/src/a.ts", + "/home/src/workspaces/project/src/env/browser.ts", + "/home/src/workspaces/project/src/env/node.ts" + ], + "options": { + "module": 199, + "rootDir": "/home/src/workspaces/project/src", + "outDir": "/home/src/workspaces/project/dist", + "configFilePath": "/home/src/workspaces/project/tsconfig.json" + } +} Info seq [hh:mm:ss:mss] event: { "seq": 0, "type": "event", "event": "projectLoadingStart", "body": { - "projectName": "/tsconfig.json", - "reason": "Creating possible configured project for /tsconfig.json to open" + "projectName": "/home/src/workspaces/project/tsconfig.json", + "reason": "Creating possible configured project for /home/src/workspaces/project/tsconfig.json to open" } } -Info seq [hh:mm:ss:mss] Config: /tsconfig.json : { - "rootNames": [ - "/lib.d.ts", - "/lib.decorators.d.ts", - "/lib.decorators.legacy.d.ts", - "/src/a.ts", - "/src/env/browser.ts", - "/src/env/node.ts" - ], - "options": { - "module": 199, - "rootDir": "/src", - "outDir": "/dist", - "configFilePath": "/tsconfig.json" - } -} -Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: 1 undefined Config: /tsconfig.json WatchType: Wild card directory -Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: 1 undefined Config: /tsconfig.json WatchType: Wild card directory -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] FileWatcher:: Added:: WatchInfo: /src/a.ts 500 undefined WatchType: Closed Script info -Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /src/env/browser.ts 500 undefined WatchType: Closed Script info -Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /src/env/node.ts 500 undefined WatchType: Closed Script info -Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /tsconfig.json -Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /tsconfig.json projectStateVersion: 1 projectProgramVersion: 0 structureChanged: true structureIsReused:: Not Elapsed:: *ms -Info seq [hh:mm:ss:mss] Project '/tsconfig.json' (Configured) -Info seq [hh:mm:ss:mss] Files (6) - /lib.decorators.d.ts Text-1 lib.decorators.d.ts-Text - /lib.decorators.legacy.d.ts Text-1 lib.decorators.legacy.d.ts-Text - /lib.d.ts Text-1 lib.d.ts-Text - /src/a.ts Text-1 "import {} from \"\";" - /src/env/browser.ts Text-1 "export const isBrowser = true;" - /src/env/node.ts Text-1 "export const isBrowser = false;" +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project 1 undefined Config: /home/src/workspaces/project/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project 1 undefined Config: /home/src/workspaces/project/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/a.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/env/browser.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/env/node.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/env/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.esnext.full.d.ts 500 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Missing file +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json projectStateVersion: 1 projectProgramVersion: 0 structureChanged: true structureIsReused:: Not Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (3) + /home/src/workspaces/project/src/a.ts Text-1 "import {} from \"\";" + /home/src/workspaces/project/src/env/browser.ts Text-1 "export const isBrowser = true;" + /home/src/workspaces/project/src/env/node.ts Text-1 "export const isBrowser = false;" - lib.decorators.d.ts - Library referenced via 'decorators' from file 'lib.d.ts' - Matched by default include pattern '**/*' - lib.decorators.legacy.d.ts - Library referenced via 'decorators.legacy' from file 'lib.d.ts' - Matched by default include pattern '**/*' - lib.d.ts - Matched by default include pattern '**/*' src/a.ts Matched by default include pattern '**/*' File is ECMAScript module because 'package.json' has field "type" with value "module" @@ -123,7 +115,7 @@ Info seq [hh:mm:ss:mss] event: "type": "event", "event": "projectLoadingFinish", "body": { - "projectName": "/tsconfig.json" + "projectName": "/home/src/workspaces/project/tsconfig.json" } } Info seq [hh:mm:ss:mss] event: @@ -132,34 +124,94 @@ Info seq [hh:mm:ss:mss] event: "type": "event", "event": "configFileDiag", "body": { - "triggerFile": "/tsconfig.json", - "configFile": "/tsconfig.json", - "diagnostics": [] + "triggerFile": "/home/src/workspaces/project/tsconfig.json", + "configFile": "/home/src/workspaces/project/tsconfig.json", + "diagnostics": [ + { + "text": "File '/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts' not found.\n The file is in the program because:\n Default library for target 'esnext'", + "code": 6053, + "category": "error" + }, + { + "text": "Cannot find global type 'Array'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Boolean'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Function'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'IArguments'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Number'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Object'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'RegExp'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'String'.", + "code": 2318, + "category": "error" + } + ] } } +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined:: Result: undefined +Info seq [hh:mm:ss:mss] Creating InferredProject: /dev/null/inferredProject1*, currentDirectory: /home/src/workspaces/project +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/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: /home/src/tslibs/TS/Lib/lib.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.decorators.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /dev/null/inferredProject1* projectStateVersion: 1 projectProgramVersion: 0 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 - /tsconfig.json SVC-1-0 "{\n \"compilerOptions\": {\n \"module\": \"nodenext\",\n \"rootDir\": \"src\",\n \"outDir\": \"dist\"\n }\n}" + /home/src/tslibs/TS/Lib/lib.d.ts Text-1 lib.d.ts-Text + /home/src/tslibs/TS/Lib/lib.decorators.d.ts Text-1 lib.decorators.d.ts-Text + /home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts Text-1 lib.decorators.legacy.d.ts-Text + /home/src/workspaces/project/tsconfig.json SVC-1-0 "{\n \"compilerOptions\": {\n \"module\": \"nodenext\",\n \"rootDir\": \"src\",\n \"outDir\": \"dist\"\n }\n}" - lib.d.ts + ../../tslibs/TS/Lib/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' + ../../tslibs/TS/Lib/lib.decorators.d.ts + Library referenced via 'decorators' from file '../../tslibs/TS/Lib/lib.d.ts' + ../../tslibs/TS/Lib/lib.decorators.legacy.d.ts + Library referenced via 'decorators.legacy' from file '../../tslibs/TS/Lib/lib.d.ts' tsconfig.json Root file specified for compilation Info seq [hh:mm:ss:mss] ----------------------------------------------- -Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /package.json 250 undefined WatchType: package.json file -Info seq [hh:mm:ss:mss] Project '/tsconfig.json' (Configured) -Info seq [hh:mm:ss:mss] Files (6) +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/package.json 250 undefined WatchType: package.json file +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (3) Info seq [hh:mm:ss:mss] ----------------------------------------------- Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred) @@ -167,69 +219,97 @@ 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: /tsconfig.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] FileName: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "open", + "request_seq": 0, + "success": true, + "performanceData": { + "updateGraphDurationMs": * + } + } After Request watchedFiles:: -/lib.d.ts: *new* +/home/src/tslibs/TS/Lib/lib.d.ts: *new* + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.d.ts: *new* {"pollingInterval":500} -/lib.decorators.d.ts: *new* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts: *new* {"pollingInterval":500} -/lib.decorators.legacy.d.ts: *new* +/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts: *new* {"pollingInterval":500} -/package.json: *new* +/home/src/workspaces/project/jsconfig.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/package.json: *new* + {"pollingInterval":2000} {"pollingInterval":250} -/src/a.ts: *new* +/home/src/workspaces/project/src/a.ts: *new* {"pollingInterval":500} -/src/env/browser.ts: *new* +/home/src/workspaces/project/src/env/browser.ts: *new* {"pollingInterval":500} -/src/env/node.ts: *new* +/home/src/workspaces/project/src/env/node.ts: *new* {"pollingInterval":500} -/tsconfig.json: *new* +/home/src/workspaces/project/src/env/package.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/src/package.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/tsconfig.json: *new* {"pollingInterval":2000} watchedDirectoriesRecursive:: -: *new* +/home/src/workspaces/node_modules: *new* + {} +/home/src/workspaces/node_modules/@types: *new* + {} + {} +/home/src/workspaces/project: *new* + {} +/home/src/workspaces/project/node_modules: *new* + {} +/home/src/workspaces/project/node_modules/@types: *new* + {} {} Projects:: /dev/null/inferredProject1* (Inferred) *new* projectStateVersion: 1 projectProgramVersion: 1 -/tsconfig.json (Configured) *new* + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *new* projectStateVersion: 1 projectProgramVersion: 1 noOpenRef: true ScriptInfos:: -/lib.d.ts *new* +/home/src/tslibs/TS/Lib/lib.d.ts *new* version: Text-1 - containingProjects: 2 - /tsconfig.json + containingProjects: 1 /dev/null/inferredProject1* -/lib.decorators.d.ts *new* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts *new* version: Text-1 - containingProjects: 2 - /tsconfig.json + containingProjects: 1 /dev/null/inferredProject1* -/lib.decorators.legacy.d.ts *new* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts *new* version: Text-1 - containingProjects: 2 - /tsconfig.json + containingProjects: 1 /dev/null/inferredProject1* -/src/a.ts *new* +/home/src/workspaces/project/src/a.ts *new* version: Text-1 containingProjects: 1 - /tsconfig.json -/src/env/browser.ts *new* + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/env/browser.ts *new* version: Text-1 containingProjects: 1 - /tsconfig.json -/src/env/node.ts *new* + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/env/node.ts *new* version: Text-1 containingProjects: 1 - /tsconfig.json -/tsconfig.json (Open) *new* + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) *new* version: SVC-1-0 containingProjects: 1 /dev/null/inferredProject1* *default* @@ -239,15 +319,14 @@ Info seq [hh:mm:ss:mss] request: "seq": 1, "type": "request", "arguments": { - "file": "/src/a.ts" + "file": "/home/src/workspaces/project/src/a.ts" }, "command": "open" } -Info seq [hh:mm:ss:mss] FileWatcher:: Close:: WatchInfo: /src/a.ts 500 undefined WatchType: Closed Script info -Info seq [hh:mm:ss:mss] Search path: /src -Info seq [hh:mm:ss:mss] For info: /src/a.ts :: Config file name: /tsconfig.json -Info seq [hh:mm:ss:mss] Project '/tsconfig.json' (Configured) -Info seq [hh:mm:ss:mss] Files (6) +Info seq [hh:mm:ss:mss] FileWatcher:: Close:: WatchInfo: /home/src/workspaces/project/src/a.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/src/a.ts ProjectRootPath: undefined:: Result: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (3) Info seq [hh:mm:ss:mss] ----------------------------------------------- Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred) @@ -255,74 +334,99 @@ 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: /tsconfig.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] FileName: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* -Info seq [hh:mm:ss:mss] FileName: /src/a.ts ProjectRootPath: undefined -Info seq [hh:mm:ss:mss] Projects: /tsconfig.json +Info seq [hh:mm:ss:mss] FileName: /home/src/workspaces/project/src/a.ts ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "open", + "request_seq": 1, + "success": true + } After Request watchedFiles:: -/lib.d.ts: +/home/src/tslibs/TS/Lib/lib.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.d.ts: {"pollingInterval":500} -/lib.decorators.d.ts: +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts: {"pollingInterval":500} -/lib.decorators.legacy.d.ts: +/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts: {"pollingInterval":500} -/package.json: +/home/src/workspaces/project/jsconfig.json: + {"pollingInterval":2000} +/home/src/workspaces/project/package.json: + {"pollingInterval":2000} {"pollingInterval":250} -/src/env/browser.ts: +/home/src/workspaces/project/src/env/browser.ts: {"pollingInterval":500} -/src/env/node.ts: +/home/src/workspaces/project/src/env/node.ts: {"pollingInterval":500} -/tsconfig.json: +/home/src/workspaces/project/src/env/package.json: + {"pollingInterval":2000} +/home/src/workspaces/project/src/package.json: + {"pollingInterval":2000} +/home/src/workspaces/project/tsconfig.json: {"pollingInterval":2000} watchedFiles *deleted*:: -/src/a.ts: +/home/src/workspaces/project/src/a.ts: {"pollingInterval":500} watchedDirectoriesRecursive:: -: +/home/src/workspaces/node_modules: + {} +/home/src/workspaces/node_modules/@types: + {} + {} +/home/src/workspaces/project: + {} +/home/src/workspaces/project/node_modules: + {} +/home/src/workspaces/project/node_modules/@types: + {} {} Projects:: /dev/null/inferredProject1* (Inferred) projectStateVersion: 1 projectProgramVersion: 1 -/tsconfig.json (Configured) *changed* + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *changed* projectStateVersion: 1 projectProgramVersion: 1 noOpenRef: false *changed* ScriptInfos:: -/lib.d.ts +/home/src/tslibs/TS/Lib/lib.d.ts version: Text-1 - containingProjects: 2 - /tsconfig.json + containingProjects: 1 /dev/null/inferredProject1* -/lib.decorators.d.ts +/home/src/tslibs/TS/Lib/lib.decorators.d.ts version: Text-1 - containingProjects: 2 - /tsconfig.json + containingProjects: 1 /dev/null/inferredProject1* -/lib.decorators.legacy.d.ts +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts version: Text-1 - containingProjects: 2 - /tsconfig.json + containingProjects: 1 /dev/null/inferredProject1* -/src/a.ts (Open) *changed* +/home/src/workspaces/project/src/a.ts (Open) *changed* open: true *changed* version: Text-1 containingProjects: 1 - /tsconfig.json *default* -/src/env/browser.ts + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/env/browser.ts version: Text-1 containingProjects: 1 - /tsconfig.json -/src/env/node.ts + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/env/node.ts version: Text-1 containingProjects: 1 - /tsconfig.json -/tsconfig.json (Open) + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) version: SVC-1-0 containingProjects: 1 /dev/null/inferredProject1* *default* @@ -349,7 +453,7 @@ Info seq [hh:mm:ss:mss] request: "seq": 3, "type": "request", "arguments": { - "file": "/src/a.ts", + "file": "/home/src/workspaces/project/src/a.ts", "line": 1, "offset": 17 }, @@ -373,6 +477,7 @@ Info seq [hh:mm:ss:mss] response: "kindModifiers": "", "sortText": "11" } - ] + ], + "defaultCommitCharacters": [] } } \ No newline at end of file diff --git a/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap2.js b/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap2.js index 2393185c4d001..46de407066c78 100644 --- a/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap2.js +++ b/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap2.js @@ -1,15 +1,17 @@ -currentDirectory:: / useCaseSensitiveFileNames: false -Info seq [hh:mm:ss:mss] Provided types map file "/typesMap.json" doesn't exist -//// [/lib.d.ts] +Info seq [hh:mm:ss:mss] currentDirectory:: /home/src/Vscode/Projects/bin useCaseSensitiveFileNames:: false +Info seq [hh:mm:ss:mss] libs Location:: /home/src/tslibs/TS/Lib +Info seq [hh:mm:ss:mss] globalTypingsCacheLocation:: /home/src/Library/Caches/typescript +Info seq [hh:mm:ss:mss] Provided types map file "/home/src/tslibs/TS/Lib/typesMap.json" doesn't exist +//// [/home/src/tslibs/TS/Lib/lib.d.ts] lib.d.ts-Text -//// [/lib.decorators.d.ts] +//// [/home/src/tslibs/TS/Lib/lib.decorators.d.ts] lib.decorators.d.ts-Text -//// [/lib.decorators.legacy.d.ts] +//// [/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts] lib.decorators.legacy.d.ts-Text -//// [/package.json] +//// [/home/src/workspaces/project/package.json] { "type": "module", "imports": { @@ -17,14 +19,14 @@ lib.decorators.legacy.d.ts-Text } } -//// [/src/a.ts] +//// [/home/src/workspaces/project/src/a.ts] import {} from ""; import {} from "#internal/"; -//// [/src/internal/foo.ts] +//// [/home/src/workspaces/project/src/internal/foo.ts] export function something(name: string) {} -//// [/tsconfig.json] +//// [/home/src/workspaces/project/tsconfig.json] { "compilerOptions": { "module": "nodenext", @@ -39,65 +41,61 @@ Info seq [hh:mm:ss:mss] request: "seq": 0, "type": "request", "arguments": { - "file": "/tsconfig.json" + "file": "/home/src/workspaces/project/tsconfig.json" }, "command": "open" } -Info seq [hh:mm:ss:mss] Search path: / -Info seq [hh:mm:ss:mss] For info: /tsconfig.json :: Config file name: /tsconfig.json -Info seq [hh:mm:ss:mss] Creating configuration project /tsconfig.json -Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /tsconfig.json 2000 undefined Project: /tsconfig.json WatchType: Config file +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined:: Result: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] Creating ConfiguredProject: /home/src/workspaces/project/tsconfig.json, currentDirectory: /home/src/workspaces/project +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/tsconfig.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Config file +Info seq [hh:mm:ss:mss] Config: /home/src/workspaces/project/tsconfig.json : { + "rootNames": [ + "/home/src/workspaces/project/src/a.ts", + "/home/src/workspaces/project/src/internal/foo.ts" + ], + "options": { + "module": 199, + "rootDir": "/home/src/workspaces/project/src", + "outDir": "/home/src/workspaces/project/dist", + "configFilePath": "/home/src/workspaces/project/tsconfig.json" + } +} Info seq [hh:mm:ss:mss] event: { "seq": 0, "type": "event", "event": "projectLoadingStart", "body": { - "projectName": "/tsconfig.json", - "reason": "Creating possible configured project for /tsconfig.json to open" + "projectName": "/home/src/workspaces/project/tsconfig.json", + "reason": "Creating possible configured project for /home/src/workspaces/project/tsconfig.json to open" } } -Info seq [hh:mm:ss:mss] Config: /tsconfig.json : { - "rootNames": [ - "/lib.d.ts", - "/lib.decorators.d.ts", - "/lib.decorators.legacy.d.ts", - "/src/a.ts", - "/src/internal/foo.ts" - ], - "options": { - "module": 199, - "rootDir": "/src", - "outDir": "/dist", - "configFilePath": "/tsconfig.json" - } -} -Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: 1 undefined Config: /tsconfig.json WatchType: Wild card directory -Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: 1 undefined Config: /tsconfig.json WatchType: Wild card directory -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] FileWatcher:: Added:: WatchInfo: /src/a.ts 500 undefined WatchType: Closed Script info -Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /src/internal/foo.ts 500 undefined WatchType: Closed Script info -Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /tsconfig.json -Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /tsconfig.json projectStateVersion: 1 projectProgramVersion: 0 structureChanged: true structureIsReused:: Not Elapsed:: *ms -Info seq [hh:mm:ss:mss] Project '/tsconfig.json' (Configured) -Info seq [hh:mm:ss:mss] Files (5) - /lib.decorators.d.ts Text-1 lib.decorators.d.ts-Text - /lib.decorators.legacy.d.ts Text-1 lib.decorators.legacy.d.ts-Text - /lib.d.ts Text-1 lib.d.ts-Text - /src/a.ts Text-1 "import {} from \"\";\nimport {} from \"#internal/\";" - /src/internal/foo.ts Text-1 "export function something(name: string) {}" +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project 1 undefined Config: /home/src/workspaces/project/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project 1 undefined Config: /home/src/workspaces/project/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/a.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/internal/foo.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/internal/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.esnext.full.d.ts 500 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Missing file +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json projectStateVersion: 1 projectProgramVersion: 0 structureChanged: true structureIsReused:: Not Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (2) + /home/src/workspaces/project/src/a.ts Text-1 "import {} from \"\";\nimport {} from \"#internal/\";" + /home/src/workspaces/project/src/internal/foo.ts Text-1 "export function something(name: string) {}" - lib.decorators.d.ts - Library referenced via 'decorators' from file 'lib.d.ts' - Matched by default include pattern '**/*' - lib.decorators.legacy.d.ts - Library referenced via 'decorators.legacy' from file 'lib.d.ts' - Matched by default include pattern '**/*' - lib.d.ts - Matched by default include pattern '**/*' src/a.ts Matched by default include pattern '**/*' File is ECMAScript module because 'package.json' has field "type" with value "module" @@ -112,7 +110,7 @@ Info seq [hh:mm:ss:mss] event: "type": "event", "event": "projectLoadingFinish", "body": { - "projectName": "/tsconfig.json" + "projectName": "/home/src/workspaces/project/tsconfig.json" } } Info seq [hh:mm:ss:mss] event: @@ -121,34 +119,94 @@ Info seq [hh:mm:ss:mss] event: "type": "event", "event": "configFileDiag", "body": { - "triggerFile": "/tsconfig.json", - "configFile": "/tsconfig.json", - "diagnostics": [] + "triggerFile": "/home/src/workspaces/project/tsconfig.json", + "configFile": "/home/src/workspaces/project/tsconfig.json", + "diagnostics": [ + { + "text": "File '/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts' not found.\n The file is in the program because:\n Default library for target 'esnext'", + "code": 6053, + "category": "error" + }, + { + "text": "Cannot find global type 'Array'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Boolean'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Function'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'IArguments'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Number'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Object'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'RegExp'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'String'.", + "code": 2318, + "category": "error" + } + ] } } +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined:: Result: undefined +Info seq [hh:mm:ss:mss] Creating InferredProject: /dev/null/inferredProject1*, currentDirectory: /home/src/workspaces/project +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/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: /home/src/tslibs/TS/Lib/lib.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.decorators.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /dev/null/inferredProject1* projectStateVersion: 1 projectProgramVersion: 0 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 - /tsconfig.json SVC-1-0 "{\n \"compilerOptions\": {\n \"module\": \"nodenext\",\n \"rootDir\": \"src\",\n \"outDir\": \"dist\"\n }\n}" + /home/src/tslibs/TS/Lib/lib.d.ts Text-1 lib.d.ts-Text + /home/src/tslibs/TS/Lib/lib.decorators.d.ts Text-1 lib.decorators.d.ts-Text + /home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts Text-1 lib.decorators.legacy.d.ts-Text + /home/src/workspaces/project/tsconfig.json SVC-1-0 "{\n \"compilerOptions\": {\n \"module\": \"nodenext\",\n \"rootDir\": \"src\",\n \"outDir\": \"dist\"\n }\n}" - lib.d.ts + ../../tslibs/TS/Lib/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' + ../../tslibs/TS/Lib/lib.decorators.d.ts + Library referenced via 'decorators' from file '../../tslibs/TS/Lib/lib.d.ts' + ../../tslibs/TS/Lib/lib.decorators.legacy.d.ts + Library referenced via 'decorators.legacy' from file '../../tslibs/TS/Lib/lib.d.ts' tsconfig.json Root file specified for compilation Info seq [hh:mm:ss:mss] ----------------------------------------------- -Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /package.json 250 undefined WatchType: package.json file -Info seq [hh:mm:ss:mss] Project '/tsconfig.json' (Configured) -Info seq [hh:mm:ss:mss] Files (5) +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/package.json 250 undefined WatchType: package.json file +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (2) Info seq [hh:mm:ss:mss] ----------------------------------------------- Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred) @@ -156,63 +214,95 @@ 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: /tsconfig.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] FileName: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "open", + "request_seq": 0, + "success": true, + "performanceData": { + "updateGraphDurationMs": * + } + } After Request watchedFiles:: -/lib.d.ts: *new* +/home/src/tslibs/TS/Lib/lib.d.ts: *new* + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.d.ts: *new* {"pollingInterval":500} -/lib.decorators.d.ts: *new* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts: *new* {"pollingInterval":500} -/lib.decorators.legacy.d.ts: *new* +/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts: *new* {"pollingInterval":500} -/package.json: *new* +/home/src/workspaces/project/jsconfig.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/package.json: *new* + {"pollingInterval":2000} {"pollingInterval":250} -/src/a.ts: *new* +/home/src/workspaces/project/src/a.ts: *new* {"pollingInterval":500} -/src/internal/foo.ts: *new* +/home/src/workspaces/project/src/internal/foo.ts: *new* {"pollingInterval":500} -/tsconfig.json: *new* +/home/src/workspaces/project/src/internal/package.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/src/package.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/tsconfig.json: *new* {"pollingInterval":2000} watchedDirectoriesRecursive:: -: *new* +/home/src/workspaces/node_modules: *new* + {} + {} +/home/src/workspaces/node_modules/@types: *new* + {} + {} +/home/src/workspaces/project: *new* + {} +/home/src/workspaces/project/node_modules: *new* + {} + {} +/home/src/workspaces/project/node_modules/@types: *new* + {} + {} +/home/src/workspaces/project/src: *new* {} Projects:: /dev/null/inferredProject1* (Inferred) *new* projectStateVersion: 1 projectProgramVersion: 1 -/tsconfig.json (Configured) *new* + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *new* projectStateVersion: 1 projectProgramVersion: 1 noOpenRef: true ScriptInfos:: -/lib.d.ts *new* +/home/src/tslibs/TS/Lib/lib.d.ts *new* version: Text-1 - containingProjects: 2 - /tsconfig.json + containingProjects: 1 /dev/null/inferredProject1* -/lib.decorators.d.ts *new* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts *new* version: Text-1 - containingProjects: 2 - /tsconfig.json + containingProjects: 1 /dev/null/inferredProject1* -/lib.decorators.legacy.d.ts *new* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts *new* version: Text-1 - containingProjects: 2 - /tsconfig.json + containingProjects: 1 /dev/null/inferredProject1* -/src/a.ts *new* +/home/src/workspaces/project/src/a.ts *new* version: Text-1 containingProjects: 1 - /tsconfig.json -/src/internal/foo.ts *new* + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/internal/foo.ts *new* version: Text-1 containingProjects: 1 - /tsconfig.json -/tsconfig.json (Open) *new* + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) *new* version: SVC-1-0 containingProjects: 1 /dev/null/inferredProject1* *default* @@ -222,15 +312,14 @@ Info seq [hh:mm:ss:mss] request: "seq": 1, "type": "request", "arguments": { - "file": "/src/a.ts" + "file": "/home/src/workspaces/project/src/a.ts" }, "command": "open" } -Info seq [hh:mm:ss:mss] FileWatcher:: Close:: WatchInfo: /src/a.ts 500 undefined WatchType: Closed Script info -Info seq [hh:mm:ss:mss] Search path: /src -Info seq [hh:mm:ss:mss] For info: /src/a.ts :: Config file name: /tsconfig.json -Info seq [hh:mm:ss:mss] Project '/tsconfig.json' (Configured) -Info seq [hh:mm:ss:mss] Files (5) +Info seq [hh:mm:ss:mss] FileWatcher:: Close:: WatchInfo: /home/src/workspaces/project/src/a.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/src/a.ts ProjectRootPath: undefined:: Result: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (2) Info seq [hh:mm:ss:mss] ----------------------------------------------- Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred) @@ -238,68 +327,97 @@ 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: /tsconfig.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] FileName: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* -Info seq [hh:mm:ss:mss] FileName: /src/a.ts ProjectRootPath: undefined -Info seq [hh:mm:ss:mss] Projects: /tsconfig.json +Info seq [hh:mm:ss:mss] FileName: /home/src/workspaces/project/src/a.ts ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "open", + "request_seq": 1, + "success": true + } After Request watchedFiles:: -/lib.d.ts: +/home/src/tslibs/TS/Lib/lib.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.d.ts: {"pollingInterval":500} -/lib.decorators.d.ts: +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts: {"pollingInterval":500} -/lib.decorators.legacy.d.ts: +/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts: {"pollingInterval":500} -/package.json: +/home/src/workspaces/project/jsconfig.json: + {"pollingInterval":2000} +/home/src/workspaces/project/package.json: + {"pollingInterval":2000} {"pollingInterval":250} -/src/internal/foo.ts: +/home/src/workspaces/project/src/internal/foo.ts: {"pollingInterval":500} -/tsconfig.json: +/home/src/workspaces/project/src/internal/package.json: + {"pollingInterval":2000} +/home/src/workspaces/project/src/package.json: + {"pollingInterval":2000} +/home/src/workspaces/project/tsconfig.json: {"pollingInterval":2000} watchedFiles *deleted*:: -/src/a.ts: +/home/src/workspaces/project/src/a.ts: {"pollingInterval":500} watchedDirectoriesRecursive:: -: +/home/src/workspaces/node_modules: + {} + {} +/home/src/workspaces/node_modules/@types: + {} + {} +/home/src/workspaces/project: + {} +/home/src/workspaces/project/node_modules: + {} + {} +/home/src/workspaces/project/node_modules/@types: + {} + {} +/home/src/workspaces/project/src: {} Projects:: /dev/null/inferredProject1* (Inferred) projectStateVersion: 1 projectProgramVersion: 1 -/tsconfig.json (Configured) *changed* + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *changed* projectStateVersion: 1 projectProgramVersion: 1 noOpenRef: false *changed* ScriptInfos:: -/lib.d.ts +/home/src/tslibs/TS/Lib/lib.d.ts version: Text-1 - containingProjects: 2 - /tsconfig.json + containingProjects: 1 /dev/null/inferredProject1* -/lib.decorators.d.ts +/home/src/tslibs/TS/Lib/lib.decorators.d.ts version: Text-1 - containingProjects: 2 - /tsconfig.json + containingProjects: 1 /dev/null/inferredProject1* -/lib.decorators.legacy.d.ts +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts version: Text-1 - containingProjects: 2 - /tsconfig.json + containingProjects: 1 /dev/null/inferredProject1* -/src/a.ts (Open) *changed* +/home/src/workspaces/project/src/a.ts (Open) *changed* open: true *changed* version: Text-1 containingProjects: 1 - /tsconfig.json *default* -/src/internal/foo.ts + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/internal/foo.ts version: Text-1 containingProjects: 1 - /tsconfig.json -/tsconfig.json (Open) + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) version: SVC-1-0 containingProjects: 1 /dev/null/inferredProject1* *default* @@ -326,7 +444,7 @@ Info seq [hh:mm:ss:mss] request: "seq": 3, "type": "request", "arguments": { - "file": "/src/a.ts", + "file": "/home/src/workspaces/project/src/a.ts", "line": 1, "offset": 17 }, @@ -350,7 +468,8 @@ Info seq [hh:mm:ss:mss] response: "kindModifiers": "", "sortText": "11" } - ] + ], + "defaultCommitCharacters": [] } } Info seq [hh:mm:ss:mss] request: @@ -375,7 +494,7 @@ Info seq [hh:mm:ss:mss] request: "seq": 5, "type": "request", "arguments": { - "file": "/src/a.ts", + "file": "/home/src/workspaces/project/src/a.ts", "line": 2, "offset": 27 }, @@ -399,6 +518,7 @@ Info seq [hh:mm:ss:mss] response: "kindModifiers": ".js", "sortText": "11" } - ] + ], + "defaultCommitCharacters": [] } } \ No newline at end of file diff --git a/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap3.js b/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap3.js index 714d7ae2e846f..9b51b58e1543a 100644 --- a/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap3.js +++ b/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap3.js @@ -1,15 +1,17 @@ -currentDirectory:: / useCaseSensitiveFileNames: false -Info seq [hh:mm:ss:mss] Provided types map file "/typesMap.json" doesn't exist -//// [/lib.d.ts] +Info seq [hh:mm:ss:mss] currentDirectory:: /home/src/Vscode/Projects/bin useCaseSensitiveFileNames:: false +Info seq [hh:mm:ss:mss] libs Location:: /home/src/tslibs/TS/Lib +Info seq [hh:mm:ss:mss] globalTypingsCacheLocation:: /home/src/Library/Caches/typescript +Info seq [hh:mm:ss:mss] Provided types map file "/home/src/tslibs/TS/Lib/typesMap.json" doesn't exist +//// [/home/src/tslibs/TS/Lib/lib.d.ts] lib.d.ts-Text -//// [/lib.decorators.d.ts] +//// [/home/src/tslibs/TS/Lib/lib.decorators.d.ts] lib.decorators.d.ts-Text -//// [/lib.decorators.legacy.d.ts] +//// [/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts] lib.decorators.legacy.d.ts-Text -//// [/package.json] +//// [/home/src/workspaces/project/package.json] { "type": "module", "imports": { @@ -17,14 +19,14 @@ lib.decorators.legacy.d.ts-Text } } -//// [/src/a.ts] +//// [/home/src/workspaces/project/src/a.ts] import {} from ""; import {} from "#internal/"; -//// [/src/internal/foo.ts] +//// [/home/src/workspaces/project/src/internal/foo.ts] export function something(name: string) {} -//// [/tsconfig.json] +//// [/home/src/workspaces/project/tsconfig.json] { "compilerOptions": { "module": "nodenext", @@ -39,65 +41,61 @@ Info seq [hh:mm:ss:mss] request: "seq": 0, "type": "request", "arguments": { - "file": "/tsconfig.json" + "file": "/home/src/workspaces/project/tsconfig.json" }, "command": "open" } -Info seq [hh:mm:ss:mss] Search path: / -Info seq [hh:mm:ss:mss] For info: /tsconfig.json :: Config file name: /tsconfig.json -Info seq [hh:mm:ss:mss] Creating configuration project /tsconfig.json -Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /tsconfig.json 2000 undefined Project: /tsconfig.json WatchType: Config file +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined:: Result: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] Creating ConfiguredProject: /home/src/workspaces/project/tsconfig.json, currentDirectory: /home/src/workspaces/project +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/tsconfig.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Config file +Info seq [hh:mm:ss:mss] Config: /home/src/workspaces/project/tsconfig.json : { + "rootNames": [ + "/home/src/workspaces/project/src/a.ts", + "/home/src/workspaces/project/src/internal/foo.ts" + ], + "options": { + "module": 199, + "rootDir": "/home/src/workspaces/project/src", + "outDir": "/home/src/workspaces/project/dist", + "configFilePath": "/home/src/workspaces/project/tsconfig.json" + } +} Info seq [hh:mm:ss:mss] event: { "seq": 0, "type": "event", "event": "projectLoadingStart", "body": { - "projectName": "/tsconfig.json", - "reason": "Creating possible configured project for /tsconfig.json to open" + "projectName": "/home/src/workspaces/project/tsconfig.json", + "reason": "Creating possible configured project for /home/src/workspaces/project/tsconfig.json to open" } } -Info seq [hh:mm:ss:mss] Config: /tsconfig.json : { - "rootNames": [ - "/lib.d.ts", - "/lib.decorators.d.ts", - "/lib.decorators.legacy.d.ts", - "/src/a.ts", - "/src/internal/foo.ts" - ], - "options": { - "module": 199, - "rootDir": "/src", - "outDir": "/dist", - "configFilePath": "/tsconfig.json" - } -} -Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: 1 undefined Config: /tsconfig.json WatchType: Wild card directory -Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: 1 undefined Config: /tsconfig.json WatchType: Wild card directory -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] FileWatcher:: Added:: WatchInfo: /src/a.ts 500 undefined WatchType: Closed Script info -Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /src/internal/foo.ts 500 undefined WatchType: Closed Script info -Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /tsconfig.json -Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /tsconfig.json projectStateVersion: 1 projectProgramVersion: 0 structureChanged: true structureIsReused:: Not Elapsed:: *ms -Info seq [hh:mm:ss:mss] Project '/tsconfig.json' (Configured) -Info seq [hh:mm:ss:mss] Files (5) - /lib.decorators.d.ts Text-1 lib.decorators.d.ts-Text - /lib.decorators.legacy.d.ts Text-1 lib.decorators.legacy.d.ts-Text - /lib.d.ts Text-1 lib.d.ts-Text - /src/a.ts Text-1 "import {} from \"\";\nimport {} from \"#internal/\";" - /src/internal/foo.ts Text-1 "export function something(name: string) {}" +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project 1 undefined Config: /home/src/workspaces/project/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project 1 undefined Config: /home/src/workspaces/project/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/a.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/internal/foo.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/internal/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.esnext.full.d.ts 500 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Missing file +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json projectStateVersion: 1 projectProgramVersion: 0 structureChanged: true structureIsReused:: Not Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (2) + /home/src/workspaces/project/src/a.ts Text-1 "import {} from \"\";\nimport {} from \"#internal/\";" + /home/src/workspaces/project/src/internal/foo.ts Text-1 "export function something(name: string) {}" - lib.decorators.d.ts - Library referenced via 'decorators' from file 'lib.d.ts' - Matched by default include pattern '**/*' - lib.decorators.legacy.d.ts - Library referenced via 'decorators.legacy' from file 'lib.d.ts' - Matched by default include pattern '**/*' - lib.d.ts - Matched by default include pattern '**/*' src/a.ts Matched by default include pattern '**/*' File is ECMAScript module because 'package.json' has field "type" with value "module" @@ -112,7 +110,7 @@ Info seq [hh:mm:ss:mss] event: "type": "event", "event": "projectLoadingFinish", "body": { - "projectName": "/tsconfig.json" + "projectName": "/home/src/workspaces/project/tsconfig.json" } } Info seq [hh:mm:ss:mss] event: @@ -121,34 +119,94 @@ Info seq [hh:mm:ss:mss] event: "type": "event", "event": "configFileDiag", "body": { - "triggerFile": "/tsconfig.json", - "configFile": "/tsconfig.json", - "diagnostics": [] + "triggerFile": "/home/src/workspaces/project/tsconfig.json", + "configFile": "/home/src/workspaces/project/tsconfig.json", + "diagnostics": [ + { + "text": "File '/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts' not found.\n The file is in the program because:\n Default library for target 'esnext'", + "code": 6053, + "category": "error" + }, + { + "text": "Cannot find global type 'Array'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Boolean'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Function'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'IArguments'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Number'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Object'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'RegExp'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'String'.", + "code": 2318, + "category": "error" + } + ] } } +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined:: Result: undefined +Info seq [hh:mm:ss:mss] Creating InferredProject: /dev/null/inferredProject1*, currentDirectory: /home/src/workspaces/project +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/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: /home/src/tslibs/TS/Lib/lib.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.decorators.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /dev/null/inferredProject1* projectStateVersion: 1 projectProgramVersion: 0 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 - /tsconfig.json SVC-1-0 "{\n \"compilerOptions\": {\n \"module\": \"nodenext\",\n \"rootDir\": \"src\",\n \"outDir\": \"dist\"\n }\n}" + /home/src/tslibs/TS/Lib/lib.d.ts Text-1 lib.d.ts-Text + /home/src/tslibs/TS/Lib/lib.decorators.d.ts Text-1 lib.decorators.d.ts-Text + /home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts Text-1 lib.decorators.legacy.d.ts-Text + /home/src/workspaces/project/tsconfig.json SVC-1-0 "{\n \"compilerOptions\": {\n \"module\": \"nodenext\",\n \"rootDir\": \"src\",\n \"outDir\": \"dist\"\n }\n}" - lib.d.ts + ../../tslibs/TS/Lib/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' + ../../tslibs/TS/Lib/lib.decorators.d.ts + Library referenced via 'decorators' from file '../../tslibs/TS/Lib/lib.d.ts' + ../../tslibs/TS/Lib/lib.decorators.legacy.d.ts + Library referenced via 'decorators.legacy' from file '../../tslibs/TS/Lib/lib.d.ts' tsconfig.json Root file specified for compilation Info seq [hh:mm:ss:mss] ----------------------------------------------- -Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /package.json 250 undefined WatchType: package.json file -Info seq [hh:mm:ss:mss] Project '/tsconfig.json' (Configured) -Info seq [hh:mm:ss:mss] Files (5) +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/package.json 250 undefined WatchType: package.json file +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (2) Info seq [hh:mm:ss:mss] ----------------------------------------------- Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred) @@ -156,63 +214,95 @@ 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: /tsconfig.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] FileName: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "open", + "request_seq": 0, + "success": true, + "performanceData": { + "updateGraphDurationMs": * + } + } After Request watchedFiles:: -/lib.d.ts: *new* +/home/src/tslibs/TS/Lib/lib.d.ts: *new* + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.d.ts: *new* {"pollingInterval":500} -/lib.decorators.d.ts: *new* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts: *new* {"pollingInterval":500} -/lib.decorators.legacy.d.ts: *new* +/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts: *new* {"pollingInterval":500} -/package.json: *new* +/home/src/workspaces/project/jsconfig.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/package.json: *new* + {"pollingInterval":2000} {"pollingInterval":250} -/src/a.ts: *new* +/home/src/workspaces/project/src/a.ts: *new* {"pollingInterval":500} -/src/internal/foo.ts: *new* +/home/src/workspaces/project/src/internal/foo.ts: *new* {"pollingInterval":500} -/tsconfig.json: *new* +/home/src/workspaces/project/src/internal/package.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/src/package.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/tsconfig.json: *new* {"pollingInterval":2000} watchedDirectoriesRecursive:: -: *new* +/home/src/workspaces/node_modules: *new* + {} + {} +/home/src/workspaces/node_modules/@types: *new* + {} + {} +/home/src/workspaces/project: *new* + {} +/home/src/workspaces/project/node_modules: *new* + {} + {} +/home/src/workspaces/project/node_modules/@types: *new* + {} + {} +/home/src/workspaces/project/src: *new* {} Projects:: /dev/null/inferredProject1* (Inferred) *new* projectStateVersion: 1 projectProgramVersion: 1 -/tsconfig.json (Configured) *new* + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *new* projectStateVersion: 1 projectProgramVersion: 1 noOpenRef: true ScriptInfos:: -/lib.d.ts *new* +/home/src/tslibs/TS/Lib/lib.d.ts *new* version: Text-1 - containingProjects: 2 - /tsconfig.json + containingProjects: 1 /dev/null/inferredProject1* -/lib.decorators.d.ts *new* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts *new* version: Text-1 - containingProjects: 2 - /tsconfig.json + containingProjects: 1 /dev/null/inferredProject1* -/lib.decorators.legacy.d.ts *new* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts *new* version: Text-1 - containingProjects: 2 - /tsconfig.json + containingProjects: 1 /dev/null/inferredProject1* -/src/a.ts *new* +/home/src/workspaces/project/src/a.ts *new* version: Text-1 containingProjects: 1 - /tsconfig.json -/src/internal/foo.ts *new* + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/internal/foo.ts *new* version: Text-1 containingProjects: 1 - /tsconfig.json -/tsconfig.json (Open) *new* + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) *new* version: SVC-1-0 containingProjects: 1 /dev/null/inferredProject1* *default* @@ -222,15 +312,14 @@ Info seq [hh:mm:ss:mss] request: "seq": 1, "type": "request", "arguments": { - "file": "/src/a.ts" + "file": "/home/src/workspaces/project/src/a.ts" }, "command": "open" } -Info seq [hh:mm:ss:mss] FileWatcher:: Close:: WatchInfo: /src/a.ts 500 undefined WatchType: Closed Script info -Info seq [hh:mm:ss:mss] Search path: /src -Info seq [hh:mm:ss:mss] For info: /src/a.ts :: Config file name: /tsconfig.json -Info seq [hh:mm:ss:mss] Project '/tsconfig.json' (Configured) -Info seq [hh:mm:ss:mss] Files (5) +Info seq [hh:mm:ss:mss] FileWatcher:: Close:: WatchInfo: /home/src/workspaces/project/src/a.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/src/a.ts ProjectRootPath: undefined:: Result: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (2) Info seq [hh:mm:ss:mss] ----------------------------------------------- Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred) @@ -238,68 +327,97 @@ 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: /tsconfig.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] FileName: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* -Info seq [hh:mm:ss:mss] FileName: /src/a.ts ProjectRootPath: undefined -Info seq [hh:mm:ss:mss] Projects: /tsconfig.json +Info seq [hh:mm:ss:mss] FileName: /home/src/workspaces/project/src/a.ts ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "open", + "request_seq": 1, + "success": true + } After Request watchedFiles:: -/lib.d.ts: +/home/src/tslibs/TS/Lib/lib.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.d.ts: {"pollingInterval":500} -/lib.decorators.d.ts: +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts: {"pollingInterval":500} -/lib.decorators.legacy.d.ts: +/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts: {"pollingInterval":500} -/package.json: +/home/src/workspaces/project/jsconfig.json: + {"pollingInterval":2000} +/home/src/workspaces/project/package.json: + {"pollingInterval":2000} {"pollingInterval":250} -/src/internal/foo.ts: +/home/src/workspaces/project/src/internal/foo.ts: {"pollingInterval":500} -/tsconfig.json: +/home/src/workspaces/project/src/internal/package.json: + {"pollingInterval":2000} +/home/src/workspaces/project/src/package.json: + {"pollingInterval":2000} +/home/src/workspaces/project/tsconfig.json: {"pollingInterval":2000} watchedFiles *deleted*:: -/src/a.ts: +/home/src/workspaces/project/src/a.ts: {"pollingInterval":500} watchedDirectoriesRecursive:: -: +/home/src/workspaces/node_modules: + {} + {} +/home/src/workspaces/node_modules/@types: + {} + {} +/home/src/workspaces/project: + {} +/home/src/workspaces/project/node_modules: + {} + {} +/home/src/workspaces/project/node_modules/@types: + {} + {} +/home/src/workspaces/project/src: {} Projects:: /dev/null/inferredProject1* (Inferred) projectStateVersion: 1 projectProgramVersion: 1 -/tsconfig.json (Configured) *changed* + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *changed* projectStateVersion: 1 projectProgramVersion: 1 noOpenRef: false *changed* ScriptInfos:: -/lib.d.ts +/home/src/tslibs/TS/Lib/lib.d.ts version: Text-1 - containingProjects: 2 - /tsconfig.json + containingProjects: 1 /dev/null/inferredProject1* -/lib.decorators.d.ts +/home/src/tslibs/TS/Lib/lib.decorators.d.ts version: Text-1 - containingProjects: 2 - /tsconfig.json + containingProjects: 1 /dev/null/inferredProject1* -/lib.decorators.legacy.d.ts +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts version: Text-1 - containingProjects: 2 - /tsconfig.json + containingProjects: 1 /dev/null/inferredProject1* -/src/a.ts (Open) *changed* +/home/src/workspaces/project/src/a.ts (Open) *changed* open: true *changed* version: Text-1 containingProjects: 1 - /tsconfig.json *default* -/src/internal/foo.ts + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/internal/foo.ts version: Text-1 containingProjects: 1 - /tsconfig.json -/tsconfig.json (Open) + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) version: SVC-1-0 containingProjects: 1 /dev/null/inferredProject1* *default* @@ -326,7 +444,7 @@ Info seq [hh:mm:ss:mss] request: "seq": 3, "type": "request", "arguments": { - "file": "/src/a.ts", + "file": "/home/src/workspaces/project/src/a.ts", "line": 1, "offset": 17 }, @@ -350,7 +468,8 @@ Info seq [hh:mm:ss:mss] response: "kindModifiers": "", "sortText": "11" } - ] + ], + "defaultCommitCharacters": [] } } Info seq [hh:mm:ss:mss] request: @@ -375,7 +494,7 @@ Info seq [hh:mm:ss:mss] request: "seq": 5, "type": "request", "arguments": { - "file": "/src/a.ts", + "file": "/home/src/workspaces/project/src/a.ts", "line": 2, "offset": 27 }, @@ -399,6 +518,7 @@ Info seq [hh:mm:ss:mss] response: "kindModifiers": "", "sortText": "11" } - ] + ], + "defaultCommitCharacters": [] } } \ No newline at end of file diff --git a/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap4.js b/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap4.js index 8abf584d37047..63feb5500973e 100644 --- a/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap4.js +++ b/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap4.js @@ -1,15 +1,17 @@ -currentDirectory:: / useCaseSensitiveFileNames: false -Info seq [hh:mm:ss:mss] Provided types map file "/typesMap.json" doesn't exist -//// [/lib.d.ts] +Info seq [hh:mm:ss:mss] currentDirectory:: /home/src/Vscode/Projects/bin useCaseSensitiveFileNames:: false +Info seq [hh:mm:ss:mss] libs Location:: /home/src/tslibs/TS/Lib +Info seq [hh:mm:ss:mss] globalTypingsCacheLocation:: /home/src/Library/Caches/typescript +Info seq [hh:mm:ss:mss] Provided types map file "/home/src/tslibs/TS/Lib/typesMap.json" doesn't exist +//// [/home/src/tslibs/TS/Lib/lib.d.ts] lib.d.ts-Text -//// [/lib.decorators.d.ts] +//// [/home/src/tslibs/TS/Lib/lib.decorators.d.ts] lib.decorators.d.ts-Text -//// [/lib.decorators.legacy.d.ts] +//// [/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts] lib.decorators.legacy.d.ts-Text -//// [/package.json] +//// [/home/src/workspaces/project/package.json] { "type": "module", "imports": { @@ -20,13 +22,13 @@ lib.decorators.legacy.d.ts-Text } } -//// [/src/a.ts] +//// [/home/src/workspaces/project/src/a.ts] import {} from ""; -//// [/src/env/browser.ts] +//// [/home/src/workspaces/project/src/env/browser.ts] export const isBrowser = true; -//// [/tsconfig.json] +//// [/home/src/workspaces/project/tsconfig.json] { "compilerOptions": { "module": "nodenext", @@ -41,65 +43,55 @@ Info seq [hh:mm:ss:mss] request: "seq": 0, "type": "request", "arguments": { - "file": "/tsconfig.json" + "file": "/home/src/workspaces/project/tsconfig.json" }, "command": "open" } -Info seq [hh:mm:ss:mss] Search path: / -Info seq [hh:mm:ss:mss] For info: /tsconfig.json :: Config file name: /tsconfig.json -Info seq [hh:mm:ss:mss] Creating configuration project /tsconfig.json -Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /tsconfig.json 2000 undefined Project: /tsconfig.json WatchType: Config file +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined:: Result: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] Creating ConfiguredProject: /home/src/workspaces/project/tsconfig.json, currentDirectory: /home/src/workspaces/project +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/tsconfig.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Config file +Info seq [hh:mm:ss:mss] Config: /home/src/workspaces/project/tsconfig.json : { + "rootNames": [ + "/home/src/workspaces/project/src/a.ts", + "/home/src/workspaces/project/src/env/browser.ts" + ], + "options": { + "module": 199, + "rootDir": "/home/src/workspaces/project/src", + "outDir": "/home/src/workspaces/project/dist", + "configFilePath": "/home/src/workspaces/project/tsconfig.json" + } +} Info seq [hh:mm:ss:mss] event: { "seq": 0, "type": "event", "event": "projectLoadingStart", "body": { - "projectName": "/tsconfig.json", - "reason": "Creating possible configured project for /tsconfig.json to open" + "projectName": "/home/src/workspaces/project/tsconfig.json", + "reason": "Creating possible configured project for /home/src/workspaces/project/tsconfig.json to open" } } -Info seq [hh:mm:ss:mss] Config: /tsconfig.json : { - "rootNames": [ - "/lib.d.ts", - "/lib.decorators.d.ts", - "/lib.decorators.legacy.d.ts", - "/src/a.ts", - "/src/env/browser.ts" - ], - "options": { - "module": 199, - "rootDir": "/src", - "outDir": "/dist", - "configFilePath": "/tsconfig.json" - } -} -Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: 1 undefined Config: /tsconfig.json WatchType: Wild card directory -Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: 1 undefined Config: /tsconfig.json WatchType: Wild card directory -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] FileWatcher:: Added:: WatchInfo: /src/a.ts 500 undefined WatchType: Closed Script info -Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /src/env/browser.ts 500 undefined WatchType: Closed Script info -Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /tsconfig.json -Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /tsconfig.json projectStateVersion: 1 projectProgramVersion: 0 structureChanged: true structureIsReused:: Not Elapsed:: *ms -Info seq [hh:mm:ss:mss] Project '/tsconfig.json' (Configured) -Info seq [hh:mm:ss:mss] Files (5) - /lib.decorators.d.ts Text-1 lib.decorators.d.ts-Text - /lib.decorators.legacy.d.ts Text-1 lib.decorators.legacy.d.ts-Text - /lib.d.ts Text-1 lib.d.ts-Text - /src/a.ts Text-1 "import {} from \"\";" - /src/env/browser.ts Text-1 "export const isBrowser = true;" +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project 1 undefined Config: /home/src/workspaces/project/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project 1 undefined Config: /home/src/workspaces/project/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/a.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/env/browser.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/env/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.esnext.full.d.ts 500 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Missing file +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json projectStateVersion: 1 projectProgramVersion: 0 structureChanged: true structureIsReused:: Not Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (2) + /home/src/workspaces/project/src/a.ts Text-1 "import {} from \"\";" + /home/src/workspaces/project/src/env/browser.ts Text-1 "export const isBrowser = true;" - lib.decorators.d.ts - Library referenced via 'decorators' from file 'lib.d.ts' - Matched by default include pattern '**/*' - lib.decorators.legacy.d.ts - Library referenced via 'decorators.legacy' from file 'lib.d.ts' - Matched by default include pattern '**/*' - lib.d.ts - Matched by default include pattern '**/*' src/a.ts Matched by default include pattern '**/*' File is ECMAScript module because 'package.json' has field "type" with value "module" @@ -114,7 +106,7 @@ Info seq [hh:mm:ss:mss] event: "type": "event", "event": "projectLoadingFinish", "body": { - "projectName": "/tsconfig.json" + "projectName": "/home/src/workspaces/project/tsconfig.json" } } Info seq [hh:mm:ss:mss] event: @@ -123,34 +115,94 @@ Info seq [hh:mm:ss:mss] event: "type": "event", "event": "configFileDiag", "body": { - "triggerFile": "/tsconfig.json", - "configFile": "/tsconfig.json", - "diagnostics": [] + "triggerFile": "/home/src/workspaces/project/tsconfig.json", + "configFile": "/home/src/workspaces/project/tsconfig.json", + "diagnostics": [ + { + "text": "File '/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts' not found.\n The file is in the program because:\n Default library for target 'esnext'", + "code": 6053, + "category": "error" + }, + { + "text": "Cannot find global type 'Array'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Boolean'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Function'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'IArguments'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Number'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Object'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'RegExp'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'String'.", + "code": 2318, + "category": "error" + } + ] } } +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined:: Result: undefined +Info seq [hh:mm:ss:mss] Creating InferredProject: /dev/null/inferredProject1*, currentDirectory: /home/src/workspaces/project +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/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: /home/src/tslibs/TS/Lib/lib.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.decorators.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /dev/null/inferredProject1* projectStateVersion: 1 projectProgramVersion: 0 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 - /tsconfig.json SVC-1-0 "{\n \"compilerOptions\": {\n \"module\": \"nodenext\",\n \"rootDir\": \"src\",\n \"outDir\": \"dist\"\n }\n}" + /home/src/tslibs/TS/Lib/lib.d.ts Text-1 lib.d.ts-Text + /home/src/tslibs/TS/Lib/lib.decorators.d.ts Text-1 lib.decorators.d.ts-Text + /home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts Text-1 lib.decorators.legacy.d.ts-Text + /home/src/workspaces/project/tsconfig.json SVC-1-0 "{\n \"compilerOptions\": {\n \"module\": \"nodenext\",\n \"rootDir\": \"src\",\n \"outDir\": \"dist\"\n }\n}" - lib.d.ts + ../../tslibs/TS/Lib/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' + ../../tslibs/TS/Lib/lib.decorators.d.ts + Library referenced via 'decorators' from file '../../tslibs/TS/Lib/lib.d.ts' + ../../tslibs/TS/Lib/lib.decorators.legacy.d.ts + Library referenced via 'decorators.legacy' from file '../../tslibs/TS/Lib/lib.d.ts' tsconfig.json Root file specified for compilation Info seq [hh:mm:ss:mss] ----------------------------------------------- -Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /package.json 250 undefined WatchType: package.json file -Info seq [hh:mm:ss:mss] Project '/tsconfig.json' (Configured) -Info seq [hh:mm:ss:mss] Files (5) +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/package.json 250 undefined WatchType: package.json file +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (2) Info seq [hh:mm:ss:mss] ----------------------------------------------- Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred) @@ -158,63 +210,91 @@ 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: /tsconfig.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] FileName: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "open", + "request_seq": 0, + "success": true, + "performanceData": { + "updateGraphDurationMs": * + } + } After Request watchedFiles:: -/lib.d.ts: *new* +/home/src/tslibs/TS/Lib/lib.d.ts: *new* + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.d.ts: *new* {"pollingInterval":500} -/lib.decorators.d.ts: *new* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts: *new* {"pollingInterval":500} -/lib.decorators.legacy.d.ts: *new* +/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts: *new* {"pollingInterval":500} -/package.json: *new* +/home/src/workspaces/project/jsconfig.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/package.json: *new* + {"pollingInterval":2000} {"pollingInterval":250} -/src/a.ts: *new* +/home/src/workspaces/project/src/a.ts: *new* {"pollingInterval":500} -/src/env/browser.ts: *new* +/home/src/workspaces/project/src/env/browser.ts: *new* {"pollingInterval":500} -/tsconfig.json: *new* +/home/src/workspaces/project/src/env/package.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/src/package.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/tsconfig.json: *new* {"pollingInterval":2000} watchedDirectoriesRecursive:: -: *new* +/home/src/workspaces/node_modules: *new* + {} +/home/src/workspaces/node_modules/@types: *new* + {} + {} +/home/src/workspaces/project: *new* + {} +/home/src/workspaces/project/node_modules: *new* + {} +/home/src/workspaces/project/node_modules/@types: *new* + {} {} Projects:: /dev/null/inferredProject1* (Inferred) *new* projectStateVersion: 1 projectProgramVersion: 1 -/tsconfig.json (Configured) *new* + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *new* projectStateVersion: 1 projectProgramVersion: 1 noOpenRef: true ScriptInfos:: -/lib.d.ts *new* +/home/src/tslibs/TS/Lib/lib.d.ts *new* version: Text-1 - containingProjects: 2 - /tsconfig.json + containingProjects: 1 /dev/null/inferredProject1* -/lib.decorators.d.ts *new* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts *new* version: Text-1 - containingProjects: 2 - /tsconfig.json + containingProjects: 1 /dev/null/inferredProject1* -/lib.decorators.legacy.d.ts *new* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts *new* version: Text-1 - containingProjects: 2 - /tsconfig.json + containingProjects: 1 /dev/null/inferredProject1* -/src/a.ts *new* +/home/src/workspaces/project/src/a.ts *new* version: Text-1 containingProjects: 1 - /tsconfig.json -/src/env/browser.ts *new* + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/env/browser.ts *new* version: Text-1 containingProjects: 1 - /tsconfig.json -/tsconfig.json (Open) *new* + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) *new* version: SVC-1-0 containingProjects: 1 /dev/null/inferredProject1* *default* @@ -224,15 +304,14 @@ Info seq [hh:mm:ss:mss] request: "seq": 1, "type": "request", "arguments": { - "file": "/src/a.ts" + "file": "/home/src/workspaces/project/src/a.ts" }, "command": "open" } -Info seq [hh:mm:ss:mss] FileWatcher:: Close:: WatchInfo: /src/a.ts 500 undefined WatchType: Closed Script info -Info seq [hh:mm:ss:mss] Search path: /src -Info seq [hh:mm:ss:mss] For info: /src/a.ts :: Config file name: /tsconfig.json -Info seq [hh:mm:ss:mss] Project '/tsconfig.json' (Configured) -Info seq [hh:mm:ss:mss] Files (5) +Info seq [hh:mm:ss:mss] FileWatcher:: Close:: WatchInfo: /home/src/workspaces/project/src/a.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/src/a.ts ProjectRootPath: undefined:: Result: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (2) Info seq [hh:mm:ss:mss] ----------------------------------------------- Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred) @@ -240,68 +319,93 @@ 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: /tsconfig.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] FileName: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* -Info seq [hh:mm:ss:mss] FileName: /src/a.ts ProjectRootPath: undefined -Info seq [hh:mm:ss:mss] Projects: /tsconfig.json +Info seq [hh:mm:ss:mss] FileName: /home/src/workspaces/project/src/a.ts ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "open", + "request_seq": 1, + "success": true + } After Request watchedFiles:: -/lib.d.ts: +/home/src/tslibs/TS/Lib/lib.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.d.ts: {"pollingInterval":500} -/lib.decorators.d.ts: +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts: {"pollingInterval":500} -/lib.decorators.legacy.d.ts: +/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts: {"pollingInterval":500} -/package.json: +/home/src/workspaces/project/jsconfig.json: + {"pollingInterval":2000} +/home/src/workspaces/project/package.json: + {"pollingInterval":2000} {"pollingInterval":250} -/src/env/browser.ts: +/home/src/workspaces/project/src/env/browser.ts: {"pollingInterval":500} -/tsconfig.json: +/home/src/workspaces/project/src/env/package.json: + {"pollingInterval":2000} +/home/src/workspaces/project/src/package.json: + {"pollingInterval":2000} +/home/src/workspaces/project/tsconfig.json: {"pollingInterval":2000} watchedFiles *deleted*:: -/src/a.ts: +/home/src/workspaces/project/src/a.ts: {"pollingInterval":500} watchedDirectoriesRecursive:: -: +/home/src/workspaces/node_modules: + {} +/home/src/workspaces/node_modules/@types: + {} + {} +/home/src/workspaces/project: + {} +/home/src/workspaces/project/node_modules: + {} +/home/src/workspaces/project/node_modules/@types: + {} {} Projects:: /dev/null/inferredProject1* (Inferred) projectStateVersion: 1 projectProgramVersion: 1 -/tsconfig.json (Configured) *changed* + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *changed* projectStateVersion: 1 projectProgramVersion: 1 noOpenRef: false *changed* ScriptInfos:: -/lib.d.ts +/home/src/tslibs/TS/Lib/lib.d.ts version: Text-1 - containingProjects: 2 - /tsconfig.json + containingProjects: 1 /dev/null/inferredProject1* -/lib.decorators.d.ts +/home/src/tslibs/TS/Lib/lib.decorators.d.ts version: Text-1 - containingProjects: 2 - /tsconfig.json + containingProjects: 1 /dev/null/inferredProject1* -/lib.decorators.legacy.d.ts +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts version: Text-1 - containingProjects: 2 - /tsconfig.json + containingProjects: 1 /dev/null/inferredProject1* -/src/a.ts (Open) *changed* +/home/src/workspaces/project/src/a.ts (Open) *changed* open: true *changed* version: Text-1 containingProjects: 1 - /tsconfig.json *default* -/src/env/browser.ts + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/env/browser.ts version: Text-1 containingProjects: 1 - /tsconfig.json -/tsconfig.json (Open) + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) version: SVC-1-0 containingProjects: 1 /dev/null/inferredProject1* *default* @@ -328,7 +432,7 @@ Info seq [hh:mm:ss:mss] request: "seq": 3, "type": "request", "arguments": { - "file": "/src/a.ts", + "file": "/home/src/workspaces/project/src/a.ts", "line": 1, "offset": 17 }, @@ -352,6 +456,7 @@ Info seq [hh:mm:ss:mss] response: "kindModifiers": "", "sortText": "11" } - ] + ], + "defaultCommitCharacters": [] } } \ No newline at end of file diff --git a/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap5.js b/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap5.js index b326df6504397..8c218da0a58d9 100644 --- a/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap5.js +++ b/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap5.js @@ -1,15 +1,17 @@ -currentDirectory:: / useCaseSensitiveFileNames: false -Info seq [hh:mm:ss:mss] Provided types map file "/typesMap.json" doesn't exist -//// [/lib.d.ts] +Info seq [hh:mm:ss:mss] currentDirectory:: /home/src/Vscode/Projects/bin useCaseSensitiveFileNames:: false +Info seq [hh:mm:ss:mss] libs Location:: /home/src/tslibs/TS/Lib +Info seq [hh:mm:ss:mss] globalTypingsCacheLocation:: /home/src/Library/Caches/typescript +Info seq [hh:mm:ss:mss] Provided types map file "/home/src/tslibs/TS/Lib/typesMap.json" doesn't exist +//// [/home/src/tslibs/TS/Lib/lib.d.ts] lib.d.ts-Text -//// [/lib.decorators.d.ts] +//// [/home/src/tslibs/TS/Lib/lib.decorators.d.ts] lib.decorators.d.ts-Text -//// [/lib.decorators.legacy.d.ts] +//// [/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts] lib.decorators.legacy.d.ts-Text -//// [/package.json] +//// [/home/src/workspaces/project/package.json] { "type": "module", "imports": { @@ -20,13 +22,13 @@ lib.decorators.legacy.d.ts-Text } } -//// [/src/a.ts] +//// [/home/src/workspaces/project/src/a.ts] import {} from ""; -//// [/src/env/browser.ts] +//// [/home/src/workspaces/project/src/env/browser.ts] export const isBrowser = true; -//// [/tsconfig.json] +//// [/home/src/workspaces/project/tsconfig.json] { "compilerOptions": { "module": "nodenext", @@ -42,66 +44,56 @@ Info seq [hh:mm:ss:mss] request: "seq": 0, "type": "request", "arguments": { - "file": "/tsconfig.json" + "file": "/home/src/workspaces/project/tsconfig.json" }, "command": "open" } -Info seq [hh:mm:ss:mss] Search path: / -Info seq [hh:mm:ss:mss] For info: /tsconfig.json :: Config file name: /tsconfig.json -Info seq [hh:mm:ss:mss] Creating configuration project /tsconfig.json -Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /tsconfig.json 2000 undefined Project: /tsconfig.json WatchType: Config file +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined:: Result: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] Creating ConfiguredProject: /home/src/workspaces/project/tsconfig.json, currentDirectory: /home/src/workspaces/project +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/tsconfig.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Config file +Info seq [hh:mm:ss:mss] Config: /home/src/workspaces/project/tsconfig.json : { + "rootNames": [ + "/home/src/workspaces/project/src/a.ts", + "/home/src/workspaces/project/src/env/browser.ts" + ], + "options": { + "module": 199, + "rootDir": "/home/src/workspaces/project/src", + "outDir": "/home/src/workspaces/project/dist", + "declarationDir": "/home/src/workspaces/project/types", + "configFilePath": "/home/src/workspaces/project/tsconfig.json" + } +} Info seq [hh:mm:ss:mss] event: { "seq": 0, "type": "event", "event": "projectLoadingStart", "body": { - "projectName": "/tsconfig.json", - "reason": "Creating possible configured project for /tsconfig.json to open" + "projectName": "/home/src/workspaces/project/tsconfig.json", + "reason": "Creating possible configured project for /home/src/workspaces/project/tsconfig.json to open" } } -Info seq [hh:mm:ss:mss] Config: /tsconfig.json : { - "rootNames": [ - "/lib.d.ts", - "/lib.decorators.d.ts", - "/lib.decorators.legacy.d.ts", - "/src/a.ts", - "/src/env/browser.ts" - ], - "options": { - "module": 199, - "rootDir": "/src", - "outDir": "/dist", - "declarationDir": "/types", - "configFilePath": "/tsconfig.json" - } -} -Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: 1 undefined Config: /tsconfig.json WatchType: Wild card directory -Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: 1 undefined Config: /tsconfig.json WatchType: Wild card directory -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] FileWatcher:: Added:: WatchInfo: /src/a.ts 500 undefined WatchType: Closed Script info -Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /src/env/browser.ts 500 undefined WatchType: Closed Script info -Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /tsconfig.json -Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /tsconfig.json projectStateVersion: 1 projectProgramVersion: 0 structureChanged: true structureIsReused:: Not Elapsed:: *ms -Info seq [hh:mm:ss:mss] Project '/tsconfig.json' (Configured) -Info seq [hh:mm:ss:mss] Files (5) - /lib.decorators.d.ts Text-1 lib.decorators.d.ts-Text - /lib.decorators.legacy.d.ts Text-1 lib.decorators.legacy.d.ts-Text - /lib.d.ts Text-1 lib.d.ts-Text - /src/a.ts Text-1 "import {} from \"\";" - /src/env/browser.ts Text-1 "export const isBrowser = true;" +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project 1 undefined Config: /home/src/workspaces/project/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project 1 undefined Config: /home/src/workspaces/project/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/a.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/env/browser.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/env/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.esnext.full.d.ts 500 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Missing file +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json projectStateVersion: 1 projectProgramVersion: 0 structureChanged: true structureIsReused:: Not Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (2) + /home/src/workspaces/project/src/a.ts Text-1 "import {} from \"\";" + /home/src/workspaces/project/src/env/browser.ts Text-1 "export const isBrowser = true;" - lib.decorators.d.ts - Library referenced via 'decorators' from file 'lib.d.ts' - Matched by default include pattern '**/*' - lib.decorators.legacy.d.ts - Library referenced via 'decorators.legacy' from file 'lib.d.ts' - Matched by default include pattern '**/*' - lib.d.ts - Matched by default include pattern '**/*' src/a.ts Matched by default include pattern '**/*' File is ECMAScript module because 'package.json' has field "type" with value "module" @@ -116,7 +108,7 @@ Info seq [hh:mm:ss:mss] event: "type": "event", "event": "projectLoadingFinish", "body": { - "projectName": "/tsconfig.json" + "projectName": "/home/src/workspaces/project/tsconfig.json" } } Info seq [hh:mm:ss:mss] event: @@ -125,9 +117,14 @@ Info seq [hh:mm:ss:mss] event: "type": "event", "event": "configFileDiag", "body": { - "triggerFile": "/tsconfig.json", - "configFile": "/tsconfig.json", + "triggerFile": "/home/src/workspaces/project/tsconfig.json", + "configFile": "/home/src/workspaces/project/tsconfig.json", "diagnostics": [ + { + "text": "File '/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts' not found.\n The file is in the program because:\n Default library for target 'esnext'", + "code": 6053, + "category": "error" + }, { "start": { "line": 6, @@ -140,34 +137,88 @@ Info seq [hh:mm:ss:mss] event: "text": "Option 'declarationDir' cannot be specified without specifying option 'declaration' or option 'composite'.", "code": 5069, "category": "error", - "fileName": "/tsconfig.json" + "fileName": "/home/src/workspaces/project/tsconfig.json" + }, + { + "text": "Cannot find global type 'Array'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Boolean'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Function'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'IArguments'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Number'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Object'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'RegExp'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'String'.", + "code": 2318, + "category": "error" } ] } } +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined:: Result: undefined +Info seq [hh:mm:ss:mss] Creating InferredProject: /dev/null/inferredProject1*, currentDirectory: /home/src/workspaces/project +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/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: /home/src/tslibs/TS/Lib/lib.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.decorators.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /dev/null/inferredProject1* projectStateVersion: 1 projectProgramVersion: 0 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 - /tsconfig.json SVC-1-0 "{\n \"compilerOptions\": {\n \"module\": \"nodenext\",\n \"rootDir\": \"src\",\n \"outDir\": \"dist\",\n \"declarationDir\": \"types\",\n }\n}" + /home/src/tslibs/TS/Lib/lib.d.ts Text-1 lib.d.ts-Text + /home/src/tslibs/TS/Lib/lib.decorators.d.ts Text-1 lib.decorators.d.ts-Text + /home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts Text-1 lib.decorators.legacy.d.ts-Text + /home/src/workspaces/project/tsconfig.json SVC-1-0 "{\n \"compilerOptions\": {\n \"module\": \"nodenext\",\n \"rootDir\": \"src\",\n \"outDir\": \"dist\",\n \"declarationDir\": \"types\",\n }\n}" - lib.d.ts + ../../tslibs/TS/Lib/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' + ../../tslibs/TS/Lib/lib.decorators.d.ts + Library referenced via 'decorators' from file '../../tslibs/TS/Lib/lib.d.ts' + ../../tslibs/TS/Lib/lib.decorators.legacy.d.ts + Library referenced via 'decorators.legacy' from file '../../tslibs/TS/Lib/lib.d.ts' tsconfig.json Root file specified for compilation Info seq [hh:mm:ss:mss] ----------------------------------------------- -Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /package.json 250 undefined WatchType: package.json file -Info seq [hh:mm:ss:mss] Project '/tsconfig.json' (Configured) -Info seq [hh:mm:ss:mss] Files (5) +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/package.json 250 undefined WatchType: package.json file +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (2) Info seq [hh:mm:ss:mss] ----------------------------------------------- Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred) @@ -175,63 +226,91 @@ 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: /tsconfig.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] FileName: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "open", + "request_seq": 0, + "success": true, + "performanceData": { + "updateGraphDurationMs": * + } + } After Request watchedFiles:: -/lib.d.ts: *new* +/home/src/tslibs/TS/Lib/lib.d.ts: *new* {"pollingInterval":500} -/lib.decorators.d.ts: *new* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts: *new* {"pollingInterval":500} -/lib.decorators.legacy.d.ts: *new* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts: *new* {"pollingInterval":500} -/package.json: *new* +/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/jsconfig.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/package.json: *new* + {"pollingInterval":2000} {"pollingInterval":250} -/src/a.ts: *new* +/home/src/workspaces/project/src/a.ts: *new* {"pollingInterval":500} -/src/env/browser.ts: *new* +/home/src/workspaces/project/src/env/browser.ts: *new* {"pollingInterval":500} -/tsconfig.json: *new* +/home/src/workspaces/project/src/env/package.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/src/package.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/tsconfig.json: *new* {"pollingInterval":2000} watchedDirectoriesRecursive:: -: *new* +/home/src/workspaces/node_modules: *new* + {} +/home/src/workspaces/node_modules/@types: *new* + {} + {} +/home/src/workspaces/project: *new* + {} +/home/src/workspaces/project/node_modules: *new* + {} +/home/src/workspaces/project/node_modules/@types: *new* + {} {} Projects:: /dev/null/inferredProject1* (Inferred) *new* projectStateVersion: 1 projectProgramVersion: 1 -/tsconfig.json (Configured) *new* + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *new* projectStateVersion: 1 projectProgramVersion: 1 noOpenRef: true ScriptInfos:: -/lib.d.ts *new* +/home/src/tslibs/TS/Lib/lib.d.ts *new* version: Text-1 - containingProjects: 2 - /tsconfig.json + containingProjects: 1 /dev/null/inferredProject1* -/lib.decorators.d.ts *new* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts *new* version: Text-1 - containingProjects: 2 - /tsconfig.json + containingProjects: 1 /dev/null/inferredProject1* -/lib.decorators.legacy.d.ts *new* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts *new* version: Text-1 - containingProjects: 2 - /tsconfig.json + containingProjects: 1 /dev/null/inferredProject1* -/src/a.ts *new* +/home/src/workspaces/project/src/a.ts *new* version: Text-1 containingProjects: 1 - /tsconfig.json -/src/env/browser.ts *new* + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/env/browser.ts *new* version: Text-1 containingProjects: 1 - /tsconfig.json -/tsconfig.json (Open) *new* + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) *new* version: SVC-1-0 containingProjects: 1 /dev/null/inferredProject1* *default* @@ -241,15 +320,14 @@ Info seq [hh:mm:ss:mss] request: "seq": 1, "type": "request", "arguments": { - "file": "/src/a.ts" + "file": "/home/src/workspaces/project/src/a.ts" }, "command": "open" } -Info seq [hh:mm:ss:mss] FileWatcher:: Close:: WatchInfo: /src/a.ts 500 undefined WatchType: Closed Script info -Info seq [hh:mm:ss:mss] Search path: /src -Info seq [hh:mm:ss:mss] For info: /src/a.ts :: Config file name: /tsconfig.json -Info seq [hh:mm:ss:mss] Project '/tsconfig.json' (Configured) -Info seq [hh:mm:ss:mss] Files (5) +Info seq [hh:mm:ss:mss] FileWatcher:: Close:: WatchInfo: /home/src/workspaces/project/src/a.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/src/a.ts ProjectRootPath: undefined:: Result: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (2) Info seq [hh:mm:ss:mss] ----------------------------------------------- Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred) @@ -257,68 +335,93 @@ 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: /tsconfig.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] FileName: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* -Info seq [hh:mm:ss:mss] FileName: /src/a.ts ProjectRootPath: undefined -Info seq [hh:mm:ss:mss] Projects: /tsconfig.json +Info seq [hh:mm:ss:mss] FileName: /home/src/workspaces/project/src/a.ts ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "open", + "request_seq": 1, + "success": true + } After Request watchedFiles:: -/lib.d.ts: +/home/src/tslibs/TS/Lib/lib.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.d.ts: {"pollingInterval":500} -/lib.decorators.d.ts: +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts: {"pollingInterval":500} -/lib.decorators.legacy.d.ts: +/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts: {"pollingInterval":500} -/package.json: +/home/src/workspaces/project/jsconfig.json: + {"pollingInterval":2000} +/home/src/workspaces/project/package.json: + {"pollingInterval":2000} {"pollingInterval":250} -/src/env/browser.ts: +/home/src/workspaces/project/src/env/browser.ts: {"pollingInterval":500} -/tsconfig.json: +/home/src/workspaces/project/src/env/package.json: + {"pollingInterval":2000} +/home/src/workspaces/project/src/package.json: + {"pollingInterval":2000} +/home/src/workspaces/project/tsconfig.json: {"pollingInterval":2000} watchedFiles *deleted*:: -/src/a.ts: +/home/src/workspaces/project/src/a.ts: {"pollingInterval":500} watchedDirectoriesRecursive:: -: +/home/src/workspaces/node_modules: + {} +/home/src/workspaces/node_modules/@types: + {} + {} +/home/src/workspaces/project: + {} +/home/src/workspaces/project/node_modules: + {} +/home/src/workspaces/project/node_modules/@types: + {} {} Projects:: /dev/null/inferredProject1* (Inferred) projectStateVersion: 1 projectProgramVersion: 1 -/tsconfig.json (Configured) *changed* + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *changed* projectStateVersion: 1 projectProgramVersion: 1 noOpenRef: false *changed* ScriptInfos:: -/lib.d.ts +/home/src/tslibs/TS/Lib/lib.d.ts version: Text-1 - containingProjects: 2 - /tsconfig.json + containingProjects: 1 /dev/null/inferredProject1* -/lib.decorators.d.ts +/home/src/tslibs/TS/Lib/lib.decorators.d.ts version: Text-1 - containingProjects: 2 - /tsconfig.json + containingProjects: 1 /dev/null/inferredProject1* -/lib.decorators.legacy.d.ts +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts version: Text-1 - containingProjects: 2 - /tsconfig.json + containingProjects: 1 /dev/null/inferredProject1* -/src/a.ts (Open) *changed* +/home/src/workspaces/project/src/a.ts (Open) *changed* open: true *changed* version: Text-1 containingProjects: 1 - /tsconfig.json *default* -/src/env/browser.ts + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/env/browser.ts version: Text-1 containingProjects: 1 - /tsconfig.json -/tsconfig.json (Open) + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) version: SVC-1-0 containingProjects: 1 /dev/null/inferredProject1* *default* @@ -345,7 +448,7 @@ Info seq [hh:mm:ss:mss] request: "seq": 3, "type": "request", "arguments": { - "file": "/src/a.ts", + "file": "/home/src/workspaces/project/src/a.ts", "line": 1, "offset": 17 }, @@ -369,6 +472,7 @@ Info seq [hh:mm:ss:mss] response: "kindModifiers": "", "sortText": "11" } - ] + ], + "defaultCommitCharacters": [] } } \ No newline at end of file diff --git a/tests/cases/fourslash/server/importCompletions_importsMap1.ts b/tests/cases/fourslash/server/importCompletions_importsMap1.ts index d21821e087cfd..530704bfb5d74 100644 --- a/tests/cases/fourslash/server/importCompletions_importsMap1.ts +++ b/tests/cases/fourslash/server/importCompletions_importsMap1.ts @@ -1,6 +1,6 @@ /// <reference path="../fourslash.ts"/> -// @Filename: /tsconfig.json +// @Filename: /home/src/workspaces/project/tsconfig.json //// { //// "compilerOptions": { //// "module": "nodenext", @@ -9,7 +9,7 @@ //// } //// } -// @Filename: /package.json +// @Filename: /home/src/workspaces/project/package.json //// { //// "type": "module", //// "imports": { @@ -20,13 +20,13 @@ //// } //// } -// @Filename: /src/env/browser.ts +// @Filename: /home/src/workspaces/project/src/env/browser.ts //// export const isBrowser = true; -// @Filename: /src/env/node.ts +// @Filename: /home/src/workspaces/project/src/env/node.ts //// export const isBrowser = false; -// @Filename: /src/a.ts +// @Filename: /home/src/workspaces/project/src/a.ts //// import {} from "/*1*/"; verify.completions({ diff --git a/tests/cases/fourslash/server/importCompletions_importsMap2.ts b/tests/cases/fourslash/server/importCompletions_importsMap2.ts index b83d83052b826..10ea87f0aca2d 100644 --- a/tests/cases/fourslash/server/importCompletions_importsMap2.ts +++ b/tests/cases/fourslash/server/importCompletions_importsMap2.ts @@ -1,6 +1,6 @@ /// <reference path="../fourslash.ts"/> -// @Filename: /tsconfig.json +// @Filename: /home/src/workspaces/project/tsconfig.json //// { //// "compilerOptions": { //// "module": "nodenext", @@ -9,7 +9,7 @@ //// } //// } -// @Filename: /package.json +// @Filename: /home/src/workspaces/project/package.json //// { //// "type": "module", //// "imports": { @@ -17,10 +17,10 @@ //// } //// } -// @Filename: /src/internal/foo.ts +// @Filename: /home/src/workspaces/project/src/internal/foo.ts //// export function something(name: string) {} -// @Filename: /src/a.ts +// @Filename: /home/src/workspaces/project/src/a.ts //// import {} from "/*1*/"; //// import {} from "#internal//*2*/"; diff --git a/tests/cases/fourslash/server/importCompletions_importsMap3.ts b/tests/cases/fourslash/server/importCompletions_importsMap3.ts index 02691c7700c76..01776d771a3db 100644 --- a/tests/cases/fourslash/server/importCompletions_importsMap3.ts +++ b/tests/cases/fourslash/server/importCompletions_importsMap3.ts @@ -1,6 +1,6 @@ /// <reference path="../fourslash.ts"/> -// @Filename: /tsconfig.json +// @Filename: /home/src/workspaces/project/tsconfig.json //// { //// "compilerOptions": { //// "module": "nodenext", @@ -9,7 +9,7 @@ //// } //// } -// @Filename: /package.json +// @Filename: /home/src/workspaces/project/package.json //// { //// "type": "module", //// "imports": { @@ -17,10 +17,10 @@ //// } //// } -// @Filename: /src/internal/foo.ts +// @Filename: /home/src/workspaces/project/src/internal/foo.ts //// export function something(name: string) {} -// @Filename: /src/a.ts +// @Filename: /home/src/workspaces/project/src/a.ts //// import {} from "/*1*/"; //// import {} from "#internal//*2*/"; diff --git a/tests/cases/fourslash/server/importCompletions_importsMap4.ts b/tests/cases/fourslash/server/importCompletions_importsMap4.ts index c770776e81d70..3e15b253f4710 100644 --- a/tests/cases/fourslash/server/importCompletions_importsMap4.ts +++ b/tests/cases/fourslash/server/importCompletions_importsMap4.ts @@ -1,6 +1,6 @@ /// <reference path="../fourslash.ts"/> -// @Filename: /tsconfig.json +// @Filename: /home/src/workspaces/project/tsconfig.json //// { //// "compilerOptions": { //// "module": "nodenext", @@ -9,7 +9,7 @@ //// } //// } -// @Filename: /package.json +// @Filename: /home/src/workspaces/project/package.json //// { //// "type": "module", //// "imports": { @@ -20,10 +20,10 @@ //// } //// } -// @Filename: /src/env/browser.ts +// @Filename: /home/src/workspaces/project/src/env/browser.ts //// export const isBrowser = true; -// @Filename: /src/a.ts +// @Filename: /home/src/workspaces/project/src/a.ts //// import {} from "/*1*/"; verify.completions({ diff --git a/tests/cases/fourslash/server/importCompletions_importsMap5.ts b/tests/cases/fourslash/server/importCompletions_importsMap5.ts index dc188357917d3..0b240075a1e66 100644 --- a/tests/cases/fourslash/server/importCompletions_importsMap5.ts +++ b/tests/cases/fourslash/server/importCompletions_importsMap5.ts @@ -1,6 +1,6 @@ /// <reference path="../fourslash.ts"/> -// @Filename: /tsconfig.json +// @Filename: /home/src/workspaces/project/tsconfig.json //// { //// "compilerOptions": { //// "module": "nodenext", @@ -10,7 +10,7 @@ //// } //// } -// @Filename: /package.json +// @Filename: /home/src/workspaces/project/package.json //// { //// "type": "module", //// "imports": { @@ -21,10 +21,10 @@ //// } //// } -// @Filename: /src/env/browser.ts +// @Filename: /home/src/workspaces/project/src/env/browser.ts //// export const isBrowser = true; -// @Filename: /src/a.ts +// @Filename: /home/src/workspaces/project/src/a.ts //// import {} from "/*1*/"; verify.completions({ From 083c5b88c01fcf5ca61e0a4f37e4b74e012fa4b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= <mateuszburzynski@gmail.com> Date: Sun, 29 Sep 2024 17:12:42 +0200 Subject: [PATCH 04/26] drop trailing slash support --- src/services/stringCompletions.ts | 2 +- .../importCompletions_importsMap3.js | 18 ++---------------- .../server/importCompletions_importsMap3.ts | 4 ++-- 3 files changed, 5 insertions(+), 19 deletions(-) diff --git a/src/services/stringCompletions.ts b/src/services/stringCompletions.ts index a44cb997e040b..b5649c3409f6c 100644 --- a/src/services/stringCompletions.ts +++ b/src/services/stringCompletions.ts @@ -914,7 +914,7 @@ function addCompletionEntriesFromPathsOrExports( let pathResults: { results: NameAndKind[]; matchedPattern: boolean; }[] = []; let matchedPath: string | undefined; for (const key of keys) { - if (key === ".") continue; + if (key === "." || (isExports || isImports) && hasTrailingDirectorySeparator(key)) continue; const keyWithoutLeadingDotSlash = key.replace(/^\.\//, ""); // remove leading "./" const patterns = getPatternsForKey(key); if (patterns) { diff --git a/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap3.js b/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap3.js index 9b51b58e1543a..c5342fe96c577 100644 --- a/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap3.js +++ b/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap3.js @@ -461,14 +461,7 @@ Info seq [hh:mm:ss:mss] response: "isGlobalCompletion": false, "isMemberCompletion": false, "isNewIdentifierLocation": true, - "entries": [ - { - "name": "#internal", - "kind": "script", - "kindModifiers": "", - "sortText": "11" - } - ], + "entries": [], "defaultCommitCharacters": [] } } @@ -511,14 +504,7 @@ Info seq [hh:mm:ss:mss] response: "isGlobalCompletion": false, "isMemberCompletion": false, "isNewIdentifierLocation": true, - "entries": [ - { - "name": "#internal", - "kind": "script", - "kindModifiers": "", - "sortText": "11" - } - ], + "entries": [], "defaultCommitCharacters": [] } } \ No newline at end of file diff --git a/tests/cases/fourslash/server/importCompletions_importsMap3.ts b/tests/cases/fourslash/server/importCompletions_importsMap3.ts index 01776d771a3db..081317fc00359 100644 --- a/tests/cases/fourslash/server/importCompletions_importsMap3.ts +++ b/tests/cases/fourslash/server/importCompletions_importsMap3.ts @@ -26,11 +26,11 @@ verify.completions({ marker: ["1"], - exact: ["#internal"], + exact: [], isNewIdentifierLocation: true, }); verify.completions({ marker: ["2"], - exact: ["foo.js"], + exact: [], isNewIdentifierLocation: true, }); From b48f752f035d0b5a8741a3c9f9471abe9574dd2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= <mateuszburzynski@gmail.com> Date: Wed, 9 Oct 2024 11:03:41 +0200 Subject: [PATCH 05/26] fix support for trailing slash --- src/services/stringCompletions.ts | 28 ++++++++++---- .../importCompletions_importsMap3.js | 18 ++++++++- ...letionsPackageJsonExportsTrailingSlash1.ts | 38 +++++++++++++++++++ .../server/importCompletions_importsMap3.ts | 4 +- 4 files changed, 77 insertions(+), 11 deletions(-) create mode 100644 tests/cases/fourslash/importCompletionsPackageJsonExportsTrailingSlash1.ts diff --git a/src/services/stringCompletions.ts b/src/services/stringCompletions.ts index b5649c3409f6c..eca91bb54c02c 100644 --- a/src/services/stringCompletions.ts +++ b/src/services/stringCompletions.ts @@ -914,14 +914,16 @@ function addCompletionEntriesFromPathsOrExports( let pathResults: { results: NameAndKind[]; matchedPattern: boolean; }[] = []; let matchedPath: string | undefined; for (const key of keys) { - if (key === "." || (isExports || isImports) && hasTrailingDirectorySeparator(key)) continue; - const keyWithoutLeadingDotSlash = key.replace(/^\.\//, ""); // remove leading "./" + if (key === ".") continue; + const keyWithoutLeadingDotSlash = key + .replace(/^\.\//, "") // remove leading "./" + + (endsWith(key, "/") ? "*" : ""); // normalize trailing `/` to `/*` const patterns = getPatternsForKey(key); if (patterns) { const pathPattern = tryParsePattern(keyWithoutLeadingDotSlash); if (!pathPattern) continue; const isMatch = typeof pathPattern === "object" && isPatternMatch(pathPattern, fragment); - const isLongestMatch = isMatch && (matchedPath === undefined || comparePaths(key, matchedPath) === Comparison.LessThan); + const isLongestMatch = isMatch && (matchedPath === undefined || comparePaths(keyWithoutLeadingDotSlash, matchedPath) === Comparison.LessThan); if (isLongestMatch) { // If this is a higher priority match than anything we've seen so far, previous results from matches are invalid, e.g. // for `import {} from "some-package/|"` with a typesVersions: @@ -934,10 +936,10 @@ function addCompletionEntriesFromPathsOrExports( // added by the '*' match, after typing `"some-package/foo/|"` we would get file results from both // ./dist/foo and ./foo, when only the latter will actually be resolvable. // See pathCompletionsTypesVersionsWildcard6.ts. - matchedPath = key; + matchedPath = keyWithoutLeadingDotSlash; pathResults = pathResults.filter(r => !r.matchedPattern); } - if (typeof pathPattern === "string" || matchedPath === undefined || comparePaths(key, matchedPath) !== Comparison.GreaterThan) { + if (typeof pathPattern === "string" || matchedPath === undefined || comparePaths(keyWithoutLeadingDotSlash, matchedPath) !== Comparison.GreaterThan) { pathResults.push({ matchedPattern: isMatch, results: getCompletionsForPathMapping(keyWithoutLeadingDotSlash, patterns, fragment, baseDirectory, extensionOptions, (isExports || isImports) && endsWith(keyWithoutLeadingDotSlash, "*"), isImports, program, host, moduleSpecifierResolutionHost) @@ -1034,7 +1036,13 @@ function getCompletionEntriesForNonRelativeModules( host, moduleSpecifierResolutionHost, keys, - key => singleElementArray(getPatternFromFirstMatchingCondition(imports[key], conditions)), + key => { + const pattern = getPatternFromFirstMatchingCondition(imports[key], conditions); + if (pattern === undefined) { + return undefined; + } + return singleElementArray(endsWith(key, "/") && endsWith(pattern, "/") ? pattern + "*" : pattern); + }, comparePatternKeys, ); return; @@ -1082,7 +1090,13 @@ function getCompletionEntriesForNonRelativeModules( host, moduleSpecifierResolutionHost, keys, - key => singleElementArray(getPatternFromFirstMatchingCondition(exports[key], conditions)), + key => { + const pattern = getPatternFromFirstMatchingCondition(exports[key], conditions); + if (pattern === undefined) { + return undefined; + } + return singleElementArray(endsWith(key, "/") && endsWith(pattern, "/") ? pattern + "*" : pattern); + }, comparePatternKeys, ); return; diff --git a/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap3.js b/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap3.js index c5342fe96c577..108703f1404c6 100644 --- a/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap3.js +++ b/tests/baselines/reference/tsserver/fourslashServer/importCompletions_importsMap3.js @@ -461,7 +461,14 @@ Info seq [hh:mm:ss:mss] response: "isGlobalCompletion": false, "isMemberCompletion": false, "isNewIdentifierLocation": true, - "entries": [], + "entries": [ + { + "name": "#internal", + "kind": "directory", + "kindModifiers": "", + "sortText": "11" + } + ], "defaultCommitCharacters": [] } } @@ -504,7 +511,14 @@ Info seq [hh:mm:ss:mss] response: "isGlobalCompletion": false, "isMemberCompletion": false, "isNewIdentifierLocation": true, - "entries": [], + "entries": [ + { + "name": "foo.js", + "kind": "script", + "kindModifiers": ".js", + "sortText": "11" + } + ], "defaultCommitCharacters": [] } } \ No newline at end of file diff --git a/tests/cases/fourslash/importCompletionsPackageJsonExportsTrailingSlash1.ts b/tests/cases/fourslash/importCompletionsPackageJsonExportsTrailingSlash1.ts new file mode 100644 index 0000000000000..e381945b5d926 --- /dev/null +++ b/tests/cases/fourslash/importCompletionsPackageJsonExportsTrailingSlash1.ts @@ -0,0 +1,38 @@ +/// <reference path="fourslash.ts" /> + +// @module: nodenext +// @moduleResolution: nodenext + +// @Filename: /node_modules/pkg/package.json +//// { +//// "name": "pkg", +//// "version": "1.0.0", +//// "exports": { +//// "./test/": "./" +//// } +//// } + +// @Filename: /node_modules/pkg/foo.d.ts +//// export function foo(): void; + +// @Filename: /package.json +//// { +//// "dependencies": { +//// "pkg": "*" +//// } +//// } + +// @Filename: /index.ts +//// import {} from "pkg//*1*/"; +//// import {} from "pkg/test//*2*/"; + +verify.completions({ + marker: ["1"], + exact: ["test"], + isNewIdentifierLocation: true, +}); +verify.completions({ + marker: ["2"], + exact: ["foo.js"], + isNewIdentifierLocation: true, +}); diff --git a/tests/cases/fourslash/server/importCompletions_importsMap3.ts b/tests/cases/fourslash/server/importCompletions_importsMap3.ts index 081317fc00359..01776d771a3db 100644 --- a/tests/cases/fourslash/server/importCompletions_importsMap3.ts +++ b/tests/cases/fourslash/server/importCompletions_importsMap3.ts @@ -26,11 +26,11 @@ verify.completions({ marker: ["1"], - exact: [], + exact: ["#internal"], isNewIdentifierLocation: true, }); verify.completions({ marker: ["2"], - exact: [], + exact: ["foo.js"], isNewIdentifierLocation: true, }); From 07f6c3cbf7b65f9e8185a83d47096a2862b1a105 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= <mateuszburzynski@gmail.com> Date: Wed, 9 Oct 2024 11:52:10 +0200 Subject: [PATCH 06/26] small tweaks --- src/compiler/moduleNameResolver.ts | 30 +++++++++++++------------- src/services/stringCompletions.ts | 34 ++++++++++++++++-------------- 2 files changed, 33 insertions(+), 31 deletions(-) diff --git a/src/compiler/moduleNameResolver.ts b/src/compiler/moduleNameResolver.ts index 75dd9a5465764..9e9f8ca4f48e8 100644 --- a/src/compiler/moduleNameResolver.ts +++ b/src/compiler/moduleNameResolver.ts @@ -2618,8 +2618,8 @@ function loadModuleFromExports(scope: PackageJsonInfo, extensions: Extensions, s mainExport = (scope.contents.packageJsonContent.exports as MapLike<unknown>)["."]; } if (mainExport) { - const loadModuleFromTargetImportOrExport = getLoadModuleFromTargetImportOrExport(extensions, state, cache, redirectedReference, subpath, scope, /*isImports*/ false); - return loadModuleFromTargetImportOrExport(mainExport, "", /*pattern*/ false, "."); + const loadModuleFromTargetExportOrImport = getLoadModuleFromTargetExportOrImport(extensions, state, cache, redirectedReference, subpath, scope, /*isImports*/ false); + return loadModuleFromTargetExportOrImport(mainExport, "", /*pattern*/ false, "."); } } else if (allKeysStartWithDot(scope.contents.packageJsonContent.exports as MapLike<unknown>)) { @@ -2629,7 +2629,7 @@ function loadModuleFromExports(scope: PackageJsonInfo, extensions: Extensions, s } return toSearchResult(/*value*/ undefined); } - const result = loadModuleFromImportsOrExports(extensions, state, cache, redirectedReference, subpath, scope.contents.packageJsonContent.exports, scope, /*isImports*/ false); + const result = loadModuleFromExportsOrImports(extensions, state, cache, redirectedReference, subpath, scope.contents.packageJsonContent.exports, scope, /*isImports*/ false); if (result) { return result; } @@ -2663,7 +2663,7 @@ function loadModuleFromImports(extensions: Extensions, moduleName: string, direc return toSearchResult(/*value*/ undefined); } - const result = loadModuleFromImportsOrExports(extensions, state, cache, redirectedReference, moduleName, scope.contents.packageJsonContent.imports, scope, /*isImports*/ true); + const result = loadModuleFromExportsOrImports(extensions, state, cache, redirectedReference, moduleName, scope.contents.packageJsonContent.imports, scope, /*isImports*/ true); if (result) { return result; } @@ -2693,12 +2693,12 @@ export function comparePatternKeys(a: string, b: string): Comparison { return Comparison.EqualTo; } -function loadModuleFromImportsOrExports(extensions: Extensions, state: ModuleResolutionState, cache: ModuleResolutionCache | undefined, redirectedReference: ResolvedProjectReference | undefined, moduleName: string, lookupTable: object, scope: PackageJsonInfo, isImports: boolean): SearchResult<Resolved> | undefined { - const loadModuleFromTargetImportOrExport = getLoadModuleFromTargetImportOrExport(extensions, state, cache, redirectedReference, moduleName, scope, isImports); +function loadModuleFromExportsOrImports(extensions: Extensions, state: ModuleResolutionState, cache: ModuleResolutionCache | undefined, redirectedReference: ResolvedProjectReference | undefined, moduleName: string, lookupTable: object, scope: PackageJsonInfo, isImports: boolean): SearchResult<Resolved> | undefined { + const loadModuleFromTargetExportOrImport = getLoadModuleFromTargetExportOrImport(extensions, state, cache, redirectedReference, moduleName, scope, isImports); if (!endsWith(moduleName, directorySeparator) && !moduleName.includes("*") && hasProperty(lookupTable, moduleName)) { const target = (lookupTable as { [idx: string]: unknown; })[moduleName]; - return loadModuleFromTargetImportOrExport(target, /*subpath*/ "", /*pattern*/ false, moduleName); + return loadModuleFromTargetExportOrImport(target, /*subpath*/ "", /*pattern*/ false, moduleName); } const expandingKeys = toSorted(filter(getOwnKeys(lookupTable as MapLike<unknown>), k => hasOneAsterisk(k) || endsWith(k, "/")), comparePatternKeys); for (const potentialTarget of expandingKeys) { @@ -2706,17 +2706,17 @@ function loadModuleFromImportsOrExports(extensions: Extensions, state: ModuleRes const target = (lookupTable as { [idx: string]: unknown; })[potentialTarget]; const starPos = potentialTarget.indexOf("*"); const subpath = moduleName.substring(potentialTarget.substring(0, starPos).length, moduleName.length - (potentialTarget.length - 1 - starPos)); - return loadModuleFromTargetImportOrExport(target, subpath, /*pattern*/ true, potentialTarget); + return loadModuleFromTargetExportOrImport(target, subpath, /*pattern*/ true, potentialTarget); } else if (endsWith(potentialTarget, "*") && startsWith(moduleName, potentialTarget.substring(0, potentialTarget.length - 1))) { const target = (lookupTable as { [idx: string]: unknown; })[potentialTarget]; const subpath = moduleName.substring(potentialTarget.length - 1); - return loadModuleFromTargetImportOrExport(target, subpath, /*pattern*/ true, potentialTarget); + return loadModuleFromTargetExportOrImport(target, subpath, /*pattern*/ true, potentialTarget); } else if (startsWith(moduleName, potentialTarget)) { const target = (lookupTable as { [idx: string]: unknown; })[potentialTarget]; const subpath = moduleName.substring(potentialTarget.length); - return loadModuleFromTargetImportOrExport(target, subpath, /*pattern*/ false, potentialTarget); + return loadModuleFromTargetExportOrImport(target, subpath, /*pattern*/ false, potentialTarget); } } @@ -2736,9 +2736,9 @@ function hasOneAsterisk(patternKey: string): boolean { /** * Gets the self-recursive function specialized to retrieving the targeted import/export element for the given resolution configuration */ -function getLoadModuleFromTargetImportOrExport(extensions: Extensions, state: ModuleResolutionState, cache: ModuleResolutionCache | undefined, redirectedReference: ResolvedProjectReference | undefined, moduleName: string, scope: PackageJsonInfo, isImports: boolean) { - return loadModuleFromTargetImportOrExport; - function loadModuleFromTargetImportOrExport(target: unknown, subpath: string, pattern: boolean, key: string): SearchResult<Resolved> | undefined { +function getLoadModuleFromTargetExportOrImport(extensions: Extensions, state: ModuleResolutionState, cache: ModuleResolutionCache | undefined, redirectedReference: ResolvedProjectReference | undefined, moduleName: string, scope: PackageJsonInfo, isImports: boolean) { + return loadModuleFromTargetExportOrImport; + function loadModuleFromTargetExportOrImport(target: unknown, subpath: string, pattern: boolean, key: string): SearchResult<Resolved> | undefined { if (typeof target === "string") { if (!pattern && subpath.length > 0 && !endsWith(target, "/")) { if (state.traceEnabled) { @@ -2801,7 +2801,7 @@ function getLoadModuleFromTargetImportOrExport(extensions: Extensions, state: Mo if (condition === "default" || state.conditions.includes(condition) || isApplicableVersionedTypesKey(state.conditions, condition)) { traceIfEnabled(state, Diagnostics.Matched_0_condition_1, isImports ? "imports" : "exports", condition); const subTarget = (target as MapLike<unknown>)[condition]; - const result = loadModuleFromTargetImportOrExport(subTarget, subpath, pattern, key); + const result = loadModuleFromTargetExportOrImport(subTarget, subpath, pattern, key); if (result) { traceIfEnabled(state, Diagnostics.Resolved_under_condition_0, condition); traceIfEnabled(state, Diagnostics.Exiting_conditional_exports); @@ -2826,7 +2826,7 @@ function getLoadModuleFromTargetImportOrExport(extensions: Extensions, state: Mo return toSearchResult(/*value*/ undefined); } for (const elem of target) { - const result = loadModuleFromTargetImportOrExport(elem, subpath, pattern, key); + const result = loadModuleFromTargetExportOrImport(elem, subpath, pattern, key); if (result) { return result; } diff --git a/src/services/stringCompletions.ts b/src/services/stringCompletions.ts index eca91bb54c02c..fc24a979ad2ac 100644 --- a/src/services/stringCompletions.ts +++ b/src/services/stringCompletions.ts @@ -828,7 +828,7 @@ function getCompletionEntriesForDirectoryFragment( return result; } -function getFilenameWithExtensionOption(name: string, program: Program, extensionOptions: ExtensionOptions, isExportsWildcard: boolean): { name: string; extension: Extension | undefined; } { +function getFilenameWithExtensionOption(name: string, program: Program, extensionOptions: ExtensionOptions, isExportsOrImportsWildcard: boolean): { name: string; extension: Extension | undefined; } { const nonJsResult = moduleSpecifiers.tryGetRealFileNameForNonJsDeclarationFileName(name); if (nonJsResult) { return { name: nonJsResult, extension: tryGetExtensionFromPath(nonJsResult) }; @@ -844,7 +844,7 @@ function getFilenameWithExtensionOption(name: string, program: Program, extensio extensionOptions.importingSourceFile, ).getAllowedEndingsInPreferredOrder(extensionOptions.resolutionMode); - if (isExportsWildcard) { + if (isExportsOrImportsWildcard) { // If we're completing `import {} from "foo/|"` and subpaths are available via `"exports": { "./*": "./src/*" }`, // the completion must be a (potentially extension-swapped) file name. Dropping extensions and index files is not allowed. allowedEndings = allowedEndings.filter(e => e !== ModuleSpecifierEnding.Minimal && e !== ModuleSpecifierEnding.Index); @@ -861,7 +861,7 @@ function getFilenameWithExtensionOption(name: string, program: Program, extensio } if ( - !isExportsWildcard && + !isExportsOrImportsWildcard && (allowedEndings[0] === ModuleSpecifierEnding.Minimal || allowedEndings[0] === ModuleSpecifierEnding.Index) && fileExtensionIsOneOf(name, [Extension.Js, Extension.Jsx, Extension.Ts, Extension.Tsx, Extension.Dts]) ) { @@ -893,11 +893,11 @@ function addCompletionEntriesFromPaths( const lengthB = typeof patternB === "object" ? patternB.prefix.length : b.length; return compareValues(lengthB, lengthA); }; - return addCompletionEntriesFromPathsOrExports(result, /*isExports*/ false, /*isImports*/ false, fragment, baseDirectory, extensionOptions, program, host, moduleSpecifierResolutionHost, getOwnKeys(paths), getPatternsForKey, comparePaths); + return addCompletionEntriesFromPathsOrExportsOrImports(result, /*isExports*/ false, /*isImports*/ false, fragment, baseDirectory, extensionOptions, program, host, moduleSpecifierResolutionHost, getOwnKeys(paths), getPatternsForKey, comparePaths); } /** @returns whether `fragment` was a match for any `paths` (which should indicate whether any other path completions should be offered) */ -function addCompletionEntriesFromPathsOrExports( +function addCompletionEntriesFromPathsOrExportsOrImports( result: NameAndKindSet, isExports: boolean, isImports: boolean, @@ -917,7 +917,7 @@ function addCompletionEntriesFromPathsOrExports( if (key === ".") continue; const keyWithoutLeadingDotSlash = key .replace(/^\.\//, "") // remove leading "./" - + (endsWith(key, "/") ? "*" : ""); // normalize trailing `/` to `/*` + + ((isExports || isImports) && endsWith(key, "/") ? "*" : ""); // normalize trailing `/` to `/*` const patterns = getPatternsForKey(key); if (patterns) { const pathPattern = tryParsePattern(keyWithoutLeadingDotSlash); @@ -942,7 +942,7 @@ function addCompletionEntriesFromPathsOrExports( if (typeof pathPattern === "string" || matchedPath === undefined || comparePaths(keyWithoutLeadingDotSlash, matchedPath) !== Comparison.GreaterThan) { pathResults.push({ matchedPattern: isMatch, - results: getCompletionsForPathMapping(keyWithoutLeadingDotSlash, patterns, fragment, baseDirectory, extensionOptions, (isExports || isImports) && endsWith(keyWithoutLeadingDotSlash, "*"), isImports, program, host, moduleSpecifierResolutionHost) + results: getCompletionsForPathMapping(keyWithoutLeadingDotSlash, patterns, fragment, baseDirectory, extensionOptions, isExports, isImports, program, host, moduleSpecifierResolutionHost) .map(({ name, kind, extension }) => nameAndKind(name, kind, extension)), }); } @@ -1025,7 +1025,7 @@ function getCompletionEntriesForNonRelativeModules( const keys = getOwnKeys(imports); const conditions = getConditions(compilerOptions, mode); - addCompletionEntriesFromPathsOrExports( + addCompletionEntriesFromPathsOrExportsOrImports( result, /*isExports*/ false, /*isImports*/ true, @@ -1079,7 +1079,7 @@ function getCompletionEntriesForNonRelativeModules( const keys = getOwnKeys(exports); const fragmentSubpath = components.join("/") + (components.length && hasTrailingDirectorySeparator(fragment) ? "/" : ""); const conditions = getConditions(compilerOptions, mode); - addCompletionEntriesFromPathsOrExports( + addCompletionEntriesFromPathsOrExportsOrImports( result, /*isExports*/ true, /*isImports*/ false, @@ -1108,7 +1108,7 @@ function getCompletionEntriesForNonRelativeModules( const keys = getOwnKeys(imports); const fragmentSubpath = components.join("/") + (components.length && hasTrailingDirectorySeparator(fragment) ? "/" : ""); const conditions = getConditions(compilerOptions, mode); - addCompletionEntriesFromPathsOrExports( + addCompletionEntriesFromPathsOrExportsOrImports( result, /*isExports*/ false, /*isImports*/ true, @@ -1160,7 +1160,7 @@ function getCompletionsForPathMapping( fragment: string, packageDirectory: string, extensionOptions: ExtensionOptions, - isExportsWildcard: boolean, + isExports: boolean, isImports: boolean, program: Program, host: LanguageServiceHost, @@ -1178,9 +1178,9 @@ function getCompletionsForPathMapping( const remainingFragment = tryRemovePrefix(fragment, parsedPath.prefix); if (remainingFragment === undefined) { const starIsFullPathComponent = endsWith(path, "/*"); - return starIsFullPathComponent ? justPathMappingName(parsedPath.prefix, ScriptElementKind.directory) : flatMap(patterns, pattern => getModulesForPathsPattern("", packageDirectory, pattern, extensionOptions, isExportsWildcard, isImports, program, host, moduleSpecifierResolutionHost)?.map(({ name, ...rest }) => ({ name: parsedPath.prefix + name + parsedPath.suffix, ...rest }))); + return starIsFullPathComponent ? justPathMappingName(parsedPath.prefix, ScriptElementKind.directory) : flatMap(patterns, pattern => getModulesForPathsPattern("", packageDirectory, pattern, extensionOptions, isExports, isImports, program, host, moduleSpecifierResolutionHost)?.map(({ name, ...rest }) => ({ name: parsedPath.prefix + name + parsedPath.suffix, ...rest }))); } - return flatMap(patterns, pattern => getModulesForPathsPattern(remainingFragment, packageDirectory, pattern, extensionOptions, isExportsWildcard, isImports, program, host, moduleSpecifierResolutionHost)); + return flatMap(patterns, pattern => getModulesForPathsPattern(remainingFragment, packageDirectory, pattern, extensionOptions, isExports, isImports, program, host, moduleSpecifierResolutionHost)); function justPathMappingName(name: string, kind: ScriptElementKind.directory | ScriptElementKind.scriptElement): readonly NameAndKind[] { return startsWith(name, fragment) ? [{ name: removeTrailingDirectorySeparator(name), kind, extension: undefined }] : emptyArray; @@ -1192,7 +1192,7 @@ function getModulesForPathsPattern( packageDirectory: string, pattern: string, extensionOptions: ExtensionOptions, - isExportsWildcard: boolean, + isExports: boolean, isImports: boolean, program: Program, host: LanguageServiceHost, @@ -1240,13 +1240,15 @@ function getModulesForPathsPattern( ? matchingSuffixes.map(suffix => "**/*" + suffix) : ["./*"]; + const isExportsOrImportsWildcard = (isExports || isImports) && endsWith(pattern, "/*"); + let matches = mapDefined(tryReadDirectory(host, baseDirectory, extensionOptions.extensionsToSearch, /*exclude*/ undefined, includeGlobs), match => { const trimmedWithPattern = trimPrefixAndSuffix(match, completePrefix); if (trimmedWithPattern) { if (containsSlash(trimmedWithPattern)) { return directoryResult(getPathComponents(removeLeadingDirectorySeparator(trimmedWithPattern))[1]); } - const { name, extension } = getFilenameWithExtensionOption(trimmedWithPattern, program, extensionOptions, isExportsWildcard); + const { name, extension } = getFilenameWithExtensionOption(trimmedWithPattern, program, extensionOptions, isExportsOrImportsWildcard); return nameAndKind(name, ScriptElementKind.scriptElement, extension); } }); @@ -1266,7 +1268,7 @@ function getModulesForPathsPattern( if (containsSlash(trimmedWithPattern)) { return directoryResult(getPathComponents(removeLeadingDirectorySeparator(trimmedWithPattern))[1]); } - const { name, extension } = getFilenameWithExtensionOption(trimmedWithPattern, program, extensionOptions, isExportsWildcard); + const { name, extension } = getFilenameWithExtensionOption(trimmedWithPattern, program, extensionOptions, isExportsOrImportsWildcard); return nameAndKind(name, ScriptElementKind.scriptElement, extension); } }); From 117415a836caffca6b7e062379eedb2db68edd46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= <mateuszburzynski@gmail.com> Date: Wed, 9 Oct 2024 12:15:25 +0200 Subject: [PATCH 07/26] fixed lint --- src/services/stringCompletions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/stringCompletions.ts b/src/services/stringCompletions.ts index fc24a979ad2ac..89d6eee0ef1a9 100644 --- a/src/services/stringCompletions.ts +++ b/src/services/stringCompletions.ts @@ -808,7 +808,7 @@ function getCompletionEntriesForDirectoryFragment( continue; } - const { name, extension } = getFilenameWithExtensionOption(getBaseFileName(filePath), program, extensionOptions, /*isExportsWildcard*/ false); + const { name, extension } = getFilenameWithExtensionOption(getBaseFileName(filePath), program, extensionOptions, /*isExportsOrImportsWildcard*/ false); result.add(nameAndKind(name, ScriptElementKind.scriptElement, extension)); } } From db0d41648f7477baad1c9d65606a0a1071f7fb5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= <mateuszburzynski@gmail.com> Date: Sat, 12 Oct 2024 17:45:57 +0200 Subject: [PATCH 08/26] pass `moduleSpecifierResolutionHost` everywhere --- src/services/stringCompletions.ts | 45 ++++++++++++++++--------------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/src/services/stringCompletions.ts b/src/services/stringCompletions.ts index 89d6eee0ef1a9..6ff223d2e163b 100644 --- a/src/services/stringCompletions.ts +++ b/src/services/stringCompletions.ts @@ -206,7 +206,7 @@ export function getStringLiteralCompletions( includeSymbol: boolean, ): CompletionInfo | undefined { if (isInReferenceComment(sourceFile, position)) { - const entries = getTripleSlashReferenceCompletion(sourceFile, position, program, host); + const entries = getTripleSlashReferenceCompletion(sourceFile, position, program, host, createModuleSpecifierResolutionHost(program, host)); return entries && convertPathCompletions(entries); } if (isInString(sourceFile, position, contextToken)) { @@ -647,11 +647,12 @@ function getStringLiteralCompletionsFromModuleNamesWorker(sourceFile: SourceFile const scriptDirectory = getDirectoryPath(scriptPath); const compilerOptions = program.getCompilerOptions(); const typeChecker = program.getTypeChecker(); + const moduleSpecifierResolutionHost = createModuleSpecifierResolutionHost(program, host); const extensionOptions = getExtensionOptions(compilerOptions, ReferenceKind.ModuleSpecifier, sourceFile, typeChecker, preferences, mode); return isPathRelativeToScript(literalValue) || !compilerOptions.baseUrl && !compilerOptions.paths && (isRootedDiskPath(literalValue) || isUrl(literalValue)) - ? getCompletionEntriesForRelativeModules(literalValue, scriptDirectory, program, host, scriptPath, extensionOptions) - : getCompletionEntriesForNonRelativeModules(literalValue, scriptDirectory, mode, program, host, createModuleSpecifierResolutionHost(program, host), extensionOptions); + ? getCompletionEntriesForRelativeModules(literalValue, scriptDirectory, program, host, moduleSpecifierResolutionHost, scriptPath, extensionOptions) + : getCompletionEntriesForNonRelativeModules(literalValue, scriptDirectory, mode, program, host, moduleSpecifierResolutionHost, extensionOptions); } interface ExtensionOptions { @@ -671,7 +672,7 @@ function getExtensionOptions(compilerOptions: CompilerOptions, referenceKind: Re resolutionMode, }; } -function getCompletionEntriesForRelativeModules(literalValue: string, scriptDirectory: string, program: Program, host: LanguageServiceHost, scriptPath: Path, extensionOptions: ExtensionOptions) { +function getCompletionEntriesForRelativeModules(literalValue: string, scriptDirectory: string, program: Program, host: LanguageServiceHost, moduleSpecifierResolutionHost: ModuleSpecifierResolutionHost, scriptPath: Path, extensionOptions: ExtensionOptions) { const compilerOptions = program.getCompilerOptions(); if (compilerOptions.rootDirs) { return getCompletionEntriesForDirectoryFragmentWithRootDirs( @@ -681,11 +682,12 @@ function getCompletionEntriesForRelativeModules(literalValue: string, scriptDire extensionOptions, program, host, + moduleSpecifierResolutionHost, scriptPath, ); } else { - return arrayFrom(getCompletionEntriesForDirectoryFragment(literalValue, scriptDirectory, extensionOptions, program, host, /*moduleSpecifierIsRelative*/ true, scriptPath).values()); + return arrayFrom(getCompletionEntriesForDirectoryFragment(literalValue, scriptDirectory, extensionOptions, program, host, moduleSpecifierResolutionHost, /*moduleSpecifierIsRelative*/ true, scriptPath).values()); } } @@ -723,13 +725,13 @@ function getBaseDirectoriesFromRootDirs(rootDirs: string[], basePath: string, sc ); } -function getCompletionEntriesForDirectoryFragmentWithRootDirs(rootDirs: string[], fragment: string, scriptDirectory: string, extensionOptions: ExtensionOptions, program: Program, host: LanguageServiceHost, exclude: string): readonly NameAndKind[] { +function getCompletionEntriesForDirectoryFragmentWithRootDirs(rootDirs: string[], fragment: string, scriptDirectory: string, extensionOptions: ExtensionOptions, program: Program, host: LanguageServiceHost, moduleSpecifierResolutionHost: ModuleSpecifierResolutionHost, exclude: string): readonly NameAndKind[] { const compilerOptions = program.getCompilerOptions(); const basePath = compilerOptions.project || host.getCurrentDirectory(); const ignoreCase = !(host.useCaseSensitiveFileNames && host.useCaseSensitiveFileNames()); const baseDirectories = getBaseDirectoriesFromRootDirs(rootDirs, basePath, scriptDirectory, ignoreCase); return deduplicate<NameAndKind>( - flatMap(baseDirectories, baseDirectory => arrayFrom(getCompletionEntriesForDirectoryFragment(fragment, baseDirectory, extensionOptions, program, host, /*moduleSpecifierIsRelative*/ true, exclude).values())), + flatMap(baseDirectories, baseDirectory => arrayFrom(getCompletionEntriesForDirectoryFragment(fragment, baseDirectory, extensionOptions, program, host, moduleSpecifierResolutionHost, /*moduleSpecifierIsRelative*/ true, exclude).values())), (itemA, itemB) => itemA.name === itemB.name && itemA.kind === itemB.kind && itemA.extension === itemB.extension, ); } @@ -747,6 +749,7 @@ function getCompletionEntriesForDirectoryFragment( extensionOptions: ExtensionOptions, program: Program, host: LanguageServiceHost, + moduleSpecifierResolutionHost: ModuleSpecifierResolutionHost, moduleSpecifierIsRelative: boolean, exclude?: string, result = createNameAndKindSet(), @@ -785,7 +788,7 @@ function getCompletionEntriesForDirectoryFragment( if (versionPaths) { const packageDirectory = getDirectoryPath(packageJsonPath); const pathInPackage = absolutePath.slice(ensureTrailingDirectorySeparator(packageDirectory).length); - if (addCompletionEntriesFromPaths(result, pathInPackage, packageDirectory, extensionOptions, program, host, /*moduleSpecifierResolutionHost*/ undefined, versionPaths)) { + if (addCompletionEntriesFromPaths(result, pathInPackage, packageDirectory, extensionOptions, program, host, moduleSpecifierResolutionHost, versionPaths)) { // A true result means one of the `versionPaths` was matched, which will block relative resolution // to files and folders from here. All reachable paths given the pattern match are already added. return result; @@ -882,7 +885,7 @@ function addCompletionEntriesFromPaths( extensionOptions: ExtensionOptions, program: Program, host: LanguageServiceHost, - moduleSpecifierResolutionHost: ModuleSpecifierResolutionHost | undefined, + moduleSpecifierResolutionHost: ModuleSpecifierResolutionHost, paths: MapLike<string[]>, ) { const getPatternsForKey = (key: string) => paths[key]; @@ -906,7 +909,7 @@ function addCompletionEntriesFromPathsOrExportsOrImports( extensionOptions: ExtensionOptions, program: Program, host: LanguageServiceHost, - moduleSpecifierResolutionHost: ModuleSpecifierResolutionHost | undefined, + moduleSpecifierResolutionHost: ModuleSpecifierResolutionHost, keys: readonly string[], getPatternsForKey: (key: string) => string[] | undefined, comparePaths: (a: string, b: string) => Comparison, @@ -978,7 +981,7 @@ function getCompletionEntriesForNonRelativeModules( if (baseUrl) { const absolute = normalizePath(combinePaths(host.getCurrentDirectory(), baseUrl)); - getCompletionEntriesForDirectoryFragment(fragment, absolute, extensionOptions, program, host, /*moduleSpecifierIsRelative*/ false, /*exclude*/ undefined, result); + getCompletionEntriesForDirectoryFragment(fragment, absolute, extensionOptions, program, host, moduleSpecifierResolutionHost, /*moduleSpecifierIsRelative*/ false, /*exclude*/ undefined, result); } if (paths) { @@ -991,7 +994,7 @@ function getCompletionEntriesForNonRelativeModules( result.add(nameAndKind(ambientName, ScriptElementKind.externalModuleName, /*extension*/ undefined)); } - getCompletionEntriesFromTypings(host, program, scriptPath, fragmentDirectory, extensionOptions, result); + getCompletionEntriesFromTypings(program, host, moduleSpecifierResolutionHost, scriptPath, fragmentDirectory, extensionOptions, result); if (moduleResolutionUsesNodeModules(moduleResolution)) { // If looking for a global package name, don't just include everything in `node_modules` because that includes dependencies' own dependencies. @@ -1011,7 +1014,7 @@ function getCompletionEntriesForNonRelativeModules( let ancestorLookup: (directory: string) => void | undefined = ancestor => { const nodeModules = combinePaths(ancestor, "node_modules"); if (tryDirectoryExists(host, nodeModules)) { - getCompletionEntriesForDirectoryFragment(fragment, nodeModules, extensionOptions, program, host, /*moduleSpecifierIsRelative*/ false, /*exclude*/ undefined, result); + getCompletionEntriesForDirectoryFragment(fragment, nodeModules, extensionOptions, program, host, moduleSpecifierResolutionHost, /*moduleSpecifierIsRelative*/ false, /*exclude*/ undefined, result); } if (!seenPackageScope) { const packageFile = combinePaths(ancestor, "package.json"); @@ -1164,7 +1167,7 @@ function getCompletionsForPathMapping( isImports: boolean, program: Program, host: LanguageServiceHost, - moduleSpecifierResolutionHost: ModuleSpecifierResolutionHost | undefined, + moduleSpecifierResolutionHost: ModuleSpecifierResolutionHost, ): readonly NameAndKind[] { const parsedPath = tryParsePattern(path); if (!parsedPath) { @@ -1196,7 +1199,7 @@ function getModulesForPathsPattern( isImports: boolean, program: Program, host: LanguageServiceHost, - moduleSpecifierResolutionHost: ModuleSpecifierResolutionHost | undefined, + moduleSpecifierResolutionHost: ModuleSpecifierResolutionHost, ): readonly NameAndKind[] | undefined { if (!host.readDirectory) { return undefined; @@ -1225,7 +1228,7 @@ function getModulesForPathsPattern( const matchingSuffixes = [...(inputExtension ? inputExtension.map(ext => changeExtension(normalizedSuffix, ext)) : []), declarationExtension && changeExtension(normalizedSuffix, declarationExtension), normalizedSuffix].filter(isString); // Need to normalize after combining: If we combinePaths("a", "../b"), we want "b" and not "a/../b". const baseDirectory = normalizePath(combinePaths(packageDirectory, expandedPrefixDirectory)); - const inputBaseDirectory = isImports && getPossibleOriginalInputPathWithoutChangingExt(baseDirectory, !hostUsesCaseSensitiveFileNames(moduleSpecifierResolutionHost!), program.getCompilerOptions().outDir, () => moduleSpecifierResolutionHost!.getCommonSourceDirectory()); + const inputBaseDirectory = isImports && getPossibleOriginalInputPathWithoutChangingExt(baseDirectory, !hostUsesCaseSensitiveFileNames(moduleSpecifierResolutionHost), program.getCompilerOptions().outDir, () => moduleSpecifierResolutionHost.getCommonSourceDirectory()); const completePrefix = fragmentHasPath ? baseDirectory : ensureTrailingDirectorySeparator(baseDirectory) + normalizedPrefixBase; // If we have a suffix, then we read the directory all the way down to avoid returning completions for @@ -1310,7 +1313,7 @@ function getAmbientModuleCompletions(fragment: string, fragmentDirectory: string return nonRelativeModuleNames; } -function getTripleSlashReferenceCompletion(sourceFile: SourceFile, position: number, program: Program, host: LanguageServiceHost): readonly PathCompletion[] | undefined { +function getTripleSlashReferenceCompletion(sourceFile: SourceFile, position: number, program: Program, host: LanguageServiceHost, moduleSpecifierResolutionHost: ModuleSpecifierResolutionHost): readonly PathCompletion[] | undefined { const compilerOptions = program.getCompilerOptions(); const token = getTokenAtPosition(sourceFile, position); const commentRanges = getLeadingCommentRanges(sourceFile.text, token.pos); @@ -1326,13 +1329,13 @@ function getTripleSlashReferenceCompletion(sourceFile: SourceFile, position: num const [, prefix, kind, toComplete] = match; const scriptPath = getDirectoryPath(sourceFile.path); - const names = kind === "path" ? getCompletionEntriesForDirectoryFragment(toComplete, scriptPath, getExtensionOptions(compilerOptions, ReferenceKind.Filename, sourceFile), program, host, /*moduleSpecifierIsRelative*/ true, sourceFile.path) - : kind === "types" ? getCompletionEntriesFromTypings(host, program, scriptPath, getFragmentDirectory(toComplete), getExtensionOptions(compilerOptions, ReferenceKind.ModuleSpecifier, sourceFile)) + const names = kind === "path" ? getCompletionEntriesForDirectoryFragment(toComplete, scriptPath, getExtensionOptions(compilerOptions, ReferenceKind.Filename, sourceFile), program, host, moduleSpecifierResolutionHost, /*moduleSpecifierIsRelative*/ true, sourceFile.path) + : kind === "types" ? getCompletionEntriesFromTypings(program, host, moduleSpecifierResolutionHost, scriptPath, getFragmentDirectory(toComplete), getExtensionOptions(compilerOptions, ReferenceKind.ModuleSpecifier, sourceFile)) : Debug.fail(); return addReplacementSpans(toComplete, range.pos + prefix.length, arrayFrom(names.values())); } -function getCompletionEntriesFromTypings(host: LanguageServiceHost, program: Program, scriptPath: string, fragmentDirectory: string | undefined, extensionOptions: ExtensionOptions, result = createNameAndKindSet()): NameAndKindSet { +function getCompletionEntriesFromTypings(program: Program, host: LanguageServiceHost, moduleSpecifierResolutionHost: ModuleSpecifierResolutionHost, scriptPath: string, fragmentDirectory: string | undefined, extensionOptions: ExtensionOptions, result = createNameAndKindSet()): NameAndKindSet { const options = program.getCompilerOptions(); // Check for typings specified in compiler options const seen = new Map<string, true>(); @@ -1368,7 +1371,7 @@ function getCompletionEntriesFromTypings(host: LanguageServiceHost, program: Pro const baseDirectory = combinePaths(directory, typeDirectoryName); const remainingFragment = tryRemoveDirectoryPrefix(fragmentDirectory, packageName, hostGetCanonicalFileName(host)); if (remainingFragment !== undefined) { - getCompletionEntriesForDirectoryFragment(remainingFragment, baseDirectory, extensionOptions, program, host, /*moduleSpecifierIsRelative*/ false, /*exclude*/ undefined, result); + getCompletionEntriesForDirectoryFragment(remainingFragment, baseDirectory, extensionOptions, program, host, moduleSpecifierResolutionHost, /*moduleSpecifierIsRelative*/ false, /*exclude*/ undefined, result); } } } From 294c7da063addd28c66dcd21c49eaed51bf08d9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= <mateuszburzynski@gmail.com> Date: Sat, 12 Oct 2024 21:07:54 +0200 Subject: [PATCH 09/26] `getMatchesWithPrefix` helper --- src/services/stringCompletions.ts | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/src/services/stringCompletions.ts b/src/services/stringCompletions.ts index 6ff223d2e163b..e5da2e2b7a120 100644 --- a/src/services/stringCompletions.ts +++ b/src/services/stringCompletions.ts @@ -1245,16 +1245,7 @@ function getModulesForPathsPattern( const isExportsOrImportsWildcard = (isExports || isImports) && endsWith(pattern, "/*"); - let matches = mapDefined(tryReadDirectory(host, baseDirectory, extensionOptions.extensionsToSearch, /*exclude*/ undefined, includeGlobs), match => { - const trimmedWithPattern = trimPrefixAndSuffix(match, completePrefix); - if (trimmedWithPattern) { - if (containsSlash(trimmedWithPattern)) { - return directoryResult(getPathComponents(removeLeadingDirectorySeparator(trimmedWithPattern))[1]); - } - const { name, extension } = getFilenameWithExtensionOption(trimmedWithPattern, program, extensionOptions, isExportsOrImportsWildcard); - return nameAndKind(name, ScriptElementKind.scriptElement, extension); - } - }); + let matches = getMatchesWithPrefix(baseDirectory, completePrefix); // If we had a suffix, we already recursively searched for all possible files that could match // it and returned the directories leading to those files. Otherwise, assume any directory could @@ -1265,8 +1256,16 @@ function getModulesForPathsPattern( if (inputBaseDirectory && inputBaseDirectory !== baseDirectory) { const completeInputPrefix = fragmentHasPath ? inputBaseDirectory : ensureTrailingDirectorySeparator(inputBaseDirectory) + normalizedPrefixBase; - const inputMatches = mapDefined(tryReadDirectory(host, inputBaseDirectory, extensionOptions.extensionsToSearch, /*exclude*/ undefined, includeGlobs), match => { - const trimmedWithPattern = trimPrefixAndSuffix(match, completeInputPrefix); + matches = concatenate(matches, getMatchesWithPrefix(inputBaseDirectory, completeInputPrefix)); + } + + matches = concatenate(matches, directories); + + return matches; + + function getMatchesWithPrefix(directory: string, prefix: string) { + return mapDefined(tryReadDirectory(host, directory, extensionOptions.extensionsToSearch, /*exclude*/ undefined, includeGlobs), match => { + const trimmedWithPattern = trimPrefixAndSuffix(match, prefix); if (trimmedWithPattern) { if (containsSlash(trimmedWithPattern)) { return directoryResult(getPathComponents(removeLeadingDirectorySeparator(trimmedWithPattern))[1]); @@ -1275,13 +1274,8 @@ function getModulesForPathsPattern( return nameAndKind(name, ScriptElementKind.scriptElement, extension); } }); - matches = concatenate(matches, inputMatches); } - matches = concatenate(matches, directories); - - return matches; - function trimPrefixAndSuffix(path: string, prefix: string): string | undefined { return firstDefined(matchingSuffixes, suffix => { const inner = withoutStartAndEnd(normalizePath(path), prefix, suffix); From 0d0b8814d197bb2c2aa79cdf926699f3957ebc78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= <mateuszburzynski@gmail.com> Date: Sun, 13 Oct 2024 22:07:04 +0200 Subject: [PATCH 10/26] add more tests but break some of the existing ones --- src/services/stringCompletions.ts | 9 ++- ...ackageJsonImportsBundlerNoNodeCondition.ts | 31 +++++++++ ...tionsPackageJsonImportsCustomConditions.ts | 28 ++++++++ ...hCompletionsPackageJsonImportsWildcard1.ts | 45 +++++++++++++ ...CompletionsPackageJsonImportsWildcard10.ts | 28 ++++++++ ...CompletionsPackageJsonImportsWildcard11.ts | 27 ++++++++ ...hCompletionsPackageJsonImportsWildcard2.ts | 42 ++++++++++++ ...hCompletionsPackageJsonImportsWildcard3.ts | 45 +++++++++++++ ...hCompletionsPackageJsonImportsWildcard4.ts | 64 +++++++++++++++++++ ...hCompletionsPackageJsonImportsWildcard5.ts | 56 ++++++++++++++++ ...hCompletionsPackageJsonImportsWildcard6.ts | 31 +++++++++ ...hCompletionsPackageJsonImportsWildcard7.ts | 25 ++++++++ ...hCompletionsPackageJsonImportsWildcard8.ts | 28 ++++++++ ...hCompletionsPackageJsonImportsWildcard9.ts | 26 ++++++++ 14 files changed, 480 insertions(+), 5 deletions(-) create mode 100644 tests/cases/fourslash/pathCompletionsPackageJsonImportsBundlerNoNodeCondition.ts create mode 100644 tests/cases/fourslash/pathCompletionsPackageJsonImportsCustomConditions.ts create mode 100644 tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard1.ts create mode 100644 tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard10.ts create mode 100644 tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard11.ts create mode 100644 tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard2.ts create mode 100644 tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard3.ts create mode 100644 tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard4.ts create mode 100644 tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard5.ts create mode 100644 tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard6.ts create mode 100644 tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard7.ts create mode 100644 tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard8.ts create mode 100644 tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard9.ts diff --git a/src/services/stringCompletions.ts b/src/services/stringCompletions.ts index e5da2e2b7a120..b4f30f3323d6d 100644 --- a/src/services/stringCompletions.ts +++ b/src/services/stringCompletions.ts @@ -1221,14 +1221,13 @@ function getModulesForPathsPattern( // Try and expand the prefix to include any path from the fragment so that we can limit the readDirectory call const expandedPrefixDirectory = fragmentHasPath ? combinePaths(normalizedPrefixDirectory, normalizedPrefixBase + fragmentDirectory) : normalizedPrefixDirectory; - - const normalizedSuffix = normalizePath(parsed.suffix); - const declarationExtension = normalizedSuffix && getDeclarationEmitExtensionForPath("_" + normalizedSuffix); - const inputExtension = isImports && normalizedSuffix ? getPossibleOriginalInputExtensionForExtension("_" + normalizedSuffix) : undefined; - const matchingSuffixes = [...(inputExtension ? inputExtension.map(ext => changeExtension(normalizedSuffix, ext)) : []), declarationExtension && changeExtension(normalizedSuffix, declarationExtension), normalizedSuffix].filter(isString); // Need to normalize after combining: If we combinePaths("a", "../b"), we want "b" and not "a/../b". const baseDirectory = normalizePath(combinePaths(packageDirectory, expandedPrefixDirectory)); const inputBaseDirectory = isImports && getPossibleOriginalInputPathWithoutChangingExt(baseDirectory, !hostUsesCaseSensitiveFileNames(moduleSpecifierResolutionHost), program.getCompilerOptions().outDir, () => moduleSpecifierResolutionHost.getCommonSourceDirectory()); + const normalizedSuffix = normalizePath(parsed.suffix); + const declarationExtension = normalizedSuffix && getDeclarationEmitExtensionForPath("_" + normalizedSuffix); + const inputExtension = inputBaseDirectory && inputBaseDirectory !== baseDirectory && normalizedSuffix ? getPossibleOriginalInputExtensionForExtension("_" + normalizedSuffix) : undefined; + const matchingSuffixes = [...(inputExtension ? inputExtension.map(ext => changeExtension(normalizedSuffix, ext)) : []), declarationExtension && changeExtension(normalizedSuffix, declarationExtension), normalizedSuffix].filter(isString); const completePrefix = fragmentHasPath ? baseDirectory : ensureTrailingDirectorySeparator(baseDirectory) + normalizedPrefixBase; // If we have a suffix, then we read the directory all the way down to avoid returning completions for diff --git a/tests/cases/fourslash/pathCompletionsPackageJsonImportsBundlerNoNodeCondition.ts b/tests/cases/fourslash/pathCompletionsPackageJsonImportsBundlerNoNodeCondition.ts new file mode 100644 index 0000000000000..324c51f0a696b --- /dev/null +++ b/tests/cases/fourslash/pathCompletionsPackageJsonImportsBundlerNoNodeCondition.ts @@ -0,0 +1,31 @@ +/// <reference path="fourslash.ts" /> + +// @moduleResolution: bundler + +// @Filename: /package.json +//// { +//// "name": "foo", +//// "imports": { +//// "#only-for-node": { +//// "node": "./something.js" +//// }, +//// "#for-everywhere": "./other.js", +//// } +//// } + +// @Filename: /something.d.ts +//// export const index = 0; + +// @Filename: /other.d.ts +//// export const index = 0; + +// @Filename: /index.ts +//// import { } from "/**/"; + +verify.completions({ + marker: "", + isNewIdentifierLocation: true, + exact: [ + { name: "#for-everywhere", kind: "script", kindModifiers: "" }, + ] +}); diff --git a/tests/cases/fourslash/pathCompletionsPackageJsonImportsCustomConditions.ts b/tests/cases/fourslash/pathCompletionsPackageJsonImportsCustomConditions.ts new file mode 100644 index 0000000000000..81a4da924773e --- /dev/null +++ b/tests/cases/fourslash/pathCompletionsPackageJsonImportsCustomConditions.ts @@ -0,0 +1,28 @@ +/// <reference path="fourslash.ts" /> + +// @module: nodenext +// @customConditions: custom-condition + +// @Filename: /package.json +//// { +//// "name": "foo", +//// "imports": { +//// "#only-with-custom-conditions": { +//// "custom-condition": "./something.js" +//// }, +//// } +//// } + +// @Filename: /something.d.ts +//// export const index = 0; + +// @Filename: /index.ts +//// import { } from "/**/"; + +verify.completions({ + marker: "", + isNewIdentifierLocation: true, + exact: [ + { name: "#only-with-custom-conditions", kind: "script", kindModifiers: "" }, + ] +}); diff --git a/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard1.ts b/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard1.ts new file mode 100644 index 0000000000000..274412a2fe8d5 --- /dev/null +++ b/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard1.ts @@ -0,0 +1,45 @@ +/// <reference path="fourslash.ts" /> + +// @module: nodenext + +// @Filename: /package.json +//// { +//// "name": "foo", +//// "main": "dist/index.js", +//// "module": "dist/index.mjs", +//// "types": "dist/index.d.ts", +//// "imports": { +//// "#*": { +//// "types": "./dist/*.d.ts", +//// "import": "./dist/*.mjs", +//// "default": "./dist/*.js" +//// }, +//// "#arguments": { +//// "types": "./dist/arguments/index.d.ts", +//// "import": "./dist/arguments/index.mjs", +//// "default": "./dist/arguments/index.js" +//// } +//// } +//// } + +// @Filename: /dist/index.d.ts +//// export const index = 0; + +// @Filename: /dist/blah.d.ts +//// export const blah = 0; + +// @Filename: /dist/arguments/index.d.ts +//// export const arguments = 0; + +// @Filename: /index.mts +//// import { } from "/**/"; + +verify.completions({ + marker: "", + isNewIdentifierLocation: true, + exact: [ + { name: "#blah", kind: "script", kindModifiers: "" }, + { name: "#index", kind: "script", kindModifiers: "" }, + { name: "#arguments", kind: "script", kindModifiers: "" }, + ] +}); diff --git a/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard10.ts b/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard10.ts new file mode 100644 index 0000000000000..129e291e4c2ae --- /dev/null +++ b/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard10.ts @@ -0,0 +1,28 @@ +/// <reference path="fourslash.ts" /> + +// @module: preserve +// @moduleResolution: bundler +// @allowImportingTsExtensions: true +// @jsx: react + +// @Filename: /package.json +//// { +//// "name": "repo", +//// "imports": { +//// "#*": "./src/*" +//// } +//// } + +// @Filename: /src/card.tsx +//// export {}; + +// @Filename: /main.ts +//// import { } from "/**/"; + +verify.completions({ + marker: "", + isNewIdentifierLocation: true, + exact: [ + { name: "#card.tsx", kind: "script", kindModifiers: ".tsx" }, + ], +}); diff --git a/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard11.ts b/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard11.ts new file mode 100644 index 0000000000000..a355b245eb908 --- /dev/null +++ b/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard11.ts @@ -0,0 +1,27 @@ +/// <reference path="fourslash.ts" /> + +// @module: preserve +// @moduleResolution: bundler +// @jsx: react + +// @Filename: /package.json +//// { +//// "name": "repo", +//// "imports": { +//// "#*": "./src/*" +//// } +//// } + +// @Filename: /src/card.tsx +//// export {}; + +// @Filename: /main.ts +//// import { } from "/**/"; + +verify.completions({ + marker: "", + isNewIdentifierLocation: true, + exact: [ + { name: "#card.js", kind: "script", kindModifiers: ".js" }, + ], +}); diff --git a/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard2.ts b/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard2.ts new file mode 100644 index 0000000000000..0e53d02ecc378 --- /dev/null +++ b/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard2.ts @@ -0,0 +1,42 @@ +/// <reference path="fourslash.ts" /> + +// @module: nodenext + +// @Filename: /package.json +//// { +//// "name": "salesforce-pageobjects", +//// "version": "1.0.0", +//// "imports": { +//// "#*": { +//// "types": "./dist/*.d.ts", +//// "import": "./dist/*.mjs", +//// "default": "./dist/*.js" +//// } +//// } +//// } + +// @Filename: /dist/action/pageObjects/actionRenderer.d.ts +//// export const actionRenderer = 0; + +// @Filename: /index.mts +//// import { } from "/**/"; + +verify.completions({ + marker: "", + isNewIdentifierLocation: true, + exact: [{ name: "#action", kind: "directory" }] +}); + +edit.insert("#action/"); + +verify.completions({ + isNewIdentifierLocation: true, + exact: [{ name: "pageObjects", kind: "directory" }], +}); + +edit.insert("pageObjects/"); + +verify.completions({ + isNewIdentifierLocation: true, + exact: [{ name: "actionRenderer", kind: "script" }], +}); diff --git a/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard3.ts b/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard3.ts new file mode 100644 index 0000000000000..e5ca68e643938 --- /dev/null +++ b/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard3.ts @@ -0,0 +1,45 @@ +/// <reference path="fourslash.ts" /> + +// @module: nodenext + +// @Filename: /package.json +//// { +//// "types": "index.d.ts", +//// "imports": { +//// "#component-*": { +//// "types@>=4.3.5": "types/components/*.d.ts" +//// } +//// } +//// } + +// @Filename: /nope.d.ts +//// export const nope = 0; + +// @Filename: /types/components/index.d.ts +//// export const index = 0; + +// @Filename: /types/components/blah.d.ts +//// export const blah = 0; + +// @Filename: /types/components/subfolder/one.d.ts +//// export const one = 0; + +// @Filename: /a.ts +//// import { } from "/**/"; + +verify.completions({ + marker: "", + isNewIdentifierLocation: true, + exact: [ + { name: "#component-blah", kind: "script" }, + { name: "#component-index", kind: "script" }, + { name: "#component-subfolder", kind: "directory" }, + ], +}); + +edit.insert("#component-subfolder/"); + +verify.completions({ + isNewIdentifierLocation: true, + exact: [{ name: "one", kind: "script" }], +}); diff --git a/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard4.ts b/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard4.ts new file mode 100644 index 0000000000000..045b25b5e0607 --- /dev/null +++ b/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard4.ts @@ -0,0 +1,64 @@ +/// <reference path="fourslash.ts" /> + +// @module: nodenext + +// @Filename: /package.json +//// { +//// "types": "index.d.ts", +//// "exports": { +//// "#*": "dist/*", +//// "#foo/*": "dist/*", +//// "#bar/*": "dist/*", +//// "#exact-match": "dist/index.d.ts" +//// } +//// } + +// @Filename: /nope.d.ts +//// export const nope = 0; + +// @Filename: /dist/index.d.ts +//// export const index = 0; + +// @Filename: /dist/blah.d.ts +//// export const blah = 0; + +// @Filename: /dist/foo/onlyInFooFolder.d.ts +//// export const foo = 0; + +// @Filename: /dist/subfolder/one.d.ts +//// export const one = 0; + +// @Filename: /a.mts +//// import { } from "/**/"; + +verify.completions({ + marker: "", + isNewIdentifierLocation: true, + exact: [ + { name: "#blah.js", kind: "script", kindModifiers: ".js" }, + { name: "#index.js", kind: "script", kindModifiers: ".js" }, + { name: "#foo", kind: "directory" }, + { name: "#subfolder", kind: "directory" }, + { name: "#bar", kind: "directory" }, + { name: "#exact-match", kind: "script" }, + ], +}); + +edit.insert("#foo/"); + +verify.completions({ + isNewIdentifierLocation: true, + exact: [ + { name: "#blah.js", kind: "script", kindModifiers: ".js" }, + { name: "#index.js", kind: "script", kindModifiers: ".js" }, + { name: "#foo", kind: "directory" }, + { name: "#subfolder", kind: "directory" }, + ], +}); + +edit.insert("#foo/"); + +verify.completions({ + isNewIdentifierLocation: true, + exact: [{ name: "#onlyInFooFolder.js", kind: "script", kindModifiers: ".js" }], +}); diff --git a/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard5.ts b/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard5.ts new file mode 100644 index 0000000000000..4217ece6826c9 --- /dev/null +++ b/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard5.ts @@ -0,0 +1,56 @@ +/// <reference path="fourslash.ts" /> + +// @module: nodenext + +// @Filename: /package.json +//// { +//// "name": "foo", +//// "main": "dist/index.js", +//// "module": "dist/index.mjs", +//// "types": "dist/index.d.ts", +//// "imports": { +//// "#*": { +//// "import": { +//// "types": "./dist/types/*.d.mts", +//// "default": "./dist/esm/*.mjs" +//// }, +//// "default": { +//// "types": "./dist/types/*.d.ts", +//// "default": "./dist/cjs/*.js" +//// } +//// }, +//// "#only-in-cjs": { +//// "require": { +//// "types": "./dist/types/only-in-cjs/index.d.ts", +//// "default": "./dist/cjs/only-in-cjs/index.js" +//// } +//// } +//// } +//// } + +// @Filename: /dist/types/index.d.mts +//// export const index = 0; + +// @Filename: /dist/types/index.d.ts +//// export const index = 0; + +// @Filename: /dist/types/blah.d.mts +//// export const blah = 0; + +// @Filename: /dist/types/blah.d.ts +//// export const blah = 0; + +// @Filename: /dist/types/only-in-cjs/index.d.ts +//// export const onlyInCjs = 0; + +// @Filename: /index.mts +//// import { } from "/**/"; + +verify.completions({ + marker: "", + isNewIdentifierLocation: true, + exact: [ + { name: "#blah", kind: "script", kindModifiers: "" }, + { name: "#index", kind: "script", kindModifiers: "" }, + ] +}); diff --git a/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard6.ts b/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard6.ts new file mode 100644 index 0000000000000..265fbe322404e --- /dev/null +++ b/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard6.ts @@ -0,0 +1,31 @@ +/// <reference path="fourslash.ts" /> + +// @module: nodenext + +// @Filename: /package.json +//// { +//// "name": "foo", +//// "main": "dist/index.js", +//// "module": "dist/index.mjs", +//// "types": "dist/index.d.ts", +//// "imports": { +//// "#*": "./dist/*?.d.ts" +//// } +//// } + +// @Filename: /dist/index.d.ts +//// export const index = 0; + +// @Filename: /dist/blah?.d.ts +//// export const blah = 0; + +// @Filename: /index.mts +//// import { } from "/**/"; + +verify.completions({ + marker: "", + isNewIdentifierLocation: true, + exact: [ + { name: "#blah", kind: "script", kindModifiers: "" }, + ] +}); diff --git a/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard7.ts b/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard7.ts new file mode 100644 index 0000000000000..42446088f6586 --- /dev/null +++ b/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard7.ts @@ -0,0 +1,25 @@ +/// <reference path="fourslash.ts" /> + +// @module: nodenext + +// @Filename: /package.json +//// { +//// "name": "foo", +//// "imports": { +//// "#*": "./dist/*.js" +//// } +//// } + +// @Filename: /dist/blah.d.ts +//// export const blah = 0; + +// @Filename: /index.mts +//// import { } from "/**/"; + +verify.completions({ + marker: "", + isNewIdentifierLocation: true, + exact: [ + { name: "#blah", kind: "script", kindModifiers: "" }, + ] +}); diff --git a/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard8.ts b/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard8.ts new file mode 100644 index 0000000000000..b66761c43257d --- /dev/null +++ b/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard8.ts @@ -0,0 +1,28 @@ +/// <reference path="fourslash.ts" /> + +// @module: nodenext + +// @Filename: /package.json +//// { +//// "name": "foo", +//// "imports": { +//// "#*": "./dist/*.js" +//// } +//// } + +// @Filename: /dist/blah.js +//// export const blah = 0; + +// @Filename: /dist/blah.d.ts +//// export declare const blah: 0; + +// @Filename: /index.mts +//// import { } from "/**/"; + +verify.completions({ + marker: "", + isNewIdentifierLocation: true, + exact: [ + { name: "#blah", kind: "script", kindModifiers: "" }, + ] +}); diff --git a/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard9.ts b/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard9.ts new file mode 100644 index 0000000000000..5e3ba519e23c3 --- /dev/null +++ b/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard9.ts @@ -0,0 +1,26 @@ +/// <reference path="fourslash.ts" /> + +// @module: nodenext +// @allowJs: true + +// @Filename: /package.json +//// { +//// "name": "foo", +//// "imports": { +//// "#*": "./dist/*.js" +//// } +//// } + +// @Filename: /dist/blah.js +//// export const blah = 0; + +// @Filename: /index.mts +//// import { } from "/**/"; + +verify.completions({ + marker: "", + isNewIdentifierLocation: true, + exact: [ + { name: "#blah", kind: "script", kindModifiers: "" }, + ] +}); From 475c0b19690dd7e65f339c9d9dc6c33483b011f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= <mateuszburzynski@gmail.com> Date: Mon, 14 Oct 2024 00:12:25 +0200 Subject: [PATCH 11/26] fixed the incorrectly copy-pasted test --- .../pathCompletionsPackageJsonImportsWildcard4.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard4.ts b/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard4.ts index 045b25b5e0607..06ead3662e97b 100644 --- a/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard4.ts +++ b/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard4.ts @@ -5,7 +5,7 @@ // @Filename: /package.json //// { //// "types": "index.d.ts", -//// "exports": { +//// "imports": { //// "#*": "dist/*", //// "#foo/*": "dist/*", //// "#bar/*": "dist/*", @@ -49,16 +49,16 @@ edit.insert("#foo/"); verify.completions({ isNewIdentifierLocation: true, exact: [ - { name: "#blah.js", kind: "script", kindModifiers: ".js" }, - { name: "#index.js", kind: "script", kindModifiers: ".js" }, - { name: "#foo", kind: "directory" }, - { name: "#subfolder", kind: "directory" }, + { name: "blah.js", kind: "script", kindModifiers: ".js" }, + { name: "index.js", kind: "script", kindModifiers: ".js" }, + { name: "foo", kind: "directory" }, + { name: "subfolder", kind: "directory" }, ], }); -edit.insert("#foo/"); +edit.insert("foo/"); verify.completions({ isNewIdentifierLocation: true, - exact: [{ name: "#onlyInFooFolder.js", kind: "script", kindModifiers: ".js" }], + exact: [{ name: "onlyInFooFolder.js", kind: "script", kindModifiers: ".js" }], }); From a0ea1b95a2c4dc2b242ee87d9139213933c763eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= <mateuszburzynski@gmail.com> Date: Mon, 14 Oct 2024 11:04:43 +0200 Subject: [PATCH 12/26] handle `inputDirectories` --- src/services/stringCompletions.ts | 21 +- ...onsPackageJsonImportsSrcNoDistWildcard4.js | 1747 +++++++++++++++++ ...onsPackageJsonImportsSrcNoDistWildcard4.ts | 73 + 3 files changed, 1833 insertions(+), 8 deletions(-) create mode 100644 tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard4.js create mode 100644 tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard4.ts diff --git a/src/services/stringCompletions.ts b/src/services/stringCompletions.ts index b4f30f3323d6d..6fd73ef80207d 100644 --- a/src/services/stringCompletions.ts +++ b/src/services/stringCompletions.ts @@ -1246,19 +1246,20 @@ function getModulesForPathsPattern( let matches = getMatchesWithPrefix(baseDirectory, completePrefix); - // If we had a suffix, we already recursively searched for all possible files that could match - // it and returned the directories leading to those files. Otherwise, assume any directory could - // have something valid to import. - const directories = normalizedSuffix - ? emptyArray - : mapDefined(tryGetDirectories(host, baseDirectory), dir => dir === "node_modules" ? undefined : directoryResult(dir)); - if (inputBaseDirectory && inputBaseDirectory !== baseDirectory) { const completeInputPrefix = fragmentHasPath ? inputBaseDirectory : ensureTrailingDirectorySeparator(inputBaseDirectory) + normalizedPrefixBase; matches = concatenate(matches, getMatchesWithPrefix(inputBaseDirectory, completeInputPrefix)); } - matches = concatenate(matches, directories); + // If we had a suffix, we already recursively searched for all possible files that could match + // it and returned the directories leading to those files. Otherwise, assume any directory could + // have something valid to import. + if (!normalizedSuffix) { + matches = concatenate(matches, getDirectoryMatches(baseDirectory)); + if (inputBaseDirectory && inputBaseDirectory !== baseDirectory) { + matches = concatenate(matches, getDirectoryMatches(inputBaseDirectory)); + } + } return matches; @@ -1275,6 +1276,10 @@ function getModulesForPathsPattern( }); } + function getDirectoryMatches(directoryName: string) { + return mapDefined(tryGetDirectories(host, directoryName), dir => dir === "node_modules" ? undefined : directoryResult(dir)); + } + function trimPrefixAndSuffix(path: string, prefix: string): string | undefined { return firstDefined(matchingSuffixes, suffix => { const inner = withoutStartAndEnd(normalizePath(path), prefix, suffix); diff --git a/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard4.js b/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard4.js new file mode 100644 index 0000000000000..63b86885267c4 --- /dev/null +++ b/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard4.js @@ -0,0 +1,1747 @@ +Info seq [hh:mm:ss:mss] currentDirectory:: /home/src/Vscode/Projects/bin useCaseSensitiveFileNames:: false +Info seq [hh:mm:ss:mss] libs Location:: /home/src/tslibs/TS/Lib +Info seq [hh:mm:ss:mss] globalTypingsCacheLocation:: /home/src/Library/Caches/typescript +Info seq [hh:mm:ss:mss] Provided types map file "/home/src/tslibs/TS/Lib/typesMap.json" doesn't exist +//// [/home/src/tslibs/TS/Lib/lib.d.ts] +lib.d.ts-Text + +//// [/home/src/tslibs/TS/Lib/lib.decorators.d.ts] +lib.decorators.d.ts-Text + +//// [/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts] +lib.decorators.legacy.d.ts-Text + +//// [/home/src/workspaces/project/nope.ts] +export const nope = 0; + +//// [/home/src/workspaces/project/package.json] +{ + "types": "index.d.ts", + "imports": { + "#*": "dist/*", + "#foo/*": "dist/*", + "#bar/*": "dist/*", + "#exact-match": "dist/index.d.ts" + } +} + +//// [/home/src/workspaces/project/src/a.mts] +import { } from ""; + +//// [/home/src/workspaces/project/src/blah.ts] +export const blah = 0; + +//// [/home/src/workspaces/project/src/foo/onlyInFooFolder.ts] +export const foo = 0; + +//// [/home/src/workspaces/project/src/index.ts] +export const index = 0; + +//// [/home/src/workspaces/project/src/subfolder/one.ts] +export const one = 0; + +//// [/home/src/workspaces/project/tsconfig.json] +{ + "compilerOptions": { + "module": "nodenext", + "rootDir": "src", + "outDir": "dist" + } +} + + +Info seq [hh:mm:ss:mss] request: + { + "seq": 0, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/tsconfig.json" + }, + "command": "open" + } +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined:: Result: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] Creating ConfiguredProject: /home/src/workspaces/project/tsconfig.json, currentDirectory: /home/src/workspaces/project +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/tsconfig.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Config file +Info seq [hh:mm:ss:mss] Config: /home/src/workspaces/project/tsconfig.json : { + "rootNames": [ + "/home/src/workspaces/project/nope.ts", + "/home/src/workspaces/project/src/a.mts", + "/home/src/workspaces/project/src/blah.ts", + "/home/src/workspaces/project/src/index.ts", + "/home/src/workspaces/project/src/foo/onlyInFooFolder.ts", + "/home/src/workspaces/project/src/subfolder/one.ts" + ], + "options": { + "module": 199, + "rootDir": "/home/src/workspaces/project/src", + "outDir": "/home/src/workspaces/project/dist", + "configFilePath": "/home/src/workspaces/project/tsconfig.json" + } +} +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "projectLoadingStart", + "body": { + "projectName": "/home/src/workspaces/project/tsconfig.json", + "reason": "Creating possible configured project for /home/src/workspaces/project/tsconfig.json to open" + } + } +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project 1 undefined Config: /home/src/workspaces/project/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project 1 undefined Config: /home/src/workspaces/project/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/nope.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/a.mts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/blah.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/index.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/foo/onlyInFooFolder.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/subfolder/one.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/foo/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/subfolder/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.esnext.full.d.ts 500 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Missing file +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json projectStateVersion: 1 projectProgramVersion: 0 structureChanged: true structureIsReused:: Not Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (6) + /home/src/workspaces/project/nope.ts Text-1 "export const nope = 0;" + /home/src/workspaces/project/src/a.mts Text-1 "import { } from \"\";" + /home/src/workspaces/project/src/blah.ts Text-1 "export const blah = 0;" + /home/src/workspaces/project/src/index.ts Text-1 "export const index = 0;" + /home/src/workspaces/project/src/foo/onlyInFooFolder.ts Text-1 "export const foo = 0;" + /home/src/workspaces/project/src/subfolder/one.ts Text-1 "export const one = 0;" + + + nope.ts + Matched by default include pattern '**/*' + File is CommonJS module because 'package.json' does not have field "type" + src/a.mts + Matched by default include pattern '**/*' + src/blah.ts + Matched by default include pattern '**/*' + File is CommonJS module because 'package.json' does not have field "type" + src/index.ts + Matched by default include pattern '**/*' + File is CommonJS module because 'package.json' does not have field "type" + src/foo/onlyInFooFolder.ts + Matched by default include pattern '**/*' + File is CommonJS module because 'package.json' does not have field "type" + src/subfolder/one.ts + Matched by default include pattern '**/*' + File is CommonJS module because 'package.json' does not have field "type" + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "projectLoadingFinish", + "body": { + "projectName": "/home/src/workspaces/project/tsconfig.json" + } + } +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "configFileDiag", + "body": { + "triggerFile": "/home/src/workspaces/project/tsconfig.json", + "configFile": "/home/src/workspaces/project/tsconfig.json", + "diagnostics": [ + { + "text": "File '/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts' not found.\n The file is in the program because:\n Default library for target 'esnext'", + "code": 6053, + "category": "error" + }, + { + "text": "File '/home/src/workspaces/project/nope.ts' is not under 'rootDir' '/home/src/workspaces/project/src'. 'rootDir' is expected to contain all source files.\n The file is in the program because:\n Matched by default include pattern '**/*'\n File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field \"type\"", + "code": 6059, + "category": "error" + }, + { + "text": "Cannot find global type 'Array'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Boolean'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Function'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'IArguments'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Number'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Object'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'RegExp'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'String'.", + "code": 2318, + "category": "error" + } + ] + } + } +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined:: Result: undefined +Info seq [hh:mm:ss:mss] Creating InferredProject: /dev/null/inferredProject1*, currentDirectory: /home/src/workspaces/project +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/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: /home/src/tslibs/TS/Lib/lib.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.decorators.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /dev/null/inferredProject1* projectStateVersion: 1 projectProgramVersion: 0 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) + /home/src/tslibs/TS/Lib/lib.d.ts Text-1 lib.d.ts-Text + /home/src/tslibs/TS/Lib/lib.decorators.d.ts Text-1 lib.decorators.d.ts-Text + /home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts Text-1 lib.decorators.legacy.d.ts-Text + /home/src/workspaces/project/tsconfig.json SVC-1-0 "{\n \"compilerOptions\": {\n \"module\": \"nodenext\",\n \"rootDir\": \"src\",\n \"outDir\": \"dist\"\n }\n}" + + + ../../tslibs/TS/Lib/lib.d.ts + Default library for target 'es5' + ../../tslibs/TS/Lib/lib.decorators.d.ts + Library referenced via 'decorators' from file '../../tslibs/TS/Lib/lib.d.ts' + ../../tslibs/TS/Lib/lib.decorators.legacy.d.ts + Library referenced via 'decorators.legacy' from file '../../tslibs/TS/Lib/lib.d.ts' + tsconfig.json + Root file specified for compilation + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/package.json 250 undefined WatchType: package.json file +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (6) + +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: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "open", + "request_seq": 0, + "success": true, + "performanceData": { + "updateGraphDurationMs": * + } + } +After Request +watchedFiles:: +/home/src/tslibs/TS/Lib/lib.d.ts: *new* + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.d.ts: *new* + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts: *new* + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/jsconfig.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/nope.ts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/package.json: *new* + {"pollingInterval":2000} + {"pollingInterval":250} +/home/src/workspaces/project/src/a.mts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/src/blah.ts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/src/foo/onlyInFooFolder.ts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/src/foo/package.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/src/index.ts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/src/package.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/src/subfolder/one.ts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/src/subfolder/package.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/tsconfig.json: *new* + {"pollingInterval":2000} + +watchedDirectoriesRecursive:: +/home/src/workspaces/node_modules: *new* + {} +/home/src/workspaces/node_modules/@types: *new* + {} + {} +/home/src/workspaces/project: *new* + {} +/home/src/workspaces/project/node_modules: *new* + {} +/home/src/workspaces/project/node_modules/@types: *new* + {} + {} + +Projects:: +/dev/null/inferredProject1* (Inferred) *new* + projectStateVersion: 1 + projectProgramVersion: 1 + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *new* + projectStateVersion: 1 + projectProgramVersion: 1 + noOpenRef: true + +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts *new* + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts *new* + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts *new* + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/nope.ts *new* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/a.mts *new* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/blah.ts *new* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/foo/onlyInFooFolder.ts *new* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.ts *new* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/subfolder/one.ts *new* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) *new* + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 1, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.mts" + }, + "command": "open" + } +Info seq [hh:mm:ss:mss] FileWatcher:: Close:: WatchInfo: /home/src/workspaces/project/src/a.mts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/src/a.mts ProjectRootPath: undefined:: Result: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (6) + +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: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] FileName: /home/src/workspaces/project/src/a.mts ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "open", + "request_seq": 1, + "success": true + } +After Request +watchedFiles:: +/home/src/tslibs/TS/Lib/lib.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts: + {"pollingInterval":500} +/home/src/workspaces/project/jsconfig.json: + {"pollingInterval":2000} +/home/src/workspaces/project/nope.ts: + {"pollingInterval":500} +/home/src/workspaces/project/package.json: + {"pollingInterval":2000} + {"pollingInterval":250} +/home/src/workspaces/project/src/blah.ts: + {"pollingInterval":500} +/home/src/workspaces/project/src/foo/onlyInFooFolder.ts: + {"pollingInterval":500} +/home/src/workspaces/project/src/foo/package.json: + {"pollingInterval":2000} +/home/src/workspaces/project/src/index.ts: + {"pollingInterval":500} +/home/src/workspaces/project/src/package.json: + {"pollingInterval":2000} +/home/src/workspaces/project/src/subfolder/one.ts: + {"pollingInterval":500} +/home/src/workspaces/project/src/subfolder/package.json: + {"pollingInterval":2000} +/home/src/workspaces/project/tsconfig.json: + {"pollingInterval":2000} + +watchedFiles *deleted*:: +/home/src/workspaces/project/src/a.mts: + {"pollingInterval":500} + +watchedDirectoriesRecursive:: +/home/src/workspaces/node_modules: + {} +/home/src/workspaces/node_modules/@types: + {} + {} +/home/src/workspaces/project: + {} +/home/src/workspaces/project/node_modules: + {} +/home/src/workspaces/project/node_modules/@types: + {} + {} + +Projects:: +/dev/null/inferredProject1* (Inferred) + projectStateVersion: 1 + projectProgramVersion: 1 + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *changed* + projectStateVersion: 1 + projectProgramVersion: 1 + noOpenRef: false *changed* + +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/nope.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/a.mts (Open) *changed* + open: true *changed* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/foo/onlyInFooFolder.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/subfolder/one.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 2, + "type": "request", + "arguments": { + "preferences": {} + }, + "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": "/home/src/workspaces/project/src/a.mts", + "line": 1, + "offset": 18 + }, + "command": "completionInfo" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "completionInfo", + "request_seq": 3, + "success": true, + "body": { + "isGlobalCompletion": false, + "isMemberCompletion": false, + "isNewIdentifierLocation": true, + "entries": [ + { + "name": "#a.mjs", + "kind": "script", + "kindModifiers": ".mjs", + "sortText": "11" + }, + { + "name": "#blah.js", + "kind": "script", + "kindModifiers": ".js", + "sortText": "11" + }, + { + "name": "#index.js", + "kind": "script", + "kindModifiers": ".js", + "sortText": "11" + }, + { + "name": "#foo", + "kind": "directory", + "kindModifiers": "", + "sortText": "11" + }, + { + "name": "#subfolder", + "kind": "directory", + "kindModifiers": "", + "sortText": "11" + }, + { + "name": "#bar", + "kind": "directory", + "kindModifiers": "", + "sortText": "11" + }, + { + "name": "#exact-match", + "kind": "script", + "kindModifiers": "", + "sortText": "11" + } + ], + "defaultCommitCharacters": [] + } + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 4, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.mts", + "line": 1, + "offset": 18, + "endLine": 1, + "endOffset": 18, + "insertString": "" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 4, + "success": true + } +After Request +Projects:: +/dev/null/inferredProject1* (Inferred) + projectStateVersion: 1 + projectProgramVersion: 1 + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *changed* + projectStateVersion: 2 *changed* + projectProgramVersion: 1 + dirty: true *changed* + +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/nope.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/a.mts (Open) *changed* + version: SVC-2-1 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/foo/onlyInFooFolder.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/subfolder/one.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 5, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.mts", + "line": 1, + "offset": 18, + "endLine": 1, + "endOffset": 18, + "insertString": "#" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 5, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/nope.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/a.mts (Open) *changed* + version: SVC-2-2 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/foo/onlyInFooFolder.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/subfolder/one.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 6, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.mts", + "line": 1, + "offset": 19, + "key": "#" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 6, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 7, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.mts", + "line": 1, + "offset": 19, + "endLine": 1, + "endOffset": 19, + "insertString": "f" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 7, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/nope.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/a.mts (Open) *changed* + version: SVC-2-3 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/foo/onlyInFooFolder.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/subfolder/one.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 8, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.mts", + "line": 1, + "offset": 20, + "key": "f" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 8, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 9, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.mts", + "line": 1, + "offset": 20, + "endLine": 1, + "endOffset": 20, + "insertString": "o" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 9, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/nope.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/a.mts (Open) *changed* + version: SVC-2-4 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/foo/onlyInFooFolder.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/subfolder/one.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 10, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.mts", + "line": 1, + "offset": 21, + "key": "o" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 10, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 11, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.mts", + "line": 1, + "offset": 21, + "endLine": 1, + "endOffset": 21, + "insertString": "o" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 11, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/nope.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/a.mts (Open) *changed* + version: SVC-2-5 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/foo/onlyInFooFolder.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/subfolder/one.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 12, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.mts", + "line": 1, + "offset": 22, + "key": "o" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 12, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 13, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.mts", + "line": 1, + "offset": 22, + "endLine": 1, + "endOffset": 22, + "insertString": "/" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 13, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/nope.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/a.mts (Open) *changed* + version: SVC-2-6 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/foo/onlyInFooFolder.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/subfolder/one.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 14, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.mts", + "line": 1, + "offset": 23, + "key": "/" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 14, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 15, + "type": "request", + "arguments": { + "preferences": {} + }, + "command": "configure" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "configure", + "request_seq": 15, + "success": true + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 16, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.mts", + "line": 1, + "offset": 23 + }, + "command": "completionInfo" + } +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json projectStateVersion: 2 projectProgramVersion: 1 structureChanged: true structureIsReused:: SafeModules Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (6) + /home/src/workspaces/project/nope.ts Text-1 "export const nope = 0;" + /home/src/workspaces/project/src/a.mts SVC-2-6 "import { } from \"#foo/\";" + /home/src/workspaces/project/src/blah.ts Text-1 "export const blah = 0;" + /home/src/workspaces/project/src/index.ts Text-1 "export const index = 0;" + /home/src/workspaces/project/src/foo/onlyInFooFolder.ts Text-1 "export const foo = 0;" + /home/src/workspaces/project/src/subfolder/one.ts Text-1 "export const one = 0;" + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "completionInfo", + "request_seq": 16, + "success": true, + "performanceData": { + "updateGraphDurationMs": * + }, + "body": { + "isGlobalCompletion": false, + "isMemberCompletion": false, + "isNewIdentifierLocation": true, + "entries": [ + { + "name": "a.mjs", + "kind": "script", + "kindModifiers": ".mjs", + "sortText": "11" + }, + { + "name": "blah.js", + "kind": "script", + "kindModifiers": ".js", + "sortText": "11" + }, + { + "name": "index.js", + "kind": "script", + "kindModifiers": ".js", + "sortText": "11" + }, + { + "name": "foo", + "kind": "directory", + "kindModifiers": "", + "sortText": "11" + }, + { + "name": "subfolder", + "kind": "directory", + "kindModifiers": "", + "sortText": "11" + } + ], + "defaultCommitCharacters": [] + } + } +After Request +watchedFiles:: +/home/src/tslibs/TS/Lib/lib.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts: + {"pollingInterval":500} +/home/src/workspaces/project/jsconfig.json: + {"pollingInterval":2000} +/home/src/workspaces/project/nope.ts: + {"pollingInterval":500} +/home/src/workspaces/project/package.json: + {"pollingInterval":2000} + {"pollingInterval":250} +/home/src/workspaces/project/src/blah.ts: + {"pollingInterval":500} +/home/src/workspaces/project/src/foo/onlyInFooFolder.ts: + {"pollingInterval":500} +/home/src/workspaces/project/src/foo/package.json: + {"pollingInterval":2000} +/home/src/workspaces/project/src/index.ts: + {"pollingInterval":500} +/home/src/workspaces/project/src/package.json: + {"pollingInterval":2000} +/home/src/workspaces/project/src/subfolder/one.ts: + {"pollingInterval":500} +/home/src/workspaces/project/src/subfolder/package.json: + {"pollingInterval":2000} +/home/src/workspaces/project/tsconfig.json: + {"pollingInterval":2000} + +watchedDirectoriesRecursive:: +/home/src/workspaces/node_modules: + {} + {} *new* +/home/src/workspaces/node_modules/@types: + {} + {} +/home/src/workspaces/project: + {} +/home/src/workspaces/project/node_modules: + {} + {} *new* +/home/src/workspaces/project/node_modules/@types: + {} + {} +/home/src/workspaces/project/src: *new* + {} + +Projects:: +/dev/null/inferredProject1* (Inferred) + projectStateVersion: 1 + projectProgramVersion: 1 + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *changed* + projectStateVersion: 2 + projectProgramVersion: 2 *changed* + dirty: false *changed* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 17, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.mts", + "line": 1, + "offset": 23, + "endLine": 1, + "endOffset": 23, + "insertString": "" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 17, + "success": true + } +After Request +Projects:: +/dev/null/inferredProject1* (Inferred) + projectStateVersion: 1 + projectProgramVersion: 1 + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *changed* + projectStateVersion: 3 *changed* + projectProgramVersion: 2 + dirty: true *changed* + +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/nope.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/a.mts (Open) *changed* + version: SVC-2-7 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/foo/onlyInFooFolder.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/subfolder/one.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 18, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.mts", + "line": 1, + "offset": 23, + "endLine": 1, + "endOffset": 23, + "insertString": "f" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 18, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/nope.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/a.mts (Open) *changed* + version: SVC-2-8 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/foo/onlyInFooFolder.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/subfolder/one.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 19, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.mts", + "line": 1, + "offset": 24, + "key": "f" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 19, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 20, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.mts", + "line": 1, + "offset": 24, + "endLine": 1, + "endOffset": 24, + "insertString": "o" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 20, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/nope.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/a.mts (Open) *changed* + version: SVC-2-9 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/foo/onlyInFooFolder.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/subfolder/one.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 21, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.mts", + "line": 1, + "offset": 25, + "key": "o" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 21, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 22, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.mts", + "line": 1, + "offset": 25, + "endLine": 1, + "endOffset": 25, + "insertString": "o" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 22, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/nope.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/a.mts (Open) *changed* + version: SVC-2-10 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/foo/onlyInFooFolder.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/subfolder/one.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 23, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.mts", + "line": 1, + "offset": 26, + "key": "o" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 23, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 24, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.mts", + "line": 1, + "offset": 26, + "endLine": 1, + "endOffset": 26, + "insertString": "/" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 24, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/nope.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/a.mts (Open) *changed* + version: SVC-2-11 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/foo/onlyInFooFolder.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/subfolder/one.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 25, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.mts", + "line": 1, + "offset": 27, + "key": "/" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 25, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 26, + "type": "request", + "arguments": { + "preferences": {} + }, + "command": "configure" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "configure", + "request_seq": 26, + "success": true + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 27, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.mts", + "line": 1, + "offset": 27 + }, + "command": "completionInfo" + } +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json projectStateVersion: 3 projectProgramVersion: 2 structureChanged: true structureIsReused:: SafeModules Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (6) + /home/src/workspaces/project/nope.ts Text-1 "export const nope = 0;" + /home/src/workspaces/project/src/a.mts SVC-2-11 "import { } from \"#foo/foo/\";" + /home/src/workspaces/project/src/blah.ts Text-1 "export const blah = 0;" + /home/src/workspaces/project/src/index.ts Text-1 "export const index = 0;" + /home/src/workspaces/project/src/foo/onlyInFooFolder.ts Text-1 "export const foo = 0;" + /home/src/workspaces/project/src/subfolder/one.ts Text-1 "export const one = 0;" + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "completionInfo", + "request_seq": 27, + "success": true, + "performanceData": { + "updateGraphDurationMs": * + }, + "body": { + "isGlobalCompletion": false, + "isMemberCompletion": false, + "isNewIdentifierLocation": true, + "entries": [ + { + "name": "onlyInFooFolder.js", + "kind": "script", + "kindModifiers": ".js", + "sortText": "11" + } + ], + "defaultCommitCharacters": [] + } + } +After Request +Projects:: +/dev/null/inferredProject1* (Inferred) + projectStateVersion: 1 + projectProgramVersion: 1 + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *changed* + projectStateVersion: 3 + projectProgramVersion: 3 *changed* + dirty: false *changed* diff --git a/tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard4.ts b/tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard4.ts new file mode 100644 index 0000000000000..ae393be7ce4d6 --- /dev/null +++ b/tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard4.ts @@ -0,0 +1,73 @@ +/// <reference path="../fourslash.ts"/> + +// @Filename: /home/src/workspaces/project/tsconfig.json +//// { +//// "compilerOptions": { +//// "module": "nodenext", +//// "rootDir": "src", +//// "outDir": "dist" +//// } +//// } + +// @Filename: /home/src/workspaces/project/package.json +//// { +//// "types": "index.d.ts", +//// "imports": { +//// "#*": "dist/*", +//// "#foo/*": "dist/*", +//// "#bar/*": "dist/*", +//// "#exact-match": "dist/index.d.ts" +//// } +//// } + +// @Filename: /home/src/workspaces/project/nope.ts +//// export const nope = 0; + +// @Filename: /home/src/workspaces/project/src/index.ts +//// export const index = 0; + +// @Filename: /home/src/workspaces/project/src/blah.ts +//// export const blah = 0; + +// @Filename: /home/src/workspaces/project/src/foo/onlyInFooFolder.ts +//// export const foo = 0; + +// @Filename: /home/src/workspaces/project/src/subfolder/one.ts +//// export const one = 0; + +// @Filename: /home/src/workspaces/project/src/a.mts +//// import { } from "/**/"; + +verify.completions({ + marker: "", + isNewIdentifierLocation: true, + exact: [ + { name: "#a.mjs", kind: "script", kindModifiers: ".mjs" }, + { name: "#blah.js", kind: "script", kindModifiers: ".js" }, + { name: "#index.js", kind: "script", kindModifiers: ".js" }, + { name: "#foo", kind: "directory" }, + { name: "#subfolder", kind: "directory" }, + { name: "#bar", kind: "directory" }, + { name: "#exact-match", kind: "script" }, + ], +}); + +edit.insert("#foo/"); + +verify.completions({ + isNewIdentifierLocation: true, + exact: [ + { name: "a.mjs", kind: "script", kindModifiers: ".mjs" }, + { name: "blah.js", kind: "script", kindModifiers: ".js" }, + { name: "index.js", kind: "script", kindModifiers: ".js" }, + { name: "foo", kind: "directory" }, + { name: "subfolder", kind: "directory" }, + ], +}); + +edit.insert("foo/"); + +verify.completions({ + isNewIdentifierLocation: true, + exact: [{ name: "onlyInFooFolder.js", kind: "script", kindModifiers: ".js" }], +}); From c00448b61d9ca36ebf50a47e42e4fcef546f51a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= <mateuszburzynski@gmail.com> Date: Mon, 14 Oct 2024 11:30:29 +0200 Subject: [PATCH 13/26] add more tests, some of them still failing --- ...onsPackageJsonImportsSrcNoDistWildcard1.js | 524 ++++ ...onsPackageJsonImportsSrcNoDistWildcard2.js | 2182 +++++++++++++++++ ...onsPackageJsonImportsSrcNoDistWildcard3.js | 543 ++++ ...onsPackageJsonImportsSrcNoDistWildcard5.js | 572 +++++ ...onsPackageJsonImportsSrcNoDistWildcard7.js | 453 ++++ ...onsPackageJsonImportsSrcNoDistWildcard8.js | 453 ++++ ...onsPackageJsonImportsSrcNoDistWildcard9.js | 435 ++++ ...onsPackageJsonImportsSrcNoDistWildcard1.ts | 52 + ...onsPackageJsonImportsSrcNoDistWildcard2.ts | 49 + ...onsPackageJsonImportsSrcNoDistWildcard3.ts | 53 + ...onsPackageJsonImportsSrcNoDistWildcard5.ts | 64 + ...onsPackageJsonImportsSrcNoDistWildcard6.ts | 38 + ...onsPackageJsonImportsSrcNoDistWildcard7.ts | 32 + ...onsPackageJsonImportsSrcNoDistWildcard8.ts | 32 + ...onsPackageJsonImportsSrcNoDistWildcard9.ts | 33 + 15 files changed, 5515 insertions(+) create mode 100644 tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard1.js create mode 100644 tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard2.js create mode 100644 tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard3.js create mode 100644 tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard5.js create mode 100644 tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard7.js create mode 100644 tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard8.js create mode 100644 tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard9.js create mode 100644 tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard1.ts create mode 100644 tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard2.ts create mode 100644 tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard3.ts create mode 100644 tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard5.ts create mode 100644 tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard6.ts create mode 100644 tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard7.ts create mode 100644 tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard8.ts create mode 100644 tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard9.ts diff --git a/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard1.js b/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard1.js new file mode 100644 index 0000000000000..afab97fce62d7 --- /dev/null +++ b/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard1.js @@ -0,0 +1,524 @@ +Info seq [hh:mm:ss:mss] currentDirectory:: /home/src/Vscode/Projects/bin useCaseSensitiveFileNames:: false +Info seq [hh:mm:ss:mss] libs Location:: /home/src/tslibs/TS/Lib +Info seq [hh:mm:ss:mss] globalTypingsCacheLocation:: /home/src/Library/Caches/typescript +Info seq [hh:mm:ss:mss] Provided types map file "/home/src/tslibs/TS/Lib/typesMap.json" doesn't exist +//// [/home/src/tslibs/TS/Lib/lib.d.ts] +lib.d.ts-Text + +//// [/home/src/tslibs/TS/Lib/lib.decorators.d.ts] +lib.decorators.d.ts-Text + +//// [/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts] +lib.decorators.legacy.d.ts-Text + +//// [/home/src/workspaces/project/package.json] +{ + "name": "foo", + "main": "dist/index.js", + "module": "dist/index.mjs", + "types": "dist/index.d.ts", + "imports": { + "#*": { + "types": "./dist/*.d.ts", + "import": "./dist/*.mjs", + "default": "./dist/*.js" + }, + "#arguments": { + "types": "./dist/arguments/index.d.ts", + "import": "./dist/arguments/index.mjs", + "default": "./dist/arguments/index.js" + } + } +} + +//// [/home/src/workspaces/project/src/arguments/index.ts] +export const arguments = 0; + +//// [/home/src/workspaces/project/src/blah.ts] +export const blah = 0; + +//// [/home/src/workspaces/project/src/index.ts] +export const index = 0; + +//// [/home/src/workspaces/project/src/m.mts] +import { } from ""; + +//// [/home/src/workspaces/project/tsconfig.json] +{ + "compilerOptions": { + "module": "nodenext", + "rootDir": "src", + "outDir": "dist" + } +} + + +Info seq [hh:mm:ss:mss] request: + { + "seq": 0, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/tsconfig.json" + }, + "command": "open" + } +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined:: Result: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] Creating ConfiguredProject: /home/src/workspaces/project/tsconfig.json, currentDirectory: /home/src/workspaces/project +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/tsconfig.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Config file +Info seq [hh:mm:ss:mss] Config: /home/src/workspaces/project/tsconfig.json : { + "rootNames": [ + "/home/src/workspaces/project/src/blah.ts", + "/home/src/workspaces/project/src/index.ts", + "/home/src/workspaces/project/src/m.mts", + "/home/src/workspaces/project/src/arguments/index.ts" + ], + "options": { + "module": 199, + "rootDir": "/home/src/workspaces/project/src", + "outDir": "/home/src/workspaces/project/dist", + "configFilePath": "/home/src/workspaces/project/tsconfig.json" + } +} +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "projectLoadingStart", + "body": { + "projectName": "/home/src/workspaces/project/tsconfig.json", + "reason": "Creating possible configured project for /home/src/workspaces/project/tsconfig.json to open" + } + } +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project 1 undefined Config: /home/src/workspaces/project/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project 1 undefined Config: /home/src/workspaces/project/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/blah.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/index.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/m.mts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/arguments/index.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/arguments/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.esnext.full.d.ts 500 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Missing file +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json projectStateVersion: 1 projectProgramVersion: 0 structureChanged: true structureIsReused:: Not Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (4) + /home/src/workspaces/project/src/blah.ts Text-1 "export const blah = 0;" + /home/src/workspaces/project/src/index.ts Text-1 "export const index = 0;" + /home/src/workspaces/project/src/m.mts Text-1 "import { } from \"\";" + /home/src/workspaces/project/src/arguments/index.ts Text-1 "export const arguments = 0;" + + + src/blah.ts + Matched by default include pattern '**/*' + File is CommonJS module because 'package.json' does not have field "type" + src/index.ts + Matched by default include pattern '**/*' + File is CommonJS module because 'package.json' does not have field "type" + src/m.mts + Matched by default include pattern '**/*' + src/arguments/index.ts + Matched by default include pattern '**/*' + File is CommonJS module because 'package.json' does not have field "type" + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "projectLoadingFinish", + "body": { + "projectName": "/home/src/workspaces/project/tsconfig.json" + } + } +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "configFileDiag", + "body": { + "triggerFile": "/home/src/workspaces/project/tsconfig.json", + "configFile": "/home/src/workspaces/project/tsconfig.json", + "diagnostics": [ + { + "text": "File '/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts' not found.\n The file is in the program because:\n Default library for target 'esnext'", + "code": 6053, + "category": "error" + }, + { + "text": "Cannot find global type 'Array'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Boolean'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Function'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'IArguments'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Number'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Object'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'RegExp'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'String'.", + "code": 2318, + "category": "error" + } + ] + } + } +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined:: Result: undefined +Info seq [hh:mm:ss:mss] Creating InferredProject: /dev/null/inferredProject1*, currentDirectory: /home/src/workspaces/project +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/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: /home/src/tslibs/TS/Lib/lib.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.decorators.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /dev/null/inferredProject1* projectStateVersion: 1 projectProgramVersion: 0 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) + /home/src/tslibs/TS/Lib/lib.d.ts Text-1 lib.d.ts-Text + /home/src/tslibs/TS/Lib/lib.decorators.d.ts Text-1 lib.decorators.d.ts-Text + /home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts Text-1 lib.decorators.legacy.d.ts-Text + /home/src/workspaces/project/tsconfig.json SVC-1-0 "{\n \"compilerOptions\": {\n \"module\": \"nodenext\",\n \"rootDir\": \"src\",\n \"outDir\": \"dist\"\n }\n}" + + + ../../tslibs/TS/Lib/lib.d.ts + Default library for target 'es5' + ../../tslibs/TS/Lib/lib.decorators.d.ts + Library referenced via 'decorators' from file '../../tslibs/TS/Lib/lib.d.ts' + ../../tslibs/TS/Lib/lib.decorators.legacy.d.ts + Library referenced via 'decorators.legacy' from file '../../tslibs/TS/Lib/lib.d.ts' + tsconfig.json + Root file specified for compilation + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/package.json 250 undefined WatchType: package.json file +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (4) + +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: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "open", + "request_seq": 0, + "success": true, + "performanceData": { + "updateGraphDurationMs": * + } + } +After Request +watchedFiles:: +/home/src/tslibs/TS/Lib/lib.d.ts: *new* + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.d.ts: *new* + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts: *new* + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/jsconfig.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/package.json: *new* + {"pollingInterval":2000} + {"pollingInterval":250} +/home/src/workspaces/project/src/arguments/index.ts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/src/arguments/package.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/src/blah.ts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/src/index.ts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/src/m.mts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/src/package.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/tsconfig.json: *new* + {"pollingInterval":2000} + +watchedDirectoriesRecursive:: +/home/src/workspaces/node_modules: *new* + {} +/home/src/workspaces/node_modules/@types: *new* + {} + {} +/home/src/workspaces/project: *new* + {} +/home/src/workspaces/project/node_modules: *new* + {} +/home/src/workspaces/project/node_modules/@types: *new* + {} + {} + +Projects:: +/dev/null/inferredProject1* (Inferred) *new* + projectStateVersion: 1 + projectProgramVersion: 1 + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *new* + projectStateVersion: 1 + projectProgramVersion: 1 + noOpenRef: true + +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts *new* + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts *new* + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts *new* + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/src/arguments/index.ts *new* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/blah.ts *new* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.ts *new* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/m.mts *new* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) *new* + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 1, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/m.mts" + }, + "command": "open" + } +Info seq [hh:mm:ss:mss] FileWatcher:: Close:: WatchInfo: /home/src/workspaces/project/src/m.mts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/src/m.mts ProjectRootPath: undefined:: Result: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (4) + +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: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] FileName: /home/src/workspaces/project/src/m.mts ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "open", + "request_seq": 1, + "success": true + } +After Request +watchedFiles:: +/home/src/tslibs/TS/Lib/lib.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts: + {"pollingInterval":500} +/home/src/workspaces/project/jsconfig.json: + {"pollingInterval":2000} +/home/src/workspaces/project/package.json: + {"pollingInterval":2000} + {"pollingInterval":250} +/home/src/workspaces/project/src/arguments/index.ts: + {"pollingInterval":500} +/home/src/workspaces/project/src/arguments/package.json: + {"pollingInterval":2000} +/home/src/workspaces/project/src/blah.ts: + {"pollingInterval":500} +/home/src/workspaces/project/src/index.ts: + {"pollingInterval":500} +/home/src/workspaces/project/src/package.json: + {"pollingInterval":2000} +/home/src/workspaces/project/tsconfig.json: + {"pollingInterval":2000} + +watchedFiles *deleted*:: +/home/src/workspaces/project/src/m.mts: + {"pollingInterval":500} + +watchedDirectoriesRecursive:: +/home/src/workspaces/node_modules: + {} +/home/src/workspaces/node_modules/@types: + {} + {} +/home/src/workspaces/project: + {} +/home/src/workspaces/project/node_modules: + {} +/home/src/workspaces/project/node_modules/@types: + {} + {} + +Projects:: +/dev/null/inferredProject1* (Inferred) + projectStateVersion: 1 + projectProgramVersion: 1 + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *changed* + projectStateVersion: 1 + projectProgramVersion: 1 + noOpenRef: false *changed* + +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/src/arguments/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/m.mts (Open) *changed* + open: true *changed* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 2, + "type": "request", + "arguments": { + "preferences": {} + }, + "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": "/home/src/workspaces/project/src/m.mts", + "line": 1, + "offset": 18 + }, + "command": "completionInfo" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "completionInfo", + "request_seq": 3, + "success": true, + "body": { + "isGlobalCompletion": false, + "isMemberCompletion": false, + "isNewIdentifierLocation": true, + "entries": [ + { + "name": "#blah", + "kind": "script", + "kindModifiers": "", + "sortText": "11" + }, + { + "name": "#index", + "kind": "script", + "kindModifiers": "", + "sortText": "11" + }, + { + "name": "#arguments", + "kind": "script", + "kindModifiers": "", + "sortText": "11" + } + ], + "defaultCommitCharacters": [] + } + } \ No newline at end of file diff --git a/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard2.js b/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard2.js new file mode 100644 index 0000000000000..90fe6d8133481 --- /dev/null +++ b/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard2.js @@ -0,0 +1,2182 @@ +Info seq [hh:mm:ss:mss] currentDirectory:: /home/src/Vscode/Projects/bin useCaseSensitiveFileNames:: false +Info seq [hh:mm:ss:mss] libs Location:: /home/src/tslibs/TS/Lib +Info seq [hh:mm:ss:mss] globalTypingsCacheLocation:: /home/src/Library/Caches/typescript +Info seq [hh:mm:ss:mss] Provided types map file "/home/src/tslibs/TS/Lib/typesMap.json" doesn't exist +//// [/home/src/tslibs/TS/Lib/lib.d.ts] +lib.d.ts-Text + +//// [/home/src/tslibs/TS/Lib/lib.decorators.d.ts] +lib.decorators.d.ts-Text + +//// [/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts] +lib.decorators.legacy.d.ts-Text + +//// [/home/src/workspaces/project/package.json] +{ + "name": "salesforce-pageobjects", + "version": "1.0.0", + "imports": { + "#*": { + "types": "./dist/*.d.ts", + "import": "./dist/*.mjs", + "default": "./dist/*.js" + } + } +} + +//// [/home/src/workspaces/project/src/action/pageObjects/actionRenderer.ts] +export const actionRenderer = 0; + +//// [/home/src/workspaces/project/src/index.mts] +import { } from ""; + +//// [/home/src/workspaces/project/tsconfig.json] +{ + "compilerOptions": { + "module": "nodenext", + "rootDir": "src", + "outDir": "dist" + } +} + + +Info seq [hh:mm:ss:mss] request: + { + "seq": 0, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/tsconfig.json" + }, + "command": "open" + } +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined:: Result: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] Creating ConfiguredProject: /home/src/workspaces/project/tsconfig.json, currentDirectory: /home/src/workspaces/project +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/tsconfig.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Config file +Info seq [hh:mm:ss:mss] Config: /home/src/workspaces/project/tsconfig.json : { + "rootNames": [ + "/home/src/workspaces/project/src/index.mts", + "/home/src/workspaces/project/src/action/pageObjects/actionRenderer.ts" + ], + "options": { + "module": 199, + "rootDir": "/home/src/workspaces/project/src", + "outDir": "/home/src/workspaces/project/dist", + "configFilePath": "/home/src/workspaces/project/tsconfig.json" + } +} +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "projectLoadingStart", + "body": { + "projectName": "/home/src/workspaces/project/tsconfig.json", + "reason": "Creating possible configured project for /home/src/workspaces/project/tsconfig.json to open" + } + } +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project 1 undefined Config: /home/src/workspaces/project/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project 1 undefined Config: /home/src/workspaces/project/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/index.mts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/action/pageObjects/actionRenderer.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/action/pageObjects/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/action/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.esnext.full.d.ts 500 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Missing file +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json projectStateVersion: 1 projectProgramVersion: 0 structureChanged: true structureIsReused:: Not Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (2) + /home/src/workspaces/project/src/index.mts Text-1 "import { } from \"\";" + /home/src/workspaces/project/src/action/pageObjects/actionRenderer.ts Text-1 "export const actionRenderer = 0;" + + + src/index.mts + Matched by default include pattern '**/*' + src/action/pageObjects/actionRenderer.ts + Matched by default include pattern '**/*' + File is CommonJS module because 'package.json' does not have field "type" + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "projectLoadingFinish", + "body": { + "projectName": "/home/src/workspaces/project/tsconfig.json" + } + } +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "configFileDiag", + "body": { + "triggerFile": "/home/src/workspaces/project/tsconfig.json", + "configFile": "/home/src/workspaces/project/tsconfig.json", + "diagnostics": [ + { + "text": "File '/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts' not found.\n The file is in the program because:\n Default library for target 'esnext'", + "code": 6053, + "category": "error" + }, + { + "text": "Cannot find global type 'Array'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Boolean'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Function'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'IArguments'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Number'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Object'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'RegExp'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'String'.", + "code": 2318, + "category": "error" + } + ] + } + } +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined:: Result: undefined +Info seq [hh:mm:ss:mss] Creating InferredProject: /dev/null/inferredProject1*, currentDirectory: /home/src/workspaces/project +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/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: /home/src/tslibs/TS/Lib/lib.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.decorators.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /dev/null/inferredProject1* projectStateVersion: 1 projectProgramVersion: 0 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) + /home/src/tslibs/TS/Lib/lib.d.ts Text-1 lib.d.ts-Text + /home/src/tslibs/TS/Lib/lib.decorators.d.ts Text-1 lib.decorators.d.ts-Text + /home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts Text-1 lib.decorators.legacy.d.ts-Text + /home/src/workspaces/project/tsconfig.json SVC-1-0 "{\n \"compilerOptions\": {\n \"module\": \"nodenext\",\n \"rootDir\": \"src\",\n \"outDir\": \"dist\"\n }\n}" + + + ../../tslibs/TS/Lib/lib.d.ts + Default library for target 'es5' + ../../tslibs/TS/Lib/lib.decorators.d.ts + Library referenced via 'decorators' from file '../../tslibs/TS/Lib/lib.d.ts' + ../../tslibs/TS/Lib/lib.decorators.legacy.d.ts + Library referenced via 'decorators.legacy' from file '../../tslibs/TS/Lib/lib.d.ts' + tsconfig.json + Root file specified for compilation + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/package.json 250 undefined WatchType: package.json file +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (2) + +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: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "open", + "request_seq": 0, + "success": true, + "performanceData": { + "updateGraphDurationMs": * + } + } +After Request +watchedFiles:: +/home/src/tslibs/TS/Lib/lib.d.ts: *new* + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.d.ts: *new* + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts: *new* + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/jsconfig.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/package.json: *new* + {"pollingInterval":2000} + {"pollingInterval":250} +/home/src/workspaces/project/src/action/package.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/src/action/pageObjects/actionRenderer.ts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/src/action/pageObjects/package.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/src/index.mts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/src/package.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/tsconfig.json: *new* + {"pollingInterval":2000} + +watchedDirectoriesRecursive:: +/home/src/workspaces/node_modules: *new* + {} +/home/src/workspaces/node_modules/@types: *new* + {} + {} +/home/src/workspaces/project: *new* + {} +/home/src/workspaces/project/node_modules: *new* + {} +/home/src/workspaces/project/node_modules/@types: *new* + {} + {} + +Projects:: +/dev/null/inferredProject1* (Inferred) *new* + projectStateVersion: 1 + projectProgramVersion: 1 + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *new* + projectStateVersion: 1 + projectProgramVersion: 1 + noOpenRef: true + +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts *new* + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts *new* + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts *new* + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/src/action/pageObjects/actionRenderer.ts *new* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.mts *new* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) *new* + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 1, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts" + }, + "command": "open" + } +Info seq [hh:mm:ss:mss] FileWatcher:: Close:: WatchInfo: /home/src/workspaces/project/src/index.mts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/src/index.mts ProjectRootPath: undefined:: Result: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (2) + +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: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] FileName: /home/src/workspaces/project/src/index.mts ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "open", + "request_seq": 1, + "success": true + } +After Request +watchedFiles:: +/home/src/tslibs/TS/Lib/lib.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts: + {"pollingInterval":500} +/home/src/workspaces/project/jsconfig.json: + {"pollingInterval":2000} +/home/src/workspaces/project/package.json: + {"pollingInterval":2000} + {"pollingInterval":250} +/home/src/workspaces/project/src/action/package.json: + {"pollingInterval":2000} +/home/src/workspaces/project/src/action/pageObjects/actionRenderer.ts: + {"pollingInterval":500} +/home/src/workspaces/project/src/action/pageObjects/package.json: + {"pollingInterval":2000} +/home/src/workspaces/project/src/package.json: + {"pollingInterval":2000} +/home/src/workspaces/project/tsconfig.json: + {"pollingInterval":2000} + +watchedFiles *deleted*:: +/home/src/workspaces/project/src/index.mts: + {"pollingInterval":500} + +watchedDirectoriesRecursive:: +/home/src/workspaces/node_modules: + {} +/home/src/workspaces/node_modules/@types: + {} + {} +/home/src/workspaces/project: + {} +/home/src/workspaces/project/node_modules: + {} +/home/src/workspaces/project/node_modules/@types: + {} + {} + +Projects:: +/dev/null/inferredProject1* (Inferred) + projectStateVersion: 1 + projectProgramVersion: 1 + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *changed* + projectStateVersion: 1 + projectProgramVersion: 1 + noOpenRef: false *changed* + +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/src/action/pageObjects/actionRenderer.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.mts (Open) *changed* + open: true *changed* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 2, + "type": "request", + "arguments": { + "preferences": {} + }, + "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": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 18 + }, + "command": "completionInfo" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "completionInfo", + "request_seq": 3, + "success": true, + "body": { + "isGlobalCompletion": false, + "isMemberCompletion": false, + "isNewIdentifierLocation": true, + "entries": [ + { + "name": "#action", + "kind": "directory", + "kindModifiers": "", + "sortText": "11" + } + ], + "defaultCommitCharacters": [] + } + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 4, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 18, + "endLine": 1, + "endOffset": 18, + "insertString": "" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 4, + "success": true + } +After Request +Projects:: +/dev/null/inferredProject1* (Inferred) + projectStateVersion: 1 + projectProgramVersion: 1 + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *changed* + projectStateVersion: 2 *changed* + projectProgramVersion: 1 + dirty: true *changed* + +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/src/action/pageObjects/actionRenderer.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.mts (Open) *changed* + version: SVC-2-1 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 5, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 18, + "endLine": 1, + "endOffset": 18, + "insertString": "#" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 5, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/src/action/pageObjects/actionRenderer.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.mts (Open) *changed* + version: SVC-2-2 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 6, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 19, + "key": "#" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 6, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 7, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 19, + "endLine": 1, + "endOffset": 19, + "insertString": "a" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 7, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/src/action/pageObjects/actionRenderer.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.mts (Open) *changed* + version: SVC-2-3 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 8, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 20, + "key": "a" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 8, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 9, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 20, + "endLine": 1, + "endOffset": 20, + "insertString": "c" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 9, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/src/action/pageObjects/actionRenderer.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.mts (Open) *changed* + version: SVC-2-4 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 10, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 21, + "key": "c" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 10, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 11, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 21, + "endLine": 1, + "endOffset": 21, + "insertString": "t" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 11, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/src/action/pageObjects/actionRenderer.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.mts (Open) *changed* + version: SVC-2-5 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 12, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 22, + "key": "t" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 12, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 13, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 22, + "endLine": 1, + "endOffset": 22, + "insertString": "i" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 13, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/src/action/pageObjects/actionRenderer.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.mts (Open) *changed* + version: SVC-2-6 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 14, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 23, + "key": "i" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 14, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 15, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 23, + "endLine": 1, + "endOffset": 23, + "insertString": "o" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 15, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/src/action/pageObjects/actionRenderer.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.mts (Open) *changed* + version: SVC-2-7 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 16, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 24, + "key": "o" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 16, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 17, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 24, + "endLine": 1, + "endOffset": 24, + "insertString": "n" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 17, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/src/action/pageObjects/actionRenderer.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.mts (Open) *changed* + version: SVC-2-8 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 18, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 25, + "key": "n" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 18, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 19, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 25, + "endLine": 1, + "endOffset": 25, + "insertString": "/" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 19, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/src/action/pageObjects/actionRenderer.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.mts (Open) *changed* + version: SVC-2-9 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 20, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 26, + "key": "/" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 20, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 21, + "type": "request", + "arguments": { + "preferences": {} + }, + "command": "configure" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "configure", + "request_seq": 21, + "success": true + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 22, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 26 + }, + "command": "completionInfo" + } +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/dist 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/dist 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json projectStateVersion: 2 projectProgramVersion: 1 structureChanged: true structureIsReused:: SafeModules Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (2) + /home/src/workspaces/project/src/index.mts SVC-2-9 "import { } from \"#action/\";" + /home/src/workspaces/project/src/action/pageObjects/actionRenderer.ts Text-1 "export const actionRenderer = 0;" + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "completionInfo", + "request_seq": 22, + "success": true, + "performanceData": { + "updateGraphDurationMs": * + }, + "body": { + "isGlobalCompletion": false, + "isMemberCompletion": false, + "isNewIdentifierLocation": true, + "entries": [ + { + "name": "pageObjects", + "kind": "directory", + "kindModifiers": "", + "sortText": "11" + } + ], + "defaultCommitCharacters": [] + } + } +After Request +watchedFiles:: +/home/src/tslibs/TS/Lib/lib.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts: + {"pollingInterval":500} +/home/src/workspaces/project/jsconfig.json: + {"pollingInterval":2000} +/home/src/workspaces/project/package.json: + {"pollingInterval":2000} + {"pollingInterval":250} +/home/src/workspaces/project/src/action/package.json: + {"pollingInterval":2000} +/home/src/workspaces/project/src/action/pageObjects/actionRenderer.ts: + {"pollingInterval":500} +/home/src/workspaces/project/src/action/pageObjects/package.json: + {"pollingInterval":2000} +/home/src/workspaces/project/src/package.json: + {"pollingInterval":2000} +/home/src/workspaces/project/tsconfig.json: + {"pollingInterval":2000} + +watchedDirectoriesRecursive:: +/home/src/workspaces/node_modules: + {} + {} *new* +/home/src/workspaces/node_modules/@types: + {} + {} +/home/src/workspaces/project: + {} +/home/src/workspaces/project/dist: *new* + {} +/home/src/workspaces/project/node_modules: + {} + {} *new* +/home/src/workspaces/project/node_modules/@types: + {} + {} +/home/src/workspaces/project/src: *new* + {} + +Projects:: +/dev/null/inferredProject1* (Inferred) + projectStateVersion: 1 + projectProgramVersion: 1 + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *changed* + projectStateVersion: 2 + projectProgramVersion: 2 *changed* + dirty: false *changed* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 23, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 26, + "endLine": 1, + "endOffset": 26, + "insertString": "" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 23, + "success": true + } +After Request +Projects:: +/dev/null/inferredProject1* (Inferred) + projectStateVersion: 1 + projectProgramVersion: 1 + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *changed* + projectStateVersion: 3 *changed* + projectProgramVersion: 2 + dirty: true *changed* + +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/src/action/pageObjects/actionRenderer.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.mts (Open) *changed* + version: SVC-2-10 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 24, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 26, + "endLine": 1, + "endOffset": 26, + "insertString": "p" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 24, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/src/action/pageObjects/actionRenderer.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.mts (Open) *changed* + version: SVC-2-11 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 25, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 27, + "key": "p" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 25, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 26, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 27, + "endLine": 1, + "endOffset": 27, + "insertString": "a" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 26, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/src/action/pageObjects/actionRenderer.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.mts (Open) *changed* + version: SVC-2-12 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 27, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 28, + "key": "a" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 27, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 28, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 28, + "endLine": 1, + "endOffset": 28, + "insertString": "g" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 28, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/src/action/pageObjects/actionRenderer.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.mts (Open) *changed* + version: SVC-2-13 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 29, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 29, + "key": "g" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 29, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 30, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 29, + "endLine": 1, + "endOffset": 29, + "insertString": "e" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 30, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/src/action/pageObjects/actionRenderer.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.mts (Open) *changed* + version: SVC-2-14 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 31, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 30, + "key": "e" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 31, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 32, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 30, + "endLine": 1, + "endOffset": 30, + "insertString": "O" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 32, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/src/action/pageObjects/actionRenderer.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.mts (Open) *changed* + version: SVC-2-15 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 33, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 31, + "key": "O" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 33, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 34, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 31, + "endLine": 1, + "endOffset": 31, + "insertString": "b" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 34, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/src/action/pageObjects/actionRenderer.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.mts (Open) *changed* + version: SVC-2-16 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 35, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 32, + "key": "b" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 35, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 36, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 32, + "endLine": 1, + "endOffset": 32, + "insertString": "j" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 36, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/src/action/pageObjects/actionRenderer.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.mts (Open) *changed* + version: SVC-2-17 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 37, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 33, + "key": "j" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 37, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 38, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 33, + "endLine": 1, + "endOffset": 33, + "insertString": "e" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 38, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/src/action/pageObjects/actionRenderer.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.mts (Open) *changed* + version: SVC-2-18 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 39, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 34, + "key": "e" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 39, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 40, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 34, + "endLine": 1, + "endOffset": 34, + "insertString": "c" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 40, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/src/action/pageObjects/actionRenderer.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.mts (Open) *changed* + version: SVC-2-19 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 41, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 35, + "key": "c" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 41, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 42, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 35, + "endLine": 1, + "endOffset": 35, + "insertString": "t" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 42, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/src/action/pageObjects/actionRenderer.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.mts (Open) *changed* + version: SVC-2-20 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 43, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 36, + "key": "t" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 43, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 44, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 36, + "endLine": 1, + "endOffset": 36, + "insertString": "s" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 44, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/src/action/pageObjects/actionRenderer.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.mts (Open) *changed* + version: SVC-2-21 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 45, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 37, + "key": "s" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 45, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 46, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 37, + "endLine": 1, + "endOffset": 37, + "insertString": "/" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 46, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/src/action/pageObjects/actionRenderer.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.mts (Open) *changed* + version: SVC-2-22 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 47, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 38, + "key": "/" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 47, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 48, + "type": "request", + "arguments": { + "preferences": {} + }, + "command": "configure" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "configure", + "request_seq": 48, + "success": true + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 49, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 38 + }, + "command": "completionInfo" + } +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json projectStateVersion: 3 projectProgramVersion: 2 structureChanged: true structureIsReused:: SafeModules Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (2) + /home/src/workspaces/project/src/index.mts SVC-2-22 "import { } from \"#action/pageObjects/\";" + /home/src/workspaces/project/src/action/pageObjects/actionRenderer.ts Text-1 "export const actionRenderer = 0;" + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "completionInfo", + "request_seq": 49, + "success": true, + "performanceData": { + "updateGraphDurationMs": * + }, + "body": { + "isGlobalCompletion": false, + "isMemberCompletion": false, + "isNewIdentifierLocation": true, + "entries": [ + { + "name": "actionRenderer", + "kind": "script", + "kindModifiers": "", + "sortText": "11" + } + ], + "defaultCommitCharacters": [] + } + } +After Request +Projects:: +/dev/null/inferredProject1* (Inferred) + projectStateVersion: 1 + projectProgramVersion: 1 + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *changed* + projectStateVersion: 3 + projectProgramVersion: 3 *changed* + dirty: false *changed* diff --git a/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard3.js b/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard3.js new file mode 100644 index 0000000000000..883e1132ad8dc --- /dev/null +++ b/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard3.js @@ -0,0 +1,543 @@ +Info seq [hh:mm:ss:mss] currentDirectory:: /home/src/Vscode/Projects/bin useCaseSensitiveFileNames:: false +Info seq [hh:mm:ss:mss] libs Location:: /home/src/tslibs/TS/Lib +Info seq [hh:mm:ss:mss] globalTypingsCacheLocation:: /home/src/Library/Caches/typescript +Info seq [hh:mm:ss:mss] Provided types map file "/home/src/tslibs/TS/Lib/typesMap.json" doesn't exist +//// [/home/src/tslibs/TS/Lib/lib.d.ts] +lib.d.ts-Text + +//// [/home/src/tslibs/TS/Lib/lib.decorators.d.ts] +lib.decorators.d.ts-Text + +//// [/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts] +lib.decorators.legacy.d.ts-Text + +//// [/home/src/workspaces/project/nope.ts] +export const nope = 0; + +//// [/home/src/workspaces/project/package.json] +{ + "types": "index.d.ts", + "imports": { + "#component-*": { + "types@>=4.3.5": "types/components/*.d.ts" + } + } +} + +//// [/home/src/workspaces/project/src/a.ts] +import { } from ""; + +//// [/home/src/workspaces/project/src/components/blah.ts] +export const blah = 0; + +//// [/home/src/workspaces/project/src/components/index.ts] +export const index = 0; + +//// [/home/src/workspaces/project/src/components/subfolder/one.ts] +export const one = 0; + +//// [/home/src/workspaces/project/tsconfig.json] +{ + "compilerOptions": { + "module": "nodenext", + "rootDir": "src", + "outDir": "dist", + "declarationDir": "types" + } +} + + +Info seq [hh:mm:ss:mss] request: + { + "seq": 0, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/tsconfig.json" + }, + "command": "open" + } +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined:: Result: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] Creating ConfiguredProject: /home/src/workspaces/project/tsconfig.json, currentDirectory: /home/src/workspaces/project +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/tsconfig.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Config file +Info seq [hh:mm:ss:mss] Config: /home/src/workspaces/project/tsconfig.json : { + "rootNames": [ + "/home/src/workspaces/project/nope.ts", + "/home/src/workspaces/project/src/a.ts", + "/home/src/workspaces/project/src/components/blah.ts", + "/home/src/workspaces/project/src/components/index.ts", + "/home/src/workspaces/project/src/components/subfolder/one.ts" + ], + "options": { + "module": 199, + "rootDir": "/home/src/workspaces/project/src", + "outDir": "/home/src/workspaces/project/dist", + "declarationDir": "/home/src/workspaces/project/types", + "configFilePath": "/home/src/workspaces/project/tsconfig.json" + } +} +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "projectLoadingStart", + "body": { + "projectName": "/home/src/workspaces/project/tsconfig.json", + "reason": "Creating possible configured project for /home/src/workspaces/project/tsconfig.json to open" + } + } +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project 1 undefined Config: /home/src/workspaces/project/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project 1 undefined Config: /home/src/workspaces/project/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/nope.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/a.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/components/blah.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/components/index.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/components/subfolder/one.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/components/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/components/subfolder/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.esnext.full.d.ts 500 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Missing file +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json projectStateVersion: 1 projectProgramVersion: 0 structureChanged: true structureIsReused:: Not Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (5) + /home/src/workspaces/project/nope.ts Text-1 "export const nope = 0;" + /home/src/workspaces/project/src/a.ts Text-1 "import { } from \"\";" + /home/src/workspaces/project/src/components/blah.ts Text-1 "export const blah = 0;" + /home/src/workspaces/project/src/components/index.ts Text-1 "export const index = 0;" + /home/src/workspaces/project/src/components/subfolder/one.ts Text-1 "export const one = 0;" + + + nope.ts + Matched by default include pattern '**/*' + File is CommonJS module because 'package.json' does not have field "type" + src/a.ts + Matched by default include pattern '**/*' + File is CommonJS module because 'package.json' does not have field "type" + src/components/blah.ts + Matched by default include pattern '**/*' + File is CommonJS module because 'package.json' does not have field "type" + src/components/index.ts + Matched by default include pattern '**/*' + File is CommonJS module because 'package.json' does not have field "type" + src/components/subfolder/one.ts + Matched by default include pattern '**/*' + File is CommonJS module because 'package.json' does not have field "type" + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "projectLoadingFinish", + "body": { + "projectName": "/home/src/workspaces/project/tsconfig.json" + } + } +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "configFileDiag", + "body": { + "triggerFile": "/home/src/workspaces/project/tsconfig.json", + "configFile": "/home/src/workspaces/project/tsconfig.json", + "diagnostics": [ + { + "text": "File '/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts' not found.\n The file is in the program because:\n Default library for target 'esnext'", + "code": 6053, + "category": "error" + }, + { + "text": "File '/home/src/workspaces/project/nope.ts' is not under 'rootDir' '/home/src/workspaces/project/src'. 'rootDir' is expected to contain all source files.\n The file is in the program because:\n Matched by default include pattern '**/*'\n File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field \"type\"", + "code": 6059, + "category": "error" + }, + { + "start": { + "line": 6, + "offset": 5 + }, + "end": { + "line": 6, + "offset": 21 + }, + "text": "Option 'declarationDir' cannot be specified without specifying option 'declaration' or option 'composite'.", + "code": 5069, + "category": "error", + "fileName": "/home/src/workspaces/project/tsconfig.json" + }, + { + "text": "Cannot find global type 'Array'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Boolean'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Function'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'IArguments'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Number'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Object'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'RegExp'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'String'.", + "code": 2318, + "category": "error" + } + ] + } + } +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined:: Result: undefined +Info seq [hh:mm:ss:mss] Creating InferredProject: /dev/null/inferredProject1*, currentDirectory: /home/src/workspaces/project +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/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: /home/src/tslibs/TS/Lib/lib.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.decorators.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /dev/null/inferredProject1* projectStateVersion: 1 projectProgramVersion: 0 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) + /home/src/tslibs/TS/Lib/lib.d.ts Text-1 lib.d.ts-Text + /home/src/tslibs/TS/Lib/lib.decorators.d.ts Text-1 lib.decorators.d.ts-Text + /home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts Text-1 lib.decorators.legacy.d.ts-Text + /home/src/workspaces/project/tsconfig.json SVC-1-0 "{\n \"compilerOptions\": {\n \"module\": \"nodenext\",\n \"rootDir\": \"src\",\n \"outDir\": \"dist\",\n \"declarationDir\": \"types\"\n }\n}" + + + ../../tslibs/TS/Lib/lib.d.ts + Default library for target 'es5' + ../../tslibs/TS/Lib/lib.decorators.d.ts + Library referenced via 'decorators' from file '../../tslibs/TS/Lib/lib.d.ts' + ../../tslibs/TS/Lib/lib.decorators.legacy.d.ts + Library referenced via 'decorators.legacy' from file '../../tslibs/TS/Lib/lib.d.ts' + tsconfig.json + Root file specified for compilation + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/package.json 250 undefined WatchType: package.json file +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (5) + +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: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "open", + "request_seq": 0, + "success": true, + "performanceData": { + "updateGraphDurationMs": * + } + } +After Request +watchedFiles:: +/home/src/tslibs/TS/Lib/lib.d.ts: *new* + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.d.ts: *new* + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts: *new* + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/jsconfig.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/nope.ts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/package.json: *new* + {"pollingInterval":2000} + {"pollingInterval":250} +/home/src/workspaces/project/src/a.ts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/src/components/blah.ts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/src/components/index.ts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/src/components/package.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/src/components/subfolder/one.ts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/src/components/subfolder/package.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/src/package.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/tsconfig.json: *new* + {"pollingInterval":2000} + +watchedDirectoriesRecursive:: +/home/src/workspaces/node_modules: *new* + {} +/home/src/workspaces/node_modules/@types: *new* + {} + {} +/home/src/workspaces/project: *new* + {} +/home/src/workspaces/project/node_modules: *new* + {} +/home/src/workspaces/project/node_modules/@types: *new* + {} + {} + +Projects:: +/dev/null/inferredProject1* (Inferred) *new* + projectStateVersion: 1 + projectProgramVersion: 1 + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *new* + projectStateVersion: 1 + projectProgramVersion: 1 + noOpenRef: true + +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts *new* + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts *new* + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts *new* + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/nope.ts *new* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/a.ts *new* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/blah.ts *new* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/index.ts *new* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/subfolder/one.ts *new* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) *new* + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 1, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts" + }, + "command": "open" + } +Info seq [hh:mm:ss:mss] FileWatcher:: Close:: WatchInfo: /home/src/workspaces/project/src/a.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/src/a.ts ProjectRootPath: undefined:: Result: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (5) + +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: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] FileName: /home/src/workspaces/project/src/a.ts ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "open", + "request_seq": 1, + "success": true + } +After Request +watchedFiles:: +/home/src/tslibs/TS/Lib/lib.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts: + {"pollingInterval":500} +/home/src/workspaces/project/jsconfig.json: + {"pollingInterval":2000} +/home/src/workspaces/project/nope.ts: + {"pollingInterval":500} +/home/src/workspaces/project/package.json: + {"pollingInterval":2000} + {"pollingInterval":250} +/home/src/workspaces/project/src/components/blah.ts: + {"pollingInterval":500} +/home/src/workspaces/project/src/components/index.ts: + {"pollingInterval":500} +/home/src/workspaces/project/src/components/package.json: + {"pollingInterval":2000} +/home/src/workspaces/project/src/components/subfolder/one.ts: + {"pollingInterval":500} +/home/src/workspaces/project/src/components/subfolder/package.json: + {"pollingInterval":2000} +/home/src/workspaces/project/src/package.json: + {"pollingInterval":2000} +/home/src/workspaces/project/tsconfig.json: + {"pollingInterval":2000} + +watchedFiles *deleted*:: +/home/src/workspaces/project/src/a.ts: + {"pollingInterval":500} + +watchedDirectoriesRecursive:: +/home/src/workspaces/node_modules: + {} +/home/src/workspaces/node_modules/@types: + {} + {} +/home/src/workspaces/project: + {} +/home/src/workspaces/project/node_modules: + {} +/home/src/workspaces/project/node_modules/@types: + {} + {} + +Projects:: +/dev/null/inferredProject1* (Inferred) + projectStateVersion: 1 + projectProgramVersion: 1 + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *changed* + projectStateVersion: 1 + projectProgramVersion: 1 + noOpenRef: false *changed* + +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/nope.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/a.ts (Open) *changed* + open: true *changed* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/components/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/subfolder/one.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 2, + "type": "request", + "arguments": { + "preferences": {} + }, + "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": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 18 + }, + "command": "completionInfo" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "completionInfo", + "request_seq": 3, + "success": true, + "body": { + "isGlobalCompletion": false, + "isMemberCompletion": false, + "isNewIdentifierLocation": true, + "entries": [], + "defaultCommitCharacters": [] + } + } \ No newline at end of file diff --git a/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard5.js b/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard5.js new file mode 100644 index 0000000000000..c72375f5b5cfd --- /dev/null +++ b/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard5.js @@ -0,0 +1,572 @@ +Info seq [hh:mm:ss:mss] currentDirectory:: /home/src/Vscode/Projects/bin useCaseSensitiveFileNames:: false +Info seq [hh:mm:ss:mss] libs Location:: /home/src/tslibs/TS/Lib +Info seq [hh:mm:ss:mss] globalTypingsCacheLocation:: /home/src/Library/Caches/typescript +Info seq [hh:mm:ss:mss] Provided types map file "/home/src/tslibs/TS/Lib/typesMap.json" doesn't exist +//// [/home/src/tslibs/TS/Lib/lib.d.ts] +lib.d.ts-Text + +//// [/home/src/tslibs/TS/Lib/lib.decorators.d.ts] +lib.decorators.d.ts-Text + +//// [/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts] +lib.decorators.legacy.d.ts-Text + +//// [/home/src/workspaces/project/package.json] +{ + "name": "foo", + "main": "dist/index.js", + "module": "dist/index.mjs", + "types": "dist/index.d.ts", + "imports": { + "#*": { + "import": { + "types": "./dist/types/*.d.mts", + "default": "./dist/esm/*.mjs" + }, + "default": { + "types": "./dist/types/*.d.ts", + "default": "./dist/cjs/*.js" + } + }, + "#only-in-cjs": { + "require": { + "types": "./dist/types/only-in-cjs/index.d.ts", + "default": "./dist/cjs/only-in-cjs/index.js" + } + } + } +} + +//// [/home/src/workspaces/project/src/index.mts] +import { } from ""; + +//// [/home/src/workspaces/project/src/types/blah.mts] +export const blah = 0; + +//// [/home/src/workspaces/project/src/types/blah.ts] +export const blah = 0; + +//// [/home/src/workspaces/project/src/types/index.mts] +export const index = 0; + +//// [/home/src/workspaces/project/src/types/index.ts] +export const index = 0; + +//// [/home/src/workspaces/project/src/types/only-in-cjs/index.ts] +export const onlyInCjs = 0; + +//// [/home/src/workspaces/project/tsconfig.json] +{ + "compilerOptions": { + "module": "nodenext", + "rootDir": "src", + "outDir": "dist/esm", + "declarationDir": "dist/types" + } +} + + +Info seq [hh:mm:ss:mss] request: + { + "seq": 0, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/tsconfig.json" + }, + "command": "open" + } +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined:: Result: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] Creating ConfiguredProject: /home/src/workspaces/project/tsconfig.json, currentDirectory: /home/src/workspaces/project +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/tsconfig.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Config file +Info seq [hh:mm:ss:mss] Config: /home/src/workspaces/project/tsconfig.json : { + "rootNames": [ + "/home/src/workspaces/project/src/index.mts", + "/home/src/workspaces/project/src/types/blah.mts", + "/home/src/workspaces/project/src/types/blah.ts", + "/home/src/workspaces/project/src/types/index.mts", + "/home/src/workspaces/project/src/types/index.ts", + "/home/src/workspaces/project/src/types/only-in-cjs/index.ts" + ], + "options": { + "module": 199, + "rootDir": "/home/src/workspaces/project/src", + "outDir": "/home/src/workspaces/project/dist/esm", + "declarationDir": "/home/src/workspaces/project/dist/types", + "configFilePath": "/home/src/workspaces/project/tsconfig.json" + } +} +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "projectLoadingStart", + "body": { + "projectName": "/home/src/workspaces/project/tsconfig.json", + "reason": "Creating possible configured project for /home/src/workspaces/project/tsconfig.json to open" + } + } +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project 1 undefined Config: /home/src/workspaces/project/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project 1 undefined Config: /home/src/workspaces/project/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/index.mts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/types/blah.mts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/types/blah.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/types/index.mts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/types/index.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/types/only-in-cjs/index.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/types/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/types/only-in-cjs/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.esnext.full.d.ts 500 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Missing file +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json projectStateVersion: 1 projectProgramVersion: 0 structureChanged: true structureIsReused:: Not Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (6) + /home/src/workspaces/project/src/index.mts Text-1 "import { } from \"\";" + /home/src/workspaces/project/src/types/blah.mts Text-1 "export const blah = 0;" + /home/src/workspaces/project/src/types/blah.ts Text-1 "export const blah = 0;" + /home/src/workspaces/project/src/types/index.mts Text-1 "export const index = 0;" + /home/src/workspaces/project/src/types/index.ts Text-1 "export const index = 0;" + /home/src/workspaces/project/src/types/only-in-cjs/index.ts Text-1 "export const onlyInCjs = 0;" + + + src/index.mts + Matched by default include pattern '**/*' + src/types/blah.mts + Matched by default include pattern '**/*' + src/types/blah.ts + Matched by default include pattern '**/*' + File is CommonJS module because 'package.json' does not have field "type" + src/types/index.mts + Matched by default include pattern '**/*' + src/types/index.ts + Matched by default include pattern '**/*' + File is CommonJS module because 'package.json' does not have field "type" + src/types/only-in-cjs/index.ts + Matched by default include pattern '**/*' + File is CommonJS module because 'package.json' does not have field "type" + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "projectLoadingFinish", + "body": { + "projectName": "/home/src/workspaces/project/tsconfig.json" + } + } +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "configFileDiag", + "body": { + "triggerFile": "/home/src/workspaces/project/tsconfig.json", + "configFile": "/home/src/workspaces/project/tsconfig.json", + "diagnostics": [ + { + "text": "File '/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts' not found.\n The file is in the program because:\n Default library for target 'esnext'", + "code": 6053, + "category": "error" + }, + { + "start": { + "line": 6, + "offset": 5 + }, + "end": { + "line": 6, + "offset": 21 + }, + "text": "Option 'declarationDir' cannot be specified without specifying option 'declaration' or option 'composite'.", + "code": 5069, + "category": "error", + "fileName": "/home/src/workspaces/project/tsconfig.json" + }, + { + "text": "Cannot find global type 'Array'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Boolean'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Function'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'IArguments'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Number'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Object'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'RegExp'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'String'.", + "code": 2318, + "category": "error" + } + ] + } + } +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined:: Result: undefined +Info seq [hh:mm:ss:mss] Creating InferredProject: /dev/null/inferredProject1*, currentDirectory: /home/src/workspaces/project +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/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: /home/src/tslibs/TS/Lib/lib.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.decorators.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /dev/null/inferredProject1* projectStateVersion: 1 projectProgramVersion: 0 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) + /home/src/tslibs/TS/Lib/lib.d.ts Text-1 lib.d.ts-Text + /home/src/tslibs/TS/Lib/lib.decorators.d.ts Text-1 lib.decorators.d.ts-Text + /home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts Text-1 lib.decorators.legacy.d.ts-Text + /home/src/workspaces/project/tsconfig.json SVC-1-0 "{\n \"compilerOptions\": {\n \"module\": \"nodenext\",\n \"rootDir\": \"src\",\n \"outDir\": \"dist/esm\",\n \"declarationDir\": \"dist/types\"\n }\n}" + + + ../../tslibs/TS/Lib/lib.d.ts + Default library for target 'es5' + ../../tslibs/TS/Lib/lib.decorators.d.ts + Library referenced via 'decorators' from file '../../tslibs/TS/Lib/lib.d.ts' + ../../tslibs/TS/Lib/lib.decorators.legacy.d.ts + Library referenced via 'decorators.legacy' from file '../../tslibs/TS/Lib/lib.d.ts' + tsconfig.json + Root file specified for compilation + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/package.json 250 undefined WatchType: package.json file +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (6) + +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: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "open", + "request_seq": 0, + "success": true, + "performanceData": { + "updateGraphDurationMs": * + } + } +After Request +watchedFiles:: +/home/src/tslibs/TS/Lib/lib.d.ts: *new* + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.d.ts: *new* + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts: *new* + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/jsconfig.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/package.json: *new* + {"pollingInterval":2000} + {"pollingInterval":250} +/home/src/workspaces/project/src/index.mts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/src/package.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/src/types/blah.mts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/src/types/blah.ts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/src/types/index.mts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/src/types/index.ts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/src/types/only-in-cjs/index.ts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/src/types/only-in-cjs/package.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/src/types/package.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/tsconfig.json: *new* + {"pollingInterval":2000} + +watchedDirectoriesRecursive:: +/home/src/workspaces/node_modules: *new* + {} +/home/src/workspaces/node_modules/@types: *new* + {} + {} +/home/src/workspaces/project: *new* + {} +/home/src/workspaces/project/node_modules: *new* + {} +/home/src/workspaces/project/node_modules/@types: *new* + {} + {} + +Projects:: +/dev/null/inferredProject1* (Inferred) *new* + projectStateVersion: 1 + projectProgramVersion: 1 + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *new* + projectStateVersion: 1 + projectProgramVersion: 1 + noOpenRef: true + +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts *new* + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts *new* + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts *new* + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/src/index.mts *new* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/types/blah.mts *new* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/types/blah.ts *new* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/types/index.mts *new* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/types/index.ts *new* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/types/only-in-cjs/index.ts *new* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) *new* + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 1, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts" + }, + "command": "open" + } +Info seq [hh:mm:ss:mss] FileWatcher:: Close:: WatchInfo: /home/src/workspaces/project/src/index.mts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/src/index.mts ProjectRootPath: undefined:: Result: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (6) + +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: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] FileName: /home/src/workspaces/project/src/index.mts ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "open", + "request_seq": 1, + "success": true + } +After Request +watchedFiles:: +/home/src/tslibs/TS/Lib/lib.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts: + {"pollingInterval":500} +/home/src/workspaces/project/jsconfig.json: + {"pollingInterval":2000} +/home/src/workspaces/project/package.json: + {"pollingInterval":2000} + {"pollingInterval":250} +/home/src/workspaces/project/src/package.json: + {"pollingInterval":2000} +/home/src/workspaces/project/src/types/blah.mts: + {"pollingInterval":500} +/home/src/workspaces/project/src/types/blah.ts: + {"pollingInterval":500} +/home/src/workspaces/project/src/types/index.mts: + {"pollingInterval":500} +/home/src/workspaces/project/src/types/index.ts: + {"pollingInterval":500} +/home/src/workspaces/project/src/types/only-in-cjs/index.ts: + {"pollingInterval":500} +/home/src/workspaces/project/src/types/only-in-cjs/package.json: + {"pollingInterval":2000} +/home/src/workspaces/project/src/types/package.json: + {"pollingInterval":2000} +/home/src/workspaces/project/tsconfig.json: + {"pollingInterval":2000} + +watchedFiles *deleted*:: +/home/src/workspaces/project/src/index.mts: + {"pollingInterval":500} + +watchedDirectoriesRecursive:: +/home/src/workspaces/node_modules: + {} +/home/src/workspaces/node_modules/@types: + {} + {} +/home/src/workspaces/project: + {} +/home/src/workspaces/project/node_modules: + {} +/home/src/workspaces/project/node_modules/@types: + {} + {} + +Projects:: +/dev/null/inferredProject1* (Inferred) + projectStateVersion: 1 + projectProgramVersion: 1 + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *changed* + projectStateVersion: 1 + projectProgramVersion: 1 + noOpenRef: false *changed* + +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/src/index.mts (Open) *changed* + open: true *changed* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/types/blah.mts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/types/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/types/index.mts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/types/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/types/only-in-cjs/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 2, + "type": "request", + "arguments": { + "preferences": {} + }, + "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": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 18 + }, + "command": "completionInfo" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "completionInfo", + "request_seq": 3, + "success": true, + "body": { + "isGlobalCompletion": false, + "isMemberCompletion": false, + "isNewIdentifierLocation": true, + "entries": [], + "defaultCommitCharacters": [] + } + } \ No newline at end of file diff --git a/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard7.js b/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard7.js new file mode 100644 index 0000000000000..e8b921a29c1b2 --- /dev/null +++ b/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard7.js @@ -0,0 +1,453 @@ +Info seq [hh:mm:ss:mss] currentDirectory:: /home/src/Vscode/Projects/bin useCaseSensitiveFileNames:: false +Info seq [hh:mm:ss:mss] libs Location:: /home/src/tslibs/TS/Lib +Info seq [hh:mm:ss:mss] globalTypingsCacheLocation:: /home/src/Library/Caches/typescript +Info seq [hh:mm:ss:mss] Provided types map file "/home/src/tslibs/TS/Lib/typesMap.json" doesn't exist +//// [/home/src/tslibs/TS/Lib/lib.d.ts] +lib.d.ts-Text + +//// [/home/src/tslibs/TS/Lib/lib.decorators.d.ts] +lib.decorators.d.ts-Text + +//// [/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts] +lib.decorators.legacy.d.ts-Text + +//// [/home/src/workspaces/project/package.json] +{ + "name": "foo", + "imports": { + "#*": "./dist/*.js" + } +} + +//// [/home/src/workspaces/project/src/blah.ts] +export const blah = 0; + +//// [/home/src/workspaces/project/src/index.mts] +import { } from ""; + +//// [/home/src/workspaces/project/tsconfig.json] +{ + "compilerOptions": { + "module": "nodenext", + "rootDir": "src", + "outDir": "dist" + } +} + + +Info seq [hh:mm:ss:mss] request: + { + "seq": 0, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/tsconfig.json" + }, + "command": "open" + } +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined:: Result: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] Creating ConfiguredProject: /home/src/workspaces/project/tsconfig.json, currentDirectory: /home/src/workspaces/project +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/tsconfig.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Config file +Info seq [hh:mm:ss:mss] Config: /home/src/workspaces/project/tsconfig.json : { + "rootNames": [ + "/home/src/workspaces/project/src/blah.ts", + "/home/src/workspaces/project/src/index.mts" + ], + "options": { + "module": 199, + "rootDir": "/home/src/workspaces/project/src", + "outDir": "/home/src/workspaces/project/dist", + "configFilePath": "/home/src/workspaces/project/tsconfig.json" + } +} +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "projectLoadingStart", + "body": { + "projectName": "/home/src/workspaces/project/tsconfig.json", + "reason": "Creating possible configured project for /home/src/workspaces/project/tsconfig.json to open" + } + } +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project 1 undefined Config: /home/src/workspaces/project/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project 1 undefined Config: /home/src/workspaces/project/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/blah.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/index.mts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.esnext.full.d.ts 500 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Missing file +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json projectStateVersion: 1 projectProgramVersion: 0 structureChanged: true structureIsReused:: Not Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (2) + /home/src/workspaces/project/src/blah.ts Text-1 "export const blah = 0;" + /home/src/workspaces/project/src/index.mts Text-1 "import { } from \"\";" + + + src/blah.ts + Matched by default include pattern '**/*' + File is CommonJS module because 'package.json' does not have field "type" + src/index.mts + Matched by default include pattern '**/*' + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "projectLoadingFinish", + "body": { + "projectName": "/home/src/workspaces/project/tsconfig.json" + } + } +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "configFileDiag", + "body": { + "triggerFile": "/home/src/workspaces/project/tsconfig.json", + "configFile": "/home/src/workspaces/project/tsconfig.json", + "diagnostics": [ + { + "text": "File '/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts' not found.\n The file is in the program because:\n Default library for target 'esnext'", + "code": 6053, + "category": "error" + }, + { + "text": "Cannot find global type 'Array'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Boolean'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Function'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'IArguments'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Number'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Object'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'RegExp'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'String'.", + "code": 2318, + "category": "error" + } + ] + } + } +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined:: Result: undefined +Info seq [hh:mm:ss:mss] Creating InferredProject: /dev/null/inferredProject1*, currentDirectory: /home/src/workspaces/project +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/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: /home/src/tslibs/TS/Lib/lib.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.decorators.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /dev/null/inferredProject1* projectStateVersion: 1 projectProgramVersion: 0 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) + /home/src/tslibs/TS/Lib/lib.d.ts Text-1 lib.d.ts-Text + /home/src/tslibs/TS/Lib/lib.decorators.d.ts Text-1 lib.decorators.d.ts-Text + /home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts Text-1 lib.decorators.legacy.d.ts-Text + /home/src/workspaces/project/tsconfig.json SVC-1-0 "{\n \"compilerOptions\": {\n \"module\": \"nodenext\",\n \"rootDir\": \"src\",\n \"outDir\": \"dist\"\n }\n}" + + + ../../tslibs/TS/Lib/lib.d.ts + Default library for target 'es5' + ../../tslibs/TS/Lib/lib.decorators.d.ts + Library referenced via 'decorators' from file '../../tslibs/TS/Lib/lib.d.ts' + ../../tslibs/TS/Lib/lib.decorators.legacy.d.ts + Library referenced via 'decorators.legacy' from file '../../tslibs/TS/Lib/lib.d.ts' + tsconfig.json + Root file specified for compilation + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/package.json 250 undefined WatchType: package.json file +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (2) + +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: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "open", + "request_seq": 0, + "success": true, + "performanceData": { + "updateGraphDurationMs": * + } + } +After Request +watchedFiles:: +/home/src/tslibs/TS/Lib/lib.d.ts: *new* + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.d.ts: *new* + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts: *new* + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/jsconfig.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/package.json: *new* + {"pollingInterval":2000} + {"pollingInterval":250} +/home/src/workspaces/project/src/blah.ts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/src/index.mts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/src/package.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/tsconfig.json: *new* + {"pollingInterval":2000} + +watchedDirectoriesRecursive:: +/home/src/workspaces/node_modules: *new* + {} +/home/src/workspaces/node_modules/@types: *new* + {} + {} +/home/src/workspaces/project: *new* + {} +/home/src/workspaces/project/node_modules: *new* + {} +/home/src/workspaces/project/node_modules/@types: *new* + {} + {} + +Projects:: +/dev/null/inferredProject1* (Inferred) *new* + projectStateVersion: 1 + projectProgramVersion: 1 + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *new* + projectStateVersion: 1 + projectProgramVersion: 1 + noOpenRef: true + +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts *new* + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts *new* + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts *new* + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/src/blah.ts *new* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.mts *new* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) *new* + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 1, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts" + }, + "command": "open" + } +Info seq [hh:mm:ss:mss] FileWatcher:: Close:: WatchInfo: /home/src/workspaces/project/src/index.mts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/src/index.mts ProjectRootPath: undefined:: Result: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (2) + +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: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] FileName: /home/src/workspaces/project/src/index.mts ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "open", + "request_seq": 1, + "success": true + } +After Request +watchedFiles:: +/home/src/tslibs/TS/Lib/lib.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts: + {"pollingInterval":500} +/home/src/workspaces/project/jsconfig.json: + {"pollingInterval":2000} +/home/src/workspaces/project/package.json: + {"pollingInterval":2000} + {"pollingInterval":250} +/home/src/workspaces/project/src/blah.ts: + {"pollingInterval":500} +/home/src/workspaces/project/src/package.json: + {"pollingInterval":2000} +/home/src/workspaces/project/tsconfig.json: + {"pollingInterval":2000} + +watchedFiles *deleted*:: +/home/src/workspaces/project/src/index.mts: + {"pollingInterval":500} + +watchedDirectoriesRecursive:: +/home/src/workspaces/node_modules: + {} +/home/src/workspaces/node_modules/@types: + {} + {} +/home/src/workspaces/project: + {} +/home/src/workspaces/project/node_modules: + {} +/home/src/workspaces/project/node_modules/@types: + {} + {} + +Projects:: +/dev/null/inferredProject1* (Inferred) + projectStateVersion: 1 + projectProgramVersion: 1 + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *changed* + projectStateVersion: 1 + projectProgramVersion: 1 + noOpenRef: false *changed* + +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/src/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.mts (Open) *changed* + open: true *changed* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 2, + "type": "request", + "arguments": { + "preferences": {} + }, + "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": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 18 + }, + "command": "completionInfo" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "completionInfo", + "request_seq": 3, + "success": true, + "body": { + "isGlobalCompletion": false, + "isMemberCompletion": false, + "isNewIdentifierLocation": true, + "entries": [ + { + "name": "#blah", + "kind": "script", + "kindModifiers": "", + "sortText": "11" + } + ], + "defaultCommitCharacters": [] + } + } \ No newline at end of file diff --git a/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard8.js b/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard8.js new file mode 100644 index 0000000000000..e8b921a29c1b2 --- /dev/null +++ b/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard8.js @@ -0,0 +1,453 @@ +Info seq [hh:mm:ss:mss] currentDirectory:: /home/src/Vscode/Projects/bin useCaseSensitiveFileNames:: false +Info seq [hh:mm:ss:mss] libs Location:: /home/src/tslibs/TS/Lib +Info seq [hh:mm:ss:mss] globalTypingsCacheLocation:: /home/src/Library/Caches/typescript +Info seq [hh:mm:ss:mss] Provided types map file "/home/src/tslibs/TS/Lib/typesMap.json" doesn't exist +//// [/home/src/tslibs/TS/Lib/lib.d.ts] +lib.d.ts-Text + +//// [/home/src/tslibs/TS/Lib/lib.decorators.d.ts] +lib.decorators.d.ts-Text + +//// [/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts] +lib.decorators.legacy.d.ts-Text + +//// [/home/src/workspaces/project/package.json] +{ + "name": "foo", + "imports": { + "#*": "./dist/*.js" + } +} + +//// [/home/src/workspaces/project/src/blah.ts] +export const blah = 0; + +//// [/home/src/workspaces/project/src/index.mts] +import { } from ""; + +//// [/home/src/workspaces/project/tsconfig.json] +{ + "compilerOptions": { + "module": "nodenext", + "rootDir": "src", + "outDir": "dist" + } +} + + +Info seq [hh:mm:ss:mss] request: + { + "seq": 0, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/tsconfig.json" + }, + "command": "open" + } +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined:: Result: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] Creating ConfiguredProject: /home/src/workspaces/project/tsconfig.json, currentDirectory: /home/src/workspaces/project +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/tsconfig.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Config file +Info seq [hh:mm:ss:mss] Config: /home/src/workspaces/project/tsconfig.json : { + "rootNames": [ + "/home/src/workspaces/project/src/blah.ts", + "/home/src/workspaces/project/src/index.mts" + ], + "options": { + "module": 199, + "rootDir": "/home/src/workspaces/project/src", + "outDir": "/home/src/workspaces/project/dist", + "configFilePath": "/home/src/workspaces/project/tsconfig.json" + } +} +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "projectLoadingStart", + "body": { + "projectName": "/home/src/workspaces/project/tsconfig.json", + "reason": "Creating possible configured project for /home/src/workspaces/project/tsconfig.json to open" + } + } +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project 1 undefined Config: /home/src/workspaces/project/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project 1 undefined Config: /home/src/workspaces/project/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/blah.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/index.mts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.esnext.full.d.ts 500 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Missing file +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json projectStateVersion: 1 projectProgramVersion: 0 structureChanged: true structureIsReused:: Not Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (2) + /home/src/workspaces/project/src/blah.ts Text-1 "export const blah = 0;" + /home/src/workspaces/project/src/index.mts Text-1 "import { } from \"\";" + + + src/blah.ts + Matched by default include pattern '**/*' + File is CommonJS module because 'package.json' does not have field "type" + src/index.mts + Matched by default include pattern '**/*' + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "projectLoadingFinish", + "body": { + "projectName": "/home/src/workspaces/project/tsconfig.json" + } + } +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "configFileDiag", + "body": { + "triggerFile": "/home/src/workspaces/project/tsconfig.json", + "configFile": "/home/src/workspaces/project/tsconfig.json", + "diagnostics": [ + { + "text": "File '/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts' not found.\n The file is in the program because:\n Default library for target 'esnext'", + "code": 6053, + "category": "error" + }, + { + "text": "Cannot find global type 'Array'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Boolean'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Function'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'IArguments'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Number'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Object'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'RegExp'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'String'.", + "code": 2318, + "category": "error" + } + ] + } + } +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined:: Result: undefined +Info seq [hh:mm:ss:mss] Creating InferredProject: /dev/null/inferredProject1*, currentDirectory: /home/src/workspaces/project +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/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: /home/src/tslibs/TS/Lib/lib.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.decorators.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /dev/null/inferredProject1* projectStateVersion: 1 projectProgramVersion: 0 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) + /home/src/tslibs/TS/Lib/lib.d.ts Text-1 lib.d.ts-Text + /home/src/tslibs/TS/Lib/lib.decorators.d.ts Text-1 lib.decorators.d.ts-Text + /home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts Text-1 lib.decorators.legacy.d.ts-Text + /home/src/workspaces/project/tsconfig.json SVC-1-0 "{\n \"compilerOptions\": {\n \"module\": \"nodenext\",\n \"rootDir\": \"src\",\n \"outDir\": \"dist\"\n }\n}" + + + ../../tslibs/TS/Lib/lib.d.ts + Default library for target 'es5' + ../../tslibs/TS/Lib/lib.decorators.d.ts + Library referenced via 'decorators' from file '../../tslibs/TS/Lib/lib.d.ts' + ../../tslibs/TS/Lib/lib.decorators.legacy.d.ts + Library referenced via 'decorators.legacy' from file '../../tslibs/TS/Lib/lib.d.ts' + tsconfig.json + Root file specified for compilation + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/package.json 250 undefined WatchType: package.json file +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (2) + +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: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "open", + "request_seq": 0, + "success": true, + "performanceData": { + "updateGraphDurationMs": * + } + } +After Request +watchedFiles:: +/home/src/tslibs/TS/Lib/lib.d.ts: *new* + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.d.ts: *new* + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts: *new* + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/jsconfig.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/package.json: *new* + {"pollingInterval":2000} + {"pollingInterval":250} +/home/src/workspaces/project/src/blah.ts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/src/index.mts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/src/package.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/tsconfig.json: *new* + {"pollingInterval":2000} + +watchedDirectoriesRecursive:: +/home/src/workspaces/node_modules: *new* + {} +/home/src/workspaces/node_modules/@types: *new* + {} + {} +/home/src/workspaces/project: *new* + {} +/home/src/workspaces/project/node_modules: *new* + {} +/home/src/workspaces/project/node_modules/@types: *new* + {} + {} + +Projects:: +/dev/null/inferredProject1* (Inferred) *new* + projectStateVersion: 1 + projectProgramVersion: 1 + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *new* + projectStateVersion: 1 + projectProgramVersion: 1 + noOpenRef: true + +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts *new* + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts *new* + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts *new* + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/src/blah.ts *new* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.mts *new* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) *new* + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 1, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts" + }, + "command": "open" + } +Info seq [hh:mm:ss:mss] FileWatcher:: Close:: WatchInfo: /home/src/workspaces/project/src/index.mts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/src/index.mts ProjectRootPath: undefined:: Result: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (2) + +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: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] FileName: /home/src/workspaces/project/src/index.mts ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "open", + "request_seq": 1, + "success": true + } +After Request +watchedFiles:: +/home/src/tslibs/TS/Lib/lib.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts: + {"pollingInterval":500} +/home/src/workspaces/project/jsconfig.json: + {"pollingInterval":2000} +/home/src/workspaces/project/package.json: + {"pollingInterval":2000} + {"pollingInterval":250} +/home/src/workspaces/project/src/blah.ts: + {"pollingInterval":500} +/home/src/workspaces/project/src/package.json: + {"pollingInterval":2000} +/home/src/workspaces/project/tsconfig.json: + {"pollingInterval":2000} + +watchedFiles *deleted*:: +/home/src/workspaces/project/src/index.mts: + {"pollingInterval":500} + +watchedDirectoriesRecursive:: +/home/src/workspaces/node_modules: + {} +/home/src/workspaces/node_modules/@types: + {} + {} +/home/src/workspaces/project: + {} +/home/src/workspaces/project/node_modules: + {} +/home/src/workspaces/project/node_modules/@types: + {} + {} + +Projects:: +/dev/null/inferredProject1* (Inferred) + projectStateVersion: 1 + projectProgramVersion: 1 + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *changed* + projectStateVersion: 1 + projectProgramVersion: 1 + noOpenRef: false *changed* + +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/src/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.mts (Open) *changed* + open: true *changed* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 2, + "type": "request", + "arguments": { + "preferences": {} + }, + "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": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 18 + }, + "command": "completionInfo" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "completionInfo", + "request_seq": 3, + "success": true, + "body": { + "isGlobalCompletion": false, + "isMemberCompletion": false, + "isNewIdentifierLocation": true, + "entries": [ + { + "name": "#blah", + "kind": "script", + "kindModifiers": "", + "sortText": "11" + } + ], + "defaultCommitCharacters": [] + } + } \ No newline at end of file diff --git a/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard9.js b/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard9.js new file mode 100644 index 0000000000000..0efd23e61b952 --- /dev/null +++ b/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard9.js @@ -0,0 +1,435 @@ +Info seq [hh:mm:ss:mss] currentDirectory:: /home/src/Vscode/Projects/bin useCaseSensitiveFileNames:: false +Info seq [hh:mm:ss:mss] libs Location:: /home/src/tslibs/TS/Lib +Info seq [hh:mm:ss:mss] globalTypingsCacheLocation:: /home/src/Library/Caches/typescript +Info seq [hh:mm:ss:mss] Provided types map file "/home/src/tslibs/TS/Lib/typesMap.json" doesn't exist +//// [/home/src/tslibs/TS/Lib/lib.d.ts] +lib.d.ts-Text + +//// [/home/src/tslibs/TS/Lib/lib.decorators.d.ts] +lib.decorators.d.ts-Text + +//// [/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts] +lib.decorators.legacy.d.ts-Text + +//// [/home/src/workspaces/project/package.json] +{ + "name": "foo", + "imports": { + "#*": "./dist/*.js" + } +} + +//// [/home/src/workspaces/project/src/blah.js] +export const blah = 0; + +//// [/home/src/workspaces/project/src/index.mts] +import { } from ""; + +//// [/home/src/workspaces/project/tsconfig.json] +{ + "compilerOptions": { + "module": "nodenext", + "rootDir": "src", + "outDir": "dist", + "allowJs": "true" + } +} + + +Info seq [hh:mm:ss:mss] request: + { + "seq": 0, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/tsconfig.json" + }, + "command": "open" + } +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined:: Result: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] Creating ConfiguredProject: /home/src/workspaces/project/tsconfig.json, currentDirectory: /home/src/workspaces/project +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/tsconfig.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Config file +Info seq [hh:mm:ss:mss] Config: /home/src/workspaces/project/tsconfig.json : { + "rootNames": [ + "/home/src/workspaces/project/src/index.mts" + ], + "options": { + "module": 199, + "rootDir": "/home/src/workspaces/project/src", + "outDir": "/home/src/workspaces/project/dist", + "configFilePath": "/home/src/workspaces/project/tsconfig.json" + } +} +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "projectLoadingStart", + "body": { + "projectName": "/home/src/workspaces/project/tsconfig.json", + "reason": "Creating possible configured project for /home/src/workspaces/project/tsconfig.json to open" + } + } +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project 1 undefined Config: /home/src/workspaces/project/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project 1 undefined Config: /home/src/workspaces/project/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/index.mts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.esnext.full.d.ts 500 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Missing file +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json projectStateVersion: 1 projectProgramVersion: 0 structureChanged: true structureIsReused:: Not Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (1) + /home/src/workspaces/project/src/index.mts Text-1 "import { } from \"\";" + + + src/index.mts + Matched by default include pattern '**/*' + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "projectLoadingFinish", + "body": { + "projectName": "/home/src/workspaces/project/tsconfig.json" + } + } +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "configFileDiag", + "body": { + "triggerFile": "/home/src/workspaces/project/tsconfig.json", + "configFile": "/home/src/workspaces/project/tsconfig.json", + "diagnostics": [ + { + "text": "File '/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts' not found.\n The file is in the program because:\n Default library for target 'esnext'", + "code": 6053, + "category": "error" + }, + { + "text": "Cannot find global type 'Array'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Boolean'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Function'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'IArguments'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Number'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Object'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'RegExp'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'String'.", + "code": 2318, + "category": "error" + }, + { + "start": { + "line": 6, + "offset": 16 + }, + "end": { + "line": 6, + "offset": 22 + }, + "text": "Compiler option 'allowJs' requires a value of type boolean.", + "code": 5024, + "category": "error", + "fileName": "/home/src/workspaces/project/tsconfig.json" + } + ] + } + } +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined:: Result: undefined +Info seq [hh:mm:ss:mss] Creating InferredProject: /dev/null/inferredProject1*, currentDirectory: /home/src/workspaces/project +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/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: /home/src/tslibs/TS/Lib/lib.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.decorators.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /dev/null/inferredProject1* projectStateVersion: 1 projectProgramVersion: 0 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) + /home/src/tslibs/TS/Lib/lib.d.ts Text-1 lib.d.ts-Text + /home/src/tslibs/TS/Lib/lib.decorators.d.ts Text-1 lib.decorators.d.ts-Text + /home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts Text-1 lib.decorators.legacy.d.ts-Text + /home/src/workspaces/project/tsconfig.json SVC-1-0 "{\n \"compilerOptions\": {\n \"module\": \"nodenext\",\n \"rootDir\": \"src\",\n \"outDir\": \"dist\",\n \"allowJs\": \"true\"\n }\n}" + + + ../../tslibs/TS/Lib/lib.d.ts + Default library for target 'es5' + ../../tslibs/TS/Lib/lib.decorators.d.ts + Library referenced via 'decorators' from file '../../tslibs/TS/Lib/lib.d.ts' + ../../tslibs/TS/Lib/lib.decorators.legacy.d.ts + Library referenced via 'decorators.legacy' from file '../../tslibs/TS/Lib/lib.d.ts' + tsconfig.json + Root file specified for compilation + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/package.json 250 undefined WatchType: package.json file +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (1) + +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: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "open", + "request_seq": 0, + "success": true, + "performanceData": { + "updateGraphDurationMs": * + } + } +After Request +watchedFiles:: +/home/src/tslibs/TS/Lib/lib.d.ts: *new* + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.d.ts: *new* + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts: *new* + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/jsconfig.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/package.json: *new* + {"pollingInterval":250} +/home/src/workspaces/project/src/index.mts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/tsconfig.json: *new* + {"pollingInterval":2000} + +watchedDirectoriesRecursive:: +/home/src/workspaces/node_modules: *new* + {} +/home/src/workspaces/node_modules/@types: *new* + {} + {} +/home/src/workspaces/project: *new* + {} +/home/src/workspaces/project/node_modules: *new* + {} +/home/src/workspaces/project/node_modules/@types: *new* + {} + {} + +Projects:: +/dev/null/inferredProject1* (Inferred) *new* + projectStateVersion: 1 + projectProgramVersion: 1 + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *new* + projectStateVersion: 1 + projectProgramVersion: 1 + noOpenRef: true + +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts *new* + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts *new* + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts *new* + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/src/index.mts *new* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) *new* + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 1, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/index.mts" + }, + "command": "open" + } +Info seq [hh:mm:ss:mss] FileWatcher:: Close:: WatchInfo: /home/src/workspaces/project/src/index.mts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/src/index.mts ProjectRootPath: undefined:: Result: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (1) + +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: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] FileName: /home/src/workspaces/project/src/index.mts ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "open", + "request_seq": 1, + "success": true + } +After Request +watchedFiles:: +/home/src/tslibs/TS/Lib/lib.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts: + {"pollingInterval":500} +/home/src/workspaces/project/jsconfig.json: + {"pollingInterval":2000} +/home/src/workspaces/project/package.json: + {"pollingInterval":250} +/home/src/workspaces/project/tsconfig.json: + {"pollingInterval":2000} + +watchedFiles *deleted*:: +/home/src/workspaces/project/src/index.mts: + {"pollingInterval":500} + +watchedDirectoriesRecursive:: +/home/src/workspaces/node_modules: + {} +/home/src/workspaces/node_modules/@types: + {} + {} +/home/src/workspaces/project: + {} +/home/src/workspaces/project/node_modules: + {} +/home/src/workspaces/project/node_modules/@types: + {} + {} + +Projects:: +/dev/null/inferredProject1* (Inferred) + projectStateVersion: 1 + projectProgramVersion: 1 + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *changed* + projectStateVersion: 1 + projectProgramVersion: 1 + noOpenRef: false *changed* + +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/src/index.mts (Open) *changed* + open: true *changed* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 2, + "type": "request", + "arguments": { + "preferences": {} + }, + "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": "/home/src/workspaces/project/src/index.mts", + "line": 1, + "offset": 18 + }, + "command": "completionInfo" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "completionInfo", + "request_seq": 3, + "success": true, + "body": { + "isGlobalCompletion": false, + "isMemberCompletion": false, + "isNewIdentifierLocation": true, + "entries": [], + "defaultCommitCharacters": [] + } + } \ No newline at end of file diff --git a/tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard1.ts b/tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard1.ts new file mode 100644 index 0000000000000..0bc1ad2dbdacc --- /dev/null +++ b/tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard1.ts @@ -0,0 +1,52 @@ +/// <reference path="../fourslash.ts"/> + +// @Filename: /home/src/workspaces/project/tsconfig.json +//// { +//// "compilerOptions": { +//// "module": "nodenext", +//// "rootDir": "src", +//// "outDir": "dist" +//// } +//// } + +// @Filename: /home/src/workspaces/project/package.json +//// { +//// "name": "foo", +//// "main": "dist/index.js", +//// "module": "dist/index.mjs", +//// "types": "dist/index.d.ts", +//// "imports": { +//// "#*": { +//// "types": "./dist/*.d.ts", +//// "import": "./dist/*.mjs", +//// "default": "./dist/*.js" +//// }, +//// "#arguments": { +//// "types": "./dist/arguments/index.d.ts", +//// "import": "./dist/arguments/index.mjs", +//// "default": "./dist/arguments/index.js" +//// } +//// } +//// } + +// @Filename: /home/src/workspaces/project/src/index.ts +//// export const index = 0; + +// @Filename: /home/src/workspaces/project/src/blah.ts +//// export const blah = 0; + +// @Filename: /home/src/workspaces/project/src/arguments/index.ts +//// export const arguments = 0; + +// @Filename: /home/src/workspaces/project/src/m.mts +//// import { } from "/**/"; + +verify.completions({ + marker: "", + isNewIdentifierLocation: true, + exact: [ + { name: "#blah", kind: "script", kindModifiers: "" }, + { name: "#index", kind: "script", kindModifiers: "" }, + { name: "#arguments", kind: "script", kindModifiers: "" }, + ] +}); diff --git a/tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard2.ts b/tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard2.ts new file mode 100644 index 0000000000000..5dbbeba52d78c --- /dev/null +++ b/tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard2.ts @@ -0,0 +1,49 @@ +/// <reference path="../fourslash.ts"/> + +// @Filename: /home/src/workspaces/project/tsconfig.json +//// { +//// "compilerOptions": { +//// "module": "nodenext", +//// "rootDir": "src", +//// "outDir": "dist" +//// } +//// } + +// @Filename: /home/src/workspaces/project/package.json +//// { +//// "name": "salesforce-pageobjects", +//// "version": "1.0.0", +//// "imports": { +//// "#*": { +//// "types": "./dist/*.d.ts", +//// "import": "./dist/*.mjs", +//// "default": "./dist/*.js" +//// } +//// } +//// } + +// @Filename: /home/src/workspaces/project/src/action/pageObjects/actionRenderer.ts +//// export const actionRenderer = 0; + +// @Filename: /home/src/workspaces/project/src/index.mts +//// import { } from "/**/"; + +verify.completions({ + marker: "", + isNewIdentifierLocation: true, + exact: [{ name: "#action", kind: "directory" }] +}); + +edit.insert("#action/"); + +verify.completions({ + isNewIdentifierLocation: true, + exact: [{ name: "pageObjects", kind: "directory" }], +}); + +edit.insert("pageObjects/"); + +verify.completions({ + isNewIdentifierLocation: true, + exact: [{ name: "actionRenderer", kind: "script" }], +}); diff --git a/tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard3.ts b/tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard3.ts new file mode 100644 index 0000000000000..443382bdf4811 --- /dev/null +++ b/tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard3.ts @@ -0,0 +1,53 @@ +/// <reference path="../fourslash.ts"/> + +// @Filename: /home/src/workspaces/project/tsconfig.json +//// { +//// "compilerOptions": { +//// "module": "nodenext", +//// "rootDir": "src", +//// "outDir": "dist", +//// "declarationDir": "types" +//// } +//// } + +// @Filename: /home/src/workspaces/project/package.json +//// { +//// "types": "index.d.ts", +//// "imports": { +//// "#component-*": { +//// "types@>=4.3.5": "types/components/*.d.ts" +//// } +//// } +//// } + +// @Filename: /home/src/workspaces/project/nope.ts +//// export const nope = 0; + +// @Filename: /home/src/workspaces/project/src/components/index.ts +//// export const index = 0; + +// @Filename: /home/src/workspaces/project/src/components/blah.ts +//// export const blah = 0; + +// @Filename: /home/src/workspaces/project/src/components/subfolder/one.ts +//// export const one = 0; + +// @Filename: /home/src/workspaces/project/src/a.ts +//// import { } from "/**/"; + +verify.completions({ + marker: "", + isNewIdentifierLocation: true, + exact: [ + { name: "#component-blah", kind: "script" }, + { name: "#component-index", kind: "script" }, + { name: "#component-subfolder", kind: "directory" }, + ], +}); + +edit.insert("#component-subfolder/"); + +verify.completions({ + isNewIdentifierLocation: true, + exact: [{ name: "one", kind: "script" }], +}); diff --git a/tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard5.ts b/tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard5.ts new file mode 100644 index 0000000000000..9cb5cbb395309 --- /dev/null +++ b/tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard5.ts @@ -0,0 +1,64 @@ +/// <reference path="../fourslash.ts"/> + +// @Filename: /home/src/workspaces/project/tsconfig.json +//// { +//// "compilerOptions": { +//// "module": "nodenext", +//// "rootDir": "src", +//// "outDir": "dist/esm", +//// "declarationDir": "dist/types" +//// } +//// } + +// @Filename: /home/src/workspaces/project/package.json +//// { +//// "name": "foo", +//// "main": "dist/index.js", +//// "module": "dist/index.mjs", +//// "types": "dist/index.d.ts", +//// "imports": { +//// "#*": { +//// "import": { +//// "types": "./dist/types/*.d.mts", +//// "default": "./dist/esm/*.mjs" +//// }, +//// "default": { +//// "types": "./dist/types/*.d.ts", +//// "default": "./dist/cjs/*.js" +//// } +//// }, +//// "#only-in-cjs": { +//// "require": { +//// "types": "./dist/types/only-in-cjs/index.d.ts", +//// "default": "./dist/cjs/only-in-cjs/index.js" +//// } +//// } +//// } +//// } + +// @Filename: /home/src/workspaces/project/src/types/index.mts +//// export const index = 0; + +// @Filename: /home/src/workspaces/project/src/types/index.ts +//// export const index = 0; + +// @Filename: /home/src/workspaces/project/src/types/blah.mts +//// export const blah = 0; + +// @Filename: /home/src/workspaces/project/src/types/blah.ts +//// export const blah = 0; + +// @Filename: /home/src/workspaces/project/src/types/only-in-cjs/index.ts +//// export const onlyInCjs = 0; + +// @Filename: /home/src/workspaces/project/src/index.mts +//// import { } from "/**/"; + +verify.completions({ + marker: "", + isNewIdentifierLocation: true, + exact: [ + { name: "#blah", kind: "script", kindModifiers: "" }, + { name: "#index", kind: "script", kindModifiers: "" }, + ] +}); diff --git a/tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard6.ts b/tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard6.ts new file mode 100644 index 0000000000000..79026a3f7c2b3 --- /dev/null +++ b/tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard6.ts @@ -0,0 +1,38 @@ +/// <reference path="../fourslash.ts"/> + +// @Filename: /home/src/workspaces/project/tsconfig.json +//// { +//// "compilerOptions": { +//// "module": "nodenext", +//// "rootDir": "src", +//// "outDir": "dist" +//// } +//// } + +// @Filename: /home/src/workspaces/project/package.json +//// { +//// "name": "foo", +//// "main": "dist/index.js", +//// "module": "dist/index.mjs", +//// "types": "dist/index.d.ts", +//// "imports": { +//// "#*": "./dist/*?.d.ts" +//// } +//// } + +// @Filename: /home/src/workspaces/project/src/index.ts +//// export const index = 0; + +// @Filename: /home/src/workspaces/project/src/blah?.ts +//// export const blah = 0; + +// @Filename: /home/src/workspaces/project/src/m.mts +//// import { } from "/**/"; + +verify.completions({ + marker: "", + isNewIdentifierLocation: true, + exact: [ + { name: "#blah", kind: "script", kindModifiers: "" }, + ] +}); diff --git a/tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard7.ts b/tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard7.ts new file mode 100644 index 0000000000000..c26da613c1304 --- /dev/null +++ b/tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard7.ts @@ -0,0 +1,32 @@ +/// <reference path="../fourslash.ts"/> + +// @Filename: /home/src/workspaces/project/tsconfig.json +//// { +//// "compilerOptions": { +//// "module": "nodenext", +//// "rootDir": "src", +//// "outDir": "dist" +//// } +//// } + +// @Filename: /home/src/workspaces/project/package.json +//// { +//// "name": "foo", +//// "imports": { +//// "#*": "./dist/*.js" +//// } +//// } + +// @Filename: /home/src/workspaces/project/src/blah.ts +//// export const blah = 0; + +// @Filename: /home/src/workspaces/project/src/index.mts +//// import { } from "/**/"; + +verify.completions({ + marker: "", + isNewIdentifierLocation: true, + exact: [ + { name: "#blah", kind: "script", kindModifiers: "" }, + ] +}); diff --git a/tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard8.ts b/tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard8.ts new file mode 100644 index 0000000000000..c26da613c1304 --- /dev/null +++ b/tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard8.ts @@ -0,0 +1,32 @@ +/// <reference path="../fourslash.ts"/> + +// @Filename: /home/src/workspaces/project/tsconfig.json +//// { +//// "compilerOptions": { +//// "module": "nodenext", +//// "rootDir": "src", +//// "outDir": "dist" +//// } +//// } + +// @Filename: /home/src/workspaces/project/package.json +//// { +//// "name": "foo", +//// "imports": { +//// "#*": "./dist/*.js" +//// } +//// } + +// @Filename: /home/src/workspaces/project/src/blah.ts +//// export const blah = 0; + +// @Filename: /home/src/workspaces/project/src/index.mts +//// import { } from "/**/"; + +verify.completions({ + marker: "", + isNewIdentifierLocation: true, + exact: [ + { name: "#blah", kind: "script", kindModifiers: "" }, + ] +}); diff --git a/tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard9.ts b/tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard9.ts new file mode 100644 index 0000000000000..4b6f1aa222da0 --- /dev/null +++ b/tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard9.ts @@ -0,0 +1,33 @@ +/// <reference path="../fourslash.ts"/> + +// @Filename: /home/src/workspaces/project/tsconfig.json +//// { +//// "compilerOptions": { +//// "module": "nodenext", +//// "rootDir": "src", +//// "outDir": "dist", +//// "allowJs": "true" +//// } +//// } + +// @Filename: /home/src/workspaces/project/package.json +//// { +//// "name": "foo", +//// "imports": { +//// "#*": "./dist/*.js" +//// } +//// } + +// @Filename: /home/src/workspaces/project/src/blah.js +//// export const blah = 0; + +// @Filename: /home/src/workspaces/project/src/index.mts +//// import { } from "/**/"; + +verify.completions({ + marker: "", + isNewIdentifierLocation: true, + exact: [ + { name: "#blah", kind: "script", kindModifiers: "" }, + ] +}); From e96bd5a392ffb31e9d469816be739b7f5db81264 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= <mateuszburzynski@gmail.com> Date: Mon, 14 Oct 2024 18:47:51 +0200 Subject: [PATCH 14/26] add test with `allowImportingTsExtensions` --- ...rtCompletionsPackageJsonImportsPattern2.ts | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 tests/cases/fourslash/importCompletionsPackageJsonImportsPattern2.ts diff --git a/tests/cases/fourslash/importCompletionsPackageJsonImportsPattern2.ts b/tests/cases/fourslash/importCompletionsPackageJsonImportsPattern2.ts new file mode 100644 index 0000000000000..2cbea78b63351 --- /dev/null +++ b/tests/cases/fourslash/importCompletionsPackageJsonImportsPattern2.ts @@ -0,0 +1,23 @@ +/// <reference path="fourslash.ts" /> + +// @module: nodenext +// @allowImportingTsExtensions: true + +// @Filename: /package.json +//// { +//// "imports": { +//// "#*": "./src/*" +//// } +//// } + +// @Filename: /src/something.ts +//// export function something(name: string): any; + +// @Filename: /a.ts +//// import {} from "/*1*/"; + +verify.completions({ + marker: ["1"], + exact: ["#something.ts"], + isNewIdentifierLocation: true, +}); From c36d20ab7a2733fcdd2aed498e877cd207a4dd05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= <mateuszburzynski@gmail.com> Date: Tue, 15 Oct 2024 10:20:01 +0200 Subject: [PATCH 15/26] add extra tests with wildcard in the middle --- ...sPaths_pathMapping_nonTrailingWildcard1.ts | 58 +++++++++++++++++++ ...CompletionsPackageJsonExportsWildcard12.ts | 55 ++++++++++++++++++ ...CompletionsPackageJsonImportsWildcard12.ts | 58 +++++++++++++++++++ 3 files changed, 171 insertions(+) create mode 100644 tests/cases/fourslash/completionsPaths_pathMapping_nonTrailingWildcard1.ts create mode 100644 tests/cases/fourslash/pathCompletionsPackageJsonExportsWildcard12.ts create mode 100644 tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard12.ts diff --git a/tests/cases/fourslash/completionsPaths_pathMapping_nonTrailingWildcard1.ts b/tests/cases/fourslash/completionsPaths_pathMapping_nonTrailingWildcard1.ts new file mode 100644 index 0000000000000..65f8c7e59b5d7 --- /dev/null +++ b/tests/cases/fourslash/completionsPaths_pathMapping_nonTrailingWildcard1.ts @@ -0,0 +1,58 @@ +/// <reference path="fourslash.ts" /> + +// @Filename: /src/b.ts +////export const x = 0; + +// @Filename: /src/dir/x.ts +/////export const x = 0; + +// @Filename: /src/a.ts +////import {} from "foo//*0*/"; +////import {} from "foo/dir//*1*/"; // invalid +////import {} from "foo/_/*2*/"; +////import {} from "foo/_dir//*3*/"; + +// @Filename: /tsconfig.json +////{ +//// "compilerOptions": { +//// "baseUrl": ".", +//// "paths": { +//// "foo/_*/suffix": ["src/*.ts"] +//// } +//// } +////} + +verify.completions( + { + marker: "0", + exact: [ + { name: "foo/_a/suffix", kind: "script" }, + { name: "foo/_b/suffix", kind: "script" }, + { name: "foo/_dir/suffix", kind: "directory" }, + ], + isNewIdentifierLocation: true, + }, + { + marker: "1", + exact: [ + { name: "foo/_a/suffix", kind: "script" }, + { name: "foo/_b/suffix", kind: "script" }, + { name: "foo/_dir/suffix", kind: "directory" }, + ], + isNewIdentifierLocation: true, + }, + { + marker: "2", + exact: [ + { name: "a", kind: "script" }, + { name: "b", kind: "script" }, + { name: "dir", kind: "directory" }, + ], + isNewIdentifierLocation: true, + }, + { + marker: "3", + exact: { name: "x", kind: "script" }, + isNewIdentifierLocation: true, + }, +); diff --git a/tests/cases/fourslash/pathCompletionsPackageJsonExportsWildcard12.ts b/tests/cases/fourslash/pathCompletionsPackageJsonExportsWildcard12.ts new file mode 100644 index 0000000000000..9b6dcd8ce31a7 --- /dev/null +++ b/tests/cases/fourslash/pathCompletionsPackageJsonExportsWildcard12.ts @@ -0,0 +1,55 @@ +/// <reference path="fourslash.ts" /> + +// @module: nodenext + +// @Filename: /node_modules/foo/package.json +//// { +//// "name": "foo", +//// "exports": { +//// "./bar/_*/suffix": "./dist/*.js" +//// } +//// } + +// @Filename: /node_modules/foo/dist/b.d.ts +////export const x = 0; + +// @Filename: /node_modules/foo/dist/dir/x.d.ts +/////export const x = 0; + +// @Filename: /a.mts +////import {} from "foo/bar//*0*/"; +////import {} from "foo/bar/dir//*1*/"; // invalid +////import {} from "foo/bar/_/*2*/"; +////import {} from "foo/bar/_dir//*3*/"; + +verify.completions( + { + marker: "0", + exact: [ + { name: "bar/_b/suffix", kind: "script" }, + { name: "bar/_dir/suffix", kind: "directory" }, + ], + isNewIdentifierLocation: true, + }, + { + marker: "1", + exact: [ + { name: "bar/_b/suffix", kind: "script" }, + { name: "bar/_dir/suffix", kind: "directory" }, + ], + isNewIdentifierLocation: true, + }, + { + marker: "2", + exact: [ + { name: "b", kind: "script" }, + { name: "dir", kind: "directory" }, + ], + isNewIdentifierLocation: true, + }, + { + marker: "3", + exact: { name: "x", kind: "script" }, + isNewIdentifierLocation: true, + }, +); diff --git a/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard12.ts b/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard12.ts new file mode 100644 index 0000000000000..d0fdfedbc1fa6 --- /dev/null +++ b/tests/cases/fourslash/pathCompletionsPackageJsonImportsWildcard12.ts @@ -0,0 +1,58 @@ +/// <reference path="fourslash.ts" /> + +// @module: nodenext + +// @Filename: /package.json +//// { +//// "name": "repo", +//// "imports": { +//// "#foo/_*/suffix": "./src/*.ts" +//// } +//// } + +// @Filename: /src/b.ts +////export const x = 0; + +// @Filename: /src/dir/x.ts +/////export const x = 0; + +// @Filename: /src/a.ts +////import {} from "#foo//*0*/"; +////import {} from "#foo/dir//*1*/"; // invalid +////import {} from "#foo/_/*2*/"; +////import {} from "#foo/_dir//*3*/"; + +verify.completions( + { + marker: "0", + exact: [ + { name: "#foo/_a/suffix", kind: "script" }, + { name: "#foo/_b/suffix", kind: "script" }, + { name: "#foo/_dir/suffix", kind: "directory" }, + ], + isNewIdentifierLocation: true, + }, + { + marker: "1", + exact: [ + { name: "#foo/_a/suffix", kind: "script" }, + { name: "#foo/_b/suffix", kind: "script" }, + { name: "#foo/_dir/suffix", kind: "directory" }, + ], + isNewIdentifierLocation: true, + }, + { + marker: "2", + exact: [ + { name: "a", kind: "script" }, + { name: "b", kind: "script" }, + { name: "dir", kind: "directory" }, + ], + isNewIdentifierLocation: true, + }, + { + marker: "3", + exact: { name: "x", kind: "script" }, + isNewIdentifierLocation: true, + }, +); From 0f4a6f8feef09d4f15c8edb7e6743a57fcceb2ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= <mateuszburzynski@gmail.com> Date: Wed, 16 Oct 2024 09:52:57 +0200 Subject: [PATCH 16/26] add pkg scope test --- ...PackageJsonImportsOnlyFromClosestScope1.ts | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 tests/cases/fourslash/pathCompletionsPackageJsonImportsOnlyFromClosestScope1.ts diff --git a/tests/cases/fourslash/pathCompletionsPackageJsonImportsOnlyFromClosestScope1.ts b/tests/cases/fourslash/pathCompletionsPackageJsonImportsOnlyFromClosestScope1.ts new file mode 100644 index 0000000000000..0c5e569b2a000 --- /dev/null +++ b/tests/cases/fourslash/pathCompletionsPackageJsonImportsOnlyFromClosestScope1.ts @@ -0,0 +1,34 @@ +/// <reference path="fourslash.ts" /> + +// @module: nodenext + +// @Filename: /package.json +//// { +//// "imports": { +//// "#thing": "./src/something.ts" +//// } +//// } + +// @Filename: /src/package.json +//// {} + +// @Filename: /src/something.ts +//// export function something(name: string): any; + +// @Filename: /src/a.ts +//// import {} from "/*1*/"; + +// @Filename: /a.ts +//// import {} from "/*2*/"; + +verify.completions({ + marker: ["1"], + exact: [], + isNewIdentifierLocation: true, +}); + +verify.completions({ + marker: ["2"], + exact: ["#thing"], + isNewIdentifierLocation: true, +}); From 6759383f9f26315f2f372413c1ebd511b46e5823 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= <mateuszburzynski@gmail.com> Date: Wed, 16 Oct 2024 11:08:01 +0200 Subject: [PATCH 17/26] remove broken path --- src/services/stringCompletions.ts | 25 ------------------- ...ageJsonImportsIgnoreMatchingNodeModule1.ts | 22 ++++++++++++++++ ...ageJsonImportsIgnoreMatchingNodeModule2.ts | 25 +++++++++++++++++++ 3 files changed, 47 insertions(+), 25 deletions(-) create mode 100644 tests/cases/fourslash/pathCompletionsPackageJsonImportsIgnoreMatchingNodeModule1.ts create mode 100644 tests/cases/fourslash/pathCompletionsPackageJsonImportsIgnoreMatchingNodeModule2.ts diff --git a/src/services/stringCompletions.ts b/src/services/stringCompletions.ts index 6fd73ef80207d..77317be99b8ec 100644 --- a/src/services/stringCompletions.ts +++ b/src/services/stringCompletions.ts @@ -1074,7 +1074,6 @@ function getCompletionEntriesForNonRelativeModules( if (tryFileExists(host, packageFile)) { const packageJson = readJson(packageFile, host); const exports = (packageJson as any).exports; - const imports = (packageJson as any).imports; if (exports) { if (typeof exports !== "object" || exports === null) { // eslint-disable-line no-restricted-syntax return; // null exports or entrypoint only, no sub-modules available @@ -1104,30 +1103,6 @@ function getCompletionEntriesForNonRelativeModules( ); return; } - if (!seenPackageScope && imports) { - if (typeof imports !== "object" || imports === null) { // eslint-disable-line no-restricted-syntax - return; // null imports or entrypoint only, no sub-modules available - } - const keys = getOwnKeys(imports); - const fragmentSubpath = components.join("/") + (components.length && hasTrailingDirectorySeparator(fragment) ? "/" : ""); - const conditions = getConditions(compilerOptions, mode); - addCompletionEntriesFromPathsOrExportsOrImports( - result, - /*isExports*/ false, - /*isImports*/ true, - fragmentSubpath, - packageDirectory, - extensionOptions, - program, - host, - moduleSpecifierResolutionHost, - keys, - key => singleElementArray(getPatternFromFirstMatchingCondition(imports[key], conditions)), - comparePatternKeys, - ); - return; - } - seenPackageScope = true; } return nodeModulesDirectoryLookup(ancestor); }; diff --git a/tests/cases/fourslash/pathCompletionsPackageJsonImportsIgnoreMatchingNodeModule1.ts b/tests/cases/fourslash/pathCompletionsPackageJsonImportsIgnoreMatchingNodeModule1.ts new file mode 100644 index 0000000000000..c38db992d9a1f --- /dev/null +++ b/tests/cases/fourslash/pathCompletionsPackageJsonImportsIgnoreMatchingNodeModule1.ts @@ -0,0 +1,22 @@ +/// <reference path="fourslash.ts" /> + +// @module: nodenext + +// @Filename: /src/node_modules/#internal/package.json +//// { +//// "imports": { +//// "#thing": "./dist/something.js" +//// } +//// } + +// @Filename: /src/node_modules/#internal/dist/something.d.ts +//// export function something(name: string): any; + +// @Filename: /src/a.ts +//// import {} from "#internal//*1*/"; + +verify.completions({ + marker: ["1"], + exact: [], + isNewIdentifierLocation: true, +}); diff --git a/tests/cases/fourslash/pathCompletionsPackageJsonImportsIgnoreMatchingNodeModule2.ts b/tests/cases/fourslash/pathCompletionsPackageJsonImportsIgnoreMatchingNodeModule2.ts new file mode 100644 index 0000000000000..81616077fb03f --- /dev/null +++ b/tests/cases/fourslash/pathCompletionsPackageJsonImportsIgnoreMatchingNodeModule2.ts @@ -0,0 +1,25 @@ +/// <reference path="fourslash.ts" /> + +// @module: nodenext + +// @Filename: /package.json +//// { +//// "imports": { +//// "#internal/*": "./src/*.ts" +//// } +//// } + +// @Filename: /src/something.ts +//// export function something(name: string): any; + +// @Filename: /src/node_modules/#internal/package.json +//// {} + +// @Filename: /src/a.ts +//// import {} from "#internal//*1*/"; + +verify.completions({ + marker: ["1"], + exact: ["a", "something"], + isNewIdentifierLocation: true, +}); From 48b2c7849dde14b3f3eda9a375971337eeea4cec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= <mateuszburzynski@gmail.com> Date: Wed, 16 Oct 2024 11:31:15 +0200 Subject: [PATCH 18/26] limit imports lookup --- src/services/stringCompletions.ts | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/services/stringCompletions.ts b/src/services/stringCompletions.ts index 77317be99b8ec..7689a51cae6b3 100644 --- a/src/services/stringCompletions.ts +++ b/src/services/stringCompletions.ts @@ -72,6 +72,7 @@ import { getPossibleOriginalInputPathWithoutChangingExt, getReplacementSpanForContextToken, getResolvePackageJsonExports, + getResolvePackageJsonImports, getSupportedExtensions, getSupportedExtensionsWithJsonIfResolveJsonModule, getTextOfJsxAttributeName, @@ -1010,13 +1011,15 @@ function getCompletionEntriesForNonRelativeModules( } } if (!foundGlobal) { + const resolvePackageJsonExports = getResolvePackageJsonExports(compilerOptions); + const resolvePackageJsonImports = getResolvePackageJsonImports(compilerOptions); let seenPackageScope = false; let ancestorLookup: (directory: string) => void | undefined = ancestor => { const nodeModules = combinePaths(ancestor, "node_modules"); if (tryDirectoryExists(host, nodeModules)) { getCompletionEntriesForDirectoryFragment(fragment, nodeModules, extensionOptions, program, host, moduleSpecifierResolutionHost, /*moduleSpecifierIsRelative*/ false, /*exclude*/ undefined, result); } - if (!seenPackageScope) { + if (resolvePackageJsonImports && !seenPackageScope) { const packageFile = combinePaths(ancestor, "package.json"); if (seenPackageScope = tryFileExists(host, packageFile)) { const packageJson = readJson(packageFile, host); @@ -1053,22 +1056,25 @@ function getCompletionEntriesForNonRelativeModules( } } }; - if (fragmentDirectory && getResolvePackageJsonExports(compilerOptions)) { - const nodeModulesDirectoryLookup = ancestorLookup; + if (fragmentDirectory && (resolvePackageJsonExports || resolvePackageJsonImports)) { + const nodeModulesDirectoryOrImportsLookup = ancestorLookup; ancestorLookup = ancestor => { const components = getPathComponents(fragment); components.shift(); // shift off empty root let packagePath = components.shift(); if (!packagePath) { - return nodeModulesDirectoryLookup(ancestor); + return nodeModulesDirectoryOrImportsLookup(ancestor); } if (startsWith(packagePath, "@")) { const subName = components.shift(); if (!subName) { - return nodeModulesDirectoryLookup(ancestor); + return nodeModulesDirectoryOrImportsLookup(ancestor); } packagePath = combinePaths(packagePath, subName); } + if (resolvePackageJsonImports && startsWith(packagePath, "#")) { + return nodeModulesDirectoryOrImportsLookup(ancestor); + } const packageDirectory = combinePaths(ancestor, "node_modules", packagePath); const packageFile = combinePaths(packageDirectory, "package.json"); if (tryFileExists(host, packageFile)) { @@ -1104,7 +1110,7 @@ function getCompletionEntriesForNonRelativeModules( return; } } - return nodeModulesDirectoryLookup(ancestor); + return nodeModulesDirectoryOrImportsLookup(ancestor); }; } forEachAncestorDirectoryStoppingAtGlobalCache(host, scriptPath, ancestorLookup); From 56a15630ce69bf04ce6737fc9d5984f29cef6cea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= <mateuszburzynski@gmail.com> Date: Wed, 16 Oct 2024 11:58:02 +0200 Subject: [PATCH 19/26] dedupe imports/exports lookup --- src/compiler/moduleNameResolver.ts | 8 +-- src/services/stringCompletions.ts | 94 +++++++++++------------------- 2 files changed, 37 insertions(+), 65 deletions(-) diff --git a/src/compiler/moduleNameResolver.ts b/src/compiler/moduleNameResolver.ts index 9e9f8ca4f48e8..76b77dec3f1a1 100644 --- a/src/compiler/moduleNameResolver.ts +++ b/src/compiler/moduleNameResolver.ts @@ -2697,24 +2697,24 @@ function loadModuleFromExportsOrImports(extensions: Extensions, state: ModuleRes const loadModuleFromTargetExportOrImport = getLoadModuleFromTargetExportOrImport(extensions, state, cache, redirectedReference, moduleName, scope, isImports); if (!endsWith(moduleName, directorySeparator) && !moduleName.includes("*") && hasProperty(lookupTable, moduleName)) { - const target = (lookupTable as { [idx: string]: unknown; })[moduleName]; + const target = (lookupTable as MapLike<unknown>)[moduleName]; return loadModuleFromTargetExportOrImport(target, /*subpath*/ "", /*pattern*/ false, moduleName); } const expandingKeys = toSorted(filter(getOwnKeys(lookupTable as MapLike<unknown>), k => hasOneAsterisk(k) || endsWith(k, "/")), comparePatternKeys); for (const potentialTarget of expandingKeys) { if (state.features & NodeResolutionFeatures.ExportsPatternTrailers && matchesPatternWithTrailer(potentialTarget, moduleName)) { - const target = (lookupTable as { [idx: string]: unknown; })[potentialTarget]; + const target = (lookupTable as MapLike<unknown>)[potentialTarget]; const starPos = potentialTarget.indexOf("*"); const subpath = moduleName.substring(potentialTarget.substring(0, starPos).length, moduleName.length - (potentialTarget.length - 1 - starPos)); return loadModuleFromTargetExportOrImport(target, subpath, /*pattern*/ true, potentialTarget); } else if (endsWith(potentialTarget, "*") && startsWith(moduleName, potentialTarget.substring(0, potentialTarget.length - 1))) { - const target = (lookupTable as { [idx: string]: unknown; })[potentialTarget]; + const target = (lookupTable as MapLike<unknown>)[potentialTarget]; const subpath = moduleName.substring(potentialTarget.length - 1); return loadModuleFromTargetExportOrImport(target, subpath, /*pattern*/ true, potentialTarget); } else if (startsWith(moduleName, potentialTarget)) { - const target = (lookupTable as { [idx: string]: unknown; })[potentialTarget]; + const target = (lookupTable as MapLike<unknown>)[potentialTarget]; const subpath = moduleName.substring(potentialTarget.length); return loadModuleFromTargetExportOrImport(target, subpath, /*pattern*/ false, potentialTarget); } diff --git a/src/services/stringCompletions.ts b/src/services/stringCompletions.ts index 7689a51cae6b3..23e06ee001ad8 100644 --- a/src/services/stringCompletions.ts +++ b/src/services/stringCompletions.ts @@ -1023,40 +1023,11 @@ function getCompletionEntriesForNonRelativeModules( const packageFile = combinePaths(ancestor, "package.json"); if (seenPackageScope = tryFileExists(host, packageFile)) { const packageJson = readJson(packageFile, host); - const imports = (packageJson as any).imports; - if (imports) { - if (typeof imports !== "object" || imports === null) { // eslint-disable-line no-restricted-syntax - return; // null imports or entrypoint only, no sub-modules available - } - - const keys = getOwnKeys(imports); - const conditions = getConditions(compilerOptions, mode); - addCompletionEntriesFromPathsOrExportsOrImports( - result, - /*isExports*/ false, - /*isImports*/ true, - fragment, - ancestor, - extensionOptions, - program, - host, - moduleSpecifierResolutionHost, - keys, - key => { - const pattern = getPatternFromFirstMatchingCondition(imports[key], conditions); - if (pattern === undefined) { - return undefined; - } - return singleElementArray(endsWith(key, "/") && endsWith(pattern, "/") ? pattern + "*" : pattern); - }, - comparePatternKeys, - ); - return; - } + exportsOrImportsLookup((packageJson as MapLike<unknown>).imports, fragment, ancestor, /*isExports*/ false, /*isImports*/ true); } } }; - if (fragmentDirectory && (resolvePackageJsonExports || resolvePackageJsonImports)) { + if (fragmentDirectory && resolvePackageJsonExports) { const nodeModulesDirectoryOrImportsLookup = ancestorLookup; ancestorLookup = ancestor => { const components = getPathComponents(fragment); @@ -1079,36 +1050,9 @@ function getCompletionEntriesForNonRelativeModules( const packageFile = combinePaths(packageDirectory, "package.json"); if (tryFileExists(host, packageFile)) { const packageJson = readJson(packageFile, host); - const exports = (packageJson as any).exports; - if (exports) { - if (typeof exports !== "object" || exports === null) { // eslint-disable-line no-restricted-syntax - return; // null exports or entrypoint only, no sub-modules available - } - const keys = getOwnKeys(exports); - const fragmentSubpath = components.join("/") + (components.length && hasTrailingDirectorySeparator(fragment) ? "/" : ""); - const conditions = getConditions(compilerOptions, mode); - addCompletionEntriesFromPathsOrExportsOrImports( - result, - /*isExports*/ true, - /*isImports*/ false, - fragmentSubpath, - packageDirectory, - extensionOptions, - program, - host, - moduleSpecifierResolutionHost, - keys, - key => { - const pattern = getPatternFromFirstMatchingCondition(exports[key], conditions); - if (pattern === undefined) { - return undefined; - } - return singleElementArray(endsWith(key, "/") && endsWith(pattern, "/") ? pattern + "*" : pattern); - }, - comparePatternKeys, - ); - return; - } + const fragmentSubpath = components.join("/") + (components.length && hasTrailingDirectorySeparator(fragment) ? "/" : ""); + exportsOrImportsLookup((packageJson as MapLike<unknown>).exports, fragmentSubpath, packageDirectory, /*isExports*/ true, /*isImports*/ false); + return; } return nodeModulesDirectoryOrImportsLookup(ancestor); }; @@ -1118,6 +1062,34 @@ function getCompletionEntriesForNonRelativeModules( } return arrayFrom(result.values()); + + function exportsOrImportsLookup(lookupTable: unknown, fragment: string, baseDirectory: string, isExports: boolean, isImports: boolean) { + if (typeof lookupTable !== "object" || lookupTable === null) { // eslint-disable-line no-restricted-syntax + return; // null lookupTable or entrypoint only + } + const keys = getOwnKeys(lookupTable as MapLike<unknown>); + const conditions = getConditions(compilerOptions, mode); + addCompletionEntriesFromPathsOrExportsOrImports( + result, + isExports, + isImports, + fragment, + baseDirectory, + extensionOptions, + program, + host, + moduleSpecifierResolutionHost, + keys, + key => { + const pattern = getPatternFromFirstMatchingCondition((lookupTable as MapLike<unknown>)[key], conditions); + if (pattern === undefined) { + return undefined; + } + return singleElementArray(endsWith(key, "/") && endsWith(pattern, "/") ? pattern + "*" : pattern); + }, + comparePatternKeys, + ); + } } function getPatternFromFirstMatchingCondition(target: unknown, conditions: readonly string[]): string | undefined { From b84468a81201aa8dc8214d1b1477f843da665f85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= <mateuszburzynski@gmail.com> Date: Thu, 17 Oct 2024 00:28:14 +0200 Subject: [PATCH 20/26] handle declarationDir separately --- src/services/stringCompletions.ts | 33 +- ...onsPackageJsonImportsSrcNoDistWildcard3.js | 1945 ++++++++++++++++- ...onsPackageJsonImportsSrcNoDistWildcard5.js | 144 +- ...onsPackageJsonImportsSrcNoDistWildcard5.ts | 10 +- 4 files changed, 2036 insertions(+), 96 deletions(-) diff --git a/src/services/stringCompletions.ts b/src/services/stringCompletions.ts index 23e06ee001ad8..5a91be0ba7721 100644 --- a/src/services/stringCompletions.ts +++ b/src/services/stringCompletions.ts @@ -1172,16 +1172,21 @@ function getModulesForPathsPattern( const fragmentHasPath = containsSlash(fragment); const fragmentDirectory = fragmentHasPath ? hasTrailingDirectorySeparator(fragment) ? fragment : getDirectoryPath(fragment) : undefined; + const getCommonSourceDirectory = () => moduleSpecifierResolutionHost.getCommonSourceDirectory(); + const ignoreCase = !hostUsesCaseSensitiveFileNames(moduleSpecifierResolutionHost); + const outDir = program.getCompilerOptions().outDir; + const declarationDir = program.getCompilerOptions().declarationDir; + // Try and expand the prefix to include any path from the fragment so that we can limit the readDirectory call const expandedPrefixDirectory = fragmentHasPath ? combinePaths(normalizedPrefixDirectory, normalizedPrefixBase + fragmentDirectory) : normalizedPrefixDirectory; // Need to normalize after combining: If we combinePaths("a", "../b"), we want "b" and not "a/../b". const baseDirectory = normalizePath(combinePaths(packageDirectory, expandedPrefixDirectory)); - const inputBaseDirectory = isImports && getPossibleOriginalInputPathWithoutChangingExt(baseDirectory, !hostUsesCaseSensitiveFileNames(moduleSpecifierResolutionHost), program.getCompilerOptions().outDir, () => moduleSpecifierResolutionHost.getCommonSourceDirectory()); + const possibleInputBaseDirectoryForOutDir = isImports && outDir && getPossibleOriginalInputPathWithoutChangingExt(baseDirectory, ignoreCase, outDir, getCommonSourceDirectory); + const possibleInputBaseDirectoryForDeclarationDir = isImports && declarationDir && getPossibleOriginalInputPathWithoutChangingExt(baseDirectory, ignoreCase, declarationDir, getCommonSourceDirectory); const normalizedSuffix = normalizePath(parsed.suffix); const declarationExtension = normalizedSuffix && getDeclarationEmitExtensionForPath("_" + normalizedSuffix); - const inputExtension = inputBaseDirectory && inputBaseDirectory !== baseDirectory && normalizedSuffix ? getPossibleOriginalInputExtensionForExtension("_" + normalizedSuffix) : undefined; + const inputExtension = (possibleInputBaseDirectoryForOutDir || possibleInputBaseDirectoryForDeclarationDir) && normalizedSuffix ? getPossibleOriginalInputExtensionForExtension("_" + normalizedSuffix) : undefined; const matchingSuffixes = [...(inputExtension ? inputExtension.map(ext => changeExtension(normalizedSuffix, ext)) : []), declarationExtension && changeExtension(normalizedSuffix, declarationExtension), normalizedSuffix].filter(isString); - const completePrefix = fragmentHasPath ? baseDirectory : ensureTrailingDirectorySeparator(baseDirectory) + normalizedPrefixBase; // If we have a suffix, then we read the directory all the way down to avoid returning completions for // directories that don't contain files that would match the suffix. A previous comment here was concerned @@ -1197,11 +1202,13 @@ function getModulesForPathsPattern( const isExportsOrImportsWildcard = (isExports || isImports) && endsWith(pattern, "/*"); - let matches = getMatchesWithPrefix(baseDirectory, completePrefix); + let matches = getMatchesWithPrefix(baseDirectory); - if (inputBaseDirectory && inputBaseDirectory !== baseDirectory) { - const completeInputPrefix = fragmentHasPath ? inputBaseDirectory : ensureTrailingDirectorySeparator(inputBaseDirectory) + normalizedPrefixBase; - matches = concatenate(matches, getMatchesWithPrefix(inputBaseDirectory, completeInputPrefix)); + if (possibleInputBaseDirectoryForOutDir) { + matches = concatenate(matches, getMatchesWithPrefix(possibleInputBaseDirectoryForOutDir)); + } + if (possibleInputBaseDirectoryForDeclarationDir) { + matches = concatenate(matches, getMatchesWithPrefix(possibleInputBaseDirectoryForDeclarationDir)); } // If we had a suffix, we already recursively searched for all possible files that could match @@ -1209,16 +1216,20 @@ function getModulesForPathsPattern( // have something valid to import. if (!normalizedSuffix) { matches = concatenate(matches, getDirectoryMatches(baseDirectory)); - if (inputBaseDirectory && inputBaseDirectory !== baseDirectory) { - matches = concatenate(matches, getDirectoryMatches(inputBaseDirectory)); + if (possibleInputBaseDirectoryForOutDir) { + matches = concatenate(matches, getDirectoryMatches(possibleInputBaseDirectoryForOutDir)); + } + if (possibleInputBaseDirectoryForDeclarationDir) { + matches = concatenate(matches, getDirectoryMatches(possibleInputBaseDirectoryForDeclarationDir)); } } return matches; - function getMatchesWithPrefix(directory: string, prefix: string) { + function getMatchesWithPrefix(directory: string) { + const completePrefix = fragmentHasPath ? directory : ensureTrailingDirectorySeparator(directory) + normalizedPrefixBase; return mapDefined(tryReadDirectory(host, directory, extensionOptions.extensionsToSearch, /*exclude*/ undefined, includeGlobs), match => { - const trimmedWithPattern = trimPrefixAndSuffix(match, prefix); + const trimmedWithPattern = trimPrefixAndSuffix(match, completePrefix); if (trimmedWithPattern) { if (containsSlash(trimmedWithPattern)) { return directoryResult(getPathComponents(removeLeadingDirectorySeparator(trimmedWithPattern))[1]); diff --git a/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard3.js b/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard3.js index 883e1132ad8dc..1a110a97b2ad2 100644 --- a/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard3.js +++ b/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard3.js @@ -537,7 +537,1948 @@ Info seq [hh:mm:ss:mss] response: "isGlobalCompletion": false, "isMemberCompletion": false, "isNewIdentifierLocation": true, - "entries": [], + "entries": [ + { + "name": "#component-blah", + "kind": "script", + "kindModifiers": "", + "sortText": "11" + }, + { + "name": "#component-index", + "kind": "script", + "kindModifiers": "", + "sortText": "11" + }, + { + "name": "#component-subfolder", + "kind": "directory", + "kindModifiers": "", + "sortText": "11" + } + ], + "defaultCommitCharacters": [] + } + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 4, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 18, + "endLine": 1, + "endOffset": 18, + "insertString": "" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 4, + "success": true + } +After Request +Projects:: +/dev/null/inferredProject1* (Inferred) + projectStateVersion: 1 + projectProgramVersion: 1 + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *changed* + projectStateVersion: 2 *changed* + projectProgramVersion: 1 + dirty: true *changed* + +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/nope.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/a.ts (Open) *changed* + version: SVC-2-1 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/components/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/subfolder/one.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 5, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 18, + "endLine": 1, + "endOffset": 18, + "insertString": "#" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 5, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/nope.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/a.ts (Open) *changed* + version: SVC-2-2 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/components/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/subfolder/one.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 6, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 19, + "key": "#" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 6, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 7, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 19, + "endLine": 1, + "endOffset": 19, + "insertString": "c" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 7, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/nope.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/a.ts (Open) *changed* + version: SVC-2-3 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/components/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/subfolder/one.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 8, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 20, + "key": "c" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 8, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 9, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 20, + "endLine": 1, + "endOffset": 20, + "insertString": "o" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 9, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/nope.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/a.ts (Open) *changed* + version: SVC-2-4 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/components/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/subfolder/one.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 10, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 21, + "key": "o" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 10, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 11, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 21, + "endLine": 1, + "endOffset": 21, + "insertString": "m" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 11, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/nope.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/a.ts (Open) *changed* + version: SVC-2-5 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/components/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/subfolder/one.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 12, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 22, + "key": "m" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 12, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 13, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 22, + "endLine": 1, + "endOffset": 22, + "insertString": "p" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 13, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/nope.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/a.ts (Open) *changed* + version: SVC-2-6 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/components/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/subfolder/one.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 14, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 23, + "key": "p" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 14, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 15, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 23, + "endLine": 1, + "endOffset": 23, + "insertString": "o" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 15, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/nope.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/a.ts (Open) *changed* + version: SVC-2-7 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/components/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/subfolder/one.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 16, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 24, + "key": "o" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 16, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 17, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 24, + "endLine": 1, + "endOffset": 24, + "insertString": "n" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 17, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/nope.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/a.ts (Open) *changed* + version: SVC-2-8 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/components/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/subfolder/one.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 18, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 25, + "key": "n" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 18, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 19, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 25, + "endLine": 1, + "endOffset": 25, + "insertString": "e" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 19, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/nope.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/a.ts (Open) *changed* + version: SVC-2-9 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/components/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/subfolder/one.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 20, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 26, + "key": "e" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 20, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 21, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 26, + "endLine": 1, + "endOffset": 26, + "insertString": "n" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 21, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/nope.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/a.ts (Open) *changed* + version: SVC-2-10 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/components/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/subfolder/one.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 22, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 27, + "key": "n" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 22, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 23, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 27, + "endLine": 1, + "endOffset": 27, + "insertString": "t" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 23, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/nope.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/a.ts (Open) *changed* + version: SVC-2-11 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/components/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/subfolder/one.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 24, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 28, + "key": "t" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 24, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 25, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 28, + "endLine": 1, + "endOffset": 28, + "insertString": "-" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 25, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/nope.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/a.ts (Open) *changed* + version: SVC-2-12 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/components/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/subfolder/one.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 26, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 29, + "key": "-" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 26, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 27, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 29, + "endLine": 1, + "endOffset": 29, + "insertString": "s" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 27, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/nope.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/a.ts (Open) *changed* + version: SVC-2-13 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/components/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/subfolder/one.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 28, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 30, + "key": "s" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 28, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 29, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 30, + "endLine": 1, + "endOffset": 30, + "insertString": "u" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 29, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/nope.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/a.ts (Open) *changed* + version: SVC-2-14 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/components/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/subfolder/one.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 30, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 31, + "key": "u" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 30, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 31, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 31, + "endLine": 1, + "endOffset": 31, + "insertString": "b" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 31, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/nope.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/a.ts (Open) *changed* + version: SVC-2-15 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/components/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/subfolder/one.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 32, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 32, + "key": "b" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 32, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 33, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 32, + "endLine": 1, + "endOffset": 32, + "insertString": "f" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 33, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/nope.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/a.ts (Open) *changed* + version: SVC-2-16 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/components/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/subfolder/one.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 34, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 33, + "key": "f" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 34, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 35, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 33, + "endLine": 1, + "endOffset": 33, + "insertString": "o" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 35, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/nope.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/a.ts (Open) *changed* + version: SVC-2-17 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/components/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/subfolder/one.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 36, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 34, + "key": "o" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 36, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 37, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 34, + "endLine": 1, + "endOffset": 34, + "insertString": "l" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 37, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/nope.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/a.ts (Open) *changed* + version: SVC-2-18 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/components/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/subfolder/one.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 38, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 35, + "key": "l" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 38, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 39, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 35, + "endLine": 1, + "endOffset": 35, + "insertString": "d" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 39, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/nope.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/a.ts (Open) *changed* + version: SVC-2-19 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/components/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/subfolder/one.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 40, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 36, + "key": "d" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 40, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 41, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 36, + "endLine": 1, + "endOffset": 36, + "insertString": "e" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 41, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/nope.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/a.ts (Open) *changed* + version: SVC-2-20 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/components/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/subfolder/one.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 42, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 37, + "key": "e" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 42, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 43, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 37, + "endLine": 1, + "endOffset": 37, + "insertString": "r" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 43, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/nope.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/a.ts (Open) *changed* + version: SVC-2-21 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/components/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/subfolder/one.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 44, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 38, + "key": "r" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 44, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 45, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 38, + "endLine": 1, + "endOffset": 38, + "insertString": "/" + }, + "command": "change" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "change", + "request_seq": 45, + "success": true + } +After Request +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/nope.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/a.ts (Open) *changed* + version: SVC-2-22 *changed* + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/components/blah.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/components/subfolder/one.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 46, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 39, + "key": "/" + }, + "command": "formatonkey" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "formatonkey", + "request_seq": 46, + "success": true, + "body": [] + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 47, + "type": "request", + "arguments": { + "preferences": {} + }, + "command": "configure" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "configure", + "request_seq": 47, + "success": true + } +Info seq [hh:mm:ss:mss] request: + { + "seq": 48, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/a.ts", + "line": 1, + "offset": 39 + }, + "command": "completionInfo" + } +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json projectStateVersion: 2 projectProgramVersion: 1 structureChanged: true structureIsReused:: SafeModules Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (5) + /home/src/workspaces/project/nope.ts Text-1 "export const nope = 0;" + /home/src/workspaces/project/src/a.ts SVC-2-22 "import { } from \"#component-subfolder/\";" + /home/src/workspaces/project/src/components/blah.ts Text-1 "export const blah = 0;" + /home/src/workspaces/project/src/components/index.ts Text-1 "export const index = 0;" + /home/src/workspaces/project/src/components/subfolder/one.ts Text-1 "export const one = 0;" + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "completionInfo", + "request_seq": 48, + "success": true, + "performanceData": { + "updateGraphDurationMs": * + }, + "body": { + "isGlobalCompletion": false, + "isMemberCompletion": false, + "isNewIdentifierLocation": true, + "entries": [ + { + "name": "one", + "kind": "script", + "kindModifiers": "", + "sortText": "11" + } + ], "defaultCommitCharacters": [] } - } \ No newline at end of file + } +After Request +watchedFiles:: +/home/src/tslibs/TS/Lib/lib.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts: + {"pollingInterval":500} +/home/src/workspaces/project/jsconfig.json: + {"pollingInterval":2000} +/home/src/workspaces/project/nope.ts: + {"pollingInterval":500} +/home/src/workspaces/project/package.json: + {"pollingInterval":2000} + {"pollingInterval":250} +/home/src/workspaces/project/src/components/blah.ts: + {"pollingInterval":500} +/home/src/workspaces/project/src/components/index.ts: + {"pollingInterval":500} +/home/src/workspaces/project/src/components/package.json: + {"pollingInterval":2000} +/home/src/workspaces/project/src/components/subfolder/one.ts: + {"pollingInterval":500} +/home/src/workspaces/project/src/components/subfolder/package.json: + {"pollingInterval":2000} +/home/src/workspaces/project/src/package.json: + {"pollingInterval":2000} +/home/src/workspaces/project/tsconfig.json: + {"pollingInterval":2000} + +watchedDirectoriesRecursive:: +/home/src/workspaces/node_modules: + {} + {} *new* +/home/src/workspaces/node_modules/@types: + {} + {} +/home/src/workspaces/project: + {} +/home/src/workspaces/project/node_modules: + {} + {} *new* +/home/src/workspaces/project/node_modules/@types: + {} + {} +/home/src/workspaces/project/src: *new* + {} + +Projects:: +/dev/null/inferredProject1* (Inferred) + projectStateVersion: 1 + projectProgramVersion: 1 + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *changed* + projectStateVersion: 2 + projectProgramVersion: 2 *changed* + dirty: false *changed* diff --git a/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard5.js b/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard5.js index c72375f5b5cfd..27f4085657a32 100644 --- a/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard5.js +++ b/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard5.js @@ -37,22 +37,19 @@ lib.decorators.legacy.d.ts-Text } } -//// [/home/src/workspaces/project/src/index.mts] -import { } from ""; - -//// [/home/src/workspaces/project/src/types/blah.mts] +//// [/home/src/workspaces/project/src/blah.mts] export const blah = 0; -//// [/home/src/workspaces/project/src/types/blah.ts] +//// [/home/src/workspaces/project/src/blah.ts] export const blah = 0; -//// [/home/src/workspaces/project/src/types/index.mts] -export const index = 0; +//// [/home/src/workspaces/project/src/index.mts] +import { } from ""; -//// [/home/src/workspaces/project/src/types/index.ts] +//// [/home/src/workspaces/project/src/index.ts] export const index = 0; -//// [/home/src/workspaces/project/src/types/only-in-cjs/index.ts] +//// [/home/src/workspaces/project/src/only-in-cjs/index.ts] export const onlyInCjs = 0; //// [/home/src/workspaces/project/tsconfig.json] @@ -80,12 +77,11 @@ Info seq [hh:mm:ss:mss] Creating ConfiguredProject: /home/src/workspaces/projec Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/tsconfig.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Config file Info seq [hh:mm:ss:mss] Config: /home/src/workspaces/project/tsconfig.json : { "rootNames": [ + "/home/src/workspaces/project/src/blah.mts", + "/home/src/workspaces/project/src/blah.ts", "/home/src/workspaces/project/src/index.mts", - "/home/src/workspaces/project/src/types/blah.mts", - "/home/src/workspaces/project/src/types/blah.ts", - "/home/src/workspaces/project/src/types/index.mts", - "/home/src/workspaces/project/src/types/index.ts", - "/home/src/workspaces/project/src/types/only-in-cjs/index.ts" + "/home/src/workspaces/project/src/index.ts", + "/home/src/workspaces/project/src/only-in-cjs/index.ts" ], "options": { "module": 199, @@ -107,17 +103,15 @@ Info seq [hh:mm:ss:mss] event: } Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project 1 undefined Config: /home/src/workspaces/project/tsconfig.json WatchType: Wild card directory Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project 1 undefined Config: /home/src/workspaces/project/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/blah.mts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/blah.ts 500 undefined WatchType: Closed Script info Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/index.mts 500 undefined WatchType: Closed Script info -Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/types/blah.mts 500 undefined WatchType: Closed Script info -Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/types/blah.ts 500 undefined WatchType: Closed Script info -Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/types/index.mts 500 undefined WatchType: Closed Script info -Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/types/index.ts 500 undefined WatchType: Closed Script info -Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/types/only-in-cjs/index.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/index.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/only-in-cjs/index.ts 500 undefined WatchType: Closed Script info Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json -Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/types/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution -Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/types/only-in-cjs/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/only-in-cjs/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.esnext.full.d.ts 500 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Missing file Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots @@ -125,28 +119,25 @@ Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspa Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json projectStateVersion: 1 projectProgramVersion: 0 structureChanged: true structureIsReused:: Not Elapsed:: *ms Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) -Info seq [hh:mm:ss:mss] Files (6) +Info seq [hh:mm:ss:mss] Files (5) + /home/src/workspaces/project/src/blah.mts Text-1 "export const blah = 0;" + /home/src/workspaces/project/src/blah.ts Text-1 "export const blah = 0;" /home/src/workspaces/project/src/index.mts Text-1 "import { } from \"\";" - /home/src/workspaces/project/src/types/blah.mts Text-1 "export const blah = 0;" - /home/src/workspaces/project/src/types/blah.ts Text-1 "export const blah = 0;" - /home/src/workspaces/project/src/types/index.mts Text-1 "export const index = 0;" - /home/src/workspaces/project/src/types/index.ts Text-1 "export const index = 0;" - /home/src/workspaces/project/src/types/only-in-cjs/index.ts Text-1 "export const onlyInCjs = 0;" + /home/src/workspaces/project/src/index.ts Text-1 "export const index = 0;" + /home/src/workspaces/project/src/only-in-cjs/index.ts Text-1 "export const onlyInCjs = 0;" - src/index.mts - Matched by default include pattern '**/*' - src/types/blah.mts + src/blah.mts Matched by default include pattern '**/*' - src/types/blah.ts + src/blah.ts Matched by default include pattern '**/*' File is CommonJS module because 'package.json' does not have field "type" - src/types/index.mts + src/index.mts Matched by default include pattern '**/*' - src/types/index.ts + src/index.ts Matched by default include pattern '**/*' File is CommonJS module because 'package.json' does not have field "type" - src/types/only-in-cjs/index.ts + src/only-in-cjs/index.ts Matched by default include pattern '**/*' File is CommonJS module because 'package.json' does not have field "type" @@ -267,7 +258,7 @@ Info seq [hh:mm:ss:mss] Files (4) Info seq [hh:mm:ss:mss] ----------------------------------------------- Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/package.json 250 undefined WatchType: package.json file Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) -Info seq [hh:mm:ss:mss] Files (6) +Info seq [hh:mm:ss:mss] Files (5) Info seq [hh:mm:ss:mss] ----------------------------------------------- Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred) @@ -303,23 +294,19 @@ watchedFiles:: /home/src/workspaces/project/package.json: *new* {"pollingInterval":2000} {"pollingInterval":250} -/home/src/workspaces/project/src/index.mts: *new* +/home/src/workspaces/project/src/blah.mts: *new* {"pollingInterval":500} -/home/src/workspaces/project/src/package.json: *new* - {"pollingInterval":2000} -/home/src/workspaces/project/src/types/blah.mts: *new* - {"pollingInterval":500} -/home/src/workspaces/project/src/types/blah.ts: *new* +/home/src/workspaces/project/src/blah.ts: *new* {"pollingInterval":500} -/home/src/workspaces/project/src/types/index.mts: *new* +/home/src/workspaces/project/src/index.mts: *new* {"pollingInterval":500} -/home/src/workspaces/project/src/types/index.ts: *new* +/home/src/workspaces/project/src/index.ts: *new* {"pollingInterval":500} -/home/src/workspaces/project/src/types/only-in-cjs/index.ts: *new* +/home/src/workspaces/project/src/only-in-cjs/index.ts: *new* {"pollingInterval":500} -/home/src/workspaces/project/src/types/only-in-cjs/package.json: *new* +/home/src/workspaces/project/src/only-in-cjs/package.json: *new* {"pollingInterval":2000} -/home/src/workspaces/project/src/types/package.json: *new* +/home/src/workspaces/project/src/package.json: *new* {"pollingInterval":2000} /home/src/workspaces/project/tsconfig.json: *new* {"pollingInterval":2000} @@ -361,27 +348,23 @@ ScriptInfos:: version: Text-1 containingProjects: 1 /dev/null/inferredProject1* -/home/src/workspaces/project/src/index.mts *new* - version: Text-1 - containingProjects: 1 - /home/src/workspaces/project/tsconfig.json -/home/src/workspaces/project/src/types/blah.mts *new* +/home/src/workspaces/project/src/blah.mts *new* version: Text-1 containingProjects: 1 /home/src/workspaces/project/tsconfig.json -/home/src/workspaces/project/src/types/blah.ts *new* +/home/src/workspaces/project/src/blah.ts *new* version: Text-1 containingProjects: 1 /home/src/workspaces/project/tsconfig.json -/home/src/workspaces/project/src/types/index.mts *new* +/home/src/workspaces/project/src/index.mts *new* version: Text-1 containingProjects: 1 /home/src/workspaces/project/tsconfig.json -/home/src/workspaces/project/src/types/index.ts *new* +/home/src/workspaces/project/src/index.ts *new* version: Text-1 containingProjects: 1 /home/src/workspaces/project/tsconfig.json -/home/src/workspaces/project/src/types/only-in-cjs/index.ts *new* +/home/src/workspaces/project/src/only-in-cjs/index.ts *new* version: Text-1 containingProjects: 1 /home/src/workspaces/project/tsconfig.json @@ -402,7 +385,7 @@ Info seq [hh:mm:ss:mss] request: Info seq [hh:mm:ss:mss] FileWatcher:: Close:: WatchInfo: /home/src/workspaces/project/src/index.mts 500 undefined WatchType: Closed Script info Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/src/index.mts ProjectRootPath: undefined:: Result: /home/src/workspaces/project/tsconfig.json Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) -Info seq [hh:mm:ss:mss] Files (6) +Info seq [hh:mm:ss:mss] Files (5) Info seq [hh:mm:ss:mss] ----------------------------------------------- Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred) @@ -437,21 +420,17 @@ watchedFiles:: /home/src/workspaces/project/package.json: {"pollingInterval":2000} {"pollingInterval":250} -/home/src/workspaces/project/src/package.json: - {"pollingInterval":2000} -/home/src/workspaces/project/src/types/blah.mts: +/home/src/workspaces/project/src/blah.mts: {"pollingInterval":500} -/home/src/workspaces/project/src/types/blah.ts: +/home/src/workspaces/project/src/blah.ts: {"pollingInterval":500} -/home/src/workspaces/project/src/types/index.mts: +/home/src/workspaces/project/src/index.ts: {"pollingInterval":500} -/home/src/workspaces/project/src/types/index.ts: +/home/src/workspaces/project/src/only-in-cjs/index.ts: {"pollingInterval":500} -/home/src/workspaces/project/src/types/only-in-cjs/index.ts: - {"pollingInterval":500} -/home/src/workspaces/project/src/types/only-in-cjs/package.json: +/home/src/workspaces/project/src/only-in-cjs/package.json: {"pollingInterval":2000} -/home/src/workspaces/project/src/types/package.json: +/home/src/workspaces/project/src/package.json: {"pollingInterval":2000} /home/src/workspaces/project/tsconfig.json: {"pollingInterval":2000} @@ -497,28 +476,24 @@ ScriptInfos:: version: Text-1 containingProjects: 1 /dev/null/inferredProject1* -/home/src/workspaces/project/src/index.mts (Open) *changed* - open: true *changed* - version: Text-1 - containingProjects: 1 - /home/src/workspaces/project/tsconfig.json *default* -/home/src/workspaces/project/src/types/blah.mts +/home/src/workspaces/project/src/blah.mts version: Text-1 containingProjects: 1 /home/src/workspaces/project/tsconfig.json -/home/src/workspaces/project/src/types/blah.ts +/home/src/workspaces/project/src/blah.ts version: Text-1 containingProjects: 1 /home/src/workspaces/project/tsconfig.json -/home/src/workspaces/project/src/types/index.mts +/home/src/workspaces/project/src/index.mts (Open) *changed* + open: true *changed* version: Text-1 containingProjects: 1 - /home/src/workspaces/project/tsconfig.json -/home/src/workspaces/project/src/types/index.ts + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/src/index.ts version: Text-1 containingProjects: 1 /home/src/workspaces/project/tsconfig.json -/home/src/workspaces/project/src/types/only-in-cjs/index.ts +/home/src/workspaces/project/src/only-in-cjs/index.ts version: Text-1 containingProjects: 1 /home/src/workspaces/project/tsconfig.json @@ -566,7 +541,20 @@ Info seq [hh:mm:ss:mss] response: "isGlobalCompletion": false, "isMemberCompletion": false, "isNewIdentifierLocation": true, - "entries": [], + "entries": [ + { + "name": "#blah", + "kind": "script", + "kindModifiers": "", + "sortText": "11" + }, + { + "name": "#index", + "kind": "script", + "kindModifiers": "", + "sortText": "11" + } + ], "defaultCommitCharacters": [] } } \ No newline at end of file diff --git a/tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard5.ts b/tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard5.ts index 9cb5cbb395309..d63f313c1773e 100644 --- a/tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard5.ts +++ b/tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard5.ts @@ -36,19 +36,19 @@ //// } //// } -// @Filename: /home/src/workspaces/project/src/types/index.mts +// @Filename: /home/src/workspaces/project/src/index.mts //// export const index = 0; -// @Filename: /home/src/workspaces/project/src/types/index.ts +// @Filename: /home/src/workspaces/project/src/index.ts //// export const index = 0; -// @Filename: /home/src/workspaces/project/src/types/blah.mts +// @Filename: /home/src/workspaces/project/src/blah.mts //// export const blah = 0; -// @Filename: /home/src/workspaces/project/src/types/blah.ts +// @Filename: /home/src/workspaces/project/src/blah.ts //// export const blah = 0; -// @Filename: /home/src/workspaces/project/src/types/only-in-cjs/index.ts +// @Filename: /home/src/workspaces/project/src/only-in-cjs/index.ts //// export const onlyInCjs = 0; // @Filename: /home/src/workspaces/project/src/index.mts From a80cdfaf5aee37250ae5cfae3d374f8773bd1dd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= <mateuszburzynski@gmail.com> Date: Thu, 17 Oct 2024 10:30:16 +0200 Subject: [PATCH 21/26] use `ValidationFlags.AllowWildcard` --- src/harness/vfsUtil.ts | 2 +- ...onsPackageJsonImportsSrcNoDistWildcard6.js | 477 ++++++++++++++++++ 2 files changed, 478 insertions(+), 1 deletion(-) create mode 100644 tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard6.js diff --git a/src/harness/vfsUtil.ts b/src/harness/vfsUtil.ts index 1995d79ab6da0..4799927a70a14 100644 --- a/src/harness/vfsUtil.ts +++ b/src/harness/vfsUtil.ts @@ -1148,7 +1148,7 @@ export class FileSystem { for (const key of Object.keys(files)) { const value = normalizeFileSetEntry(files[key]); const path = dirname ? vpath.resolve(dirname, key) : key; - vpath.validate(path, vpath.ValidationFlags.Absolute); + vpath.validate(path, vpath.ValidationFlags.Absolute | vpath.ValidationFlags.AllowWildcard); // eslint-disable-next-line no-restricted-syntax if (value === null || value === undefined || value instanceof Rmdir || value instanceof Unlink) { diff --git a/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard6.js b/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard6.js new file mode 100644 index 0000000000000..fb284dcc7a04b --- /dev/null +++ b/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard6.js @@ -0,0 +1,477 @@ +Info seq [hh:mm:ss:mss] currentDirectory:: /home/src/Vscode/Projects/bin useCaseSensitiveFileNames:: false +Info seq [hh:mm:ss:mss] libs Location:: /home/src/tslibs/TS/Lib +Info seq [hh:mm:ss:mss] globalTypingsCacheLocation:: /home/src/Library/Caches/typescript +Info seq [hh:mm:ss:mss] Provided types map file "/home/src/tslibs/TS/Lib/typesMap.json" doesn't exist +//// [/home/src/tslibs/TS/Lib/lib.d.ts] +lib.d.ts-Text + +//// [/home/src/tslibs/TS/Lib/lib.decorators.d.ts] +lib.decorators.d.ts-Text + +//// [/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts] +lib.decorators.legacy.d.ts-Text + +//// [/home/src/workspaces/project/package.json] +{ + "name": "foo", + "main": "dist/index.js", + "module": "dist/index.mjs", + "types": "dist/index.d.ts", + "imports": { + "#*": "./dist/*?.d.ts" + } +} + +//// [/home/src/workspaces/project/src/blah?.ts] +export const blah = 0; + +//// [/home/src/workspaces/project/src/index.ts] +export const index = 0; + +//// [/home/src/workspaces/project/src/m.mts] +import { } from ""; + +//// [/home/src/workspaces/project/tsconfig.json] +{ + "compilerOptions": { + "module": "nodenext", + "rootDir": "src", + "outDir": "dist" + } +} + + +Info seq [hh:mm:ss:mss] request: + { + "seq": 0, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/tsconfig.json" + }, + "command": "open" + } +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined:: Result: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] Creating ConfiguredProject: /home/src/workspaces/project/tsconfig.json, currentDirectory: /home/src/workspaces/project +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/tsconfig.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Config file +Info seq [hh:mm:ss:mss] Config: /home/src/workspaces/project/tsconfig.json : { + "rootNames": [ + "/home/src/workspaces/project/src/blah?.ts", + "/home/src/workspaces/project/src/index.ts", + "/home/src/workspaces/project/src/m.mts" + ], + "options": { + "module": 199, + "rootDir": "/home/src/workspaces/project/src", + "outDir": "/home/src/workspaces/project/dist", + "configFilePath": "/home/src/workspaces/project/tsconfig.json" + } +} +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "projectLoadingStart", + "body": { + "projectName": "/home/src/workspaces/project/tsconfig.json", + "reason": "Creating possible configured project for /home/src/workspaces/project/tsconfig.json to open" + } + } +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project 1 undefined Config: /home/src/workspaces/project/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project 1 undefined Config: /home/src/workspaces/project/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/blah?.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/index.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/m.mts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.esnext.full.d.ts 500 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Missing file +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json projectStateVersion: 1 projectProgramVersion: 0 structureChanged: true structureIsReused:: Not Elapsed:: *ms +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (3) + /home/src/workspaces/project/src/blah?.ts Text-1 "export const blah = 0;" + /home/src/workspaces/project/src/index.ts Text-1 "export const index = 0;" + /home/src/workspaces/project/src/m.mts Text-1 "import { } from \"\";" + + + src/blah?.ts + Matched by default include pattern '**/*' + File is CommonJS module because 'package.json' does not have field "type" + src/index.ts + Matched by default include pattern '**/*' + File is CommonJS module because 'package.json' does not have field "type" + src/m.mts + Matched by default include pattern '**/*' + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "projectLoadingFinish", + "body": { + "projectName": "/home/src/workspaces/project/tsconfig.json" + } + } +Info seq [hh:mm:ss:mss] event: + { + "seq": 0, + "type": "event", + "event": "configFileDiag", + "body": { + "triggerFile": "/home/src/workspaces/project/tsconfig.json", + "configFile": "/home/src/workspaces/project/tsconfig.json", + "diagnostics": [ + { + "text": "File '/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts' not found.\n The file is in the program because:\n Default library for target 'esnext'", + "code": 6053, + "category": "error" + }, + { + "text": "Cannot find global type 'Array'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Boolean'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Function'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'IArguments'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Number'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'Object'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'RegExp'.", + "code": 2318, + "category": "error" + }, + { + "text": "Cannot find global type 'String'.", + "code": 2318, + "category": "error" + } + ] + } + } +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined:: Result: undefined +Info seq [hh:mm:ss:mss] Creating InferredProject: /dev/null/inferredProject1*, currentDirectory: /home/src/workspaces/project +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/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: /home/src/tslibs/TS/Lib/lib.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules 1 undefined Project: /dev/null/inferredProject1* WatchType: Failed Lookup Locations +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.decorators.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /dev/null/inferredProject1* WatchType: Type roots +Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /dev/null/inferredProject1* projectStateVersion: 1 projectProgramVersion: 0 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) + /home/src/tslibs/TS/Lib/lib.d.ts Text-1 lib.d.ts-Text + /home/src/tslibs/TS/Lib/lib.decorators.d.ts Text-1 lib.decorators.d.ts-Text + /home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts Text-1 lib.decorators.legacy.d.ts-Text + /home/src/workspaces/project/tsconfig.json SVC-1-0 "{\n \"compilerOptions\": {\n \"module\": \"nodenext\",\n \"rootDir\": \"src\",\n \"outDir\": \"dist\"\n }\n}" + + + ../../tslibs/TS/Lib/lib.d.ts + Default library for target 'es5' + ../../tslibs/TS/Lib/lib.decorators.d.ts + Library referenced via 'decorators' from file '../../tslibs/TS/Lib/lib.d.ts' + ../../tslibs/TS/Lib/lib.decorators.legacy.d.ts + Library referenced via 'decorators.legacy' from file '../../tslibs/TS/Lib/lib.d.ts' + tsconfig.json + Root file specified for compilation + +Info seq [hh:mm:ss:mss] ----------------------------------------------- +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/package.json 250 undefined WatchType: package.json file +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (3) + +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: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "open", + "request_seq": 0, + "success": true, + "performanceData": { + "updateGraphDurationMs": * + } + } +After Request +watchedFiles:: +/home/src/tslibs/TS/Lib/lib.d.ts: *new* + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.d.ts: *new* + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts: *new* + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/jsconfig.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/package.json: *new* + {"pollingInterval":2000} + {"pollingInterval":250} +/home/src/workspaces/project/src/blah?.ts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/src/index.ts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/src/m.mts: *new* + {"pollingInterval":500} +/home/src/workspaces/project/src/package.json: *new* + {"pollingInterval":2000} +/home/src/workspaces/project/tsconfig.json: *new* + {"pollingInterval":2000} + +watchedDirectoriesRecursive:: +/home/src/workspaces/node_modules: *new* + {} +/home/src/workspaces/node_modules/@types: *new* + {} + {} +/home/src/workspaces/project: *new* + {} +/home/src/workspaces/project/node_modules: *new* + {} +/home/src/workspaces/project/node_modules/@types: *new* + {} + {} + +Projects:: +/dev/null/inferredProject1* (Inferred) *new* + projectStateVersion: 1 + projectProgramVersion: 1 + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *new* + projectStateVersion: 1 + projectProgramVersion: 1 + noOpenRef: true + +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts *new* + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts *new* + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts *new* + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/src/blah?.ts *new* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.ts *new* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/m.mts *new* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/tsconfig.json (Open) *new* + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 1, + "type": "request", + "arguments": { + "file": "/home/src/workspaces/project/src/m.mts" + }, + "command": "open" + } +Info seq [hh:mm:ss:mss] FileWatcher:: Close:: WatchInfo: /home/src/workspaces/project/src/m.mts 500 undefined WatchType: Closed Script info +Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/src/m.mts ProjectRootPath: undefined:: Result: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) +Info seq [hh:mm:ss:mss] Files (3) + +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: /home/src/workspaces/project/tsconfig.json ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1* +Info seq [hh:mm:ss:mss] FileName: /home/src/workspaces/project/src/m.mts ProjectRootPath: undefined +Info seq [hh:mm:ss:mss] Projects: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "open", + "request_seq": 1, + "success": true + } +After Request +watchedFiles:: +/home/src/tslibs/TS/Lib/lib.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts: + {"pollingInterval":500} +/home/src/tslibs/TS/Lib/lib.esnext.full.d.ts: + {"pollingInterval":500} +/home/src/workspaces/project/jsconfig.json: + {"pollingInterval":2000} +/home/src/workspaces/project/package.json: + {"pollingInterval":2000} + {"pollingInterval":250} +/home/src/workspaces/project/src/blah?.ts: + {"pollingInterval":500} +/home/src/workspaces/project/src/index.ts: + {"pollingInterval":500} +/home/src/workspaces/project/src/package.json: + {"pollingInterval":2000} +/home/src/workspaces/project/tsconfig.json: + {"pollingInterval":2000} + +watchedFiles *deleted*:: +/home/src/workspaces/project/src/m.mts: + {"pollingInterval":500} + +watchedDirectoriesRecursive:: +/home/src/workspaces/node_modules: + {} +/home/src/workspaces/node_modules/@types: + {} + {} +/home/src/workspaces/project: + {} +/home/src/workspaces/project/node_modules: + {} +/home/src/workspaces/project/node_modules/@types: + {} + {} + +Projects:: +/dev/null/inferredProject1* (Inferred) + projectStateVersion: 1 + projectProgramVersion: 1 + autoImportProviderHost: false +/home/src/workspaces/project/tsconfig.json (Configured) *changed* + projectStateVersion: 1 + projectProgramVersion: 1 + noOpenRef: false *changed* + +ScriptInfos:: +/home/src/tslibs/TS/Lib/lib.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts + version: Text-1 + containingProjects: 1 + /dev/null/inferredProject1* +/home/src/workspaces/project/src/blah?.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/index.ts + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json +/home/src/workspaces/project/src/m.mts (Open) *changed* + open: true *changed* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json *default* +/home/src/workspaces/project/tsconfig.json (Open) + version: SVC-1-0 + containingProjects: 1 + /dev/null/inferredProject1* *default* + +Info seq [hh:mm:ss:mss] request: + { + "seq": 2, + "type": "request", + "arguments": { + "preferences": {} + }, + "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": "/home/src/workspaces/project/src/m.mts", + "line": 1, + "offset": 18 + }, + "command": "completionInfo" + } +Info seq [hh:mm:ss:mss] response: + { + "seq": 0, + "type": "response", + "command": "completionInfo", + "request_seq": 3, + "success": true, + "body": { + "isGlobalCompletion": false, + "isMemberCompletion": false, + "isNewIdentifierLocation": true, + "entries": [ + { + "name": "#blah", + "kind": "script", + "kindModifiers": "", + "sortText": "11" + } + ], + "defaultCommitCharacters": [] + } + } \ No newline at end of file From 96209a9f461a6629241c9260bb0ff595df8d1492 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= <mateuszburzynski@gmail.com> Date: Thu, 17 Oct 2024 11:04:47 +0200 Subject: [PATCH 22/26] allowJs accepts a boolean, not String(boolea), doh --- ...onsPackageJsonImportsSrcNoDistWildcard9.js | 60 ++++++++++++------- ...onsPackageJsonImportsSrcNoDistWildcard9.ts | 2 +- 2 files changed, 41 insertions(+), 21 deletions(-) diff --git a/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard9.js b/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard9.js index 0efd23e61b952..a3e4748da892b 100644 --- a/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard9.js +++ b/tests/baselines/reference/tsserver/fourslashServer/pathCompletionsPackageJsonImportsSrcNoDistWildcard9.js @@ -31,7 +31,7 @@ import { } from ""; "module": "nodenext", "rootDir": "src", "outDir": "dist", - "allowJs": "true" + "allowJs": true } } @@ -50,12 +50,14 @@ Info seq [hh:mm:ss:mss] Creating ConfiguredProject: /home/src/workspaces/projec Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/tsconfig.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Config file Info seq [hh:mm:ss:mss] Config: /home/src/workspaces/project/tsconfig.json : { "rootNames": [ + "/home/src/workspaces/project/src/blah.js", "/home/src/workspaces/project/src/index.mts" ], "options": { "module": 199, "rootDir": "/home/src/workspaces/project/src", "outDir": "/home/src/workspaces/project/dist", + "allowJs": true, "configFilePath": "/home/src/workspaces/project/tsconfig.json" } } @@ -71,8 +73,11 @@ Info seq [hh:mm:ss:mss] event: } Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project 1 undefined Config: /home/src/workspaces/project/tsconfig.json WatchType: Wild card directory Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project 1 undefined Config: /home/src/workspaces/project/tsconfig.json WatchType: Wild card directory +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/blah.js 500 undefined WatchType: Closed Script info Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/index.mts 500 undefined WatchType: Closed Script info Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/src/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution +Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/package.json 2000 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: File location affecting resolution Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/tslibs/TS/Lib/lib.esnext.full.d.ts 500 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Missing file Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/project/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots @@ -80,10 +85,14 @@ Info seq [hh:mm:ss:mss] DirectoryWatcher:: Added:: WatchInfo: /home/src/workspa Info seq [hh:mm:ss:mss] Elapsed:: *ms DirectoryWatcher:: Added:: WatchInfo: /home/src/workspaces/node_modules/@types 1 undefined Project: /home/src/workspaces/project/tsconfig.json WatchType: Type roots Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /home/src/workspaces/project/tsconfig.json projectStateVersion: 1 projectProgramVersion: 0 structureChanged: true structureIsReused:: Not Elapsed:: *ms Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) -Info seq [hh:mm:ss:mss] Files (1) +Info seq [hh:mm:ss:mss] Files (2) + /home/src/workspaces/project/src/blah.js Text-1 "export const blah = 0;" /home/src/workspaces/project/src/index.mts Text-1 "import { } from \"\";" + src/blah.js + Matched by default include pattern '**/*' + File is CommonJS module because 'package.json' does not have field "type" src/index.mts Matched by default include pattern '**/*' @@ -150,20 +159,6 @@ Info seq [hh:mm:ss:mss] event: "text": "Cannot find global type 'String'.", "code": 2318, "category": "error" - }, - { - "start": { - "line": 6, - "offset": 16 - }, - "end": { - "line": 6, - "offset": 22 - }, - "text": "Compiler option 'allowJs' requires a value of type boolean.", - "code": 5024, - "category": "error", - "fileName": "/home/src/workspaces/project/tsconfig.json" } ] } @@ -189,7 +184,7 @@ Info seq [hh:mm:ss:mss] Files (4) /home/src/tslibs/TS/Lib/lib.d.ts Text-1 lib.d.ts-Text /home/src/tslibs/TS/Lib/lib.decorators.d.ts Text-1 lib.decorators.d.ts-Text /home/src/tslibs/TS/Lib/lib.decorators.legacy.d.ts Text-1 lib.decorators.legacy.d.ts-Text - /home/src/workspaces/project/tsconfig.json SVC-1-0 "{\n \"compilerOptions\": {\n \"module\": \"nodenext\",\n \"rootDir\": \"src\",\n \"outDir\": \"dist\",\n \"allowJs\": \"true\"\n }\n}" + /home/src/workspaces/project/tsconfig.json SVC-1-0 "{\n \"compilerOptions\": {\n \"module\": \"nodenext\",\n \"rootDir\": \"src\",\n \"outDir\": \"dist\",\n \"allowJs\": true\n }\n}" ../../tslibs/TS/Lib/lib.d.ts @@ -204,7 +199,7 @@ Info seq [hh:mm:ss:mss] Files (4) Info seq [hh:mm:ss:mss] ----------------------------------------------- Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /home/src/workspaces/project/package.json 250 undefined WatchType: package.json file Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) -Info seq [hh:mm:ss:mss] Files (1) +Info seq [hh:mm:ss:mss] Files (2) Info seq [hh:mm:ss:mss] ----------------------------------------------- Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred) @@ -238,9 +233,14 @@ watchedFiles:: /home/src/workspaces/project/jsconfig.json: *new* {"pollingInterval":2000} /home/src/workspaces/project/package.json: *new* + {"pollingInterval":2000} {"pollingInterval":250} +/home/src/workspaces/project/src/blah.js: *new* + {"pollingInterval":500} /home/src/workspaces/project/src/index.mts: *new* {"pollingInterval":500} +/home/src/workspaces/project/src/package.json: *new* + {"pollingInterval":2000} /home/src/workspaces/project/tsconfig.json: *new* {"pollingInterval":2000} @@ -281,6 +281,10 @@ ScriptInfos:: version: Text-1 containingProjects: 1 /dev/null/inferredProject1* +/home/src/workspaces/project/src/blah.js *new* + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json /home/src/workspaces/project/src/index.mts *new* version: Text-1 containingProjects: 1 @@ -302,7 +306,7 @@ Info seq [hh:mm:ss:mss] request: Info seq [hh:mm:ss:mss] FileWatcher:: Close:: WatchInfo: /home/src/workspaces/project/src/index.mts 500 undefined WatchType: Closed Script info Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /home/src/workspaces/project/src/index.mts ProjectRootPath: undefined:: Result: /home/src/workspaces/project/tsconfig.json Info seq [hh:mm:ss:mss] Project '/home/src/workspaces/project/tsconfig.json' (Configured) -Info seq [hh:mm:ss:mss] Files (1) +Info seq [hh:mm:ss:mss] Files (2) Info seq [hh:mm:ss:mss] ----------------------------------------------- Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred) @@ -335,7 +339,12 @@ watchedFiles:: /home/src/workspaces/project/jsconfig.json: {"pollingInterval":2000} /home/src/workspaces/project/package.json: + {"pollingInterval":2000} {"pollingInterval":250} +/home/src/workspaces/project/src/blah.js: + {"pollingInterval":500} +/home/src/workspaces/project/src/package.json: + {"pollingInterval":2000} /home/src/workspaces/project/tsconfig.json: {"pollingInterval":2000} @@ -380,6 +389,10 @@ ScriptInfos:: version: Text-1 containingProjects: 1 /dev/null/inferredProject1* +/home/src/workspaces/project/src/blah.js + version: Text-1 + containingProjects: 1 + /home/src/workspaces/project/tsconfig.json /home/src/workspaces/project/src/index.mts (Open) *changed* open: true *changed* version: Text-1 @@ -429,7 +442,14 @@ Info seq [hh:mm:ss:mss] response: "isGlobalCompletion": false, "isMemberCompletion": false, "isNewIdentifierLocation": true, - "entries": [], + "entries": [ + { + "name": "#blah", + "kind": "script", + "kindModifiers": "", + "sortText": "11" + } + ], "defaultCommitCharacters": [] } } \ No newline at end of file diff --git a/tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard9.ts b/tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard9.ts index 4b6f1aa222da0..fdbe7436f4d96 100644 --- a/tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard9.ts +++ b/tests/cases/fourslash/server/pathCompletionsPackageJsonImportsSrcNoDistWildcard9.ts @@ -6,7 +6,7 @@ //// "module": "nodenext", //// "rootDir": "src", //// "outDir": "dist", -//// "allowJs": "true" +//// "allowJs": true //// } //// } From 17b2aaea1c34494e308a19348921b32c1c942e2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= <mateuszburzynski@gmail.com> Date: Thu, 17 Oct 2024 11:21:12 +0200 Subject: [PATCH 23/26] split `importsLookup` out of `nodeModulesDirectoryOrImportsLookup` for granular reuse --- src/services/stringCompletions.ts | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/services/stringCompletions.ts b/src/services/stringCompletions.ts index 5a91be0ba7721..034719082ebce 100644 --- a/src/services/stringCompletions.ts +++ b/src/services/stringCompletions.ts @@ -1014,19 +1014,24 @@ function getCompletionEntriesForNonRelativeModules( const resolvePackageJsonExports = getResolvePackageJsonExports(compilerOptions); const resolvePackageJsonImports = getResolvePackageJsonImports(compilerOptions); let seenPackageScope = false; - let ancestorLookup: (directory: string) => void | undefined = ancestor => { - const nodeModules = combinePaths(ancestor, "node_modules"); - if (tryDirectoryExists(host, nodeModules)) { - getCompletionEntriesForDirectoryFragment(fragment, nodeModules, extensionOptions, program, host, moduleSpecifierResolutionHost, /*moduleSpecifierIsRelative*/ false, /*exclude*/ undefined, result); - } + + const importsLookup = (directory: string) => { if (resolvePackageJsonImports && !seenPackageScope) { - const packageFile = combinePaths(ancestor, "package.json"); + const packageFile = combinePaths(directory, "package.json"); if (seenPackageScope = tryFileExists(host, packageFile)) { const packageJson = readJson(packageFile, host); - exportsOrImportsLookup((packageJson as MapLike<unknown>).imports, fragment, ancestor, /*isExports*/ false, /*isImports*/ true); + exportsOrImportsLookup((packageJson as MapLike<unknown>).imports, fragment, directory, /*isExports*/ false, /*isImports*/ true); } } }; + + let ancestorLookup: (directory: string) => void | undefined = ancestor => { + const nodeModules = combinePaths(ancestor, "node_modules"); + if (tryDirectoryExists(host, nodeModules)) { + getCompletionEntriesForDirectoryFragment(fragment, nodeModules, extensionOptions, program, host, moduleSpecifierResolutionHost, /*moduleSpecifierIsRelative*/ false, /*exclude*/ undefined, result); + } + importsLookup(ancestor); + }; if (fragmentDirectory && resolvePackageJsonExports) { const nodeModulesDirectoryOrImportsLookup = ancestorLookup; ancestorLookup = ancestor => { @@ -1044,7 +1049,7 @@ function getCompletionEntriesForNonRelativeModules( packagePath = combinePaths(packagePath, subName); } if (resolvePackageJsonImports && startsWith(packagePath, "#")) { - return nodeModulesDirectoryOrImportsLookup(ancestor); + return importsLookup(ancestor); } const packageDirectory = combinePaths(ancestor, "node_modules", packagePath); const packageFile = combinePaths(packageDirectory, "package.json"); From 22e4d49cd42b4f42b2727ee006a9a7bf06ddce30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= <mateuszburzynski@gmail.com> Date: Thu, 17 Oct 2024 12:06:31 +0200 Subject: [PATCH 24/26] Relax check for `inputExtension` --- src/services/stringCompletions.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/services/stringCompletions.ts b/src/services/stringCompletions.ts index 034719082ebce..5687d22e9dc18 100644 --- a/src/services/stringCompletions.ts +++ b/src/services/stringCompletions.ts @@ -1190,8 +1190,12 @@ function getModulesForPathsPattern( const possibleInputBaseDirectoryForDeclarationDir = isImports && declarationDir && getPossibleOriginalInputPathWithoutChangingExt(baseDirectory, ignoreCase, declarationDir, getCommonSourceDirectory); const normalizedSuffix = normalizePath(parsed.suffix); const declarationExtension = normalizedSuffix && getDeclarationEmitExtensionForPath("_" + normalizedSuffix); - const inputExtension = (possibleInputBaseDirectoryForOutDir || possibleInputBaseDirectoryForDeclarationDir) && normalizedSuffix ? getPossibleOriginalInputExtensionForExtension("_" + normalizedSuffix) : undefined; - const matchingSuffixes = [...(inputExtension ? inputExtension.map(ext => changeExtension(normalizedSuffix, ext)) : []), declarationExtension && changeExtension(normalizedSuffix, declarationExtension), normalizedSuffix].filter(isString); + const inputExtension = normalizedSuffix ? getPossibleOriginalInputExtensionForExtension("_" + normalizedSuffix) : undefined; + const matchingSuffixes = [ + ...(inputExtension ? inputExtension.map(ext => changeExtension(normalizedSuffix, ext)) : []), + declarationExtension && changeExtension(normalizedSuffix, declarationExtension), + normalizedSuffix + ].filter(isString); // If we have a suffix, then we read the directory all the way down to avoid returning completions for // directories that don't contain files that would match the suffix. A previous comment here was concerned From a18104e495cf34bd56a63e098c8806067d45b04f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= <mateuszburzynski@gmail.com> Date: Thu, 17 Oct 2024 12:32:54 +0200 Subject: [PATCH 25/26] swap `matchingSuffixes` to change the priority order for `trimPrefixAndSuffix` --- src/services/stringCompletions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/stringCompletions.ts b/src/services/stringCompletions.ts index 5687d22e9dc18..dbe5bc5e2198a 100644 --- a/src/services/stringCompletions.ts +++ b/src/services/stringCompletions.ts @@ -1192,8 +1192,8 @@ function getModulesForPathsPattern( const declarationExtension = normalizedSuffix && getDeclarationEmitExtensionForPath("_" + normalizedSuffix); const inputExtension = normalizedSuffix ? getPossibleOriginalInputExtensionForExtension("_" + normalizedSuffix) : undefined; const matchingSuffixes = [ - ...(inputExtension ? inputExtension.map(ext => changeExtension(normalizedSuffix, ext)) : []), declarationExtension && changeExtension(normalizedSuffix, declarationExtension), + ...(inputExtension ? inputExtension.map(ext => changeExtension(normalizedSuffix, ext)) : []), normalizedSuffix ].filter(isString); From 36bed48e27bbf440e740b3b63a6e0cd8dfb1ffb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= <mateuszburzynski@gmail.com> Date: Thu, 17 Oct 2024 12:50:21 +0200 Subject: [PATCH 26/26] fmt --- src/services/stringCompletions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/stringCompletions.ts b/src/services/stringCompletions.ts index dbe5bc5e2198a..9a9e108c20fc8 100644 --- a/src/services/stringCompletions.ts +++ b/src/services/stringCompletions.ts @@ -1194,7 +1194,7 @@ function getModulesForPathsPattern( const matchingSuffixes = [ declarationExtension && changeExtension(normalizedSuffix, declarationExtension), ...(inputExtension ? inputExtension.map(ext => changeExtension(normalizedSuffix, ext)) : []), - normalizedSuffix + normalizedSuffix, ].filter(isString); // If we have a suffix, then we read the directory all the way down to avoid returning completions for