Sha256: 5ea76988f3bfb47164291c0ffff76ff0f51daa29893ac0324e5e223facd473d2

Contents?: true

Size: 1.88 KB

Versions: 27

Compression:

Stored size: 1.88 KB

Contents

/*
	MIT License http://www.opensource.org/licenses/mit-license.php
	Author Tobias Koppers @sokra
*/
"use strict";

const Module = require("./Module");
const Template = require("./Template");
const { RawSource } = require("webpack-sources");

/** @typedef {import("./util/createHash").Hash} Hash */

class MultiModule extends Module {
	constructor(context, dependencies, name) {
		super("javascript/dynamic", context);

		// Info from Factory
		this.dependencies = dependencies;
		this.name = name;
		this._identifier = `multi ${this.dependencies
			.map(d => d.request)
			.join(" ")}`;
	}

	identifier() {
		return this._identifier;
	}

	readableIdentifier(requestShortener) {
		return `multi ${this.dependencies
			.map(d => requestShortener.shorten(d.request))
			.join(" ")}`;
	}

	build(options, compilation, resolver, fs, callback) {
		this.built = true;
		this.buildMeta = {};
		this.buildInfo = {};
		return callback();
	}

	needRebuild() {
		return false;
	}

	size() {
		return 16 + this.dependencies.length * 12;
	}

	/**
	 * @param {Hash} hash the hash used to track dependencies
	 * @returns {void}
	 */
	updateHash(hash) {
		hash.update("multi module");
		hash.update(this.name || "");
		super.updateHash(hash);
	}

	source(dependencyTemplates, runtimeTemplate) {
		const str = [];
		let idx = 0;
		for (const dep of this.dependencies) {
			if (dep.module) {
				if (idx === this.dependencies.length - 1) {
					str.push("module.exports = ");
				}
				str.push("__webpack_require__(");
				if (runtimeTemplate.outputOptions.pathinfo) {
					str.push(Template.toComment(dep.request));
				}
				str.push(`${JSON.stringify(dep.module.id)}`);
				str.push(")");
			} else {
				const content = require("./dependencies/WebpackMissingModule").module(
					dep.request
				);
				str.push(content);
			}
			str.push(";\n");
			idx++;
		}
		return new RawSource(str.join(""));
	}
}

module.exports = MultiModule;

Version data entries

27 entries across 26 versions & 9 rubygems

Version Path
optimacms-0.1.61 spec/dummy/node_modules/webpack/lib/MultiModule.js
disco_app-0.18.0 test/dummy/node_modules/webpack/lib/MultiModule.js
disco_app-0.18.2 test/dummy/node_modules/webpack/lib/MultiModule.js
disco_app-0.16.1 test/dummy/node_modules/webpack/lib/MultiModule.js
disco_app-0.15.2 test/dummy/node_modules/webpack/lib/MultiModule.js
disco_app-0.18.4 test/dummy/node_modules/webpack/lib/MultiModule.js
disco_app-0.18.1 test/dummy/node_modules/webpack/lib/MultiModule.js
disco_app-0.12.7.pre.puma.pre.3 test/dummy/node_modules/webpack/lib/MultiModule.js
disco_app-0.14.0 test/dummy/node_modules/webpack/lib/MultiModule.js
disco_app-0.13.6.pre.puma.pre.3 test/dummy/node_modules/webpack/lib/MultiModule.js
tang-0.2.1 spec/tang_app/node_modules/webpack/lib/MultiModule.js
groonga-client-model-6.0.0 test/apps/rails6.0.3.5/node_modules/webpack/lib/MultiModule.js
groonga-client-model-6.0.0 test/apps/rails6.1.3/node_modules/webpack/lib/MultiModule.js
ruby2js-4.0.4 lib/tasks/testrails/node_modules/webpack/lib/MultiModule.js
ruby2js-4.0.3 lib/tasks/testrails/node_modules/webpack/lib/MultiModule.js
tang-0.2.0 spec/tang_app/node_modules/webpack/lib/MultiModule.js
tang-0.1.0 spec/tang_app/node_modules/webpack/lib/MultiModule.js
tang-0.0.9 spec/tang_app/node_modules/webpack/lib/MultiModule.js
enju_library-0.3.8 spec/dummy/node_modules/webpack/lib/MultiModule.js
jester-data-8.0.0 node_modules/webpack/lib/MultiModule.js