UNPKG

react-monaco-editor

Version:
48 lines (45 loc) 1.37 kB
/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const { ConcatSource } = require("webpack-sources"); class JsonpChunkTemplatePlugin { apply(chunkTemplate) { chunkTemplate.hooks.render.tap( "JsonpChunkTemplatePlugin", (modules, chunk) => { const jsonpFunction = chunkTemplate.outputOptions.jsonpFunction; const globalObject = chunkTemplate.outputOptions.globalObject; const source = new ConcatSource(); source.add( `(${globalObject}[${JSON.stringify( jsonpFunction )}] = ${globalObject}[${JSON.stringify( jsonpFunction )}] || []).push([${JSON.stringify(chunk.ids)},` ); source.add(modules); const entries = [chunk.entryModule].filter(Boolean).map(m => [m.id].concat( Array.from(chunk.groupsIterable)[0] .chunks.filter(c => c !== chunk) .map(c => c.id) ) ); if (entries.length > 0) { source.add(`,${JSON.stringify(entries)}`); } 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}`); }); } } module.exports = JsonpChunkTemplatePlugin;