| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 | 
							- /*
 
- 	MIT License http://www.opensource.org/licenses/mit-license.php
 
- 	Author Tobias Koppers @sokra
 
- */
 
- "use strict";
 
- const Source = require("./Source");
 
- const streamChunksOfRawSource = require("./helpers/streamChunksOfRawSource");
 
- const {
 
- 	internString,
 
- 	isDualStringBufferCachingEnabled,
 
- } = require("./helpers/stringBufferUtils");
 
- /** @typedef {import("./Source").HashLike} HashLike */
 
- /** @typedef {import("./Source").MapOptions} MapOptions */
 
- /** @typedef {import("./Source").RawSourceMap} RawSourceMap */
 
- /** @typedef {import("./Source").SourceValue} SourceValue */
 
- /** @typedef {import("./helpers/getGeneratedSourceInfo").GeneratedSourceInfo} GeneratedSourceInfo */
 
- /** @typedef {import("./helpers/streamChunks").OnChunk} OnChunk */
 
- /** @typedef {import("./helpers/streamChunks").OnName} OnName */
 
- /** @typedef {import("./helpers/streamChunks").OnSource} OnSource */
 
- /** @typedef {import("./helpers/streamChunks").Options} Options */
 
- class RawSource extends Source {
 
- 	/**
 
- 	 * @param {string | Buffer} value value
 
- 	 * @param {boolean=} convertToString convert to string
 
- 	 */
 
- 	constructor(value, convertToString = false) {
 
- 		super();
 
- 		const isBuffer = Buffer.isBuffer(value);
 
- 		if (!isBuffer && typeof value !== "string") {
 
- 			throw new TypeError("argument 'value' must be either string or Buffer");
 
- 		}
 
- 		this._valueIsBuffer = !convertToString && isBuffer;
 
- 		const internedString =
 
- 			typeof value === "string" ? internString(value) : undefined;
 
- 		/**
 
- 		 * @private
 
- 		 * @type {undefined | string | Buffer}
 
- 		 */
 
- 		this._value =
 
- 			convertToString && isBuffer
 
- 				? undefined
 
- 				: typeof value === "string"
 
- 					? internedString
 
- 					: value;
 
- 		/**
 
- 		 * @private
 
- 		 * @type {undefined | Buffer}
 
- 		 */
 
- 		this._valueAsBuffer = isBuffer ? value : undefined;
 
- 		/**
 
- 		 * @private
 
- 		 * @type {undefined | string}
 
- 		 */
 
- 		this._valueAsString = isBuffer ? undefined : internedString;
 
- 	}
 
- 	isBuffer() {
 
- 		return this._valueIsBuffer;
 
- 	}
 
- 	/**
 
- 	 * @returns {SourceValue} source
 
- 	 */
 
- 	source() {
 
- 		if (this._value === undefined) {
 
- 			const value =
 
- 				/** @type {Buffer} */
 
- 				(this._valueAsBuffer).toString("utf8");
 
- 			if (isDualStringBufferCachingEnabled()) {
 
- 				this._value = internString(value);
 
- 			}
 
- 			return value;
 
- 		}
 
- 		return this._value;
 
- 	}
 
- 	buffer() {
 
- 		if (this._valueAsBuffer === undefined) {
 
- 			const value = Buffer.from(/** @type {string} */ (this._value), "utf8");
 
- 			if (isDualStringBufferCachingEnabled()) {
 
- 				this._valueAsBuffer = value;
 
- 			}
 
- 			return value;
 
- 		}
 
- 		return this._valueAsBuffer;
 
- 	}
 
- 	/**
 
- 	 * @param {MapOptions=} options map options
 
- 	 * @returns {RawSourceMap | null} map
 
- 	 */
 
- 	// eslint-disable-next-line no-unused-vars
 
- 	map(options) {
 
- 		return null;
 
- 	}
 
- 	/**
 
- 	 * @param {Options} options options
 
- 	 * @param {OnChunk} onChunk called for each chunk of code
 
- 	 * @param {OnSource} onSource called for each source
 
- 	 * @param {OnName} onName called for each name
 
- 	 * @returns {GeneratedSourceInfo} generated source info
 
- 	 */
 
- 	streamChunks(options, onChunk, onSource, onName) {
 
- 		let strValue = this._valueAsString;
 
- 		if (strValue === undefined) {
 
- 			const value = this.source();
 
- 			strValue = typeof value === "string" ? value : value.toString("utf8");
 
- 			if (isDualStringBufferCachingEnabled()) {
 
- 				this._valueAsString = internString(strValue);
 
- 			}
 
- 		}
 
- 		return streamChunksOfRawSource(
 
- 			strValue,
 
- 			onChunk,
 
- 			onSource,
 
- 			onName,
 
- 			Boolean(options && options.finalSource),
 
- 		);
 
- 	}
 
- 	/**
 
- 	 * @param {HashLike} hash hash
 
- 	 * @returns {void}
 
- 	 */
 
- 	updateHash(hash) {
 
- 		hash.update("RawSource");
 
- 		hash.update(this.buffer());
 
- 	}
 
- }
 
- module.exports = RawSource;
 
 
  |