summaryrefslogtreecommitdiff
path: root/node_modules/webpack/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/webpack/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js')
-rw-r--r--node_modules/webpack/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js205
1 files changed, 0 insertions, 205 deletions
diff --git a/node_modules/webpack/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js b/node_modules/webpack/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js
deleted file mode 100644
index baa71333..00000000
--- a/node_modules/webpack/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
- MIT License http://www.opensource.org/licenses/mit-license.php
- Author Tobias Koppers @sokra
-*/
-
-"use strict";
-
-const { RawSource } = require("webpack-sources");
-const Generator = require("../Generator");
-const InitFragment = require("../InitFragment");
-const RuntimeGlobals = require("../RuntimeGlobals");
-const Template = require("../Template");
-const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDependency");
-
-/** @typedef {import("webpack-sources").Source} Source */
-/** @typedef {import("../../declarations/WebpackOptions").OutputNormalized} OutputOptions */
-/** @typedef {import("../DependencyTemplates")} DependencyTemplates */
-/** @typedef {import("../Generator").GenerateContext} GenerateContext */
-/** @typedef {import("../Module")} Module */
-/** @typedef {import("../NormalModule")} NormalModule */
-/** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
-
-const TYPES = new Set(["webassembly"]);
-
-/**
- * @typedef {{ request: string, importVar: string }} ImportObjRequestItem
- */
-
-class AsyncWebAssemblyJavascriptGenerator extends Generator {
- /**
- * @param {OutputOptions["webassemblyModuleFilename"]} filenameTemplate template for the WebAssembly module filename
- */
- constructor(filenameTemplate) {
- super();
- this.filenameTemplate = filenameTemplate;
- }
-
- /**
- * @param {NormalModule} module fresh module
- * @returns {Set<string>} available types (do not mutate)
- */
- getTypes(module) {
- return TYPES;
- }
-
- /**
- * @param {NormalModule} module the module
- * @param {string=} type source type
- * @returns {number} estimate size of the module
- */
- getSize(module, type) {
- return 40 + module.dependencies.length * 10;
- }
-
- /**
- * @param {NormalModule} module module for which the code should be generated
- * @param {GenerateContext} generateContext context for generate
- * @returns {Source} generated code
- */
- generate(module, generateContext) {
- const {
- runtimeTemplate,
- chunkGraph,
- moduleGraph,
- runtimeRequirements,
- runtime
- } = generateContext;
- runtimeRequirements.add(RuntimeGlobals.module);
- runtimeRequirements.add(RuntimeGlobals.moduleId);
- runtimeRequirements.add(RuntimeGlobals.exports);
- runtimeRequirements.add(RuntimeGlobals.instantiateWasm);
- /** @type {InitFragment<InitFragment<string>>[]} */
- const initFragments = [];
- /** @type {Map<Module, ImportObjRequestItem>} */
- const depModules = new Map();
- /** @type {Map<string, WebAssemblyImportDependency[]>} */
- const wasmDepsByRequest = new Map();
- for (const dep of module.dependencies) {
- if (dep instanceof WebAssemblyImportDependency) {
- const module = moduleGraph.getModule(dep);
- if (!depModules.has(module)) {
- depModules.set(module, {
- request: dep.request,
- importVar: `WEBPACK_IMPORTED_MODULE_${depModules.size}`
- });
- }
- let list = wasmDepsByRequest.get(dep.request);
- if (list === undefined) {
- list = [];
- wasmDepsByRequest.set(dep.request, list);
- }
- list.push(dep);
- }
- }
-
- /** @type {Array<string>} */
- const promises = [];
-
- const importStatements = Array.from(
- depModules,
- ([importedModule, { request, importVar }]) => {
- if (moduleGraph.isAsync(importedModule)) {
- promises.push(importVar);
- }
- return runtimeTemplate.importStatement({
- update: false,
- module: importedModule,
- chunkGraph,
- request,
- originModule: module,
- importVar,
- runtimeRequirements
- });
- }
- );
- const importsCode = importStatements.map(([x]) => x).join("");
- const importsCompatCode = importStatements.map(([_, x]) => x).join("");
-
- const importObjRequestItems = Array.from(
- wasmDepsByRequest,
- ([request, deps]) => {
- const exportItems = deps.map(dep => {
- const importedModule = moduleGraph.getModule(dep);
- const importVar =
- /** @type {ImportObjRequestItem} */
- (depModules.get(importedModule)).importVar;
- return `${JSON.stringify(
- dep.name
- )}: ${runtimeTemplate.exportFromImport({
- moduleGraph,
- module: importedModule,
- request,
- exportName: dep.name,
- originModule: module,
- asiSafe: true,
- isCall: false,
- callContext: false,
- defaultInterop: true,
- importVar,
- initFragments,
- runtime,
- runtimeRequirements
- })}`;
- });
- return Template.asString([
- `${JSON.stringify(request)}: {`,
- Template.indent(exportItems.join(",\n")),
- "}"
- ]);
- }
- );
-
- const importsObj =
- importObjRequestItems.length > 0
- ? Template.asString([
- "{",
- Template.indent(importObjRequestItems.join(",\n")),
- "}"
- ])
- : undefined;
-
- const instantiateCall =
- `${RuntimeGlobals.instantiateWasm}(${module.exportsArgument}, ${
- module.moduleArgument
- }.id, ${JSON.stringify(
- chunkGraph.getRenderedModuleHash(module, runtime)
- )}` + (importsObj ? `, ${importsObj})` : `)`);
-
- if (promises.length > 0)
- runtimeRequirements.add(RuntimeGlobals.asyncModule);
-
- const source = new RawSource(
- promises.length > 0
- ? Template.asString([
- `var __webpack_instantiate__ = ${runtimeTemplate.basicFunction(
- `[${promises.join(", ")}]`,
- `${importsCompatCode}return ${instantiateCall};`
- )}`,
- `${RuntimeGlobals.asyncModule}(${
- module.moduleArgument
- }, async ${runtimeTemplate.basicFunction(
- "__webpack_handle_async_dependencies__, __webpack_async_result__",
- [
- "try {",
- importsCode,
- `var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([${promises.join(
- ", "
- )}]);`,
- `var [${promises.join(
- ", "
- )}] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__;`,
- `${importsCompatCode}await ${instantiateCall};`,
- "__webpack_async_result__();",
- "} catch(e) { __webpack_async_result__(e); }"
- ]
- )}, 1);`
- ])
- : `${importsCode}${importsCompatCode}module.exports = ${instantiateCall};`
- );
-
- return InitFragment.addToSource(source, initFragments, generateContext);
- }
-}
-
-module.exports = AsyncWebAssemblyJavascriptGenerator;