@volar/source-map 1.0.0-beta.0 → 1.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/index.d.ts +18 -76
- package/out/index.js +70 -138
- package/package.json +3 -3
package/out/index.d.ts
CHANGED
|
@@ -1,80 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
* @case1
|
|
8
|
-
* 123456 -> abcdef
|
|
9
|
-
* ^ ^ ^ ^
|
|
10
|
-
* @case2
|
|
11
|
-
* 123456 -> abcdef
|
|
12
|
-
* ^ ^ ^ ^
|
|
13
|
-
* @case3
|
|
14
|
-
* 123456 -> abcdef
|
|
15
|
-
* ^^ ^^
|
|
16
|
-
*/
|
|
17
|
-
Offset = 1,
|
|
18
|
-
/**
|
|
19
|
-
* @case1
|
|
20
|
-
* 123456 -> abcdef
|
|
21
|
-
* ^ ^ ^ ^
|
|
22
|
-
* @case2
|
|
23
|
-
* 123456 -> abcdef
|
|
24
|
-
* ^ ^ NOT_MATCH
|
|
25
|
-
* @case3
|
|
26
|
-
* 123456 -> abcdef
|
|
27
|
-
* ^^ NOT_MATCH
|
|
28
|
-
*/
|
|
29
|
-
Totally = 2,
|
|
30
|
-
/**
|
|
31
|
-
* @case1
|
|
32
|
-
* 123456 -> abcdef
|
|
33
|
-
* ^ ^ ^ ^
|
|
34
|
-
* @case2
|
|
35
|
-
* 123456 -> abcdef
|
|
36
|
-
* ^ ^ ^ ^
|
|
37
|
-
* @case3
|
|
38
|
-
* 123456 -> abcdef
|
|
39
|
-
* ^^ ^ ^
|
|
40
|
-
*/
|
|
41
|
-
Expand = 3
|
|
42
|
-
}
|
|
43
|
-
export type MappingBase = {
|
|
44
|
-
mode: Mode;
|
|
45
|
-
sourceRange: Range;
|
|
46
|
-
mappedRange: Range;
|
|
47
|
-
};
|
|
48
|
-
export type Mapping<T> = MappingBase & {
|
|
1
|
+
import { SegmentWithData, SegmentWithoutData } from 'muggle-string';
|
|
2
|
+
export * from 'muggle-string';
|
|
3
|
+
export interface Mapping<T = any> {
|
|
4
|
+
source?: string;
|
|
5
|
+
sourceRange: [number, number];
|
|
6
|
+
generatedRange: [number, number];
|
|
49
7
|
data: T;
|
|
50
|
-
|
|
51
|
-
};
|
|
8
|
+
}
|
|
52
9
|
export declare class SourceMapBase<Data = undefined> {
|
|
53
|
-
|
|
54
|
-
private
|
|
55
|
-
get
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
start: number;
|
|
64
|
-
end: number;
|
|
65
|
-
}, Data] | undefined;
|
|
66
|
-
getSourceRanges(start: number, end?: number, filter?: (data: Data) => boolean): Generator<[{
|
|
67
|
-
start: number;
|
|
68
|
-
end: number;
|
|
69
|
-
}, Data], void, unknown>;
|
|
70
|
-
getMappedRanges(start: number, end?: number, filter?: (data: Data) => boolean): Generator<[{
|
|
71
|
-
start: number;
|
|
72
|
-
end: number;
|
|
73
|
-
}, Data], void, unknown>;
|
|
74
|
-
getRanges(startOffset: number, endOffset: number, sourceToTarget: boolean, filter?: (data: Data) => boolean): Generator<[{
|
|
75
|
-
start: number;
|
|
76
|
-
end: number;
|
|
77
|
-
}, Data], void, unknown>;
|
|
10
|
+
readonly mappings: Mapping<Data>[];
|
|
11
|
+
private _memo;
|
|
12
|
+
private get memo();
|
|
13
|
+
constructor(mappings: Mapping<Data>[]);
|
|
14
|
+
toSourceOffset(start: number): readonly [number, Mapping<Data>] | undefined;
|
|
15
|
+
toGeneratedOffset(start: number): readonly [number, Mapping<Data>] | undefined;
|
|
16
|
+
toSourceOffsets(start: number): Generator<readonly [number, Mapping<Data>], void, unknown>;
|
|
17
|
+
toGeneratedOffsets(start: number): Generator<readonly [number, Mapping<Data>], void, unknown>;
|
|
18
|
+
matcing(startOffset: number, from: 'sourceRange' | 'generatedRange', to: 'sourceRange' | 'generatedRange'): Generator<readonly [number, Mapping<Data>], void, unknown>;
|
|
19
|
+
matchOffset(start: number, mappedFromRange: [number, number], mappedToRange: [number, number]): number | undefined;
|
|
78
20
|
private binarySearchMemo;
|
|
79
|
-
private getRange;
|
|
80
21
|
}
|
|
22
|
+
export declare function buildMappings<T>(chunks: SegmentWithoutData[] | SegmentWithData<T>[]): Mapping<T>[];
|
package/out/index.js
CHANGED
|
@@ -1,90 +1,42 @@
|
|
|
1
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
2
|
+
if (k2 === undefined) k2 = k;
|
|
3
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
4
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
5
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
6
|
+
}
|
|
7
|
+
Object.defineProperty(o, k2, desc);
|
|
8
|
+
}) : (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
o[k2] = m[k];
|
|
11
|
+
}));
|
|
12
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
13
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
14
|
+
};
|
|
1
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2
|
-
exports.
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
(function (Mode) {
|
|
6
|
-
/**
|
|
7
|
-
* @case1
|
|
8
|
-
* 123456 -> abcdef
|
|
9
|
-
* ^ ^ ^ ^
|
|
10
|
-
* @case2
|
|
11
|
-
* 123456 -> abcdef
|
|
12
|
-
* ^ ^ ^ ^
|
|
13
|
-
* @case3
|
|
14
|
-
* 123456 -> abcdef
|
|
15
|
-
* ^^ ^^
|
|
16
|
-
*/
|
|
17
|
-
Mode[Mode["Offset"] = 1] = "Offset";
|
|
18
|
-
/**
|
|
19
|
-
* @case1
|
|
20
|
-
* 123456 -> abcdef
|
|
21
|
-
* ^ ^ ^ ^
|
|
22
|
-
* @case2
|
|
23
|
-
* 123456 -> abcdef
|
|
24
|
-
* ^ ^ NOT_MATCH
|
|
25
|
-
* @case3
|
|
26
|
-
* 123456 -> abcdef
|
|
27
|
-
* ^^ NOT_MATCH
|
|
28
|
-
*/
|
|
29
|
-
Mode[Mode["Totally"] = 2] = "Totally";
|
|
30
|
-
/**
|
|
31
|
-
* @case1
|
|
32
|
-
* 123456 -> abcdef
|
|
33
|
-
* ^ ^ ^ ^
|
|
34
|
-
* @case2
|
|
35
|
-
* 123456 -> abcdef
|
|
36
|
-
* ^ ^ ^ ^
|
|
37
|
-
* @case3
|
|
38
|
-
* 123456 -> abcdef
|
|
39
|
-
* ^^ ^ ^
|
|
40
|
-
*/
|
|
41
|
-
Mode[Mode["Expand"] = 3] = "Expand";
|
|
42
|
-
})(Mode = exports.Mode || (exports.Mode = {}));
|
|
16
|
+
exports.buildMappings = exports.SourceMapBase = void 0;
|
|
17
|
+
__exportStar(require("muggle-string"), exports);
|
|
18
|
+
;
|
|
43
19
|
class SourceMapBase {
|
|
44
|
-
get
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
set mappings(value) {
|
|
48
|
-
this.__mappings.value = value;
|
|
49
|
-
}
|
|
50
|
-
constructor(_mappings) {
|
|
51
|
-
this.__mappings = (0, reactivity_1.shallowRef)([]);
|
|
52
|
-
this.__memo = (0, reactivity_1.computed)(() => {
|
|
20
|
+
get memo() {
|
|
21
|
+
if (!this._memo) {
|
|
53
22
|
const self = this;
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
source,
|
|
58
|
-
mapped,
|
|
23
|
+
this._memo = {
|
|
24
|
+
sourceRange: createMemo('sourceRange'),
|
|
25
|
+
generatedRange: createMemo('generatedRange'),
|
|
59
26
|
};
|
|
60
27
|
function createMemo(key) {
|
|
61
28
|
const offsets = new Set();
|
|
62
29
|
for (const mapping of self.mappings) {
|
|
63
|
-
offsets.add(mapping[key]
|
|
64
|
-
offsets.add(mapping[key]
|
|
65
|
-
if (mapping.additional) {
|
|
66
|
-
for (const addition of mapping.additional) {
|
|
67
|
-
offsets.add(addition[key].start);
|
|
68
|
-
offsets.add(addition[key].end);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
30
|
+
offsets.add(mapping[key][0]);
|
|
31
|
+
offsets.add(mapping[key][1]);
|
|
71
32
|
}
|
|
72
33
|
const arr = [...offsets].sort((a, b) => a - b).map(offset => ({ offset, mappings: new Set() }));
|
|
73
34
|
for (const mapping of self.mappings) {
|
|
74
|
-
const startIndex = binarySearch(mapping[key]
|
|
75
|
-
const endIndex = binarySearch(mapping[key]
|
|
35
|
+
const startIndex = binarySearch(mapping[key][0]);
|
|
36
|
+
const endIndex = binarySearch(mapping[key][1]);
|
|
76
37
|
for (let i = startIndex; i <= endIndex; i++) {
|
|
77
38
|
arr[i].mappings.add(mapping);
|
|
78
39
|
}
|
|
79
|
-
if (mapping.additional) {
|
|
80
|
-
for (const addition of mapping.additional) {
|
|
81
|
-
const startIndex = binarySearch(addition[key].start);
|
|
82
|
-
const endIndex = binarySearch(addition[key].end);
|
|
83
|
-
for (let i = startIndex; i <= endIndex; i++) {
|
|
84
|
-
arr[i].mappings.add(mapping);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
40
|
}
|
|
89
41
|
return arr;
|
|
90
42
|
function binarySearch(start) {
|
|
@@ -105,59 +57,52 @@ class SourceMapBase {
|
|
|
105
57
|
}
|
|
106
58
|
}
|
|
107
59
|
}
|
|
108
|
-
}
|
|
109
|
-
this.
|
|
60
|
+
}
|
|
61
|
+
return this._memo;
|
|
62
|
+
}
|
|
63
|
+
constructor(mappings) {
|
|
64
|
+
this.mappings = mappings;
|
|
110
65
|
}
|
|
111
|
-
|
|
112
|
-
for (const mapped of this.
|
|
66
|
+
toSourceOffset(start) {
|
|
67
|
+
for (const mapped of this.matcing(start, 'generatedRange', 'sourceRange')) {
|
|
113
68
|
return mapped;
|
|
114
69
|
}
|
|
115
70
|
}
|
|
116
|
-
|
|
117
|
-
for (const mapped of this.
|
|
71
|
+
toGeneratedOffset(start) {
|
|
72
|
+
for (const mapped of this.matcing(start, 'sourceRange', 'generatedRange')) {
|
|
118
73
|
return mapped;
|
|
119
74
|
}
|
|
120
75
|
}
|
|
121
|
-
|
|
122
|
-
return this.
|
|
76
|
+
toSourceOffsets(start) {
|
|
77
|
+
return this.matcing(start, 'generatedRange', 'sourceRange');
|
|
123
78
|
}
|
|
124
|
-
|
|
125
|
-
return this.
|
|
79
|
+
toGeneratedOffsets(start) {
|
|
80
|
+
return this.matcing(start, 'sourceRange', 'generatedRange');
|
|
126
81
|
}
|
|
127
|
-
*
|
|
128
|
-
const memo = this.
|
|
129
|
-
|
|
130
|
-
if (_memo.length === 0)
|
|
82
|
+
*matcing(startOffset, from, to) {
|
|
83
|
+
const memo = this.memo[from];
|
|
84
|
+
if (memo.length === 0)
|
|
131
85
|
return;
|
|
132
|
-
const { low: start, high: end, } =
|
|
133
|
-
low: this.binarySearchMemo(_memo, startOffset).low,
|
|
134
|
-
high: this.binarySearchMemo(_memo, endOffset).high,
|
|
135
|
-
};
|
|
86
|
+
const { low: start, high: end, } = this.binarySearchMemo(memo, startOffset);
|
|
136
87
|
const skip = new Set();
|
|
137
88
|
for (let i = start; i <= end; i++) {
|
|
138
|
-
for (const mapping of
|
|
89
|
+
for (const mapping of memo[i].mappings) {
|
|
139
90
|
if (skip.has(mapping)) {
|
|
140
91
|
continue;
|
|
141
92
|
}
|
|
142
93
|
skip.add(mapping);
|
|
143
|
-
|
|
144
|
-
continue;
|
|
145
|
-
const mapped = this.getRange(startOffset, endOffset, sourceToTarget, mapping.mode, mapping.sourceRange, mapping.mappedRange, mapping.data);
|
|
94
|
+
const mapped = this.matchOffset(startOffset, mapping[from], mapping[to]);
|
|
146
95
|
if (mapped) {
|
|
147
|
-
yield mapped;
|
|
148
|
-
}
|
|
149
|
-
else if (mapping.additional) {
|
|
150
|
-
for (const other of mapping.additional) {
|
|
151
|
-
const mapped = this.getRange(startOffset, endOffset, sourceToTarget, other.mode, other.sourceRange, other.mappedRange, mapping.data);
|
|
152
|
-
if (mapped) {
|
|
153
|
-
yield mapped;
|
|
154
|
-
break; // only return first match additional range
|
|
155
|
-
}
|
|
156
|
-
}
|
|
96
|
+
yield [mapped, mapping];
|
|
157
97
|
}
|
|
158
98
|
}
|
|
159
99
|
}
|
|
160
100
|
}
|
|
101
|
+
matchOffset(start, mappedFromRange, mappedToRange) {
|
|
102
|
+
if (start >= mappedFromRange[0] && start <= mappedFromRange[1]) {
|
|
103
|
+
return mappedToRange[0] + start - mappedFromRange[0];
|
|
104
|
+
}
|
|
105
|
+
}
|
|
161
106
|
binarySearchMemo(array, start) {
|
|
162
107
|
let low = 0;
|
|
163
108
|
let high = array.length - 1;
|
|
@@ -181,40 +126,27 @@ class SourceMapBase {
|
|
|
181
126
|
high: Math.min(Math.max(low, high, 0), array.length - 1),
|
|
182
127
|
};
|
|
183
128
|
}
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
start: Math.min(_start, _end),
|
|
193
|
-
end: Math.max(_start, _end),
|
|
194
|
-
}, data];
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
else if (mode === Mode.Offset) {
|
|
198
|
-
if (start >= mappedFromRange.start && end <= mappedFromRange.end) {
|
|
199
|
-
const _start = mappedToRange.start + start - mappedFromRange.start;
|
|
200
|
-
const _end = mappedToRange.end + end - mappedFromRange.end;
|
|
201
|
-
return [{
|
|
202
|
-
start: Math.min(_start, _end),
|
|
203
|
-
end: Math.max(_start, _end),
|
|
204
|
-
}, data];
|
|
205
|
-
}
|
|
129
|
+
}
|
|
130
|
+
exports.SourceMapBase = SourceMapBase;
|
|
131
|
+
function buildMappings(chunks) {
|
|
132
|
+
let length = 0;
|
|
133
|
+
const mappings = [];
|
|
134
|
+
for (const segment of chunks) {
|
|
135
|
+
if (typeof segment === 'string') {
|
|
136
|
+
length += segment.length;
|
|
206
137
|
}
|
|
207
|
-
else
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
138
|
+
else {
|
|
139
|
+
mappings.push({
|
|
140
|
+
generatedRange: [length, length + segment[0].length],
|
|
141
|
+
source: segment[1],
|
|
142
|
+
sourceRange: typeof segment[2] === 'number' ? [segment[2], segment[2] + segment[0].length] : segment[2],
|
|
143
|
+
// @ts-ignore
|
|
144
|
+
data: segment[3],
|
|
145
|
+
});
|
|
146
|
+
length += segment[0].length;
|
|
216
147
|
}
|
|
217
148
|
}
|
|
149
|
+
return mappings;
|
|
218
150
|
}
|
|
219
|
-
exports.
|
|
151
|
+
exports.buildMappings = buildMappings;
|
|
220
152
|
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@volar/source-map",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.2",
|
|
4
4
|
"main": "out/index.js",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"files": [
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"directory": "packages/source-map"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"
|
|
16
|
+
"muggle-string": "^0.1.0"
|
|
17
17
|
},
|
|
18
|
-
"gitHead": "
|
|
18
|
+
"gitHead": "a523013ad349e28c9d0a7d9ad3f0c0834e0067e7"
|
|
19
19
|
}
|