From d5f14083061f2ce6a42313188443a42e30796320 Mon Sep 17 00:00:00 2001 From: littleblack111 Date: Tue, 31 Oct 2023 15:37:35 +0800 Subject: added make browserlist(autoprefixer) work fixed --- node_modules/webpack/lib/json/JsonParser.js | 69 +++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 node_modules/webpack/lib/json/JsonParser.js (limited to 'node_modules/webpack/lib/json/JsonParser.js') diff --git a/node_modules/webpack/lib/json/JsonParser.js b/node_modules/webpack/lib/json/JsonParser.js new file mode 100644 index 00000000..a68662e7 --- /dev/null +++ b/node_modules/webpack/lib/json/JsonParser.js @@ -0,0 +1,69 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +const Parser = require("../Parser"); +const JsonExportsDependency = require("../dependencies/JsonExportsDependency"); +const memoize = require("../util/memoize"); +const JsonData = require("./JsonData"); + +/** @typedef {import("../../declarations/plugins/JsonModulesPluginParser").JsonModulesPluginParserOptions} JsonModulesPluginParserOptions */ +/** @typedef {import("../Module").BuildInfo} BuildInfo */ +/** @typedef {import("../Module").BuildMeta} BuildMeta */ +/** @typedef {import("../Parser").ParserState} ParserState */ +/** @typedef {import("../Parser").PreparsedAst} PreparsedAst */ +/** @typedef {import("./JsonModulesPlugin").RawJsonData} RawJsonData */ + +const getParseJson = memoize(() => require("json-parse-even-better-errors")); + +class JsonParser extends Parser { + /** + * @param {JsonModulesPluginParserOptions} options parser options + */ + constructor(options) { + super(); + this.options = options || {}; + } + + /** + * @param {string | Buffer | PreparsedAst} source the source to parse + * @param {ParserState} state the parser state + * @returns {ParserState} the parser state + */ + parse(source, state) { + if (Buffer.isBuffer(source)) { + source = source.toString("utf-8"); + } + + /** @type {NonNullable} */ + const parseFn = + typeof this.options.parse === "function" + ? this.options.parse + : getParseJson(); + /** @type {Buffer | RawJsonData | undefined} */ + let data; + try { + data = + typeof source === "object" + ? source + : parseFn(source[0] === "\ufeff" ? source.slice(1) : source); + } catch (e) { + throw new Error(`Cannot parse JSON: ${/** @type {Error} */ (e).message}`); + } + const jsonData = new JsonData(/** @type {Buffer | RawJsonData} */ (data)); + const buildInfo = /** @type {BuildInfo} */ (state.module.buildInfo); + buildInfo.jsonData = jsonData; + buildInfo.strict = true; + const buildMeta = /** @type {BuildMeta} */ (state.module.buildMeta); + buildMeta.exportsType = "default"; + buildMeta.defaultObject = + typeof data === "object" ? "redirect-warn" : false; + state.module.addDependency(new JsonExportsDependency(jsonData)); + return state; + } +} + +module.exports = JsonParser; -- cgit v1.2.3