webpack 4.15.0 → 4.16.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +20 -20
- package/README.md +761 -758
- package/SECURITY.md +9 -9
- package/buildin/amd-define.js +3 -3
- package/buildin/amd-options.js +2 -2
- package/buildin/global.js +20 -20
- package/buildin/harmony-module.js +24 -24
- package/buildin/module.js +22 -22
- package/buildin/system.js +7 -7
- package/hot/dev-server.js +61 -61
- package/hot/emitter.js +2 -2
- package/hot/log-apply-result.js +44 -44
- package/hot/log.js +45 -45
- package/hot/only-dev-server.js +105 -105
- package/hot/poll.js +40 -37
- package/hot/signal.js +62 -62
- package/lib/APIPlugin.js +84 -84
- package/lib/AmdMainTemplatePlugin.js +87 -87
- package/lib/AsyncDependencyToInitialChunkError.js +31 -31
- package/lib/AutomaticPrefetchPlugin.js +1 -1
- package/lib/BannerPlugin.js +117 -117
- package/lib/BasicEvaluatedExpression.js +211 -211
- package/lib/CachePlugin.js +102 -102
- package/lib/CaseSensitiveModulesWarning.js +67 -67
- package/lib/Chunk.js +833 -811
- package/lib/ChunkGroup.js +4 -4
- package/lib/ChunkRenderError.js +32 -32
- package/lib/CommentCompilationWarning.js +2 -2
- package/lib/CompatibilityPlugin.js +70 -70
- package/lib/Compilation.js +46 -15
- package/lib/ConcurrentCompilationError.js +19 -19
- package/lib/ConstPlugin.js +258 -258
- package/lib/ContextExclusionPlugin.js +28 -17
- package/lib/ContextModule.js +844 -739
- package/lib/ContextModuleFactory.js +262 -256
- package/lib/ContextReplacementPlugin.js +133 -133
- package/lib/DefinePlugin.js +49 -0
- package/lib/DelegatedModule.js +5 -0
- package/lib/DelegatedModuleFactoryPlugin.js +95 -89
- package/lib/DelegatedPlugin.js +39 -39
- package/lib/DependenciesBlock.js +1 -1
- package/lib/Dependency.js +10 -4
- package/lib/DllModule.js +60 -54
- package/lib/DllModuleFactory.js +29 -29
- package/lib/DllPlugin.js +44 -44
- package/lib/DllReferencePlugin.js +132 -84
- package/lib/EntryModuleNotFoundError.js +21 -21
- package/lib/Entrypoint.js +54 -54
- package/lib/EnvironmentPlugin.js +72 -65
- package/lib/ErrorHelpers.js +60 -60
- package/lib/EvalDevToolModulePlugin.js +27 -27
- package/lib/EvalSourceMapDevToolModuleTemplatePlugin.js +115 -115
- package/lib/EvalSourceMapDevToolPlugin.js +41 -41
- package/lib/ExportPropertyMainTemplatePlugin.js +53 -53
- package/lib/ExternalModule.js +165 -159
- package/lib/ExternalsPlugin.js +23 -23
- package/lib/FlagDependencyExportsPlugin.js +146 -146
- package/lib/FlagInitialModulesAsUsedPlugin.js +36 -36
- package/lib/FunctionModuleTemplatePlugin.js +100 -100
- package/lib/Generator.js +60 -52
- package/lib/HarmonyLinkingError.js +17 -17
- package/lib/HashedModuleIdsPlugin.js +53 -53
- package/lib/HotModuleReplacementPlugin.js +411 -413
- package/lib/IgnorePlugin.js +90 -90
- package/lib/JavascriptGenerator.js +229 -229
- package/lib/JavascriptModulesPlugin.js +179 -179
- package/lib/JsonGenerator.js +55 -55
- package/lib/JsonModulesPlugin.js +30 -30
- package/lib/JsonParser.js +27 -27
- package/lib/LibManifestPlugin.js +86 -86
- package/lib/LibraryTemplatePlugin.js +153 -153
- package/lib/LoaderOptionsPlugin.js +53 -53
- package/lib/LoaderTargetPlugin.js +24 -24
- package/lib/MemoryOutputFileSystem.js +5 -5
- package/lib/Module.js +431 -391
- package/lib/ModuleBuildError.js +52 -52
- package/lib/ModuleDependencyError.js +35 -35
- package/lib/ModuleDependencyWarning.js +25 -25
- package/lib/ModuleError.js +36 -36
- package/lib/ModuleFilenameHelpers.js +178 -178
- package/lib/ModuleNotFoundError.js +23 -23
- package/lib/ModuleParseError.js +57 -57
- package/lib/ModuleTemplate.js +93 -93
- package/lib/ModuleWarning.js +36 -36
- package/lib/MultiCompiler.js +283 -283
- package/lib/MultiModule.js +87 -81
- package/lib/MultiModuleFactory.js +23 -23
- package/lib/MultiStats.js +92 -92
- package/lib/MultiWatching.js +38 -38
- package/lib/NamedChunksPlugin.js +29 -29
- package/lib/NamedModulesPlugin.js +57 -57
- package/lib/NoEmitOnErrorsPlugin.js +20 -20
- package/lib/NoModeWarning.js +23 -23
- package/lib/NodeStuffPlugin.js +197 -179
- package/lib/NormalModule.js +542 -536
- package/lib/NormalModuleFactory.js +526 -526
- package/lib/NormalModuleReplacementPlugin.js +51 -51
- package/lib/NullFactory.js +12 -12
- package/lib/OptionsApply.js +10 -10
- package/lib/OptionsDefaulter.js +84 -84
- package/lib/Parser.js +2202 -2193
- package/lib/ParserHelpers.js +103 -103
- package/lib/PrefetchPlugin.js +37 -37
- package/lib/ProgressPlugin.js +246 -246
- package/lib/ProvidePlugin.js +86 -86
- package/lib/RawModule.js +56 -56
- package/lib/RecordIdsPlugin.js +230 -230
- package/lib/RemovedPluginError.js +11 -11
- package/lib/RequestShortener.js +83 -83
- package/lib/RequireJsStuffPlugin.js +69 -69
- package/lib/ResolverFactory.js +64 -64
- package/lib/RuntimeTemplate.js +12 -0
- package/lib/SetVarMainTemplatePlugin.js +69 -69
- package/lib/SingleEntryPlugin.js +6 -1
- package/lib/SizeFormatHelpers.js +24 -24
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +49 -49
- package/lib/SourceMapDevToolPlugin.js +301 -301
- package/lib/Stats.js +28 -5
- package/lib/TemplatedPathPlugin.js +173 -173
- package/lib/UnsupportedFeatureWarning.js +22 -22
- package/lib/UseStrictPlugin.js +54 -54
- package/lib/WarnCaseSensitiveModulesPlugin.js +37 -37
- package/lib/WarnNoModeSetPlugin.js +17 -17
- package/lib/WatchIgnorePlugin.js +100 -100
- package/lib/Watching.js +194 -194
- package/lib/WebpackOptionsApply.js +92 -10
- package/lib/WebpackOptionsDefaulter.js +368 -354
- package/lib/debug/ProfilingPlugin.js +430 -430
- package/lib/dependencies/AMDPlugin.js +250 -250
- package/lib/dependencies/AMDRequireArrayDependency.js +49 -49
- package/lib/dependencies/AMDRequireContextDependency.js +20 -20
- package/lib/dependencies/AMDRequireDependency.js +135 -135
- package/lib/dependencies/AMDRequireItemDependency.js +22 -22
- package/lib/dependencies/CommonJsPlugin.js +161 -161
- package/lib/dependencies/CommonJsRequireContextDependency.js +23 -23
- package/lib/dependencies/CommonJsRequireDependency.js +22 -22
- package/lib/dependencies/CommonJsRequireDependencyParserPlugin.js +6 -0
- package/lib/dependencies/ConstDependency.js +33 -33
- package/lib/dependencies/ContextDependency.js +68 -68
- package/lib/dependencies/ContextDependencyHelpers.js +142 -142
- package/lib/dependencies/ContextDependencyTemplateAsId.js +42 -42
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +38 -38
- package/lib/dependencies/ContextElementDependency.js +21 -21
- package/lib/dependencies/CriticalDependencyWarning.js +20 -20
- package/lib/dependencies/DelegatedSourceDependency.js +18 -18
- package/lib/dependencies/DllEntryDependency.js +20 -20
- package/lib/dependencies/HarmonyAcceptDependency.js +45 -45
- package/lib/dependencies/HarmonyCompatibilityDependency.js +31 -31
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +92 -92
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +139 -139
- package/lib/dependencies/HarmonyExportHeaderDependency.js +30 -30
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +2 -1
- package/lib/dependencies/HarmonyImportDependency.js +109 -109
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +222 -222
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +31 -31
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +167 -167
- package/lib/dependencies/HarmonyInitDependency.js +60 -60
- package/lib/dependencies/HarmonyModulesPlugin.js +146 -146
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +26 -26
- package/lib/dependencies/ImportContextDependency.js +23 -23
- package/lib/dependencies/ImportDependenciesBlock.js +18 -18
- package/lib/dependencies/ImportDependency.js +34 -34
- package/lib/dependencies/ImportEagerDependency.js +32 -32
- package/lib/dependencies/ImportParserPlugin.js +263 -263
- package/lib/dependencies/ImportPlugin.js +82 -82
- package/lib/dependencies/ImportWeakDependency.js +34 -34
- package/lib/dependencies/LoaderPlugin.js +18 -1
- package/lib/dependencies/LocalModule.js +23 -23
- package/lib/dependencies/LocalModulesHelpers.js +52 -52
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +17 -17
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +17 -17
- package/lib/dependencies/ModuleHotAcceptDependency.js +23 -23
- package/lib/dependencies/ModuleHotDeclineDependency.js +23 -23
- package/lib/dependencies/NullDependency.js +20 -20
- package/lib/dependencies/PrefetchDependency.js +18 -18
- package/lib/dependencies/RequireContextDependency.js +22 -22
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +56 -56
- package/lib/dependencies/RequireContextPlugin.js +143 -143
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +33 -33
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +116 -116
- package/lib/dependencies/RequireEnsureDependency.js +58 -58
- package/lib/dependencies/RequireEnsureItemDependency.js +21 -21
- package/lib/dependencies/RequireEnsurePlugin.js +74 -74
- package/lib/dependencies/RequireHeaderDependency.js +26 -26
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +23 -23
- package/lib/dependencies/RequireIncludePlugin.js +61 -61
- package/lib/dependencies/RequireResolveContextDependency.js +23 -23
- package/lib/dependencies/RequireResolveDependency.js +22 -22
- package/lib/dependencies/RequireResolveDependencyParserPlugin.js +85 -85
- package/lib/dependencies/RequireResolveHeaderDependency.js +26 -26
- package/lib/dependencies/SystemPlugin.js +125 -125
- package/lib/dependencies/UnsupportedDependency.js +27 -27
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +29 -29
- package/lib/dependencies/WebAssemblyImportDependency.js +48 -48
- package/lib/dependencies/WebpackMissingModule.js +20 -20
- package/lib/formatLocation.js +75 -61
- package/lib/node/NodeChunkTemplatePlugin.js +31 -31
- package/lib/node/NodeEnvironmentPlugin.js +28 -28
- package/lib/node/NodeHotUpdateChunkTemplatePlugin.js +36 -36
- package/lib/node/NodeMainTemplate.runtime.js +27 -27
- package/lib/node/NodeMainTemplatePlugin.js +323 -323
- package/lib/node/NodeOutputFileSystem.js +22 -22
- package/lib/node/NodeSourcePlugin.js +144 -144
- package/lib/node/NodeTargetPlugin.js +18 -18
- package/lib/node/NodeTemplatePlugin.js +31 -31
- package/lib/node/NodeWatchFileSystem.js +99 -99
- package/lib/node/ReadFileCompileWasmTemplatePlugin.js +61 -61
- package/lib/optimize/AggressiveMergingPlugin.js +87 -87
- package/lib/optimize/AggressiveSplittingPlugin.js +287 -287
- package/lib/optimize/ConcatenatedModule.js +5 -0
- package/lib/optimize/EnsureChunkConditionsPlugin.js +70 -70
- package/lib/optimize/FlagIncludedChunksPlugin.js +99 -99
- package/lib/optimize/LimitChunkCountPlugin.js +66 -66
- package/lib/optimize/MergeDuplicateChunksPlugin.js +78 -78
- package/lib/optimize/MinChunkSizePlugin.js +77 -77
- package/lib/optimize/NaturalChunkOrderPlugin.js +41 -0
- package/lib/optimize/OccurrenceChunkOrderPlugin.js +61 -0
- package/lib/optimize/OccurrenceModuleOrderPlugin.js +103 -0
- package/lib/optimize/OccurrenceOrderPlugin.js +135 -133
- package/lib/optimize/RemoveEmptyChunksPlugin.js +42 -42
- package/lib/optimize/RemoveParentModulesPlugin.js +127 -127
- package/lib/optimize/RuntimeChunkPlugin.js +41 -41
- package/lib/optimize/SideEffectsFlagPlugin.js +168 -168
- package/lib/optimize/SplitChunksPlugin.js +866 -850
- package/lib/performance/AssetsOverSizeLimitWarning.js +30 -30
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +30 -30
- package/lib/performance/NoAsyncChunksWarning.js +21 -21
- package/lib/performance/SizeLimitsPlugin.js +105 -105
- package/lib/util/SortableSet.js +1 -0
- package/lib/util/StackedSetMap.js +144 -135
- package/lib/util/TrackingSet.js +35 -35
- package/lib/util/cachedMerge.js +35 -35
- package/lib/util/deterministicGrouping.js +251 -251
- package/lib/util/identifier.js +103 -103
- package/lib/util/objectToMap.js +16 -16
- package/lib/validateSchema.js +67 -67
- package/lib/wasm/UnsupportedWebAssemblyFeatureError.js +17 -17
- package/lib/wasm/WasmFinalizeExportsPlugin.js +1 -1
- package/lib/wasm/WebAssemblyGenerator.js +16 -2
- package/lib/wasm/WebAssemblyJavascriptGenerator.js +147 -133
- package/lib/wasm/WebAssemblyParser.js +174 -174
- package/lib/wasm/WebAssemblyUtils.js +59 -59
- package/lib/web/FetchCompileWasmTemplatePlugin.js +37 -37
- package/lib/web/JsonpExportMainTemplatePlugin.js +47 -47
- package/lib/web/JsonpHotUpdateChunkTemplatePlugin.js +39 -39
- package/lib/web/JsonpMainTemplate.runtime.js +65 -65
- package/lib/web/JsonpMainTemplatePlugin.js +1 -1
- package/lib/web/JsonpTemplatePlugin.js +23 -23
- package/lib/web/WebEnvironmentPlugin.js +18 -18
- package/lib/webpack.js +5 -0
- package/lib/webworker/WebWorkerChunkTemplatePlugin.js +35 -35
- package/lib/webworker/WebWorkerHotUpdateChunkTemplatePlugin.js +40 -40
- package/lib/webworker/WebWorkerMainTemplate.runtime.js +65 -65
- package/lib/webworker/WebWorkerMainTemplatePlugin.js +196 -196
- package/lib/webworker/WebWorkerTemplatePlugin.js +25 -25
- package/package.json +22 -13
- package/schemas/WebpackOptions.json +2062 -2036
- package/schemas/ajv.absolutePath.js +55 -55
- package/schemas/plugins/BannerPlugin.json +96 -96
- package/schemas/plugins/DllPlugin.json +32 -32
- package/schemas/plugins/DllReferencePlugin.json +99 -99
- package/schemas/plugins/HashedModuleIdsPlugin.json +24 -24
- package/schemas/plugins/LoaderOptionsPlugin.json +26 -26
- package/schemas/plugins/SourceMapDevToolPlugin.json +187 -187
- package/schemas/plugins/WatchIgnorePlugin.json +16 -16
- package/schemas/plugins/debug/ProfilingPlugin.json +12 -12
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.json +22 -22
- package/schemas/plugins/optimize/LimitChunkCountPlugin.json +15 -15
- package/schemas/plugins/optimize/MinChunkSizePlugin.json +13 -13
- package/schemas/plugins/optimize/OccurrenceOrderChunkIdsPlugin.json +10 -0
- package/schemas/plugins/optimize/OccurrenceOrderModuleIdsPlugin.json +10 -0
package/lib/util/identifier.js
CHANGED
@@ -1,103 +1,103 @@
|
|
1
|
-
"use strict";
|
2
|
-
const path = require("path");
|
3
|
-
|
4
|
-
/**
|
5
|
-
* @typedef {Object} MakeRelativePathsCache
|
6
|
-
* @property {Map<string, Map<string, string>>=} relativePaths
|
7
|
-
*/
|
8
|
-
|
9
|
-
/**
|
10
|
-
*
|
11
|
-
* @param {string} maybeAbsolutePath path to check
|
12
|
-
* @returns {boolean} returns true if path is "Absolute Path"-like
|
13
|
-
*/
|
14
|
-
const looksLikeAbsolutePath = maybeAbsolutePath => {
|
15
|
-
if (/^\/.*\/$/.test(maybeAbsolutePath)) {
|
16
|
-
// this 'path' is actually a regexp generated by dynamic requires.
|
17
|
-
// Don't treat it as an absolute path.
|
18
|
-
return false;
|
19
|
-
}
|
20
|
-
return /^(?:[a-z]:\\|\/)/i.test(maybeAbsolutePath);
|
21
|
-
};
|
22
|
-
|
23
|
-
/**
|
24
|
-
*
|
25
|
-
* @param {string} p path to normalize
|
26
|
-
* @returns {string} normalized version of path
|
27
|
-
*/
|
28
|
-
const normalizePathSeparator = p => p.replace(/\\/g, "/");
|
29
|
-
|
30
|
-
/**
|
31
|
-
*
|
32
|
-
* @param {string} context context for relative path
|
33
|
-
* @param {string} identifier identifier for path
|
34
|
-
* @returns {string} a converted relative path
|
35
|
-
*/
|
36
|
-
const _makePathsRelative = (context, identifier) => {
|
37
|
-
return identifier
|
38
|
-
.split(/([|! ])/)
|
39
|
-
.map(
|
40
|
-
str =>
|
41
|
-
looksLikeAbsolutePath(str)
|
42
|
-
? normalizePathSeparator(path.relative(context, str))
|
43
|
-
: str
|
44
|
-
)
|
45
|
-
.join("");
|
46
|
-
};
|
47
|
-
|
48
|
-
/**
|
49
|
-
*
|
50
|
-
* @param {string} context context used to create relative path
|
51
|
-
* @param {string} identifier identifier used to create relative path
|
52
|
-
* @param {MakeRelativePathsCache=} cache the cache object being set
|
53
|
-
* @returns {string} the returned relative path
|
54
|
-
*/
|
55
|
-
exports.makePathsRelative = (context, identifier, cache) => {
|
56
|
-
if (!cache) return _makePathsRelative(context, identifier);
|
57
|
-
|
58
|
-
const relativePaths =
|
59
|
-
cache.relativePaths || (cache.relativePaths = new Map());
|
60
|
-
|
61
|
-
let cachedResult;
|
62
|
-
let contextCache = relativePaths.get(context);
|
63
|
-
if (typeof contextCache === "undefined") {
|
64
|
-
relativePaths.set(context, (contextCache = new Map()));
|
65
|
-
} else {
|
66
|
-
cachedResult = contextCache.get(identifier);
|
67
|
-
}
|
68
|
-
|
69
|
-
if (typeof cachedResult !== "undefined") {
|
70
|
-
return cachedResult;
|
71
|
-
} else {
|
72
|
-
const relativePath = _makePathsRelative(context, identifier);
|
73
|
-
contextCache.set(identifier, relativePath);
|
74
|
-
return relativePath;
|
75
|
-
}
|
76
|
-
};
|
77
|
-
|
78
|
-
/**
|
79
|
-
* @param {string} context absolute context path
|
80
|
-
* @param {string} request any request string may containing absolute paths, query string, etc.
|
81
|
-
* @returns {string} a new request string avoiding absolute paths when possible
|
82
|
-
*/
|
83
|
-
exports.contextify = (context, request) => {
|
84
|
-
return request
|
85
|
-
.split("!")
|
86
|
-
.map(r => {
|
87
|
-
const splitPath = r.split("?", 2);
|
88
|
-
if (/^[a-zA-Z]:\\/.test(splitPath[0])) {
|
89
|
-
splitPath[0] = path.win32.relative(context, splitPath[0]);
|
90
|
-
if (!/^[a-zA-Z]:\\/.test(splitPath[0])) {
|
91
|
-
splitPath[0] = splitPath[0].replace(/\\/g, "/");
|
92
|
-
}
|
93
|
-
}
|
94
|
-
if (/^\//.test(splitPath[0])) {
|
95
|
-
splitPath[0] = path.posix.relative(context, splitPath[0]);
|
96
|
-
}
|
97
|
-
if (!/^(\.\.\/|\/|[a-zA-Z]:\\)/.test(splitPath[0])) {
|
98
|
-
splitPath[0] = "./" + splitPath[0];
|
99
|
-
}
|
100
|
-
return splitPath.join("?");
|
101
|
-
})
|
102
|
-
.join("!");
|
103
|
-
};
|
1
|
+
"use strict";
|
2
|
+
const path = require("path");
|
3
|
+
|
4
|
+
/**
|
5
|
+
* @typedef {Object} MakeRelativePathsCache
|
6
|
+
* @property {Map<string, Map<string, string>>=} relativePaths
|
7
|
+
*/
|
8
|
+
|
9
|
+
/**
|
10
|
+
*
|
11
|
+
* @param {string} maybeAbsolutePath path to check
|
12
|
+
* @returns {boolean} returns true if path is "Absolute Path"-like
|
13
|
+
*/
|
14
|
+
const looksLikeAbsolutePath = maybeAbsolutePath => {
|
15
|
+
if (/^\/.*\/$/.test(maybeAbsolutePath)) {
|
16
|
+
// this 'path' is actually a regexp generated by dynamic requires.
|
17
|
+
// Don't treat it as an absolute path.
|
18
|
+
return false;
|
19
|
+
}
|
20
|
+
return /^(?:[a-z]:\\|\/)/i.test(maybeAbsolutePath);
|
21
|
+
};
|
22
|
+
|
23
|
+
/**
|
24
|
+
*
|
25
|
+
* @param {string} p path to normalize
|
26
|
+
* @returns {string} normalized version of path
|
27
|
+
*/
|
28
|
+
const normalizePathSeparator = p => p.replace(/\\/g, "/");
|
29
|
+
|
30
|
+
/**
|
31
|
+
*
|
32
|
+
* @param {string} context context for relative path
|
33
|
+
* @param {string} identifier identifier for path
|
34
|
+
* @returns {string} a converted relative path
|
35
|
+
*/
|
36
|
+
const _makePathsRelative = (context, identifier) => {
|
37
|
+
return identifier
|
38
|
+
.split(/([|! ])/)
|
39
|
+
.map(
|
40
|
+
str =>
|
41
|
+
looksLikeAbsolutePath(str)
|
42
|
+
? normalizePathSeparator(path.relative(context, str))
|
43
|
+
: str
|
44
|
+
)
|
45
|
+
.join("");
|
46
|
+
};
|
47
|
+
|
48
|
+
/**
|
49
|
+
*
|
50
|
+
* @param {string} context context used to create relative path
|
51
|
+
* @param {string} identifier identifier used to create relative path
|
52
|
+
* @param {MakeRelativePathsCache=} cache the cache object being set
|
53
|
+
* @returns {string} the returned relative path
|
54
|
+
*/
|
55
|
+
exports.makePathsRelative = (context, identifier, cache) => {
|
56
|
+
if (!cache) return _makePathsRelative(context, identifier);
|
57
|
+
|
58
|
+
const relativePaths =
|
59
|
+
cache.relativePaths || (cache.relativePaths = new Map());
|
60
|
+
|
61
|
+
let cachedResult;
|
62
|
+
let contextCache = relativePaths.get(context);
|
63
|
+
if (typeof contextCache === "undefined") {
|
64
|
+
relativePaths.set(context, (contextCache = new Map()));
|
65
|
+
} else {
|
66
|
+
cachedResult = contextCache.get(identifier);
|
67
|
+
}
|
68
|
+
|
69
|
+
if (typeof cachedResult !== "undefined") {
|
70
|
+
return cachedResult;
|
71
|
+
} else {
|
72
|
+
const relativePath = _makePathsRelative(context, identifier);
|
73
|
+
contextCache.set(identifier, relativePath);
|
74
|
+
return relativePath;
|
75
|
+
}
|
76
|
+
};
|
77
|
+
|
78
|
+
/**
|
79
|
+
* @param {string} context absolute context path
|
80
|
+
* @param {string} request any request string may containing absolute paths, query string, etc.
|
81
|
+
* @returns {string} a new request string avoiding absolute paths when possible
|
82
|
+
*/
|
83
|
+
exports.contextify = (context, request) => {
|
84
|
+
return request
|
85
|
+
.split("!")
|
86
|
+
.map(r => {
|
87
|
+
const splitPath = r.split("?", 2);
|
88
|
+
if (/^[a-zA-Z]:\\/.test(splitPath[0])) {
|
89
|
+
splitPath[0] = path.win32.relative(context, splitPath[0]);
|
90
|
+
if (!/^[a-zA-Z]:\\/.test(splitPath[0])) {
|
91
|
+
splitPath[0] = splitPath[0].replace(/\\/g, "/");
|
92
|
+
}
|
93
|
+
}
|
94
|
+
if (/^\//.test(splitPath[0])) {
|
95
|
+
splitPath[0] = path.posix.relative(context, splitPath[0]);
|
96
|
+
}
|
97
|
+
if (!/^(\.\.\/|\/|[a-zA-Z]:\\)/.test(splitPath[0])) {
|
98
|
+
splitPath[0] = "./" + splitPath[0];
|
99
|
+
}
|
100
|
+
return splitPath.join("?");
|
101
|
+
})
|
102
|
+
.join("!");
|
103
|
+
};
|
package/lib/util/objectToMap.js
CHANGED
@@ -1,16 +1,16 @@
|
|
1
|
-
/**
|
2
|
-
* convert an object into its 2D array equivalent to be turned
|
3
|
-
* into an ES6 map
|
4
|
-
*
|
5
|
-
* @param {object} obj - any object type that works with Object.keys()
|
6
|
-
* @returns {Map<TODO, TODO>} an ES6 Map of KV pairs
|
7
|
-
*/
|
8
|
-
module.exports = function objectToMap(obj) {
|
9
|
-
return new Map(
|
10
|
-
Object.keys(obj).map(key => {
|
11
|
-
/** @type {[string, string]} */
|
12
|
-
const pair = [key, obj[key]];
|
13
|
-
return pair;
|
14
|
-
})
|
15
|
-
);
|
16
|
-
};
|
1
|
+
/**
|
2
|
+
* convert an object into its 2D array equivalent to be turned
|
3
|
+
* into an ES6 map
|
4
|
+
*
|
5
|
+
* @param {object} obj - any object type that works with Object.keys()
|
6
|
+
* @returns {Map<TODO, TODO>} an ES6 Map of KV pairs
|
7
|
+
*/
|
8
|
+
module.exports = function objectToMap(obj) {
|
9
|
+
return new Map(
|
10
|
+
Object.keys(obj).map(key => {
|
11
|
+
/** @type {[string, string]} */
|
12
|
+
const pair = [key, obj[key]];
|
13
|
+
return pair;
|
14
|
+
})
|
15
|
+
);
|
16
|
+
};
|
package/lib/validateSchema.js
CHANGED
@@ -1,67 +1,67 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Gajus Kuizinas @gajus
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const Ajv = require("ajv");
|
8
|
-
const ajv = new Ajv({
|
9
|
-
errorDataPath: "configuration",
|
10
|
-
allErrors: true,
|
11
|
-
verbose: true
|
12
|
-
});
|
13
|
-
require("ajv-keywords")(ajv, ["instanceof"]);
|
14
|
-
require("../schemas/ajv.absolutePath")(ajv);
|
15
|
-
|
16
|
-
const validateSchema = (schema, options) => {
|
17
|
-
if (Array.isArray(options)) {
|
18
|
-
const errors = options.map(options => validateObject(schema, options));
|
19
|
-
errors.forEach((list, idx) => {
|
20
|
-
const applyPrefix = err => {
|
21
|
-
err.dataPath = `[${idx}]${err.dataPath}`;
|
22
|
-
if (err.children) {
|
23
|
-
err.children.forEach(applyPrefix);
|
24
|
-
}
|
25
|
-
};
|
26
|
-
list.forEach(applyPrefix);
|
27
|
-
});
|
28
|
-
return errors.reduce((arr, items) => {
|
29
|
-
return arr.concat(items);
|
30
|
-
}, []);
|
31
|
-
} else {
|
32
|
-
return validateObject(schema, options);
|
33
|
-
}
|
34
|
-
};
|
35
|
-
|
36
|
-
const validateObject = (schema, options) => {
|
37
|
-
const validate = ajv.compile(schema);
|
38
|
-
const valid = validate(options);
|
39
|
-
return valid ? [] : filterErrors(validate.errors);
|
40
|
-
};
|
41
|
-
|
42
|
-
const filterErrors = errors => {
|
43
|
-
let newErrors = [];
|
44
|
-
for (const err of errors) {
|
45
|
-
const dataPath = err.dataPath;
|
46
|
-
let children = [];
|
47
|
-
newErrors = newErrors.filter(oldError => {
|
48
|
-
if (oldError.dataPath.includes(dataPath)) {
|
49
|
-
if (oldError.children) {
|
50
|
-
children = children.concat(oldError.children.slice(0));
|
51
|
-
}
|
52
|
-
oldError.children = undefined;
|
53
|
-
children.push(oldError);
|
54
|
-
return false;
|
55
|
-
}
|
56
|
-
return true;
|
57
|
-
});
|
58
|
-
if (children.length) {
|
59
|
-
err.children = children;
|
60
|
-
}
|
61
|
-
newErrors.push(err);
|
62
|
-
}
|
63
|
-
|
64
|
-
return newErrors;
|
65
|
-
};
|
66
|
-
|
67
|
-
module.exports = validateSchema;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Gajus Kuizinas @gajus
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const Ajv = require("ajv");
|
8
|
+
const ajv = new Ajv({
|
9
|
+
errorDataPath: "configuration",
|
10
|
+
allErrors: true,
|
11
|
+
verbose: true
|
12
|
+
});
|
13
|
+
require("ajv-keywords")(ajv, ["instanceof"]);
|
14
|
+
require("../schemas/ajv.absolutePath")(ajv);
|
15
|
+
|
16
|
+
const validateSchema = (schema, options) => {
|
17
|
+
if (Array.isArray(options)) {
|
18
|
+
const errors = options.map(options => validateObject(schema, options));
|
19
|
+
errors.forEach((list, idx) => {
|
20
|
+
const applyPrefix = err => {
|
21
|
+
err.dataPath = `[${idx}]${err.dataPath}`;
|
22
|
+
if (err.children) {
|
23
|
+
err.children.forEach(applyPrefix);
|
24
|
+
}
|
25
|
+
};
|
26
|
+
list.forEach(applyPrefix);
|
27
|
+
});
|
28
|
+
return errors.reduce((arr, items) => {
|
29
|
+
return arr.concat(items);
|
30
|
+
}, []);
|
31
|
+
} else {
|
32
|
+
return validateObject(schema, options);
|
33
|
+
}
|
34
|
+
};
|
35
|
+
|
36
|
+
const validateObject = (schema, options) => {
|
37
|
+
const validate = ajv.compile(schema);
|
38
|
+
const valid = validate(options);
|
39
|
+
return valid ? [] : filterErrors(validate.errors);
|
40
|
+
};
|
41
|
+
|
42
|
+
const filterErrors = errors => {
|
43
|
+
let newErrors = [];
|
44
|
+
for (const err of errors) {
|
45
|
+
const dataPath = err.dataPath;
|
46
|
+
let children = [];
|
47
|
+
newErrors = newErrors.filter(oldError => {
|
48
|
+
if (oldError.dataPath.includes(dataPath)) {
|
49
|
+
if (oldError.children) {
|
50
|
+
children = children.concat(oldError.children.slice(0));
|
51
|
+
}
|
52
|
+
oldError.children = undefined;
|
53
|
+
children.push(oldError);
|
54
|
+
return false;
|
55
|
+
}
|
56
|
+
return true;
|
57
|
+
});
|
58
|
+
if (children.length) {
|
59
|
+
err.children = children;
|
60
|
+
}
|
61
|
+
newErrors.push(err);
|
62
|
+
}
|
63
|
+
|
64
|
+
return newErrors;
|
65
|
+
};
|
66
|
+
|
67
|
+
module.exports = validateSchema;
|
@@ -1,17 +1,17 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
*/
|
4
|
-
"use strict";
|
5
|
-
|
6
|
-
const WebpackError = require("../WebpackError");
|
7
|
-
|
8
|
-
module.exports = class UnsupportedWebAssemblyFeatureError extends WebpackError {
|
9
|
-
/** @param {string} message Error message */
|
10
|
-
constructor(message) {
|
11
|
-
super(message);
|
12
|
-
this.name = "UnsupportedWebAssemblyFeatureError";
|
13
|
-
this.hideStack = true;
|
14
|
-
|
15
|
-
Error.captureStackTrace(this, this.constructor);
|
16
|
-
}
|
17
|
-
};
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
*/
|
4
|
+
"use strict";
|
5
|
+
|
6
|
+
const WebpackError = require("../WebpackError");
|
7
|
+
|
8
|
+
module.exports = class UnsupportedWebAssemblyFeatureError extends WebpackError {
|
9
|
+
/** @param {string} message Error message */
|
10
|
+
constructor(message) {
|
11
|
+
super(message);
|
12
|
+
this.name = "UnsupportedWebAssemblyFeatureError";
|
13
|
+
this.hideStack = true;
|
14
|
+
|
15
|
+
Error.captureStackTrace(this, this.constructor);
|
16
|
+
}
|
17
|
+
};
|
@@ -4,7 +4,7 @@
|
|
4
4
|
*/
|
5
5
|
"use strict";
|
6
6
|
|
7
|
-
const UnsupportedWebAssemblyFeatureError = require("
|
7
|
+
const UnsupportedWebAssemblyFeatureError = require("./UnsupportedWebAssemblyFeatureError");
|
8
8
|
|
9
9
|
class WasmFinalizeExportsPlugin {
|
10
10
|
apply(compiler) {
|
@@ -21,6 +21,10 @@ const WebAssemblyExportImportedDependency = require("../dependencies/WebAssembly
|
|
21
21
|
|
22
22
|
/** @typedef {import("../Module")} Module */
|
23
23
|
/** @typedef {import("./WebAssemblyUtils").UsedWasmDependency} UsedWasmDependency */
|
24
|
+
/** @typedef {import("../NormalModule")} NormalModule */
|
25
|
+
/** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
|
26
|
+
/** @typedef {import("webpack-sources").Source} Source */
|
27
|
+
/** @typedef {import("../Dependency").DependencyTemplate} DependencyTemplate */
|
24
28
|
|
25
29
|
/**
|
26
30
|
* @typedef {(ArrayBuffer) => ArrayBuffer} ArrayBufferTransform
|
@@ -366,7 +370,14 @@ class WebAssemblyGenerator extends Generator {
|
|
366
370
|
this.options = options;
|
367
371
|
}
|
368
372
|
|
369
|
-
|
373
|
+
/**
|
374
|
+
* @param {NormalModule} module module for which the code should be generated
|
375
|
+
* @param {Map<Function, DependencyTemplate>} dependencyTemplates mapping from dependencies to templates
|
376
|
+
* @param {RuntimeTemplate} runtimeTemplate the runtime template
|
377
|
+
* @param {string} type which kind of code should be generated
|
378
|
+
* @returns {Source} generated code
|
379
|
+
*/
|
380
|
+
generate(module, dependencyTemplates, runtimeTemplate, type) {
|
370
381
|
let bin = module.originalSource().source();
|
371
382
|
bin = preprocess(bin);
|
372
383
|
|
@@ -398,7 +409,10 @@ class WebAssemblyGenerator extends Generator {
|
|
398
409
|
const externalExports = new Set(
|
399
410
|
module.dependencies
|
400
411
|
.filter(d => d instanceof WebAssemblyExportImportedDependency)
|
401
|
-
.map(d =>
|
412
|
+
.map(d => {
|
413
|
+
const wasmDep = /** @type {WebAssemblyExportImportedDependency} */ (d);
|
414
|
+
return wasmDep.exportName;
|
415
|
+
})
|
402
416
|
);
|
403
417
|
|
404
418
|
/** @type {t.Instruction[]} */
|