webpack 5.59.0 → 5.76.0
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.
Potentially problematic release.
This version of webpack might be problematic. Click here for more details.
- package/README.md +22 -24
- package/bin/webpack.js +0 -0
- package/hot/dev-server.js +17 -4
- package/hot/lazy-compilation-node.js +3 -1
- package/hot/poll.js +1 -1
- package/hot/signal.js +1 -1
- package/lib/APIPlugin.js +33 -0
- package/lib/BannerPlugin.js +13 -5
- package/lib/Cache.js +1 -1
- package/lib/CacheFacade.js +4 -11
- package/lib/Chunk.js +6 -3
- package/lib/ChunkGraph.js +94 -8
- package/lib/ChunkGroup.js +1 -1
- package/lib/CleanPlugin.js +81 -20
- package/lib/Compilation.js +188 -93
- package/lib/Compiler.js +87 -18
- package/lib/ConstPlugin.js +2 -2
- package/lib/ContextModule.js +142 -51
- package/lib/ContextModuleFactory.js +65 -25
- package/lib/DelegatedModule.js +1 -1
- package/lib/DelegatedModuleFactoryPlugin.js +1 -1
- package/lib/Dependency.js +17 -0
- package/lib/DependencyTemplate.js +9 -0
- package/lib/DependencyTemplates.js +1 -1
- package/lib/DllModule.js +1 -1
- package/lib/DllReferencePlugin.js +1 -1
- package/lib/EntryOptionPlugin.js +2 -0
- package/lib/ErrorHelpers.js +2 -2
- package/lib/EvalDevToolModulePlugin.js +16 -1
- package/lib/EvalSourceMapDevToolPlugin.js +25 -4
- package/lib/ExportsInfo.js +5 -5
- package/lib/ExternalModule.js +94 -54
- package/lib/ExternalModuleFactoryPlugin.js +5 -5
- package/lib/FileSystemInfo.js +124 -58
- package/lib/Generator.js +3 -0
- package/lib/HookWebpackError.js +1 -1
- package/lib/HotModuleReplacementPlugin.js +3 -1
- package/lib/LoaderOptionsPlugin.js +1 -1
- package/lib/Module.js +28 -4
- package/lib/ModuleFilenameHelpers.js +8 -4
- package/lib/ModuleHashingError.js +29 -0
- package/lib/MultiCompiler.js +1 -1
- package/lib/MultiWatching.js +1 -1
- package/lib/NodeStuffPlugin.js +13 -3
- package/lib/NormalModule.js +51 -33
- package/lib/NormalModuleFactory.js +42 -37
- package/lib/ProgressPlugin.js +4 -5
- package/lib/RawModule.js +1 -1
- package/lib/RuntimeGlobals.js +29 -1
- package/lib/RuntimeModule.js +1 -1
- package/lib/RuntimePlugin.js +84 -1
- package/lib/RuntimeTemplate.js +114 -2
- package/lib/Template.js +3 -2
- package/lib/TemplatedPathPlugin.js +48 -23
- package/lib/WatchIgnorePlugin.js +19 -7
- package/lib/Watching.js +33 -19
- package/lib/WebpackOptionsApply.js +79 -11
- package/lib/asset/AssetGenerator.js +228 -71
- package/lib/asset/AssetModulesPlugin.js +3 -0
- package/lib/asset/AssetParser.js +1 -0
- package/lib/asset/AssetSourceGenerator.js +31 -6
- package/lib/asset/AssetSourceParser.js +1 -0
- package/lib/asset/RawDataUrlModule.js +148 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -4
- package/lib/buildChunkGraph.js +38 -7
- package/lib/cache/PackFileCacheStrategy.js +15 -8
- package/lib/cache/ResolverCachePlugin.js +90 -29
- package/lib/cli.js +44 -3
- package/lib/config/browserslistTargetHandler.js +41 -6
- package/lib/config/defaults.js +123 -19
- package/lib/config/normalization.js +10 -2
- package/lib/config/target.js +10 -0
- package/lib/container/ContainerEntryModule.js +8 -5
- package/lib/container/FallbackModule.js +4 -4
- package/lib/container/ModuleFederationPlugin.js +2 -0
- package/lib/container/RemoteModule.js +4 -2
- package/lib/container/RemoteRuntimeModule.js +8 -7
- package/lib/css/CssExportsGenerator.js +139 -0
- package/lib/css/CssGenerator.js +109 -0
- package/lib/css/CssLoadingRuntimeModule.js +442 -0
- package/lib/css/CssModulesPlugin.js +462 -0
- package/lib/css/CssParser.js +618 -0
- package/lib/css/walkCssTokens.js +659 -0
- package/lib/debug/ProfilingPlugin.js +24 -21
- package/lib/dependencies/AMDRequireDependency.js +6 -6
- package/lib/dependencies/CommonJsExportsParserPlugin.js +1 -2
- package/lib/dependencies/CommonJsFullRequireDependency.js +5 -1
- package/lib/dependencies/CommonJsImportsParserPlugin.js +344 -61
- package/lib/dependencies/CommonJsRequireContextDependency.js +6 -2
- package/lib/dependencies/CommonJsRequireDependency.js +2 -1
- package/lib/dependencies/ContextDependency.js +16 -2
- package/lib/dependencies/ContextDependencyHelpers.js +21 -8
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -1
- package/lib/dependencies/ContextElementDependency.js +25 -3
- package/lib/dependencies/CreateScriptUrlDependency.js +12 -0
- package/lib/dependencies/CssExportDependency.js +85 -0
- package/lib/dependencies/CssImportDependency.js +75 -0
- package/lib/dependencies/CssLocalIdentifierDependency.js +119 -0
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +101 -0
- package/lib/dependencies/CssUrlDependency.js +132 -0
- package/lib/dependencies/ExportsInfoDependency.js +6 -0
- package/lib/dependencies/HarmonyAcceptImportDependency.js +5 -3
- package/lib/dependencies/HarmonyCompatibilityDependency.js +5 -5
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +127 -0
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +12 -3
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +25 -17
- package/lib/dependencies/HarmonyExportInitFragment.js +4 -1
- package/lib/dependencies/HarmonyImportDependency.js +23 -0
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +142 -45
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +46 -22
- package/lib/dependencies/HarmonyModulesPlugin.js +10 -0
- package/lib/dependencies/ImportContextDependency.js +0 -2
- package/lib/dependencies/ImportMetaContextDependency.js +35 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +252 -0
- package/lib/dependencies/ImportMetaContextPlugin.js +59 -0
- package/lib/dependencies/ImportMetaPlugin.js +22 -3
- package/lib/dependencies/ImportParserPlugin.js +35 -29
- package/lib/dependencies/JsonExportsDependency.js +17 -21
- package/lib/dependencies/LoaderDependency.js +13 -0
- package/lib/dependencies/LoaderImportDependency.js +13 -0
- package/lib/dependencies/LoaderPlugin.js +4 -2
- package/lib/dependencies/ModuleDependency.js +11 -1
- package/lib/dependencies/ProvidedDependency.js +31 -8
- package/lib/dependencies/RequireContextDependency.js +0 -16
- package/lib/dependencies/RequireEnsureDependency.js +2 -2
- package/lib/dependencies/RequireResolveContextDependency.js +2 -2
- package/lib/dependencies/RequireResolveDependency.js +2 -1
- package/lib/dependencies/URLDependency.js +3 -8
- package/lib/dependencies/URLPlugin.js +22 -1
- package/lib/dependencies/WorkerPlugin.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +74 -49
- package/lib/esm/ModuleChunkLoadingPlugin.js +3 -1
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +25 -9
- package/lib/hmr/HotModuleReplacement.runtime.js +29 -14
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +4 -3
- package/lib/hmr/LazyCompilationPlugin.js +54 -26
- package/lib/hmr/lazyCompilationBackend.js +51 -12
- package/lib/ids/DeterministicModuleIdsPlugin.js +55 -35
- package/lib/ids/HashedModuleIdsPlugin.js +11 -14
- package/lib/ids/IdHelpers.js +26 -12
- package/lib/ids/NamedModuleIdsPlugin.js +6 -9
- package/lib/ids/NaturalModuleIdsPlugin.js +10 -13
- package/lib/ids/OccurrenceModuleIdsPlugin.js +13 -10
- package/lib/ids/SyncModuleIdsPlugin.js +140 -0
- package/lib/index.js +20 -0
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +2 -2
- package/lib/javascript/BasicEvaluatedExpression.js +5 -2
- package/lib/javascript/ChunkHelpers.js +33 -0
- package/lib/javascript/JavascriptGenerator.js +1 -0
- package/lib/javascript/JavascriptModulesPlugin.js +27 -2
- package/lib/javascript/JavascriptParser.js +143 -73
- package/lib/javascript/StartupHelpers.js +7 -30
- package/lib/json/JsonData.js +8 -0
- package/lib/json/JsonParser.js +4 -6
- package/lib/library/AssignLibraryPlugin.js +39 -15
- package/lib/library/EnableLibraryPlugin.js +11 -0
- package/lib/library/UmdLibraryPlugin.js +5 -3
- package/lib/node/NodeTargetPlugin.js +3 -0
- package/lib/node/NodeWatchFileSystem.js +85 -31
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +23 -8
- package/lib/node/RequireChunkLoadingRuntimeModule.js +24 -9
- package/lib/optimize/ConcatenatedModule.js +62 -26
- package/lib/optimize/ModuleConcatenationPlugin.js +26 -4
- package/lib/optimize/RealContentHashPlugin.js +45 -15
- package/lib/optimize/SplitChunksPlugin.js +8 -1
- package/lib/runtime/AsyncModuleRuntimeModule.js +50 -66
- package/lib/runtime/BaseUriRuntimeModule.js +31 -0
- package/lib/runtime/CreateScriptRuntimeModule.js +36 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +9 -34
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +76 -0
- package/lib/runtime/LoadScriptRuntimeModule.js +11 -9
- package/lib/runtime/NonceRuntimeModule.js +24 -0
- package/lib/schemes/HttpUriPlugin.js +77 -14
- package/lib/serialization/FileMiddleware.js +44 -9
- package/lib/sharing/ConsumeSharedModule.js +8 -2
- package/lib/sharing/ConsumeSharedRuntimeModule.js +26 -5
- package/lib/sharing/ProvideSharedModule.js +4 -2
- package/lib/sharing/ProvideSharedPlugin.js +1 -2
- package/lib/sharing/ShareRuntimeModule.js +1 -1
- package/lib/sharing/utils.js +1 -1
- package/lib/stats/DefaultStatsFactoryPlugin.js +113 -68
- package/lib/stats/DefaultStatsPrinterPlugin.js +90 -25
- package/lib/util/ArrayHelpers.js +30 -0
- package/lib/util/AsyncQueue.js +1 -1
- package/lib/util/compileBooleanMatcher.js +1 -1
- package/lib/util/create-schema-validation.js +9 -2
- package/lib/util/createHash.js +12 -0
- package/lib/util/deprecation.js +10 -2
- package/lib/util/deterministicGrouping.js +1 -1
- package/lib/util/extractUrlAndGlobal.js +3 -0
- package/lib/util/fs.js +11 -0
- package/lib/util/hash/BatchedHash.js +7 -4
- package/lib/util/hash/md4.js +20 -0
- package/lib/util/hash/wasm-hash.js +163 -0
- package/lib/util/hash/xxhash64.js +5 -139
- package/lib/util/identifier.js +65 -44
- package/lib/util/internalSerializables.js +15 -0
- package/lib/util/nonNumericOnlyHash.js +22 -0
- package/lib/util/semver.js +17 -10
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +9 -3
- package/lib/wasm-sync/WebAssemblyParser.js +1 -1
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +31 -18
- package/lib/webpack.js +10 -3
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -11
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +33 -22
- package/module.d.ts +215 -0
- package/package.json +28 -32
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +321 -30
- package/schemas/plugins/BannerPlugin.check.js +1 -1
- package/schemas/plugins/BannerPlugin.json +4 -0
- package/schemas/plugins/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/HashedModuleIdsPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +2 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.json +1 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +3 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssParserOptions.json +3 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.json +4 -0
- package/types.d.ts +869 -296
package/lib/CleanPlugin.js
CHANGED
@@ -16,8 +16,10 @@ const processAsyncTree = require("./util/processAsyncTree");
|
|
16
16
|
/** @typedef {import("./Compiler")} Compiler */
|
17
17
|
/** @typedef {import("./logging/Logger").Logger} Logger */
|
18
18
|
/** @typedef {import("./util/fs").OutputFileSystem} OutputFileSystem */
|
19
|
+
/** @typedef {import("./util/fs").StatsCallback} StatsCallback */
|
19
20
|
|
20
21
|
/** @typedef {(function(string):boolean)|RegExp} IgnoreItem */
|
22
|
+
/** @typedef {Map<string, number>} Assets */
|
21
23
|
/** @typedef {function(IgnoreItem): void} AddToIgnoreCallback */
|
22
24
|
|
23
25
|
/**
|
@@ -39,18 +41,32 @@ const validate = createSchemaValidation(
|
|
39
41
|
baseDataPath: "options"
|
40
42
|
}
|
41
43
|
);
|
44
|
+
const _10sec = 10 * 1000;
|
45
|
+
|
46
|
+
/**
|
47
|
+
* marge assets map 2 into map 1
|
48
|
+
* @param {Assets} as1 assets
|
49
|
+
* @param {Assets} as2 assets
|
50
|
+
* @returns {void}
|
51
|
+
*/
|
52
|
+
const mergeAssets = (as1, as2) => {
|
53
|
+
for (const [key, value1] of as2) {
|
54
|
+
const value2 = as1.get(key);
|
55
|
+
if (!value2 || value1 > value2) as1.set(key, value1);
|
56
|
+
}
|
57
|
+
};
|
42
58
|
|
43
59
|
/**
|
44
60
|
* @param {OutputFileSystem} fs filesystem
|
45
61
|
* @param {string} outputPath output path
|
46
|
-
* @param {
|
47
|
-
* @param {function(Error=, Set<string>=): void} callback returns the filenames of the assets that shouldn't be there
|
62
|
+
* @param {Map<string, number>} currentAssets filename of the current assets (must not start with .. or ., must only use / as path separator)
|
63
|
+
* @param {function((Error | null)=, Set<string>=): void} callback returns the filenames of the assets that shouldn't be there
|
48
64
|
* @returns {void}
|
49
65
|
*/
|
50
66
|
const getDiffToFs = (fs, outputPath, currentAssets, callback) => {
|
51
67
|
const directories = new Set();
|
52
68
|
// get directories of assets
|
53
|
-
for (const asset of currentAssets) {
|
69
|
+
for (const [asset] of currentAssets) {
|
54
70
|
directories.add(asset.replace(/(^|\/)[^/]*$/, ""));
|
55
71
|
}
|
56
72
|
// and all parent directories
|
@@ -90,18 +106,34 @@ const getDiffToFs = (fs, outputPath, currentAssets, callback) => {
|
|
90
106
|
};
|
91
107
|
|
92
108
|
/**
|
93
|
-
* @param {
|
94
|
-
* @param {
|
109
|
+
* @param {Assets} currentAssets assets list
|
110
|
+
* @param {Assets} oldAssets old assets list
|
95
111
|
* @returns {Set<string>} diff
|
96
112
|
*/
|
97
113
|
const getDiffToOldAssets = (currentAssets, oldAssets) => {
|
98
114
|
const diff = new Set();
|
99
|
-
|
115
|
+
const now = Date.now();
|
116
|
+
for (const [asset, ts] of oldAssets) {
|
117
|
+
if (ts >= now) continue;
|
100
118
|
if (!currentAssets.has(asset)) diff.add(asset);
|
101
119
|
}
|
102
120
|
return diff;
|
103
121
|
};
|
104
122
|
|
123
|
+
/**
|
124
|
+
* @param {OutputFileSystem} fs filesystem
|
125
|
+
* @param {string} filename path to file
|
126
|
+
* @param {StatsCallback} callback callback for provided filename
|
127
|
+
* @returns {void}
|
128
|
+
*/
|
129
|
+
const doStat = (fs, filename, callback) => {
|
130
|
+
if ("lstat" in fs) {
|
131
|
+
fs.lstat(filename, callback);
|
132
|
+
} else {
|
133
|
+
fs.stat(filename, callback);
|
134
|
+
}
|
135
|
+
};
|
136
|
+
|
105
137
|
/**
|
106
138
|
* @param {OutputFileSystem} fs filesystem
|
107
139
|
* @param {string} outputPath output path
|
@@ -109,7 +141,7 @@ const getDiffToOldAssets = (currentAssets, oldAssets) => {
|
|
109
141
|
* @param {Logger} logger logger
|
110
142
|
* @param {Set<string>} diff filenames of the assets that shouldn't be there
|
111
143
|
* @param {function(string): boolean} isKept check if the entry is ignored
|
112
|
-
* @param {function(Error=): void} callback callback
|
144
|
+
* @param {function(Error=, Assets=): void} callback callback
|
113
145
|
* @returns {void}
|
114
146
|
*/
|
115
147
|
const applyDiff = (fs, outputPath, dry, logger, diff, isKept, callback) => {
|
@@ -122,11 +154,13 @@ const applyDiff = (fs, outputPath, dry, logger, diff, isKept, callback) => {
|
|
122
154
|
};
|
123
155
|
/** @typedef {{ type: "check" | "unlink" | "rmdir", filename: string, parent: { remaining: number, job: Job } | undefined }} Job */
|
124
156
|
/** @type {Job[]} */
|
125
|
-
const jobs = Array.from(diff, filename => ({
|
157
|
+
const jobs = Array.from(diff.keys(), filename => ({
|
126
158
|
type: "check",
|
127
159
|
filename,
|
128
160
|
parent: undefined
|
129
161
|
}));
|
162
|
+
/** @type {Assets} */
|
163
|
+
const keptAssets = new Map();
|
130
164
|
processAsyncTree(
|
131
165
|
jobs,
|
132
166
|
10,
|
@@ -146,11 +180,12 @@ const applyDiff = (fs, outputPath, dry, logger, diff, isKept, callback) => {
|
|
146
180
|
switch (type) {
|
147
181
|
case "check":
|
148
182
|
if (isKept(filename)) {
|
183
|
+
keptAssets.set(filename, 0);
|
149
184
|
// do not decrement parent entry as we don't want to delete the parent
|
150
185
|
log(`${filename} will be kept`);
|
151
186
|
return process.nextTick(callback);
|
152
187
|
}
|
153
|
-
fs
|
188
|
+
doStat(fs, path, (err, stats) => {
|
154
189
|
if (err) return handleError(err);
|
155
190
|
if (!stats.isDirectory()) {
|
156
191
|
push({
|
@@ -232,7 +267,10 @@ const applyDiff = (fs, outputPath, dry, logger, diff, isKept, callback) => {
|
|
232
267
|
break;
|
233
268
|
}
|
234
269
|
},
|
235
|
-
|
270
|
+
err => {
|
271
|
+
if (err) return callback(err);
|
272
|
+
callback(undefined, keptAssets);
|
273
|
+
}
|
236
274
|
);
|
237
275
|
};
|
238
276
|
|
@@ -287,6 +325,7 @@ class CleanPlugin {
|
|
287
325
|
// We assume that no external modification happens while the compiler is active
|
288
326
|
// So we can store the old assets and only diff to them to avoid fs access on
|
289
327
|
// incremental builds
|
328
|
+
/** @type {undefined|Assets} */
|
290
329
|
let oldAssets;
|
291
330
|
|
292
331
|
compiler.hooks.emit.tapAsync(
|
@@ -307,7 +346,9 @@ class CleanPlugin {
|
|
307
346
|
);
|
308
347
|
}
|
309
348
|
|
310
|
-
|
349
|
+
/** @type {Assets} */
|
350
|
+
const currentAssets = new Map();
|
351
|
+
const now = Date.now();
|
311
352
|
for (const asset of Object.keys(compilation.assets)) {
|
312
353
|
if (/^[A-Za-z]:\\|^\/|^\\\\/.test(asset)) continue;
|
313
354
|
let normalizedAsset;
|
@@ -320,7 +361,12 @@ class CleanPlugin {
|
|
320
361
|
);
|
321
362
|
} while (newNormalizedAsset !== normalizedAsset);
|
322
363
|
if (normalizedAsset.startsWith("../")) continue;
|
323
|
-
|
364
|
+
const assetInfo = compilation.assetsInfo.get(asset);
|
365
|
+
if (assetInfo && assetInfo.hotModuleReplacement) {
|
366
|
+
currentAssets.set(normalizedAsset, now + _10sec);
|
367
|
+
} else {
|
368
|
+
currentAssets.set(normalizedAsset, 0);
|
369
|
+
}
|
324
370
|
}
|
325
371
|
|
326
372
|
const outputPath = compilation.getPath(compiler.outputPath, {});
|
@@ -331,19 +377,34 @@ class CleanPlugin {
|
|
331
377
|
return keepFn(path);
|
332
378
|
};
|
333
379
|
|
380
|
+
/**
|
381
|
+
* @param {Error=} err err
|
382
|
+
* @param {Set<string>=} diff diff
|
383
|
+
*/
|
334
384
|
const diffCallback = (err, diff) => {
|
335
385
|
if (err) {
|
336
386
|
oldAssets = undefined;
|
337
|
-
|
387
|
+
callback(err);
|
388
|
+
return;
|
338
389
|
}
|
339
|
-
applyDiff(
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
390
|
+
applyDiff(
|
391
|
+
fs,
|
392
|
+
outputPath,
|
393
|
+
dry,
|
394
|
+
logger,
|
395
|
+
diff,
|
396
|
+
isKept,
|
397
|
+
(err, keptAssets) => {
|
398
|
+
if (err) {
|
399
|
+
oldAssets = undefined;
|
400
|
+
} else {
|
401
|
+
if (oldAssets) mergeAssets(currentAssets, oldAssets);
|
402
|
+
oldAssets = currentAssets;
|
403
|
+
if (keptAssets) mergeAssets(oldAssets, keptAssets);
|
404
|
+
}
|
405
|
+
callback(err);
|
344
406
|
}
|
345
|
-
|
346
|
-
});
|
407
|
+
);
|
347
408
|
};
|
348
409
|
|
349
410
|
if (oldAssets) {
|