From 10be2c315797d565e62f8f50f852dcec1cce1748 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Thu, 4 Jan 2024 10:41:33 -0600 Subject: [PATCH 1/5] Process JS files found searching node_modules when they have a realpath outside node_modules --- src/compiler/program.ts | 3 +- .../compiler/allowJsCrossMonorepoPackage.ts | 38 +++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 tests/cases/compiler/allowJsCrossMonorepoPackage.ts diff --git a/src/compiler/program.ts b/src/compiler/program.ts index 067b66dca5714..fb8bf2322db92 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -326,6 +326,7 @@ import { WriteFileCallback, WriteFileCallbackData, writeFileEnsuringDirectories, + pathContainsNodeModules, } from "./_namespaces/ts"; import * as performance from "./_namespaces/ts.performance"; @@ -4039,7 +4040,7 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg const isFromNodeModulesSearch = resolution.isExternalLibraryImport; const isJsFile = !resolutionExtensionIsTSOrJson(resolution.extension); - const isJsFileFromNodeModules = isFromNodeModulesSearch && isJsFile; + const isJsFileFromNodeModules = isFromNodeModulesSearch && isJsFile && (!resolution.originalPath || pathContainsNodeModules(resolution.resolvedFileName)); const resolvedFileName = resolution.resolvedFileName; if (isFromNodeModulesSearch) { diff --git a/tests/cases/compiler/allowJsCrossMonorepoPackage.ts b/tests/cases/compiler/allowJsCrossMonorepoPackage.ts new file mode 100644 index 0000000000000..76e38b877aa99 --- /dev/null +++ b/tests/cases/compiler/allowJsCrossMonorepoPackage.ts @@ -0,0 +1,38 @@ +// @noTypesAndSymbols: true + +// @Filename: /packages/shared/package.json +{ + "name": "shared", + "version": "1.0.0", + "type": "module", + "exports": "./index.js" +} + +// @Filename: /packages/shared/index.js +export const x = 0; + +// @Filename: /packages/main/package.json +{ + "name": "main", + "version": "1.0.0", + "type": "module", + "dependencies": { + "shared": "workspace:*" + } +} + +// @Filename: /packages/main/tsconfig.json +{ + "compilerOptions": { + "noEmit": true, + "checkJs": true, + "strict": true, + "module": "esnext", + "moduleResolution": "bundler" + } +} + +// @link: /packages/shared -> /packages/main/node_modules/shared + +// @Filename: /packages/main/index.ts +import { x } from "shared"; From b1b69c82646fb38a0e5499d2119ee5d198999e80 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Thu, 4 Jan 2024 10:52:12 -0600 Subject: [PATCH 2/5] Fix import sort --- src/compiler/program.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/compiler/program.ts b/src/compiler/program.ts index fb8bf2322db92..6dd6cb6de43fe 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -254,6 +254,7 @@ import { parseJsonSourceFileConfigFileContent, parseNodeFactory, Path, + pathContainsNodeModules, pathIsAbsolute, pathIsRelative, Program, @@ -326,7 +327,6 @@ import { WriteFileCallback, WriteFileCallbackData, writeFileEnsuringDirectories, - pathContainsNodeModules, } from "./_namespaces/ts"; import * as performance from "./_namespaces/ts.performance"; From 87fc1591508e0bd2d3ac63751fb1918e0e5a0941 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Mon, 8 Jan 2024 16:19:10 -0800 Subject: [PATCH 3/5] Ensure imports in JS file are processed --- .../allowJsCrossMonorepoPackage.trace.json | 142 ++++++++++++++++++ .../compiler/allowJsCrossMonorepoPackage.ts | 9 +- 2 files changed, 149 insertions(+), 2 deletions(-) create mode 100644 tests/baselines/reference/allowJsCrossMonorepoPackage.trace.json diff --git a/tests/baselines/reference/allowJsCrossMonorepoPackage.trace.json b/tests/baselines/reference/allowJsCrossMonorepoPackage.trace.json new file mode 100644 index 0000000000000..03df4c2b436b5 --- /dev/null +++ b/tests/baselines/reference/allowJsCrossMonorepoPackage.trace.json @@ -0,0 +1,142 @@ +[ + "======== Resolving module 'shared' from '/packages/main/index.ts'. ========", + "Explicitly specified module resolution kind: 'Bundler'.", + "Resolving in CJS mode with conditions 'import', 'types'.", + "Found 'package.json' at '/packages/main/package.json'.", + "Loading module 'shared' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration, JSON.", + "Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.", + "Found 'package.json' at '/packages/main/node_modules/shared/package.json'.", + "Using 'exports' subpath '.' with target './index.js'.", + "File name '/packages/main/node_modules/shared/index.js' has a '.js' extension - stripping it.", + "File '/packages/main/node_modules/shared/index.ts' does not exist.", + "File '/packages/main/node_modules/shared/index.tsx' does not exist.", + "File '/packages/main/node_modules/shared/index.d.ts' does not exist.", + "Directory '/packages/main/node_modules/@types' does not exist, skipping all lookups in it.", + "Directory '/packages/node_modules' does not exist, skipping all lookups in it.", + "Directory '/node_modules' does not exist, skipping all lookups in it.", + "Searching all ancestor node_modules directories for fallback extensions: JavaScript, JSON.", + "File '/packages/main/node_modules/shared/package.json' exists according to earlier cached lookups.", + "Using 'exports' subpath '.' with target './index.js'.", + "File name '/packages/main/node_modules/shared/index.js' has a '.js' extension - stripping it.", + "File '/packages/main/node_modules/shared/index.js' exists - use it as a name resolution result.", + "Resolution of non-relative name failed; trying with modern Node resolution features disabled to see if npm library needs configuration update.", + "File '/packages/main/package.json' exists according to earlier cached lookups.", + "Loading module 'shared' from 'node_modules' folder, target file types: TypeScript, Declaration.", + "Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.", + "File '/packages/main/node_modules/shared/package.json' exists according to earlier cached lookups.", + "File '/packages/main/node_modules/shared.ts' does not exist.", + "File '/packages/main/node_modules/shared.tsx' does not exist.", + "File '/packages/main/node_modules/shared.d.ts' does not exist.", + "'package.json' does not have a 'typesVersions' field.", + "'package.json' does not have a 'typings' field.", + "'package.json' does not have a 'types' field.", + "'package.json' does not have a 'main' field.", + "File '/packages/main/node_modules/shared/index.ts' does not exist.", + "File '/packages/main/node_modules/shared/index.tsx' does not exist.", + "File '/packages/main/node_modules/shared/index.d.ts' does not exist.", + "Directory '/packages/main/node_modules/@types' does not exist, skipping all lookups in it.", + "Directory '/packages/node_modules' does not exist, skipping all lookups in it.", + "Directory '/node_modules' does not exist, skipping all lookups in it.", + "Resolving real path for '/packages/main/node_modules/shared/index.js', result '/packages/shared/index.js'.", + "======== Module name 'shared' was successfully resolved to '/packages/shared/index.js' with Package ID 'shared/index.js@1.0.0'. ========", + "======== Resolving module './utils.js' from '/packages/shared/index.js'. ========", + "Explicitly specified module resolution kind: 'Bundler'.", + "Resolving in CJS mode with conditions 'import', 'types'.", + "Loading module as file / folder, candidate module location '/packages/shared/utils.js', target file types: TypeScript, JavaScript, Declaration, JSON.", + "File name '/packages/shared/utils.js' has a '.js' extension - stripping it.", + "File '/packages/shared/utils.ts' does not exist.", + "File '/packages/shared/utils.tsx' does not exist.", + "File '/packages/shared/utils.d.ts' does not exist.", + "File '/packages/shared/utils.js' exists - use it as a name resolution result.", + "======== Module name './utils.js' was successfully resolved to '/packages/shared/utils.js'. ========", + "======== Resolving module '@typescript/lib-es5' from '/packages/main/__lib_node_modules_lookup_lib.es5.d.ts__.ts'. ========", + "Explicitly specified module resolution kind: 'Node10'.", + "Loading module '@typescript/lib-es5' from 'node_modules' folder, target file types: TypeScript, Declaration.", + "Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.", + "Directory '/packages/main/node_modules/@types' does not exist, skipping all lookups in it.", + "Scoped package detected, looking in 'typescript__lib-es5'", + "Directory '/packages/node_modules' does not exist, skipping all lookups in it.", + "Scoped package detected, looking in 'typescript__lib-es5'", + "Directory '/node_modules' does not exist, skipping all lookups in it.", + "Scoped package detected, looking in 'typescript__lib-es5'", + "Loading module '@typescript/lib-es5' from 'node_modules' folder, target file types: JavaScript.", + "Searching all ancestor node_modules directories for fallback extensions: JavaScript.", + "Directory '/packages/node_modules' does not exist, skipping all lookups in it.", + "Directory '/node_modules' does not exist, skipping all lookups in it.", + "======== Module name '@typescript/lib-es5' was not resolved. ========", + "======== Resolving module '@typescript/lib-decorators' from '/packages/main/__lib_node_modules_lookup_lib.decorators.d.ts__.ts'. ========", + "Explicitly specified module resolution kind: 'Node10'.", + "Loading module '@typescript/lib-decorators' from 'node_modules' folder, target file types: TypeScript, Declaration.", + "Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.", + "Directory '/packages/main/node_modules/@types' does not exist, skipping all lookups in it.", + "Scoped package detected, looking in 'typescript__lib-decorators'", + "Directory '/packages/node_modules' does not exist, skipping all lookups in it.", + "Scoped package detected, looking in 'typescript__lib-decorators'", + "Directory '/node_modules' does not exist, skipping all lookups in it.", + "Scoped package detected, looking in 'typescript__lib-decorators'", + "Loading module '@typescript/lib-decorators' from 'node_modules' folder, target file types: JavaScript.", + "Searching all ancestor node_modules directories for fallback extensions: JavaScript.", + "Directory '/packages/node_modules' does not exist, skipping all lookups in it.", + "Directory '/node_modules' does not exist, skipping all lookups in it.", + "======== Module name '@typescript/lib-decorators' was not resolved. ========", + "======== Resolving module '@typescript/lib-decorators/legacy' from '/packages/main/__lib_node_modules_lookup_lib.decorators.legacy.d.ts__.ts'. ========", + "Explicitly specified module resolution kind: 'Node10'.", + "Loading module '@typescript/lib-decorators/legacy' from 'node_modules' folder, target file types: TypeScript, Declaration.", + "Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.", + "Directory '/packages/main/node_modules/@types' does not exist, skipping all lookups in it.", + "Scoped package detected, looking in 'typescript__lib-decorators/legacy'", + "Directory '/packages/node_modules' does not exist, skipping all lookups in it.", + "Scoped package detected, looking in 'typescript__lib-decorators/legacy'", + "Directory '/node_modules' does not exist, skipping all lookups in it.", + "Scoped package detected, looking in 'typescript__lib-decorators/legacy'", + "Loading module '@typescript/lib-decorators/legacy' from 'node_modules' folder, target file types: JavaScript.", + "Searching all ancestor node_modules directories for fallback extensions: JavaScript.", + "Directory '/packages/node_modules' does not exist, skipping all lookups in it.", + "Directory '/node_modules' does not exist, skipping all lookups in it.", + "======== Module name '@typescript/lib-decorators/legacy' was not resolved. ========", + "======== Resolving module '@typescript/lib-dom' from '/packages/main/__lib_node_modules_lookup_lib.dom.d.ts__.ts'. ========", + "Explicitly specified module resolution kind: 'Node10'.", + "Loading module '@typescript/lib-dom' from 'node_modules' folder, target file types: TypeScript, Declaration.", + "Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.", + "Directory '/packages/main/node_modules/@types' does not exist, skipping all lookups in it.", + "Scoped package detected, looking in 'typescript__lib-dom'", + "Directory '/packages/node_modules' does not exist, skipping all lookups in it.", + "Scoped package detected, looking in 'typescript__lib-dom'", + "Directory '/node_modules' does not exist, skipping all lookups in it.", + "Scoped package detected, looking in 'typescript__lib-dom'", + "Loading module '@typescript/lib-dom' from 'node_modules' folder, target file types: JavaScript.", + "Searching all ancestor node_modules directories for fallback extensions: JavaScript.", + "Directory '/packages/node_modules' does not exist, skipping all lookups in it.", + "Directory '/node_modules' does not exist, skipping all lookups in it.", + "======== Module name '@typescript/lib-dom' was not resolved. ========", + "======== Resolving module '@typescript/lib-webworker/importscripts' from '/packages/main/__lib_node_modules_lookup_lib.webworker.importscripts.d.ts__.ts'. ========", + "Explicitly specified module resolution kind: 'Node10'.", + "Loading module '@typescript/lib-webworker/importscripts' from 'node_modules' folder, target file types: TypeScript, Declaration.", + "Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.", + "Directory '/packages/main/node_modules/@types' does not exist, skipping all lookups in it.", + "Scoped package detected, looking in 'typescript__lib-webworker/importscripts'", + "Directory '/packages/node_modules' does not exist, skipping all lookups in it.", + "Scoped package detected, looking in 'typescript__lib-webworker/importscripts'", + "Directory '/node_modules' does not exist, skipping all lookups in it.", + "Scoped package detected, looking in 'typescript__lib-webworker/importscripts'", + "Loading module '@typescript/lib-webworker/importscripts' from 'node_modules' folder, target file types: JavaScript.", + "Searching all ancestor node_modules directories for fallback extensions: JavaScript.", + "Directory '/packages/node_modules' does not exist, skipping all lookups in it.", + "Directory '/node_modules' does not exist, skipping all lookups in it.", + "======== Module name '@typescript/lib-webworker/importscripts' was not resolved. ========", + "======== Resolving module '@typescript/lib-scripthost' from '/packages/main/__lib_node_modules_lookup_lib.scripthost.d.ts__.ts'. ========", + "Explicitly specified module resolution kind: 'Node10'.", + "Loading module '@typescript/lib-scripthost' from 'node_modules' folder, target file types: TypeScript, Declaration.", + "Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.", + "Directory '/packages/main/node_modules/@types' does not exist, skipping all lookups in it.", + "Scoped package detected, looking in 'typescript__lib-scripthost'", + "Directory '/packages/node_modules' does not exist, skipping all lookups in it.", + "Scoped package detected, looking in 'typescript__lib-scripthost'", + "Directory '/node_modules' does not exist, skipping all lookups in it.", + "Scoped package detected, looking in 'typescript__lib-scripthost'", + "Loading module '@typescript/lib-scripthost' from 'node_modules' folder, target file types: JavaScript.", + "Searching all ancestor node_modules directories for fallback extensions: JavaScript.", + "Directory '/packages/node_modules' does not exist, skipping all lookups in it.", + "Directory '/node_modules' does not exist, skipping all lookups in it.", + "======== Module name '@typescript/lib-scripthost' was not resolved. ========" +] \ No newline at end of file diff --git a/tests/cases/compiler/allowJsCrossMonorepoPackage.ts b/tests/cases/compiler/allowJsCrossMonorepoPackage.ts index 76e38b877aa99..461496a214038 100644 --- a/tests/cases/compiler/allowJsCrossMonorepoPackage.ts +++ b/tests/cases/compiler/allowJsCrossMonorepoPackage.ts @@ -8,8 +8,12 @@ "exports": "./index.js" } +// @Filename: /packages/shared/utils.js +export function f() {} + // @Filename: /packages/shared/index.js -export const x = 0; +import { f } from "./utils.js"; +export const x = f(); // @Filename: /packages/main/package.json { @@ -28,7 +32,8 @@ export const x = 0; "checkJs": true, "strict": true, "module": "esnext", - "moduleResolution": "bundler" + "moduleResolution": "bundler", + "traceResolution": true, } } From ce1af6c84b7c3c74409b03f8450817babd61e4d9 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Mon, 8 Jan 2024 16:22:55 -0800 Subject: [PATCH 4/5] Also resolve from node_modules again and show types --- .../allowJsCrossMonorepoPackage.trace.json | 45 +++++++++++++------ .../compiler/allowJsCrossMonorepoPackage.ts | 9 ++-- 2 files changed, 36 insertions(+), 18 deletions(-) diff --git a/tests/baselines/reference/allowJsCrossMonorepoPackage.trace.json b/tests/baselines/reference/allowJsCrossMonorepoPackage.trace.json index 03df4c2b436b5..17b86da7c4b24 100644 --- a/tests/baselines/reference/allowJsCrossMonorepoPackage.trace.json +++ b/tests/baselines/reference/allowJsCrossMonorepoPackage.trace.json @@ -13,7 +13,10 @@ "File '/packages/main/node_modules/shared/index.d.ts' does not exist.", "Directory '/packages/main/node_modules/@types' does not exist, skipping all lookups in it.", "Directory '/packages/node_modules' does not exist, skipping all lookups in it.", - "Directory '/node_modules' does not exist, skipping all lookups in it.", + "File '/node_modules/shared.ts' does not exist.", + "File '/node_modules/shared.tsx' does not exist.", + "File '/node_modules/shared.d.ts' does not exist.", + "Directory '/node_modules/@types' does not exist, skipping all lookups in it.", "Searching all ancestor node_modules directories for fallback extensions: JavaScript, JSON.", "File '/packages/main/node_modules/shared/package.json' exists according to earlier cached lookups.", "Using 'exports' subpath '.' with target './index.js'.", @@ -36,7 +39,10 @@ "File '/packages/main/node_modules/shared/index.d.ts' does not exist.", "Directory '/packages/main/node_modules/@types' does not exist, skipping all lookups in it.", "Directory '/packages/node_modules' does not exist, skipping all lookups in it.", - "Directory '/node_modules' does not exist, skipping all lookups in it.", + "File '/node_modules/shared.ts' does not exist.", + "File '/node_modules/shared.tsx' does not exist.", + "File '/node_modules/shared.d.ts' does not exist.", + "Directory '/node_modules/@types' does not exist, skipping all lookups in it.", "Resolving real path for '/packages/main/node_modules/shared/index.js', result '/packages/shared/index.js'.", "======== Module name 'shared' was successfully resolved to '/packages/shared/index.js' with Package ID 'shared/index.js@1.0.0'. ========", "======== Resolving module './utils.js' from '/packages/shared/index.js'. ========", @@ -49,6 +55,23 @@ "File '/packages/shared/utils.d.ts' does not exist.", "File '/packages/shared/utils.js' exists - use it as a name resolution result.", "======== Module name './utils.js' was successfully resolved to '/packages/shared/utils.js'. ========", + "======== Resolving module 'pkg' from '/packages/shared/utils.js'. ========", + "Explicitly specified module resolution kind: 'Bundler'.", + "Resolving in CJS mode with conditions 'import', 'types'.", + "Found 'package.json' at '/packages/shared/package.json'.", + "Loading module 'pkg' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration, JSON.", + "Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.", + "Directory '/packages/shared/node_modules' does not exist, skipping all lookups in it.", + "Directory '/packages/node_modules' does not exist, skipping all lookups in it.", + "File '/node_modules/pkg/package.json' does not exist.", + "File '/node_modules/pkg.ts' does not exist.", + "File '/node_modules/pkg.tsx' does not exist.", + "File '/node_modules/pkg.d.ts' does not exist.", + "File '/node_modules/pkg/index.ts' does not exist.", + "File '/node_modules/pkg/index.tsx' does not exist.", + "File '/node_modules/pkg/index.d.ts' exists - use it as a name resolution result.", + "Resolving real path for '/node_modules/pkg/index.d.ts', result '/node_modules/pkg/index.d.ts'.", + "======== Module name 'pkg' was successfully resolved to '/node_modules/pkg/index.d.ts'. ========", "======== Resolving module '@typescript/lib-es5' from '/packages/main/__lib_node_modules_lookup_lib.es5.d.ts__.ts'. ========", "Explicitly specified module resolution kind: 'Node10'.", "Loading module '@typescript/lib-es5' from 'node_modules' folder, target file types: TypeScript, Declaration.", @@ -57,12 +80,11 @@ "Scoped package detected, looking in 'typescript__lib-es5'", "Directory '/packages/node_modules' does not exist, skipping all lookups in it.", "Scoped package detected, looking in 'typescript__lib-es5'", - "Directory '/node_modules' does not exist, skipping all lookups in it.", + "Directory '/node_modules/@types' does not exist, skipping all lookups in it.", "Scoped package detected, looking in 'typescript__lib-es5'", "Loading module '@typescript/lib-es5' from 'node_modules' folder, target file types: JavaScript.", "Searching all ancestor node_modules directories for fallback extensions: JavaScript.", "Directory '/packages/node_modules' does not exist, skipping all lookups in it.", - "Directory '/node_modules' does not exist, skipping all lookups in it.", "======== Module name '@typescript/lib-es5' was not resolved. ========", "======== Resolving module '@typescript/lib-decorators' from '/packages/main/__lib_node_modules_lookup_lib.decorators.d.ts__.ts'. ========", "Explicitly specified module resolution kind: 'Node10'.", @@ -72,12 +94,11 @@ "Scoped package detected, looking in 'typescript__lib-decorators'", "Directory '/packages/node_modules' does not exist, skipping all lookups in it.", "Scoped package detected, looking in 'typescript__lib-decorators'", - "Directory '/node_modules' does not exist, skipping all lookups in it.", + "Directory '/node_modules/@types' does not exist, skipping all lookups in it.", "Scoped package detected, looking in 'typescript__lib-decorators'", "Loading module '@typescript/lib-decorators' from 'node_modules' folder, target file types: JavaScript.", "Searching all ancestor node_modules directories for fallback extensions: JavaScript.", "Directory '/packages/node_modules' does not exist, skipping all lookups in it.", - "Directory '/node_modules' does not exist, skipping all lookups in it.", "======== Module name '@typescript/lib-decorators' was not resolved. ========", "======== Resolving module '@typescript/lib-decorators/legacy' from '/packages/main/__lib_node_modules_lookup_lib.decorators.legacy.d.ts__.ts'. ========", "Explicitly specified module resolution kind: 'Node10'.", @@ -87,12 +108,11 @@ "Scoped package detected, looking in 'typescript__lib-decorators/legacy'", "Directory '/packages/node_modules' does not exist, skipping all lookups in it.", "Scoped package detected, looking in 'typescript__lib-decorators/legacy'", - "Directory '/node_modules' does not exist, skipping all lookups in it.", + "Directory '/node_modules/@types' does not exist, skipping all lookups in it.", "Scoped package detected, looking in 'typescript__lib-decorators/legacy'", "Loading module '@typescript/lib-decorators/legacy' from 'node_modules' folder, target file types: JavaScript.", "Searching all ancestor node_modules directories for fallback extensions: JavaScript.", "Directory '/packages/node_modules' does not exist, skipping all lookups in it.", - "Directory '/node_modules' does not exist, skipping all lookups in it.", "======== Module name '@typescript/lib-decorators/legacy' was not resolved. ========", "======== Resolving module '@typescript/lib-dom' from '/packages/main/__lib_node_modules_lookup_lib.dom.d.ts__.ts'. ========", "Explicitly specified module resolution kind: 'Node10'.", @@ -102,12 +122,11 @@ "Scoped package detected, looking in 'typescript__lib-dom'", "Directory '/packages/node_modules' does not exist, skipping all lookups in it.", "Scoped package detected, looking in 'typescript__lib-dom'", - "Directory '/node_modules' does not exist, skipping all lookups in it.", + "Directory '/node_modules/@types' does not exist, skipping all lookups in it.", "Scoped package detected, looking in 'typescript__lib-dom'", "Loading module '@typescript/lib-dom' from 'node_modules' folder, target file types: JavaScript.", "Searching all ancestor node_modules directories for fallback extensions: JavaScript.", "Directory '/packages/node_modules' does not exist, skipping all lookups in it.", - "Directory '/node_modules' does not exist, skipping all lookups in it.", "======== Module name '@typescript/lib-dom' was not resolved. ========", "======== Resolving module '@typescript/lib-webworker/importscripts' from '/packages/main/__lib_node_modules_lookup_lib.webworker.importscripts.d.ts__.ts'. ========", "Explicitly specified module resolution kind: 'Node10'.", @@ -117,12 +136,11 @@ "Scoped package detected, looking in 'typescript__lib-webworker/importscripts'", "Directory '/packages/node_modules' does not exist, skipping all lookups in it.", "Scoped package detected, looking in 'typescript__lib-webworker/importscripts'", - "Directory '/node_modules' does not exist, skipping all lookups in it.", + "Directory '/node_modules/@types' does not exist, skipping all lookups in it.", "Scoped package detected, looking in 'typescript__lib-webworker/importscripts'", "Loading module '@typescript/lib-webworker/importscripts' from 'node_modules' folder, target file types: JavaScript.", "Searching all ancestor node_modules directories for fallback extensions: JavaScript.", "Directory '/packages/node_modules' does not exist, skipping all lookups in it.", - "Directory '/node_modules' does not exist, skipping all lookups in it.", "======== Module name '@typescript/lib-webworker/importscripts' was not resolved. ========", "======== Resolving module '@typescript/lib-scripthost' from '/packages/main/__lib_node_modules_lookup_lib.scripthost.d.ts__.ts'. ========", "Explicitly specified module resolution kind: 'Node10'.", @@ -132,11 +150,10 @@ "Scoped package detected, looking in 'typescript__lib-scripthost'", "Directory '/packages/node_modules' does not exist, skipping all lookups in it.", "Scoped package detected, looking in 'typescript__lib-scripthost'", - "Directory '/node_modules' does not exist, skipping all lookups in it.", + "Directory '/node_modules/@types' does not exist, skipping all lookups in it.", "Scoped package detected, looking in 'typescript__lib-scripthost'", "Loading module '@typescript/lib-scripthost' from 'node_modules' folder, target file types: JavaScript.", "Searching all ancestor node_modules directories for fallback extensions: JavaScript.", "Directory '/packages/node_modules' does not exist, skipping all lookups in it.", - "Directory '/node_modules' does not exist, skipping all lookups in it.", "======== Module name '@typescript/lib-scripthost' was not resolved. ========" ] \ No newline at end of file diff --git a/tests/cases/compiler/allowJsCrossMonorepoPackage.ts b/tests/cases/compiler/allowJsCrossMonorepoPackage.ts index 461496a214038..2af955d311deb 100644 --- a/tests/cases/compiler/allowJsCrossMonorepoPackage.ts +++ b/tests/cases/compiler/allowJsCrossMonorepoPackage.ts @@ -1,4 +1,5 @@ -// @noTypesAndSymbols: true +// @Filename: /node_modules/pkg/index.d.ts +export declare function pkg(): "pkg"; // @Filename: /packages/shared/package.json { @@ -9,11 +10,11 @@ } // @Filename: /packages/shared/utils.js -export function f() {} +export { pkg } from "pkg"; // @Filename: /packages/shared/index.js -import { f } from "./utils.js"; -export const x = f(); +import { pkg } from "./utils.js"; +export const x = pkg(); // @Filename: /packages/main/package.json { From ba797043ea8efdca976bc5089c63d4bf71e654d9 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Mon, 8 Jan 2024 16:23:56 -0800 Subject: [PATCH 5/5] Add baselines --- .../allowJsCrossMonorepoPackage.symbols | 22 ++++++++++++++++++ .../allowJsCrossMonorepoPackage.types | 23 +++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 tests/baselines/reference/allowJsCrossMonorepoPackage.symbols create mode 100644 tests/baselines/reference/allowJsCrossMonorepoPackage.types diff --git a/tests/baselines/reference/allowJsCrossMonorepoPackage.symbols b/tests/baselines/reference/allowJsCrossMonorepoPackage.symbols new file mode 100644 index 0000000000000..dbdc37a135b01 --- /dev/null +++ b/tests/baselines/reference/allowJsCrossMonorepoPackage.symbols @@ -0,0 +1,22 @@ +//// [tests/cases/compiler/allowJsCrossMonorepoPackage.ts] //// + +=== /packages/main/index.ts === +import { x } from "shared"; +>x : Symbol(x, Decl(index.ts, 0, 8)) + +=== /node_modules/pkg/index.d.ts === +export declare function pkg(): "pkg"; +>pkg : Symbol(pkg, Decl(index.d.ts, 0, 0)) + +=== /packages/shared/utils.js === +export { pkg } from "pkg"; +>pkg : Symbol(pkg, Decl(utils.js, 0, 8)) + +=== /packages/shared/index.js === +import { pkg } from "./utils.js"; +>pkg : Symbol(pkg, Decl(index.js, 0, 8)) + +export const x = pkg(); +>x : Symbol(x, Decl(index.js, 1, 12)) +>pkg : Symbol(pkg, Decl(index.js, 0, 8)) + diff --git a/tests/baselines/reference/allowJsCrossMonorepoPackage.types b/tests/baselines/reference/allowJsCrossMonorepoPackage.types new file mode 100644 index 0000000000000..8a0ecbf103606 --- /dev/null +++ b/tests/baselines/reference/allowJsCrossMonorepoPackage.types @@ -0,0 +1,23 @@ +//// [tests/cases/compiler/allowJsCrossMonorepoPackage.ts] //// + +=== /packages/main/index.ts === +import { x } from "shared"; +>x : "pkg" + +=== /node_modules/pkg/index.d.ts === +export declare function pkg(): "pkg"; +>pkg : () => "pkg" + +=== /packages/shared/utils.js === +export { pkg } from "pkg"; +>pkg : () => "pkg" + +=== /packages/shared/index.js === +import { pkg } from "./utils.js"; +>pkg : () => "pkg" + +export const x = pkg(); +>x : "pkg" +>pkg() : "pkg" +>pkg : () => "pkg" +