mirror of https://github.com/webpack/webpack.git
add warning on unsupported environment
in case of async/await check that environment support async functions
This commit is contained in:
parent
2c200d1656
commit
d3086f3979
|
@ -2181,6 +2181,10 @@ export interface Environment {
|
||||||
* The environment supports arrow functions ('() => { ... }').
|
* The environment supports arrow functions ('() => { ... }').
|
||||||
*/
|
*/
|
||||||
arrowFunction?: boolean;
|
arrowFunction?: boolean;
|
||||||
|
/**
|
||||||
|
* The environment supports async functions ('async () => { ... }').
|
||||||
|
*/
|
||||||
|
asyncFunction?: boolean;
|
||||||
/**
|
/**
|
||||||
* The environment supports BigInt as literal (123n).
|
* The environment supports BigInt as literal (123n).
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -479,6 +479,7 @@ class ExternalModule extends Module {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
this.buildMeta.async = true;
|
this.buildMeta.async = true;
|
||||||
|
this.buildMeta.asyncReason = 'externalType="module"';
|
||||||
if (!Array.isArray(request) || request.length === 1) {
|
if (!Array.isArray(request) || request.length === 1) {
|
||||||
this.buildMeta.exportsType = "namespace";
|
this.buildMeta.exportsType = "namespace";
|
||||||
canMangle = false;
|
canMangle = false;
|
||||||
|
@ -488,9 +489,11 @@ class ExternalModule extends Module {
|
||||||
case "script":
|
case "script":
|
||||||
case "promise":
|
case "promise":
|
||||||
this.buildMeta.async = true;
|
this.buildMeta.async = true;
|
||||||
|
this.buildMeta.asyncReason = `externalType="${externalType}"`;
|
||||||
break;
|
break;
|
||||||
case "import":
|
case "import":
|
||||||
this.buildMeta.async = true;
|
this.buildMeta.async = true;
|
||||||
|
this.buildMeta.asyncReason = 'externalType="import"';
|
||||||
if (!Array.isArray(request) || request.length === 1) {
|
if (!Array.isArray(request) || request.length === 1) {
|
||||||
this.buildMeta.exportsType = "namespace";
|
this.buildMeta.exportsType = "namespace";
|
||||||
canMangle = false;
|
canMangle = false;
|
||||||
|
|
|
@ -92,6 +92,7 @@ const makeSerializable = require("./util/makeSerializable");
|
||||||
* @property {(false | "redirect" | "redirect-warn")=} defaultObject
|
* @property {(false | "redirect" | "redirect-warn")=} defaultObject
|
||||||
* @property {boolean=} strictHarmonyModule
|
* @property {boolean=} strictHarmonyModule
|
||||||
* @property {boolean=} async
|
* @property {boolean=} async
|
||||||
|
* @property {string=} asyncReason
|
||||||
* @property {boolean=} sideEffectFree
|
* @property {boolean=} sideEffectFree
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -102,6 +102,10 @@ class RuntimeTemplate {
|
||||||
return this.outputOptions.environment.arrowFunction;
|
return this.outputOptions.environment.arrowFunction;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
supportsAsyncFunction() {
|
||||||
|
return this.outputOptions.environment.asyncFunction;
|
||||||
|
}
|
||||||
|
|
||||||
supportsOptionalChaining() {
|
supportsOptionalChaining() {
|
||||||
return this.outputOptions.environment.optionalChaining;
|
return this.outputOptions.environment.optionalChaining;
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,10 +5,13 @@
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
|
const WebpackError = require("../WebpackError");
|
||||||
const HarmonyImportDependency = require("../dependencies/HarmonyImportDependency");
|
const HarmonyImportDependency = require("../dependencies/HarmonyImportDependency");
|
||||||
|
const { contextify } = require("../util/identifier");
|
||||||
|
|
||||||
/** @typedef {import("../Compiler")} Compiler */
|
/** @typedef {import("../Compiler")} Compiler */
|
||||||
/** @typedef {import("../Module")} Module */
|
/** @typedef {import("../Module")} Module */
|
||||||
|
/** @typedef {import("../NormalModule")} NormalModule */
|
||||||
|
|
||||||
class InferAsyncModulesPlugin {
|
class InferAsyncModulesPlugin {
|
||||||
/**
|
/**
|
||||||
|
@ -18,6 +21,9 @@ class InferAsyncModulesPlugin {
|
||||||
*/
|
*/
|
||||||
apply(compiler) {
|
apply(compiler) {
|
||||||
compiler.hooks.compilation.tap("InferAsyncModulesPlugin", compilation => {
|
compiler.hooks.compilation.tap("InferAsyncModulesPlugin", compilation => {
|
||||||
|
const asyncAwaitUnsupported =
|
||||||
|
compilation.runtimeTemplate.supportsAsyncFunction() === false;
|
||||||
|
const asyncReasons = [];
|
||||||
const { moduleGraph } = compilation;
|
const { moduleGraph } = compilation;
|
||||||
compilation.hooks.finishModules.tap(
|
compilation.hooks.finishModules.tap(
|
||||||
"InferAsyncModulesPlugin",
|
"InferAsyncModulesPlugin",
|
||||||
|
@ -27,6 +33,15 @@ class InferAsyncModulesPlugin {
|
||||||
for (const module of modules) {
|
for (const module of modules) {
|
||||||
if (module.buildMeta && module.buildMeta.async) {
|
if (module.buildMeta && module.buildMeta.async) {
|
||||||
queue.add(module);
|
queue.add(module);
|
||||||
|
if (asyncAwaitUnsupported && "userRequest" in module) {
|
||||||
|
asyncReasons.push(
|
||||||
|
`- ${contextify(
|
||||||
|
compiler.context,
|
||||||
|
/** @type {NormalModule} */ (module).userRequest,
|
||||||
|
compiler
|
||||||
|
)} (${module.buildMeta.asyncReason || "unknown reason"})`
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (const module of queue) {
|
for (const module of queue) {
|
||||||
|
@ -46,6 +61,16 @@ class InferAsyncModulesPlugin {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (asyncReasons.length) {
|
||||||
|
const warning = new WebpackError(
|
||||||
|
"Output environment does not support async/await"
|
||||||
|
);
|
||||||
|
warning.details = `List of async modules:\n${asyncReasons.join(
|
||||||
|
"\n"
|
||||||
|
)}`;
|
||||||
|
compilation.warnings.push(warning);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
|
@ -170,6 +170,25 @@ const resolve = browsers => {
|
||||||
kaios: [2, 5],
|
kaios: [2, 5],
|
||||||
node: [6, 0]
|
node: [6, 0]
|
||||||
}),
|
}),
|
||||||
|
asyncFunction: rawChecker({
|
||||||
|
chrome: 55,
|
||||||
|
and_chr: 55,
|
||||||
|
edge: 15,
|
||||||
|
firefox: 52,
|
||||||
|
and_ff: 52,
|
||||||
|
// ie: Not supported,
|
||||||
|
opera: 42,
|
||||||
|
op_mob: 42,
|
||||||
|
safari: 11,
|
||||||
|
ios_saf: 11,
|
||||||
|
samsung: [6, 0],
|
||||||
|
android: 55,
|
||||||
|
// and_qq: Not supported,
|
||||||
|
// baidu: Not supported,
|
||||||
|
and_uc: [12, 12],
|
||||||
|
// kaios: Not supported,
|
||||||
|
node: [7, 6]
|
||||||
|
}),
|
||||||
forOf: rawChecker({
|
forOf: rawChecker({
|
||||||
chrome: 38,
|
chrome: 38,
|
||||||
and_chr: 38,
|
and_chr: 38,
|
||||||
|
|
|
@ -921,6 +921,11 @@ const applyOutputDefaults = (
|
||||||
"arrowFunction",
|
"arrowFunction",
|
||||||
() => tp && optimistic(tp.arrowFunction)
|
() => tp && optimistic(tp.arrowFunction)
|
||||||
);
|
);
|
||||||
|
F(
|
||||||
|
output.environment,
|
||||||
|
"asyncFunction",
|
||||||
|
() => tp && optimistic(tp.asyncFunction)
|
||||||
|
);
|
||||||
F(output.environment, "const", () => tp && optimistic(tp.const));
|
F(output.environment, "const", () => tp && optimistic(tp.const));
|
||||||
F(
|
F(
|
||||||
output.environment,
|
output.environment,
|
||||||
|
|
|
@ -54,6 +54,7 @@ const getDefaultTarget = context => {
|
||||||
* @property {boolean | null} bigIntLiteral big int literal syntax is available
|
* @property {boolean | null} bigIntLiteral big int literal syntax is available
|
||||||
* @property {boolean | null} const const and let variable declarations are available
|
* @property {boolean | null} const const and let variable declarations are available
|
||||||
* @property {boolean | null} arrowFunction arrow functions are available
|
* @property {boolean | null} arrowFunction arrow functions are available
|
||||||
|
* @property {boolean | null} asyncFunction async functions are available
|
||||||
* @property {boolean | null} forOf for of iteration is available
|
* @property {boolean | null} forOf for of iteration is available
|
||||||
* @property {boolean | null} destructuring destructuring is available
|
* @property {boolean | null} destructuring destructuring is available
|
||||||
* @property {boolean | null} dynamicImport async import() is available
|
* @property {boolean | null} dynamicImport async import() is available
|
||||||
|
@ -172,6 +173,7 @@ You can also more options via the 'target' option: 'browserslist' / 'browserslis
|
||||||
templateLiteral: v(4),
|
templateLiteral: v(4),
|
||||||
optionalChaining: v(14),
|
optionalChaining: v(14),
|
||||||
arrowFunction: v(6),
|
arrowFunction: v(6),
|
||||||
|
asyncFunction: v(7, 6),
|
||||||
forOf: v(5),
|
forOf: v(5),
|
||||||
destructuring: v(6),
|
destructuring: v(6),
|
||||||
bigIntLiteral: v(10, 4),
|
bigIntLiteral: v(10, 4),
|
||||||
|
@ -213,6 +215,7 @@ You can also more options via the 'target' option: 'browserslist' / 'browserslis
|
||||||
templateLiteral: v(1, 1),
|
templateLiteral: v(1, 1),
|
||||||
optionalChaining: v(8),
|
optionalChaining: v(8),
|
||||||
arrowFunction: v(1, 1),
|
arrowFunction: v(1, 1),
|
||||||
|
asyncFunction: v(1, 7),
|
||||||
forOf: v(0, 36),
|
forOf: v(0, 36),
|
||||||
destructuring: v(1, 1),
|
destructuring: v(1, 1),
|
||||||
bigIntLiteral: v(4),
|
bigIntLiteral: v(4),
|
||||||
|
@ -250,6 +253,7 @@ You can also more options via the 'target' option: 'browserslist' / 'browserslis
|
||||||
templateLiteral: v(0, 13),
|
templateLiteral: v(0, 13),
|
||||||
optionalChaining: v(0, 44),
|
optionalChaining: v(0, 44),
|
||||||
arrowFunction: v(0, 15),
|
arrowFunction: v(0, 15),
|
||||||
|
asyncFunction: v(0, 19),
|
||||||
forOf: v(0, 13),
|
forOf: v(0, 13),
|
||||||
destructuring: v(0, 15),
|
destructuring: v(0, 15),
|
||||||
bigIntLiteral: v(0, 32),
|
bigIntLiteral: v(0, 32),
|
||||||
|
@ -271,6 +275,7 @@ You can also more options via the 'target' option: 'browserslist' / 'browserslis
|
||||||
templateLiteral: v >= 2015,
|
templateLiteral: v >= 2015,
|
||||||
optionalChaining: v >= 2020,
|
optionalChaining: v >= 2020,
|
||||||
arrowFunction: v >= 2015,
|
arrowFunction: v >= 2015,
|
||||||
|
asyncFunction: v >= 2017,
|
||||||
forOf: v >= 2015,
|
forOf: v >= 2015,
|
||||||
destructuring: v >= 2015,
|
destructuring: v >= 2015,
|
||||||
module: v >= 2015,
|
module: v >= 2015,
|
||||||
|
|
|
@ -61,6 +61,7 @@ module.exports = class HarmonyDetectionParserPlugin {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
module.buildMeta.async = true;
|
module.buildMeta.async = true;
|
||||||
|
module.buildMeta.asyncReason = "top-level-await";
|
||||||
});
|
});
|
||||||
|
|
||||||
const skipInHarmony = () => {
|
const skipInHarmony = () => {
|
||||||
|
|
|
@ -43,6 +43,7 @@ class WebAssemblyParser extends Parser {
|
||||||
state.module.buildInfo.strict = true;
|
state.module.buildInfo.strict = true;
|
||||||
state.module.buildMeta.exportsType = "namespace";
|
state.module.buildMeta.exportsType = "namespace";
|
||||||
state.module.buildMeta.async = true;
|
state.module.buildMeta.async = true;
|
||||||
|
state.module.buildMeta.asyncReason = "async wasm";
|
||||||
|
|
||||||
// parse it
|
// parse it
|
||||||
const program = decode(source, decoderOpts);
|
const program = decode(source, decoderOpts);
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -723,6 +723,10 @@
|
||||||
"description": "The environment supports arrow functions ('() => { ... }').",
|
"description": "The environment supports arrow functions ('() => { ... }').",
|
||||||
"type": "boolean"
|
"type": "boolean"
|
||||||
},
|
},
|
||||||
|
"asyncFunction": {
|
||||||
|
"description": "The environment supports async functions ('async () => { ... }').",
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
"bigIntLiteral": {
|
"bigIntLiteral": {
|
||||||
"description": "The environment supports BigInt as literal (123n).",
|
"description": "The environment supports BigInt as literal (123n).",
|
||||||
"type": "boolean"
|
"type": "boolean"
|
||||||
|
|
|
@ -323,6 +323,7 @@ describe("snapshots", () => {
|
||||||
],
|
],
|
||||||
"environment": Object {
|
"environment": Object {
|
||||||
"arrowFunction": true,
|
"arrowFunction": true,
|
||||||
|
"asyncFunction": true,
|
||||||
"bigIntLiteral": undefined,
|
"bigIntLiteral": undefined,
|
||||||
"const": true,
|
"const": true,
|
||||||
"destructuring": true,
|
"destructuring": true,
|
||||||
|
@ -1972,6 +1973,7 @@ describe("snapshots", () => {
|
||||||
+ "devtoolNamespace": "browserslist-test",
|
+ "devtoolNamespace": "browserslist-test",
|
||||||
@@ ... @@
|
@@ ... @@
|
||||||
- "arrowFunction": true,
|
- "arrowFunction": true,
|
||||||
|
- "asyncFunction": true,
|
||||||
- "bigIntLiteral": undefined,
|
- "bigIntLiteral": undefined,
|
||||||
- "const": true,
|
- "const": true,
|
||||||
- "destructuring": true,
|
- "destructuring": true,
|
||||||
|
@ -1979,6 +1981,7 @@ describe("snapshots", () => {
|
||||||
- "forOf": true,
|
- "forOf": true,
|
||||||
- "module": undefined,
|
- "module": undefined,
|
||||||
+ "arrowFunction": false,
|
+ "arrowFunction": false,
|
||||||
|
+ "asyncFunction": false,
|
||||||
+ "bigIntLiteral": false,
|
+ "bigIntLiteral": false,
|
||||||
+ "const": false,
|
+ "const": false,
|
||||||
+ "destructuring": false,
|
+ "destructuring": false,
|
||||||
|
|
|
@ -5551,6 +5551,19 @@ Object {
|
||||||
"multiple": false,
|
"multiple": false,
|
||||||
"simpleType": "boolean",
|
"simpleType": "boolean",
|
||||||
},
|
},
|
||||||
|
"output-environment-async-function": Object {
|
||||||
|
"configs": Array [
|
||||||
|
Object {
|
||||||
|
"description": "The environment supports async functions ('async () => { ... }').",
|
||||||
|
"multiple": false,
|
||||||
|
"path": "output.environment.asyncFunction",
|
||||||
|
"type": "boolean",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"description": "The environment supports async functions ('async () => { ... }').",
|
||||||
|
"multiple": false,
|
||||||
|
"simpleType": "boolean",
|
||||||
|
},
|
||||||
"output-environment-big-int-literal": Object {
|
"output-environment-big-int-literal": Object {
|
||||||
"configs": Array [
|
"configs": Array [
|
||||||
Object {
|
Object {
|
||||||
|
|
|
@ -482,6 +482,22 @@ all:
|
||||||
all (webpack x.x.x) compiled successfully"
|
all (webpack x.x.x) compiled successfully"
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
exports[`StatsTestCases should print correct stats for async-unsupported 1`] = `
|
||||||
|
"asset main.js 7.6 KiB [emitted] (name: main)
|
||||||
|
runtime modules 3.26 KiB 4 modules
|
||||||
|
built modules 191 bytes [built]
|
||||||
|
./index.js 106 bytes [built] [code generated]
|
||||||
|
external \\"Promise.resolve()\\" 42 bytes [built] [code generated]
|
||||||
|
./a.js 43 bytes [built] [code generated]
|
||||||
|
|
||||||
|
WARNING in Output environment does not support async/await
|
||||||
|
List of async modules:
|
||||||
|
- aaa (externalType=\\"promise\\")
|
||||||
|
- ./a.js (top-level-await)
|
||||||
|
|
||||||
|
webpack x.x.x compiled with 1 warning in X ms"
|
||||||
|
`;
|
||||||
|
|
||||||
exports[`StatsTestCases should print correct stats for child-compiler-apply-entry-option 1`] = `
|
exports[`StatsTestCases should print correct stats for child-compiler-apply-entry-option 1`] = `
|
||||||
"asset child.js 84 bytes [emitted]
|
"asset child.js 84 bytes [emitted]
|
||||||
asset parent.js 84 bytes [emitted] (name: parent)
|
asset parent.js 84 bytes [emitted] (name: parent)
|
||||||
|
@ -4593,12 +4609,12 @@ exports[`StatsTestCases should print correct stats for wasm-explorer-examples-sy
|
||||||
asset 517.bundle.js 243 bytes [emitted]
|
asset 517.bundle.js 243 bytes [emitted]
|
||||||
asset 20.bundle.js 241 bytes [emitted]
|
asset 20.bundle.js 241 bytes [emitted]
|
||||||
assets by path *.wasm 1.37 KiB
|
assets by path *.wasm 1.37 KiB
|
||||||
asset e3f145b183228cc640d7.module.wasm 531 bytes [emitted] [immutable]
|
asset d92334cc69c2ccd8b540.module.wasm 531 bytes [emitted] [immutable]
|
||||||
asset 82d524821ee70d495948.module.wasm 290 bytes [emitted] [immutable]
|
asset 645aa0483e52ace8e4fd.module.wasm 290 bytes [emitted] [immutable]
|
||||||
asset ea450800640f54975338.module.wasm 156 bytes [emitted] [immutable]
|
asset 46179256c558742d41d7.module.wasm 156 bytes [emitted] [immutable]
|
||||||
asset ebbf27083d239c1ad5e3.module.wasm 154 bytes [emitted] [immutable]
|
asset 1a7c48f2600cf2f47bc2.module.wasm 154 bytes [emitted] [immutable]
|
||||||
asset ee97efb6a05a4e504238.module.wasm 154 bytes [emitted] [immutable]
|
asset 71d4728d83eae16edec5.module.wasm 154 bytes [emitted] [immutable]
|
||||||
asset 0301cb3f9f4151b567f5.module.wasm 120 bytes [emitted] [immutable]
|
asset 35348d4020d7103dc072.module.wasm 120 bytes [emitted] [immutable]
|
||||||
chunk (runtime: main) 20.bundle.js 50 bytes (javascript) 531 bytes (webassembly) [rendered]
|
chunk (runtime: main) 20.bundle.js 50 bytes (javascript) 531 bytes (webassembly) [rendered]
|
||||||
./duff.wasm 50 bytes (javascript) 531 bytes (webassembly) [built] [code generated]
|
./duff.wasm 50 bytes (javascript) 531 bytes (webassembly) [built] [code generated]
|
||||||
chunk (runtime: main) bundle.js (main) 586 bytes (javascript) 9.49 KiB (runtime) [entry] [rendered]
|
chunk (runtime: main) bundle.js (main) 586 bytes (javascript) 9.49 KiB (runtime) [entry] [rendered]
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
exports[`browserslist target ["and_chr 80"] 1`] = `
|
exports[`browserslist target ["and_chr 80"] 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": true,
|
"arrowFunction": true,
|
||||||
|
"asyncFunction": true,
|
||||||
"bigIntLiteral": true,
|
"bigIntLiteral": true,
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"const": true,
|
"const": true,
|
||||||
|
@ -32,6 +33,7 @@ Object {
|
||||||
exports[`browserslist target ["and_ff 68"] 1`] = `
|
exports[`browserslist target ["and_ff 68"] 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": true,
|
"arrowFunction": true,
|
||||||
|
"asyncFunction": true,
|
||||||
"bigIntLiteral": true,
|
"bigIntLiteral": true,
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"const": true,
|
"const": true,
|
||||||
|
@ -61,6 +63,7 @@ Object {
|
||||||
exports[`browserslist target ["and_qq 10.4"] 1`] = `
|
exports[`browserslist target ["and_qq 10.4"] 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": true,
|
"arrowFunction": true,
|
||||||
|
"asyncFunction": false,
|
||||||
"bigIntLiteral": false,
|
"bigIntLiteral": false,
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"const": true,
|
"const": true,
|
||||||
|
@ -90,6 +93,7 @@ Object {
|
||||||
exports[`browserslist target ["and_uc 12.12"] 1`] = `
|
exports[`browserslist target ["and_uc 12.12"] 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": true,
|
"arrowFunction": true,
|
||||||
|
"asyncFunction": true,
|
||||||
"bigIntLiteral": false,
|
"bigIntLiteral": false,
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"const": true,
|
"const": true,
|
||||||
|
@ -119,6 +123,7 @@ Object {
|
||||||
exports[`browserslist target ["android 4"] 1`] = `
|
exports[`browserslist target ["android 4"] 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": false,
|
"arrowFunction": false,
|
||||||
|
"asyncFunction": false,
|
||||||
"bigIntLiteral": false,
|
"bigIntLiteral": false,
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"const": false,
|
"const": false,
|
||||||
|
@ -148,6 +153,7 @@ Object {
|
||||||
exports[`browserslist target ["android 4.1"] 1`] = `
|
exports[`browserslist target ["android 4.1"] 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": false,
|
"arrowFunction": false,
|
||||||
|
"asyncFunction": false,
|
||||||
"bigIntLiteral": false,
|
"bigIntLiteral": false,
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"const": false,
|
"const": false,
|
||||||
|
@ -177,6 +183,7 @@ Object {
|
||||||
exports[`browserslist target ["android 4.4.3-4.4.4"] 1`] = `
|
exports[`browserslist target ["android 4.4.3-4.4.4"] 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": false,
|
"arrowFunction": false,
|
||||||
|
"asyncFunction": false,
|
||||||
"bigIntLiteral": false,
|
"bigIntLiteral": false,
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"const": false,
|
"const": false,
|
||||||
|
@ -206,6 +213,7 @@ Object {
|
||||||
exports[`browserslist target ["android 81"] 1`] = `
|
exports[`browserslist target ["android 81"] 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": true,
|
"arrowFunction": true,
|
||||||
|
"asyncFunction": true,
|
||||||
"bigIntLiteral": true,
|
"bigIntLiteral": true,
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"const": true,
|
"const": true,
|
||||||
|
@ -235,6 +243,7 @@ Object {
|
||||||
exports[`browserslist target ["baidu 7.12"] 1`] = `
|
exports[`browserslist target ["baidu 7.12"] 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": true,
|
"arrowFunction": true,
|
||||||
|
"asyncFunction": false,
|
||||||
"bigIntLiteral": false,
|
"bigIntLiteral": false,
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"const": false,
|
"const": false,
|
||||||
|
@ -264,6 +273,7 @@ Object {
|
||||||
exports[`browserslist target ["bb 10"] 1`] = `
|
exports[`browserslist target ["bb 10"] 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": false,
|
"arrowFunction": false,
|
||||||
|
"asyncFunction": false,
|
||||||
"bigIntLiteral": false,
|
"bigIntLiteral": false,
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"const": false,
|
"const": false,
|
||||||
|
@ -293,6 +303,7 @@ Object {
|
||||||
exports[`browserslist target ["chrome 80","node 12.19.0"] 1`] = `
|
exports[`browserslist target ["chrome 80","node 12.19.0"] 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": true,
|
"arrowFunction": true,
|
||||||
|
"asyncFunction": true,
|
||||||
"bigIntLiteral": true,
|
"bigIntLiteral": true,
|
||||||
"browser": null,
|
"browser": null,
|
||||||
"const": true,
|
"const": true,
|
||||||
|
@ -322,6 +333,7 @@ Object {
|
||||||
exports[`browserslist target ["chrome 80"] 1`] = `
|
exports[`browserslist target ["chrome 80"] 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": true,
|
"arrowFunction": true,
|
||||||
|
"asyncFunction": true,
|
||||||
"bigIntLiteral": true,
|
"bigIntLiteral": true,
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"const": true,
|
"const": true,
|
||||||
|
@ -351,6 +363,7 @@ Object {
|
||||||
exports[`browserslist target ["edge 79"] 1`] = `
|
exports[`browserslist target ["edge 79"] 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": true,
|
"arrowFunction": true,
|
||||||
|
"asyncFunction": true,
|
||||||
"bigIntLiteral": true,
|
"bigIntLiteral": true,
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"const": true,
|
"const": true,
|
||||||
|
@ -380,6 +393,7 @@ Object {
|
||||||
exports[`browserslist target ["firefox 68"] 1`] = `
|
exports[`browserslist target ["firefox 68"] 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": true,
|
"arrowFunction": true,
|
||||||
|
"asyncFunction": true,
|
||||||
"bigIntLiteral": true,
|
"bigIntLiteral": true,
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"const": true,
|
"const": true,
|
||||||
|
@ -409,6 +423,7 @@ Object {
|
||||||
exports[`browserslist target ["firefox 80","chrome 80"] 1`] = `
|
exports[`browserslist target ["firefox 80","chrome 80"] 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": true,
|
"arrowFunction": true,
|
||||||
|
"asyncFunction": true,
|
||||||
"bigIntLiteral": true,
|
"bigIntLiteral": true,
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"const": true,
|
"const": true,
|
||||||
|
@ -438,6 +453,7 @@ Object {
|
||||||
exports[`browserslist target ["ie 11"] 1`] = `
|
exports[`browserslist target ["ie 11"] 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": false,
|
"arrowFunction": false,
|
||||||
|
"asyncFunction": false,
|
||||||
"bigIntLiteral": false,
|
"bigIntLiteral": false,
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"const": false,
|
"const": false,
|
||||||
|
@ -467,6 +483,7 @@ Object {
|
||||||
exports[`browserslist target ["ie_mob 11"] 1`] = `
|
exports[`browserslist target ["ie_mob 11"] 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": false,
|
"arrowFunction": false,
|
||||||
|
"asyncFunction": false,
|
||||||
"bigIntLiteral": false,
|
"bigIntLiteral": false,
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"const": false,
|
"const": false,
|
||||||
|
@ -496,6 +513,7 @@ Object {
|
||||||
exports[`browserslist target ["ios_saf 12.0-12.1"] 1`] = `
|
exports[`browserslist target ["ios_saf 12.0-12.1"] 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": true,
|
"arrowFunction": true,
|
||||||
|
"asyncFunction": true,
|
||||||
"bigIntLiteral": false,
|
"bigIntLiteral": false,
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"const": true,
|
"const": true,
|
||||||
|
@ -525,6 +543,7 @@ Object {
|
||||||
exports[`browserslist target ["kaios 2.5"] 1`] = `
|
exports[`browserslist target ["kaios 2.5"] 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": true,
|
"arrowFunction": true,
|
||||||
|
"asyncFunction": false,
|
||||||
"bigIntLiteral": false,
|
"bigIntLiteral": false,
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"const": true,
|
"const": true,
|
||||||
|
@ -554,6 +573,7 @@ Object {
|
||||||
exports[`browserslist target ["node 0.10.0"] 1`] = `
|
exports[`browserslist target ["node 0.10.0"] 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": false,
|
"arrowFunction": false,
|
||||||
|
"asyncFunction": false,
|
||||||
"bigIntLiteral": false,
|
"bigIntLiteral": false,
|
||||||
"browser": false,
|
"browser": false,
|
||||||
"const": false,
|
"const": false,
|
||||||
|
@ -583,6 +603,7 @@ Object {
|
||||||
exports[`browserslist target ["node 0.12.0"] 1`] = `
|
exports[`browserslist target ["node 0.12.0"] 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": false,
|
"arrowFunction": false,
|
||||||
|
"asyncFunction": false,
|
||||||
"bigIntLiteral": false,
|
"bigIntLiteral": false,
|
||||||
"browser": false,
|
"browser": false,
|
||||||
"const": false,
|
"const": false,
|
||||||
|
@ -612,6 +633,7 @@ Object {
|
||||||
exports[`browserslist target ["node 10.0.0"] 1`] = `
|
exports[`browserslist target ["node 10.0.0"] 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": true,
|
"arrowFunction": true,
|
||||||
|
"asyncFunction": true,
|
||||||
"bigIntLiteral": false,
|
"bigIntLiteral": false,
|
||||||
"browser": false,
|
"browser": false,
|
||||||
"const": true,
|
"const": true,
|
||||||
|
@ -641,6 +663,7 @@ Object {
|
||||||
exports[`browserslist target ["node 10.17.0"] 1`] = `
|
exports[`browserslist target ["node 10.17.0"] 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": true,
|
"arrowFunction": true,
|
||||||
|
"asyncFunction": true,
|
||||||
"bigIntLiteral": true,
|
"bigIntLiteral": true,
|
||||||
"browser": false,
|
"browser": false,
|
||||||
"const": true,
|
"const": true,
|
||||||
|
@ -670,6 +693,7 @@ Object {
|
||||||
exports[`browserslist target ["node 12.19.0"] 1`] = `
|
exports[`browserslist target ["node 12.19.0"] 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": true,
|
"arrowFunction": true,
|
||||||
|
"asyncFunction": true,
|
||||||
"bigIntLiteral": true,
|
"bigIntLiteral": true,
|
||||||
"browser": false,
|
"browser": false,
|
||||||
"const": true,
|
"const": true,
|
||||||
|
@ -699,6 +723,7 @@ Object {
|
||||||
exports[`browserslist target ["op_mini all"] 1`] = `
|
exports[`browserslist target ["op_mini all"] 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": false,
|
"arrowFunction": false,
|
||||||
|
"asyncFunction": false,
|
||||||
"bigIntLiteral": false,
|
"bigIntLiteral": false,
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"const": false,
|
"const": false,
|
||||||
|
@ -728,6 +753,7 @@ Object {
|
||||||
exports[`browserslist target ["op_mob 54"] 1`] = `
|
exports[`browserslist target ["op_mob 54"] 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": true,
|
"arrowFunction": true,
|
||||||
|
"asyncFunction": true,
|
||||||
"bigIntLiteral": true,
|
"bigIntLiteral": true,
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"const": true,
|
"const": true,
|
||||||
|
@ -757,6 +783,7 @@ Object {
|
||||||
exports[`browserslist target ["opera 54"] 1`] = `
|
exports[`browserslist target ["opera 54"] 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": true,
|
"arrowFunction": true,
|
||||||
|
"asyncFunction": true,
|
||||||
"bigIntLiteral": true,
|
"bigIntLiteral": true,
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"const": true,
|
"const": true,
|
||||||
|
@ -786,6 +813,7 @@ Object {
|
||||||
exports[`browserslist target ["safari 10"] 1`] = `
|
exports[`browserslist target ["safari 10"] 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": true,
|
"arrowFunction": true,
|
||||||
|
"asyncFunction": false,
|
||||||
"bigIntLiteral": false,
|
"bigIntLiteral": false,
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"const": false,
|
"const": false,
|
||||||
|
@ -815,6 +843,7 @@ Object {
|
||||||
exports[`browserslist target ["safari 11"] 1`] = `
|
exports[`browserslist target ["safari 11"] 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": true,
|
"arrowFunction": true,
|
||||||
|
"asyncFunction": true,
|
||||||
"bigIntLiteral": false,
|
"bigIntLiteral": false,
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"const": true,
|
"const": true,
|
||||||
|
@ -844,6 +873,7 @@ Object {
|
||||||
exports[`browserslist target ["safari 12.0"] 1`] = `
|
exports[`browserslist target ["safari 12.0"] 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": true,
|
"arrowFunction": true,
|
||||||
|
"asyncFunction": true,
|
||||||
"bigIntLiteral": false,
|
"bigIntLiteral": false,
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"const": true,
|
"const": true,
|
||||||
|
@ -873,6 +903,7 @@ Object {
|
||||||
exports[`browserslist target ["safari 12.1"] 1`] = `
|
exports[`browserslist target ["safari 12.1"] 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": true,
|
"arrowFunction": true,
|
||||||
|
"asyncFunction": true,
|
||||||
"bigIntLiteral": false,
|
"bigIntLiteral": false,
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"const": true,
|
"const": true,
|
||||||
|
@ -902,6 +933,7 @@ Object {
|
||||||
exports[`browserslist target ["safari 13"] 1`] = `
|
exports[`browserslist target ["safari 13"] 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": true,
|
"arrowFunction": true,
|
||||||
|
"asyncFunction": true,
|
||||||
"bigIntLiteral": false,
|
"bigIntLiteral": false,
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"const": true,
|
"const": true,
|
||||||
|
@ -931,6 +963,7 @@ Object {
|
||||||
exports[`browserslist target ["safari TP"] 1`] = `
|
exports[`browserslist target ["safari TP"] 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": true,
|
"arrowFunction": true,
|
||||||
|
"asyncFunction": true,
|
||||||
"bigIntLiteral": true,
|
"bigIntLiteral": true,
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"const": true,
|
"const": true,
|
||||||
|
@ -960,6 +993,7 @@ Object {
|
||||||
exports[`browserslist target ["samsung 4"] 1`] = `
|
exports[`browserslist target ["samsung 4"] 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": false,
|
"arrowFunction": false,
|
||||||
|
"asyncFunction": false,
|
||||||
"bigIntLiteral": false,
|
"bigIntLiteral": false,
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"const": false,
|
"const": false,
|
||||||
|
@ -989,6 +1023,7 @@ Object {
|
||||||
exports[`browserslist target ["samsung 9.2"] 1`] = `
|
exports[`browserslist target ["samsung 9.2"] 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": true,
|
"arrowFunction": true,
|
||||||
|
"asyncFunction": true,
|
||||||
"bigIntLiteral": true,
|
"bigIntLiteral": true,
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"const": true,
|
"const": true,
|
||||||
|
@ -1018,6 +1053,7 @@ Object {
|
||||||
exports[`browserslist target ["samsung 11.1-11.2"] 1`] = `
|
exports[`browserslist target ["samsung 11.1-11.2"] 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": true,
|
"arrowFunction": true,
|
||||||
|
"asyncFunction": true,
|
||||||
"bigIntLiteral": true,
|
"bigIntLiteral": true,
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"const": true,
|
"const": true,
|
||||||
|
@ -1047,6 +1083,7 @@ Object {
|
||||||
exports[`browserslist target ["unknown 50"] 1`] = `
|
exports[`browserslist target ["unknown 50"] 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": false,
|
"arrowFunction": false,
|
||||||
|
"asyncFunction": false,
|
||||||
"bigIntLiteral": false,
|
"bigIntLiteral": false,
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"const": false,
|
"const": false,
|
||||||
|
|
|
@ -9,6 +9,7 @@ module.exports = {
|
||||||
expect(compilation.outputOptions.environment).toMatchInlineSnapshot(`
|
expect(compilation.outputOptions.environment).toMatchInlineSnapshot(`
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": false,
|
"arrowFunction": false,
|
||||||
|
"asyncFunction": false,
|
||||||
"bigIntLiteral": false,
|
"bigIntLiteral": false,
|
||||||
"const": false,
|
"const": false,
|
||||||
"destructuring": false,
|
"destructuring": false,
|
||||||
|
|
|
@ -9,6 +9,7 @@ module.exports = {
|
||||||
expect(compilation.outputOptions.environment).toMatchInlineSnapshot(`
|
expect(compilation.outputOptions.environment).toMatchInlineSnapshot(`
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": false,
|
"arrowFunction": false,
|
||||||
|
"asyncFunction": false,
|
||||||
"bigIntLiteral": false,
|
"bigIntLiteral": false,
|
||||||
"const": false,
|
"const": false,
|
||||||
"destructuring": false,
|
"destructuring": false,
|
||||||
|
|
|
@ -7,6 +7,7 @@ module.exports = {
|
||||||
expect(compilation.outputOptions.environment).toMatchInlineSnapshot(`
|
expect(compilation.outputOptions.environment).toMatchInlineSnapshot(`
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": false,
|
"arrowFunction": false,
|
||||||
|
"asyncFunction": false,
|
||||||
"bigIntLiteral": false,
|
"bigIntLiteral": false,
|
||||||
"const": false,
|
"const": false,
|
||||||
"destructuring": false,
|
"destructuring": false,
|
||||||
|
|
|
@ -7,6 +7,7 @@ module.exports = {
|
||||||
expect(compilation.outputOptions.environment).toMatchInlineSnapshot(`
|
expect(compilation.outputOptions.environment).toMatchInlineSnapshot(`
|
||||||
Object {
|
Object {
|
||||||
"arrowFunction": true,
|
"arrowFunction": true,
|
||||||
|
"asyncFunction": true,
|
||||||
"bigIntLiteral": true,
|
"bigIntLiteral": true,
|
||||||
"const": true,
|
"const": true,
|
||||||
"destructuring": true,
|
"destructuring": true,
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
await Promise.resolve();
|
||||||
|
export default 1;
|
|
@ -0,0 +1,6 @@
|
||||||
|
import aaa from "aaa";
|
||||||
|
import a from "./a";
|
||||||
|
|
||||||
|
it("should compile and run", () => {
|
||||||
|
expect(a).toBe(1);
|
||||||
|
});
|
|
@ -0,0 +1,16 @@
|
||||||
|
/** @type {import("../../../").Configuration} */
|
||||||
|
module.exports = {
|
||||||
|
mode: "production",
|
||||||
|
target: ["web", "es5"],
|
||||||
|
entry: "./index",
|
||||||
|
experiments: {
|
||||||
|
topLevelAwait: true
|
||||||
|
},
|
||||||
|
externals: {
|
||||||
|
aaa: "promise Promise.resolve()"
|
||||||
|
},
|
||||||
|
stats: {
|
||||||
|
preset: "all",
|
||||||
|
errorDetails: true
|
||||||
|
}
|
||||||
|
};
|
|
@ -3346,6 +3346,11 @@ declare interface Environment {
|
||||||
*/
|
*/
|
||||||
arrowFunction?: boolean;
|
arrowFunction?: boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The environment supports async functions ('async () => { ... }').
|
||||||
|
*/
|
||||||
|
asyncFunction?: boolean;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The environment supports BigInt as literal (123n).
|
* The environment supports BigInt as literal (123n).
|
||||||
*/
|
*/
|
||||||
|
@ -5724,6 +5729,7 @@ declare interface KnownBuildMeta {
|
||||||
defaultObject?: false | "redirect" | "redirect-warn";
|
defaultObject?: false | "redirect" | "redirect-warn";
|
||||||
strictHarmonyModule?: boolean;
|
strictHarmonyModule?: boolean;
|
||||||
async?: boolean;
|
async?: boolean;
|
||||||
|
asyncReason?: string;
|
||||||
sideEffectFree?: boolean;
|
sideEffectFree?: boolean;
|
||||||
}
|
}
|
||||||
declare interface KnownCreateStatsOptionsContext {
|
declare interface KnownCreateStatsOptionsContext {
|
||||||
|
@ -10301,6 +10307,7 @@ declare abstract class RuntimeTemplate {
|
||||||
isModule(): undefined | boolean;
|
isModule(): undefined | boolean;
|
||||||
supportsConst(): undefined | boolean;
|
supportsConst(): undefined | boolean;
|
||||||
supportsArrowFunction(): undefined | boolean;
|
supportsArrowFunction(): undefined | boolean;
|
||||||
|
supportsAsyncFunction(): undefined | boolean;
|
||||||
supportsOptionalChaining(): undefined | boolean;
|
supportsOptionalChaining(): undefined | boolean;
|
||||||
supportsForOf(): undefined | boolean;
|
supportsForOf(): undefined | boolean;
|
||||||
supportsDestructuring(): undefined | boolean;
|
supportsDestructuring(): undefined | boolean;
|
||||||
|
|
Loading…
Reference in New Issue