webpack 4.9.1 → 4.10.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/README.md +755 -755
- package/SECURITY.md +9 -9
- package/buildin/global.js +20 -20
- package/buildin/harmony-module.js +24 -24
- package/buildin/module.js +22 -22
- package/hot/dev-server.js +61 -61
- 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 +37 -37
- package/hot/signal.js +62 -62
- package/lib/APIPlugin.js +84 -84
- package/lib/AmdMainTemplatePlugin.js +87 -75
- package/lib/AsyncDependenciesBlock.js +66 -66
- package/lib/AsyncDependencyToInitialChunkError.js +31 -21
- package/lib/AutomaticPrefetchPlugin.js +50 -50
- package/lib/BannerPlugin.js +3 -1
- package/lib/BasicEvaluatedExpression.js +211 -208
- package/lib/CachePlugin.js +102 -95
- package/lib/CaseSensitiveModulesWarning.js +71 -53
- package/lib/Chunk.js +750 -722
- package/lib/ChunkGroup.js +13 -5
- package/lib/ChunkRenderError.js +32 -32
- package/lib/CompatibilityPlugin.js +63 -63
- package/lib/Compilation.js +1947 -1905
- package/lib/Compiler.js +508 -496
- package/lib/ConcurrentCompilationError.js +19 -19
- package/lib/ConstPlugin.js +258 -242
- package/lib/ContextExclusionPlugin.js +17 -17
- package/lib/ContextModule.js +749 -710
- package/lib/ContextModuleFactory.js +256 -245
- package/lib/ContextReplacementPlugin.js +133 -126
- package/lib/DefinePlugin.js +206 -197
- package/lib/DelegatedModule.js +101 -101
- package/lib/DelegatedModuleFactoryPlugin.js +89 -89
- package/lib/DelegatedPlugin.js +39 -39
- package/lib/DependenciesBlock.js +89 -87
- package/lib/DependenciesBlockVariable.js +52 -51
- package/lib/Dependency.js +51 -51
- package/lib/DllEntryPlugin.js +51 -51
- package/lib/DllModule.js +54 -54
- package/lib/DllModuleFactory.js +29 -29
- package/lib/DllPlugin.js +44 -42
- package/lib/DllReferencePlugin.js +84 -84
- package/lib/DynamicEntryPlugin.js +73 -71
- package/lib/EntryOptionPlugin.js +33 -33
- package/lib/EnvironmentPlugin.js +65 -65
- package/lib/ErrorHelpers.js +60 -57
- package/lib/EvalDevToolModulePlugin.js +27 -27
- package/lib/EvalDevToolModuleTemplatePlugin.js +61 -61
- package/lib/EvalSourceMapDevToolPlugin.js +41 -40
- package/lib/ExportPropertyMainTemplatePlugin.js +53 -40
- package/lib/ExtendedAPIPlugin.js +84 -84
- package/lib/ExternalModule.js +159 -159
- package/lib/ExternalModuleFactoryPlugin.js +110 -110
- package/lib/ExternalsPlugin.js +23 -23
- package/lib/FlagDependencyExportsPlugin.js +146 -146
- package/lib/FlagDependencyUsagePlugin.js +110 -104
- package/lib/FlagInitialModulesAsUsedPlugin.js +36 -36
- package/lib/FunctionModulePlugin.js +19 -19
- package/lib/FunctionModuleTemplatePlugin.js +100 -98
- package/lib/GraphHelpers.js +64 -64
- package/lib/HarmonyLinkingError.js +18 -18
- package/lib/HashedModuleIdsPlugin.js +53 -53
- package/lib/HotModuleReplacement.runtime.js +7 -3
- package/lib/HotModuleReplacementPlugin.js +413 -406
- package/lib/HotUpdateChunk.js +16 -16
- package/lib/HotUpdateChunkTemplate.js +78 -78
- package/lib/IgnorePlugin.js +71 -71
- package/lib/JavascriptGenerator.js +229 -228
- package/lib/JavascriptModulesPlugin.js +179 -184
- package/lib/JsonGenerator.js +42 -42
- package/lib/JsonModulesPlugin.js +30 -30
- package/lib/JsonParser.js +27 -26
- package/lib/LibManifestPlugin.js +86 -86
- package/lib/LibraryTemplatePlugin.js +153 -119
- package/lib/LoaderOptionsPlugin.js +53 -52
- package/lib/LoaderTargetPlugin.js +24 -24
- package/lib/MainTemplate.js +34 -9
- package/lib/Module.js +381 -377
- package/lib/ModuleBuildError.js +42 -42
- package/lib/ModuleDependencyError.js +35 -25
- package/lib/ModuleDependencyWarning.js +25 -25
- package/lib/ModuleError.js +28 -28
- package/lib/ModuleFilenameHelpers.js +178 -166
- package/lib/ModuleParseError.js +44 -44
- package/lib/ModuleReason.js +40 -40
- package/lib/ModuleTemplate.js +84 -84
- package/lib/ModuleWarning.js +30 -30
- package/lib/MultiCompiler.js +283 -271
- package/lib/MultiEntryPlugin.js +58 -58
- package/lib/MultiModule.js +81 -78
- 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 +179 -178
- package/lib/NormalModule.js +497 -490
- package/lib/NormalModuleFactory.js +501 -483
- package/lib/NormalModuleReplacementPlugin.js +51 -51
- package/lib/OptionsDefaulter.js +84 -80
- package/lib/Parser.js +2164 -2086
- package/lib/ParserHelpers.js +103 -100
- package/lib/PrefetchPlugin.js +37 -37
- package/lib/ProgressPlugin.js +231 -231
- package/lib/ProvidePlugin.js +86 -86
- package/lib/RawModule.js +56 -54
- package/lib/RecordIdsPlugin.js +166 -162
- package/lib/RemovedPluginError.js +13 -13
- package/lib/RequestShortener.js +81 -74
- package/lib/RequireJsStuffPlugin.js +69 -69
- package/lib/ResolverFactory.js +64 -64
- package/lib/RuleSet.js +555 -534
- package/lib/RuntimeTemplate.js +320 -277
- package/lib/SetVarMainTemplatePlugin.js +69 -57
- package/lib/SingleEntryPlugin.js +44 -44
- package/lib/SizeFormatHelpers.js +24 -24
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +49 -49
- package/lib/SourceMapDevToolPlugin.js +301 -300
- package/lib/Stats.js +1408 -1367
- package/lib/Template.js +4 -2
- package/lib/TemplatedPathPlugin.js +173 -170
- package/lib/UmdMainTemplatePlugin.js +304 -264
- package/lib/UseStrictPlugin.js +48 -48
- package/lib/WarnCaseSensitiveModulesPlugin.js +37 -36
- package/lib/WarnNoModeSetPlugin.js +17 -17
- package/lib/WatchIgnorePlugin.js +100 -100
- package/lib/Watching.js +194 -193
- package/lib/WebpackError.js +25 -19
- package/lib/WebpackOptionsApply.js +421 -405
- package/lib/WebpackOptionsDefaulter.js +347 -344
- package/lib/WebpackOptionsValidationError.js +345 -316
- package/lib/compareLocations.js +56 -56
- package/lib/dependencies/AMDDefineDependency.js +137 -137
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +336 -327
- package/lib/dependencies/AMDPlugin.js +250 -250
- package/lib/dependencies/AMDRequireArrayDependency.js +49 -49
- package/lib/dependencies/AMDRequireContextDependency.js +20 -20
- package/lib/dependencies/AMDRequireDependenciesBlock.js +43 -43
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +273 -270
- package/lib/dependencies/AMDRequireDependency.js +135 -135
- package/lib/dependencies/CommonJsPlugin.js +161 -161
- package/lib/dependencies/CommonJsRequireContextDependency.js +23 -23
- package/lib/dependencies/CommonJsRequireDependencyParserPlugin.js +130 -130
- package/lib/dependencies/ConstDependency.js +33 -33
- package/lib/dependencies/ContextDependency.js +68 -68
- package/lib/dependencies/ContextDependencyTemplateAsId.js +42 -42
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +38 -38
- package/lib/dependencies/ContextElementDependency.js +21 -21
- package/lib/dependencies/DelegatedExportsDependency.js +33 -33
- package/lib/dependencies/DependencyReference.js +18 -18
- package/lib/dependencies/HarmonyAcceptDependency.js +45 -45
- package/lib/dependencies/HarmonyAcceptImportDependency.js +23 -23
- package/lib/dependencies/HarmonyCompatibilityDependency.js +31 -31
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +92 -90
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +139 -139
- package/lib/dependencies/HarmonyExportExpressionDependency.js +53 -53
- package/lib/dependencies/HarmonyExportHeaderDependency.js +30 -30
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +620 -603
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +54 -54
- package/lib/dependencies/HarmonyImportDependency.js +104 -94
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +217 -214
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +31 -31
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +166 -156
- 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 +233 -232
- package/lib/dependencies/ImportPlugin.js +82 -82
- package/lib/dependencies/ImportWeakDependency.js +34 -34
- package/lib/dependencies/JsonExportsDependency.js +26 -26
- package/lib/dependencies/LoaderPlugin.js +98 -93
- package/lib/dependencies/LocalModuleDependency.js +28 -28
- package/lib/dependencies/LocalModulesHelpers.js +52 -45
- package/lib/dependencies/ModuleDependency.js +20 -20
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +17 -17
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +17 -17
- package/lib/dependencies/MultiEntryDependency.js +20 -20
- package/lib/dependencies/NullDependency.js +20 -20
- package/lib/dependencies/RequireContextDependency.js +22 -22
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +56 -56
- package/lib/dependencies/RequireContextPlugin.js +143 -141
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +33 -33
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +116 -112
- package/lib/dependencies/RequireEnsureDependency.js +58 -58
- package/lib/dependencies/RequireEnsurePlugin.js +74 -74
- package/lib/dependencies/RequireHeaderDependency.js +26 -26
- package/lib/dependencies/RequireIncludeDependency.js +39 -39
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +23 -23
- package/lib/dependencies/RequireIncludePlugin.js +61 -61
- package/lib/dependencies/RequireResolveContextDependency.js +23 -23
- package/lib/dependencies/RequireResolveDependencyParserPlugin.js +85 -85
- package/lib/dependencies/RequireResolveHeaderDependency.js +26 -26
- package/lib/dependencies/SingleEntryDependency.js +18 -18
- package/lib/dependencies/SystemPlugin.js +125 -125
- package/lib/dependencies/UnsupportedDependency.js +27 -27
- package/lib/dependencies/WebAssemblyImportDependency.js +48 -44
- package/lib/dependencies/WebpackMissingModule.js +20 -20
- package/lib/dependencies/getFunctionExpression.js +52 -52
- package/lib/formatLocation.js +61 -53
- 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/NodeMainTemplateAsync.runtime.js +44 -44
- package/lib/node/NodeMainTemplatePlugin.js +323 -320
- package/lib/node/NodeSourcePlugin.js +144 -140
- package/lib/node/NodeTargetPlugin.js +18 -18
- package/lib/node/NodeTemplatePlugin.js +31 -31
- package/lib/node/NodeWatchFileSystem.js +99 -82
- package/lib/node/ReadFileCompileWasmTemplatePlugin.js +52 -52
- package/lib/optimize/AggressiveMergingPlugin.js +87 -87
- package/lib/optimize/AggressiveSplittingPlugin.js +287 -281
- package/lib/optimize/ChunkModuleIdRangePlugin.js +68 -68
- package/lib/optimize/ConcatenatedModule.js +1420 -1413
- 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 -75
- package/lib/optimize/MinChunkSizePlugin.js +77 -77
- package/lib/optimize/ModuleConcatenationPlugin.js +470 -457
- package/lib/optimize/OccurrenceOrderPlugin.js +133 -126
- package/lib/optimize/RemoveParentModulesPlugin.js +127 -117
- package/lib/optimize/RuntimeChunkPlugin.js +41 -41
- package/lib/optimize/SideEffectsFlagPlugin.js +158 -156
- package/lib/optimize/SplitChunksPlugin.js +709 -696
- package/lib/performance/AssetsOverSizeLimitWarning.js +30 -30
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +31 -31
- package/lib/performance/NoAsyncChunksWarning.js +21 -21
- package/lib/performance/SizeLimitsPlugin.js +105 -105
- package/lib/util/Semaphore.js +41 -41
- package/lib/util/SortableSet.js +5 -2
- package/lib/util/StackedSetMap.js +12 -5
- package/lib/util/TrackingSet.js +35 -35
- package/lib/util/cachedMerge.js +35 -35
- package/lib/util/createHash.js +77 -77
- package/lib/util/identifier.js +76 -76
- package/lib/validateSchema.js +67 -67
- package/lib/wasm/UnsupportedWebAssemblyFeatureError.js +18 -18
- package/lib/wasm/WasmMainTemplatePlugin.js +310 -304
- package/lib/wasm/WebAssemblyGenerator.js +143 -19
- package/lib/wasm/WebAssemblyJavascriptGenerator.js +90 -107
- package/lib/wasm/WebAssemblyModulesPlugin.js +80 -80
- package/lib/wasm/WebAssemblyParser.js +28 -5
- package/lib/wasm/WebAssemblyUtils.js +48 -0
- package/lib/web/FetchCompileWasmTemplatePlugin.js +25 -25
- package/lib/web/JsonpChunkTemplatePlugin.js +47 -47
- package/lib/web/JsonpExportMainTemplatePlugin.js +47 -47
- package/lib/web/JsonpHotUpdateChunkTemplatePlugin.js +39 -39
- package/lib/web/JsonpMainTemplate.runtime.js +65 -64
- package/lib/web/JsonpMainTemplatePlugin.js +576 -574
- package/lib/web/JsonpTemplatePlugin.js +23 -23
- package/lib/webpack.js +183 -182
- package/lib/webpack.web.js +31 -31
- package/lib/webworker/WebWorkerChunkTemplatePlugin.js +35 -35
- package/lib/webworker/WebWorkerHotUpdateChunkTemplatePlugin.js +40 -40
- package/lib/webworker/WebWorkerMainTemplate.runtime.js +65 -64
- package/lib/webworker/WebWorkerMainTemplatePlugin.js +179 -179
- package/lib/webworker/WebWorkerTemplatePlugin.js +25 -25
- package/package.json +9 -8
- package/schemas/WebpackOptions.json +1988 -1988
- package/schemas/ajv.absolutePath.js +55 -55
- 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/lib/util/createHash.js
CHANGED
@@ -1,77 +1,77 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const BULK_SIZE = 1000;
|
8
|
-
|
9
|
-
class BulkUpdateDecorator {
|
10
|
-
constructor(hash) {
|
11
|
-
this.hash = hash;
|
12
|
-
this.buffer = "";
|
13
|
-
}
|
14
|
-
|
15
|
-
update(data, inputEncoding) {
|
16
|
-
if (
|
17
|
-
inputEncoding !== undefined ||
|
18
|
-
typeof data !== "string" ||
|
19
|
-
data.length > BULK_SIZE
|
20
|
-
) {
|
21
|
-
if (this.buffer.length > 0) {
|
22
|
-
this.hash.update(this.buffer);
|
23
|
-
this.buffer = "";
|
24
|
-
}
|
25
|
-
this.hash.update(data, inputEncoding);
|
26
|
-
} else {
|
27
|
-
this.buffer += data;
|
28
|
-
if (this.buffer.length > BULK_SIZE) {
|
29
|
-
this.hash.update(this.buffer);
|
30
|
-
this.buffer = "";
|
31
|
-
}
|
32
|
-
}
|
33
|
-
return this;
|
34
|
-
}
|
35
|
-
|
36
|
-
digest(encoding) {
|
37
|
-
if (this.buffer.length > 0) {
|
38
|
-
this.hash.update(this.buffer);
|
39
|
-
}
|
40
|
-
var digestResult = this.hash.digest(encoding);
|
41
|
-
return typeof digestResult === "string"
|
42
|
-
? digestResult
|
43
|
-
: digestResult.toString();
|
44
|
-
}
|
45
|
-
}
|
46
|
-
|
47
|
-
/* istanbul ignore next */
|
48
|
-
class DebugHash {
|
49
|
-
constructor() {
|
50
|
-
this.string = "";
|
51
|
-
}
|
52
|
-
|
53
|
-
update(data, inputEncoding) {
|
54
|
-
if (typeof data !== "string") data = data.toString("utf-8");
|
55
|
-
this.string += data;
|
56
|
-
return this;
|
57
|
-
}
|
58
|
-
|
59
|
-
digest(encoding) {
|
60
|
-
return this.string.replace(/[^a-z0-9]+/gi, m =>
|
61
|
-
Buffer.from(m).toString("hex")
|
62
|
-
);
|
63
|
-
}
|
64
|
-
}
|
65
|
-
|
66
|
-
module.exports = algorithm => {
|
67
|
-
if (typeof algorithm === "function") {
|
68
|
-
return new BulkUpdateDecorator(new algorithm());
|
69
|
-
}
|
70
|
-
switch (algorithm) {
|
71
|
-
// TODO add non-cryptographic algorithm here
|
72
|
-
case "debug":
|
73
|
-
return new DebugHash();
|
74
|
-
default:
|
75
|
-
return new BulkUpdateDecorator(require("crypto").createHash(algorithm));
|
76
|
-
}
|
77
|
-
};
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const BULK_SIZE = 1000;
|
8
|
+
|
9
|
+
class BulkUpdateDecorator {
|
10
|
+
constructor(hash) {
|
11
|
+
this.hash = hash;
|
12
|
+
this.buffer = "";
|
13
|
+
}
|
14
|
+
|
15
|
+
update(data, inputEncoding) {
|
16
|
+
if (
|
17
|
+
inputEncoding !== undefined ||
|
18
|
+
typeof data !== "string" ||
|
19
|
+
data.length > BULK_SIZE
|
20
|
+
) {
|
21
|
+
if (this.buffer.length > 0) {
|
22
|
+
this.hash.update(this.buffer);
|
23
|
+
this.buffer = "";
|
24
|
+
}
|
25
|
+
this.hash.update(data, inputEncoding);
|
26
|
+
} else {
|
27
|
+
this.buffer += data;
|
28
|
+
if (this.buffer.length > BULK_SIZE) {
|
29
|
+
this.hash.update(this.buffer);
|
30
|
+
this.buffer = "";
|
31
|
+
}
|
32
|
+
}
|
33
|
+
return this;
|
34
|
+
}
|
35
|
+
|
36
|
+
digest(encoding) {
|
37
|
+
if (this.buffer.length > 0) {
|
38
|
+
this.hash.update(this.buffer);
|
39
|
+
}
|
40
|
+
var digestResult = this.hash.digest(encoding);
|
41
|
+
return typeof digestResult === "string"
|
42
|
+
? digestResult
|
43
|
+
: digestResult.toString();
|
44
|
+
}
|
45
|
+
}
|
46
|
+
|
47
|
+
/* istanbul ignore next */
|
48
|
+
class DebugHash {
|
49
|
+
constructor() {
|
50
|
+
this.string = "";
|
51
|
+
}
|
52
|
+
|
53
|
+
update(data, inputEncoding) {
|
54
|
+
if (typeof data !== "string") data = data.toString("utf-8");
|
55
|
+
this.string += data;
|
56
|
+
return this;
|
57
|
+
}
|
58
|
+
|
59
|
+
digest(encoding) {
|
60
|
+
return this.string.replace(/[^a-z0-9]+/gi, m =>
|
61
|
+
Buffer.from(m).toString("hex")
|
62
|
+
);
|
63
|
+
}
|
64
|
+
}
|
65
|
+
|
66
|
+
module.exports = algorithm => {
|
67
|
+
if (typeof algorithm === "function") {
|
68
|
+
return new BulkUpdateDecorator(new algorithm());
|
69
|
+
}
|
70
|
+
switch (algorithm) {
|
71
|
+
// TODO add non-cryptographic algorithm here
|
72
|
+
case "debug":
|
73
|
+
return new DebugHash();
|
74
|
+
default:
|
75
|
+
return new BulkUpdateDecorator(require("crypto").createHash(algorithm));
|
76
|
+
}
|
77
|
+
};
|
package/lib/util/identifier.js
CHANGED
@@ -1,76 +1,76 @@
|
|
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
|
-
};
|
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
|
+
};
|
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,18 +1,18 @@
|
|
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();
|
12
|
-
this.name = "UnsupportedWebAssemblyFeatureError";
|
13
|
-
this.message = message;
|
14
|
-
this.hideStack = true;
|
15
|
-
|
16
|
-
Error.captureStackTrace(this, this.constructor);
|
17
|
-
}
|
18
|
-
};
|
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();
|
12
|
+
this.name = "UnsupportedWebAssemblyFeatureError";
|
13
|
+
this.message = message;
|
14
|
+
this.hideStack = true;
|
15
|
+
|
16
|
+
Error.captureStackTrace(this, this.constructor);
|
17
|
+
}
|
18
|
+
};
|