| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 | /*	MIT License http://www.opensource.org/licenses/mit-license.php	Author Yuta Hiroto @hiroppy*/"use strict";const Parser = require("../Parser");/** @typedef {import("../../declarations/WebpackOptions").AssetParserOptions} AssetParserOptions *//** @typedef {import("../Parser").ParserState} ParserState *//** @typedef {import("../Parser").PreparsedAst} PreparsedAst */class AssetParser extends Parser {	/**	 * @param {AssetParserOptions["dataUrlCondition"] | boolean} dataUrlCondition condition for inlining as DataUrl	 */	constructor(dataUrlCondition) {		super();		this.dataUrlCondition = dataUrlCondition;	}	/**	 * @param {string | Buffer | PreparsedAst} source the source to parse	 * @param {ParserState} state the parser state	 * @returns {ParserState} the parser state	 */	parse(source, state) {		if (typeof source === "object" && !Buffer.isBuffer(source)) {			throw new Error("AssetParser doesn't accept preparsed AST");		}		state.module.buildInfo.strict = true;		state.module.buildMeta.exportsType = "default";		state.module.buildMeta.defaultObject = false;		if (typeof this.dataUrlCondition === "function") {			state.module.buildInfo.dataUrl = this.dataUrlCondition(source, {				filename: state.module.matchResource || state.module.resource,				module: state.module			});		} else if (typeof this.dataUrlCondition === "boolean") {			state.module.buildInfo.dataUrl = this.dataUrlCondition;		} else if (			this.dataUrlCondition &&			typeof this.dataUrlCondition === "object"		) {			state.module.buildInfo.dataUrl =				Buffer.byteLength(source) <= this.dataUrlCondition.maxSize;		} else {			throw new Error("Unexpected dataUrlCondition type");		}		return state;	}}module.exports = AssetParser;
 |