123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- (function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@jridgewell/set-array'), require('@jridgewell/sourcemap-codec')) :
- typeof define === 'function' && define.amd ? define(['exports', '@jridgewell/set-array', '@jridgewell/sourcemap-codec'], factory) :
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.genMapping = {}, global.setArray, global.sourcemapCodec));
- })(this, (function (exports, setArray, sourcemapCodec) { 'use strict';
- /**
- * A low-level API to associate a generated position with an original source position. Line and
- * column here are 0-based, unlike `addMapping`.
- */
- exports.addSegment = void 0;
- /**
- * A high-level API to associate a generated position with an original source position. Line is
- * 1-based, but column is 0-based, due to legacy behavior in `source-map` library.
- */
- exports.addMapping = void 0;
- /**
- * Adds/removes the content of the source file to the source map.
- */
- exports.setSourceContent = void 0;
- /**
- * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects
- * a sourcemap, or to JSON.stringify.
- */
- exports.decodedMap = void 0;
- /**
- * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects
- * a sourcemap, or to JSON.stringify.
- */
- exports.encodedMap = void 0;
- /**
- * Returns an array of high-level mapping objects for every recorded segment, which could then be
- * passed to the `source-map` library.
- */
- exports.allMappings = void 0;
- /**
- * Provides the state to generate a sourcemap.
- */
- class GenMapping {
- constructor({ file, sourceRoot } = {}) {
- this._names = new setArray.SetArray();
- this._sources = new setArray.SetArray();
- this._sourcesContent = [];
- this._mappings = [];
- this.file = file;
- this.sourceRoot = sourceRoot;
- }
- }
- (() => {
- exports.addSegment = (map, genLine, genColumn, source, sourceLine, sourceColumn, name) => {
- const { _mappings: mappings, _sources: sources, _sourcesContent: sourcesContent, _names: names, } = map;
- const line = getLine(mappings, genLine);
- if (source == null) {
- const seg = [genColumn];
- const index = getColumnIndex(line, genColumn, seg);
- return insert(line, index, seg);
- }
- const sourcesIndex = setArray.put(sources, source);
- const seg = name
- ? [genColumn, sourcesIndex, sourceLine, sourceColumn, setArray.put(names, name)]
- : [genColumn, sourcesIndex, sourceLine, sourceColumn];
- const index = getColumnIndex(line, genColumn, seg);
- if (sourcesIndex === sourcesContent.length)
- sourcesContent[sourcesIndex] = null;
- insert(line, index, seg);
- };
- exports.addMapping = (map, mapping) => {
- const { generated, source, original, name } = mapping;
- return exports.addSegment(map, generated.line - 1, generated.column, source, original == null ? undefined : original.line - 1, original === null || original === void 0 ? void 0 : original.column, name);
- };
- exports.setSourceContent = (map, source, content) => {
- const { _sources: sources, _sourcesContent: sourcesContent } = map;
- sourcesContent[setArray.put(sources, source)] = content;
- };
- exports.decodedMap = (map) => {
- const { file, sourceRoot, _mappings: mappings, _sources: sources, _sourcesContent: sourcesContent, _names: names, } = map;
- return {
- version: 3,
- file,
- names: names.array,
- sourceRoot: sourceRoot || undefined,
- sources: sources.array,
- sourcesContent,
- mappings,
- };
- };
- exports.encodedMap = (map) => {
- const decoded = exports.decodedMap(map);
- return Object.assign(Object.assign({}, decoded), { mappings: sourcemapCodec.encode(decoded.mappings) });
- };
- exports.allMappings = (map) => {
- const out = [];
- const { _mappings: mappings, _sources: sources, _names: names } = map;
- for (let i = 0; i < mappings.length; i++) {
- const line = mappings[i];
- for (let j = 0; j < line.length; j++) {
- const seg = line[j];
- const generated = { line: i + 1, column: seg[0] };
- let source = undefined;
- let original = undefined;
- let name = undefined;
- if (seg.length !== 1) {
- source = sources.array[seg[1]];
- original = { line: seg[2] + 1, column: seg[3] };
- if (seg.length === 5)
- name = names.array[seg[4]];
- }
- out.push({ generated, source, original, name });
- }
- }
- return out;
- };
- })();
- function getLine(mappings, index) {
- for (let i = mappings.length; i <= index; i++) {
- mappings[i] = [];
- }
- return mappings[index];
- }
- function getColumnIndex(line, column, seg) {
- let index = line.length;
- for (let i = index - 1; i >= 0; i--, index--) {
- const current = line[i];
- const col = current[0];
- if (col > column)
- continue;
- if (col < column)
- break;
- const cmp = compare(current, seg);
- if (cmp === 0)
- return index;
- if (cmp < 0)
- break;
- }
- return index;
- }
- function compare(a, b) {
- let cmp = compareNum(a.length, b.length);
- if (cmp !== 0)
- return cmp;
- // We've already checked genColumn
- if (a.length === 1)
- return 0;
- cmp = compareNum(a[1], b[1]);
- if (cmp !== 0)
- return cmp;
- cmp = compareNum(a[2], b[2]);
- if (cmp !== 0)
- return cmp;
- cmp = compareNum(a[3], b[3]);
- if (cmp !== 0)
- return cmp;
- if (a.length === 4)
- return 0;
- return compareNum(a[4], b[4]);
- }
- function compareNum(a, b) {
- return a - b;
- }
- function insert(array, index, value) {
- if (index === -1)
- return;
- for (let i = array.length; i > index; i--) {
- array[i] = array[i - 1];
- }
- array[index] = value;
- }
- exports.GenMapping = GenMapping;
- Object.defineProperty(exports, '__esModule', { value: true });
- }));
- //# sourceMappingURL=gen-mapping.umd.js.map
|