mirror of https://github.com/webpack/webpack.git
Compare commits
14 Commits
7d8f145324
...
557f7abb2a
Author | SHA1 | Date |
---|---|---|
|
557f7abb2a | |
|
e1afcd4cc2 | |
|
d45073a2b3 | |
|
568bb1d789 | |
|
11144e4eec | |
|
b6c781a0f1 | |
|
3c08fd105c | |
|
f508e8b705 | |
|
5c11f27b6b | |
|
eaf527235a | |
|
5e6d71b66a | |
|
9c0fb88089 | |
|
37d6a32e23 | |
|
695237710e |
|
@ -214,7 +214,7 @@ jobs:
|
|||
|
||||
# Install old `jest` version and deps for legacy node versions
|
||||
- run: |
|
||||
yarn upgrade jest@^27.5.0 jest-circus@^27.5.0 jest-cli@^27.5.0 jest-diff@^27.5.0 jest-environment-node@^27.5.0 jest-junit@^13.0.0 @types/jest@^27.4.0 pretty-format@^27.0.2 husky@^8.0.3 lint-staged@^13.2.1 cspell@^6.31.1 open-cli@^7.2.0 coffee-loader@^1.0.0 babel-loader@^8.1.0 style-loader@^2.0.0 css-loader@^5.0.1 less-loader@^8.1.1 mini-css-extract-plugin@^1.6.1 nyc@^15.1.0 --ignore-engines
|
||||
yarn upgrade jest@^27.5.0 jest-circus@^27.5.0 jest-cli@^27.5.0 jest-diff@^27.5.0 jest-environment-node@^27.5.0 jest-junit@^13.0.0 @types/jest@^27.4.0 pretty-format@^27.0.2 husky@^8.0.3 lint-staged@^13.2.1 cspell@^6.31.1 open-cli@^7.2.0 coffee-loader@^1.0.0 babel-loader@^8.1.0 style-loader@^2.0.0 css-loader@^5.0.1 less-loader@^8.1.1 mini-css-extract-plugin@^1.6.1 nyc@^15.1.0 memfs@4.14.0 --ignore-engines
|
||||
yarn --frozen-lockfile --ignore-engines
|
||||
if: matrix.node-version == '10.x' || matrix.node-version == '12.x' || matrix.node-version == '14.x'
|
||||
|
||||
|
|
|
@ -314,7 +314,8 @@
|
|||
"Kumar",
|
||||
"spacek",
|
||||
"thelarkinn",
|
||||
"behaviour"
|
||||
"behaviour",
|
||||
"WHATWG"
|
||||
],
|
||||
"ignoreRegExpList": [
|
||||
"/Author.+/",
|
||||
|
|
|
@ -114,6 +114,7 @@ const {
|
|||
/** @typedef {import("./ModuleTypeConstants").ASSET_MODULE_TYPE_INLINE} ASSET_MODULE_TYPE_INLINE */
|
||||
/** @typedef {import("./ModuleTypeConstants").ASSET_MODULE_TYPE_RESOURCE} ASSET_MODULE_TYPE_RESOURCE */
|
||||
/** @typedef {import("./ModuleTypeConstants").ASSET_MODULE_TYPE_SOURCE} ASSET_MODULE_TYPE_SOURCE */
|
||||
/** @typedef {import("./ModuleTypeConstants").ASSET_MODULE_TYPE_BYTES} ASSET_MODULE_TYPE_BYTES */
|
||||
/** @typedef {import("./ModuleTypeConstants").WEBASSEMBLY_MODULE_TYPE_ASYNC} WEBASSEMBLY_MODULE_TYPE_ASYNC */
|
||||
/** @typedef {import("./ModuleTypeConstants").WEBASSEMBLY_MODULE_TYPE_SYNC} WEBASSEMBLY_MODULE_TYPE_SYNC */
|
||||
/** @typedef {import("./ModuleTypeConstants").CSS_MODULE_TYPE} CSS_MODULE_TYPE */
|
||||
|
@ -268,6 +269,76 @@ const ruleSetCompiler = new RuleSetCompiler([
|
|||
new UseEffectRulePlugin()
|
||||
]);
|
||||
|
||||
/** @typedef {import("./javascript/JavascriptParser")} JavascriptParser */
|
||||
/** @typedef {import("../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
|
||||
/** @typedef {import("./javascript/JavascriptGenerator")} JavascriptGenerator */
|
||||
/** @typedef {import("../declarations/WebpackOptions").EmptyGeneratorOptions} EmptyGeneratorOptions */
|
||||
|
||||
/** @typedef {import("./json/JsonParser")} JsonParser */
|
||||
/** @typedef {import("../declarations/WebpackOptions").JsonParserOptions} JsonParserOptions */
|
||||
/** @typedef {import("./json/JsonGenerator")} JsonGenerator */
|
||||
/** @typedef {import("../declarations/WebpackOptions").JsonGeneratorOptions} JsonGeneratorOptions */
|
||||
|
||||
/** @typedef {import("./asset/AssetParser")} AssetParser */
|
||||
/** @typedef {import("./asset/AssetSourceParser")} AssetSourceParser */
|
||||
/** @typedef {import("./asset/AssetBytesParser")} AssetBytesParser */
|
||||
/** @typedef {import("../declarations/WebpackOptions").AssetParserOptions} AssetParserOptions */
|
||||
/** @typedef {import("../declarations/WebpackOptions").EmptyParserOptions} EmptyParserOptions */
|
||||
/** @typedef {import("./asset/AssetGenerator")} AssetGenerator */
|
||||
/** @typedef {import("../declarations/WebpackOptions").AssetGeneratorOptions} AssetGeneratorOptions */
|
||||
/** @typedef {import("../declarations/WebpackOptions").AssetInlineGeneratorOptions} AssetInlineGeneratorOptions */
|
||||
/** @typedef {import("../declarations/WebpackOptions").AssetResourceGeneratorOptions} AssetResourceGeneratorOptions */
|
||||
/** @typedef {import("./asset/AssetSourceGenerator")} AssetSourceGenerator */
|
||||
/** @typedef {import("./asset/AssetBytesGenerator")} AssetBytesGenerator */
|
||||
|
||||
/** @typedef {import("./wasm-async/AsyncWebAssemblyParser")} AsyncWebAssemblyParser */
|
||||
/** @typedef {import("./wasm-sync/WebAssemblyParser")} WebAssemblyParser */
|
||||
|
||||
/** @typedef {import("./css/CssParser")} CssParser */
|
||||
/** @typedef {import("../declarations/WebpackOptions").CssParserOptions} CssParserOptions */
|
||||
/** @typedef {import("../declarations/WebpackOptions").CssAutoParserOptions} CssAutoParserOptions */
|
||||
/** @typedef {import("../declarations/WebpackOptions").CssGlobalParserOptions} CssGlobalParserOptions */
|
||||
/** @typedef {import("../declarations/WebpackOptions").CssModuleParserOptions} CssModuleParserOptions */
|
||||
/** @typedef {import("./css/CssGenerator")} CssGenerator */
|
||||
/** @typedef {import("../declarations/WebpackOptions").CssGeneratorOptions} CssGeneratorOptions */
|
||||
/** @typedef {import("../declarations/WebpackOptions").CssGlobalGeneratorOptions} CssGlobalGeneratorOptions */
|
||||
/** @typedef {import("../declarations/WebpackOptions").CssModuleGeneratorOptions} CssModuleGeneratorOptions */
|
||||
/** @typedef {import("../declarations/WebpackOptions").CssAutoGeneratorOptions} CssAutoGeneratorOptions */
|
||||
|
||||
/**
|
||||
* @typedef {[
|
||||
* [JAVASCRIPT_MODULE_TYPE_AUTO, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions],
|
||||
* [JAVASCRIPT_MODULE_TYPE_DYNAMIC, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions],
|
||||
* [JAVASCRIPT_MODULE_TYPE_ESM, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions],
|
||||
* [JSON_MODULE_TYPE, JsonParser, JsonParserOptions, JsonGenerator, JsonGeneratorOptions],
|
||||
* [ASSET_MODULE_TYPE, AssetParser, AssetParserOptions, AssetGenerator, AssetGeneratorOptions],
|
||||
* [ASSET_MODULE_TYPE_INLINE, AssetParser, EmptyParserOptions, AssetGenerator, AssetGeneratorOptions],
|
||||
* [ASSET_MODULE_TYPE_RESOURCE, AssetParser, EmptyParserOptions, AssetGenerator, AssetGeneratorOptions],
|
||||
* [ASSET_MODULE_TYPE_SOURCE, AssetSourceParser, EmptyParserOptions, AssetSourceGenerator, EmptyGeneratorOptions],
|
||||
* [ASSET_MODULE_TYPE_BYTES, AssetBytesParser, EmptyParserOptions, AssetBytesGenerator, EmptyGeneratorOptions],
|
||||
* [WEBASSEMBLY_MODULE_TYPE_ASYNC, AsyncWebAssemblyParser, EmptyParserOptions, Generator, EmptyParserOptions],
|
||||
* [WEBASSEMBLY_MODULE_TYPE_SYNC, WebAssemblyParser, EmptyParserOptions, Generator, EmptyParserOptions],
|
||||
* [CSS_MODULE_TYPE, CssParser, CssParserOptions, CssGenerator, CssGeneratorOptions],
|
||||
* [CSS_MODULE_TYPE_AUTO, CssParser, CssAutoParserOptions, CssGenerator, CssAutoGeneratorOptions],
|
||||
* [CSS_MODULE_TYPE_MODULE, CssParser, CssModuleParserOptions, CssGenerator, CssModuleGeneratorOptions],
|
||||
* [CSS_MODULE_TYPE_GLOBAL, CssParser, CssGlobalParserOptions, CssGenerator, CssGlobalGeneratorOptions],
|
||||
* [string, Parser, ParserOptions, Generator, GeneratorOptions],
|
||||
* ]} ParsersAndGeneratorsByTypes
|
||||
*/
|
||||
|
||||
/**
|
||||
* @template {unknown[]} T
|
||||
* @template {number[]} I
|
||||
* @typedef {{ [K in keyof I]: K extends keyof I ? I[K] extends keyof T ? T[I[K]] : never : never }} ExtractTupleElements
|
||||
*/
|
||||
|
||||
/**
|
||||
* @template {unknown[]} T
|
||||
* @template {number[]} A
|
||||
* @template [R=void]
|
||||
* @typedef {T extends [infer Head extends [string, ...unknown[]], ...infer Tail extends [string, ...unknown[]][]] ? Record<Head[0], SyncBailHook<ExtractTupleElements<Head, A>, R extends number ? Head[R] : R>> & RecordFactoryFromTuple<Tail, A, R> : unknown } RecordFactoryFromTuple
|
||||
*/
|
||||
|
||||
class NormalModuleFactory extends ModuleFactory {
|
||||
/**
|
||||
* @param {object} param params
|
||||
|
@ -306,15 +377,15 @@ class NormalModuleFactory extends ModuleFactory {
|
|||
createModule: new AsyncSeriesBailHook(["createData", "resolveData"]),
|
||||
/** @type {SyncWaterfallHook<[Module, CreateData, ResolveData]>} */
|
||||
module: new SyncWaterfallHook(["module", "createData", "resolveData"]),
|
||||
/** @type {HookMap<SyncBailHook<[ParserOptions], Parser | void>>} */
|
||||
/** @type {import("tapable").TypedHookMap<RecordFactoryFromTuple<ParsersAndGeneratorsByTypes, [2], 1>>} */
|
||||
createParser: new HookMap(() => new SyncBailHook(["parserOptions"])),
|
||||
/** @type {HookMap<SyncBailHook<[EXPECTED_ANY, ParserOptions], void>>} */
|
||||
/** @type {import("tapable").TypedHookMap<RecordFactoryFromTuple<ParsersAndGeneratorsByTypes, [1, 2]>>} */
|
||||
parser: new HookMap(() => new SyncHook(["parser", "parserOptions"])),
|
||||
/** @type {HookMap<SyncBailHook<[GeneratorOptions], Generator | void>>} */
|
||||
/** @type {import("tapable").TypedHookMap<RecordFactoryFromTuple<ParsersAndGeneratorsByTypes, [4], 3>>} */
|
||||
createGenerator: new HookMap(
|
||||
() => new SyncBailHook(["generatorOptions"])
|
||||
),
|
||||
/** @type {HookMap<SyncBailHook<[EXPECTED_ANY, GeneratorOptions], void>>} */
|
||||
/** @type {import("tapable").TypedHookMap<RecordFactoryFromTuple<ParsersAndGeneratorsByTypes, [3, 4]>>} */
|
||||
generator: new HookMap(
|
||||
() => new SyncHook(["generator", "generatorOptions"])
|
||||
),
|
||||
|
|
|
@ -15,59 +15,46 @@ const browserslist = require("browserslist");
|
|||
// [[C:]/path/to/config][:env]
|
||||
const inputRx = /^(?:((?:[A-Z]:)?[/\\].*?))?(?::(.+?))?$/i;
|
||||
|
||||
/**
|
||||
* @typedef {object} BrowserslistHandlerConfig
|
||||
* @property {string=} configPath
|
||||
* @property {string=} env
|
||||
* @property {string=} query
|
||||
*/
|
||||
|
||||
/**
|
||||
* @param {string | null | undefined} input input string
|
||||
* @param {string} context the context directory
|
||||
* @returns {BrowserslistHandlerConfig} config
|
||||
*/
|
||||
const parse = (input, context) => {
|
||||
if (!input) {
|
||||
return {};
|
||||
}
|
||||
|
||||
if (path.isAbsolute(input)) {
|
||||
const [, configPath, env] = inputRx.exec(input) || [];
|
||||
return { configPath, env };
|
||||
}
|
||||
|
||||
const config = browserslist.findConfig(context);
|
||||
|
||||
if (config && Object.keys(config).includes(input)) {
|
||||
return { env: input };
|
||||
}
|
||||
|
||||
return { query: input };
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {string | null | undefined} input input string
|
||||
* @param {string} context the context directory
|
||||
* @returns {string[] | undefined} selected browsers
|
||||
*/
|
||||
const load = (input, context) => {
|
||||
const { configPath, env, query } = parse(input, context);
|
||||
// browserslist:path-to-config
|
||||
// browserslist:path-to-config:env
|
||||
if (input && path.isAbsolute(input)) {
|
||||
const [, configPath, env] = inputRx.exec(input) || [];
|
||||
|
||||
// if a query is specified, then use it, else
|
||||
// if a path to a config is specified then load it, else
|
||||
// find a nearest config
|
||||
const config =
|
||||
query ||
|
||||
(configPath
|
||||
? browserslist.loadConfig({
|
||||
config: configPath,
|
||||
env
|
||||
})
|
||||
: browserslist.loadConfig({ path: context, env }));
|
||||
const config = browserslist.loadConfig({
|
||||
config: configPath,
|
||||
env
|
||||
});
|
||||
|
||||
if (!config) return;
|
||||
return browserslist(config);
|
||||
return browserslist(config, { env });
|
||||
}
|
||||
|
||||
const env = input || undefined;
|
||||
|
||||
const config = browserslist.loadConfig({
|
||||
path: context,
|
||||
env
|
||||
});
|
||||
|
||||
// browserslist
|
||||
// browserslist:env
|
||||
if (config) {
|
||||
try {
|
||||
return browserslist(config, { env, throwOnMissing: true });
|
||||
} catch (_err) {
|
||||
// Nothing, no `env` was found in browserslist, maybe input is `queries`
|
||||
}
|
||||
}
|
||||
|
||||
// browserslist:query
|
||||
if (env) {
|
||||
return browserslist(env);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -104,28 +91,6 @@ const resolve = (browsers) => {
|
|||
const anyBrowser = browsers.some((b) => /^(?!node)/.test(b));
|
||||
const browserProperty = !anyBrowser ? false : anyNode ? null : true;
|
||||
const nodeProperty = !anyNode ? false : anyBrowser ? null : true;
|
||||
// Internet Explorer Mobile, Blackberry browser and Opera Mini are very old browsers, they do not support new features
|
||||
const es6DynamicImport = rawChecker({
|
||||
/* eslint-disable camelcase */
|
||||
chrome: 63,
|
||||
and_chr: 63,
|
||||
edge: 79,
|
||||
firefox: 67,
|
||||
and_ff: 67,
|
||||
// ie: Not supported
|
||||
opera: 50,
|
||||
op_mob: 46,
|
||||
safari: [11, 1],
|
||||
ios_saf: [11, 3],
|
||||
samsung: [8, 2],
|
||||
android: 63,
|
||||
and_qq: [10, 4],
|
||||
baidu: [13, 18],
|
||||
and_uc: [15, 5],
|
||||
kaios: [3, 0],
|
||||
node: [12, 17]
|
||||
/* eslint-enable camelcase */
|
||||
});
|
||||
|
||||
return {
|
||||
/* eslint-disable camelcase */
|
||||
|
@ -188,9 +153,9 @@ const resolve = (browsers) => {
|
|||
ios_saf: 7,
|
||||
samsung: [3, 0],
|
||||
android: 38,
|
||||
// and_qq: Unknown support
|
||||
and_qq: [10, 4],
|
||||
// baidu: Unknown support
|
||||
// and_uc: Unknown support
|
||||
and_uc: [12, 12],
|
||||
kaios: [3, 0],
|
||||
node: [0, 12]
|
||||
}),
|
||||
|
@ -207,9 +172,9 @@ const resolve = (browsers) => {
|
|||
ios_saf: 8,
|
||||
samsung: [5, 0],
|
||||
android: 49,
|
||||
// and_qq: Unknown support
|
||||
and_qq: [10, 4],
|
||||
// baidu: Unknown support
|
||||
// and_uc: Unknown support
|
||||
and_uc: [12, 12],
|
||||
kaios: [2, 5],
|
||||
node: [6, 0]
|
||||
}),
|
||||
|
@ -253,8 +218,44 @@ const resolve = (browsers) => {
|
|||
kaios: [3, 0],
|
||||
node: [12, 17]
|
||||
}),
|
||||
dynamicImport: es6DynamicImport,
|
||||
dynamicImportInWorker: es6DynamicImport && !anyNode,
|
||||
dynamicImport: rawChecker({
|
||||
chrome: 63,
|
||||
and_chr: 63,
|
||||
edge: 79,
|
||||
firefox: 67,
|
||||
and_ff: 67,
|
||||
// ie: Not supported
|
||||
opera: 50,
|
||||
op_mob: 46,
|
||||
safari: [11, 1],
|
||||
ios_saf: [11, 3],
|
||||
samsung: [8, 2],
|
||||
android: 63,
|
||||
and_qq: [10, 4],
|
||||
baidu: [13, 18],
|
||||
and_uc: [15, 5],
|
||||
kaios: [3, 0],
|
||||
node: [12, 17]
|
||||
}),
|
||||
dynamicImportInWorker: rawChecker({
|
||||
chrome: 80,
|
||||
and_chr: 80,
|
||||
edge: 80,
|
||||
firefox: 114,
|
||||
and_ff: 114,
|
||||
// ie: Not supported
|
||||
opera: 67,
|
||||
op_mob: 57,
|
||||
safari: [15, 0],
|
||||
ios_saf: [15, 0],
|
||||
samsung: [13, 0],
|
||||
android: 80,
|
||||
and_qq: [10, 4],
|
||||
baidu: [13, 18],
|
||||
and_uc: [15, 5],
|
||||
kaios: [3, 0],
|
||||
node: [12, 17]
|
||||
}),
|
||||
// browserslist does not have info about globalThis
|
||||
// so this is based on mdn-browser-compat-data
|
||||
globalThis: rawChecker({
|
||||
|
@ -270,9 +271,9 @@ const resolve = (browsers) => {
|
|||
ios_saf: [12, 2],
|
||||
samsung: [10, 1],
|
||||
android: 71,
|
||||
// and_qq: Unknown support
|
||||
and_qq: [13, 1],
|
||||
// baidu: Unknown support
|
||||
// and_uc: Unknown support
|
||||
and_uc: [15, 5],
|
||||
kaios: [3, 0],
|
||||
node: 12
|
||||
}),
|
||||
|
@ -289,9 +290,9 @@ const resolve = (browsers) => {
|
|||
ios_saf: [13, 4],
|
||||
samsung: 13,
|
||||
android: 80,
|
||||
// and_qq: Not supported
|
||||
and_qq: [13, 1],
|
||||
// baidu: Not supported
|
||||
// and_uc: Not supported
|
||||
and_uc: [15, 5],
|
||||
kaios: [3, 0],
|
||||
node: 14
|
||||
}),
|
||||
|
@ -327,9 +328,9 @@ const resolve = (browsers) => {
|
|||
ios_saf: 11,
|
||||
samsung: [6, 2],
|
||||
android: 55,
|
||||
and_qq: [13, 1],
|
||||
and_qq: [10, 4],
|
||||
baidu: [13, 18],
|
||||
and_uc: [15, 5],
|
||||
and_uc: [12, 12],
|
||||
kaios: 3,
|
||||
node: [7, 6]
|
||||
}),
|
||||
|
@ -345,7 +346,7 @@ const resolve = (browsers) => {
|
|||
fetchWasm: browserProperty,
|
||||
global: nodeProperty,
|
||||
importScripts: false,
|
||||
importScriptsInWorker: true,
|
||||
importScriptsInWorker: Boolean(browserProperty),
|
||||
nodeBuiltins: nodeProperty,
|
||||
nodePrefixForCoreModules:
|
||||
nodeProperty &&
|
||||
|
|
|
@ -1326,8 +1326,13 @@ const applyOutputDefaults = (
|
|||
if (tp.importScripts) return "array-push";
|
||||
throw new Error(
|
||||
"For the selected environment is no default script chunk format available:\n" +
|
||||
"JSONP Array push can be chosen when 'document' or 'importScripts' is available.\n" +
|
||||
`CommonJs exports can be chosen when 'require' or node builtins are available.\n${
|
||||
`${
|
||||
tp.module
|
||||
? "Module ('module') can be chosen when ES modules are available (please set 'experiments.outputModule' and 'output.module' to `true`)"
|
||||
: ""
|
||||
}\n` +
|
||||
"JSONP Array push ('array-push') can be chosen when 'document' or 'importScripts' is available.\n" +
|
||||
`CommonJs exports ('commonjs') can be chosen when 'require' or node builtins are available.\n${
|
||||
helpMessage
|
||||
}`
|
||||
);
|
||||
|
|
|
@ -16,7 +16,7 @@ const getBrowserslistTargetHandler = memoize(() =>
|
|||
* @returns {string} default target
|
||||
*/
|
||||
const getDefaultTarget = (context) => {
|
||||
const browsers = getBrowserslistTargetHandler().load(null, context);
|
||||
const browsers = getBrowserslistTargetHandler().load(undefined, context);
|
||||
return browsers ? "browserslist" : "web";
|
||||
};
|
||||
|
||||
|
|
|
@ -115,7 +115,7 @@ class ImportMetaPlugin {
|
|||
new ModuleDependencyWarning(
|
||||
parser.state.module,
|
||||
new CriticalDependencyWarning(
|
||||
"Accessing import.meta directly is unsupported (only property access or destructuring is supported)"
|
||||
"'import.meta' cannot be used as a standalone expression. For static analysis, its properties must be accessed directly (e.g., 'import.meta.url') or through destructuring."
|
||||
),
|
||||
/** @type {DependencyLocation} */ (metaProperty.loc)
|
||||
)
|
||||
|
|
|
@ -106,7 +106,7 @@ const BasicEvaluatedExpression = require("./BasicEvaluatedExpression");
|
|||
/** @typedef {Set<DestructuringAssignmentProperty>} DestructuringAssignmentProperties */
|
||||
|
||||
// TODO remove cast when @types/estree has been updated to import assertions
|
||||
/** @typedef {import("estree").ImportExpression & { options?: Expression | null, phase?: "defer" }} ImportExpression */
|
||||
/** @typedef {import("estree").ImportExpression & { phase?: "defer" }} ImportExpression */
|
||||
|
||||
/** @type {string[]} */
|
||||
const EMPTY_ARRAY = [];
|
||||
|
|
|
@ -18,6 +18,11 @@ class Queue {
|
|||
* @type {Set<T>}
|
||||
*/
|
||||
this._set = new Set(items);
|
||||
/**
|
||||
* @private
|
||||
* @type {Iterator<T>}
|
||||
*/
|
||||
this._iterator = this._set[Symbol.iterator]();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -39,11 +44,16 @@ class Queue {
|
|||
|
||||
/**
|
||||
* Retrieves and removes the head of this queue.
|
||||
* @returns {T | undefined} The head of the queue of `undefined` if this queue is empty.
|
||||
* @returns {T | undefined} The head of the queue or `undefined` if this queue is empty.
|
||||
*/
|
||||
dequeue() {
|
||||
const result = this._set[Symbol.iterator]().next();
|
||||
if (result.done) return;
|
||||
let result = this._iterator.next();
|
||||
const isInvalidIterator = result.done && this._set.size > 0;
|
||||
if (isInvalidIterator) {
|
||||
this._iterator = this._set[Symbol.iterator]();
|
||||
result = this._iterator.next();
|
||||
}
|
||||
if (result.done) return undefined;
|
||||
this._set.delete(result.value);
|
||||
return result.value;
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
const memoize = require("./memoize");
|
||||
|
||||
/** @typedef {import("schema-utils").Schema} Schema */
|
||||
/** @typedef {import("schema-utils/declarations/validate").ValidationErrorConfiguration} ValidationErrorConfiguration */
|
||||
/** @typedef {import("schema-utils").ValidationErrorConfiguration} ValidationErrorConfiguration */
|
||||
|
||||
const getValidate = memoize(() => require("schema-utils").validate);
|
||||
|
||||
|
|
|
@ -26,15 +26,6 @@ const decoderOpts = {
|
|||
};
|
||||
|
||||
class WebAssemblyParser extends Parser {
|
||||
/**
|
||||
* @param {{}=} options parser options
|
||||
*/
|
||||
constructor(options) {
|
||||
super();
|
||||
this.hooks = Object.freeze({});
|
||||
this.options = options;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string | Buffer | PreparsedAst} source the source to parse
|
||||
* @param {ParserState} state the parser state
|
||||
|
|
|
@ -63,15 +63,6 @@ const decoderOpts = {
|
|||
};
|
||||
|
||||
class WebAssemblyParser extends Parser {
|
||||
/**
|
||||
* @param {{}=} options parser options
|
||||
*/
|
||||
constructor(options) {
|
||||
super();
|
||||
this.hooks = Object.freeze({});
|
||||
this.options = options;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string | Buffer | PreparsedAst} source the source to parse
|
||||
* @param {ParserState} state the parser state
|
||||
|
|
|
@ -69,7 +69,7 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
|||
if (options && options.baseUri) {
|
||||
return `${RuntimeGlobals.baseURI} = ${JSON.stringify(options.baseUri)};`;
|
||||
}
|
||||
return `${RuntimeGlobals.baseURI} = (document && document.baseURI) || self.location.href;`;
|
||||
return `${RuntimeGlobals.baseURI} = (typeof document !== 'undefined' && document.baseURI) || self.location.href;`;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
32
package.json
32
package.json
|
@ -89,7 +89,7 @@
|
|||
"@webassemblyjs/wasm-parser": "^1.14.1",
|
||||
"acorn": "^8.15.0",
|
||||
"acorn-import-phases": "^1.0.3",
|
||||
"browserslist": "^4.24.5",
|
||||
"browserslist": "^4.26.3",
|
||||
"chrome-trace-event": "^1.0.2",
|
||||
"enhanced-resolve": "^5.17.3",
|
||||
"es-module-lexer": "^1.2.1",
|
||||
|
@ -101,8 +101,8 @@
|
|||
"loader-runner": "^4.2.0",
|
||||
"mime-types": "^2.1.27",
|
||||
"neo-async": "^2.6.2",
|
||||
"schema-utils": "^4.3.2",
|
||||
"tapable": "^2.2.3",
|
||||
"schema-utils": "^4.3.3",
|
||||
"tapable": "^2.3.0",
|
||||
"terser-webpack-plugin": "^5.3.11",
|
||||
"watchpack": "^2.4.4",
|
||||
"webpack-sources": "^3.3.3"
|
||||
|
@ -111,16 +111,16 @@
|
|||
"@babel/core": "^7.27.1",
|
||||
"@babel/preset-react": "^7.27.1",
|
||||
"@codspeed/core": "^4.0.1",
|
||||
"@eslint/js": "^9.29.0",
|
||||
"@eslint/markdown": "^7.1.0",
|
||||
"@stylistic/eslint-plugin": "^5.2.2",
|
||||
"@eslint/js": "^9.36.0",
|
||||
"@eslint/markdown": "^7.3.0",
|
||||
"@stylistic/eslint-plugin": "^5.4.0",
|
||||
"@types/glob-to-regexp": "^0.4.4",
|
||||
"@types/graceful-fs": "^4.1.9",
|
||||
"@types/jest": "^30.0.0",
|
||||
"@types/mime-types": "^2.1.4",
|
||||
"@types/node": "^24.1.0",
|
||||
"@types/node": "^24.5.2",
|
||||
"@types/xxhashjs": "^0.2.4",
|
||||
"assemblyscript": "^0.28.5",
|
||||
"assemblyscript": "^0.28.8",
|
||||
"babel-loader": "^10.0.0",
|
||||
"bundle-loader": "^0.5.6",
|
||||
"coffee-loader": "^5.0.0",
|
||||
|
@ -131,13 +131,13 @@
|
|||
"date-fns": "^4.0.0",
|
||||
"es5-ext": "^0.10.53",
|
||||
"es6-promise-polyfill": "^1.2.0",
|
||||
"eslint": "^9.29.0",
|
||||
"eslint": "^9.36.0",
|
||||
"eslint-config-prettier": "^10.1.1",
|
||||
"eslint-config-webpack": "^4.5.1",
|
||||
"eslint-plugin-import": "^2.32.0",
|
||||
"eslint-plugin-jest": "^29.0.1",
|
||||
"eslint-plugin-jsdoc": "^51.2.3",
|
||||
"eslint-plugin-n": "^17.21.0",
|
||||
"eslint-plugin-n": "^17.23.1",
|
||||
"eslint-plugin-prettier": "^5.5.0",
|
||||
"eslint-plugin-unicorn": "^61.0.1",
|
||||
"file-loader": "^6.0.0",
|
||||
|
@ -146,11 +146,11 @@
|
|||
"hash-wasm": "^4.9.0",
|
||||
"husky": "^9.0.11",
|
||||
"istanbul": "^0.4.5",
|
||||
"jest": "^30.1.2",
|
||||
"jest-circus": "^30.1.2",
|
||||
"jest-cli": "^30.1.2",
|
||||
"jest-diff": "^30.1.2",
|
||||
"jest-environment-node": "^30.1.2",
|
||||
"jest": "^30.2.0",
|
||||
"jest-circus": "^30.2.0",
|
||||
"jest-cli": "^30.2.0",
|
||||
"jest-diff": "^30.2.0",
|
||||
"jest-environment-node": "^30.2.0",
|
||||
"jest-junit": "^16.0.0",
|
||||
"json-loader": "^0.5.7",
|
||||
"json5": "^2.1.3",
|
||||
|
@ -184,7 +184,7 @@
|
|||
"toml": "^3.0.0",
|
||||
"tooling": "webpack/tooling#v1.24.3",
|
||||
"ts-loader": "^9.5.1",
|
||||
"typescript": "^5.9.2",
|
||||
"typescript": "^5.9.3",
|
||||
"url-loader": "^4.1.0",
|
||||
"wast-loader": "^1.12.1",
|
||||
"webassembly-feature": "1.3.0",
|
||||
|
|
|
@ -2909,12 +2909,6 @@ describe("Targets", () => {
|
|||
- Expected
|
||||
+ Received
|
||||
|
||||
@@ ... @@
|
||||
- "dynamicImportInWorker": true,
|
||||
+ "dynamicImportInWorker": false,
|
||||
@@ ... @@
|
||||
- "dynamicImportInWorker": true,
|
||||
+ "dynamicImportInWorker": false,
|
||||
@@ ... @@
|
||||
- "target": "node12.17",
|
||||
+ "target": "browserslist: node 12.17",
|
||||
|
|
|
@ -31,6 +31,37 @@ Object {
|
|||
}
|
||||
`;
|
||||
|
||||
exports[`browserslist target ["and_chr 140","and_ff 142","and_qq 14.9","and_uc 15.5","android 140","chrome 140","chrome 139","chrome 138","chrome 137","chrome 112","chrome 109","chrome 105","edge 140","edge 139","edge 138","firefox 143","firefox 142","firefox 141","firefox 140","ios_saf 26.0","ios_saf 18.5-18.6","kaios 3.0-3.1","node 24.8.0","node 22.19.0","node 20.19.0","op_mob 80","opera 122","opera 121","opera 120","safari 26.0","safari 18.5-18.6","samsung 28","samsung 27"] 1`] = `
|
||||
Object {
|
||||
"arrowFunction": true,
|
||||
"asyncFunction": true,
|
||||
"bigIntLiteral": true,
|
||||
"browser": null,
|
||||
"const": true,
|
||||
"destructuring": true,
|
||||
"document": null,
|
||||
"dynamicImport": true,
|
||||
"dynamicImportInWorker": true,
|
||||
"electron": false,
|
||||
"fetchWasm": null,
|
||||
"forOf": true,
|
||||
"global": null,
|
||||
"globalThis": true,
|
||||
"importScripts": false,
|
||||
"importScriptsInWorker": false,
|
||||
"module": true,
|
||||
"node": null,
|
||||
"nodeBuiltins": null,
|
||||
"nodePrefixForCoreModules": null,
|
||||
"nwjs": false,
|
||||
"optionalChaining": true,
|
||||
"require": null,
|
||||
"templateLiteral": true,
|
||||
"web": null,
|
||||
"webworker": false,
|
||||
}
|
||||
`;
|
||||
|
||||
exports[`browserslist target ["and_ff 68"] 1`] = `
|
||||
Object {
|
||||
"arrowFunction": true,
|
||||
|
@ -41,7 +72,7 @@ Object {
|
|||
"destructuring": true,
|
||||
"document": true,
|
||||
"dynamicImport": true,
|
||||
"dynamicImportInWorker": true,
|
||||
"dynamicImportInWorker": false,
|
||||
"electron": false,
|
||||
"fetchWasm": true,
|
||||
"forOf": true,
|
||||
|
@ -65,17 +96,17 @@ Object {
|
|||
exports[`browserslist target ["and_qq 10.4"] 1`] = `
|
||||
Object {
|
||||
"arrowFunction": true,
|
||||
"asyncFunction": false,
|
||||
"asyncFunction": true,
|
||||
"bigIntLiteral": false,
|
||||
"browser": true,
|
||||
"const": true,
|
||||
"destructuring": false,
|
||||
"destructuring": true,
|
||||
"document": true,
|
||||
"dynamicImport": true,
|
||||
"dynamicImportInWorker": true,
|
||||
"electron": false,
|
||||
"fetchWasm": true,
|
||||
"forOf": false,
|
||||
"forOf": true,
|
||||
"global": false,
|
||||
"globalThis": false,
|
||||
"importScripts": false,
|
||||
|
@ -93,37 +124,6 @@ Object {
|
|||
}
|
||||
`;
|
||||
|
||||
exports[`browserslist target ["and_uc 12.12"] 1`] = `
|
||||
Object {
|
||||
"arrowFunction": true,
|
||||
"asyncFunction": false,
|
||||
"bigIntLiteral": false,
|
||||
"browser": true,
|
||||
"const": true,
|
||||
"destructuring": false,
|
||||
"document": true,
|
||||
"dynamicImport": false,
|
||||
"dynamicImportInWorker": false,
|
||||
"electron": false,
|
||||
"fetchWasm": true,
|
||||
"forOf": false,
|
||||
"global": false,
|
||||
"globalThis": false,
|
||||
"importScripts": false,
|
||||
"importScriptsInWorker": true,
|
||||
"module": false,
|
||||
"node": false,
|
||||
"nodeBuiltins": false,
|
||||
"nodePrefixForCoreModules": false,
|
||||
"nwjs": false,
|
||||
"optionalChaining": false,
|
||||
"require": false,
|
||||
"templateLiteral": true,
|
||||
"web": true,
|
||||
"webworker": false,
|
||||
}
|
||||
`;
|
||||
|
||||
exports[`browserslist target ["android 4"] 1`] = `
|
||||
Object {
|
||||
"arrowFunction": false,
|
||||
|
@ -320,14 +320,45 @@ Object {
|
|||
"destructuring": true,
|
||||
"document": null,
|
||||
"dynamicImport": true,
|
||||
"dynamicImportInWorker": false,
|
||||
"dynamicImportInWorker": true,
|
||||
"electron": false,
|
||||
"fetchWasm": null,
|
||||
"forOf": true,
|
||||
"global": null,
|
||||
"globalThis": true,
|
||||
"importScripts": false,
|
||||
"importScriptsInWorker": true,
|
||||
"importScriptsInWorker": false,
|
||||
"module": true,
|
||||
"node": null,
|
||||
"nodeBuiltins": null,
|
||||
"nodePrefixForCoreModules": null,
|
||||
"nwjs": false,
|
||||
"optionalChaining": false,
|
||||
"require": null,
|
||||
"templateLiteral": true,
|
||||
"web": null,
|
||||
"webworker": false,
|
||||
}
|
||||
`;
|
||||
|
||||
exports[`browserslist target ["chrome 80","node 13.12.0"] 1`] = `
|
||||
Object {
|
||||
"arrowFunction": true,
|
||||
"asyncFunction": true,
|
||||
"bigIntLiteral": true,
|
||||
"browser": null,
|
||||
"const": true,
|
||||
"destructuring": true,
|
||||
"document": null,
|
||||
"dynamicImport": true,
|
||||
"dynamicImportInWorker": true,
|
||||
"electron": false,
|
||||
"fetchWasm": null,
|
||||
"forOf": true,
|
||||
"global": null,
|
||||
"globalThis": true,
|
||||
"importScripts": false,
|
||||
"importScriptsInWorker": false,
|
||||
"module": true,
|
||||
"node": null,
|
||||
"nodeBuiltins": null,
|
||||
|
@ -382,7 +413,7 @@ Object {
|
|||
"destructuring": true,
|
||||
"document": true,
|
||||
"dynamicImport": true,
|
||||
"dynamicImportInWorker": true,
|
||||
"dynamicImportInWorker": false,
|
||||
"electron": false,
|
||||
"fetchWasm": true,
|
||||
"forOf": true,
|
||||
|
@ -413,7 +444,7 @@ Object {
|
|||
"destructuring": true,
|
||||
"document": true,
|
||||
"dynamicImport": true,
|
||||
"dynamicImportInWorker": true,
|
||||
"dynamicImportInWorker": false,
|
||||
"electron": false,
|
||||
"fetchWasm": true,
|
||||
"forOf": true,
|
||||
|
@ -444,7 +475,7 @@ Object {
|
|||
"destructuring": true,
|
||||
"document": true,
|
||||
"dynamicImport": true,
|
||||
"dynamicImportInWorker": true,
|
||||
"dynamicImportInWorker": false,
|
||||
"electron": false,
|
||||
"fetchWasm": true,
|
||||
"forOf": true,
|
||||
|
@ -537,7 +568,7 @@ Object {
|
|||
"destructuring": true,
|
||||
"document": true,
|
||||
"dynamicImport": true,
|
||||
"dynamicImportInWorker": true,
|
||||
"dynamicImportInWorker": false,
|
||||
"electron": false,
|
||||
"fetchWasm": true,
|
||||
"forOf": true,
|
||||
|
@ -606,7 +637,7 @@ Object {
|
|||
"global": true,
|
||||
"globalThis": false,
|
||||
"importScripts": false,
|
||||
"importScriptsInWorker": true,
|
||||
"importScriptsInWorker": false,
|
||||
"module": false,
|
||||
"node": true,
|
||||
"nodeBuiltins": true,
|
||||
|
@ -637,7 +668,7 @@ Object {
|
|||
"global": true,
|
||||
"globalThis": false,
|
||||
"importScripts": false,
|
||||
"importScriptsInWorker": true,
|
||||
"importScriptsInWorker": false,
|
||||
"module": false,
|
||||
"node": true,
|
||||
"nodeBuiltins": true,
|
||||
|
@ -668,7 +699,7 @@ Object {
|
|||
"global": true,
|
||||
"globalThis": false,
|
||||
"importScripts": false,
|
||||
"importScriptsInWorker": true,
|
||||
"importScriptsInWorker": false,
|
||||
"module": false,
|
||||
"node": true,
|
||||
"nodeBuiltins": true,
|
||||
|
@ -699,7 +730,7 @@ Object {
|
|||
"global": true,
|
||||
"globalThis": false,
|
||||
"importScripts": false,
|
||||
"importScriptsInWorker": true,
|
||||
"importScriptsInWorker": false,
|
||||
"module": false,
|
||||
"node": true,
|
||||
"nodeBuiltins": true,
|
||||
|
@ -723,14 +754,45 @@ Object {
|
|||
"destructuring": true,
|
||||
"document": false,
|
||||
"dynamicImport": true,
|
||||
"dynamicImportInWorker": false,
|
||||
"dynamicImportInWorker": true,
|
||||
"electron": false,
|
||||
"fetchWasm": false,
|
||||
"forOf": true,
|
||||
"global": true,
|
||||
"globalThis": true,
|
||||
"importScripts": false,
|
||||
"importScriptsInWorker": true,
|
||||
"importScriptsInWorker": false,
|
||||
"module": true,
|
||||
"node": true,
|
||||
"nodeBuiltins": true,
|
||||
"nodePrefixForCoreModules": false,
|
||||
"nwjs": false,
|
||||
"optionalChaining": false,
|
||||
"require": true,
|
||||
"templateLiteral": true,
|
||||
"web": false,
|
||||
"webworker": false,
|
||||
}
|
||||
`;
|
||||
|
||||
exports[`browserslist target ["node 13.12.0"] 1`] = `
|
||||
Object {
|
||||
"arrowFunction": true,
|
||||
"asyncFunction": true,
|
||||
"bigIntLiteral": true,
|
||||
"browser": false,
|
||||
"const": true,
|
||||
"destructuring": true,
|
||||
"document": false,
|
||||
"dynamicImport": true,
|
||||
"dynamicImportInWorker": true,
|
||||
"electron": false,
|
||||
"fetchWasm": false,
|
||||
"forOf": true,
|
||||
"global": true,
|
||||
"globalThis": true,
|
||||
"importScripts": false,
|
||||
"importScriptsInWorker": false,
|
||||
"module": true,
|
||||
"node": true,
|
||||
"nodeBuiltins": true,
|
||||
|
@ -785,7 +847,7 @@ Object {
|
|||
"destructuring": true,
|
||||
"document": true,
|
||||
"dynamicImport": true,
|
||||
"dynamicImportInWorker": true,
|
||||
"dynamicImportInWorker": false,
|
||||
"electron": false,
|
||||
"fetchWasm": true,
|
||||
"forOf": true,
|
||||
|
@ -816,7 +878,7 @@ Object {
|
|||
"destructuring": true,
|
||||
"document": true,
|
||||
"dynamicImport": true,
|
||||
"dynamicImportInWorker": true,
|
||||
"dynamicImportInWorker": false,
|
||||
"electron": false,
|
||||
"fetchWasm": true,
|
||||
"forOf": true,
|
||||
|
@ -909,7 +971,7 @@ Object {
|
|||
"destructuring": true,
|
||||
"document": true,
|
||||
"dynamicImport": true,
|
||||
"dynamicImportInWorker": true,
|
||||
"dynamicImportInWorker": false,
|
||||
"electron": false,
|
||||
"fetchWasm": true,
|
||||
"forOf": true,
|
||||
|
@ -940,7 +1002,7 @@ Object {
|
|||
"destructuring": true,
|
||||
"document": true,
|
||||
"dynamicImport": true,
|
||||
"dynamicImportInWorker": true,
|
||||
"dynamicImportInWorker": false,
|
||||
"electron": false,
|
||||
"fetchWasm": true,
|
||||
"forOf": true,
|
||||
|
@ -971,7 +1033,7 @@ Object {
|
|||
"destructuring": true,
|
||||
"document": true,
|
||||
"dynamicImport": true,
|
||||
"dynamicImportInWorker": true,
|
||||
"dynamicImportInWorker": false,
|
||||
"electron": false,
|
||||
"fetchWasm": true,
|
||||
"forOf": true,
|
||||
|
@ -1064,7 +1126,7 @@ Object {
|
|||
"destructuring": true,
|
||||
"document": true,
|
||||
"dynamicImport": true,
|
||||
"dynamicImportInWorker": true,
|
||||
"dynamicImportInWorker": false,
|
||||
"electron": false,
|
||||
"fetchWasm": true,
|
||||
"forOf": true,
|
||||
|
@ -1095,7 +1157,7 @@ Object {
|
|||
"destructuring": true,
|
||||
"document": true,
|
||||
"dynamicImport": true,
|
||||
"dynamicImportInWorker": true,
|
||||
"dynamicImportInWorker": false,
|
||||
"electron": false,
|
||||
"fetchWasm": true,
|
||||
"forOf": true,
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
"use strict";
|
||||
|
||||
module.exports = [[/Critical dependency: Accessing import\.meta/]];
|
||||
module.exports = [
|
||||
[
|
||||
/Critical dependency: 'import\.meta' cannot be used as a standalone expression\. For static analysis, its properties must be accessed directly \(e\.g\., 'import\.meta\.url'\) or through destructuring\./
|
||||
]
|
||||
];
|
||||
|
|
|
@ -2,6 +2,6 @@
|
|||
|
||||
module.exports = [
|
||||
[
|
||||
/Accessing import.meta directly is unsupported \(only property access or destructuring is supported\)/
|
||||
/'import\.meta' cannot be used as a standalone expression\. For static analysis, its properties must be accessed directly \(e\.g\., 'import\.meta\.url'\) or through destructuring\./
|
||||
]
|
||||
];
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
extends browserslist-config-mycompany
|
|
@ -0,0 +1 @@
|
|||
it("should compile and run the test", function() {});
|
|
@ -0,0 +1,37 @@
|
|||
"use strict";
|
||||
|
||||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
|
||||
const rootPath = path.resolve(__dirname, "../../../../");
|
||||
const rootNodeModules = path.resolve(rootPath, "./node_modules");
|
||||
const browserslistPackage = path.resolve(
|
||||
rootNodeModules,
|
||||
"browserslist-config-mycompany"
|
||||
);
|
||||
const content = `
|
||||
module.exports = {
|
||||
development: [
|
||||
'last 1 version'
|
||||
],
|
||||
production: [
|
||||
'ie 9',
|
||||
]
|
||||
}
|
||||
`;
|
||||
const browserslistFile = path.resolve(browserslistPackage, "./index.js");
|
||||
|
||||
try {
|
||||
fs.mkdirSync(browserslistPackage);
|
||||
} catch (_err) {
|
||||
// Nothing
|
||||
}
|
||||
|
||||
fs.writeFileSync(browserslistFile, content);
|
||||
|
||||
module.exports = {
|
||||
afterExecute() {
|
||||
fs.unlinkSync(browserslistFile);
|
||||
fs.rmdirSync(browserslistPackage);
|
||||
}
|
||||
};
|
|
@ -0,0 +1,43 @@
|
|||
"use strict";
|
||||
|
||||
const path = require("path");
|
||||
|
||||
/** @type {import("../../../../").Configuration} */
|
||||
module.exports = {
|
||||
target: `browserslist:${path.join(__dirname, ".browserslistrc")}:production`,
|
||||
plugins: [
|
||||
(compiler) => {
|
||||
compiler.hooks.compilation.tap("Test", (compilation) => {
|
||||
expect(compilation.outputOptions.environment).toMatchInlineSnapshot(`
|
||||
Object {
|
||||
"arrowFunction": false,
|
||||
"asyncFunction": false,
|
||||
"bigIntLiteral": false,
|
||||
"const": false,
|
||||
"destructuring": false,
|
||||
"document": true,
|
||||
"dynamicImport": false,
|
||||
"dynamicImportInWorker": false,
|
||||
"forOf": false,
|
||||
"globalThis": false,
|
||||
"module": false,
|
||||
"nodePrefixForCoreModules": false,
|
||||
"optionalChaining": false,
|
||||
"templateLiteral": false,
|
||||
}
|
||||
`);
|
||||
expect(compilation.options.externalsPresets).toMatchInlineSnapshot(`
|
||||
Object {
|
||||
"electron": false,
|
||||
"electronMain": false,
|
||||
"electronPreload": false,
|
||||
"electronRenderer": false,
|
||||
"node": false,
|
||||
"nwjs": false,
|
||||
"web": true,
|
||||
}
|
||||
`);
|
||||
});
|
||||
}
|
||||
]
|
||||
};
|
|
@ -0,0 +1 @@
|
|||
extends browserslist-config-mycompany1
|
|
@ -0,0 +1 @@
|
|||
it("should compile and run the test", function() {});
|
|
@ -0,0 +1,38 @@
|
|||
"use strict";
|
||||
|
||||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
|
||||
const rootPath = path.resolve(__dirname, "../../../../");
|
||||
const rootNodeModules = path.resolve(rootPath, "./node_modules");
|
||||
const browserslistPackage = path.resolve(
|
||||
rootNodeModules,
|
||||
"browserslist-config-mycompany1"
|
||||
);
|
||||
const content = `
|
||||
module.exports = {
|
||||
development: [
|
||||
'last 1 version'
|
||||
],
|
||||
// We are in tests, so 'process.env.NODE_ENV' has the 'test' value (browserslist respects the 'process.env.NODE_ENV' value)
|
||||
test: [
|
||||
'ie 9',
|
||||
]
|
||||
}
|
||||
`;
|
||||
const browserslistFile = path.resolve(browserslistPackage, "./index.js");
|
||||
|
||||
try {
|
||||
fs.mkdirSync(browserslistPackage);
|
||||
} catch (_err) {
|
||||
// Nothing
|
||||
}
|
||||
|
||||
fs.writeFileSync(browserslistFile, content);
|
||||
|
||||
module.exports = {
|
||||
afterExecute() {
|
||||
fs.unlinkSync(browserslistFile);
|
||||
fs.rmdirSync(browserslistPackage);
|
||||
}
|
||||
};
|
|
@ -0,0 +1,43 @@
|
|||
"use strict";
|
||||
|
||||
const path = require("path");
|
||||
|
||||
/** @type {import("../../../../").Configuration} */
|
||||
module.exports = {
|
||||
target: `browserslist:${path.join(__dirname, ".browserslistrc")}`,
|
||||
plugins: [
|
||||
(compiler) => {
|
||||
compiler.hooks.compilation.tap("Test", (compilation) => {
|
||||
expect(compilation.outputOptions.environment).toMatchInlineSnapshot(`
|
||||
Object {
|
||||
"arrowFunction": false,
|
||||
"asyncFunction": false,
|
||||
"bigIntLiteral": false,
|
||||
"const": false,
|
||||
"destructuring": false,
|
||||
"document": true,
|
||||
"dynamicImport": false,
|
||||
"dynamicImportInWorker": false,
|
||||
"forOf": false,
|
||||
"globalThis": false,
|
||||
"module": false,
|
||||
"nodePrefixForCoreModules": false,
|
||||
"optionalChaining": false,
|
||||
"templateLiteral": false,
|
||||
}
|
||||
`);
|
||||
expect(compilation.options.externalsPresets).toMatchInlineSnapshot(`
|
||||
Object {
|
||||
"electron": false,
|
||||
"electronMain": false,
|
||||
"electronPreload": false,
|
||||
"electronRenderer": false,
|
||||
"node": false,
|
||||
"nwjs": false,
|
||||
"web": true,
|
||||
}
|
||||
`);
|
||||
});
|
||||
}
|
||||
]
|
||||
};
|
|
@ -0,0 +1 @@
|
|||
it("should compile and run the test", function() {});
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"browserslist": {
|
||||
"development": [
|
||||
"last 1 version"
|
||||
],
|
||||
"production": [
|
||||
"ie 9"
|
||||
]
|
||||
}
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
"use strict";
|
||||
|
||||
/** @type {import("../../../../").Configuration} */
|
||||
module.exports = {
|
||||
target: "browserslist:production",
|
||||
plugins: [
|
||||
(compiler) => {
|
||||
compiler.hooks.compilation.tap("Test", (compilation) => {
|
||||
expect(compilation.outputOptions.environment).toMatchInlineSnapshot(`
|
||||
Object {
|
||||
"arrowFunction": false,
|
||||
"asyncFunction": false,
|
||||
"bigIntLiteral": false,
|
||||
"const": false,
|
||||
"destructuring": false,
|
||||
"document": true,
|
||||
"dynamicImport": false,
|
||||
"dynamicImportInWorker": false,
|
||||
"forOf": false,
|
||||
"globalThis": false,
|
||||
"module": false,
|
||||
"nodePrefixForCoreModules": false,
|
||||
"optionalChaining": false,
|
||||
"templateLiteral": false,
|
||||
}
|
||||
`);
|
||||
expect(compilation.options.externalsPresets).toMatchInlineSnapshot(`
|
||||
Object {
|
||||
"electron": false,
|
||||
"electronMain": false,
|
||||
"electronPreload": false,
|
||||
"electronRenderer": false,
|
||||
"node": false,
|
||||
"nwjs": false,
|
||||
"web": true,
|
||||
}
|
||||
`);
|
||||
});
|
||||
}
|
||||
]
|
||||
};
|
|
@ -0,0 +1 @@
|
|||
it("should compile and run the test", function() {});
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"browserslist": [
|
||||
"extends browserslist-config-mycompany2"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
"use strict";
|
||||
|
||||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
|
||||
const rootPath = path.resolve(__dirname, "../../../../");
|
||||
const rootNodeModules = path.resolve(rootPath, "./node_modules");
|
||||
const browserslistPackage = path.resolve(
|
||||
rootNodeModules,
|
||||
"browserslist-config-mycompany2"
|
||||
);
|
||||
const content = `
|
||||
module.exports = {
|
||||
development: [
|
||||
'last 1 version'
|
||||
],
|
||||
// We are in tests, so 'process.env.NODE_ENV' has the 'test' value (browserslist respects the 'process.env.NODE_ENV' value)
|
||||
test: [
|
||||
'ie 9',
|
||||
]
|
||||
}
|
||||
`;
|
||||
const browserslistFile = path.resolve(browserslistPackage, "./index.js");
|
||||
|
||||
try {
|
||||
fs.mkdirSync(browserslistPackage);
|
||||
} catch (_err) {
|
||||
// Nothing
|
||||
}
|
||||
|
||||
fs.writeFileSync(browserslistFile, content);
|
||||
|
||||
module.exports = {
|
||||
afterExecute() {
|
||||
fs.unlinkSync(browserslistFile);
|
||||
fs.rmdirSync(browserslistPackage);
|
||||
}
|
||||
};
|
|
@ -0,0 +1,41 @@
|
|||
"use strict";
|
||||
|
||||
/** @type {import("../../../../").Configuration} */
|
||||
module.exports = {
|
||||
target: "browserslist",
|
||||
plugins: [
|
||||
(compiler) => {
|
||||
compiler.hooks.compilation.tap("Test", (compilation) => {
|
||||
expect(compilation.outputOptions.environment).toMatchInlineSnapshot(`
|
||||
Object {
|
||||
"arrowFunction": false,
|
||||
"asyncFunction": false,
|
||||
"bigIntLiteral": false,
|
||||
"const": false,
|
||||
"destructuring": false,
|
||||
"document": true,
|
||||
"dynamicImport": false,
|
||||
"dynamicImportInWorker": false,
|
||||
"forOf": false,
|
||||
"globalThis": false,
|
||||
"module": false,
|
||||
"nodePrefixForCoreModules": false,
|
||||
"optionalChaining": false,
|
||||
"templateLiteral": false,
|
||||
}
|
||||
`);
|
||||
expect(compilation.options.externalsPresets).toMatchInlineSnapshot(`
|
||||
Object {
|
||||
"electron": false,
|
||||
"electronMain": false,
|
||||
"electronPreload": false,
|
||||
"electronRenderer": false,
|
||||
"node": false,
|
||||
"nwjs": false,
|
||||
"web": true,
|
||||
}
|
||||
`);
|
||||
});
|
||||
}
|
||||
]
|
||||
};
|
|
@ -0,0 +1 @@
|
|||
it("should compile and run the test", function() {});
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"browserslist": {
|
||||
"development": [
|
||||
"last 1 version"
|
||||
],
|
||||
"production": [
|
||||
"ie 9"
|
||||
]
|
||||
}
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
"use strict";
|
||||
|
||||
/** @type {import("../../../../").Configuration} */
|
||||
module.exports = {
|
||||
target: "browserslist:maintained node versions",
|
||||
plugins: [
|
||||
(compiler) => {
|
||||
compiler.hooks.compilation.tap("Test", (compilation) => {
|
||||
expect(compilation.outputOptions.environment).toMatchInlineSnapshot(`
|
||||
Object {
|
||||
"arrowFunction": true,
|
||||
"asyncFunction": true,
|
||||
"bigIntLiteral": true,
|
||||
"const": true,
|
||||
"destructuring": true,
|
||||
"document": false,
|
||||
"dynamicImport": true,
|
||||
"dynamicImportInWorker": true,
|
||||
"forOf": true,
|
||||
"globalThis": true,
|
||||
"module": true,
|
||||
"nodePrefixForCoreModules": true,
|
||||
"optionalChaining": true,
|
||||
"templateLiteral": true,
|
||||
}
|
||||
`);
|
||||
expect(compilation.options.externalsPresets).toMatchInlineSnapshot(`
|
||||
Object {
|
||||
"electron": false,
|
||||
"electronMain": false,
|
||||
"electronPreload": false,
|
||||
"electronRenderer": false,
|
||||
"node": true,
|
||||
"nwjs": false,
|
||||
"web": false,
|
||||
}
|
||||
`);
|
||||
});
|
||||
}
|
||||
]
|
||||
};
|
|
@ -15,7 +15,7 @@ module.exports = {
|
|||
"destructuring": true,
|
||||
"document": false,
|
||||
"dynamicImport": true,
|
||||
"dynamicImportInWorker": false,
|
||||
"dynamicImportInWorker": true,
|
||||
"forOf": true,
|
||||
"globalThis": true,
|
||||
"module": true,
|
||||
|
|
|
@ -3,7 +3,7 @@ import * as style from "./style.css";
|
|||
import * as text1 from "./text-with-bom.txt";
|
||||
import * as text2 from "./test-without-bom.text";
|
||||
|
||||
it("should remove BOM", function() {
|
||||
it("should remove BOM", async function() {
|
||||
const url = new URL("./resource-with-bom.ext", import.meta.url);
|
||||
|
||||
expect(mod).toBeDefined();
|
||||
|
@ -13,7 +13,7 @@ it("should remove BOM", function() {
|
|||
expect(url).toBeDefined();
|
||||
|
||||
const module = "module.js"
|
||||
const modules = import("./dir/" + module);
|
||||
const modules = await import("./dir/" + module);
|
||||
|
||||
expect(modules).toBeDefined();
|
||||
});
|
||||
|
|
|
@ -4,6 +4,9 @@ const fs = require("fs");
|
|||
const path = require("path");
|
||||
|
||||
module.exports = {
|
||||
findBundle() {
|
||||
return ["dir_module_js.bundle0.js", "bundle0.js"];
|
||||
},
|
||||
afterExecute(options) {
|
||||
const outputPath = options.output.path;
|
||||
const files = fs.readdirSync(outputPath);
|
||||
|
|
|
@ -6,6 +6,9 @@ module.exports = {
|
|||
output: {
|
||||
assetModuleFilename: "[name][ext]"
|
||||
},
|
||||
optimization: {
|
||||
chunkIds: "named"
|
||||
},
|
||||
module: {
|
||||
rules: [
|
||||
{
|
||||
|
|
|
@ -1,27 +1,39 @@
|
|||
it("should set fetchPriority", () => {
|
||||
import(/* webpackFetchPriority: "high" */ "./a");
|
||||
function abortable(fn) {
|
||||
return new Promise((resolve) => {
|
||||
const timeoutId = setTimeout(() => {
|
||||
fn = undefined;
|
||||
resolve('Promise resolved after delay');
|
||||
clearTimeout(timeoutId);
|
||||
}, 1000);
|
||||
|
||||
return fn();
|
||||
});
|
||||
}
|
||||
|
||||
it("should set fetchPriority", async () => {
|
||||
abortable(() => import(/* webpackFetchPriority: "high" */ "./a"));
|
||||
expect(document.head._children).toHaveLength(4);
|
||||
const script1 = document.head._children[2];
|
||||
expect(script1._attributes.fetchpriority).toBe("high");
|
||||
|
||||
import(/* webpackFetchPriority: "low" */ "./b");
|
||||
abortable(() => import(/* webpackFetchPriority: "low" */ "./b"));
|
||||
expect(document.head._children).toHaveLength(5);
|
||||
const script2 = document.head._children[4];
|
||||
expect(script2._attributes.fetchpriority).toBe("low");
|
||||
|
||||
import(/* webpackFetchPriority: "low" */ "./c");
|
||||
abortable(() => import(/* webpackFetchPriority: "low" */ "./c"));
|
||||
expect(document.head._children).toHaveLength(6);
|
||||
const script3 = document.head._children[5];
|
||||
expect(script3._attributes.fetchpriority).toBe("low");
|
||||
|
||||
import(/* webpackPrefetch: 20, webpackFetchPriority: "auto" */ "./c");
|
||||
abortable(() => import(/* webpackPrefetch: 20, webpackFetchPriority: "auto" */ "./c"));
|
||||
|
||||
import("./d")
|
||||
abortable(() => import("./d"))
|
||||
expect(document.head._children).toHaveLength(7);
|
||||
const script4 = document.head._children[6];
|
||||
expect(script4._attributes.fetchpriority).toBeUndefined();
|
||||
|
||||
import(/* webpackPrefetch: -20 */ "./d3");
|
||||
abortable(() => import(/* webpackPrefetch: -20 */ "./d3"));
|
||||
expect(document.head._children).toHaveLength(8);
|
||||
const script5 = document.head._children[7];
|
||||
expect(script5._attributes.fetchpriority).toBeUndefined();
|
||||
|
@ -29,12 +41,12 @@ it("should set fetchPriority", () => {
|
|||
const condition = true;
|
||||
|
||||
if (!condition) {
|
||||
import(/* webpackFetchPriority: "high", webpackChunkName: "one" */ "./e");
|
||||
abortable( () => import(/* webpackFetchPriority: "high", webpackChunkName: "one" */ "./e"));
|
||||
expect(document.head._children).toHaveLength(9);
|
||||
const script6 = document.head._children[8];
|
||||
expect(script6._attributes.fetchpriority).toBe("high");
|
||||
} else {
|
||||
import(/* webpackFetchPriority: "low", webpackChunkName: "two" */ "./e");
|
||||
abortable(() => import(/* webpackFetchPriority: "low", webpackChunkName: "two" */ "./e"));
|
||||
expect(document.head._children).toHaveLength(9);
|
||||
const script6 = document.head._children[8];
|
||||
expect(script6._attributes.fetchpriority).toBe("low");
|
||||
|
|
|
@ -1,13 +1,25 @@
|
|||
function abortable(fn) {
|
||||
return new Promise((resolve) => {
|
||||
const timeoutId = setTimeout(() => {
|
||||
fn = undefined;
|
||||
resolve('Promise resolved after delay');
|
||||
clearTimeout(timeoutId);
|
||||
}, 1000);
|
||||
|
||||
return fn();
|
||||
});
|
||||
}
|
||||
|
||||
it("should set fetchPriority", () => {
|
||||
// Single Chunk
|
||||
import(/* webpackFetchPriority: "high" */ "./a");
|
||||
abortable(() => import(/* webpackFetchPriority: "high" */ "./a"));
|
||||
expect(document.head._children).toHaveLength(1);
|
||||
const script1 = document.head._children[0];
|
||||
expect(script1._attributes.fetchpriority).toBe("high");
|
||||
|
||||
// Multiple Chunks
|
||||
import(/* webpackFetchPriority: "high" */ "./b");
|
||||
import(/* webpackFetchPriority: "high" */ "./b2");
|
||||
abortable(() => import(/* webpackFetchPriority: "high" */ "./b"));
|
||||
abortable(() => import(/* webpackFetchPriority: "high" */ "./b2"));
|
||||
expect(document.head._children).toHaveLength(4);
|
||||
const script2 = document.head._children[1];
|
||||
const script3 = document.head._children[2];
|
||||
|
@ -17,19 +29,19 @@ it("should set fetchPriority", () => {
|
|||
expect(script4._attributes.fetchpriority).toBe("high");
|
||||
|
||||
// Single Chunk, low
|
||||
import(/* webpackFetchPriority: "low" */ "./c");
|
||||
abortable(() => import(/* webpackFetchPriority: "low" */ "./c"));
|
||||
expect(document.head._children).toHaveLength(5);
|
||||
const script5 = document.head._children[4];
|
||||
expect(script5._attributes.fetchpriority).toBe("low");
|
||||
|
||||
// Single Chunk, auto
|
||||
import(/* webpackFetchPriority: "auto" */ "./d");
|
||||
abortable(() => import(/* webpackFetchPriority: "auto" */ "./d"));
|
||||
expect(document.head._children).toHaveLength(6);
|
||||
const script6 = document.head._children[5];
|
||||
expect(script6._attributes.fetchpriority).toBe("auto");
|
||||
|
||||
// No fetch priority
|
||||
import("./e");
|
||||
abortable(() => import("./e"));
|
||||
expect(document.head._children).toHaveLength(7);
|
||||
const script7 = document.head._children[6];
|
||||
expect(script7._attributes.fetchpriority).toBeUndefined();
|
||||
|
@ -44,49 +56,49 @@ it("should set fetchPriority", () => {
|
|||
const script8 = document.head._children[7];
|
||||
expect(script8._attributes.fetchpriority).toBeUndefined();
|
||||
|
||||
import(/* webpackFetchPriority: "auto" */ "./g");
|
||||
abortable(() => import(/* webpackFetchPriority: "auto" */ "./g"));
|
||||
expect(document.head._children).toHaveLength(9);
|
||||
const script9 = document.head._children[8];
|
||||
expect(script9._attributes.fetchpriority).toBe("auto");
|
||||
|
||||
import(/* webpackFetchPriority: "unknown" */ "./h.js");
|
||||
abortable(() => import(/* webpackFetchPriority: "unknown" */ "./h.js"));
|
||||
expect(document.head._children).toHaveLength(10);
|
||||
const script10 = document.head._children[9];
|
||||
expect(script10._attributes.fetchpriority).toBeUndefined();
|
||||
|
||||
import(/* webpackFetchPriority: "high" */ "./i");
|
||||
import(/* webpackFetchPriority: "low" */ "./i");
|
||||
abortable(() => import(/* webpackFetchPriority: "high" */ "./i"));
|
||||
abortable(() => import(/* webpackFetchPriority: "low" */ "./i"));
|
||||
expect(document.head._children).toHaveLength(11);
|
||||
const script11 = document.head._children[10];
|
||||
expect(script11._attributes.fetchpriority).toBe("high");
|
||||
|
||||
import(/* webpackFetchPriority: "low" */ "./j");
|
||||
import(/* webpackFetchPriority: "high" */ "./j");
|
||||
abortable(() => import(/* webpackFetchPriority: "low" */ "./j"));
|
||||
abortable(() => import(/* webpackFetchPriority: "high" */ "./j"));
|
||||
expect(document.head._children).toHaveLength(12);
|
||||
const script12 = document.head._children[11];
|
||||
|
||||
expect(script12._attributes.fetchpriority).toBe("low");
|
||||
import(/* webpackFetchPriority: "low" */ "./k");
|
||||
import("./e");
|
||||
import(/* webpackFetchPriority: "high" */ "./k");
|
||||
expect(document.head._children).toHaveLength(13);
|
||||
abortable(() => import(/* webpackFetchPriority: "low" */ "./k"));
|
||||
abortable(() => import("./e"));
|
||||
abortable(() => import(/* webpackFetchPriority: "high" */ "./k"));
|
||||
abortable(() => expect(document.head._children).toHaveLength(13));
|
||||
const script13 = document.head._children[12];
|
||||
expect(script13._attributes.fetchpriority).toBe("low");
|
||||
|
||||
__non_webpack_require__("./125.js");
|
||||
import(/* webpackFetchPriority: "high" */ "./style.css");
|
||||
abortable(() => import(/* webpackFetchPriority: "high" */ "./style.css"));
|
||||
expect(document.head._children).toHaveLength(14);
|
||||
const link1 = document.head._children[13];
|
||||
expect(link1._attributes.fetchpriority).toBe("high");
|
||||
|
||||
__non_webpack_require__("./499.js");
|
||||
import("./style-1.css");
|
||||
abortable(() => import("./style-1.css"));
|
||||
expect(document.head._children).toHaveLength(15);
|
||||
const link2 = document.head._children[14];
|
||||
expect(link2._attributes.fetchpriority).toBeUndefined();
|
||||
|
||||
__non_webpack_require__("./616.js");
|
||||
import(/* webpackFetchPriority: "low" */ "./style-2.css");
|
||||
abortable(() => import(/* webpackFetchPriority: "low" */ "./style-2.css"));
|
||||
expect(document.head._children).toHaveLength(16);
|
||||
const link3 = document.head._children[15];
|
||||
expect(link3._attributes.fetchpriority).toBe("low");
|
||||
|
|
|
@ -57,9 +57,7 @@ describe("browserslist target", () => {
|
|||
["node 10.0.0"],
|
||||
["node 10.17.0"],
|
||||
["node 12.19.0"],
|
||||
|
||||
// UC browsers for Android
|
||||
["and_uc 12.12"],
|
||||
["node 13.12.0"],
|
||||
|
||||
// QQ browser
|
||||
["and_qq 10.4"],
|
||||
|
@ -73,6 +71,45 @@ describe("browserslist target", () => {
|
|||
// Multiple
|
||||
["firefox 80", "chrome 80"],
|
||||
["chrome 80", "node 12.19.0"],
|
||||
["chrome 80", "node 13.12.0"],
|
||||
|
||||
// defaults and fully supports es6-module
|
||||
// maintained node versions
|
||||
[
|
||||
"and_chr 140",
|
||||
"and_ff 142",
|
||||
"and_qq 14.9",
|
||||
"and_uc 15.5",
|
||||
"android 140",
|
||||
"chrome 140",
|
||||
"chrome 139",
|
||||
"chrome 138",
|
||||
"chrome 137",
|
||||
"chrome 112",
|
||||
"chrome 109",
|
||||
"chrome 105",
|
||||
"edge 140",
|
||||
"edge 139",
|
||||
"edge 138",
|
||||
"firefox 143",
|
||||
"firefox 142",
|
||||
"firefox 141",
|
||||
"firefox 140",
|
||||
"ios_saf 26.0",
|
||||
"ios_saf 18.5-18.6",
|
||||
"kaios 3.0-3.1",
|
||||
"node 24.8.0",
|
||||
"node 22.19.0",
|
||||
"node 20.19.0",
|
||||
"op_mob 80",
|
||||
"opera 122",
|
||||
"opera 121",
|
||||
"opera 120",
|
||||
"safari 26.0",
|
||||
"safari 18.5-18.6",
|
||||
"samsung 28",
|
||||
"samsung 27"
|
||||
],
|
||||
|
||||
// Unknown
|
||||
["unknown 50"]
|
||||
|
|
|
@ -17,7 +17,7 @@ module.exports = {
|
|||
]
|
||||
},
|
||||
plugins: [
|
||||
new webpack.ProgressPlugin(),
|
||||
new webpack.ProgressPlugin(() => {}),
|
||||
{
|
||||
apply(compiler) {
|
||||
compiler.hooks.done.tapPromise("CacheTest", async () => {
|
||||
|
|
|
@ -16,7 +16,7 @@ module.exports = {
|
|||
]
|
||||
},
|
||||
plugins: [
|
||||
new webpack.ProgressPlugin(),
|
||||
new webpack.ProgressPlugin(() => {}),
|
||||
{
|
||||
apply(compiler) {
|
||||
compiler.hooks.done.tapPromise("CacheTest", async () => {
|
||||
|
|
|
@ -24,7 +24,7 @@ import {
|
|||
ClassBody,
|
||||
ClassDeclaration,
|
||||
ClassExpression,
|
||||
Comment,
|
||||
Comment as CommentImport,
|
||||
ConditionalExpression,
|
||||
ContinueStatement,
|
||||
DebuggerStatement,
|
||||
|
@ -99,9 +99,11 @@ import {
|
|||
} from "inspector";
|
||||
import { JSONSchema4, JSONSchema6, JSONSchema7 } from "json-schema";
|
||||
import { ListenOptions } from "net";
|
||||
import { validate as validateFunction } from "schema-utils";
|
||||
import {
|
||||
ValidationErrorConfiguration,
|
||||
validate as validateFunction
|
||||
} from "schema-utils";
|
||||
import { default as ValidationError } from "schema-utils/declarations/ValidationError";
|
||||
import { ValidationErrorConfiguration } from "schema-utils/declarations/validate";
|
||||
import {
|
||||
AsArray,
|
||||
AsyncParallelHook,
|
||||
|
@ -114,7 +116,8 @@ import {
|
|||
SyncBailHook,
|
||||
SyncHook,
|
||||
SyncWaterfallHook,
|
||||
TapOptions
|
||||
TapOptions,
|
||||
TypedHookMap
|
||||
} from "tapable";
|
||||
import { SecureContextOptions, TlsOptions } from "tls";
|
||||
import { URL } from "url";
|
||||
|
@ -297,6 +300,14 @@ declare interface Asset {
|
|||
*/
|
||||
info: AssetInfo;
|
||||
}
|
||||
declare abstract class AssetBytesGenerator extends Generator {
|
||||
generateError(
|
||||
error: Error,
|
||||
module: NormalModule,
|
||||
generateContext: GenerateContext
|
||||
): null | Source;
|
||||
}
|
||||
declare abstract class AssetBytesParser extends ParserClass {}
|
||||
declare interface AssetDependencyMeta {
|
||||
sourceType: "css-url";
|
||||
}
|
||||
|
@ -311,6 +322,25 @@ type AssetFilterItemTypes =
|
|||
| string
|
||||
| RegExp
|
||||
| ((name: string, asset: StatsAsset) => boolean);
|
||||
declare abstract class AssetGenerator extends Generator {
|
||||
dataUrlOptions?:
|
||||
| AssetGeneratorDataUrlOptions
|
||||
| ((
|
||||
source: string | Buffer,
|
||||
context: { filename: string; module: Module }
|
||||
) => string);
|
||||
filename?: string | ((pathData: PathData, assetInfo?: AssetInfo) => string);
|
||||
publicPath?: string | ((pathData: PathData, assetInfo?: AssetInfo) => string);
|
||||
outputPath?: string | ((pathData: PathData, assetInfo?: AssetInfo) => string);
|
||||
emit?: boolean;
|
||||
getMimeType(module: NormalModule): string;
|
||||
generateDataUri(module: NormalModule): string;
|
||||
generateError(
|
||||
error: Error,
|
||||
module: NormalModule,
|
||||
generateContext: GenerateContext
|
||||
): null | Source;
|
||||
}
|
||||
|
||||
/**
|
||||
* Options object for data url generation.
|
||||
|
@ -349,6 +379,15 @@ declare interface AssetInlineGeneratorOptions {
|
|||
context: { filename: string; module: Module }
|
||||
) => string);
|
||||
}
|
||||
declare abstract class AssetParser extends ParserClass {
|
||||
dataUrlCondition?:
|
||||
| boolean
|
||||
| AssetParserDataUrlOptions
|
||||
| ((
|
||||
source: string | Buffer,
|
||||
context: { filename: string; module: Module }
|
||||
) => boolean);
|
||||
}
|
||||
|
||||
/**
|
||||
* Options object for DataUrl condition.
|
||||
|
@ -404,6 +443,14 @@ declare interface AssetResourceGeneratorOptions {
|
|||
*/
|
||||
publicPath?: string | ((pathData: PathData, assetInfo?: AssetInfo) => string);
|
||||
}
|
||||
declare abstract class AssetSourceGenerator extends Generator {
|
||||
generateError(
|
||||
error: Error,
|
||||
module: NormalModule,
|
||||
generateContext: GenerateContext
|
||||
): null | Source;
|
||||
}
|
||||
declare abstract class AssetSourceParser extends ParserClass {}
|
||||
declare class AsyncDependenciesBlock extends DependenciesBlock {
|
||||
constructor(
|
||||
groupOptions:
|
||||
|
@ -473,6 +520,7 @@ declare interface AsyncWebAssemblyModulesPluginOptions {
|
|||
*/
|
||||
mangleImports?: boolean;
|
||||
}
|
||||
declare abstract class AsyncWebAssemblyParser extends ParserClass {}
|
||||
declare class AutomaticPrefetchPlugin {
|
||||
constructor();
|
||||
|
||||
|
@ -2044,6 +2092,11 @@ declare interface ColorsOptions {
|
|||
*/
|
||||
useColor?: boolean;
|
||||
}
|
||||
declare interface CommentCssParser {
|
||||
value: string;
|
||||
range: [number, number];
|
||||
loc: { start: Position; end: Position };
|
||||
}
|
||||
declare interface CommonJsImportSettings {
|
||||
name?: string;
|
||||
context: string;
|
||||
|
@ -3558,6 +3611,23 @@ declare interface CssData {
|
|||
*/
|
||||
exports: Map<string, string>;
|
||||
}
|
||||
declare abstract class CssGenerator extends Generator {
|
||||
convention?:
|
||||
| "as-is"
|
||||
| "camel-case"
|
||||
| "camel-case-only"
|
||||
| "dashes"
|
||||
| "dashes-only"
|
||||
| ((name: string) => string);
|
||||
localIdentName?: string;
|
||||
exportsOnly?: boolean;
|
||||
esModule?: boolean;
|
||||
generateError(
|
||||
error: Error,
|
||||
module: NormalModule,
|
||||
generateContext: GenerateContext
|
||||
): null | Source;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generator options for css modules.
|
||||
|
@ -3753,6 +3823,19 @@ declare class CssModulesPlugin {
|
|||
): TemplatePath;
|
||||
static chunkHasCss(chunk: Chunk, chunkGraph: ChunkGraph): boolean;
|
||||
}
|
||||
declare abstract class CssParser extends ParserClass {
|
||||
defaultMode: "global" | "auto" | "pure" | "local";
|
||||
import: boolean;
|
||||
url: boolean;
|
||||
namedExports: boolean;
|
||||
comments?: CommentCssParser[];
|
||||
magicCommentContext: Context;
|
||||
getComments(range: [number, number]): CommentCssParser[];
|
||||
parseCommentOptions(range: [number, number]): {
|
||||
options: null | Record<string, any>;
|
||||
errors: null | (Error & { comment: CommentCssParser })[];
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Parser options for css modules.
|
||||
|
@ -6380,35 +6463,6 @@ declare interface ImportDependencyMeta {
|
|||
externalType?: "import" | "module";
|
||||
}
|
||||
type ImportExpressionJavascriptParser = ImportExpressionImport & {
|
||||
options?:
|
||||
| null
|
||||
| ImportExpressionImport
|
||||
| UnaryExpression
|
||||
| ArrayExpression
|
||||
| ArrowFunctionExpression
|
||||
| AssignmentExpression
|
||||
| AwaitExpression
|
||||
| BinaryExpression
|
||||
| SimpleCallExpression
|
||||
| NewExpression
|
||||
| ChainExpression
|
||||
| ClassExpression
|
||||
| ConditionalExpression
|
||||
| FunctionExpression
|
||||
| Identifier
|
||||
| SimpleLiteral
|
||||
| RegExpLiteral
|
||||
| BigIntLiteral
|
||||
| LogicalExpression
|
||||
| MemberExpression
|
||||
| MetaProperty
|
||||
| ObjectExpression
|
||||
| SequenceExpression
|
||||
| TaggedTemplateExpression
|
||||
| TemplateLiteral
|
||||
| ThisExpression
|
||||
| UpdateExpression
|
||||
| YieldExpression;
|
||||
phase?: "defer";
|
||||
};
|
||||
declare interface ImportModuleOptions {
|
||||
|
@ -6623,6 +6677,33 @@ declare interface IteratorObject<T, TReturn = unknown, TNext = unknown>
|
|||
[Symbol.iterator](): IteratorObject<T, TReturn, TNext>;
|
||||
[Symbol.dispose](): void;
|
||||
}
|
||||
declare abstract class JavascriptGenerator extends Generator {
|
||||
generateError(
|
||||
error: Error,
|
||||
module: NormalModule,
|
||||
generateContext: GenerateContext
|
||||
): null | Source;
|
||||
sourceModule(
|
||||
module: Module,
|
||||
initFragments: InitFragment<GenerateContext>[],
|
||||
source: ReplaceSource,
|
||||
generateContext: GenerateContext
|
||||
): void;
|
||||
sourceBlock(
|
||||
module: Module,
|
||||
block: DependenciesBlock,
|
||||
initFragments: InitFragment<GenerateContext>[],
|
||||
source: ReplaceSource,
|
||||
generateContext: GenerateContext
|
||||
): void;
|
||||
sourceDependency(
|
||||
module: Module,
|
||||
dependency: Dependency,
|
||||
initFragments: InitFragment<GenerateContext>[],
|
||||
source: ReplaceSource,
|
||||
generateContext: GenerateContext
|
||||
): void;
|
||||
}
|
||||
declare class JavascriptModulesPlugin {
|
||||
constructor(options?: object);
|
||||
options: object;
|
||||
|
@ -7107,15 +7188,15 @@ declare class JavascriptParser extends ParserClass {
|
|||
[LogicalExpression],
|
||||
boolean | void
|
||||
>;
|
||||
program: SyncBailHook<[Program, Comment[]], boolean | void>;
|
||||
program: SyncBailHook<[Program, CommentImport[]], boolean | void>;
|
||||
terminate: SyncBailHook<[ReturnStatement | ThrowStatement], boolean | void>;
|
||||
finish: SyncBailHook<[Program, Comment[]], boolean | void>;
|
||||
finish: SyncBailHook<[Program, CommentImport[]], boolean | void>;
|
||||
unusedStatement: SyncBailHook<[Statement], boolean | void>;
|
||||
}>;
|
||||
sourceType: "module" | "auto" | "script";
|
||||
scope: ScopeInfo;
|
||||
state: ParserState;
|
||||
comments?: Comment[];
|
||||
comments?: CommentImport[];
|
||||
semicolons?: Set<number>;
|
||||
statementPath?: StatementPathItem[];
|
||||
prevStatement?:
|
||||
|
@ -7939,7 +8020,7 @@ declare class JavascriptParser extends ParserClass {
|
|||
| MaybeNamedClassDeclaration,
|
||||
commentsStartPos: number
|
||||
): boolean;
|
||||
getComments(range: [number, number]): Comment[];
|
||||
getComments(range: [number, number]): CommentImport[];
|
||||
isAsiPosition(pos: number): boolean;
|
||||
setAsiPosition(pos: number): void;
|
||||
unsetAsiPosition(pos: number): void;
|
||||
|
@ -7975,7 +8056,7 @@ declare class JavascriptParser extends ParserClass {
|
|||
evaluatedVariable(tagInfo: TagInfo): VariableInfo;
|
||||
parseCommentOptions(range: [number, number]): {
|
||||
options: null | Record<string, any>;
|
||||
errors: null | (Error & { comment: Comment })[];
|
||||
errors: null | (Error & { comment: CommentImport })[];
|
||||
};
|
||||
extractMemberExpressionChain(
|
||||
expression:
|
||||
|
@ -8327,6 +8408,14 @@ declare abstract class JsonData {
|
|||
| JsonValueFs[];
|
||||
updateHash(hash: Hash): void;
|
||||
}
|
||||
declare abstract class JsonGenerator extends Generator {
|
||||
options: JsonGeneratorOptions;
|
||||
generateError(
|
||||
error: Error,
|
||||
module: NormalModule,
|
||||
generateContext: GenerateContext
|
||||
): null | Source;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generator options for json modules.
|
||||
|
@ -8337,6 +8426,17 @@ declare interface JsonGeneratorOptions {
|
|||
*/
|
||||
JSONParse?: boolean;
|
||||
}
|
||||
declare interface JsonModulesPluginParserOptions {
|
||||
/**
|
||||
* The depth of json dependency flagged as `exportInfo`.
|
||||
*/
|
||||
exportsDepth?: number;
|
||||
|
||||
/**
|
||||
* Function that executes for a module source string and should return json-compatible data.
|
||||
*/
|
||||
parse?: (input: string) => any;
|
||||
}
|
||||
declare interface JsonObjectFs {
|
||||
[index: string]:
|
||||
| undefined
|
||||
|
@ -8357,6 +8457,9 @@ declare interface JsonObjectTypes {
|
|||
| JsonObjectTypes
|
||||
| JsonValueTypes[];
|
||||
}
|
||||
declare abstract class JsonParser extends ParserClass {
|
||||
options: JsonModulesPluginParserOptions;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parser options for JSON modules.
|
||||
|
@ -11288,12 +11391,225 @@ declare abstract class NormalModuleFactory extends ModuleFactory {
|
|||
],
|
||||
Module
|
||||
>;
|
||||
createParser: HookMap<SyncBailHook<[ParserOptions], void | ParserClass>>;
|
||||
parser: HookMap<SyncBailHook<[any, ParserOptions], void>>;
|
||||
createGenerator: HookMap<
|
||||
SyncBailHook<[GeneratorOptions], void | Generator>
|
||||
createParser: TypedHookMap<
|
||||
Record<
|
||||
"javascript/auto",
|
||||
SyncBailHook<[JavascriptParserOptions], JavascriptParser>
|
||||
> &
|
||||
Record<
|
||||
"javascript/dynamic",
|
||||
SyncBailHook<[JavascriptParserOptions], JavascriptParser>
|
||||
> &
|
||||
Record<
|
||||
"javascript/esm",
|
||||
SyncBailHook<[JavascriptParserOptions], JavascriptParser>
|
||||
> &
|
||||
Record<"json", SyncBailHook<[JsonParserOptions], JsonParser>> &
|
||||
Record<"asset", SyncBailHook<[AssetParserOptions], AssetParser>> &
|
||||
Record<
|
||||
"asset/inline",
|
||||
SyncBailHook<[EmptyParserOptions], AssetParser>
|
||||
> &
|
||||
Record<
|
||||
"asset/resource",
|
||||
SyncBailHook<[EmptyParserOptions], AssetParser>
|
||||
> &
|
||||
Record<
|
||||
"asset/source",
|
||||
SyncBailHook<[EmptyParserOptions], AssetSourceParser>
|
||||
> &
|
||||
Record<
|
||||
"asset/bytes",
|
||||
SyncBailHook<[EmptyParserOptions], AssetBytesParser>
|
||||
> &
|
||||
Record<
|
||||
"webassembly/async",
|
||||
SyncBailHook<[EmptyParserOptions], AsyncWebAssemblyParser>
|
||||
> &
|
||||
Record<
|
||||
"webassembly/sync",
|
||||
SyncBailHook<[EmptyParserOptions], WebAssemblyParser>
|
||||
> &
|
||||
Record<"css", SyncBailHook<[CssParserOptions], CssParser>> &
|
||||
Record<"css/auto", SyncBailHook<[CssAutoParserOptions], CssParser>> &
|
||||
Record<
|
||||
"css/module",
|
||||
SyncBailHook<[CssModuleParserOptions], CssParser>
|
||||
> &
|
||||
Record<
|
||||
"css/global",
|
||||
SyncBailHook<[CssGlobalParserOptions], CssParser>
|
||||
> &
|
||||
Record<string, SyncBailHook<[ParserOptions], ParserClass>>
|
||||
>;
|
||||
parser: TypedHookMap<
|
||||
Record<
|
||||
"javascript/auto",
|
||||
SyncBailHook<[JavascriptParser, JavascriptParserOptions], void>
|
||||
> &
|
||||
Record<
|
||||
"javascript/dynamic",
|
||||
SyncBailHook<[JavascriptParser, JavascriptParserOptions], void>
|
||||
> &
|
||||
Record<
|
||||
"javascript/esm",
|
||||
SyncBailHook<[JavascriptParser, JavascriptParserOptions], void>
|
||||
> &
|
||||
Record<"json", SyncBailHook<[JsonParser, JsonParserOptions], void>> &
|
||||
Record<"asset", SyncBailHook<[AssetParser, AssetParserOptions], void>> &
|
||||
Record<
|
||||
"asset/inline",
|
||||
SyncBailHook<[AssetParser, EmptyParserOptions], void>
|
||||
> &
|
||||
Record<
|
||||
"asset/resource",
|
||||
SyncBailHook<[AssetParser, EmptyParserOptions], void>
|
||||
> &
|
||||
Record<
|
||||
"asset/source",
|
||||
SyncBailHook<[AssetSourceParser, EmptyParserOptions], void>
|
||||
> &
|
||||
Record<
|
||||
"asset/bytes",
|
||||
SyncBailHook<[AssetBytesParser, EmptyParserOptions], void>
|
||||
> &
|
||||
Record<
|
||||
"webassembly/async",
|
||||
SyncBailHook<[AsyncWebAssemblyParser, EmptyParserOptions], void>
|
||||
> &
|
||||
Record<
|
||||
"webassembly/sync",
|
||||
SyncBailHook<[WebAssemblyParser, EmptyParserOptions], void>
|
||||
> &
|
||||
Record<"css", SyncBailHook<[CssParser, CssParserOptions], void>> &
|
||||
Record<
|
||||
"css/auto",
|
||||
SyncBailHook<[CssParser, CssAutoParserOptions], void>
|
||||
> &
|
||||
Record<
|
||||
"css/module",
|
||||
SyncBailHook<[CssParser, CssModuleParserOptions], void>
|
||||
> &
|
||||
Record<
|
||||
"css/global",
|
||||
SyncBailHook<[CssParser, CssGlobalParserOptions], void>
|
||||
> &
|
||||
Record<string, SyncBailHook<[ParserClass, ParserOptions], void>>
|
||||
>;
|
||||
createGenerator: TypedHookMap<
|
||||
Record<
|
||||
"javascript/auto",
|
||||
SyncBailHook<[EmptyGeneratorOptions], JavascriptGenerator>
|
||||
> &
|
||||
Record<
|
||||
"javascript/dynamic",
|
||||
SyncBailHook<[EmptyGeneratorOptions], JavascriptGenerator>
|
||||
> &
|
||||
Record<
|
||||
"javascript/esm",
|
||||
SyncBailHook<[EmptyGeneratorOptions], JavascriptGenerator>
|
||||
> &
|
||||
Record<"json", SyncBailHook<[JsonGeneratorOptions], JsonGenerator>> &
|
||||
Record<"asset", SyncBailHook<[AssetGeneratorOptions], AssetGenerator>> &
|
||||
Record<
|
||||
"asset/inline",
|
||||
SyncBailHook<[AssetGeneratorOptions], AssetGenerator>
|
||||
> &
|
||||
Record<
|
||||
"asset/resource",
|
||||
SyncBailHook<[AssetGeneratorOptions], AssetGenerator>
|
||||
> &
|
||||
Record<
|
||||
"asset/source",
|
||||
SyncBailHook<[EmptyGeneratorOptions], AssetSourceGenerator>
|
||||
> &
|
||||
Record<
|
||||
"asset/bytes",
|
||||
SyncBailHook<[EmptyGeneratorOptions], AssetBytesGenerator>
|
||||
> &
|
||||
Record<
|
||||
"webassembly/async",
|
||||
SyncBailHook<[EmptyParserOptions], Generator>
|
||||
> &
|
||||
Record<
|
||||
"webassembly/sync",
|
||||
SyncBailHook<[EmptyParserOptions], Generator>
|
||||
> &
|
||||
Record<"css", SyncBailHook<[CssGeneratorOptions], CssGenerator>> &
|
||||
Record<
|
||||
"css/auto",
|
||||
SyncBailHook<[CssAutoGeneratorOptions], CssGenerator>
|
||||
> &
|
||||
Record<
|
||||
"css/module",
|
||||
SyncBailHook<[CssModuleGeneratorOptions], CssGenerator>
|
||||
> &
|
||||
Record<
|
||||
"css/global",
|
||||
SyncBailHook<[CssGlobalGeneratorOptions], CssGenerator>
|
||||
> &
|
||||
Record<string, SyncBailHook<[GeneratorOptions], Generator>>
|
||||
>;
|
||||
generator: TypedHookMap<
|
||||
Record<
|
||||
"javascript/auto",
|
||||
SyncBailHook<[JavascriptGenerator, EmptyGeneratorOptions], void>
|
||||
> &
|
||||
Record<
|
||||
"javascript/dynamic",
|
||||
SyncBailHook<[JavascriptGenerator, EmptyGeneratorOptions], void>
|
||||
> &
|
||||
Record<
|
||||
"javascript/esm",
|
||||
SyncBailHook<[JavascriptGenerator, EmptyGeneratorOptions], void>
|
||||
> &
|
||||
Record<
|
||||
"json",
|
||||
SyncBailHook<[JsonGenerator, JsonGeneratorOptions], void>
|
||||
> &
|
||||
Record<
|
||||
"asset",
|
||||
SyncBailHook<[AssetGenerator, AssetGeneratorOptions], void>
|
||||
> &
|
||||
Record<
|
||||
"asset/inline",
|
||||
SyncBailHook<[AssetGenerator, AssetGeneratorOptions], void>
|
||||
> &
|
||||
Record<
|
||||
"asset/resource",
|
||||
SyncBailHook<[AssetGenerator, AssetGeneratorOptions], void>
|
||||
> &
|
||||
Record<
|
||||
"asset/source",
|
||||
SyncBailHook<[AssetSourceGenerator, EmptyGeneratorOptions], void>
|
||||
> &
|
||||
Record<
|
||||
"asset/bytes",
|
||||
SyncBailHook<[AssetBytesGenerator, EmptyGeneratorOptions], void>
|
||||
> &
|
||||
Record<
|
||||
"webassembly/async",
|
||||
SyncBailHook<[Generator, EmptyParserOptions], void>
|
||||
> &
|
||||
Record<
|
||||
"webassembly/sync",
|
||||
SyncBailHook<[Generator, EmptyParserOptions], void>
|
||||
> &
|
||||
Record<"css", SyncBailHook<[CssGenerator, CssGeneratorOptions], void>> &
|
||||
Record<
|
||||
"css/auto",
|
||||
SyncBailHook<[CssGenerator, CssAutoGeneratorOptions], void>
|
||||
> &
|
||||
Record<
|
||||
"css/module",
|
||||
SyncBailHook<[CssGenerator, CssModuleGeneratorOptions], void>
|
||||
> &
|
||||
Record<
|
||||
"css/global",
|
||||
SyncBailHook<[CssGenerator, CssGlobalGeneratorOptions], void>
|
||||
> &
|
||||
Record<string, SyncBailHook<[Generator, GeneratorOptions], void>>
|
||||
>;
|
||||
generator: HookMap<SyncBailHook<[any, GeneratorOptions], void>>;
|
||||
createModuleClass: HookMap<
|
||||
SyncBailHook<
|
||||
[
|
||||
|
@ -13166,6 +13482,10 @@ declare interface PnpApi {
|
|||
options: { considerBuiltins: boolean }
|
||||
) => null | string;
|
||||
}
|
||||
declare interface Position {
|
||||
line: number;
|
||||
column: number;
|
||||
}
|
||||
declare class PrefetchPlugin {
|
||||
constructor(context: string, request?: string);
|
||||
context: null | string;
|
||||
|
@ -17815,6 +18135,7 @@ declare abstract class WeakTupleMap<K extends any[], V> {
|
|||
delete(...args: K): void;
|
||||
clear(): void;
|
||||
}
|
||||
declare abstract class WebAssemblyParser extends ParserClass {}
|
||||
declare interface WebAssemblyRenderContext {
|
||||
/**
|
||||
* the chunk
|
||||
|
|
Loading…
Reference in New Issue