| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 | /*	MIT License http://www.opensource.org/licenses/mit-license.php	Author Tobias Koppers @sokra*/"use strict";const { JSON_MODULE_TYPE } = require("../ModuleTypeConstants");const createSchemaValidation = require("../util/create-schema-validation");const JsonGenerator = require("./JsonGenerator");const JsonParser = require("./JsonParser");/** @typedef {import("../Compiler")} Compiler *//** @typedef {Record<string, any>} RawJsonData */const validate = createSchemaValidation(	require("../../schemas/plugins/JsonModulesPluginParser.check.js"),	() => require("../../schemas/plugins/JsonModulesPluginParser.json"),	{		name: "Json Modules Plugin",		baseDataPath: "parser"	});const PLUGIN_NAME = "JsonModulesPlugin";/** * The JsonModulesPlugin is the entrypoint plugin for the json modules feature. * It adds the json module type to the compiler and registers the json parser and generator. */class JsonModulesPlugin {	/**	 * Apply the plugin	 * @param {Compiler} compiler the compiler instance	 * @returns {void}	 *	 */	apply(compiler) {		compiler.hooks.compilation.tap(			PLUGIN_NAME,			(compilation, { normalModuleFactory }) => {				normalModuleFactory.hooks.createParser					.for(JSON_MODULE_TYPE)					.tap(PLUGIN_NAME, parserOptions => {						validate(parserOptions);						return new JsonParser(parserOptions);					});				normalModuleFactory.hooks.createGenerator					.for(JSON_MODULE_TYPE)					.tap(PLUGIN_NAME, () => {						return new JsonGenerator();					});			}		);	}}module.exports = JsonModulesPlugin;
 |