From 2e13a3845b373e73525491fd750f51fa29ff367b Mon Sep 17 00:00:00 2001 From: 43081j <43081j@users.noreply.github.com> Date: Wed, 19 Oct 2022 22:37:08 +0100 Subject: [PATCH] test (labs/ssr): add tests for package exports resolution --- package-lock.json | 2 +- packages/labs/ssr/src/lib/module-loader.ts | 1 + .../ssr/src/test/lib/module-loader_test.ts | 34 +++++++++++++++++++ .../module-loader/lit-import-from-root.js | 2 ++ .../test-files/module-loader/lit-import.js | 2 ++ 5 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 packages/labs/ssr/src/test/test-files/module-loader/lit-import-from-root.js create mode 100644 packages/labs/ssr/src/test/test-files/module-loader/lit-import.js diff --git a/package-lock.json b/package-lock.json index 7e3dbad373..0895787ed7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26663,7 +26663,7 @@ "@webcomponents/template-shadowroot": "^0.1.0", "command-line-args": "^5.1.1", "deepmerge": "^4.2.2", - "enhanced-resolve": "*", + "enhanced-resolve": "^5.10.0", "koa": "^2.7.0", "koa-cors": "^0.0.16", "koa-node-resolve": "^1.0.0-pre.5", diff --git a/packages/labs/ssr/src/lib/module-loader.ts b/packages/labs/ssr/src/lib/module-loader.ts index 8b939d5e57..26b5c24df7 100644 --- a/packages/labs/ssr/src/lib/module-loader.ts +++ b/packages/labs/ssr/src/lib/module-loader.ts @@ -278,6 +278,7 @@ export const resolveSpecifier = async ( modules: ['node_modules'], extensions: ['.js'], mainFields: ['module', 'jsnext:main', 'main'], + conditionNames: ['node'], }); return pathToFileURL(modulePath); } diff --git a/packages/labs/ssr/src/test/lib/module-loader_test.ts b/packages/labs/ssr/src/test/lib/module-loader_test.ts index d0aad0ab69..b010be7bd7 100644 --- a/packages/labs/ssr/src/test/lib/module-loader_test.ts +++ b/packages/labs/ssr/src/test/lib/module-loader_test.ts @@ -53,4 +53,38 @@ test('loads a module with a built-in import', async () => { assert.ok(module.namespace.join); }); +test('resolves an exact exported path', async () => { + const loader = new ModuleLoader({global: window}); + const result = await loader.importModule('./lit-import.js', testIndex); + const {module, path: modulePath} = result; + assert.is(module.namespace.litIsServer, true); + assert.ok(loader.cache.has(modulePath)); + const isServerPath = path.resolve( + path.dirname(testIndex), + '../../../../../lit-html/node/is-server.js' + ); + assert.ok(loader.cache.has(isServerPath)); +}); + +test('resolves a root exported path (.)', async () => { + const loader = new ModuleLoader({global: window}); + const result = await loader.importModule( + './lit-import-from-root.js', + testIndex + ); + const {module, path: modulePath} = result; + assert.is(module.namespace.litIsServer, true); + assert.ok(loader.cache.has(modulePath)); + const litPath = path.resolve( + path.dirname(testIndex), + '../../../../../lit/index.js' + ); + const isServerPath = path.resolve( + path.dirname(testIndex), + '../../../../../lit-html/node/is-server.js' + ); + assert.ok(loader.cache.has(litPath)); + assert.ok(loader.cache.has(isServerPath)); +}); + test.run(); diff --git a/packages/labs/ssr/src/test/test-files/module-loader/lit-import-from-root.js b/packages/labs/ssr/src/test/test-files/module-loader/lit-import-from-root.js new file mode 100644 index 0000000000..0a1c784a5d --- /dev/null +++ b/packages/labs/ssr/src/test/test-files/module-loader/lit-import-from-root.js @@ -0,0 +1,2 @@ +import {isServer} from 'lit'; +export const litIsServer = isServer; diff --git a/packages/labs/ssr/src/test/test-files/module-loader/lit-import.js b/packages/labs/ssr/src/test/test-files/module-loader/lit-import.js new file mode 100644 index 0000000000..9054221c54 --- /dev/null +++ b/packages/labs/ssr/src/test/test-files/module-loader/lit-import.js @@ -0,0 +1,2 @@ +import {isServer} from 'lit-html/is-server.js'; +export const litIsServer = isServer;