From be4d8a9462de720e6b22cf291860cf4a87e066ae Mon Sep 17 00:00:00 2001 From: littleblack111 Date: Sun, 15 Oct 2023 09:23:31 +0800 Subject: updates --- node_modules/source-map/lib/source-map-consumer.js | 191 +++++++-------------- 1 file changed, 64 insertions(+), 127 deletions(-) (limited to 'node_modules/source-map/lib/source-map-consumer.js') diff --git a/node_modules/source-map/lib/source-map-consumer.js b/node_modules/source-map/lib/source-map-consumer.js index 7b99d1da..6abcc280 100644 --- a/node_modules/source-map/lib/source-map-consumer.js +++ b/node_modules/source-map/lib/source-map-consumer.js @@ -11,19 +11,19 @@ var ArraySet = require('./array-set').ArraySet; var base64VLQ = require('./base64-vlq'); var quickSort = require('./quick-sort').quickSort; -function SourceMapConsumer(aSourceMap, aSourceMapURL) { +function SourceMapConsumer(aSourceMap) { var sourceMap = aSourceMap; if (typeof aSourceMap === 'string') { - sourceMap = util.parseSourceMapInput(aSourceMap); + sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); } return sourceMap.sections != null - ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL) - : new BasicSourceMapConsumer(sourceMap, aSourceMapURL); + ? new IndexedSourceMapConsumer(sourceMap) + : new BasicSourceMapConsumer(sourceMap); } -SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) { - return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL); +SourceMapConsumer.fromSourceMap = function(aSourceMap) { + return BasicSourceMapConsumer.fromSourceMap(aSourceMap); } /** @@ -63,8 +63,6 @@ SourceMapConsumer.prototype._version = 3; SourceMapConsumer.prototype.__generatedMappings = null; Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { - configurable: true, - enumerable: true, get: function () { if (!this.__generatedMappings) { this._parseMappings(this._mappings, this.sourceRoot); @@ -76,8 +74,6 @@ Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { SourceMapConsumer.prototype.__originalMappings = null; Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { - configurable: true, - enumerable: true, get: function () { if (!this.__originalMappings) { this._parseMappings(this._mappings, this.sourceRoot); @@ -145,7 +141,9 @@ SourceMapConsumer.prototype.eachMapping = var sourceRoot = this.sourceRoot; mappings.map(function (mapping) { var source = mapping.source === null ? null : this._sources.at(mapping.source); - source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL); + if (source != null && sourceRoot != null) { + source = util.join(sourceRoot, source); + } return { source: source, generatedLine: mapping.generatedLine, @@ -168,16 +166,13 @@ SourceMapConsumer.prototype.eachMapping = * The only argument is an object with the following properties: * * - source: The filename of the original source. - * - line: The line number in the original source. The line number is 1-based. + * - line: The line number in the original source. * - column: Optional. the column number in the original source. - * The column number is 0-based. * * and an array of objects is returned, each with the following properties: * - * - line: The line number in the generated source, or null. The - * line number is 1-based. + * - line: The line number in the generated source, or null. * - column: The column number in the generated source, or null. - * The column number is 0-based. */ SourceMapConsumer.prototype.allGeneratedPositionsFor = function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { @@ -193,10 +188,13 @@ SourceMapConsumer.prototype.allGeneratedPositionsFor = originalColumn: util.getArg(aArgs, 'column', 0) }; - needle.source = this._findSourceIndex(needle.source); - if (needle.source < 0) { + if (this.sourceRoot != null) { + needle.source = util.relative(this.sourceRoot, needle.source); + } + if (!this._sources.has(needle.source)) { return []; } + needle.source = this._sources.indexOf(needle.source); var mappings = []; @@ -256,7 +254,7 @@ exports.SourceMapConsumer = SourceMapConsumer; * query for information about the original file positions by giving it a file * position in the generated source. * - * The first parameter is the raw source map (either as a JSON string, or + * The only parameter is the raw source map (either as a JSON string, or * already parsed to an object). According to the spec, source maps have the * following attributes: * @@ -279,16 +277,12 @@ exports.SourceMapConsumer = SourceMapConsumer; * mappings: "AA,AB;;ABCDE;" * } * - * The second parameter, if given, is a string whose value is the URL - * at which the source map was found. This URL is used to compute the - * sources array. - * * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# */ -function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) { +function BasicSourceMapConsumer(aSourceMap) { var sourceMap = aSourceMap; if (typeof aSourceMap === 'string') { - sourceMap = util.parseSourceMapInput(aSourceMap); + sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); } var version = util.getArg(sourceMap, 'version'); @@ -307,10 +301,6 @@ function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) { throw new Error('Unsupported version: ' + version); } - if (sourceRoot) { - sourceRoot = util.normalize(sourceRoot); - } - sources = sources .map(String) // Some source maps produce relative source paths like "./foo.js" instead of @@ -334,57 +324,24 @@ function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) { this._names = ArraySet.fromArray(names.map(String), true); this._sources = ArraySet.fromArray(sources, true); - this._absoluteSources = this._sources.toArray().map(function (s) { - return util.computeSourceURL(sourceRoot, s, aSourceMapURL); - }); - this.sourceRoot = sourceRoot; this.sourcesContent = sourcesContent; this._mappings = mappings; - this._sourceMapURL = aSourceMapURL; this.file = file; } BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; -/** - * Utility function to find the index of a source. Returns -1 if not - * found. - */ -BasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) { - var relativeSource = aSource; - if (this.sourceRoot != null) { - relativeSource = util.relative(this.sourceRoot, relativeSource); - } - - if (this._sources.has(relativeSource)) { - return this._sources.indexOf(relativeSource); - } - - // Maybe aSource is an absolute URL as returned by |sources|. In - // this case we can't simply undo the transform. - var i; - for (i = 0; i < this._absoluteSources.length; ++i) { - if (this._absoluteSources[i] == aSource) { - return i; - } - } - - return -1; -}; - /** * Create a BasicSourceMapConsumer from a SourceMapGenerator. * * @param SourceMapGenerator aSourceMap * The source map that will be consumed. - * @param String aSourceMapURL - * The URL at which the source map can be found (optional) * @returns BasicSourceMapConsumer */ BasicSourceMapConsumer.fromSourceMap = - function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) { + function SourceMapConsumer_fromSourceMap(aSourceMap) { var smc = Object.create(BasicSourceMapConsumer.prototype); var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); @@ -393,10 +350,6 @@ BasicSourceMapConsumer.fromSourceMap = smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), smc.sourceRoot); smc.file = aSourceMap._file; - smc._sourceMapURL = aSourceMapURL; - smc._absoluteSources = smc._sources.toArray().map(function (s) { - return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL); - }); // Because we are modifying the entries (by converting string sources and // names to indices into the sources and names ArraySets), we have to make @@ -443,7 +396,9 @@ BasicSourceMapConsumer.prototype._version = 3; */ Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', { get: function () { - return this._absoluteSources.slice(); + return this._sources.toArray().map(function (s) { + return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s; + }, this); } }); @@ -624,10 +579,8 @@ BasicSourceMapConsumer.prototype.computeColumnSpans = * source's line and column positions provided. The only argument is an object * with the following properties: * - * - line: The line number in the generated source. The line number - * is 1-based. - * - column: The column number in the generated source. The column - * number is 0-based. + * - line: The line number in the generated source. + * - column: The column number in the generated source. * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the * closest element that is smaller than or greater than the one we are @@ -637,10 +590,8 @@ BasicSourceMapConsumer.prototype.computeColumnSpans = * and an object is returned with the following properties: * * - source: The original source file, or null. - * - line: The line number in the original source, or null. The - * line number is 1-based. - * - column: The column number in the original source, or null. The - * column number is 0-based. + * - line: The line number in the original source, or null. + * - column: The column number in the original source, or null. * - name: The original identifier, or null. */ BasicSourceMapConsumer.prototype.originalPositionFor = @@ -666,7 +617,9 @@ BasicSourceMapConsumer.prototype.originalPositionFor = var source = util.getArg(mapping, 'source', null); if (source !== null) { source = this._sources.at(source); - source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL); + if (this.sourceRoot != null) { + source = util.join(this.sourceRoot, source); + } } var name = util.getArg(mapping, 'name', null); if (name !== null) { @@ -713,14 +666,12 @@ BasicSourceMapConsumer.prototype.sourceContentFor = return null; } - var index = this._findSourceIndex(aSource); - if (index >= 0) { - return this.sourcesContent[index]; + if (this.sourceRoot != null) { + aSource = util.relative(this.sourceRoot, aSource); } - var relativeSource = aSource; - if (this.sourceRoot != null) { - relativeSource = util.relative(this.sourceRoot, relativeSource); + if (this._sources.has(aSource)) { + return this.sourcesContent[this._sources.indexOf(aSource)]; } var url; @@ -730,15 +681,15 @@ BasicSourceMapConsumer.prototype.sourceContentFor = // many users. We can help them out when they expect file:// URIs to // behave like it would if they were running a local HTTP server. See // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. - var fileUriAbsPath = relativeSource.replace(/^file:\/\//, ""); + var fileUriAbsPath = aSource.replace(/^file:\/\//, ""); if (url.scheme == "file" && this._sources.has(fileUriAbsPath)) { return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] } if ((!url.path || url.path == "/") - && this._sources.has("/" + relativeSource)) { - return this.sourcesContent[this._sources.indexOf("/" + relativeSource)]; + && this._sources.has("/" + aSource)) { + return this.sourcesContent[this._sources.indexOf("/" + aSource)]; } } @@ -750,7 +701,7 @@ BasicSourceMapConsumer.prototype.sourceContentFor = return null; } else { - throw new Error('"' + relativeSource + '" is not in the SourceMap.'); + throw new Error('"' + aSource + '" is not in the SourceMap.'); } }; @@ -760,10 +711,8 @@ BasicSourceMapConsumer.prototype.sourceContentFor = * the following properties: * * - source: The filename of the original source. - * - line: The line number in the original source. The line number - * is 1-based. - * - column: The column number in the original source. The column - * number is 0-based. + * - line: The line number in the original source. + * - column: The column number in the original source. * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the * closest element that is smaller than or greater than the one we are @@ -772,22 +721,23 @@ BasicSourceMapConsumer.prototype.sourceContentFor = * * and an object is returned with the following properties: * - * - line: The line number in the generated source, or null. The - * line number is 1-based. + * - line: The line number in the generated source, or null. * - column: The column number in the generated source, or null. - * The column number is 0-based. */ BasicSourceMapConsumer.prototype.generatedPositionFor = function SourceMapConsumer_generatedPositionFor(aArgs) { var source = util.getArg(aArgs, 'source'); - source = this._findSourceIndex(source); - if (source < 0) { + if (this.sourceRoot != null) { + source = util.relative(this.sourceRoot, source); + } + if (!this._sources.has(source)) { return { line: null, column: null, lastColumn: null }; } + source = this._sources.indexOf(source); var needle = { source: source, @@ -831,7 +781,7 @@ exports.BasicSourceMapConsumer = BasicSourceMapConsumer; * that it takes "indexed" source maps (i.e. ones with a "sections" field) as * input. * - * The first parameter is a raw source map (either as a JSON string, or already + * The only parameter is a raw source map (either as a JSON string, or already * parsed to an object). According to the spec for indexed source maps, they * have the following attributes: * @@ -868,16 +818,12 @@ exports.BasicSourceMapConsumer = BasicSourceMapConsumer; * }], * } * - * The second parameter, if given, is a string whose value is the URL - * at which the source map was found. This URL is used to compute the - * sources array. - * * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt */ -function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) { +function IndexedSourceMapConsumer(aSourceMap) { var sourceMap = aSourceMap; if (typeof aSourceMap === 'string') { - sourceMap = util.parseSourceMapInput(aSourceMap); + sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); } var version = util.getArg(sourceMap, 'version'); @@ -917,7 +863,7 @@ function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) { generatedLine: offsetLine + 1, generatedColumn: offsetColumn + 1 }, - consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL) + consumer: new SourceMapConsumer(util.getArg(s, 'map')) } }); } @@ -950,18 +896,14 @@ Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', { * source's line and column positions provided. The only argument is an object * with the following properties: * - * - line: The line number in the generated source. The line number - * is 1-based. - * - column: The column number in the generated source. The column - * number is 0-based. + * - line: The line number in the generated source. + * - column: The column number in the generated source. * * and an object is returned with the following properties: * * - source: The original source file, or null. - * - line: The line number in the original source, or null. The - * line number is 1-based. - * - column: The column number in the original source, or null. The - * column number is 0-based. + * - line: The line number in the original source, or null. + * - column: The column number in the original source, or null. * - name: The original identifier, or null. */ IndexedSourceMapConsumer.prototype.originalPositionFor = @@ -1045,17 +987,13 @@ IndexedSourceMapConsumer.prototype.sourceContentFor = * the following properties: * * - source: The filename of the original source. - * - line: The line number in the original source. The line number - * is 1-based. - * - column: The column number in the original source. The column - * number is 0-based. + * - line: The line number in the original source. + * - column: The column number in the original source. * * and an object is returned with the following properties: * - * - line: The line number in the generated source, or null. The - * line number is 1-based. + * - line: The line number in the generated source, or null. * - column: The column number in the generated source, or null. - * The column number is 0-based. */ IndexedSourceMapConsumer.prototype.generatedPositionFor = function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { @@ -1064,7 +1002,7 @@ IndexedSourceMapConsumer.prototype.generatedPositionFor = // Only consider this section if the requested source is in the list of // sources of the consumer. - if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) { + if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) { continue; } var generatedPosition = section.consumer.generatedPositionFor(aArgs); @@ -1103,16 +1041,15 @@ IndexedSourceMapConsumer.prototype._parseMappings = var mapping = sectionMappings[j]; var source = section.consumer._sources.at(mapping.source); - source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL); + if (section.consumer.sourceRoot !== null) { + source = util.join(section.consumer.sourceRoot, source); + } this._sources.add(source); source = this._sources.indexOf(source); - var name = null; - if (mapping.name) { - name = section.consumer._names.at(mapping.name); - this._names.add(name); - name = this._names.indexOf(name); - } + var name = section.consumer._names.at(mapping.name); + this._names.add(name); + name = this._names.indexOf(name); // The mappings coming from the consumer for the section have // generated positions relative to the start of the section, so we -- cgit v1.2.3