summaryrefslogtreecommitdiffstats
path: root/node_modules/webpack/lib/wasm/WebAssemblyModulesPlugin.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/wasm/WebAssemblyModulesPlugin.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/wasm/WebAssemblyModulesPlugin.js')
-rw-r--r--node_modules/webpack/lib/wasm/WebAssemblyModulesPlugin.js128
1 files changed, 128 insertions, 0 deletions
diff --git a/node_modules/webpack/lib/wasm/WebAssemblyModulesPlugin.js b/node_modules/webpack/lib/wasm/WebAssemblyModulesPlugin.js
new file mode 100644
index 0000000..a4dd8a5
--- /dev/null
+++ b/node_modules/webpack/lib/wasm/WebAssemblyModulesPlugin.js
@@ -0,0 +1,128 @@
+/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Tobias Koppers @sokra
+*/
+"use strict";
+
+const Generator = require("../Generator");
+const WebAssemblyExportImportedDependency = require("../dependencies/WebAssemblyExportImportedDependency");
+const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDependency");
+const WebAssemblyInInitialChunkError = require("./WebAssemblyInInitialChunkError");
+
+/** @typedef {import("../Compiler")} Compiler */
+
+let WebAssemblyGenerator;
+let WebAssemblyJavascriptGenerator;
+let WebAssemblyParser;
+
+class WebAssemblyModulesPlugin {
+ constructor(options) {
+ this.options = options;
+ }
+
+ /**
+ * @param {Compiler} compiler compiler
+ * @returns {void}
+ */
+ apply(compiler) {
+ compiler.hooks.compilation.tap(
+ "WebAssemblyModulesPlugin",
+ (compilation, { normalModuleFactory }) => {
+ compilation.dependencyFactories.set(
+ WebAssemblyImportDependency,
+ normalModuleFactory
+ );
+
+ compilation.dependencyFactories.set(
+ WebAssemblyExportImportedDependency,
+ normalModuleFactory
+ );
+
+ normalModuleFactory.hooks.createParser
+ .for("webassembly/experimental")
+ .tap("WebAssemblyModulesPlugin", () => {
+ if (WebAssemblyParser === undefined) {
+ WebAssemblyParser = require("./WebAssemblyParser");
+ }
+ return new WebAssemblyParser();
+ });
+
+ normalModuleFactory.hooks.createGenerator
+ .for("webassembly/experimental")
+ .tap("WebAssemblyModulesPlugin", () => {
+ if (WebAssemblyGenerator === undefined) {
+ WebAssemblyGenerator = require("./WebAssemblyGenerator");
+ }
+ if (WebAssemblyJavascriptGenerator === undefined) {
+ WebAssemblyJavascriptGenerator = require("./WebAssemblyJavascriptGenerator");
+ }
+ return Generator.byType({
+ javascript: new WebAssemblyJavascriptGenerator(),
+ webassembly: new WebAssemblyGenerator(this.options)
+ });
+ });
+
+ compilation.chunkTemplate.hooks.renderManifest.tap(
+ "WebAssemblyModulesPlugin",
+ (result, options) => {
+ const chunk = options.chunk;
+ const outputOptions = options.outputOptions;
+ const moduleTemplates = options.moduleTemplates;
+ const dependencyTemplates = options.dependencyTemplates;
+
+ for (const module of chunk.modulesIterable) {
+ if (module.type && module.type.startsWith("webassembly")) {
+ const filenameTemplate =
+ outputOptions.webassemblyModuleFilename;
+
+ result.push({
+ render: () =>
+ this.renderWebAssembly(
+ module,
+ moduleTemplates.webassembly,
+ dependencyTemplates
+ ),
+ filenameTemplate,
+ pathOptions: {
+ module
+ },
+ identifier: `webassemblyModule${module.id}`,
+ hash: module.hash
+ });
+ }
+ }
+
+ return result;
+ }
+ );
+
+ compilation.hooks.afterChunks.tap("WebAssemblyModulesPlugin", () => {
+ const initialWasmModules = new Set();
+ for (const chunk of compilation.chunks) {
+ if (chunk.canBeInitial()) {
+ for (const module of chunk.modulesIterable) {
+ if (module.type.startsWith("webassembly")) {
+ initialWasmModules.add(module);
+ }
+ }
+ }
+ }
+ for (const module of initialWasmModules) {
+ compilation.errors.push(
+ new WebAssemblyInInitialChunkError(
+ module,
+ compilation.requestShortener
+ )
+ );
+ }
+ });
+ }
+ );
+ }
+
+ renderWebAssembly(module, moduleTemplate, dependencyTemplates) {
+ return moduleTemplate.render(module, dependencyTemplates, {});
+ }
+}
+
+module.exports = WebAssemblyModulesPlugin;