Skip to content

Commit c56b046

Browse files
committed
feat: consider asset module as side-effect-free
1 parent 66e8011 commit c56b046

File tree

3 files changed

+15
-1
lines changed

3 files changed

+15
-1
lines changed

lib/asset/AssetBytesParser.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ const Parser = require("../Parser");
99

1010
/** @typedef {import("../Module").BuildInfo} BuildInfo */
1111
/** @typedef {import("../Module").BuildMeta} BuildMeta */
12+
/** @typedef {import("../Module").FactoryMeta} FactoryMeta */
1213
/** @typedef {import("../Parser").ParserState} ParserState */
1314
/** @typedef {import("../Parser").PreparsedAst} PreparsedAst */
1415

@@ -30,6 +31,10 @@ class AssetBytesParser extends Parser {
3031
/** @type {BuildMeta} */
3132
(state.module.buildMeta).defaultObject = false;
3233

34+
const factoryMeta =
35+
state.module.factoryMeta || (state.module.factoryMeta = {});
36+
factoryMeta.sideEffectFree = true;
37+
3338
return state;
3439
}
3540
}

lib/asset/AssetParser.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ const Parser = require("../Parser");
1111
/** @typedef {import("../../declarations/WebpackOptions").AssetParserOptions} AssetParserOptions */
1212
/** @typedef {import("../Module").BuildInfo} BuildInfo */
1313
/** @typedef {import("../Module").BuildMeta} BuildMeta */
14+
/** @typedef {import("../Module").FactoryMeta} FactoryMeta */
1415
/** @typedef {import("../Parser").ParserState} ParserState */
1516
/** @typedef {import("../Parser").PreparsedAst} PreparsedAst */
1617

@@ -32,7 +33,6 @@ class AssetParser extends Parser {
3233
if (typeof source === "object" && !Buffer.isBuffer(source)) {
3334
throw new Error("AssetParser doesn't accept preparsed AST");
3435
}
35-
3636
const buildInfo =
3737
/** @type {BuildInfo} */
3838
(state.module.buildInfo);
@@ -62,6 +62,10 @@ class AssetParser extends Parser {
6262
throw new Error("Unexpected dataUrlCondition type");
6363
}
6464

65+
const factoryMeta =
66+
state.module.factoryMeta || (state.module.factoryMeta = {});
67+
factoryMeta.sideEffectFree = true;
68+
6569
return state;
6670
}
6771
}

lib/asset/AssetSourceParser.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ const Parser = require("../Parser");
99

1010
/** @typedef {import("../Module").BuildInfo} BuildInfo */
1111
/** @typedef {import("../Module").BuildMeta} BuildMeta */
12+
/** @typedef {import("../Module").FactoryMeta} FactoryMeta */
1213
/** @typedef {import("../Parser").ParserState} ParserState */
1314
/** @typedef {import("../Parser").PreparsedAst} PreparsedAst */
1415

@@ -30,6 +31,10 @@ class AssetSourceParser extends Parser {
3031
/** @type {BuildMeta} */
3132
(state.module.buildMeta).defaultObject = false;
3233

34+
const factoryMeta =
35+
state.module.factoryMeta || (state.module.factoryMeta = {});
36+
factoryMeta.sideEffectFree = true;
37+
3338
return state;
3439
}
3540
}

0 commit comments

Comments
 (0)