UNPKG

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