| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 | 
							- /*
 
- 	MIT License http://www.opensource.org/licenses/mit-license.php
 
- 	Author Tobias Koppers @sokra
 
- */
 
- "use strict";
 
- const DelegatedModule = require("./DelegatedModule");
 
- // options.source
 
- // options.type
 
- // options.context
 
- // options.scope
 
- // options.content
 
- class DelegatedModuleFactoryPlugin {
 
- 	constructor(options) {
 
- 		this.options = options;
 
- 		options.type = options.type || "require";
 
- 		options.extensions = options.extensions || [
 
- 			"",
 
- 			".wasm",
 
- 			".mjs",
 
- 			".js",
 
- 			".json"
 
- 		];
 
- 	}
 
- 	apply(normalModuleFactory) {
 
- 		const scope = this.options.scope;
 
- 		if (scope) {
 
- 			normalModuleFactory.hooks.factory.tap(
 
- 				"DelegatedModuleFactoryPlugin",
 
- 				factory => (data, callback) => {
 
- 					const dependency = data.dependencies[0];
 
- 					const request = dependency.request;
 
- 					if (request && request.indexOf(scope + "/") === 0) {
 
- 						const innerRequest = "." + request.substr(scope.length);
 
- 						let resolved;
 
- 						if (innerRequest in this.options.content) {
 
- 							resolved = this.options.content[innerRequest];
 
- 							return callback(
 
- 								null,
 
- 								new DelegatedModule(
 
- 									this.options.source,
 
- 									resolved,
 
- 									this.options.type,
 
- 									innerRequest,
 
- 									request
 
- 								)
 
- 							);
 
- 						}
 
- 						for (let i = 0; i < this.options.extensions.length; i++) {
 
- 							const extension = this.options.extensions[i];
 
- 							const requestPlusExt = innerRequest + extension;
 
- 							if (requestPlusExt in this.options.content) {
 
- 								resolved = this.options.content[requestPlusExt];
 
- 								return callback(
 
- 									null,
 
- 									new DelegatedModule(
 
- 										this.options.source,
 
- 										resolved,
 
- 										this.options.type,
 
- 										requestPlusExt,
 
- 										request + extension
 
- 									)
 
- 								);
 
- 							}
 
- 						}
 
- 					}
 
- 					return factory(data, callback);
 
- 				}
 
- 			);
 
- 		} else {
 
- 			normalModuleFactory.hooks.module.tap(
 
- 				"DelegatedModuleFactoryPlugin",
 
- 				module => {
 
- 					if (module.libIdent) {
 
- 						const request = module.libIdent(this.options);
 
- 						if (request && request in this.options.content) {
 
- 							const resolved = this.options.content[request];
 
- 							return new DelegatedModule(
 
- 								this.options.source,
 
- 								resolved,
 
- 								this.options.type,
 
- 								request,
 
- 								module
 
- 							);
 
- 						}
 
- 					}
 
- 					return module;
 
- 				}
 
- 			);
 
- 		}
 
- 	}
 
- }
 
- module.exports = DelegatedModuleFactoryPlugin;
 
 
  |