293 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			293 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
// src/set-array.ts
 | 
						|
var SetArray = class {
 | 
						|
  constructor() {
 | 
						|
    this._indexes = { __proto__: null };
 | 
						|
    this.array = [];
 | 
						|
  }
 | 
						|
};
 | 
						|
function cast(set) {
 | 
						|
  return set;
 | 
						|
}
 | 
						|
function get(setarr, key) {
 | 
						|
  return cast(setarr)._indexes[key];
 | 
						|
}
 | 
						|
function put(setarr, key) {
 | 
						|
  const index = get(setarr, key);
 | 
						|
  if (index !== void 0) return index;
 | 
						|
  const { array, _indexes: indexes } = cast(setarr);
 | 
						|
  const length = array.push(key);
 | 
						|
  return indexes[key] = length - 1;
 | 
						|
}
 | 
						|
function remove(setarr, key) {
 | 
						|
  const index = get(setarr, key);
 | 
						|
  if (index === void 0) return;
 | 
						|
  const { array, _indexes: indexes } = cast(setarr);
 | 
						|
  for (let i = index + 1; i < array.length; i++) {
 | 
						|
    const k = array[i];
 | 
						|
    array[i - 1] = k;
 | 
						|
    indexes[k]--;
 | 
						|
  }
 | 
						|
  indexes[key] = void 0;
 | 
						|
  array.pop();
 | 
						|
}
 | 
						|
 | 
						|
// src/gen-mapping.ts
 | 
						|
import {
 | 
						|
  encode
 | 
						|
} from "@jridgewell/sourcemap-codec";
 | 
						|
import { TraceMap, decodedMappings } from "@jridgewell/trace-mapping";
 | 
						|
 | 
						|
// src/sourcemap-segment.ts
 | 
						|
var COLUMN = 0;
 | 
						|
var SOURCES_INDEX = 1;
 | 
						|
var SOURCE_LINE = 2;
 | 
						|
var SOURCE_COLUMN = 3;
 | 
						|
var NAMES_INDEX = 4;
 | 
						|
 | 
						|
// src/gen-mapping.ts
 | 
						|
var NO_NAME = -1;
 | 
						|
var GenMapping = class {
 | 
						|
  constructor({ file, sourceRoot } = {}) {
 | 
						|
    this._names = new SetArray();
 | 
						|
    this._sources = new SetArray();
 | 
						|
    this._sourcesContent = [];
 | 
						|
    this._mappings = [];
 | 
						|
    this.file = file;
 | 
						|
    this.sourceRoot = sourceRoot;
 | 
						|
    this._ignoreList = new SetArray();
 | 
						|
  }
 | 
						|
};
 | 
						|
function cast2(map) {
 | 
						|
  return map;
 | 
						|
}
 | 
						|
function addSegment(map, genLine, genColumn, source, sourceLine, sourceColumn, name, content) {
 | 
						|
  return addSegmentInternal(
 | 
						|
    false,
 | 
						|
    map,
 | 
						|
    genLine,
 | 
						|
    genColumn,
 | 
						|
    source,
 | 
						|
    sourceLine,
 | 
						|
    sourceColumn,
 | 
						|
    name,
 | 
						|
    content
 | 
						|
  );
 | 
						|
}
 | 
						|
function addMapping(map, mapping) {
 | 
						|
  return addMappingInternal(false, map, mapping);
 | 
						|
}
 | 
						|
var maybeAddSegment = (map, genLine, genColumn, source, sourceLine, sourceColumn, name, content) => {
 | 
						|
  return addSegmentInternal(
 | 
						|
    true,
 | 
						|
    map,
 | 
						|
    genLine,
 | 
						|
    genColumn,
 | 
						|
    source,
 | 
						|
    sourceLine,
 | 
						|
    sourceColumn,
 | 
						|
    name,
 | 
						|
    content
 | 
						|
  );
 | 
						|
};
 | 
						|
var maybeAddMapping = (map, mapping) => {
 | 
						|
  return addMappingInternal(true, map, mapping);
 | 
						|
};
 | 
						|
function setSourceContent(map, source, content) {
 | 
						|
  const {
 | 
						|
    _sources: sources,
 | 
						|
    _sourcesContent: sourcesContent
 | 
						|
    // _originalScopes: originalScopes,
 | 
						|
  } = cast2(map);
 | 
						|
  const index = put(sources, source);
 | 
						|
  sourcesContent[index] = content;
 | 
						|
}
 | 
						|
function setIgnore(map, source, ignore = true) {
 | 
						|
  const {
 | 
						|
    _sources: sources,
 | 
						|
    _sourcesContent: sourcesContent,
 | 
						|
    _ignoreList: ignoreList
 | 
						|
    // _originalScopes: originalScopes,
 | 
						|
  } = cast2(map);
 | 
						|
  const index = put(sources, source);
 | 
						|
  if (index === sourcesContent.length) sourcesContent[index] = null;
 | 
						|
  if (ignore) put(ignoreList, index);
 | 
						|
  else remove(ignoreList, index);
 | 
						|
}
 | 
						|
function toDecodedMap(map) {
 | 
						|
  const {
 | 
						|
    _mappings: mappings,
 | 
						|
    _sources: sources,
 | 
						|
    _sourcesContent: sourcesContent,
 | 
						|
    _names: names,
 | 
						|
    _ignoreList: ignoreList
 | 
						|
    // _originalScopes: originalScopes,
 | 
						|
    // _generatedRanges: generatedRanges,
 | 
						|
  } = cast2(map);
 | 
						|
  removeEmptyFinalLines(mappings);
 | 
						|
  return {
 | 
						|
    version: 3,
 | 
						|
    file: map.file || void 0,
 | 
						|
    names: names.array,
 | 
						|
    sourceRoot: map.sourceRoot || void 0,
 | 
						|
    sources: sources.array,
 | 
						|
    sourcesContent,
 | 
						|
    mappings,
 | 
						|
    // originalScopes,
 | 
						|
    // generatedRanges,
 | 
						|
    ignoreList: ignoreList.array
 | 
						|
  };
 | 
						|
}
 | 
						|
function toEncodedMap(map) {
 | 
						|
  const decoded = toDecodedMap(map);
 | 
						|
  return Object.assign({}, decoded, {
 | 
						|
    // originalScopes: decoded.originalScopes.map((os) => encodeOriginalScopes(os)),
 | 
						|
    // generatedRanges: encodeGeneratedRanges(decoded.generatedRanges as GeneratedRange[]),
 | 
						|
    mappings: encode(decoded.mappings)
 | 
						|
  });
 | 
						|
}
 | 
						|
function fromMap(input) {
 | 
						|
  const map = new TraceMap(input);
 | 
						|
  const gen = new GenMapping({ file: map.file, sourceRoot: map.sourceRoot });
 | 
						|
  putAll(cast2(gen)._names, map.names);
 | 
						|
  putAll(cast2(gen)._sources, map.sources);
 | 
						|
  cast2(gen)._sourcesContent = map.sourcesContent || map.sources.map(() => null);
 | 
						|
  cast2(gen)._mappings = decodedMappings(map);
 | 
						|
  if (map.ignoreList) putAll(cast2(gen)._ignoreList, map.ignoreList);
 | 
						|
  return gen;
 | 
						|
}
 | 
						|
function allMappings(map) {
 | 
						|
  const out = [];
 | 
						|
  const { _mappings: mappings, _sources: sources, _names: names } = cast2(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[COLUMN] };
 | 
						|
      let source = void 0;
 | 
						|
      let original = void 0;
 | 
						|
      let name = void 0;
 | 
						|
      if (seg.length !== 1) {
 | 
						|
        source = sources.array[seg[SOURCES_INDEX]];
 | 
						|
        original = { line: seg[SOURCE_LINE] + 1, column: seg[SOURCE_COLUMN] };
 | 
						|
        if (seg.length === 5) name = names.array[seg[NAMES_INDEX]];
 | 
						|
      }
 | 
						|
      out.push({ generated, source, original, name });
 | 
						|
    }
 | 
						|
  }
 | 
						|
  return out;
 | 
						|
}
 | 
						|
function addSegmentInternal(skipable, map, genLine, genColumn, source, sourceLine, sourceColumn, name, content) {
 | 
						|
  const {
 | 
						|
    _mappings: mappings,
 | 
						|
    _sources: sources,
 | 
						|
    _sourcesContent: sourcesContent,
 | 
						|
    _names: names
 | 
						|
    // _originalScopes: originalScopes,
 | 
						|
  } = cast2(map);
 | 
						|
  const line = getIndex(mappings, genLine);
 | 
						|
  const index = getColumnIndex(line, genColumn);
 | 
						|
  if (!source) {
 | 
						|
    if (skipable && skipSourceless(line, index)) return;
 | 
						|
    return insert(line, index, [genColumn]);
 | 
						|
  }
 | 
						|
  assert(sourceLine);
 | 
						|
  assert(sourceColumn);
 | 
						|
  const sourcesIndex = put(sources, source);
 | 
						|
  const namesIndex = name ? put(names, name) : NO_NAME;
 | 
						|
  if (sourcesIndex === sourcesContent.length) sourcesContent[sourcesIndex] = content != null ? content : null;
 | 
						|
  if (skipable && skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex)) {
 | 
						|
    return;
 | 
						|
  }
 | 
						|
  return insert(
 | 
						|
    line,
 | 
						|
    index,
 | 
						|
    name ? [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex] : [genColumn, sourcesIndex, sourceLine, sourceColumn]
 | 
						|
  );
 | 
						|
}
 | 
						|
function assert(_val) {
 | 
						|
}
 | 
						|
function getIndex(arr, index) {
 | 
						|
  for (let i = arr.length; i <= index; i++) {
 | 
						|
    arr[i] = [];
 | 
						|
  }
 | 
						|
  return arr[index];
 | 
						|
}
 | 
						|
function getColumnIndex(line, genColumn) {
 | 
						|
  let index = line.length;
 | 
						|
  for (let i = index - 1; i >= 0; index = i--) {
 | 
						|
    const current = line[i];
 | 
						|
    if (genColumn >= current[COLUMN]) break;
 | 
						|
  }
 | 
						|
  return index;
 | 
						|
}
 | 
						|
function insert(array, index, value) {
 | 
						|
  for (let i = array.length; i > index; i--) {
 | 
						|
    array[i] = array[i - 1];
 | 
						|
  }
 | 
						|
  array[index] = value;
 | 
						|
}
 | 
						|
function removeEmptyFinalLines(mappings) {
 | 
						|
  const { length } = mappings;
 | 
						|
  let len = length;
 | 
						|
  for (let i = len - 1; i >= 0; len = i, i--) {
 | 
						|
    if (mappings[i].length > 0) break;
 | 
						|
  }
 | 
						|
  if (len < length) mappings.length = len;
 | 
						|
}
 | 
						|
function putAll(setarr, array) {
 | 
						|
  for (let i = 0; i < array.length; i++) put(setarr, array[i]);
 | 
						|
}
 | 
						|
function skipSourceless(line, index) {
 | 
						|
  if (index === 0) return true;
 | 
						|
  const prev = line[index - 1];
 | 
						|
  return prev.length === 1;
 | 
						|
}
 | 
						|
function skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex) {
 | 
						|
  if (index === 0) return false;
 | 
						|
  const prev = line[index - 1];
 | 
						|
  if (prev.length === 1) return false;
 | 
						|
  return sourcesIndex === prev[SOURCES_INDEX] && sourceLine === prev[SOURCE_LINE] && sourceColumn === prev[SOURCE_COLUMN] && namesIndex === (prev.length === 5 ? prev[NAMES_INDEX] : NO_NAME);
 | 
						|
}
 | 
						|
function addMappingInternal(skipable, map, mapping) {
 | 
						|
  const { generated, source, original, name, content } = mapping;
 | 
						|
  if (!source) {
 | 
						|
    return addSegmentInternal(
 | 
						|
      skipable,
 | 
						|
      map,
 | 
						|
      generated.line - 1,
 | 
						|
      generated.column,
 | 
						|
      null,
 | 
						|
      null,
 | 
						|
      null,
 | 
						|
      null,
 | 
						|
      null
 | 
						|
    );
 | 
						|
  }
 | 
						|
  assert(original);
 | 
						|
  return addSegmentInternal(
 | 
						|
    skipable,
 | 
						|
    map,
 | 
						|
    generated.line - 1,
 | 
						|
    generated.column,
 | 
						|
    source,
 | 
						|
    original.line - 1,
 | 
						|
    original.column,
 | 
						|
    name,
 | 
						|
    content
 | 
						|
  );
 | 
						|
}
 | 
						|
export {
 | 
						|
  GenMapping,
 | 
						|
  addMapping,
 | 
						|
  addSegment,
 | 
						|
  allMappings,
 | 
						|
  fromMap,
 | 
						|
  maybeAddMapping,
 | 
						|
  maybeAddSegment,
 | 
						|
  setIgnore,
 | 
						|
  setSourceContent,
 | 
						|
  toDecodedMap,
 | 
						|
  toEncodedMap
 | 
						|
};
 | 
						|
//# sourceMappingURL=gen-mapping.mjs.map
 |