sourcemap-codec
Advanced tools
Comparing version 1.4.0 to 1.4.1
# sourcemap-codec changelog | ||
## 1.4.1 | ||
* GO FASTER ([#71](https://github.com/Rich-Harris/sourcemap-codec/pull/71)) | ||
## 1.4.0 | ||
@@ -4,0 +8,0 @@ |
var charToInteger = {}; | ||
var integerToChar = {}; | ||
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='.split('').forEach(function (char, i) { | ||
charToInteger[char] = i; | ||
integerToChar[i] = char; | ||
}); | ||
function decode(string) { | ||
var result = []; | ||
var shift = 0; | ||
var value = 0; | ||
for (var i = 0; i < string.length; i += 1) { | ||
var integer = charToInteger[string[i]]; | ||
if (integer === undefined) { | ||
throw new Error('Invalid character (' + string[i] + ')'); | ||
var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; | ||
for (var i = 0; i < chars.length; i++) { | ||
charToInteger[chars.charCodeAt(i)] = i; | ||
} | ||
function decode(mappings) { | ||
var generatedCodeColumn = 0; // first field | ||
var sourceFileIndex = 0; // second field | ||
var sourceCodeLine = 0; // third field | ||
var sourceCodeColumn = 0; // fourth field | ||
var nameIndex = 0; // fifth field | ||
var decoded = []; | ||
var line = []; | ||
var segment = []; | ||
for (var i = 0, j = 0, shift = 0, value = 0; i < mappings.length; i++) { | ||
var c = mappings.charCodeAt(i); | ||
if (c === 44) { | ||
if (segment.length) | ||
line.push(segment); | ||
segment = []; | ||
j = 0; | ||
} | ||
var hasContinuationBit = integer & 32; | ||
integer &= 31; | ||
value += integer << shift; | ||
if (hasContinuationBit) { | ||
shift += 5; | ||
else if (c === 59) { | ||
if (segment.length) | ||
line.push(segment); | ||
segment = []; | ||
j = 0; | ||
decoded.push(line); | ||
line = []; | ||
generatedCodeColumn = 0; | ||
} | ||
else { | ||
var shouldNegate = value & 1; | ||
value >>= 1; | ||
result.push(shouldNegate ? -value : value); | ||
// reset | ||
value = shift = 0; | ||
var integer = charToInteger[c]; | ||
if (integer === undefined) { | ||
throw new Error('Invalid character (' + String.fromCharCode(c) + ')'); | ||
} | ||
var hasContinuationBit = integer & 32; | ||
integer &= 31; | ||
value += integer << shift; | ||
if (hasContinuationBit) { | ||
shift += 5; | ||
} | ||
else { | ||
var shouldNegate = value & 1; | ||
value >>= 1; | ||
var num = shouldNegate ? -value : value; | ||
if (j == 0) { | ||
generatedCodeColumn += num; | ||
segment.push(generatedCodeColumn); | ||
} | ||
else if (j === 1) { | ||
sourceFileIndex += num; | ||
segment.push(sourceFileIndex); | ||
} | ||
else if (j === 2) { | ||
sourceCodeLine += num; | ||
segment.push(sourceCodeLine); | ||
} | ||
else if (j === 3) { | ||
sourceCodeColumn += num; | ||
segment.push(sourceCodeColumn); | ||
} | ||
else if (j === 4) { | ||
nameIndex += num; | ||
segment.push(nameIndex); | ||
} | ||
j++; | ||
value = shift = 0; // reset | ||
} | ||
} | ||
} | ||
return result; | ||
if (segment.length) | ||
line.push(segment); | ||
decoded.push(line); | ||
return decoded; | ||
} | ||
function encode(value) { | ||
var result; | ||
if (typeof value === 'number') { | ||
result = encodeInteger(value); | ||
} | ||
else { | ||
result = ''; | ||
for (var i = 0; i < value.length; i += 1) { | ||
result += encodeInteger(value[i]); | ||
function encode(decoded) { | ||
var sourceFileIndex = 0; // second field | ||
var sourceCodeLine = 0; // third field | ||
var sourceCodeColumn = 0; // fourth field | ||
var nameIndex = 0; // fifth field | ||
var mappings = ''; | ||
for (var i = 0; i < decoded.length; i++) { | ||
var line = decoded[i]; | ||
if (i > 0) | ||
mappings += ';'; | ||
if (line.length === 0) | ||
continue; | ||
var generatedCodeColumn = 0; // first field | ||
var lineMappings = []; | ||
for (var _i = 0, line_1 = line; _i < line_1.length; _i++) { | ||
var segment = line_1[_i]; | ||
var segmentMappings = encodeInteger(segment[0] - generatedCodeColumn); | ||
generatedCodeColumn = segment[0]; | ||
if (segment.length > 1) { | ||
segmentMappings += | ||
encodeInteger(segment[1] - sourceFileIndex) + | ||
encodeInteger(segment[2] - sourceCodeLine) + | ||
encodeInteger(segment[3] - sourceCodeColumn); | ||
sourceFileIndex = segment[1]; | ||
sourceCodeLine = segment[2]; | ||
sourceCodeColumn = segment[3]; | ||
} | ||
if (segment.length === 5) { | ||
segmentMappings += encodeInteger(segment[4] - nameIndex); | ||
nameIndex = segment[4]; | ||
} | ||
lineMappings.push(segmentMappings); | ||
} | ||
mappings += lineMappings.join(','); | ||
} | ||
return result; | ||
return mappings; | ||
} | ||
function encodeInteger(num) { | ||
var result = ''; | ||
if (num < 0) { | ||
num = (-num << 1) | 1; | ||
} | ||
else { | ||
num <<= 1; | ||
} | ||
num = num < 0 ? (-num << 1) | 1 : num << 1; | ||
do { | ||
@@ -59,3 +123,3 @@ var clamped = num & 31; | ||
} | ||
result += integerToChar[clamped]; | ||
result += chars[clamped]; | ||
} while (num > 0); | ||
@@ -65,93 +129,3 @@ return result; | ||
function decodeSegments(encodedSegments) { | ||
var i = encodedSegments.length; | ||
var segments = new Array(i); | ||
while (i--) | ||
segments[i] = decode(encodedSegments[i]); | ||
return segments; | ||
} | ||
function decode$1(mappings) { | ||
var sourceFileIndex = 0; // second field | ||
var sourceCodeLine = 0; // third field | ||
var sourceCodeColumn = 0; // fourth field | ||
var nameIndex = 0; // fifth field | ||
var lines = mappings.split(';'); | ||
var numLines = lines.length; | ||
var decoded = new Array(numLines); | ||
var i; | ||
var j; | ||
var line; | ||
var generatedCodeColumn; | ||
var decodedLine; | ||
var segments; | ||
var segment; | ||
var result; | ||
for (i = 0; i < numLines; i += 1) { | ||
line = lines[i]; | ||
generatedCodeColumn = 0; // first field - reset each time | ||
decodedLine = []; | ||
segments = decodeSegments(line.split(',')); | ||
for (j = 0; j < segments.length; j += 1) { | ||
segment = segments[j]; | ||
if (!segment.length) { | ||
break; | ||
} | ||
generatedCodeColumn += segment[0]; | ||
result = [generatedCodeColumn]; | ||
decodedLine.push(result); | ||
if (segment.length === 1) { | ||
// only one field! | ||
continue; | ||
} | ||
sourceFileIndex += segment[1]; | ||
sourceCodeLine += segment[2]; | ||
sourceCodeColumn += segment[3]; | ||
result.push(sourceFileIndex, sourceCodeLine, sourceCodeColumn); | ||
if (segment.length === 5) { | ||
nameIndex += segment[4]; | ||
result.push(nameIndex); | ||
} | ||
} | ||
decoded[i] = decodedLine; | ||
} | ||
return decoded; | ||
} | ||
function encode$1(decoded) { | ||
var offsets = { | ||
generatedCodeColumn: 0, | ||
sourceFileIndex: 0, | ||
sourceCodeLine: 0, | ||
sourceCodeColumn: 0, | ||
nameIndex: 0 // fifth field | ||
}; | ||
return decoded.map(function (line) { | ||
offsets.generatedCodeColumn = 0; // first field - reset each time | ||
return line.map(encodeSegment).join(','); | ||
}).join(';'); | ||
function encodeSegment(segment) { | ||
if (!segment.length) { | ||
return ''; | ||
} | ||
var result = new Array(segment.length); | ||
result[0] = segment[0] - offsets.generatedCodeColumn; | ||
offsets.generatedCodeColumn = segment[0]; | ||
if (segment.length === 1) { | ||
// only one field! | ||
return encode(result); | ||
} | ||
result[1] = segment[1] - offsets.sourceFileIndex; | ||
result[2] = segment[2] - offsets.sourceCodeLine; | ||
result[3] = segment[3] - offsets.sourceCodeColumn; | ||
offsets.sourceFileIndex = segment[1]; | ||
offsets.sourceCodeLine = segment[2]; | ||
offsets.sourceCodeColumn = segment[3]; | ||
if (segment.length === 5) { | ||
result[4] = segment[4] - offsets.nameIndex; | ||
offsets.nameIndex = segment[4]; | ||
} | ||
return encode(result); | ||
} | ||
} | ||
export { decode$1 as decode, encode$1 as encode }; | ||
export { decode, encode }; | ||
//# sourceMappingURL=sourcemap-codec.es.js.map |
@@ -8,53 +8,117 @@ (function (global, factory) { | ||
var charToInteger = {}; | ||
var integerToChar = {}; | ||
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='.split('').forEach(function (char, i) { | ||
charToInteger[char] = i; | ||
integerToChar[i] = char; | ||
}); | ||
function decode(string) { | ||
var result = []; | ||
var shift = 0; | ||
var value = 0; | ||
for (var i = 0; i < string.length; i += 1) { | ||
var integer = charToInteger[string[i]]; | ||
if (integer === undefined) { | ||
throw new Error('Invalid character (' + string[i] + ')'); | ||
var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; | ||
for (var i = 0; i < chars.length; i++) { | ||
charToInteger[chars.charCodeAt(i)] = i; | ||
} | ||
function decode(mappings) { | ||
var generatedCodeColumn = 0; // first field | ||
var sourceFileIndex = 0; // second field | ||
var sourceCodeLine = 0; // third field | ||
var sourceCodeColumn = 0; // fourth field | ||
var nameIndex = 0; // fifth field | ||
var decoded = []; | ||
var line = []; | ||
var segment = []; | ||
for (var i = 0, j = 0, shift = 0, value = 0; i < mappings.length; i++) { | ||
var c = mappings.charCodeAt(i); | ||
if (c === 44) { | ||
if (segment.length) | ||
line.push(segment); | ||
segment = []; | ||
j = 0; | ||
} | ||
var hasContinuationBit = integer & 32; | ||
integer &= 31; | ||
value += integer << shift; | ||
if (hasContinuationBit) { | ||
shift += 5; | ||
else if (c === 59) { | ||
if (segment.length) | ||
line.push(segment); | ||
segment = []; | ||
j = 0; | ||
decoded.push(line); | ||
line = []; | ||
generatedCodeColumn = 0; | ||
} | ||
else { | ||
var shouldNegate = value & 1; | ||
value >>= 1; | ||
result.push(shouldNegate ? -value : value); | ||
// reset | ||
value = shift = 0; | ||
var integer = charToInteger[c]; | ||
if (integer === undefined) { | ||
throw new Error('Invalid character (' + String.fromCharCode(c) + ')'); | ||
} | ||
var hasContinuationBit = integer & 32; | ||
integer &= 31; | ||
value += integer << shift; | ||
if (hasContinuationBit) { | ||
shift += 5; | ||
} | ||
else { | ||
var shouldNegate = value & 1; | ||
value >>= 1; | ||
var num = shouldNegate ? -value : value; | ||
if (j == 0) { | ||
generatedCodeColumn += num; | ||
segment.push(generatedCodeColumn); | ||
} | ||
else if (j === 1) { | ||
sourceFileIndex += num; | ||
segment.push(sourceFileIndex); | ||
} | ||
else if (j === 2) { | ||
sourceCodeLine += num; | ||
segment.push(sourceCodeLine); | ||
} | ||
else if (j === 3) { | ||
sourceCodeColumn += num; | ||
segment.push(sourceCodeColumn); | ||
} | ||
else if (j === 4) { | ||
nameIndex += num; | ||
segment.push(nameIndex); | ||
} | ||
j++; | ||
value = shift = 0; // reset | ||
} | ||
} | ||
} | ||
return result; | ||
if (segment.length) | ||
line.push(segment); | ||
decoded.push(line); | ||
return decoded; | ||
} | ||
function encode(value) { | ||
var result; | ||
if (typeof value === 'number') { | ||
result = encodeInteger(value); | ||
} | ||
else { | ||
result = ''; | ||
for (var i = 0; i < value.length; i += 1) { | ||
result += encodeInteger(value[i]); | ||
function encode(decoded) { | ||
var sourceFileIndex = 0; // second field | ||
var sourceCodeLine = 0; // third field | ||
var sourceCodeColumn = 0; // fourth field | ||
var nameIndex = 0; // fifth field | ||
var mappings = ''; | ||
for (var i = 0; i < decoded.length; i++) { | ||
var line = decoded[i]; | ||
if (i > 0) | ||
mappings += ';'; | ||
if (line.length === 0) | ||
continue; | ||
var generatedCodeColumn = 0; // first field | ||
var lineMappings = []; | ||
for (var _i = 0, line_1 = line; _i < line_1.length; _i++) { | ||
var segment = line_1[_i]; | ||
var segmentMappings = encodeInteger(segment[0] - generatedCodeColumn); | ||
generatedCodeColumn = segment[0]; | ||
if (segment.length > 1) { | ||
segmentMappings += | ||
encodeInteger(segment[1] - sourceFileIndex) + | ||
encodeInteger(segment[2] - sourceCodeLine) + | ||
encodeInteger(segment[3] - sourceCodeColumn); | ||
sourceFileIndex = segment[1]; | ||
sourceCodeLine = segment[2]; | ||
sourceCodeColumn = segment[3]; | ||
} | ||
if (segment.length === 5) { | ||
segmentMappings += encodeInteger(segment[4] - nameIndex); | ||
nameIndex = segment[4]; | ||
} | ||
lineMappings.push(segmentMappings); | ||
} | ||
mappings += lineMappings.join(','); | ||
} | ||
return result; | ||
return mappings; | ||
} | ||
function encodeInteger(num) { | ||
var result = ''; | ||
if (num < 0) { | ||
num = (-num << 1) | 1; | ||
} | ||
else { | ||
num <<= 1; | ||
} | ||
num = num < 0 ? (-num << 1) | 1 : num << 1; | ||
do { | ||
@@ -66,3 +130,3 @@ var clamped = num & 31; | ||
} | ||
result += integerToChar[clamped]; | ||
result += chars[clamped]; | ||
} while (num > 0); | ||
@@ -72,95 +136,5 @@ return result; | ||
function decodeSegments(encodedSegments) { | ||
var i = encodedSegments.length; | ||
var segments = new Array(i); | ||
while (i--) | ||
segments[i] = decode(encodedSegments[i]); | ||
return segments; | ||
} | ||
function decode$1(mappings) { | ||
var sourceFileIndex = 0; // second field | ||
var sourceCodeLine = 0; // third field | ||
var sourceCodeColumn = 0; // fourth field | ||
var nameIndex = 0; // fifth field | ||
var lines = mappings.split(';'); | ||
var numLines = lines.length; | ||
var decoded = new Array(numLines); | ||
var i; | ||
var j; | ||
var line; | ||
var generatedCodeColumn; | ||
var decodedLine; | ||
var segments; | ||
var segment; | ||
var result; | ||
for (i = 0; i < numLines; i += 1) { | ||
line = lines[i]; | ||
generatedCodeColumn = 0; // first field - reset each time | ||
decodedLine = []; | ||
segments = decodeSegments(line.split(',')); | ||
for (j = 0; j < segments.length; j += 1) { | ||
segment = segments[j]; | ||
if (!segment.length) { | ||
break; | ||
} | ||
generatedCodeColumn += segment[0]; | ||
result = [generatedCodeColumn]; | ||
decodedLine.push(result); | ||
if (segment.length === 1) { | ||
// only one field! | ||
continue; | ||
} | ||
sourceFileIndex += segment[1]; | ||
sourceCodeLine += segment[2]; | ||
sourceCodeColumn += segment[3]; | ||
result.push(sourceFileIndex, sourceCodeLine, sourceCodeColumn); | ||
if (segment.length === 5) { | ||
nameIndex += segment[4]; | ||
result.push(nameIndex); | ||
} | ||
} | ||
decoded[i] = decodedLine; | ||
} | ||
return decoded; | ||
} | ||
function encode$1(decoded) { | ||
var offsets = { | ||
generatedCodeColumn: 0, | ||
sourceFileIndex: 0, | ||
sourceCodeLine: 0, | ||
sourceCodeColumn: 0, | ||
nameIndex: 0 // fifth field | ||
}; | ||
return decoded.map(function (line) { | ||
offsets.generatedCodeColumn = 0; // first field - reset each time | ||
return line.map(encodeSegment).join(','); | ||
}).join(';'); | ||
function encodeSegment(segment) { | ||
if (!segment.length) { | ||
return ''; | ||
} | ||
var result = new Array(segment.length); | ||
result[0] = segment[0] - offsets.generatedCodeColumn; | ||
offsets.generatedCodeColumn = segment[0]; | ||
if (segment.length === 1) { | ||
// only one field! | ||
return encode(result); | ||
} | ||
result[1] = segment[1] - offsets.sourceFileIndex; | ||
result[2] = segment[2] - offsets.sourceCodeLine; | ||
result[3] = segment[3] - offsets.sourceCodeColumn; | ||
offsets.sourceFileIndex = segment[1]; | ||
offsets.sourceCodeLine = segment[2]; | ||
offsets.sourceCodeColumn = segment[3]; | ||
if (segment.length === 5) { | ||
result[4] = segment[4] - offsets.nameIndex; | ||
offsets.nameIndex = segment[4]; | ||
} | ||
return encode(result); | ||
} | ||
} | ||
exports.decode = decode; | ||
exports.encode = encode; | ||
exports.decode = decode$1; | ||
exports.encode = encode$1; | ||
Object.defineProperty(exports, '__esModule', { value: true }); | ||
@@ -167,0 +141,0 @@ |
{ | ||
"name": "sourcemap-codec", | ||
"version": "1.4.0", | ||
"version": "1.4.1", | ||
"description": "Encode/decode sourcemap mappings", | ||
@@ -33,5 +33,3 @@ "main": "dist/sourcemap-codec.umd.js", | ||
"homepage": "https://github.com/Rich-Harris/sourcemap-codec", | ||
"dependencies": { | ||
"vlq": "^1.0.0" | ||
}, | ||
"dependencies": {}, | ||
"devDependencies": { | ||
@@ -38,0 +36,0 @@ "codecov.io": "^0.1.6", |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
0
14596
269
- Removedvlq@^1.0.0
- Removedvlq@1.0.1(transitive)