Skip to content

Commit 6c1eb49

Browse files
committed
separated runtime code from compiler code
for better coverage data
1 parent a6c4971 commit 6c1eb49

8 files changed

+549
-529
lines changed

lib/HotModuleReplacement.runtime.js

Lines changed: 435 additions & 0 deletions
Large diffs are not rendered by default.

lib/HotModuleReplacementPlugin.js

Lines changed: 1 addition & 431 deletions
Large diffs are not rendered by default.

lib/JsonpMainTemplate.runtime.js

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/*
2+
MIT License http://www.opensource.org/licenses/mit-license.php
3+
Author Tobias Koppers @sokra
4+
*/
5+
/*globals hotAddUpdateChunk parentHotUpdateCallback document XMLHttpRequest $require$ $hotChunkFilename$ $hotMainFilename$ */
6+
module.exports = function() {
7+
function webpackHotUpdateCallback(chunkId, moreModules) { // eslint-disable-line no-unused-vars
8+
hotAddUpdateChunk(chunkId, moreModules);
9+
if(parentHotUpdateCallback) parentHotUpdateCallback(chunkId, moreModules);
10+
}
11+
12+
function hotDownloadUpdateChunk(chunkId) { // eslint-disable-line no-unused-vars
13+
var head = document.getElementsByTagName("head")[0];
14+
var script = document.createElement("script");
15+
script.type = "text/javascript";
16+
script.charset = "utf-8";
17+
script.src = $require$.p + $hotChunkFilename$;
18+
head.appendChild(script);
19+
}
20+
21+
function hotDownloadManifest(callback) { // eslint-disable-line no-unused-vars
22+
if(typeof XMLHttpRequest === "undefined")
23+
return callback(new Error("No browser support"));
24+
try {
25+
var request = new XMLHttpRequest();
26+
var requestPath = $require$.p + $hotMainFilename$;
27+
request.open("GET", requestPath, true);
28+
request.timeout = 10000;
29+
request.send(null);
30+
} catch(err) {
31+
return callback(err);
32+
}
33+
request.onreadystatechange = function() {
34+
if(request.readyState !== 4) return;
35+
if(request.status === 0) {
36+
// timeout
37+
callback(new Error("Manifest request to " + requestPath + " timed out."));
38+
} else if(request.status === 404) {
39+
// no update available
40+
callback();
41+
} else if(request.status !== 200 && request.status !== 304) {
42+
// other failure
43+
callback(new Error("Manifest request to " + requestPath + " failed."));
44+
} else {
45+
// success
46+
try {
47+
var update = JSON.parse(request.responseText);
48+
} catch(e) {
49+
callback(e);
50+
return;
51+
}
52+
callback(null, update);
53+
}
54+
};
55+
}
56+
};

lib/JsonpMainTemplatePlugin.js

Lines changed: 1 addition & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -140,58 +140,7 @@ JsonpMainTemplatePlugin.prototype.apply = function(mainTemplate) {
140140

141141
return source + "\n" +
142142
"var parentHotUpdateCallback = this[" + JSON.stringify(hotUpdateFunction) + "];\n" +
143-
"this[" + JSON.stringify(hotUpdateFunction) + "] = " + Template.getFunctionContent(function() {
144-
/*globals hotAddUpdateChunk parentHotUpdateCallback document XMLHttpRequest $require$ $hotChunkFilename$ $hotMainFilename$ */
145-
function webpackHotUpdateCallback(chunkId, moreModules) { // eslint-disable-line no-unused-vars
146-
hotAddUpdateChunk(chunkId, moreModules);
147-
if(parentHotUpdateCallback) parentHotUpdateCallback(chunkId, moreModules);
148-
}
149-
150-
function hotDownloadUpdateChunk(chunkId) { // eslint-disable-line no-unused-vars
151-
var head = document.getElementsByTagName("head")[0];
152-
var script = document.createElement("script");
153-
script.type = "text/javascript";
154-
script.charset = "utf-8";
155-
script.src = $require$.p + $hotChunkFilename$;
156-
head.appendChild(script);
157-
}
158-
159-
function hotDownloadManifest(callback) { // eslint-disable-line no-unused-vars
160-
if(typeof XMLHttpRequest === "undefined")
161-
return callback(new Error("No browser support"));
162-
try {
163-
var request = new XMLHttpRequest();
164-
var requestPath = $require$.p + $hotMainFilename$;
165-
request.open("GET", requestPath, true);
166-
request.timeout = 10000;
167-
request.send(null);
168-
} catch(err) {
169-
return callback(err);
170-
}
171-
request.onreadystatechange = function() {
172-
if(request.readyState !== 4) return;
173-
if(request.status === 0) {
174-
// timeout
175-
callback(new Error("Manifest request to " + requestPath + " timed out."));
176-
} else if(request.status === 404) {
177-
// no update available
178-
callback();
179-
} else if(request.status !== 200 && request.status !== 304) {
180-
// other failure
181-
callback(new Error("Manifest request to " + requestPath + " failed."));
182-
} else {
183-
// success
184-
try {
185-
var update = JSON.parse(request.responseText);
186-
} catch(e) {
187-
callback(e);
188-
return;
189-
}
190-
callback(null, update);
191-
}
192-
};
193-
}
194-
})
143+
"this[" + JSON.stringify(hotUpdateFunction) + "] = " + Template.getFunctionContent(require("./JsonpMainTemplate.runtime.js"))
195144
.replace(/\$require\$/g, this.requireFn)
196145
.replace(/\$hotMainFilename\$/g, currentHotUpdateMainFilename)
197146
.replace(/\$hotChunkFilename\$/g, currentHotUpdateChunkFilename)
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/*
2+
MIT License http://www.opensource.org/licenses/mit-license.php
3+
Author Tobias Koppers @sokra
4+
*/
5+
/*global $hotChunkFilename$ hotAddUpdateChunk $hotMainFilename$ */
6+
module.exports = function() {
7+
function hotDownloadUpdateChunk(chunkId) { // eslint-disable-line no-unused-vars
8+
var chunk = require("./" + $hotChunkFilename$);
9+
hotAddUpdateChunk(chunk.id, chunk.modules);
10+
}
11+
12+
function hotDownloadManifest(callback) { // eslint-disable-line no-unused-vars
13+
try {
14+
var update = require("./" + $hotMainFilename$);
15+
} catch(e) {
16+
return callback();
17+
}
18+
callback(null, update);
19+
}
20+
};
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
/*
2+
MIT License http://www.opensource.org/licenses/mit-license.php
3+
Author Tobias Koppers @sokra
4+
*/
5+
/*global $hotChunkFilename$ $require$ hotAddUpdateChunk $hotMainFilename$ */
6+
module.exports = function() {
7+
function hotDownloadUpdateChunk(chunkId) { // eslint-disable-line no-unused-vars
8+
var filename = require("path").join(__dirname, $hotChunkFilename$);
9+
require("fs").readFile(filename, "utf-8", function(err, content) {
10+
if(err) {
11+
if($require$.onError)
12+
return $require$.onError(err);
13+
else
14+
throw err;
15+
}
16+
var chunk = {};
17+
require("vm").runInThisContext("(function(exports) {" + content + "\n})", filename)(chunk);
18+
hotAddUpdateChunk(chunk.id, chunk.modules);
19+
});
20+
}
21+
22+
function hotDownloadManifest(callback) { // eslint-disable-line no-unused-vars
23+
var filename = require("path").join(__dirname, $hotMainFilename$);
24+
require("fs").readFile(filename, "utf-8", function(err, content) {
25+
if(err) return callback();
26+
try {
27+
var update = JSON.parse(content);
28+
} catch(e) {
29+
return callback(e);
30+
}
31+
callback(null, update);
32+
});
33+
}
34+
};

lib/node/NodeMainTemplatePlugin.js

Lines changed: 1 addition & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -150,51 +150,7 @@ NodeMainTemplatePlugin.prototype.apply = function(mainTemplate) {
150150
return "\" + " + this.renderCurrentHashCode(hash, length) + " + \"";
151151
}.bind(this)
152152
});
153-
return Template.getFunctionContent(self.asyncChunkLoading ? function() {
154-
/*global $hotChunkFilename$ $require$ hotAddUpdateChunk $hotMainFilename$ */
155-
function hotDownloadUpdateChunk(chunkId) { // eslint-disable-line no-unused-vars
156-
var filename = require("path").join(__dirname, $hotChunkFilename$);
157-
require("fs").readFile(filename, "utf-8", function(err, content) {
158-
if(err) {
159-
if($require$.onError)
160-
return $require$.onError(err);
161-
else
162-
throw err;
163-
}
164-
var chunk = {};
165-
require("vm").runInThisContext("(function(exports) {" + content + "\n})", filename)(chunk);
166-
hotAddUpdateChunk(chunk.id, chunk.modules);
167-
});
168-
}
169-
170-
function hotDownloadManifest(callback) { // eslint-disable-line no-unused-vars
171-
var filename = require("path").join(__dirname, $hotMainFilename$);
172-
require("fs").readFile(filename, "utf-8", function(err, content) {
173-
if(err) return callback();
174-
try {
175-
var update = JSON.parse(content);
176-
} catch(e) {
177-
return callback(e);
178-
}
179-
callback(null, update);
180-
});
181-
}
182-
} : function() {
183-
/*global $hotChunkFilename$ $require$ hotAddUpdateChunk $hotMainFilename$ */
184-
function hotDownloadUpdateChunk(chunkId) { // eslint-disable-line no-unused-vars
185-
var chunk = require("./" + $hotChunkFilename$);
186-
hotAddUpdateChunk(chunk.id, chunk.modules);
187-
}
188-
189-
function hotDownloadManifest(callback) { // eslint-disable-line no-unused-vars
190-
try {
191-
var update = require("./" + $hotMainFilename$);
192-
} catch(e) {
193-
return callback();
194-
}
195-
callback(null, update);
196-
}
197-
})
153+
return Template.getFunctionContent(self.asyncChunkLoading ? require("./NodeMainTemplateAsync.runtime.js") : require("./NodeMainTemplate.runtime.js"))
198154
.replace(/\$require\$/g, this.requireFn)
199155
.replace(/\$hotMainFilename\$/g, currentHotUpdateMainFilename)
200156
.replace(/\$hotChunkFilename\$/g, currentHotUpdateChunkFilename);

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@
7878
"travis": "npm run cover -- --report lcovonly",
7979
"lint": "eslint lib",
8080
"precover": "npm run lint",
81-
"cover": "istanbul cover -x HotModuleReplacementPlugin.js -x JsonpMainTemplatePlugin.js -x NodeMainTemplatePlugin.js node_modules/mocha/bin/_mocha",
81+
"cover": "istanbul cover -x *.runtime.js node_modules/mocha/bin/_mocha",
8282
"publish-patch": "mocha && npm version patch && git push && git push --tags && npm publish"
8383
}
8484
}

0 commit comments

Comments
 (0)