From fcaf12ed74799b37c3eaa1f543f1d4115e9a7a80 Mon Sep 17 00:00:00 2001 From: jharris4 Date: Sun, 16 Apr 2017 09:53:46 -0400 Subject: [PATCH 1/4] Add support for the require.ensure error callback added in webpack 2.4 --- index.js | 131 +++++++++++++++++++++++++++++++++++++-------------- package.json | 3 ++ 2 files changed, 98 insertions(+), 36 deletions(-) diff --git a/index.js b/index.js index 0f07641..ac1ff5d 100644 --- a/index.js +++ b/index.js @@ -1,7 +1,9 @@ /* - MIT License http://www.opensource.org/licenses/mit-license.php - Author Tobias Koppers @sokra -*/ + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra + Modified version, created by Richard Scarrott @richardscarrott + */ + var loaderUtils = require("loader-utils"); module.exports = function() {}; @@ -14,54 +16,111 @@ module.exports.pitch = function(remainingRequest) { regExp: query.regExp }; var chunkName = loaderUtils.interpolateName(this, query.name, options); - var chunkNameParam = ", " + JSON.stringify(chunkName); + var chunkNameParam = ", " + JSON.stringify(chunkName); } else { var chunkNameParam = ''; } var result; if(query.lazy) { result = [ - "module.exports = function(cb) {\n", - " require.ensure([], function(require) {\n", - " cb(require(", loaderUtils.stringifyRequest(this, "!!" + remainingRequest), "));\n", + "module.exports = function(successCallback, errorCallback) {\n", + " require.ensure([], function() {\n", + " successCallback(require(", loaderUtils.stringifyRequest(this, "!!" + remainingRequest), "));\n", + " }, function() {\n", + " if (errorCallback) errorCallback.apply(this, arguments);\n", " }" + chunkNameParam + ");\n", - "}"]; + "};"]; } else { result = [ - "var cbs = [], \n", - " data;\n", - "module.exports = function(cb) {\n", - " if(cbs) cbs.push(cb);\n", - " else cb(data);\n", - "}\n", - "require.ensure([], function(require) {\n", - " data = require(", loaderUtils.stringifyRequest(this, "!!" + remainingRequest), ");\n", - " var callbacks = cbs;\n", - " cbs = null;\n", - " for(var i = 0, l = callbacks.length; i < l; i++) {\n", - " callbacks[i](data);\n", + "var cbs,\n", + " data,\n", + " error = false;\n", + "module.exports = function(successCallback, errorCallback) {\n", + " errorCallback = errorCallback || function() {};\n", + " if (data) {\n", + " successCallback(data);\n", + " } else {\n", + " if (error) {\n", + " // Try again.\n", + " requireBundle();\n", + " }\n", + " cbs.push({\n", + " success: successCallback,\n", + " error: errorCallback\n", + " });\n", " }\n", - "}" + chunkNameParam + ");"]; + "};\n", + "function requireBundle() {\n", + " cbs = [];\n", + " require.ensure([], function() {\n", + " data = require(", loaderUtils.stringifyRequest(this, "!!" + remainingRequest), ");\n", + " for(var i = 0, l = cbs.length; i < l; i++) {\n", + " cbs[i].success(data);\n", + " }\n", + " error = false;\n", + " cbs = null;\n", + " }, function() {\n", + " for(var i = 0, l = cbs.length; i < l; i++) {\n", + " cbs[i].error();\n", + " }\n", + " error = true;\n", + " cbs = null;\n", + " }" + chunkNameParam + ");\n", + "}\n", + "requireBundle();" + ]; } return result.join(""); -} +}; /* Output format: - var cbs = [], - data; - module.exports = function(cb) { - if(cbs) cbs.push(cb); - else cb(data); - } - require.ensure([], function(require) { - data = require("xxx"); - var callbacks = cbs; - cbs = null; - for(var i = 0, l = callbacks.length; i < l; i++) { - callbacks[i](data); + // lazy + module.exports = function(successCallback, errorCallback) { + require.ensure([], function() {\n", + successCallback(require("xxx")); + }, function() { + if (errorCallback) errorCallback.apply(this, arguments); + }, 'name'); + }; + + // non-lazy...kind of dupes the __webpack_require__.e callback handling a little... + var cbs, + data, + error = false; + module.exports = function(successCallback, errorCallback) { + errorCallback = errorCallback || function() {}; + if (data) { + successCallback(data); + } else { + if (error) { + // Try again. + requireBundle(); + } + cbs.push({ + success: successCallback, + error: errorCallback + }); } - }); + }; + function requireBundle() { + cbs = []; + require.ensure([], function(require) { + data = require("xxx"); + for(var i = 0, l = cbs.length; i < l; i++) { + cbs[i].success(data); + } + error = false; + cbs = null; + }, function() { + for(var i = 0, l = cbs.length; i < l; i++) { + cbs[i].error(); + } + error = true; + cbs = null; + }); + } + requireBundle(); -*/ +*/ \ No newline at end of file diff --git a/package.json b/package.json index 761b08e..5814a92 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,9 @@ "version": "0.5.5", "author": "Tobias Koppers @sokra", "description": "bundle loader module for webpack", + "peerDependencies": { + "webpack": "^2.4.0" + }, "dependencies": { "loader-utils": "^1.0.2" }, From e916e33b97ad8017894f48322ea347ebd511f8e3 Mon Sep 17 00:00:00 2001 From: jharris4 Date: Thu, 21 Dec 2017 12:32:57 -0500 Subject: [PATCH 2/4] remove \n from each item and use join("\n") instead of join("") --- index.js | 86 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/index.js b/index.js index ac1ff5d..7db10c3 100644 --- a/index.js +++ b/index.js @@ -23,54 +23,54 @@ module.exports.pitch = function(remainingRequest) { var result; if(query.lazy) { result = [ - "module.exports = function(successCallback, errorCallback) {\n", - " require.ensure([], function() {\n", - " successCallback(require(", loaderUtils.stringifyRequest(this, "!!" + remainingRequest), "));\n", - " }, function() {\n", - " if (errorCallback) errorCallback.apply(this, arguments);\n", - " }" + chunkNameParam + ");\n", + "module.exports = function(successCallback, errorCallback) {", + " require.ensure([], function() {", + " successCallback(require(", loaderUtils.stringifyRequest(this, "!!" + remainingRequest), "));", + " }, function() {", + " if (errorCallback) errorCallback.apply(this, arguments);", + " }" + chunkNameParam + ");", "};"]; } else { result = [ - "var cbs,\n", - " data,\n", - " error = false;\n", - "module.exports = function(successCallback, errorCallback) {\n", - " errorCallback = errorCallback || function() {};\n", - " if (data) {\n", - " successCallback(data);\n", - " } else {\n", - " if (error) {\n", - " // Try again.\n", - " requireBundle();\n", - " }\n", - " cbs.push({\n", - " success: successCallback,\n", - " error: errorCallback\n", - " });\n", - " }\n", - "};\n", - "function requireBundle() {\n", - " cbs = [];\n", - " require.ensure([], function() {\n", - " data = require(", loaderUtils.stringifyRequest(this, "!!" + remainingRequest), ");\n", - " for(var i = 0, l = cbs.length; i < l; i++) {\n", - " cbs[i].success(data);\n", - " }\n", - " error = false;\n", - " cbs = null;\n", - " }, function() {\n", - " for(var i = 0, l = cbs.length; i < l; i++) {\n", - " cbs[i].error();\n", - " }\n", - " error = true;\n", - " cbs = null;\n", - " }" + chunkNameParam + ");\n", - "}\n", + "var cbs,", + " data,", + " error = false;", + "module.exports = function(successCallback, errorCallback) {", + " errorCallback = errorCallback || function() {};", + " if (data) {", + " successCallback(data);", + " } else {", + " if (error) {", + " // Try again.", + " requireBundle();", + " }", + " cbs.push({", + " success: successCallback,", + " error: errorCallback", + " });", + " }", + "};", + "function requireBundle() {", + " cbs = [];", + " require.ensure([], function() {", + " data = require(", loaderUtils.stringifyRequest(this, "!!" + remainingRequest), ");", + " for(var i = 0, l = cbs.length; i < l; i++) {", + " cbs[i].success(data);", + " }", + " error = false;", + " cbs = null;", + " }, function() {", + " for(var i = 0, l = cbs.length; i < l; i++) {", + " cbs[i].error();", + " }", + " error = true;", + " cbs = null;", + " }" + chunkNameParam + ");", + "}", "requireBundle();" ]; } - return result.join(""); + return result.join("\n"); }; /* @@ -78,7 +78,7 @@ Output format: // lazy module.exports = function(successCallback, errorCallback) { - require.ensure([], function() {\n", + require.ensure([], function() {", successCallback(require("xxx")); }, function() { if (errorCallback) errorCallback.apply(this, arguments); From 60f59fb445c10de2b53700b1b857d677bda67ff8 Mon Sep 17 00:00:00 2001 From: jharris4 Date: Thu, 21 Dec 2017 15:27:18 -0500 Subject: [PATCH 3/4] rename successCallback to cb and errorCallback to err --- index.js | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/index.js b/index.js index 7db10c3..d8aeeb4 100644 --- a/index.js +++ b/index.js @@ -23,11 +23,11 @@ module.exports.pitch = function(remainingRequest) { var result; if(query.lazy) { result = [ - "module.exports = function(successCallback, errorCallback) {", + "module.exports = function(cb, err) {", " require.ensure([], function() {", - " successCallback(require(", loaderUtils.stringifyRequest(this, "!!" + remainingRequest), "));", + " cb(require(", loaderUtils.stringifyRequest(this, "!!" + remainingRequest), "));", " }, function() {", - " if (errorCallback) errorCallback.apply(this, arguments);", + " if (err) err.apply(this, arguments);", " }" + chunkNameParam + ");", "};"]; } else { @@ -35,18 +35,18 @@ module.exports.pitch = function(remainingRequest) { "var cbs,", " data,", " error = false;", - "module.exports = function(successCallback, errorCallback) {", - " errorCallback = errorCallback || function() {};", + "module.exports = function(cb, err) {", + " err = err || function() {};", " if (data) {", - " successCallback(data);", + " cb(data);", " } else {", " if (error) {", " // Try again.", " requireBundle();", " }", " cbs.push({", - " success: successCallback,", - " error: errorCallback", + " success: cb,", + " error: err", " });", " }", "};", @@ -77,11 +77,11 @@ module.exports.pitch = function(remainingRequest) { Output format: // lazy - module.exports = function(successCallback, errorCallback) { + module.exports = function(cb, err) { require.ensure([], function() {", - successCallback(require("xxx")); + cb(require("xxx")); }, function() { - if (errorCallback) errorCallback.apply(this, arguments); + if (err) err.apply(this, arguments); }, 'name'); }; @@ -89,18 +89,18 @@ Output format: var cbs, data, error = false; - module.exports = function(successCallback, errorCallback) { - errorCallback = errorCallback || function() {}; + module.exports = function(cb, err) { + err = err || function() {}; if (data) { - successCallback(data); + cb(data); } else { if (error) { // Try again. requireBundle(); } cbs.push({ - success: successCallback, - error: errorCallback + success: cb, + error: err }); } }; From df9f44a491ed30a28610113b084aa84c2d88e94c Mon Sep 17 00:00:00 2001 From: jharris4 Date: Wed, 23 May 2018 10:44:23 -0400 Subject: [PATCH 4/4] fix error not being passed to error callback when query.lazy is false --- index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index 3f70f80..1477b2f 100644 --- a/index.js +++ b/index.js @@ -61,7 +61,7 @@ module.exports.pitch = function(remainingRequest) { " cbs = null;", " }, function() {", " for(var i = 0, l = cbs.length; i < l; i++) {", - " cbs[i].error();", + " cbs[i].error.apply(this, arguments);", " }", " error = true;", " cbs = null;", @@ -115,7 +115,7 @@ Output format: cbs = null; }, function() { for(var i = 0, l = cbs.length; i < l; i++) { - cbs[i].error(); + cbs[i].error.apply(this, arguments); } error = true; cbs = null;