v1.0 with SW PWA enabled
This commit is contained in:
52
frontend/node_modules/@jridgewell/trace-mapping/src/by-source.ts
generated
vendored
52
frontend/node_modules/@jridgewell/trace-mapping/src/by-source.ts
generated
vendored
@ -1,21 +1,17 @@
|
||||
import { COLUMN, SOURCES_INDEX, SOURCE_LINE, SOURCE_COLUMN } from './sourcemap-segment';
|
||||
import { memoizedBinarySearch, upperBound } from './binary-search';
|
||||
import { sortComparator } from './sort';
|
||||
|
||||
import type { ReverseSegment, SourceMapSegment } from './sourcemap-segment';
|
||||
import type { MemoState } from './binary-search';
|
||||
|
||||
export type Source = {
|
||||
__proto__: null;
|
||||
[line: number]: Exclude<ReverseSegment, [number]>[];
|
||||
};
|
||||
export type Source = ReverseSegment[][];
|
||||
|
||||
// Rebuilds the original source files, with mappings that are ordered by source line/column instead
|
||||
// of generated line/column.
|
||||
export default function buildBySources(
|
||||
decoded: readonly SourceMapSegment[][],
|
||||
memos: MemoState[],
|
||||
memos: unknown[],
|
||||
): Source[] {
|
||||
const sources: Source[] = memos.map(buildNullArray);
|
||||
const sources: Source[] = memos.map(() => []);
|
||||
|
||||
for (let i = 0; i < decoded.length; i++) {
|
||||
const line = decoded[i];
|
||||
@ -26,40 +22,20 @@ export default function buildBySources(
|
||||
const sourceIndex = seg[SOURCES_INDEX];
|
||||
const sourceLine = seg[SOURCE_LINE];
|
||||
const sourceColumn = seg[SOURCE_COLUMN];
|
||||
const originalSource = sources[sourceIndex];
|
||||
const originalLine = (originalSource[sourceLine] ||= []);
|
||||
const memo = memos[sourceIndex];
|
||||
|
||||
// The binary search either found a match, or it found the left-index just before where the
|
||||
// segment should go. Either way, we want to insert after that. And there may be multiple
|
||||
// generated segments associated with an original location, so there may need to move several
|
||||
// indexes before we find where we need to insert.
|
||||
let index = upperBound(
|
||||
originalLine,
|
||||
sourceColumn,
|
||||
memoizedBinarySearch(originalLine, sourceColumn, memo, sourceLine),
|
||||
);
|
||||
const source = sources[sourceIndex];
|
||||
const segs = (source[sourceLine] ||= []);
|
||||
segs.push([sourceColumn, i, seg[COLUMN]]);
|
||||
}
|
||||
}
|
||||
|
||||
memo.lastIndex = ++index;
|
||||
insert(originalLine, index, [sourceColumn, i, seg[COLUMN]]);
|
||||
for (let i = 0; i < sources.length; i++) {
|
||||
const source = sources[i];
|
||||
for (let j = 0; j < source.length; j++) {
|
||||
const line = source[j];
|
||||
if (line) line.sort(sortComparator);
|
||||
}
|
||||
}
|
||||
|
||||
return sources;
|
||||
}
|
||||
|
||||
function insert<T>(array: T[], index: number, value: T) {
|
||||
for (let i = array.length; i > index; i--) {
|
||||
array[i] = array[i - 1];
|
||||
}
|
||||
array[index] = value;
|
||||
}
|
||||
|
||||
// Null arrays allow us to use ordered index keys without actually allocating contiguous memory like
|
||||
// a real array. We use a null-prototype object to avoid prototype pollution and deoptimizations.
|
||||
// Numeric properties on objects are magically sorted in ascending order by the engine regardless of
|
||||
// the insertion order. So, by setting any numeric keys, even out of order, we'll get ascending
|
||||
// order when iterating with for-in.
|
||||
function buildNullArray<T extends { __proto__: null }>(): T {
|
||||
return { __proto__: null } as T;
|
||||
}
|
||||
|
||||
4
frontend/node_modules/@jridgewell/trace-mapping/src/sort.ts
generated
vendored
4
frontend/node_modules/@jridgewell/trace-mapping/src/sort.ts
generated
vendored
@ -1,6 +1,6 @@
|
||||
import { COLUMN } from './sourcemap-segment';
|
||||
|
||||
import type { SourceMapSegment } from './sourcemap-segment';
|
||||
import type { ReverseSegment, SourceMapSegment } from './sourcemap-segment';
|
||||
|
||||
export default function maybeSort(
|
||||
mappings: SourceMapSegment[][],
|
||||
@ -40,6 +40,6 @@ function sortSegments(line: SourceMapSegment[], owned: boolean): SourceMapSegmen
|
||||
return line.sort(sortComparator);
|
||||
}
|
||||
|
||||
function sortComparator(a: SourceMapSegment, b: SourceMapSegment): number {
|
||||
export function sortComparator<T extends SourceMapSegment | ReverseSegment>(a: T, b: T): number {
|
||||
return a[COLUMN] - b[COLUMN];
|
||||
}
|
||||
|
||||
8
frontend/node_modules/@jridgewell/trace-mapping/src/trace-mapping.ts
generated
vendored
8
frontend/node_modules/@jridgewell/trace-mapping/src/trace-mapping.ts
generated
vendored
@ -484,15 +484,13 @@ function generatedPosition(
|
||||
if (sourceIndex === -1) sourceIndex = resolvedSources.indexOf(source);
|
||||
if (sourceIndex === -1) return all ? [] : GMapping(null, null);
|
||||
|
||||
const generated = (cast(map)._bySources ||= buildBySources(
|
||||
decodedMappings(map),
|
||||
(cast(map)._bySourceMemos = sources.map(memoizedState)),
|
||||
));
|
||||
const bySourceMemos = (cast(map)._bySourceMemos ||= sources.map(memoizedState));
|
||||
const generated = (cast(map)._bySources ||= buildBySources(decodedMappings(map), bySourceMemos));
|
||||
|
||||
const segments = generated[sourceIndex][line];
|
||||
if (segments == null) return all ? [] : GMapping(null, null);
|
||||
|
||||
const memo = cast(map)._bySourceMemos![sourceIndex];
|
||||
const memo = bySourceMemos[sourceIndex];
|
||||
|
||||
if (all) return sliceGeneratedPositions(segments, memo, line, column, bias);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user