UNPKG

4.51 kBJavaScriptView Raw
1var charToInteger = {};
2var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
3for (var i = 0; i < chars.length; i++) {
4 charToInteger[chars.charCodeAt(i)] = i;
5}
6function decode(mappings) {
7 var generatedCodeColumn = 0; // first field
8 var sourceFileIndex = 0; // second field
9 var sourceCodeLine = 0; // third field
10 var sourceCodeColumn = 0; // fourth field
11 var nameIndex = 0; // fifth field
12 var decoded = [];
13 var line = [];
14 var segment = [];
15 for (var i = 0, j = 0, shift = 0, value = 0, len = mappings.length; i < len; i++) {
16 var c = mappings.charCodeAt(i);
17 if (c === 44) { // ","
18 if (segment.length)
19 line.push(new Int32Array(segment));
20 segment = [];
21 j = 0;
22 }
23 else if (c === 59) { // ";"
24 if (segment.length)
25 line.push(new Int32Array(segment));
26 segment = [];
27 j = 0;
28 decoded.push(line);
29 line = [];
30 generatedCodeColumn = 0;
31 }
32 else {
33 var integer = charToInteger[c];
34 if (integer === undefined) {
35 throw new Error('Invalid character (' + String.fromCharCode(c) + ')');
36 }
37 var hasContinuationBit = integer & 32;
38 integer &= 31;
39 value += integer << shift;
40 if (hasContinuationBit) {
41 shift += 5;
42 }
43 else {
44 var shouldNegate = value & 1;
45 value >>>= 1;
46 if (shouldNegate) {
47 value = -value;
48 if (value === 0)
49 value = -0x80000000;
50 }
51 if (j == 0) {
52 generatedCodeColumn += value;
53 segment.push(generatedCodeColumn);
54 }
55 else if (j === 1) {
56 sourceFileIndex += value;
57 segment.push(sourceFileIndex);
58 }
59 else if (j === 2) {
60 sourceCodeLine += value;
61 segment.push(sourceCodeLine);
62 }
63 else if (j === 3) {
64 sourceCodeColumn += value;
65 segment.push(sourceCodeColumn);
66 }
67 else if (j === 4) {
68 nameIndex += value;
69 segment.push(nameIndex);
70 }
71 j++;
72 value = shift = 0; // reset
73 }
74 }
75 }
76 if (segment.length)
77 line.push(new Int32Array(segment));
78 decoded.push(line);
79 return decoded;
80}
81function encode(decoded) {
82 var sourceFileIndex = 0; // second field
83 var sourceCodeLine = 0; // third field
84 var sourceCodeColumn = 0; // fourth field
85 var nameIndex = 0; // fifth field
86 var mappings = '';
87 for (var i = 0; i < decoded.length; i++) {
88 var line = decoded[i];
89 if (i > 0)
90 mappings += ';';
91 if (line.length === 0)
92 continue;
93 var generatedCodeColumn = 0; // first field
94 var lineMappings = [];
95 for (var _i = 0, line_1 = line; _i < line_1.length; _i++) {
96 var segment = line_1[_i];
97 var segmentMappings = encodeInteger(segment[0] - generatedCodeColumn);
98 generatedCodeColumn = segment[0];
99 if (segment.length > 1) {
100 segmentMappings +=
101 encodeInteger(segment[1] - sourceFileIndex) +
102 encodeInteger(segment[2] - sourceCodeLine) +
103 encodeInteger(segment[3] - sourceCodeColumn);
104 sourceFileIndex = segment[1];
105 sourceCodeLine = segment[2];
106 sourceCodeColumn = segment[3];
107 }
108 if (segment.length === 5) {
109 segmentMappings += encodeInteger(segment[4] - nameIndex);
110 nameIndex = segment[4];
111 }
112 lineMappings.push(segmentMappings);
113 }
114 mappings += lineMappings.join(',');
115 }
116 return mappings;
117}
118function encodeInteger(num) {
119 var result = '';
120 num = num < 0 ? (-num << 1) | 1 : num << 1;
121 do {
122 var clamped = num & 31;
123 num >>>= 5;
124 if (num > 0) {
125 clamped |= 32;
126 }
127 result += chars[clamped];
128 } while (num > 0);
129 return result;
130}
131
132export { decode, encode };
133//# sourceMappingURL=sourcemap-codec.es.js.map