-
-
Notifications
You must be signed in to change notification settings - Fork 5.7k
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
Support transforming import source
for wasm
#15870
Support transforming import source
for wasm
#15870
Conversation
Build successful! You can test your changes in the REPL here: https://babeljs.io/repl/build/55549/ |
578a350
to
bc5b525
Compare
3a6e81e
to
8409749
Compare
Node.js branching is a common problem here, I would recommend handling it fully if possible? See for example https://github.com/bytecodealliance/jco/blob/main/crates/js-component-bindgen/src/intrinsics.rs#L123. |
@guybedford I was thinking that maybe for Node.js we would want it to be synchronous, so that it can be compiled to CommonJS. Something like a import source x from "./x"; to import { readFileSync } from "fs";
const x = WebAssembly.compile(readFileSync(import.meta.resolve("./x"))); |
Actually, maybe it would be better to keep this plugin outside of the Babel org since it's Wasm/fetch-specific and not just based on ECMAScript 🤔 |
Technically I agree with this, but actually I think it would be nice to have it in the main repo too. (Shared test/release process, and more convenient modification and compatibility) |
I have been thinking about this more, and there are 4 possible transforms for
|
For the ESM case, it can be useful to have a hybrid Node.js / browser output like I provided when eg creating a library on npm that supports both Node.js and browsers. |
bc5b525
to
90e9c58
Compare
90e9c58
to
c5badb5
Compare
8fce167
to
7efa361
Compare
import source
for wasm to fetch
import source
for wasm for browsers&node
import source
for wasm for browsers&nodeimport source
for wasm
@guybedford I added support for Node.js (we now have Web, Node, or Web+Node output). Could you review the generated code? 🙏 |
}, | ||
}; | ||
|
||
function buildHelper(toCommonJS: boolean) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The nodes generated by this function are not in @babel/helpers
because they are highly dynamic (there are 13 possible cases), and they use import.meta
which is module-dependent.
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Given that it's very likely that files would include just one .wasm
import (I have never seen even whole packages with two .wasm
entry points :) ), in the general case this would just make the code slightly bigger.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Btw, I would expect the community to come up with their own bundler-specific plugins, such as the webpack output I showed above. It makes it possible to have much more bundler-integrated support!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Seems good to me! Nice to get proper integration with the env targets. Are the version checks for import.meta.resolve
reliable?
Hopefully :) It's data from MDN. If it's wrong, its a bug similar to how if compat data for any other plugin was wrong.
Now that the plugin is more complete, I'm ok with including it in this repository :) |
c5badb5
to
65a6e85
Compare
4f70bd7
to
923e4b6
Compare
@@ -0,0 +1,2 @@ | |||
import { promises as _promises } from "fs"; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would import fs from "fs";
be better?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe? Given that this is the node-specific output both would be ok.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
1000
...osal-import-wasm-source/test/fixtures/node-cjs/import-expression-dynamic-specifier/output.js
Outdated
Show resolved
Hide resolved
}, | ||
}; | ||
|
||
function buildHelper(toCommonJS: boolean) { |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
...ource/test/fixtures/browser-and-node-esm/import-meta-resolve-fallback-for-browser/output.mjs
Outdated
Show resolved
Hide resolved
@liuxingbaoyu I still replaced |
6b1db92
to
28b8e8e
Compare
import source
for wasmimport source
for wasm
<p>This PR was automatically created by Snyk using the credentials of a real user.</p><br /><h3>Snyk has created this PR to upgrade multiple dependencies.</h3> 👯♂ The following dependencies are linked and will therefore be updated together. </br></br> :information_source: Keep your dependencies up-to-date. This makes it easier to fix existing vulnerabilities and to more quickly identify and fix newly disclosed vulnerabilities when they affect your project. </br></br> Name | Versions | Released on :-------------|:-------------|:------------- **@babel/parser**</br>from 7.22.16 to 7.23.0 | **1 version** ahead of your current version | **22 days ago**</br>on 2023-09-25 **@babel/types**</br>from 7.22.19 to 7.23.0 | **1 version** ahead of your current version | **22 days ago**</br>on 2023-09-25 <details> <summary><b>Release notes</b></summary> <br/> <details> <summary>Package name: <b>@babel/parser</b></summary> <ul> <li> <b>7.23.0</b> - <a href="https://snyk.io/redirect/github/babel/babel/releases/tag/v7.23.0">2023-09-25</a></br><h2>v7.23.0 (2023-09-25)</h2> <p>Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/lorenzoferre/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://snyk.io/redirect/github/lorenzoferre">@ lorenzoferre</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/RajShukla1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://snyk.io/redirect/github/RajShukla1">@ RajShukla1</a> for your first PRs!</p> <h4>🚀 New Feature</h4> <ul> <li><code>babel-plugin-proposal-import-wasm-source</code>, <code>babel-plugin-syntax-import-source</code>, <code>babel-plugin-transform-dynamic-import</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15870" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15870/hovercard">#15870</a> Support transforming <code>import source</code> for wasm (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> </ul> </li> <li><code>babel-helper-module-transforms</code>, <code>babel-helpers</code>, <code>babel-plugin-proposal-import-defer</code>, <code>babel-plugin-syntax-import-defer</code>, <code>babel-plugin-transform-modules-commonjs</code>, <code>babel-runtime-corejs2</code>, <code>babel-runtime-corejs3</code>, <code>babel-runtime</code>, <code>babel-standalone</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15878" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15878/hovercard">#15878</a> Implement <code>import defer</code> proposal transform support (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> </ul> </li> <li><code>babel-generator</code>, <code>babel-parser</code>, <code>babel-types</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15845" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15845/hovercard">#15845</a> Implement <code>import defer</code> parsing support (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15829" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15829/hovercard">#15829</a> Add parsing support for the "source phase imports" proposal (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> </ul> </li> <li><code>babel-generator</code>, <code>babel-helper-module-transforms</code>, <code>babel-parser</code>, <code>babel-plugin-transform-dynamic-import</code>, <code>babel-plugin-transform-modules-amd</code>, <code>babel-plugin-transform-modules-commonjs</code>, <code>babel-plugin-transform-modules-systemjs</code>, <code>babel-traverse</code>, <code>babel-types</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15682" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15682/hovercard">#15682</a> Add <code>createImportExpressions</code> parser option (<a href="https://snyk.io/redirect/github/JLHwung">@ JLHwung</a>)</li> </ul> </li> <li><code>babel-standalone</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15671" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15671/hovercard">#15671</a> Pass through nonce to the transformed script element (<a href="https://snyk.io/redirect/github/JLHwung">@ JLHwung</a>)</li> </ul> </li> <li><code>babel-helper-function-name</code>, <code>babel-helper-member-expression-to-functions</code>, <code>babel-helpers</code>, <code>babel-parser</code>, <code>babel-plugin-proposal-destructuring-private</code>, <code>babel-plugin-proposal-optional-chaining-assign</code>, <code>babel-plugin-syntax-optional-chaining-assign</code>, <code>babel-plugin-transform-destructuring</code>, <code>babel-plugin-transform-optional-chaining</code>, <code>babel-runtime-corejs2</code>, <code>babel-runtime-corejs3</code>, <code>babel-runtime</code>, <code>babel-standalone</code>, <code>babel-types</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15751" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15751/hovercard">#15751</a> Add support for optional chain in assignments (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> </ul> </li> <li><code>babel-helpers</code>, <code>babel-plugin-proposal-decorators</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15895" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15895/hovercard">#15895</a> Implement the "decorator metadata" proposal (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> </ul> </li> <li><code>babel-traverse</code>, <code>babel-types</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15893" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15893/hovercard">#15893</a> Add <code>t.buildUndefinedNode</code> (<a href="https://snyk.io/redirect/github/liuxingbaoyu">@ liuxingbaoyu</a>)</li> </ul> </li> <li><code>babel-preset-typescript</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15913" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15913/hovercard">#15913</a> Add <code>rewriteImportExtensions</code> option to TS preset (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> </ul> </li> <li><code>babel-parser</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15896" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15896/hovercard">#15896</a> Allow TS tuples to have both labeled and unlabeled elements (<a href="https://snyk.io/redirect/github/yukukotani">@ yukukotani</a>)</li> </ul> </li> </ul> <h4>🐛 Bug Fix</h4> <ul> <li><code>babel-plugin-transform-block-scoping</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15962" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15962/hovercard">#15962</a> fix: <code>transform-block-scoping</code> captures the variables of the method in the loop (<a href="https://snyk.io/redirect/github/liuxingbaoyu">@ liuxingbaoyu</a>)</li> </ul> </li> </ul> <h4>💅 Polish</h4> <ul> <li><code>babel-traverse</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15797" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15797/hovercard">#15797</a> Expand evaluation of global built-ins in <code>@ babel/traverse</code> (<a href="https://snyk.io/redirect/github/lorenzoferre">@ lorenzoferre</a>)</li> </ul> </li> <li><code>babel-plugin-proposal-explicit-resource-management</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15985" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15985/hovercard">#15985</a> Improve source maps for blocks with <code>using</code> declarations (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> </ul> </li> </ul> <h4>🔬 Output optimization</h4> <ul> <li><code>babel-core</code>, <code>babel-helper-module-transforms</code>, <code>babel-plugin-transform-async-to-generator</code>, <code>babel-plugin-transform-classes</code>, <code>babel-plugin-transform-dynamic-import</code>, <code>babel-plugin-transform-function-name</code>, <code>babel-plugin-transform-modules-amd</code>, <code>babel-plugin-transform-modules-commonjs</code>, <code>babel-plugin-transform-modules-umd</code>, <code>babel-plugin-transform-parameters</code>, <code>babel-plugin-transform-react-constant-elements</code>, <code>babel-plugin-transform-react-inline-elements</code>, <code>babel-plugin-transform-runtime</code>, <code>babel-plugin-transform-typescript</code>, <code>babel-preset-env</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15984" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15984/hovercard">#15984</a> Inline <code>exports.XXX =</code> update in simple variable declarations (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> </ul> </li> </ul> <h4>Committers: 7</h4> <ul> <li>Babel Bot (<a href="https://snyk.io/redirect/github/babel-bot">@ babel-bot</a>)</li> <li>Huáng Jùnliàng (<a href="https://snyk.io/redirect/github/JLHwung">@ JLHwung</a>)</li> <li>Lorenzo Ferretti (<a href="https://snyk.io/redirect/github/lorenzoferre">@ lorenzoferre</a>)</li> <li>Nicolò Ribaudo (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> <li>Raj Pawan Shukla (<a href="https://snyk.io/redirect/github/RajShukla1">@ RajShukla1</a>)</li> <li>Yuku Kotani (<a href="https://snyk.io/redirect/github/yukukotani">@ yukukotani</a>)</li> <li><a href="https://snyk.io/redirect/github/liuxingbaoyu">@ liuxingbaoyu</a></li> </ul> </li> <li> <b>7.22.16</b> - <a href="https://snyk.io/redirect/github/babel/babel/releases/tag/v7.22.16">2023-09-06</a></br><h2>v7.22.16 (2023-09-06)</h2> <h4>🐛 Bug Fix</h4> <ul> <li><code>babel-parser</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15935" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15935/hovercard">#15935</a> fix: <code>__esModule</code> is missing from published <code>@ babel/parser</code> (<a href="https://snyk.io/redirect/github/liuxingbaoyu">@ liuxingbaoyu</a>)</li> </ul> </li> </ul> <h4>🏠 Internal</h4> <ul> <li><code>babel-traverse</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15936" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15936/hovercard">#15936</a> Skip deprecation warning tests when in a folder named <code>@ babel</code> (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> </ul> </li> </ul> <h4>Committers: 3</h4> <ul> <li>Huáng Jùnliàng (<a href="https://snyk.io/redirect/github/JLHwung">@ JLHwung</a>)</li> <li>Nicolò Ribaudo (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> <li><a href="https://snyk.io/redirect/github/liuxingbaoyu">@ liuxingbaoyu</a></li> </ul> </li> </ul> from <a href="https://snyk.io/redirect/github/babel/babel/releases">@babel/parser GitHub release notes</a> </details> <details> <summary>Package name: <b>@babel/types</b></summary> <ul> <li> <b>7.23.0</b> - <a href="https://snyk.io/redirect/github/babel/babel/releases/tag/v7.23.0">2023-09-25</a></br><h2>v7.23.0 (2023-09-25)</h2> <p>Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/lorenzoferre/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://snyk.io/redirect/github/lorenzoferre">@ lorenzoferre</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/RajShukla1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://snyk.io/redirect/github/RajShukla1">@ RajShukla1</a> for your first PRs!</p> <h4>🚀 New Feature</h4> <ul> <li><code>babel-plugin-proposal-import-wasm-source</code>, <code>babel-plugin-syntax-import-source</code>, <code>babel-plugin-transform-dynamic-import</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15870" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15870/hovercard">#15870</a> Support transforming <code>import source</code> for wasm (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> </ul> </li> <li><code>babel-helper-module-transforms</code>, <code>babel-helpers</code>, <code>babel-plugin-proposal-import-defer</code>, <code>babel-plugin-syntax-import-defer</code>, <code>babel-plugin-transform-modules-commonjs</code>, <code>babel-runtime-corejs2</code>, <code>babel-runtime-corejs3</code>, <code>babel-runtime</code>, <code>babel-standalone</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15878" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15878/hovercard">#15878</a> Implement <code>import defer</code> proposal transform support (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> </ul> </li> <li><code>babel-generator</code>, <code>babel-parser</code>, <code>babel-types</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15845" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15845/hovercard">#15845</a> Implement <code>import defer</code> parsing support (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15829" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15829/hovercard">#15829</a> Add parsing support for the "source phase imports" proposal (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> </ul> </li> <li><code>babel-generator</code>, <code>babel-helper-module-transforms</code>, <code>babel-parser</code>, <code>babel-plugin-transform-dynamic-import</code>, <code>babel-plugin-transform-modules-amd</code>, <code>babel-plugin-transform-modules-commonjs</code>, <code>babel-plugin-transform-modules-systemjs</code>, <code>babel-traverse</code>, <code>babel-types</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15682" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15682/hovercard">#15682</a> Add <code>createImportExpressions</code> parser option (<a href="https://snyk.io/redirect/github/JLHwung">@ JLHwung</a>)</li> </ul> </li> <li><code>babel-standalone</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15671" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15671/hovercard">#15671</a> Pass through nonce to the transformed script element (<a href="https://snyk.io/redirect/github/JLHwung">@ JLHwung</a>)</li> </ul> </li> <li><code>babel-helper-function-name</code>, <code>babel-helper-member-expression-to-functions</code>, <code>babel-helpers</code>, <code>babel-parser</code>, <code>babel-plugin-proposal-destructuring-private</code>, <code>babel-plugin-proposal-optional-chaining-assign</code>, <code>babel-plugin-syntax-optional-chaining-assign</code>, <code>babel-plugin-transform-destructuring</code>, <code>babel-plugin-transform-optional-chaining</code>, <code>babel-runtime-corejs2</code>, <code>babel-runtime-corejs3</code>, <code>babel-runtime</code>, <code>babel-standalone</code>, <code>babel-types</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15751" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15751/hovercard">#15751</a> Add support for optional chain in assignments (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> </ul> </li> <li><code>babel-helpers</code>, <code>babel-plugin-proposal-decorators</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15895" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15895/hovercard">#15895</a> Implement the "decorator metadata" proposal (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> </ul> </li> <li><code>babel-traverse</code>, <code>babel-types</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15893" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15893/hovercard">#15893</a> Add <code>t.buildUndefinedNode</code> (<a href="https://snyk.io/redirect/github/liuxingbaoyu">@ liuxingbaoyu</a>)</li> </ul> </li> <li><code>babel-preset-typescript</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15913" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15913/hovercard">#15913</a> Add <code>rewriteImportExtensions</code> option to TS preset (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> </ul> </li> <li><code>babel-parser</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15896" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15896/hovercard">#15896</a> Allow TS tuples to have both labeled and unlabeled elements (<a href="https://snyk.io/redirect/github/yukukotani">@ yukukotani</a>)</li> </ul> </li> </ul> <h4>🐛 Bug Fix</h4> <ul> <li><code>babel-plugin-transform-block-scoping</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15962" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15962/hovercard">#15962</a> fix: <code>transform-block-scoping</code> captures the variables of the method in the loop (<a href="https://snyk.io/redirect/github/liuxingbaoyu">@ liuxingbaoyu</a>)</li> </ul> </li> </ul> <h4>💅 Polish</h4> <ul> <li><code>babel-traverse</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15797" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15797/hovercard">#15797</a> Expand evaluation of global built-ins in <code>@ babel/traverse</code> (<a href="https://snyk.io/redirect/github/lorenzoferre">@ lorenzoferre</a>)</li> </ul> </li> <li><code>babel-plugin-proposal-explicit-resource-management</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15985" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15985/hovercard">#15985</a> Improve source maps for blocks with <code>using</code> declarations (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> </ul> </li> </ul> <h4>🔬 Output optimization</h4> <ul> <li><code>babel-core</code>, <code>babel-helper-module-transforms</code>, <code>babel-plugin-transform-async-to-generator</code>, <code>babel-plugin-transform-classes</code>, <code>babel-plugin-transform-dynamic-import</code>, <code>babel-plugin-transform-function-name</code>, <code>babel-plugin-transform-modules-amd</code>, <code>babel-plugin-transform-modules-commonjs</code>, <code>babel-plugin-transform-modules-umd</code>, <code>babel-plugin-transform-parameters</code>, <code>babel-plugin-transform-react-constant-elements</code>, <code>babel-plugin-transform-react-inline-elements</code>, <code>babel-plugin-transform-runtime</code>, <code>babel-plugin-transform-typescript</code>, <code>babel-preset-env</code> <ul> <li><a href="https://snyk.io/redirect/github/babel/babel/pull/15984" data-hovercard-type="pull_request" data-hovercard-url="/babel/babel/pull/15984/hovercard">#15984</a> Inline <code>exports.XXX =</code> update in simple variable declarations (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> </ul> </li> </ul> <h4>Committers: 7</h4> <ul> <li>Babel Bot (<a href="https://snyk.io/redirect/github/babel-bot">@ babel-bot</a>)</li> <li>Huáng Jùnliàng (<a href="https://snyk.io/redirect/github/JLHwung">@ JLHwung</a>)</li> <li>Lorenzo Ferretti (<a href="https://snyk.io/redirect/github/lorenzoferre">@ lorenzoferre</a>)</li> <li>Nicolò Ribaudo (<a href="https://snyk.io/redirect/github/nicolo-ribaudo">@ nicolo-ribaudo</a>)</li> <li>Raj Pawan Shukla (<a href="https://snyk.io/redirect/github/RajShukla1">@ RajShukla1</a>)</li> <li>Yuku Kotani (<a href="https://snyk.io/redirect/github/yukukotani">@ yukukotani</a>)</li> <li><a href="https://snyk.io/redirect/github/liuxingbaoyu">@ liuxingbaoyu</a></li> </ul> </li> <li> <b>7.22.19</b> - <a href="https://snyk.io/redirect/github/babel/babel/releases/tag/v7.22.19">2023-09-14</a></br><h2>v7.22.19 (2023-09-14)</h2> <p>Re-published 7.22.18, due to a releasing error.</p> </li> </ul> from <a href="https://snyk.io/redirect/github/babel/babel/releases">@babel/types GitHub release notes</a> </details> </details> <hr/> **Note:** *You are seeing this because you or someone else with access to this repository has authorized Snyk to open upgrade PRs.* For more information: <img src="https://api.segment.io/v1/pixel/track?data=eyJ3cml0ZUtleSI6InJyWmxZcEdHY2RyTHZsb0lYd0dUcVg4WkFRTnNCOUEwIiwiYW5vbnltb3VzSWQiOiJkYTdkYzgwNS0xMDczLTQxMWEtYWM1OC1mYTZjMTcyNTJjNzgiLCJldmVudCI6IlBSIHZpZXdlZCIsInByb3BlcnRpZXMiOnsicHJJZCI6ImRhN2RjODA1LTEwNzMtNDExYS1hYzU4LWZhNmMxNzI1MmM3OCJ9fQ==" width="0" height="0"/> 🧐 [View latest project report](https://app.snyk.io/org/woodpile37/project/e5e31077-489f-44c1-b24d-4af9a1a8d603?utm_source=github&utm_medium=referral&page=upgrade-pr) 🛠 [Adjust upgrade PR settings](https://app.snyk.io/org/woodpile37/project/e5e31077-489f-44c1-b24d-4af9a1a8d603/settings/integration?utm_source=github&utm_medium=referral&page=upgrade-pr) 🔕 [Ignore this dependency or unsubscribe from future upgrade PRs](https://app.snyk.io/org/woodpile37/project/e5e31077-489f-44c1-b24d-4af9a1a8d603/settings/integration?pkg=@babel/parser&pkg=@babel/types&utm_source=github&utm_medium=referral&page=upgrade-pr#auto-dep-upgrades) <!--- (snyk:metadata:{"prId":"da7dc805-1073-411a-ac58-fa6c17252c78","prPublicId":"da7dc805-1073-411a-ac58-fa6c17252c78","dependencies":[{"name":"@babel/parser","from":"7.22.16","to":"7.23.0"},{"name":"@babel/types","from":"7.22.19","to":"7.23.0"}],"packageManager":"npm","type":"auto","projectUrl":"https://app.snyk.io/org/woodpile37/project/e5e31077-489f-44c1-b24d-4af9a1a8d603?utm_source=github&utm_medium=referral&page=upgrade-pr","projectPublicId":"e5e31077-489f-44c1-b24d-4af9a1a8d603","env":"prod","prType":"upgrade","vulns":[],"issuesToFix":[],"upgrade":[],"upgradeInfo":{"versionsDiff":1,"publishedDate":"2023-09-25T08:10:31.822Z"},"templateVariants":[],"hasFixes":false,"isMajorUpgrade":false,"isBreakingChange":false,"priorityScoreList":[]}) --->
This proposal is stage 3, and (at least for Wasm modules) we can compile it to
WebAssembly.compileStreaming
+fetch
in the browser andWebAssembly.compile
+readFile
in Node.js. Wasm are the only modules for which there is currently a source import, so this is a safe limitation.While working on this PR I learned that Node.js does not support fetching from
file://
URLs, and that increases the complexity of the transform, based on the targets:await WebAssembly.compileStreaming(fetch(...))
new WebAssembly.Module(fs.readFileSync(...))
(which does not introduce TLA in the module, so it's more compliant to the spec)await WebAssembly.compile(await fs.promises.readFile(...))
In addition to that, we should use
import.meta.resolve
but we need a fallback for old environments where it's not supported.This plugin does not work everywhere, for example when bundling to webpack you need to transform
import source x from "x"
toimport raw from "!!raw-loader!./x.wasm";; const x = WebAssembly.compile(raw);
. However, other cases can be handled by community plugins.cc @lucacasonato @guybedford