From efbc2ffe6a1ee5ec38a4396305561d6515d0943e Mon Sep 17 00:00:00 2001 From: littleblack111 Date: Fri, 30 Aug 2024 17:21:18 +0800 Subject: node fixes, updates --- node_modules/webpack-sources/lib/PrefixSource.js | 114 +++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 node_modules/webpack-sources/lib/PrefixSource.js (limited to 'node_modules/webpack-sources/lib/PrefixSource.js') diff --git a/node_modules/webpack-sources/lib/PrefixSource.js b/node_modules/webpack-sources/lib/PrefixSource.js new file mode 100644 index 00000000..a54314cb --- /dev/null +++ b/node_modules/webpack-sources/lib/PrefixSource.js @@ -0,0 +1,114 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +"use strict"; + +const Source = require("./Source"); +const RawSource = require("./RawSource"); +const streamChunks = require("./helpers/streamChunks"); +const { getMap, getSourceAndMap } = require("./helpers/getFromStreamChunks"); + +const REPLACE_REGEX = /\n(?=.|\s)/g; + +class PrefixSource extends Source { + constructor(prefix, source) { + super(); + this._source = + typeof source === "string" || Buffer.isBuffer(source) + ? new RawSource(source, true) + : source; + this._prefix = prefix; + } + + getPrefix() { + return this._prefix; + } + + original() { + return this._source; + } + + source() { + const node = this._source.source(); + const prefix = this._prefix; + return prefix + node.replace(REPLACE_REGEX, "\n" + prefix); + } + + // TODO efficient buffer() implementation + + map(options) { + return getMap(this, options); + } + + sourceAndMap(options) { + return getSourceAndMap(this, options); + } + + streamChunks(options, onChunk, onSource, onName) { + const prefix = this._prefix; + const prefixOffset = prefix.length; + const linesOnly = !!(options && options.columns === false); + const { generatedLine, generatedColumn, source } = streamChunks( + this._source, + options, + ( + chunk, + generatedLine, + generatedColumn, + sourceIndex, + originalLine, + originalColumn, + nameIndex + ) => { + if (generatedColumn !== 0) { + // In the middle of the line, we just adject the column + generatedColumn += prefixOffset; + } else if (chunk !== undefined) { + // At the start of the line, when we have source content + // add the prefix as generated mapping + // (in lines only mode we just add it to the original mapping + // for performance reasons) + if (linesOnly || sourceIndex < 0) { + chunk = prefix + chunk; + } else if (prefixOffset > 0) { + onChunk(prefix, generatedLine, generatedColumn, -1, -1, -1, -1); + generatedColumn += prefixOffset; + } + } else if (!linesOnly) { + // Without source content, we only need to adject the column info + // expect in lines only mode where prefix is added to original mapping + generatedColumn += prefixOffset; + } + onChunk( + chunk, + generatedLine, + generatedColumn, + sourceIndex, + originalLine, + originalColumn, + nameIndex + ); + }, + onSource, + onName + ); + return { + generatedLine, + generatedColumn: + generatedColumn === 0 ? 0 : prefixOffset + generatedColumn, + source: + source !== undefined + ? prefix + source.replace(REPLACE_REGEX, "\n" + prefix) + : undefined + }; + } + + updateHash(hash) { + hash.update("PrefixSource"); + this._source.updateHash(hash); + hash.update(this._prefix); + } +} + +module.exports = PrefixSource; -- cgit v1.2.3