| 
									
										
										
										
											2019-03-31 22:12:19 +08:00
										 |  |  | /* | 
					
						
							|  |  |  | 	MIT License http://www.opensource.org/licenses/mit-license.php
 | 
					
						
							|  |  |  | 	Author Yuta Hiroto @hiroppy | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | "use strict"; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-05 07:19:11 +08:00
										 |  |  | const { | 
					
						
							|  |  |  | 	ASSET_MODULE_TYPE_RESOURCE, | 
					
						
							|  |  |  | 	ASSET_MODULE_TYPE_INLINE, | 
					
						
							|  |  |  | 	ASSET_MODULE_TYPE, | 
					
						
							|  |  |  | 	ASSET_MODULE_TYPE_SOURCE | 
					
						
							|  |  |  | } = require("../ModuleTypeConstants"); | 
					
						
							| 
									
										
										
										
											2021-01-05 18:11:02 +08:00
										 |  |  | const { cleverMerge } = require("../util/cleverMerge"); | 
					
						
							| 
									
										
										
										
											2019-10-16 22:38:04 +08:00
										 |  |  | const { compareModulesByIdentifier } = require("../util/comparators"); | 
					
						
							| 
									
										
										
										
											2021-04-16 21:35:18 +08:00
										 |  |  | const createSchemaValidation = require("../util/create-schema-validation"); | 
					
						
							| 
									
										
										
										
											2020-12-27 05:32:57 +08:00
										 |  |  | const memoize = require("../util/memoize"); | 
					
						
							| 
									
										
										
										
											2019-03-31 22:12:19 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | /** @typedef {import("webpack-sources").Source} Source */ | 
					
						
							| 
									
										
										
										
											2024-08-09 23:42:37 +08:00
										 |  |  | /** @typedef {import("../../declarations/WebpackOptions").AssetParserOptions} AssetParserOptions */ | 
					
						
							| 
									
										
										
										
											2019-03-31 22:12:19 +08:00
										 |  |  | /** @typedef {import("../Chunk")} Chunk */ | 
					
						
							|  |  |  | /** @typedef {import("../Compiler")} Compiler */ | 
					
						
							|  |  |  | /** @typedef {import("../Module")} Module */ | 
					
						
							| 
									
										
										
										
											2024-08-09 23:42:37 +08:00
										 |  |  | /** @typedef {import("../Module").BuildInfo} BuildInfo */ | 
					
						
							|  |  |  | /** @typedef {import("../Module").CodeGenerationResult} CodeGenerationResult */ | 
					
						
							| 
									
										
										
										
											2019-03-31 22:12:19 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-25 06:09:00 +08:00
										 |  |  | /** | 
					
						
							|  |  |  |  * @param {string} name name of definitions | 
					
						
							|  |  |  |  * @returns {TODO} definition | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2021-01-05 18:11:02 +08:00
										 |  |  | const getSchema = name => { | 
					
						
							|  |  |  | 	const { definitions } = require("../../schemas/WebpackOptions.json"); | 
					
						
							|  |  |  | 	return { | 
					
						
							|  |  |  | 		definitions, | 
					
						
							|  |  |  | 		oneOf: [{ $ref: `#/definitions/${name}` }] | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | }; | 
					
						
							| 
									
										
										
										
											2021-04-16 21:35:18 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | const generatorValidationOptions = { | 
					
						
							|  |  |  | 	name: "Asset Modules Plugin", | 
					
						
							|  |  |  | 	baseDataPath: "generator" | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | const validateGeneratorOptions = { | 
					
						
							|  |  |  | 	asset: createSchemaValidation( | 
					
						
							|  |  |  | 		require("../../schemas/plugins/asset/AssetGeneratorOptions.check.js"), | 
					
						
							|  |  |  | 		() => getSchema("AssetGeneratorOptions"), | 
					
						
							|  |  |  | 		generatorValidationOptions | 
					
						
							|  |  |  | 	), | 
					
						
							|  |  |  | 	"asset/resource": createSchemaValidation( | 
					
						
							|  |  |  | 		require("../../schemas/plugins/asset/AssetResourceGeneratorOptions.check.js"), | 
					
						
							|  |  |  | 		() => getSchema("AssetResourceGeneratorOptions"), | 
					
						
							|  |  |  | 		generatorValidationOptions | 
					
						
							|  |  |  | 	), | 
					
						
							|  |  |  | 	"asset/inline": createSchemaValidation( | 
					
						
							|  |  |  | 		require("../../schemas/plugins/asset/AssetInlineGeneratorOptions.check.js"), | 
					
						
							|  |  |  | 		() => getSchema("AssetInlineGeneratorOptions"), | 
					
						
							|  |  |  | 		generatorValidationOptions | 
					
						
							|  |  |  | 	) | 
					
						
							| 
									
										
										
										
											2020-01-23 18:27:12 +08:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-16 21:35:18 +08:00
										 |  |  | const validateParserOptions = createSchemaValidation( | 
					
						
							|  |  |  | 	require("../../schemas/plugins/asset/AssetParserOptions.check.js"), | 
					
						
							|  |  |  | 	() => getSchema("AssetParserOptions"), | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		name: "Asset Modules Plugin", | 
					
						
							|  |  |  | 		baseDataPath: "parser" | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-27 05:32:57 +08:00
										 |  |  | const getAssetGenerator = memoize(() => require("./AssetGenerator")); | 
					
						
							|  |  |  | const getAssetParser = memoize(() => require("./AssetParser")); | 
					
						
							| 
									
										
										
										
											2021-03-11 17:40:03 +08:00
										 |  |  | const getAssetSourceParser = memoize(() => require("./AssetSourceParser")); | 
					
						
							| 
									
										
										
										
											2020-12-27 05:32:57 +08:00
										 |  |  | const getAssetSourceGenerator = memoize(() => | 
					
						
							| 
									
										
										
										
											2019-12-04 01:31:39 +08:00
										 |  |  | 	require("./AssetSourceGenerator") | 
					
						
							| 
									
										
										
										
											2019-12-02 23:37:55 +08:00
										 |  |  | ); | 
					
						
							| 
									
										
										
										
											2019-11-26 21:09:22 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-05 07:19:11 +08:00
										 |  |  | const type = ASSET_MODULE_TYPE; | 
					
						
							| 
									
										
										
										
											2019-07-16 19:16:27 +08:00
										 |  |  | const plugin = "AssetModulesPlugin"; | 
					
						
							| 
									
										
										
										
											2019-03-31 22:12:19 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-16 19:33:45 +08:00
										 |  |  | class AssetModulesPlugin { | 
					
						
							| 
									
										
										
										
											2019-03-31 22:12:19 +08:00
										 |  |  | 	/** | 
					
						
							| 
									
										
										
										
											2020-04-23 16:48:36 +08:00
										 |  |  | 	 * Apply the plugin | 
					
						
							|  |  |  | 	 * @param {Compiler} compiler the compiler instance | 
					
						
							| 
									
										
										
										
											2019-03-31 22:12:19 +08:00
										 |  |  | 	 * @returns {void} | 
					
						
							|  |  |  | 	 */ | 
					
						
							|  |  |  | 	apply(compiler) { | 
					
						
							|  |  |  | 		compiler.hooks.compilation.tap( | 
					
						
							|  |  |  | 			plugin, | 
					
						
							|  |  |  | 			(compilation, { normalModuleFactory }) => { | 
					
						
							| 
									
										
										
										
											2019-11-26 20:56:27 +08:00
										 |  |  | 				normalModuleFactory.hooks.createParser | 
					
						
							| 
									
										
										
										
											2023-05-05 07:19:11 +08:00
										 |  |  | 					.for(ASSET_MODULE_TYPE) | 
					
						
							| 
									
										
										
										
											2019-11-26 20:56:27 +08:00
										 |  |  | 					.tap(plugin, parserOptions => { | 
					
						
							| 
									
										
										
										
											2021-04-16 21:35:18 +08:00
										 |  |  | 						validateParserOptions(parserOptions); | 
					
						
							| 
									
										
										
										
											2021-01-05 18:11:02 +08:00
										 |  |  | 						parserOptions = cleverMerge( | 
					
						
							| 
									
										
										
										
											2024-08-09 23:42:37 +08:00
										 |  |  | 							/** @type {AssetParserOptions} */ | 
					
						
							|  |  |  | 							(compiler.options.module.parser.asset), | 
					
						
							| 
									
										
										
										
											2021-01-05 18:11:02 +08:00
										 |  |  | 							parserOptions | 
					
						
							|  |  |  | 						); | 
					
						
							| 
									
										
										
										
											2019-11-18 00:49:48 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-11-26 20:56:27 +08:00
										 |  |  | 						let dataUrlCondition = parserOptions.dataUrlCondition; | 
					
						
							|  |  |  | 						if (!dataUrlCondition || typeof dataUrlCondition === "object") { | 
					
						
							|  |  |  | 							dataUrlCondition = { | 
					
						
							|  |  |  | 								maxSize: 8096, | 
					
						
							|  |  |  | 								...dataUrlCondition | 
					
						
							|  |  |  | 							}; | 
					
						
							|  |  |  | 						} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-12-04 01:31:39 +08:00
										 |  |  | 						const AssetParser = getAssetParser(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-11 23:41:19 +08:00
										 |  |  | 						return new AssetParser(dataUrlCondition); | 
					
						
							| 
									
										
										
										
											2019-11-26 20:56:27 +08:00
										 |  |  | 					}); | 
					
						
							|  |  |  | 				normalModuleFactory.hooks.createParser | 
					
						
							| 
									
										
										
										
											2023-05-05 07:19:11 +08:00
										 |  |  | 					.for(ASSET_MODULE_TYPE_INLINE) | 
					
						
							| 
									
										
										
										
											2024-08-09 23:42:37 +08:00
										 |  |  | 					.tap(plugin, _parserOptions => { | 
					
						
							| 
									
										
										
										
											2019-12-04 01:31:39 +08:00
										 |  |  | 						const AssetParser = getAssetParser(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 						return new AssetParser(true); | 
					
						
							|  |  |  | 					}); | 
					
						
							| 
									
										
										
										
											2019-11-26 20:56:27 +08:00
										 |  |  | 				normalModuleFactory.hooks.createParser | 
					
						
							| 
									
										
										
										
											2023-05-05 07:19:11 +08:00
										 |  |  | 					.for(ASSET_MODULE_TYPE_RESOURCE) | 
					
						
							| 
									
										
										
										
											2024-08-09 23:42:37 +08:00
										 |  |  | 					.tap(plugin, _parserOptions => { | 
					
						
							| 
									
										
										
										
											2019-12-04 01:31:39 +08:00
										 |  |  | 						const AssetParser = getAssetParser(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-11 23:41:19 +08:00
										 |  |  | 						return new AssetParser(false); | 
					
						
							| 
									
										
										
										
											2019-12-04 01:31:39 +08:00
										 |  |  | 					}); | 
					
						
							| 
									
										
										
										
											2019-11-26 21:05:07 +08:00
										 |  |  | 				normalModuleFactory.hooks.createParser | 
					
						
							| 
									
										
										
										
											2023-05-05 07:19:11 +08:00
										 |  |  | 					.for(ASSET_MODULE_TYPE_SOURCE) | 
					
						
							| 
									
										
										
										
											2024-08-09 23:42:37 +08:00
										 |  |  | 					.tap(plugin, _parserOptions => { | 
					
						
							| 
									
										
										
										
											2021-03-11 17:40:03 +08:00
										 |  |  | 						const AssetSourceParser = getAssetSourceParser(); | 
					
						
							| 
									
										
										
										
											2019-12-04 01:31:39 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-11 17:40:03 +08:00
										 |  |  | 						return new AssetSourceParser(); | 
					
						
							| 
									
										
										
										
											2019-12-04 01:31:39 +08:00
										 |  |  | 					}); | 
					
						
							| 
									
										
										
										
											2019-11-26 20:56:27 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-05 07:19:11 +08:00
										 |  |  | 				for (const type of [ | 
					
						
							|  |  |  | 					ASSET_MODULE_TYPE, | 
					
						
							|  |  |  | 					ASSET_MODULE_TYPE_INLINE, | 
					
						
							|  |  |  | 					ASSET_MODULE_TYPE_RESOURCE | 
					
						
							|  |  |  | 				]) { | 
					
						
							| 
									
										
										
										
											2019-11-26 20:56:27 +08:00
										 |  |  | 					normalModuleFactory.hooks.createGenerator | 
					
						
							|  |  |  | 						.for(type) | 
					
						
							|  |  |  | 						.tap(plugin, generatorOptions => { | 
					
						
							| 
									
										
										
										
											2021-04-16 21:35:18 +08:00
										 |  |  | 							validateGeneratorOptions[type](generatorOptions); | 
					
						
							| 
									
										
										
										
											2019-11-26 20:56:27 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-31 06:15:03 +08:00
										 |  |  | 							let dataUrl; | 
					
						
							| 
									
										
										
										
											2023-05-05 07:19:11 +08:00
										 |  |  | 							if (type !== ASSET_MODULE_TYPE_RESOURCE) { | 
					
						
							| 
									
										
										
										
											2020-01-29 21:48:46 +08:00
										 |  |  | 								dataUrl = generatorOptions.dataUrl; | 
					
						
							|  |  |  | 								if (!dataUrl || typeof dataUrl === "object") { | 
					
						
							|  |  |  | 									dataUrl = { | 
					
						
							| 
									
										
										
										
											2021-05-19 14:48:10 +08:00
										 |  |  | 										encoding: undefined, | 
					
						
							| 
									
										
										
										
											2020-01-29 21:48:46 +08:00
										 |  |  | 										mimetype: undefined, | 
					
						
							|  |  |  | 										...dataUrl | 
					
						
							|  |  |  | 									}; | 
					
						
							|  |  |  | 								} | 
					
						
							|  |  |  | 							} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-31 06:15:03 +08:00
										 |  |  | 							let filename; | 
					
						
							|  |  |  | 							let publicPath; | 
					
						
							|  |  |  | 							let outputPath; | 
					
						
							| 
									
										
										
										
											2023-05-05 07:19:11 +08:00
										 |  |  | 							if (type !== ASSET_MODULE_TYPE_INLINE) { | 
					
						
							| 
									
										
										
										
											2020-01-29 21:48:46 +08:00
										 |  |  | 								filename = generatorOptions.filename; | 
					
						
							| 
									
										
										
										
											2021-03-16 02:03:19 +08:00
										 |  |  | 								publicPath = generatorOptions.publicPath; | 
					
						
							| 
									
										
										
										
											2021-12-17 22:07:20 +08:00
										 |  |  | 								outputPath = generatorOptions.outputPath; | 
					
						
							| 
									
										
										
										
											2019-11-26 20:56:27 +08:00
										 |  |  | 							} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-12-04 01:31:39 +08:00
										 |  |  | 							const AssetGenerator = getAssetGenerator(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-12 01:44:41 +08:00
										 |  |  | 							return new AssetGenerator( | 
					
						
							| 
									
										
										
										
											2024-10-11 17:59:00 +08:00
										 |  |  | 								compilation.moduleGraph, | 
					
						
							| 
									
										
										
										
											2021-03-12 01:44:41 +08:00
										 |  |  | 								dataUrl, | 
					
						
							|  |  |  | 								filename, | 
					
						
							| 
									
										
										
										
											2021-03-16 02:03:19 +08:00
										 |  |  | 								publicPath, | 
					
						
							| 
									
										
										
										
											2021-12-17 22:07:20 +08:00
										 |  |  | 								outputPath, | 
					
						
							| 
									
										
										
										
											2021-03-12 01:44:41 +08:00
										 |  |  | 								generatorOptions.emit !== false | 
					
						
							|  |  |  | 							); | 
					
						
							| 
									
										
										
										
											2019-11-26 20:56:27 +08:00
										 |  |  | 						}); | 
					
						
							|  |  |  | 				} | 
					
						
							| 
									
										
										
										
											2019-11-26 21:05:07 +08:00
										 |  |  | 				normalModuleFactory.hooks.createGenerator | 
					
						
							| 
									
										
										
										
											2023-05-05 07:19:11 +08:00
										 |  |  | 					.for(ASSET_MODULE_TYPE_SOURCE) | 
					
						
							| 
									
										
										
										
											2019-12-04 01:31:39 +08:00
										 |  |  | 					.tap(plugin, () => { | 
					
						
							|  |  |  | 						const AssetSourceGenerator = getAssetSourceGenerator(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-10-12 20:22:36 +08:00
										 |  |  | 						return new AssetSourceGenerator(compilation.moduleGraph); | 
					
						
							| 
									
										
										
										
											2019-12-04 01:31:39 +08:00
										 |  |  | 					}); | 
					
						
							| 
									
										
										
										
											2019-03-31 22:12:19 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-04 18:24:52 +08:00
										 |  |  | 				compilation.hooks.renderManifest.tap(plugin, (result, options) => { | 
					
						
							| 
									
										
										
										
											2019-10-09 04:29:46 +08:00
										 |  |  | 					const { chunkGraph } = compilation; | 
					
						
							| 
									
										
										
										
											2020-07-17 20:57:11 +08:00
										 |  |  | 					const { chunk, codeGenerationResults } = options; | 
					
						
							| 
									
										
										
										
											2019-03-31 22:12:19 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-11-20 18:20:34 +08:00
										 |  |  | 					const modules = chunkGraph.getOrderedChunkModulesIterableBySourceType( | 
					
						
							| 
									
										
										
										
											2019-10-04 18:24:52 +08:00
										 |  |  | 						chunk, | 
					
						
							| 
									
										
										
										
											2023-05-05 07:19:11 +08:00
										 |  |  | 						ASSET_MODULE_TYPE, | 
					
						
							| 
									
										
										
										
											2019-10-16 22:38:04 +08:00
										 |  |  | 						compareModulesByIdentifier | 
					
						
							| 
									
										
										
										
											2019-11-20 18:20:34 +08:00
										 |  |  | 					); | 
					
						
							|  |  |  | 					if (modules) { | 
					
						
							|  |  |  | 						for (const module of modules) { | 
					
						
							| 
									
										
										
										
											2021-07-22 15:32:55 +08:00
										 |  |  | 							try { | 
					
						
							|  |  |  | 								const codeGenResult = codeGenerationResults.get( | 
					
						
							|  |  |  | 									module, | 
					
						
							|  |  |  | 									chunk.runtime | 
					
						
							|  |  |  | 								); | 
					
						
							| 
									
										
										
										
											2024-08-09 23:42:37 +08:00
										 |  |  | 								const buildInfo = /** @type {BuildInfo} */ (module.buildInfo); | 
					
						
							|  |  |  | 								const data = | 
					
						
							|  |  |  | 									/** @type {NonNullable<CodeGenerationResult["data"]>} */ | 
					
						
							|  |  |  | 									(codeGenResult.data); | 
					
						
							| 
									
										
										
										
											2021-07-22 15:32:55 +08:00
										 |  |  | 								result.push({ | 
					
						
							| 
									
										
										
										
											2024-08-09 23:42:37 +08:00
										 |  |  | 									render: () => | 
					
						
							|  |  |  | 										/** @type {Source} */ (codeGenResult.sources.get(type)), | 
					
						
							|  |  |  | 									filename: buildInfo.filename || data.get("filename"), | 
					
						
							|  |  |  | 									info: buildInfo.assetInfo || data.get("assetInfo"), | 
					
						
							| 
									
										
										
										
											2021-07-22 15:32:55 +08:00
										 |  |  | 									auxiliary: true, | 
					
						
							|  |  |  | 									identifier: `assetModule${chunkGraph.getModuleId(module)}`, | 
					
						
							| 
									
										
										
										
											2024-08-09 23:42:37 +08:00
										 |  |  | 									hash: buildInfo.fullContentHash || data.get("fullContentHash") | 
					
						
							| 
									
										
										
										
											2021-07-22 15:32:55 +08:00
										 |  |  | 								}); | 
					
						
							| 
									
										
										
										
											2024-07-31 15:37:05 +08:00
										 |  |  | 							} catch (err) { | 
					
						
							|  |  |  | 								/** @type {Error} */ (err).message += | 
					
						
							| 
									
										
										
										
											2024-01-14 09:41:34 +08:00
										 |  |  | 									`\nduring rendering of asset ${module.identifier()}`; | 
					
						
							| 
									
										
										
										
											2024-07-31 15:37:05 +08:00
										 |  |  | 								throw err; | 
					
						
							| 
									
										
										
										
											2021-07-22 15:32:55 +08:00
										 |  |  | 							} | 
					
						
							| 
									
										
										
										
											2019-03-31 22:12:19 +08:00
										 |  |  | 						} | 
					
						
							|  |  |  | 					} | 
					
						
							| 
									
										
										
										
											2019-10-04 18:24:52 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 					return result; | 
					
						
							|  |  |  | 				}); | 
					
						
							| 
									
										
										
										
											2021-04-09 21:50:25 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-14 20:37:11 +08:00
										 |  |  | 				compilation.hooks.prepareModuleExecution.tap( | 
					
						
							| 
									
										
										
										
											2021-04-09 21:50:25 +08:00
										 |  |  | 					"AssetModulesPlugin", | 
					
						
							|  |  |  | 					(options, context) => { | 
					
						
							|  |  |  | 						const { codeGenerationResult } = options; | 
					
						
							| 
									
										
										
										
											2023-05-05 07:19:11 +08:00
										 |  |  | 						const source = codeGenerationResult.sources.get(ASSET_MODULE_TYPE); | 
					
						
							| 
									
										
										
										
											2021-04-09 21:50:25 +08:00
										 |  |  | 						if (source === undefined) return; | 
					
						
							| 
									
										
										
										
											2024-08-09 23:42:37 +08:00
										 |  |  | 						const data = | 
					
						
							|  |  |  | 							/** @type {NonNullable<CodeGenerationResult["data"]>} */ | 
					
						
							|  |  |  | 							(codeGenerationResult.data); | 
					
						
							|  |  |  | 						context.assets.set(data.get("filename"), { | 
					
						
							| 
									
										
										
										
											2021-04-09 21:50:25 +08:00
										 |  |  | 							source, | 
					
						
							| 
									
										
										
										
											2024-08-09 23:42:37 +08:00
										 |  |  | 							info: data.get("assetInfo") | 
					
						
							| 
									
										
										
										
											2021-04-10 02:45:59 +08:00
										 |  |  | 						}); | 
					
						
							| 
									
										
										
										
											2021-04-09 21:50:25 +08:00
										 |  |  | 					} | 
					
						
							|  |  |  | 				); | 
					
						
							| 
									
										
										
										
											2019-03-31 22:12:19 +08:00
										 |  |  | 			} | 
					
						
							|  |  |  | 		); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-16 19:16:27 +08:00
										 |  |  | module.exports = AssetModulesPlugin; |