| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 | /*	MIT License http://www.opensource.org/licenses/mit-license.php	Author Tobias Koppers @sokra*/"use strict";/** @typedef {import("./CachedSource").CachedData} CachedData *//** @typedef {import("./CompatSource").SourceLike} SourceLike *//** @typedef {import("./ConcatSource").Child} ConcatSourceChild *//** @typedef {import("./ReplaceSource").Replacement} Replacement *//** @typedef {import("./Source").HashLike} HashLike *//** @typedef {import("./Source").MapOptions} MapOptions *//** @typedef {import("./Source").RawSourceMap} RawSourceMap *//** @typedef {import("./Source").SourceAndMap} SourceAndMap *//** @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} StreamChunksOptions *//** * @template T * @param {() => T} fn memorized function * @returns {() => T} new function */const memoize = (fn) => {	let cache = false;	/** @type {T | undefined} */	let result;	return () => {		if (cache) {			return /** @type {T} */ (result);		}		result = fn();		cache = true;		// Allow to clean up memory for fn		// and all dependent resources		/** @type {(() => T) | undefined} */		(fn) = undefined;		return /** @type {T} */ (result);	};};/** * @template A * @template B * @param {A} obj input a * @param {B} exports input b * @returns {A & B} merged */const mergeExports = (obj, exports) => {	const descriptors = Object.getOwnPropertyDescriptors(exports);	for (const name of Object.keys(descriptors)) {		const descriptor = descriptors[name];		if (descriptor.get) {			const fn = descriptor.get;			Object.defineProperty(obj, name, {				configurable: false,				enumerable: true,				get: memoize(fn),			});		} else if (typeof descriptor.value === "object") {			Object.defineProperty(obj, name, {				configurable: false,				enumerable: true,				writable: false,				value: mergeExports({}, descriptor.value),			});		} else {			throw new Error(				"Exposed values must be either a getter or an nested object",			);		}	}	return /** @type {A & B} */ (Object.freeze(obj));};module.exports = mergeExports(	{},	{		get Source() {			return require("./Source");		},		get RawSource() {			return require("./RawSource");		},		get OriginalSource() {			return require("./OriginalSource");		},		get SourceMapSource() {			return require("./SourceMapSource");		},		get CachedSource() {			return require("./CachedSource");		},		get ConcatSource() {			return require("./ConcatSource");		},		get ReplaceSource() {			return require("./ReplaceSource");		},		get PrefixSource() {			return require("./PrefixSource");		},		get SizeOnlySource() {			return require("./SizeOnlySource");		},		get CompatSource() {			return require("./CompatSource");		},		util: {			get stringBufferUtils() {				return require("./helpers/stringBufferUtils");			},		},	},);
 |