| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 | 
							- /*
 
- 	MIT License http://www.opensource.org/licenses/mit-license.php
 
- 	Author Tobias Koppers @sokra
 
- */
 
- "use strict";
 
- const { ConcatSource, RawSource } = require("webpack-sources");
 
- const stringifySafe = data => {
 
- 	const stringified = JSON.stringify(data);
 
- 	if (!stringified) {
 
- 		return undefined; // Invalid JSON
 
- 	}
 
- 	return stringified.replace(/\u2028|\u2029/g, str =>
 
- 		str === "\u2029" ? "\\u2029" : "\\u2028"
 
- 	); // invalid in JavaScript but valid JSON
 
- };
 
- class JsonGenerator {
 
- 	generate(module, dependencyTemplates, runtimeTemplate) {
 
- 		const source = new ConcatSource();
 
- 		const data = module.buildInfo.jsonData;
 
- 		if (data === undefined) {
 
- 			return new RawSource(
 
- 				runtimeTemplate.missingModuleStatement({
 
- 					request: module.rawRequest
 
- 				})
 
- 			);
 
- 		}
 
- 		let finalJson;
 
- 		if (
 
- 			Array.isArray(module.buildMeta.providedExports) &&
 
- 			!module.isUsed("default")
 
- 		) {
 
- 			// Only some exports are used: We can optimize here, by only generating a part of the JSON
 
- 			const reducedJson = {};
 
- 			for (const exportName of module.buildMeta.providedExports) {
 
- 				if (exportName === "default") continue;
 
- 				const used = module.isUsed(exportName);
 
- 				if (used) {
 
- 					reducedJson[used] = data[exportName];
 
- 				}
 
- 			}
 
- 			finalJson = reducedJson;
 
- 		} else {
 
- 			finalJson = data;
 
- 		}
 
- 		// Use JSON because JSON.parse() is much faster than JavaScript evaluation
 
- 		const jsonSource = JSON.stringify(stringifySafe(finalJson));
 
- 		const jsonExpr = `JSON.parse(${jsonSource})`;
 
- 		source.add(`${module.moduleArgument}.exports = ${jsonExpr};`);
 
- 		return source;
 
- 	}
 
- }
 
- module.exports = JsonGenerator;
 
 
  |