From 3a6e52ca1dc80082c8d9d79448d7dc3ae754d6ee Mon Sep 17 00:00:00 2001 From: Thijs Louisse Date: Tue, 5 Nov 2024 20:56:33 +0100 Subject: [PATCH] fix: expand script that corrects types after build --- .changeset/happy-toes-yell.md | 5 +++++ package-lock.json | 2 +- .../core/src/ScopedElementsMixin.js | 6 ++--- .../ui/scripts/types-correct-after-build.js | 22 ++++++++++++++----- 4 files changed, 26 insertions(+), 9 deletions(-) create mode 100644 .changeset/happy-toes-yell.md diff --git a/.changeset/happy-toes-yell.md b/.changeset/happy-toes-yell.md new file mode 100644 index 0000000000..94451a2cb5 --- /dev/null +++ b/.changeset/happy-toes-yell.md @@ -0,0 +1,5 @@ +--- +'@lion/ui': patch +--- + +expand script that corrects types after build diff --git a/package-lock.json b/package-lock.json index 596463e3f1..d2dc292225 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28596,7 +28596,7 @@ }, "packages/ui": { "name": "@lion/ui", - "version": "0.8.1", + "version": "0.8.3", "license": "MIT", "dependencies": { "@bundled-es-modules/message-format": "^6.2.4", diff --git a/packages/ui/components/core/src/ScopedElementsMixin.js b/packages/ui/components/core/src/ScopedElementsMixin.js index a41f6e9f61..34deefb0a0 100644 --- a/packages/ui/components/core/src/ScopedElementsMixin.js +++ b/packages/ui/components/core/src/ScopedElementsMixin.js @@ -21,9 +21,9 @@ export function supportsScopedRegistry() { } /** - * This file is combination of '@open-wc/scoped-elements@v3/lit-element.js' and '@open-wc/scoped-elements@v3/html-element.js'. - * Then on top of those, some code from '@open-wc/scoped-elements@v2' is brought to to make polyfill not mandatory. - * This can be a great help for ssr scenarios, allowing elements to be consumed without needing knowledge about internall + * This file is a combination of '@open-wc/scoped-elements@v3/lit-element.js' and '@open-wc/scoped-elements@v3/html-element.js'. + * To make the polyfill an opt-in, some code from '@open-wc/scoped-elements@v2' is added as well. + * This can be a great help for ssr scenarios, allowing elements to be consumed without needing knowledge about internal * consumption. * (N.B. at this point in time, this is limited to the scenario where there's one version of lion on the page). * diff --git a/packages/ui/scripts/types-correct-after-build.js b/packages/ui/scripts/types-correct-after-build.js index 7c13852292..c351664d7e 100644 --- a/packages/ui/scripts/types-correct-after-build.js +++ b/packages/ui/scripts/types-correct-after-build.js @@ -11,23 +11,35 @@ */ import fs from 'fs'; +// @ts-expect-error // eslint-disable-next-line import/no-extraneous-dependencies -import { globby } from 'globby'; +import { optimisedGlob as globby } from 'providence-analytics/utils.js'; import { fileURLToPath } from 'url'; const packageRoot = fileURLToPath(new URL('../', import.meta.url)); -async function alignLitImports() { +async function alignLitImportsAndFixLocalPaths() { const fileNames = await globby([`${packageRoot}/dist-types`]); for (const fileName of fileNames) { // eslint-disable-next-line no-await-in-loop const contents = await fs.promises.readFile(fileName, 'utf-8'); - const replaced = contents.replace( + const replaced1 = contents.replace( /(LitElement.*\}) from "lit-element\/lit-element\.js/g, '$1 from "lit', ); - fs.promises.writeFile(fileName, replaced); + + // Now "unresolve" all paths that reference '../**/node_modules/**' + // These are outside of the bundled repo and therefore break in consuming context + // Also, they are resolved to their local context via the export map, this should be 'unwinded' + + const re = /"(..\/)*?node_modules\/@open-wc\/scoped-elements\/types\.js"/g; + const replaced2 = replaced1.replace(re, '"@open-wc/scoped-elements/lit-element.js"'); + + // For now, we did a quick and dirty fix with specific knowledge of this repo, + // because we expect https://github.com/microsoft/TypeScript/issues/51622 to be solved in the future. + + fs.promises.writeFile(fileName, replaced2); } } -alignLitImports(); +alignLitImportsAndFixLocalPaths();