@volar/source-map
Advanced tools
Comparing version 2.3.0 to 2.3.1
@@ -1,5 +0,2 @@ | ||
export * from 'muggle-string'; | ||
export * from './lib/sourceMap'; | ||
export * from './lib/translateOffset'; | ||
export * from './lib/buildMappings'; | ||
export * from './lib/buildStacks'; |
@@ -17,7 +17,4 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
__exportStar(require("muggle-string"), exports); | ||
__exportStar(require("./lib/sourceMap"), exports); | ||
__exportStar(require("./lib/translateOffset"), exports); | ||
__exportStar(require("./lib/buildMappings"), exports); | ||
__exportStar(require("./lib/buildStacks"), exports); | ||
//# sourceMappingURL=index.js.map |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.binarySearch = void 0; | ||
exports.binarySearch = binarySearch; | ||
function binarySearch(values, searchValue) { | ||
@@ -28,3 +28,2 @@ let low = 0; | ||
} | ||
exports.binarySearch = binarySearch; | ||
//# sourceMappingURL=binarySearch.js.map |
@@ -1,2 +0,2 @@ | ||
export type CodeRangeKey = 'sourceOffsets' | 'generatedOffsets'; | ||
type CodeRangeKey = 'sourceOffsets' | 'generatedOffsets'; | ||
export interface Mapping<Data = unknown> { | ||
@@ -14,7 +14,11 @@ sourceOffsets: number[]; | ||
constructor(mappings: Mapping<Data>[]); | ||
getSourceOffsets(generatedOffset: number): Generator<readonly [number, Mapping<Data>], void, unknown>; | ||
getGeneratedOffsets(sourceOffset: number): Generator<readonly [number, Mapping<Data>], void, unknown>; | ||
findMatching(offset: number, fromRange: CodeRangeKey, toRange: CodeRangeKey): Generator<readonly [number, Mapping<Data>], void, unknown>; | ||
toSourceRange(generatedStart: number, generatedEnd: number, fallbackToAnyMatch: boolean, filter?: (data: Data) => boolean): Generator<[mappedStart: number, mappedEnd: number, startMapping: Mapping<Data>, endMapping: Mapping<Data>], any, unknown>; | ||
toGeneratedRange(sourceStart: number, sourceEnd: number, fallbackToAnyMatch: boolean, filter?: (data: Data) => boolean): Generator<[mappedStart: number, mappedEnd: number, startMapping: Mapping<Data>, endMapping: Mapping<Data>], any, unknown>; | ||
toSourceLocation(generatedOffset: number, filter?: (data: Data) => boolean): Generator<readonly [number, Mapping<Data>], void, unknown>; | ||
toGeneratedLocation(sourceOffset: number, filter?: (data: Data) => boolean): Generator<readonly [number, Mapping<Data>], void, unknown>; | ||
findMatchingOffsets(offset: number, fromRange: CodeRangeKey, filter?: (data: Data) => boolean): Generator<readonly [number, Mapping<Data>], void, unknown>; | ||
findMatchingStartEnd(start: number, end: number, fallbackToAnyMatch: boolean, fromRange: CodeRangeKey, filter?: (data: Data) => boolean): Generator<[mappedStart: number, mappedEnd: number, startMapping: Mapping<Data>, endMapping: Mapping<Data>]>; | ||
private getMemoBasedOnRange; | ||
private createMemo; | ||
} | ||
export {}; |
@@ -10,9 +10,15 @@ "use strict"; | ||
} | ||
getSourceOffsets(generatedOffset) { | ||
return this.findMatching(generatedOffset, 'generatedOffsets', 'sourceOffsets'); | ||
toSourceRange(generatedStart, generatedEnd, fallbackToAnyMatch, filter) { | ||
return this.findMatchingStartEnd(generatedStart, generatedEnd, fallbackToAnyMatch, 'generatedOffsets', filter); | ||
} | ||
getGeneratedOffsets(sourceOffset) { | ||
return this.findMatching(sourceOffset, 'sourceOffsets', 'generatedOffsets'); | ||
toGeneratedRange(sourceStart, sourceEnd, fallbackToAnyMatch, filter) { | ||
return this.findMatchingStartEnd(sourceStart, sourceEnd, fallbackToAnyMatch, 'sourceOffsets', filter); | ||
} | ||
*findMatching(offset, fromRange, toRange) { | ||
toSourceLocation(generatedOffset, filter) { | ||
return this.findMatchingOffsets(generatedOffset, 'generatedOffsets', filter); | ||
} | ||
toGeneratedLocation(sourceOffset, filter) { | ||
return this.findMatchingOffsets(sourceOffset, 'sourceOffsets', filter); | ||
} | ||
*findMatchingOffsets(offset, fromRange, filter) { | ||
const memo = this.getMemoBasedOnRange(fromRange); | ||
@@ -24,2 +30,3 @@ if (memo.offsets.length === 0) { | ||
const skip = new Set(); | ||
const toRange = fromRange == 'sourceOffsets' ? 'generatedOffsets' : 'sourceOffsets'; | ||
for (let i = start; i <= end; i++) { | ||
@@ -31,2 +38,5 @@ for (const mapping of memo.mappings[i]) { | ||
skip.add(mapping); | ||
if (filter && !filter(mapping.data)) { | ||
continue; | ||
} | ||
const mapped = (0, translateOffset_1.translateOffset)(offset, mapping[fromRange], mapping[toRange], getLengths(mapping, fromRange), getLengths(mapping, toRange)); | ||
@@ -39,2 +49,30 @@ if (mapped !== undefined) { | ||
} | ||
*findMatchingStartEnd(start, end, fallbackToAnyMatch, fromRange, filter) { | ||
const toRange = fromRange == 'sourceOffsets' ? 'generatedOffsets' : 'sourceOffsets'; | ||
const mappedStarts = []; | ||
let hadMatch = false; | ||
for (const [mappedStart, mapping] of this.findMatchingOffsets(start, fromRange)) { | ||
if (filter && !filter(mapping.data)) { | ||
continue; | ||
} | ||
mappedStarts.push([mappedStart, mapping]); | ||
const mappedEnd = (0, translateOffset_1.translateOffset)(end, mapping[fromRange], mapping[toRange], getLengths(mapping, fromRange), getLengths(mapping, toRange)); | ||
if (mappedEnd !== undefined) { | ||
hadMatch = true; | ||
yield [mappedStart, mappedEnd, mapping, mapping]; | ||
} | ||
} | ||
if (!hadMatch && fallbackToAnyMatch) { | ||
for (const [mappedStart, mappingStart] of mappedStarts) { | ||
for (const [mappedEnd, mappingEnd] of this.findMatchingOffsets(end, fromRange)) { | ||
if (filter && !filter(mappingEnd.data) || mappedEnd < mappedStart) { | ||
continue; | ||
} | ||
yield [mappedStart, mappedEnd, mappingStart, mappingEnd]; | ||
break; | ||
} | ||
; | ||
} | ||
} | ||
} | ||
getMemoBasedOnRange(fromRange) { | ||
@@ -41,0 +79,0 @@ return fromRange === 'sourceOffsets' |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.translateOffset = void 0; | ||
exports.translateOffset = translateOffset; | ||
function translateOffset(start, fromOffsets, toOffsets, fromLengths, toLengths = fromLengths) { | ||
for (let i = 0; i < fromOffsets.length; i++) { | ||
const fromOffset = fromOffsets[i]; | ||
const fromLength = fromLengths[i]; | ||
const isSorted = fromOffsets.every((value, index) => index === 0 || fromOffsets[index - 1] <= value); | ||
if (!isSorted) { | ||
throw new Error('fromOffsets must be sorted in ascending order'); | ||
} | ||
let low = 0; | ||
let high = fromOffsets.length - 1; | ||
while (low <= high) { | ||
const mid = Math.floor((low + high) / 2); | ||
const fromOffset = fromOffsets[mid]; | ||
const fromLength = fromLengths[mid]; | ||
if (start >= fromOffset && start <= fromOffset + fromLength) { | ||
const toLength = toLengths[i]; | ||
const toOffset = toOffsets[i]; | ||
const toLength = toLengths[mid]; | ||
const toOffset = toOffsets[mid]; | ||
let rangeOffset = Math.min(start - fromOffset, toLength); | ||
return toOffset + rangeOffset; | ||
} | ||
else if (start < fromOffset) { | ||
high = mid - 1; | ||
} | ||
else { | ||
low = mid + 1; | ||
} | ||
} | ||
} | ||
exports.translateOffset = translateOffset; | ||
//# sourceMappingURL=translateOffset.js.map |
{ | ||
"name": "@volar/source-map", | ||
"version": "2.3.0", | ||
"version": "2.3.1", | ||
"license": "MIT", | ||
@@ -14,6 +14,3 @@ "files": [ | ||
}, | ||
"dependencies": { | ||
"muggle-string": "^0.4.0" | ||
}, | ||
"gitHead": "4f6488605e22e0f76ea877460848a443fd3e8762" | ||
"gitHead": "51742317a2950abd97e1a1a266b2c137bede4ad3" | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
12679
0
11
208
- Removedmuggle-string@^0.4.0
- Removedmuggle-string@0.4.1(transitive)