summaryrefslogtreecommitdiffstats
path: root/node_modules/webpack/lib/web/JsonpChunkTemplatePlugin.js
diff options
context:
space:
mode:
authorGravatar Piotr Russ <mail@pruss.it> 2020-11-16 00:10:28 +0100
committerGravatar Piotr Russ <mail@pruss.it> 2020-11-16 00:10:28 +0100
commite06ec920f7a5d784e674c4c4b4e6d1da3dc7391d (patch)
tree55713f725f77b44ebfec86e4eec3ce33e71458ca /node_modules/webpack/lib/web/JsonpChunkTemplatePlugin.js
downloadwebsite_creator-e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d.tar.gz
website_creator-e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d.tar.bz2
website_creator-e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d.zip
api, login, auth
Diffstat (limited to 'node_modules/webpack/lib/web/JsonpChunkTemplatePlugin.js')
-rw-r--r--node_modules/webpack/lib/web/JsonpChunkTemplatePlugin.js71
1 files changed, 71 insertions, 0 deletions
diff --git a/node_modules/webpack/lib/web/JsonpChunkTemplatePlugin.js b/node_modules/webpack/lib/web/JsonpChunkTemplatePlugin.js
new file mode 100644
index 0000000..123dd52
--- /dev/null
+++ b/node_modules/webpack/lib/web/JsonpChunkTemplatePlugin.js
@@ -0,0 +1,71 @@
+/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Tobias Koppers @sokra
+*/
+"use strict";
+
+const { ConcatSource } = require("webpack-sources");
+
+/** @typedef {import("../ChunkTemplate")} ChunkTemplate */
+
+const getEntryInfo = chunk => {
+ return [chunk.entryModule].filter(Boolean).map(m =>
+ [m.id].concat(
+ Array.from(chunk.groupsIterable)[0]
+ .chunks.filter(c => c !== chunk)
+ .map(c => c.id)
+ )
+ );
+};
+
+class JsonpChunkTemplatePlugin {
+ /**
+ * @param {ChunkTemplate} chunkTemplate the chunk template
+ * @returns {void}
+ */
+ apply(chunkTemplate) {
+ chunkTemplate.hooks.render.tap(
+ "JsonpChunkTemplatePlugin",
+ (modules, chunk) => {
+ const jsonpFunction = chunkTemplate.outputOptions.jsonpFunction;
+ const globalObject = chunkTemplate.outputOptions.globalObject;
+ const source = new ConcatSource();
+ const prefetchChunks = chunk.getChildIdsByOrders().prefetch;
+ source.add(
+ `(${globalObject}[${JSON.stringify(
+ jsonpFunction
+ )}] = ${globalObject}[${JSON.stringify(
+ jsonpFunction
+ )}] || []).push([${JSON.stringify(chunk.ids)},`
+ );
+ source.add(modules);
+ const entries = getEntryInfo(chunk);
+ if (entries.length > 0) {
+ source.add(`,${JSON.stringify(entries)}`);
+ } else if (prefetchChunks && prefetchChunks.length) {
+ source.add(`,0`);
+ }
+
+ if (prefetchChunks && prefetchChunks.length) {
+ source.add(`,${JSON.stringify(prefetchChunks)}`);
+ }
+ source.add("])");
+ return source;
+ }
+ );
+ chunkTemplate.hooks.hash.tap("JsonpChunkTemplatePlugin", hash => {
+ hash.update("JsonpChunkTemplatePlugin");
+ hash.update("4");
+ hash.update(`${chunkTemplate.outputOptions.jsonpFunction}`);
+ hash.update(`${chunkTemplate.outputOptions.globalObject}`);
+ });
+ chunkTemplate.hooks.hashForChunk.tap(
+ "JsonpChunkTemplatePlugin",
+ (hash, chunk) => {
+ hash.update(JSON.stringify(getEntryInfo(chunk)));
+ hash.update(JSON.stringify(chunk.getChildIdsByOrders().prefetch) || "");
+ }
+ );
+ }
+}
+module.exports = JsonpChunkTemplatePlugin;