Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(esbuild): remove all node: imports from glob script to keep support for Jest v26 #5784

Merged
merged 2 commits into from
May 22, 2024

Conversation

christian-bromann
Copy link
Member

@christian-bromann christian-bromann commented May 21, 2024

What is the current behavior?

With Stencil v4.18.1 Stencil broke support for Jest v26 due to the fact that transient dependencies for glob in sys/node/glob.js started to use imports with node: prefixes.

GitHub Issue Number: #5766

What is the new behavior?

I enhanced the sys node build script to remove these prefixes. This won't have any impact on the script and allows us to keep support for Jest v26.

Documentation

Does this introduce a breaking change?

  • Yes
  • No

Testing

  • Check out https://github.com/deleonio/kolibri-library/tree/reproduction-5766
  • run pnpm install and verify that test pass with npm test
  • now update Stencil to latest, rerun test and verify that test fail due to no such file or directory, open 'node:path'
  • now install @stencil/core@4.18.2-dev.1716246842.b6713e1 (dev build of this branch) and rerun tests, verify that tests pass

Other information

I was under the assumption that we are testing running tests in Jest v26, I will take a look if we could have caught this before release.

@christian-bromann christian-bromann requested a review from a team as a code owner May 21, 2024 00:09
@christian-bromann christian-bromann changed the title fix(esbuild): remove all node: imports from glob script fix(esbuild): remove all node: imports from glob script to keep support for Jest v26 May 21, 2024
Copy link
Contributor

github-actions bot commented May 21, 2024

PR built and packed!

Download the tarball here: https://github.com/ionic-team/stencil/actions/runs/9176899440/artifacts/1523378555

If your browser saves files to ~/Downloads you can install it like so:

unzip -d ~/Downloads ~/Downloads/stencil-core-4.18.2-dev.1716303841.67dc768.tgz.zip && npm install ~/Downloads/stencil-core-4.18.2-dev.1716303841.67dc768.tgz

Copy link
Contributor

--strictNullChecks error report

Typechecking with --strictNullChecks resulted in 1120 errors on this branch.

That's the same number of errors on main, so at least we're not creating new ones!

reports and statistics

Our most error-prone files
Path Error Count
src/dev-server/index.ts 37
src/dev-server/server-process.ts 32
src/compiler/prerender/prerender-main.ts 22
src/runtime/client-hydrate.ts 20
src/runtime/vdom/vdom-render.ts 20
src/screenshot/connector-base.ts 19
src/testing/puppeteer/puppeteer-element.ts 19
src/dev-server/request-handler.ts 15
src/compiler/prerender/prerender-optimize.ts 14
src/compiler/sys/stencil-sys.ts 14
src/runtime/connected-callback.ts 14
src/sys/node/node-sys.ts 14
src/compiler/prerender/prerender-queue.ts 13
src/compiler/sys/in-memory-fs.ts 13
src/runtime/set-value.ts 13
src/compiler/output-targets/output-www.ts 12
src/compiler/transformers/test/parse-vdom.spec.ts 12
src/compiler/transformers/transform-utils.ts 12
src/mock-doc/test/attribute.spec.ts 12
src/compiler/build/compiler-ctx.ts 11
Our most common errors
Typescript Error Code Count
TS2322 358
TS2345 344
TS18048 201
TS18047 77
TS2722 37
TS2532 24
TS2531 19
TS2454 14
TS2790 11
TS2352 9
TS2769 8
TS2416 7
TS2538 4
TS2493 3
TS18046 2
TS2684 1
TS2430 1

Unused exports report

There are 15 unused exports on this PR. That's the same number of errors on main, so at least we're not creating new ones!

Unused exports
File Line Identifier
src/runtime/bootstrap-lazy.ts 21 setNonce
src/screenshot/screenshot-fs.ts 18 readScreenshotData
src/testing/testing-utils.ts 198 withSilentWarn
src/utils/index.ts 145 CUSTOM
src/utils/index.ts 245 NODE_TYPES
src/utils/index.ts 269 normalize
src/utils/index.ts 7 escapeRegExpSpecialCharacters
src/compiler/app-core/app-data.ts 25 BUILD
src/compiler/app-core/app-data.ts 116 Env
src/compiler/app-core/app-data.ts 118 NAMESPACE
src/compiler/fs-watch/fs-watch-rebuild.ts 123 updateCacheFromRebuild
src/compiler/types/validate-primary-package-output-target.ts 61 satisfies
src/compiler/types/validate-primary-package-output-target.ts 61 Record
src/testing/puppeteer/puppeteer-declarations.ts 485 WaitForEventOptions
src/compiler/sys/fetch/write-fetch-success.ts 7 writeFetchSuccessSync

Comment on lines +104 to +106
const globOutputPath = join(opts.output.sysNodeDir, 'glob.js');
const glob = fs.readFileSync(globOutputPath, 'utf8');
fs.writeFileSync(globOutputPath, glob.replace(/require\("node:/g, 'require("'));
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it better to just revert glob and block that upgrade until we drop Jest 26 support (in v5)?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unfortunately that wouldn't work as glob itself is not the culprit here, it's glob dependencies, e.g. path-scurry, that bring in these node imports. If we would use pnpm we could use the overwrite or in Yarn we could use resolutions but there is nothing in NPM to do this. Hence tweaking the build artifact seemed like the easiest approach.

@christian-bromann christian-bromann added this pull request to the merge queue May 22, 2024
Merged via the queue into main with commit 5f4fcfa May 22, 2024
93 checks passed
@christian-bromann christian-bromann deleted the cb/no-node-colon-in-glob-imports branch May 22, 2024 16:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants