webpack 1.13.3 → 1.14.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.
- package/LICENSE +22 -22
- package/README.md +310 -310
- package/buildin/amd-define.js +1 -1
- package/buildin/amd-options.js +1 -1
- package/buildin/module.js +10 -10
- package/hot/dev-server.js +63 -63
- package/hot/log-apply-result.js +25 -25
- package/hot/only-dev-server.js +77 -77
- package/hot/poll.js +37 -37
- package/hot/signal.js +65 -65
- package/lib/APIPlugin.js +49 -49
- package/lib/AbstractPlugin.js +22 -22
- package/lib/AmdMainTemplatePlugin.js +43 -43
- package/lib/ArrayMap.js +50 -50
- package/lib/AsyncDependenciesBlock.js +39 -39
- package/lib/AutomaticPrefetchPlugin.js +35 -35
- package/lib/BannerPlugin.js +34 -34
- package/lib/BasicEvaluatedExpression.js +140 -140
- package/lib/CachePlugin.js +43 -43
- package/lib/CaseSensitiveModulesWarning.js +16 -16
- package/lib/Chunk.js +252 -252
- package/lib/ChunkRenderError.js +17 -17
- package/lib/ChunkTemplate.js +37 -37
- package/lib/CompatibilityPlugin.js +42 -42
- package/lib/Compilation.js +891 -891
- package/lib/Compiler.js +407 -407
- package/lib/ConcatSource.js +5 -5
- package/lib/ConstPlugin.js +54 -54
- package/lib/ContextModule.js +130 -130
- package/lib/ContextModuleFactory.js +132 -132
- package/lib/ContextReplacementPlugin.js +93 -93
- package/lib/CriticalDependenciesWarning.js +24 -24
- package/lib/DefinePlugin.js +126 -126
- package/lib/DelegatedModule.js +69 -69
- package/lib/DelegatedModuleFactoryPlugin.js +51 -51
- package/lib/DelegatedPlugin.js +21 -21
- package/lib/DependenciesBlock.js +57 -57
- package/lib/DependenciesBlockVariable.js +41 -41
- package/lib/Dependency.js +54 -54
- package/lib/DllEntryPlugin.js +32 -32
- package/lib/DllModule.js +55 -55
- package/lib/DllModuleFactory.js +18 -18
- package/lib/DllPlugin.js +30 -30
- package/lib/DllReferencePlugin.js +26 -26
- package/lib/EntryModuleNotFoundError.js +15 -15
- package/lib/EntryOptionPlugin.js +28 -28
- package/lib/EnvironmentPlugin.js +28 -28
- package/lib/EvalDevToolModulePlugin.js +17 -17
- package/lib/EvalDevToolModuleTemplatePlugin.js +29 -29
- package/lib/EvalSourceMapDevToolModuleTemplatePlugin.js +68 -68
- package/lib/EvalSourceMapDevToolPlugin.js +25 -25
- package/lib/ExtendedAPIPlugin.js +45 -45
- package/lib/ExternalModule.js +89 -89
- package/lib/ExternalModuleFactoryPlugin.js +86 -86
- package/lib/ExternalsPlugin.js +16 -16
- package/lib/FunctionModulePlugin.js +18 -18
- package/lib/FunctionModuleTemplatePlugin.js +39 -39
- package/lib/HotModuleReplacement.runtime.js +486 -486
- package/lib/HotModuleReplacementPlugin.js +223 -223
- package/lib/HotUpdateChunkTemplate.js +28 -28
- package/lib/IgnorePlugin.js +32 -32
- package/lib/JsonpChunkTemplatePlugin.js +26 -26
- package/lib/JsonpExportMainTemplatePlugin.js +28 -28
- package/lib/JsonpHotUpdateChunkTemplatePlugin.js +26 -26
- package/lib/JsonpMainTemplate.runtime.js +56 -56
- package/lib/JsonpMainTemplatePlugin.js +162 -162
- package/lib/JsonpTemplatePlugin.js +17 -17
- package/lib/LibManifestPlugin.js +49 -49
- package/lib/LibraryTemplatePlugin.js +77 -77
- package/lib/LoaderTargetPlugin.js +16 -16
- package/lib/MainTemplate.js +169 -169
- package/lib/MemoryOutputFileSystem.js +5 -5
- package/lib/Module.js +116 -116
- package/lib/ModuleFilenameHelpers.js +157 -157
- package/lib/ModuleNotFoundError.js +17 -17
- package/lib/ModuleParseError.js +26 -26
- package/lib/ModuleParserHelpers.js +21 -21
- package/lib/ModuleReason.js +9 -9
- package/lib/ModuleTemplate.js +23 -23
- package/lib/MovedToPluginWarningPlugin.js +17 -17
- package/lib/MultiCompiler.js +166 -166
- package/lib/MultiEntryPlugin.js +31 -31
- package/lib/MultiModule.js +71 -71
- package/lib/MultiModuleFactory.js +18 -18
- package/lib/NamedModulesPlugin.js +21 -21
- package/lib/NewWatchingPlugin.js +12 -12
- package/lib/NoErrorsPlugin.js +18 -18
- package/lib/NodeStuffPlugin.js +99 -99
- package/lib/NormalModule.js +322 -322
- package/lib/NormalModuleFactory.js +171 -171
- package/lib/NormalModuleReplacementPlugin.js +40 -40
- package/lib/NullFactory.js +10 -10
- package/lib/OldWatchingPlugin.js +14 -14
- package/lib/OptionsApply.js +10 -10
- package/lib/OriginalSource.js +5 -5
- package/lib/Parser.js +938 -938
- package/lib/PrefetchPlugin.js +25 -25
- package/lib/ProgressPlugin.js +80 -80
- package/lib/ProvidePlugin.js +48 -48
- package/lib/RawModule.js +65 -65
- package/lib/RawSource.js +5 -5
- package/lib/RecordIdsPlugin.js +130 -130
- package/lib/RequestShortener.js +56 -56
- package/lib/RequireJsStuffPlugin.js +38 -38
- package/lib/ResolverPlugin.js +34 -34
- package/lib/SetVarMainTemplatePlugin.js +36 -36
- package/lib/SingleEntryPlugin.js +24 -24
- package/lib/Source.js +5 -5
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +33 -33
- package/lib/SourceMapDevToolPlugin.js +168 -168
- package/lib/SourceMapSource.js +5 -5
- package/lib/Stats.js +732 -732
- package/lib/Template.js +119 -119
- package/lib/TemplatedPathPlugin.js +111 -111
- package/lib/UmdMainTemplatePlugin.js +146 -146
- package/lib/UnsupportedFeatureWarning.js +14 -14
- package/lib/WarnCaseSensitiveModulesPlugin.js +27 -27
- package/lib/WatchIgnorePlugin.js +45 -45
- package/lib/WebpackOptionsApply.js +376 -376
- package/lib/WebpackOptionsDefaulter.js +112 -112
- package/lib/dependencies/AMDDefineDependency.js +63 -63
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +240 -240
- package/lib/dependencies/AMDPlugin.js +115 -115
- package/lib/dependencies/AMDRequireArrayDependency.js +34 -34
- package/lib/dependencies/AMDRequireContextDependency.js +18 -18
- package/lib/dependencies/AMDRequireDependenciesBlock.js +25 -25
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +145 -145
- package/lib/dependencies/AMDRequireDependency.js +64 -64
- package/lib/dependencies/AMDRequireItemDependency.js +17 -17
- package/lib/dependencies/CommonJsPlugin.js +93 -93
- package/lib/dependencies/CommonJsRequireContextDependency.js +18 -18
- package/lib/dependencies/CommonJsRequireDependency.js +17 -17
- package/lib/dependencies/CommonJsRequireDependencyParserPlugin.js +91 -91
- package/lib/dependencies/ConstDependency.js +29 -29
- package/lib/dependencies/ContextDependency.js +24 -24
- package/lib/dependencies/ContextDependencyHelpers.js +34 -34
- package/lib/dependencies/ContextDependencyTemplateAsId.js +22 -22
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +31 -31
- package/lib/dependencies/ContextElementDependency.js +17 -17
- package/lib/dependencies/DelegatedSourceDependency.js +14 -14
- package/lib/dependencies/DepBlockHelpers.js +41 -41
- package/lib/dependencies/DllEntryDependency.js +17 -17
- package/lib/dependencies/LabeledExportsDependency.js +21 -21
- package/lib/dependencies/LabeledModuleDependency.js +36 -36
- package/lib/dependencies/LabeledModuleDependencyParserPlugin.js +76 -76
- package/lib/dependencies/LabeledModulesPlugin.js +26 -26
- package/lib/dependencies/LoaderDependency.js +14 -14
- package/lib/dependencies/LoaderPlugin.js +61 -61
- package/lib/dependencies/LocalModule.js +19 -19
- package/lib/dependencies/LocalModuleDependency.js +23 -23
- package/lib/dependencies/LocalModulesHelpers.js +43 -43
- package/lib/dependencies/ModuleDependency.js +20 -20
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +22 -22
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +22 -22
- package/lib/dependencies/ModuleHotAcceptDependency.js +18 -18
- package/lib/dependencies/ModuleHotDeclineDependency.js +18 -18
- package/lib/dependencies/MultiEntryDependency.js +16 -16
- package/lib/dependencies/NullDependency.js +17 -17
- package/lib/dependencies/NullDependencyTemplate.js +8 -8
- package/lib/dependencies/PrefetchDependency.js +14 -14
- package/lib/dependencies/RequireContextDependency.js +17 -17
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +33 -33
- package/lib/dependencies/RequireContextPlugin.js +64 -64
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +20 -20
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +66 -66
- package/lib/dependencies/RequireEnsureDependency.js +29 -29
- package/lib/dependencies/RequireEnsureItemDependency.js +16 -16
- package/lib/dependencies/RequireEnsurePlugin.js +38 -38
- package/lib/dependencies/RequireHeaderDependency.js +25 -25
- package/lib/dependencies/RequireIncludeDependency.js +25 -25
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +18 -18
- package/lib/dependencies/RequireIncludePlugin.js +31 -31
- package/lib/dependencies/RequireResolveContextDependency.js +18 -18
- package/lib/dependencies/RequireResolveDependency.js +17 -17
- package/lib/dependencies/RequireResolveDependencyParserPlugin.js +69 -69
- package/lib/dependencies/RequireResolveHeaderDependency.js +25 -25
- package/lib/dependencies/SingleEntryDependency.js +14 -14
- package/lib/dependencies/TemplateArgumentDependency.js +26 -26
- package/lib/dependencies/WebpackMissingModule.js +23 -23
- package/lib/dependencies/getFunctionExpression.js +43 -43
- package/lib/node/NodeChunkTemplatePlugin.js +22 -22
- package/lib/node/NodeEnvironmentPlugin.js +25 -25
- package/lib/node/NodeHotUpdateChunkTemplatePlugin.js +24 -24
- package/lib/node/NodeMainTemplate.runtime.js +20 -20
- package/lib/node/NodeMainTemplateAsync.runtime.js +34 -34
- package/lib/node/NodeMainTemplatePlugin.js +164 -164
- package/lib/node/NodeOutputFileSystem.js +17 -17
- package/lib/node/NodeSourcePlugin.js +85 -75
- package/lib/node/NodeTargetPlugin.js +12 -12
- package/lib/node/NodeTemplatePlugin.js +21 -21
- package/lib/node/NodeWatchFileSystem.js +65 -65
- package/lib/node/OldNodeWatchFileSystem.js +265 -265
- package/lib/optimize/AggressiveMergingPlugin.js +115 -115
- package/lib/optimize/CommonsChunkPlugin.js +178 -178
- package/lib/optimize/DedupePlugin.js +227 -227
- package/lib/optimize/FlagIncludedChunksPlugin.js +24 -24
- package/lib/optimize/LimitChunkCountPlugin.js +55 -55
- package/lib/optimize/MergeDuplicateChunksPlugin.js +30 -30
- package/lib/optimize/MinChunkSizePlugin.js +61 -61
- package/lib/optimize/OccurenceOrderPlugin.js +5 -5
- package/lib/optimize/OccurrenceOrderPlugin.js +91 -91
- package/lib/optimize/RemoveEmptyChunksPlugin.js +19 -19
- package/lib/optimize/RemoveParentModulesPlugin.js +50 -50
- package/lib/optimize/UglifyJsPlugin.js +146 -146
- package/lib/removeAndDo.js +13 -13
- package/lib/web/WebEnvironmentPlugin.js +16 -16
- package/lib/webpack.js +113 -113
- package/lib/webpack.web.js +27 -27
- package/lib/webworker/WebWorkerChunkTemplatePlugin.js +26 -26
- package/lib/webworker/WebWorkerMainTemplatePlugin.js +78 -78
- package/lib/webworker/WebWorkerTemplatePlugin.js +15 -15
- package/package.json +4 -4
@@ -1,486 +1,486 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
/*global $hash$ installedModules $require$ hotDownloadManifest hotDownloadUpdateChunk modules */
|
6
|
-
module.exports = function() {
|
7
|
-
|
8
|
-
// Copied from https://github.com/facebook/react/blob/bef45b0/src/shared/utils/canDefineProperty.js
|
9
|
-
var canDefineProperty = false;
|
10
|
-
try {
|
11
|
-
Object.defineProperty({}, "x", {
|
12
|
-
get: function() {}
|
13
|
-
});
|
14
|
-
canDefineProperty = true;
|
15
|
-
} catch(x) {
|
16
|
-
// IE will fail on defineProperty
|
17
|
-
}
|
18
|
-
|
19
|
-
var hotApplyOnUpdate = true;
|
20
|
-
var hotCurrentHash = $hash$; // eslint-disable-line no-unused-vars
|
21
|
-
var hotCurrentModuleData = {};
|
22
|
-
var hotCurrentParents = []; // eslint-disable-line no-unused-vars
|
23
|
-
|
24
|
-
function hotCreateRequire(moduleId) { // eslint-disable-line no-unused-vars
|
25
|
-
var me = installedModules[moduleId];
|
26
|
-
if(!me) return $require$;
|
27
|
-
var fn = function(request) {
|
28
|
-
if(me.hot.active) {
|
29
|
-
if(installedModules[request]) {
|
30
|
-
if(installedModules[request].parents.indexOf(moduleId) < 0)
|
31
|
-
installedModules[request].parents.push(moduleId);
|
32
|
-
if(me.children.indexOf(request) < 0)
|
33
|
-
me.children.push(request);
|
34
|
-
} else hotCurrentParents = [moduleId];
|
35
|
-
} else {
|
36
|
-
console.warn("[HMR] unexpected require(" + request + ") from disposed module " + moduleId);
|
37
|
-
hotCurrentParents = [];
|
38
|
-
}
|
39
|
-
return $require$(request);
|
40
|
-
};
|
41
|
-
for(var name in $require$) {
|
42
|
-
if(Object.prototype.hasOwnProperty.call($require$, name)) {
|
43
|
-
if(canDefineProperty) {
|
44
|
-
Object.defineProperty(fn, name, (function(name) {
|
45
|
-
return {
|
46
|
-
configurable: true,
|
47
|
-
enumerable: true,
|
48
|
-
get: function() {
|
49
|
-
return $require$[name];
|
50
|
-
},
|
51
|
-
set: function(value) {
|
52
|
-
$require$[name] = value;
|
53
|
-
}
|
54
|
-
};
|
55
|
-
}(name)));
|
56
|
-
} else {
|
57
|
-
fn[name] = $require$[name];
|
58
|
-
}
|
59
|
-
}
|
60
|
-
}
|
61
|
-
|
62
|
-
function ensure(chunkId, callback) {
|
63
|
-
if(hotStatus === "ready")
|
64
|
-
hotSetStatus("prepare");
|
65
|
-
hotChunksLoading++;
|
66
|
-
$require$.e(chunkId, function() {
|
67
|
-
try {
|
68
|
-
callback.call(null, fn);
|
69
|
-
} finally {
|
70
|
-
finishChunkLoading();
|
71
|
-
}
|
72
|
-
|
73
|
-
function finishChunkLoading() {
|
74
|
-
hotChunksLoading--;
|
75
|
-
if(hotStatus === "prepare") {
|
76
|
-
if(!hotWaitingFilesMap[chunkId]) {
|
77
|
-
hotEnsureUpdateChunk(chunkId);
|
78
|
-
}
|
79
|
-
if(hotChunksLoading === 0 && hotWaitingFiles === 0) {
|
80
|
-
hotUpdateDownloaded();
|
81
|
-
}
|
82
|
-
}
|
83
|
-
}
|
84
|
-
});
|
85
|
-
}
|
86
|
-
if(canDefineProperty) {
|
87
|
-
Object.defineProperty(fn, "e", {
|
88
|
-
enumerable: true,
|
89
|
-
value: ensure
|
90
|
-
});
|
91
|
-
} else {
|
92
|
-
fn.e = ensure;
|
93
|
-
}
|
94
|
-
return fn;
|
95
|
-
}
|
96
|
-
|
97
|
-
function hotCreateModule(moduleId) { // eslint-disable-line no-unused-vars
|
98
|
-
var hot = {
|
99
|
-
// private stuff
|
100
|
-
_acceptedDependencies: {},
|
101
|
-
_declinedDependencies: {},
|
102
|
-
_selfAccepted: false,
|
103
|
-
_selfDeclined: false,
|
104
|
-
_disposeHandlers: [],
|
105
|
-
|
106
|
-
// Module API
|
107
|
-
active: true,
|
108
|
-
accept: function(dep, callback) {
|
109
|
-
if(typeof dep === "undefined")
|
110
|
-
hot._selfAccepted = true;
|
111
|
-
else if(typeof dep === "function")
|
112
|
-
hot._selfAccepted = dep;
|
113
|
-
else if(typeof dep === "object")
|
114
|
-
for(var i = 0; i < dep.length; i++)
|
115
|
-
hot._acceptedDependencies[dep[i]] = callback;
|
116
|
-
else
|
117
|
-
hot._acceptedDependencies[dep] = callback;
|
118
|
-
},
|
119
|
-
decline: function(dep) {
|
120
|
-
if(typeof dep === "undefined")
|
121
|
-
hot._selfDeclined = true;
|
122
|
-
else if(typeof dep === "number")
|
123
|
-
hot._declinedDependencies[dep] = true;
|
124
|
-
else
|
125
|
-
for(var i = 0; i < dep.length; i++)
|
126
|
-
hot._declinedDependencies[dep[i]] = true;
|
127
|
-
},
|
128
|
-
dispose: function(callback) {
|
129
|
-
hot._disposeHandlers.push(callback);
|
130
|
-
},
|
131
|
-
addDisposeHandler: function(callback) {
|
132
|
-
hot._disposeHandlers.push(callback);
|
133
|
-
},
|
134
|
-
removeDisposeHandler: function(callback) {
|
135
|
-
var idx = hot._disposeHandlers.indexOf(callback);
|
136
|
-
if(idx >= 0) hot._disposeHandlers.splice(idx, 1);
|
137
|
-
},
|
138
|
-
|
139
|
-
// Management API
|
140
|
-
check: hotCheck,
|
141
|
-
apply: hotApply,
|
142
|
-
status: function(l) {
|
143
|
-
if(!l) return hotStatus;
|
144
|
-
hotStatusHandlers.push(l);
|
145
|
-
},
|
146
|
-
addStatusHandler: function(l) {
|
147
|
-
hotStatusHandlers.push(l);
|
148
|
-
},
|
149
|
-
removeStatusHandler: function(l) {
|
150
|
-
var idx = hotStatusHandlers.indexOf(l);
|
151
|
-
if(idx >= 0) hotStatusHandlers.splice(idx, 1);
|
152
|
-
},
|
153
|
-
|
154
|
-
//inherit from previous dispose call
|
155
|
-
data: hotCurrentModuleData[moduleId]
|
156
|
-
};
|
157
|
-
return hot;
|
158
|
-
}
|
159
|
-
|
160
|
-
var hotStatusHandlers = [];
|
161
|
-
var hotStatus = "idle";
|
162
|
-
|
163
|
-
function hotSetStatus(newStatus) {
|
164
|
-
hotStatus = newStatus;
|
165
|
-
for(var i = 0; i < hotStatusHandlers.length; i++)
|
166
|
-
hotStatusHandlers[i].call(null, newStatus);
|
167
|
-
}
|
168
|
-
|
169
|
-
// while downloading
|
170
|
-
var hotWaitingFiles = 0;
|
171
|
-
var hotChunksLoading = 0;
|
172
|
-
var hotWaitingFilesMap = {};
|
173
|
-
var hotRequestedFilesMap = {};
|
174
|
-
var hotAvailibleFilesMap = {};
|
175
|
-
var hotCallback;
|
176
|
-
|
177
|
-
// The update info
|
178
|
-
var hotUpdate, hotUpdateNewHash;
|
179
|
-
|
180
|
-
function toModuleId(id) {
|
181
|
-
var isNumber = (+id) + "" === id;
|
182
|
-
return isNumber ? +id : id;
|
183
|
-
}
|
184
|
-
|
185
|
-
function hotCheck(apply, callback) {
|
186
|
-
if(hotStatus !== "idle") throw new Error("check() is only allowed in idle status");
|
187
|
-
if(typeof apply === "function") {
|
188
|
-
hotApplyOnUpdate = false;
|
189
|
-
callback = apply;
|
190
|
-
} else {
|
191
|
-
hotApplyOnUpdate = apply;
|
192
|
-
callback = callback || function(err) {
|
193
|
-
if(err) throw err;
|
194
|
-
};
|
195
|
-
}
|
196
|
-
hotSetStatus("check");
|
197
|
-
hotDownloadManifest(function(err, update) {
|
198
|
-
if(err) return callback(err);
|
199
|
-
if(!update) {
|
200
|
-
hotSetStatus("idle");
|
201
|
-
callback(null, null);
|
202
|
-
return;
|
203
|
-
}
|
204
|
-
|
205
|
-
hotRequestedFilesMap = {};
|
206
|
-
hotAvailibleFilesMap = {};
|
207
|
-
hotWaitingFilesMap = {};
|
208
|
-
for(var i = 0; i < update.c.length; i++)
|
209
|
-
hotAvailibleFilesMap[update.c[i]] = true;
|
210
|
-
hotUpdateNewHash = update.h;
|
211
|
-
|
212
|
-
hotSetStatus("prepare");
|
213
|
-
hotCallback = callback;
|
214
|
-
hotUpdate = {};
|
215
|
-
/*foreachInstalledChunks*/
|
216
|
-
{ // eslint-disable-line no-lone-blocks
|
217
|
-
/*globals chunkId */
|
218
|
-
hotEnsureUpdateChunk(chunkId);
|
219
|
-
}
|
220
|
-
if(hotStatus === "prepare" && hotChunksLoading === 0 && hotWaitingFiles === 0) {
|
221
|
-
hotUpdateDownloaded();
|
222
|
-
}
|
223
|
-
});
|
224
|
-
}
|
225
|
-
|
226
|
-
function hotAddUpdateChunk(chunkId, moreModules) { // eslint-disable-line no-unused-vars
|
227
|
-
if(!hotAvailibleFilesMap[chunkId] || !hotRequestedFilesMap[chunkId])
|
228
|
-
return;
|
229
|
-
hotRequestedFilesMap[chunkId] = false;
|
230
|
-
for(var moduleId in moreModules) {
|
231
|
-
if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {
|
232
|
-
hotUpdate[moduleId] = moreModules[moduleId];
|
233
|
-
}
|
234
|
-
}
|
235
|
-
if(--hotWaitingFiles === 0 && hotChunksLoading === 0) {
|
236
|
-
hotUpdateDownloaded();
|
237
|
-
}
|
238
|
-
}
|
239
|
-
|
240
|
-
function hotEnsureUpdateChunk(chunkId) {
|
241
|
-
if(!hotAvailibleFilesMap[chunkId]) {
|
242
|
-
hotWaitingFilesMap[chunkId] = true;
|
243
|
-
} else {
|
244
|
-
hotRequestedFilesMap[chunkId] = true;
|
245
|
-
hotWaitingFiles++;
|
246
|
-
hotDownloadUpdateChunk(chunkId);
|
247
|
-
}
|
248
|
-
}
|
249
|
-
|
250
|
-
function hotUpdateDownloaded() {
|
251
|
-
hotSetStatus("ready");
|
252
|
-
var callback = hotCallback;
|
253
|
-
hotCallback = null;
|
254
|
-
if(!callback) return;
|
255
|
-
if(hotApplyOnUpdate) {
|
256
|
-
hotApply(hotApplyOnUpdate, callback);
|
257
|
-
} else {
|
258
|
-
var outdatedModules = [];
|
259
|
-
for(var id in hotUpdate) {
|
260
|
-
if(Object.prototype.hasOwnProperty.call(hotUpdate, id)) {
|
261
|
-
outdatedModules.push(toModuleId(id));
|
262
|
-
}
|
263
|
-
}
|
264
|
-
callback(null, outdatedModules);
|
265
|
-
}
|
266
|
-
}
|
267
|
-
|
268
|
-
function hotApply(options, callback) {
|
269
|
-
if(hotStatus !== "ready") throw new Error("apply() is only allowed in ready status");
|
270
|
-
if(typeof options === "function") {
|
271
|
-
callback = options;
|
272
|
-
options = {};
|
273
|
-
} else if(options && typeof options === "object") {
|
274
|
-
callback = callback || function(err) {
|
275
|
-
if(err) throw err;
|
276
|
-
};
|
277
|
-
} else {
|
278
|
-
options = {};
|
279
|
-
callback = callback || function(err) {
|
280
|
-
if(err) throw err;
|
281
|
-
};
|
282
|
-
}
|
283
|
-
|
284
|
-
function getAffectedStuff(module) {
|
285
|
-
var outdatedModules = [module];
|
286
|
-
var outdatedDependencies = {};
|
287
|
-
|
288
|
-
var queue = outdatedModules.slice();
|
289
|
-
while(queue.length > 0) {
|
290
|
-
var moduleId = queue.pop();
|
291
|
-
var module = installedModules[moduleId];
|
292
|
-
if(!module || module.hot._selfAccepted)
|
293
|
-
continue;
|
294
|
-
if(module.hot._selfDeclined) {
|
295
|
-
return new Error("Aborted because of self decline: " + moduleId);
|
296
|
-
}
|
297
|
-
if(moduleId === 0) {
|
298
|
-
return;
|
299
|
-
}
|
300
|
-
for(var i = 0; i < module.parents.length; i++) {
|
301
|
-
var parentId = module.parents[i];
|
302
|
-
var parent = installedModules[parentId];
|
303
|
-
if(parent.hot._declinedDependencies[moduleId]) {
|
304
|
-
return new Error("Aborted because of declined dependency: " + moduleId + " in " + parentId);
|
305
|
-
}
|
306
|
-
if(outdatedModules.indexOf(parentId) >= 0) continue;
|
307
|
-
if(parent.hot._acceptedDependencies[moduleId]) {
|
308
|
-
if(!outdatedDependencies[parentId])
|
309
|
-
outdatedDependencies[parentId] = [];
|
310
|
-
addAllToSet(outdatedDependencies[parentId], [moduleId]);
|
311
|
-
continue;
|
312
|
-
}
|
313
|
-
delete outdatedDependencies[parentId];
|
314
|
-
outdatedModules.push(parentId);
|
315
|
-
queue.push(parentId);
|
316
|
-
}
|
317
|
-
}
|
318
|
-
|
319
|
-
return [outdatedModules, outdatedDependencies];
|
320
|
-
}
|
321
|
-
|
322
|
-
function addAllToSet(a, b) {
|
323
|
-
for(var i = 0; i < b.length; i++) {
|
324
|
-
var item = b[i];
|
325
|
-
if(a.indexOf(item) < 0)
|
326
|
-
a.push(item);
|
327
|
-
}
|
328
|
-
}
|
329
|
-
|
330
|
-
// at begin all updates modules are outdated
|
331
|
-
// the "outdated" status can propagate to parents if they don't accept the children
|
332
|
-
var outdatedDependencies = {};
|
333
|
-
var outdatedModules = [];
|
334
|
-
var appliedUpdate = {};
|
335
|
-
for(var id in hotUpdate) {
|
336
|
-
if(Object.prototype.hasOwnProperty.call(hotUpdate, id)) {
|
337
|
-
var moduleId = toModuleId(id);
|
338
|
-
var result = getAffectedStuff(moduleId);
|
339
|
-
if(!result) {
|
340
|
-
if(options.ignoreUnaccepted)
|
341
|
-
continue;
|
342
|
-
hotSetStatus("abort");
|
343
|
-
return callback(new Error("Aborted because " + moduleId + " is not accepted"));
|
344
|
-
}
|
345
|
-
if(result instanceof Error) {
|
346
|
-
hotSetStatus("abort");
|
347
|
-
return callback(result);
|
348
|
-
}
|
349
|
-
appliedUpdate[moduleId] = hotUpdate[moduleId];
|
350
|
-
addAllToSet(outdatedModules, result[0]);
|
351
|
-
for(var moduleId in result[1]) {
|
352
|
-
if(Object.prototype.hasOwnProperty.call(result[1], moduleId)) {
|
353
|
-
if(!outdatedDependencies[moduleId])
|
354
|
-
outdatedDependencies[moduleId] = [];
|
355
|
-
addAllToSet(outdatedDependencies[moduleId], result[1][moduleId]);
|
356
|
-
}
|
357
|
-
}
|
358
|
-
}
|
359
|
-
}
|
360
|
-
|
361
|
-
// Store self accepted outdated modules to require them later by the module system
|
362
|
-
var outdatedSelfAcceptedModules = [];
|
363
|
-
for(var i = 0; i < outdatedModules.length; i++) {
|
364
|
-
var moduleId = outdatedModules[i];
|
365
|
-
if(installedModules[moduleId] && installedModules[moduleId].hot._selfAccepted)
|
366
|
-
outdatedSelfAcceptedModules.push({
|
367
|
-
module: moduleId,
|
368
|
-
errorHandler: installedModules[moduleId].hot._selfAccepted
|
369
|
-
});
|
370
|
-
}
|
371
|
-
|
372
|
-
// Now in "dispose" phase
|
373
|
-
hotSetStatus("dispose");
|
374
|
-
var queue = outdatedModules.slice();
|
375
|
-
while(queue.length > 0) {
|
376
|
-
var moduleId = queue.pop();
|
377
|
-
var module = installedModules[moduleId];
|
378
|
-
if(!module) continue;
|
379
|
-
|
380
|
-
var data = {};
|
381
|
-
|
382
|
-
// Call dispose handlers
|
383
|
-
var disposeHandlers = module.hot._disposeHandlers;
|
384
|
-
for(var j = 0; j < disposeHandlers.length; j++) {
|
385
|
-
var cb = disposeHandlers[j];
|
386
|
-
cb(data);
|
387
|
-
}
|
388
|
-
hotCurrentModuleData[moduleId] = data;
|
389
|
-
|
390
|
-
// disable module (this disables requires from this module)
|
391
|
-
module.hot.active = false;
|
392
|
-
|
393
|
-
// remove module from cache
|
394
|
-
delete installedModules[moduleId];
|
395
|
-
|
396
|
-
// remove "parents" references from all children
|
397
|
-
for(var j = 0; j < module.children.length; j++) {
|
398
|
-
var child = installedModules[module.children[j]];
|
399
|
-
if(!child) continue;
|
400
|
-
var idx = child.parents.indexOf(moduleId);
|
401
|
-
if(idx >= 0) {
|
402
|
-
child.parents.splice(idx, 1);
|
403
|
-
}
|
404
|
-
}
|
405
|
-
}
|
406
|
-
|
407
|
-
// remove outdated dependency from module children
|
408
|
-
for(var moduleId in outdatedDependencies) {
|
409
|
-
if(Object.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)) {
|
410
|
-
var module = installedModules[moduleId];
|
411
|
-
var moduleOutdatedDependencies = outdatedDependencies[moduleId];
|
412
|
-
for(var j = 0; j < moduleOutdatedDependencies.length; j++) {
|
413
|
-
var dependency = moduleOutdatedDependencies[j];
|
414
|
-
var idx = module.children.indexOf(dependency);
|
415
|
-
if(idx >= 0) module.children.splice(idx, 1);
|
416
|
-
}
|
417
|
-
}
|
418
|
-
}
|
419
|
-
|
420
|
-
// Not in "apply" phase
|
421
|
-
hotSetStatus("apply");
|
422
|
-
|
423
|
-
hotCurrentHash = hotUpdateNewHash;
|
424
|
-
|
425
|
-
// insert new code
|
426
|
-
for(var moduleId in appliedUpdate) {
|
427
|
-
if(Object.prototype.hasOwnProperty.call(appliedUpdate, moduleId)) {
|
428
|
-
modules[moduleId] = appliedUpdate[moduleId];
|
429
|
-
}
|
430
|
-
}
|
431
|
-
|
432
|
-
// call accept handlers
|
433
|
-
var error = null;
|
434
|
-
for(var moduleId in outdatedDependencies) {
|
435
|
-
if(Object.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)) {
|
436
|
-
var module = installedModules[moduleId];
|
437
|
-
var moduleOutdatedDependencies = outdatedDependencies[moduleId];
|
438
|
-
var callbacks = [];
|
439
|
-
for(var i = 0; i < moduleOutdatedDependencies.length; i++) {
|
440
|
-
var dependency = moduleOutdatedDependencies[i];
|
441
|
-
var cb = module.hot._acceptedDependencies[dependency];
|
442
|
-
if(callbacks.indexOf(cb) >= 0) continue;
|
443
|
-
callbacks.push(cb);
|
444
|
-
}
|
445
|
-
for(var i = 0; i < callbacks.length; i++) {
|
446
|
-
var cb = callbacks[i];
|
447
|
-
try {
|
448
|
-
cb(outdatedDependencies);
|
449
|
-
} catch(err) {
|
450
|
-
if(!error)
|
451
|
-
error = err;
|
452
|
-
}
|
453
|
-
}
|
454
|
-
}
|
455
|
-
}
|
456
|
-
|
457
|
-
// Load self accepted modules
|
458
|
-
for(var i = 0; i < outdatedSelfAcceptedModules.length; i++) {
|
459
|
-
var item = outdatedSelfAcceptedModules[i];
|
460
|
-
var moduleId = item.module;
|
461
|
-
hotCurrentParents = [moduleId];
|
462
|
-
try {
|
463
|
-
$require$(moduleId);
|
464
|
-
} catch(err) {
|
465
|
-
if(typeof item.errorHandler === "function") {
|
466
|
-
try {
|
467
|
-
item.errorHandler(err);
|
468
|
-
} catch(err) {
|
469
|
-
if(!error)
|
470
|
-
error = err;
|
471
|
-
}
|
472
|
-
} else if(!error)
|
473
|
-
error = err;
|
474
|
-
}
|
475
|
-
}
|
476
|
-
|
477
|
-
// handle errors in accept handlers and self accepted module load
|
478
|
-
if(error) {
|
479
|
-
hotSetStatus("fail");
|
480
|
-
return callback(error);
|
481
|
-
}
|
482
|
-
|
483
|
-
hotSetStatus("idle");
|
484
|
-
callback(null, outdatedModules);
|
485
|
-
}
|
486
|
-
};
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
/*global $hash$ installedModules $require$ hotDownloadManifest hotDownloadUpdateChunk modules */
|
6
|
+
module.exports = function() {
|
7
|
+
|
8
|
+
// Copied from https://github.com/facebook/react/blob/bef45b0/src/shared/utils/canDefineProperty.js
|
9
|
+
var canDefineProperty = false;
|
10
|
+
try {
|
11
|
+
Object.defineProperty({}, "x", {
|
12
|
+
get: function() {}
|
13
|
+
});
|
14
|
+
canDefineProperty = true;
|
15
|
+
} catch(x) {
|
16
|
+
// IE will fail on defineProperty
|
17
|
+
}
|
18
|
+
|
19
|
+
var hotApplyOnUpdate = true;
|
20
|
+
var hotCurrentHash = $hash$; // eslint-disable-line no-unused-vars
|
21
|
+
var hotCurrentModuleData = {};
|
22
|
+
var hotCurrentParents = []; // eslint-disable-line no-unused-vars
|
23
|
+
|
24
|
+
function hotCreateRequire(moduleId) { // eslint-disable-line no-unused-vars
|
25
|
+
var me = installedModules[moduleId];
|
26
|
+
if(!me) return $require$;
|
27
|
+
var fn = function(request) {
|
28
|
+
if(me.hot.active) {
|
29
|
+
if(installedModules[request]) {
|
30
|
+
if(installedModules[request].parents.indexOf(moduleId) < 0)
|
31
|
+
installedModules[request].parents.push(moduleId);
|
32
|
+
if(me.children.indexOf(request) < 0)
|
33
|
+
me.children.push(request);
|
34
|
+
} else hotCurrentParents = [moduleId];
|
35
|
+
} else {
|
36
|
+
console.warn("[HMR] unexpected require(" + request + ") from disposed module " + moduleId);
|
37
|
+
hotCurrentParents = [];
|
38
|
+
}
|
39
|
+
return $require$(request);
|
40
|
+
};
|
41
|
+
for(var name in $require$) {
|
42
|
+
if(Object.prototype.hasOwnProperty.call($require$, name)) {
|
43
|
+
if(canDefineProperty) {
|
44
|
+
Object.defineProperty(fn, name, (function(name) {
|
45
|
+
return {
|
46
|
+
configurable: true,
|
47
|
+
enumerable: true,
|
48
|
+
get: function() {
|
49
|
+
return $require$[name];
|
50
|
+
},
|
51
|
+
set: function(value) {
|
52
|
+
$require$[name] = value;
|
53
|
+
}
|
54
|
+
};
|
55
|
+
}(name)));
|
56
|
+
} else {
|
57
|
+
fn[name] = $require$[name];
|
58
|
+
}
|
59
|
+
}
|
60
|
+
}
|
61
|
+
|
62
|
+
function ensure(chunkId, callback) {
|
63
|
+
if(hotStatus === "ready")
|
64
|
+
hotSetStatus("prepare");
|
65
|
+
hotChunksLoading++;
|
66
|
+
$require$.e(chunkId, function() {
|
67
|
+
try {
|
68
|
+
callback.call(null, fn);
|
69
|
+
} finally {
|
70
|
+
finishChunkLoading();
|
71
|
+
}
|
72
|
+
|
73
|
+
function finishChunkLoading() {
|
74
|
+
hotChunksLoading--;
|
75
|
+
if(hotStatus === "prepare") {
|
76
|
+
if(!hotWaitingFilesMap[chunkId]) {
|
77
|
+
hotEnsureUpdateChunk(chunkId);
|
78
|
+
}
|
79
|
+
if(hotChunksLoading === 0 && hotWaitingFiles === 0) {
|
80
|
+
hotUpdateDownloaded();
|
81
|
+
}
|
82
|
+
}
|
83
|
+
}
|
84
|
+
});
|
85
|
+
}
|
86
|
+
if(canDefineProperty) {
|
87
|
+
Object.defineProperty(fn, "e", {
|
88
|
+
enumerable: true,
|
89
|
+
value: ensure
|
90
|
+
});
|
91
|
+
} else {
|
92
|
+
fn.e = ensure;
|
93
|
+
}
|
94
|
+
return fn;
|
95
|
+
}
|
96
|
+
|
97
|
+
function hotCreateModule(moduleId) { // eslint-disable-line no-unused-vars
|
98
|
+
var hot = {
|
99
|
+
// private stuff
|
100
|
+
_acceptedDependencies: {},
|
101
|
+
_declinedDependencies: {},
|
102
|
+
_selfAccepted: false,
|
103
|
+
_selfDeclined: false,
|
104
|
+
_disposeHandlers: [],
|
105
|
+
|
106
|
+
// Module API
|
107
|
+
active: true,
|
108
|
+
accept: function(dep, callback) {
|
109
|
+
if(typeof dep === "undefined")
|
110
|
+
hot._selfAccepted = true;
|
111
|
+
else if(typeof dep === "function")
|
112
|
+
hot._selfAccepted = dep;
|
113
|
+
else if(typeof dep === "object")
|
114
|
+
for(var i = 0; i < dep.length; i++)
|
115
|
+
hot._acceptedDependencies[dep[i]] = callback;
|
116
|
+
else
|
117
|
+
hot._acceptedDependencies[dep] = callback;
|
118
|
+
},
|
119
|
+
decline: function(dep) {
|
120
|
+
if(typeof dep === "undefined")
|
121
|
+
hot._selfDeclined = true;
|
122
|
+
else if(typeof dep === "number")
|
123
|
+
hot._declinedDependencies[dep] = true;
|
124
|
+
else
|
125
|
+
for(var i = 0; i < dep.length; i++)
|
126
|
+
hot._declinedDependencies[dep[i]] = true;
|
127
|
+
},
|
128
|
+
dispose: function(callback) {
|
129
|
+
hot._disposeHandlers.push(callback);
|
130
|
+
},
|
131
|
+
addDisposeHandler: function(callback) {
|
132
|
+
hot._disposeHandlers.push(callback);
|
133
|
+
},
|
134
|
+
removeDisposeHandler: function(callback) {
|
135
|
+
var idx = hot._disposeHandlers.indexOf(callback);
|
136
|
+
if(idx >= 0) hot._disposeHandlers.splice(idx, 1);
|
137
|
+
},
|
138
|
+
|
139
|
+
// Management API
|
140
|
+
check: hotCheck,
|
141
|
+
apply: hotApply,
|
142
|
+
status: function(l) {
|
143
|
+
if(!l) return hotStatus;
|
144
|
+
hotStatusHandlers.push(l);
|
145
|
+
},
|
146
|
+
addStatusHandler: function(l) {
|
147
|
+
hotStatusHandlers.push(l);
|
148
|
+
},
|
149
|
+
removeStatusHandler: function(l) {
|
150
|
+
var idx = hotStatusHandlers.indexOf(l);
|
151
|
+
if(idx >= 0) hotStatusHandlers.splice(idx, 1);
|
152
|
+
},
|
153
|
+
|
154
|
+
//inherit from previous dispose call
|
155
|
+
data: hotCurrentModuleData[moduleId]
|
156
|
+
};
|
157
|
+
return hot;
|
158
|
+
}
|
159
|
+
|
160
|
+
var hotStatusHandlers = [];
|
161
|
+
var hotStatus = "idle";
|
162
|
+
|
163
|
+
function hotSetStatus(newStatus) {
|
164
|
+
hotStatus = newStatus;
|
165
|
+
for(var i = 0; i < hotStatusHandlers.length; i++)
|
166
|
+
hotStatusHandlers[i].call(null, newStatus);
|
167
|
+
}
|
168
|
+
|
169
|
+
// while downloading
|
170
|
+
var hotWaitingFiles = 0;
|
171
|
+
var hotChunksLoading = 0;
|
172
|
+
var hotWaitingFilesMap = {};
|
173
|
+
var hotRequestedFilesMap = {};
|
174
|
+
var hotAvailibleFilesMap = {};
|
175
|
+
var hotCallback;
|
176
|
+
|
177
|
+
// The update info
|
178
|
+
var hotUpdate, hotUpdateNewHash;
|
179
|
+
|
180
|
+
function toModuleId(id) {
|
181
|
+
var isNumber = (+id) + "" === id;
|
182
|
+
return isNumber ? +id : id;
|
183
|
+
}
|
184
|
+
|
185
|
+
function hotCheck(apply, callback) {
|
186
|
+
if(hotStatus !== "idle") throw new Error("check() is only allowed in idle status");
|
187
|
+
if(typeof apply === "function") {
|
188
|
+
hotApplyOnUpdate = false;
|
189
|
+
callback = apply;
|
190
|
+
} else {
|
191
|
+
hotApplyOnUpdate = apply;
|
192
|
+
callback = callback || function(err) {
|
193
|
+
if(err) throw err;
|
194
|
+
};
|
195
|
+
}
|
196
|
+
hotSetStatus("check");
|
197
|
+
hotDownloadManifest(function(err, update) {
|
198
|
+
if(err) return callback(err);
|
199
|
+
if(!update) {
|
200
|
+
hotSetStatus("idle");
|
201
|
+
callback(null, null);
|
202
|
+
return;
|
203
|
+
}
|
204
|
+
|
205
|
+
hotRequestedFilesMap = {};
|
206
|
+
hotAvailibleFilesMap = {};
|
207
|
+
hotWaitingFilesMap = {};
|
208
|
+
for(var i = 0; i < update.c.length; i++)
|
209
|
+
hotAvailibleFilesMap[update.c[i]] = true;
|
210
|
+
hotUpdateNewHash = update.h;
|
211
|
+
|
212
|
+
hotSetStatus("prepare");
|
213
|
+
hotCallback = callback;
|
214
|
+
hotUpdate = {};
|
215
|
+
/*foreachInstalledChunks*/
|
216
|
+
{ // eslint-disable-line no-lone-blocks
|
217
|
+
/*globals chunkId */
|
218
|
+
hotEnsureUpdateChunk(chunkId);
|
219
|
+
}
|
220
|
+
if(hotStatus === "prepare" && hotChunksLoading === 0 && hotWaitingFiles === 0) {
|
221
|
+
hotUpdateDownloaded();
|
222
|
+
}
|
223
|
+
});
|
224
|
+
}
|
225
|
+
|
226
|
+
function hotAddUpdateChunk(chunkId, moreModules) { // eslint-disable-line no-unused-vars
|
227
|
+
if(!hotAvailibleFilesMap[chunkId] || !hotRequestedFilesMap[chunkId])
|
228
|
+
return;
|
229
|
+
hotRequestedFilesMap[chunkId] = false;
|
230
|
+
for(var moduleId in moreModules) {
|
231
|
+
if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {
|
232
|
+
hotUpdate[moduleId] = moreModules[moduleId];
|
233
|
+
}
|
234
|
+
}
|
235
|
+
if(--hotWaitingFiles === 0 && hotChunksLoading === 0) {
|
236
|
+
hotUpdateDownloaded();
|
237
|
+
}
|
238
|
+
}
|
239
|
+
|
240
|
+
function hotEnsureUpdateChunk(chunkId) {
|
241
|
+
if(!hotAvailibleFilesMap[chunkId]) {
|
242
|
+
hotWaitingFilesMap[chunkId] = true;
|
243
|
+
} else {
|
244
|
+
hotRequestedFilesMap[chunkId] = true;
|
245
|
+
hotWaitingFiles++;
|
246
|
+
hotDownloadUpdateChunk(chunkId);
|
247
|
+
}
|
248
|
+
}
|
249
|
+
|
250
|
+
function hotUpdateDownloaded() {
|
251
|
+
hotSetStatus("ready");
|
252
|
+
var callback = hotCallback;
|
253
|
+
hotCallback = null;
|
254
|
+
if(!callback) return;
|
255
|
+
if(hotApplyOnUpdate) {
|
256
|
+
hotApply(hotApplyOnUpdate, callback);
|
257
|
+
} else {
|
258
|
+
var outdatedModules = [];
|
259
|
+
for(var id in hotUpdate) {
|
260
|
+
if(Object.prototype.hasOwnProperty.call(hotUpdate, id)) {
|
261
|
+
outdatedModules.push(toModuleId(id));
|
262
|
+
}
|
263
|
+
}
|
264
|
+
callback(null, outdatedModules);
|
265
|
+
}
|
266
|
+
}
|
267
|
+
|
268
|
+
function hotApply(options, callback) {
|
269
|
+
if(hotStatus !== "ready") throw new Error("apply() is only allowed in ready status");
|
270
|
+
if(typeof options === "function") {
|
271
|
+
callback = options;
|
272
|
+
options = {};
|
273
|
+
} else if(options && typeof options === "object") {
|
274
|
+
callback = callback || function(err) {
|
275
|
+
if(err) throw err;
|
276
|
+
};
|
277
|
+
} else {
|
278
|
+
options = {};
|
279
|
+
callback = callback || function(err) {
|
280
|
+
if(err) throw err;
|
281
|
+
};
|
282
|
+
}
|
283
|
+
|
284
|
+
function getAffectedStuff(module) {
|
285
|
+
var outdatedModules = [module];
|
286
|
+
var outdatedDependencies = {};
|
287
|
+
|
288
|
+
var queue = outdatedModules.slice();
|
289
|
+
while(queue.length > 0) {
|
290
|
+
var moduleId = queue.pop();
|
291
|
+
var module = installedModules[moduleId];
|
292
|
+
if(!module || module.hot._selfAccepted)
|
293
|
+
continue;
|
294
|
+
if(module.hot._selfDeclined) {
|
295
|
+
return new Error("Aborted because of self decline: " + moduleId);
|
296
|
+
}
|
297
|
+
if(moduleId === 0) {
|
298
|
+
return;
|
299
|
+
}
|
300
|
+
for(var i = 0; i < module.parents.length; i++) {
|
301
|
+
var parentId = module.parents[i];
|
302
|
+
var parent = installedModules[parentId];
|
303
|
+
if(parent.hot._declinedDependencies[moduleId]) {
|
304
|
+
return new Error("Aborted because of declined dependency: " + moduleId + " in " + parentId);
|
305
|
+
}
|
306
|
+
if(outdatedModules.indexOf(parentId) >= 0) continue;
|
307
|
+
if(parent.hot._acceptedDependencies[moduleId]) {
|
308
|
+
if(!outdatedDependencies[parentId])
|
309
|
+
outdatedDependencies[parentId] = [];
|
310
|
+
addAllToSet(outdatedDependencies[parentId], [moduleId]);
|
311
|
+
continue;
|
312
|
+
}
|
313
|
+
delete outdatedDependencies[parentId];
|
314
|
+
outdatedModules.push(parentId);
|
315
|
+
queue.push(parentId);
|
316
|
+
}
|
317
|
+
}
|
318
|
+
|
319
|
+
return [outdatedModules, outdatedDependencies];
|
320
|
+
}
|
321
|
+
|
322
|
+
function addAllToSet(a, b) {
|
323
|
+
for(var i = 0; i < b.length; i++) {
|
324
|
+
var item = b[i];
|
325
|
+
if(a.indexOf(item) < 0)
|
326
|
+
a.push(item);
|
327
|
+
}
|
328
|
+
}
|
329
|
+
|
330
|
+
// at begin all updates modules are outdated
|
331
|
+
// the "outdated" status can propagate to parents if they don't accept the children
|
332
|
+
var outdatedDependencies = {};
|
333
|
+
var outdatedModules = [];
|
334
|
+
var appliedUpdate = {};
|
335
|
+
for(var id in hotUpdate) {
|
336
|
+
if(Object.prototype.hasOwnProperty.call(hotUpdate, id)) {
|
337
|
+
var moduleId = toModuleId(id);
|
338
|
+
var result = getAffectedStuff(moduleId);
|
339
|
+
if(!result) {
|
340
|
+
if(options.ignoreUnaccepted)
|
341
|
+
continue;
|
342
|
+
hotSetStatus("abort");
|
343
|
+
return callback(new Error("Aborted because " + moduleId + " is not accepted"));
|
344
|
+
}
|
345
|
+
if(result instanceof Error) {
|
346
|
+
hotSetStatus("abort");
|
347
|
+
return callback(result);
|
348
|
+
}
|
349
|
+
appliedUpdate[moduleId] = hotUpdate[moduleId];
|
350
|
+
addAllToSet(outdatedModules, result[0]);
|
351
|
+
for(var moduleId in result[1]) {
|
352
|
+
if(Object.prototype.hasOwnProperty.call(result[1], moduleId)) {
|
353
|
+
if(!outdatedDependencies[moduleId])
|
354
|
+
outdatedDependencies[moduleId] = [];
|
355
|
+
addAllToSet(outdatedDependencies[moduleId], result[1][moduleId]);
|
356
|
+
}
|
357
|
+
}
|
358
|
+
}
|
359
|
+
}
|
360
|
+
|
361
|
+
// Store self accepted outdated modules to require them later by the module system
|
362
|
+
var outdatedSelfAcceptedModules = [];
|
363
|
+
for(var i = 0; i < outdatedModules.length; i++) {
|
364
|
+
var moduleId = outdatedModules[i];
|
365
|
+
if(installedModules[moduleId] && installedModules[moduleId].hot._selfAccepted)
|
366
|
+
outdatedSelfAcceptedModules.push({
|
367
|
+
module: moduleId,
|
368
|
+
errorHandler: installedModules[moduleId].hot._selfAccepted
|
369
|
+
});
|
370
|
+
}
|
371
|
+
|
372
|
+
// Now in "dispose" phase
|
373
|
+
hotSetStatus("dispose");
|
374
|
+
var queue = outdatedModules.slice();
|
375
|
+
while(queue.length > 0) {
|
376
|
+
var moduleId = queue.pop();
|
377
|
+
var module = installedModules[moduleId];
|
378
|
+
if(!module) continue;
|
379
|
+
|
380
|
+
var data = {};
|
381
|
+
|
382
|
+
// Call dispose handlers
|
383
|
+
var disposeHandlers = module.hot._disposeHandlers;
|
384
|
+
for(var j = 0; j < disposeHandlers.length; j++) {
|
385
|
+
var cb = disposeHandlers[j];
|
386
|
+
cb(data);
|
387
|
+
}
|
388
|
+
hotCurrentModuleData[moduleId] = data;
|
389
|
+
|
390
|
+
// disable module (this disables requires from this module)
|
391
|
+
module.hot.active = false;
|
392
|
+
|
393
|
+
// remove module from cache
|
394
|
+
delete installedModules[moduleId];
|
395
|
+
|
396
|
+
// remove "parents" references from all children
|
397
|
+
for(var j = 0; j < module.children.length; j++) {
|
398
|
+
var child = installedModules[module.children[j]];
|
399
|
+
if(!child) continue;
|
400
|
+
var idx = child.parents.indexOf(moduleId);
|
401
|
+
if(idx >= 0) {
|
402
|
+
child.parents.splice(idx, 1);
|
403
|
+
}
|
404
|
+
}
|
405
|
+
}
|
406
|
+
|
407
|
+
// remove outdated dependency from module children
|
408
|
+
for(var moduleId in outdatedDependencies) {
|
409
|
+
if(Object.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)) {
|
410
|
+
var module = installedModules[moduleId];
|
411
|
+
var moduleOutdatedDependencies = outdatedDependencies[moduleId];
|
412
|
+
for(var j = 0; j < moduleOutdatedDependencies.length; j++) {
|
413
|
+
var dependency = moduleOutdatedDependencies[j];
|
414
|
+
var idx = module.children.indexOf(dependency);
|
415
|
+
if(idx >= 0) module.children.splice(idx, 1);
|
416
|
+
}
|
417
|
+
}
|
418
|
+
}
|
419
|
+
|
420
|
+
// Not in "apply" phase
|
421
|
+
hotSetStatus("apply");
|
422
|
+
|
423
|
+
hotCurrentHash = hotUpdateNewHash;
|
424
|
+
|
425
|
+
// insert new code
|
426
|
+
for(var moduleId in appliedUpdate) {
|
427
|
+
if(Object.prototype.hasOwnProperty.call(appliedUpdate, moduleId)) {
|
428
|
+
modules[moduleId] = appliedUpdate[moduleId];
|
429
|
+
}
|
430
|
+
}
|
431
|
+
|
432
|
+
// call accept handlers
|
433
|
+
var error = null;
|
434
|
+
for(var moduleId in outdatedDependencies) {
|
435
|
+
if(Object.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)) {
|
436
|
+
var module = installedModules[moduleId];
|
437
|
+
var moduleOutdatedDependencies = outdatedDependencies[moduleId];
|
438
|
+
var callbacks = [];
|
439
|
+
for(var i = 0; i < moduleOutdatedDependencies.length; i++) {
|
440
|
+
var dependency = moduleOutdatedDependencies[i];
|
441
|
+
var cb = module.hot._acceptedDependencies[dependency];
|
442
|
+
if(callbacks.indexOf(cb) >= 0) continue;
|
443
|
+
callbacks.push(cb);
|
444
|
+
}
|
445
|
+
for(var i = 0; i < callbacks.length; i++) {
|
446
|
+
var cb = callbacks[i];
|
447
|
+
try {
|
448
|
+
cb(outdatedDependencies);
|
449
|
+
} catch(err) {
|
450
|
+
if(!error)
|
451
|
+
error = err;
|
452
|
+
}
|
453
|
+
}
|
454
|
+
}
|
455
|
+
}
|
456
|
+
|
457
|
+
// Load self accepted modules
|
458
|
+
for(var i = 0; i < outdatedSelfAcceptedModules.length; i++) {
|
459
|
+
var item = outdatedSelfAcceptedModules[i];
|
460
|
+
var moduleId = item.module;
|
461
|
+
hotCurrentParents = [moduleId];
|
462
|
+
try {
|
463
|
+
$require$(moduleId);
|
464
|
+
} catch(err) {
|
465
|
+
if(typeof item.errorHandler === "function") {
|
466
|
+
try {
|
467
|
+
item.errorHandler(err);
|
468
|
+
} catch(err) {
|
469
|
+
if(!error)
|
470
|
+
error = err;
|
471
|
+
}
|
472
|
+
} else if(!error)
|
473
|
+
error = err;
|
474
|
+
}
|
475
|
+
}
|
476
|
+
|
477
|
+
// handle errors in accept handlers and self accepted module load
|
478
|
+
if(error) {
|
479
|
+
hotSetStatus("fail");
|
480
|
+
return callback(error);
|
481
|
+
}
|
482
|
+
|
483
|
+
hotSetStatus("idle");
|
484
|
+
callback(null, outdatedModules);
|
485
|
+
}
|
486
|
+
};
|