SystemJS top-level await support (#12163)
Co-authored-by: Huáng Jùnliàng <jlhwung@gmail.com>
This commit is contained in:
parent
d0d1fdb921
commit
9c7d9c0fe5
@ -11,9 +11,7 @@ const buildTemplate = template(`
|
||||
BEFORE_BODY;
|
||||
return {
|
||||
setters: SETTERS,
|
||||
execute: function () {
|
||||
BODY;
|
||||
}
|
||||
execute: EXECUTE,
|
||||
};
|
||||
});
|
||||
`);
|
||||
@ -601,6 +599,18 @@ export default declare((api, options) => {
|
||||
path.remove();
|
||||
}
|
||||
|
||||
let hasTLA = false;
|
||||
path.traverse({
|
||||
AwaitExpression(path) {
|
||||
hasTLA = true;
|
||||
path.stop();
|
||||
},
|
||||
Function(path) {
|
||||
path.skip();
|
||||
},
|
||||
noScope: true,
|
||||
});
|
||||
|
||||
path.node.body = [
|
||||
buildTemplate({
|
||||
SYSTEM_REGISTER: t.memberExpression(
|
||||
@ -610,8 +620,14 @@ export default declare((api, options) => {
|
||||
BEFORE_BODY: beforeBody,
|
||||
MODULE_NAME: moduleName,
|
||||
SETTERS: t.arrayExpression(setters),
|
||||
EXECUTE: t.functionExpression(
|
||||
null,
|
||||
[],
|
||||
t.blockStatement(path.node.body),
|
||||
false,
|
||||
hasTLA,
|
||||
),
|
||||
SOURCES: t.arrayExpression(sources),
|
||||
BODY: path.node.body,
|
||||
EXPORT_IDENTIFIER: t.identifier(exportIdent),
|
||||
CONTEXT_IDENTIFIER: t.identifier(contextIdent),
|
||||
}),
|
||||
|
||||
1
packages/babel-plugin-transform-modules-systemjs/test/fixtures/tla/not-tla/input.mjs
vendored
Normal file
1
packages/babel-plugin-transform-modules-systemjs/test/fixtures/tla/not-tla/input.mjs
vendored
Normal file
@ -0,0 +1 @@
|
||||
async () => await test;
|
||||
10
packages/babel-plugin-transform-modules-systemjs/test/fixtures/tla/not-tla/output.mjs
vendored
Normal file
10
packages/babel-plugin-transform-modules-systemjs/test/fixtures/tla/not-tla/output.mjs
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
System.register([], function (_export, _context) {
|
||||
"use strict";
|
||||
|
||||
return {
|
||||
setters: [],
|
||||
execute: function () {
|
||||
async () => await test;
|
||||
}
|
||||
};
|
||||
});
|
||||
3
packages/babel-plugin-transform-modules-systemjs/test/fixtures/tla/options.json
vendored
Normal file
3
packages/babel-plugin-transform-modules-systemjs/test/fixtures/tla/options.json
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"plugins": ["external-helpers", "transform-modules-systemjs", "syntax-top-level-await"]
|
||||
}
|
||||
3
packages/babel-plugin-transform-modules-systemjs/test/fixtures/tla/tla-block/input.mjs
vendored
Normal file
3
packages/babel-plugin-transform-modules-systemjs/test/fixtures/tla/tla-block/input.mjs
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
if (maybe) {
|
||||
await test;
|
||||
}
|
||||
12
packages/babel-plugin-transform-modules-systemjs/test/fixtures/tla/tla-block/output.mjs
vendored
Normal file
12
packages/babel-plugin-transform-modules-systemjs/test/fixtures/tla/tla-block/output.mjs
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
System.register([], function (_export, _context) {
|
||||
"use strict";
|
||||
|
||||
return {
|
||||
setters: [],
|
||||
execute: async function () {
|
||||
if (maybe) {
|
||||
await test;
|
||||
}
|
||||
}
|
||||
};
|
||||
});
|
||||
2
packages/babel-plugin-transform-modules-systemjs/test/fixtures/tla/tla/input.mjs
vendored
Normal file
2
packages/babel-plugin-transform-modules-systemjs/test/fixtures/tla/tla/input.mjs
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
await test;
|
||||
|
||||
10
packages/babel-plugin-transform-modules-systemjs/test/fixtures/tla/tla/output.mjs
vendored
Normal file
10
packages/babel-plugin-transform-modules-systemjs/test/fixtures/tla/tla/output.mjs
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
System.register([], function (_export, _context) {
|
||||
"use strict";
|
||||
|
||||
return {
|
||||
setters: [],
|
||||
execute: async function () {
|
||||
await test;
|
||||
}
|
||||
};
|
||||
});
|
||||
Loading…
x
Reference in New Issue
Block a user