Socket
Socket
Sign inDemoInstall

sorcery

Package Overview
Dependencies
17
Maintainers
1
Versions
36
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.3.0 to 0.3.2

CHANGELOG.md

319

dist/sorcery.js

@@ -39,7 +39,7 @@ 'use strict';

function getRelativePath(from, to) {
var separator = /[\/\\]/;function getRelativePath(from, to) {
var fromParts, toParts, i;
fromParts = from.split("/");
toParts = to.split("/");
fromParts = from.split(separator);
toParts = to.split(separator);

@@ -62,69 +62,88 @@ fromParts.pop(); // get dirname

function encodeMappings(decoded) {
var mappings,
sourceFileIndex = 0,
// second field
sourceCodeLine = 0,
// third field
sourceCodeColumn = 0,
// fourth field
nameIndex = 0; // fifth field
var offsets = {
generatedCodeColumn: 0,
sourceFileIndex: 0, // second field
sourceCodeLine: 0, // third field
sourceCodeColumn: 0, // fourth field
nameIndex: 0 // fifth field
};
mappings = decoded.map(function (line) {
var generatedCodeColumn = 0; // first field - reset each time
return decoded.map(function (line) {
offsets.generatedCodeColumn = 0; // first field - reset each time
return line.map(encodeSegment).join(",");
}).join(";");
return line.map(function (segment) {
var result;
function encodeSegment(segment) {
if (!segment.length) {
return segment;
}
if (!segment.length) {
return segment;
}
var result = new Array(segment.length);
result = [segment[0] - generatedCodeColumn];
generatedCodeColumn = segment[0];
result[0] = segment[0] - offsets.generatedCodeColumn;
offsets.generatedCodeColumn = segment[0];
if (segment.length === 1) {
// only one field!
return result;
}
if (segment.length === 1) {
// only one field!
return result;
}
result[1] = segment[1] - sourceFileIndex;
result[2] = segment[2] - sourceCodeLine;
result[3] = segment[3] - sourceCodeColumn;
result[1] = segment[1] - offsets.sourceFileIndex;
result[2] = segment[2] - offsets.sourceCodeLine;
result[3] = segment[3] - offsets.sourceCodeColumn;
sourceFileIndex = segment[1];
sourceCodeLine = segment[2];
sourceCodeColumn = segment[3];
offsets.sourceFileIndex = segment[1];
offsets.sourceCodeLine = segment[2];
offsets.sourceCodeColumn = segment[3];
if (segment.length === 5) {
result[4] = segment[4] - nameIndex;
nameIndex = segment[4];
}
if (segment.length === 5) {
result[4] = segment[4] - offsets.nameIndex;
offsets.nameIndex = segment[4];
}
return vlq.encode(result);
}).join(",");
}).join(";");
return mappings;
return vlq.encode(result);
}
}
function decodeMappings(mappings) {
var decoded,
sourceFileIndex = 0,
// second field
sourceCodeLine = 0,
// third field
sourceCodeColumn = 0,
// fourth field
nameIndex = 0; // fifth field
function decodeSegments(encodedSegments) {
var i = encodedSegments.length;
var segments = new Array(i);
decoded = mappings.split(";").map(function (line) {
var generatedCodeColumn = 0,
// first field - reset each time
while (i--) {
segments[i] = vlq.decode(encodedSegments[i]);
}
return segments;
}function decodeMappings(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 = undefined,
j = undefined,
line = undefined,
generatedCodeColumn = undefined,
decodedLine = undefined,
segments = undefined,
segment = undefined,
result = undefined;
for (i = 0; i < numLines; i += 1) {
line = lines[i];
generatedCodeColumn = 0; // first field - reset each time
decodedLine = [];
line.split(",").map(vlq.decode).forEach(function (segment) {
var result;
segments = decodeSegments(line.split(","));
for (j = 0; j < segments.length; j += 1) {
segment = segments[j];
if (!segment.length) {
return;
break;
}

@@ -139,3 +158,3 @@

// only one field!
return;
break;
}

@@ -153,6 +172,6 @@

}
});
}
return decodedLine;
});
decoded[i] = decodedLine;
}

@@ -224,4 +243,2 @@ return decoded;

var trace___slicedToArray = function (arr, i) { if (Array.isArray(arr)) { return arr; } else { var _arr = []; for (var _iterator = arr[Symbol.iterator](), _step; !(_step = _iterator.next()).done;) { _arr.push(_step.value); if (i && _arr.length === i) break; } return _arr; } };
/**

@@ -245,78 +262,55 @@ * Traces a segment back to its origin

function trace(node, lineIndex, columnIndex, name) {
var _arguments = arguments,
_this = this,
_shouldContinue,
_result;
do {
_shouldContinue = false;
_result = (function (node, lineIndex, columnIndex, name) {
var segments;
var segments;
// If this node doesn't have a source map, we have
// to assume it is the original source
if (node.isOriginalSource) {
return {
source: node.file,
line: lineIndex + 1,
column: columnIndex || 0,
name: name
};
}
// If this node doesn't have a source map, we have
// to assume it is the original source
if (node.isOriginalSource) {
return {
source: node.file,
line: lineIndex + 1,
column: columnIndex || 0,
name: name
};
}
// Otherwise, we need to figure out what this position in
// the intermediate file corresponds to in *its* source
segments = node.mappings[lineIndex];
// Otherwise, we need to figure out what this position in
// the intermediate file corresponds to in *its* source
segments = node.mappings[lineIndex];
if (!segments || segments.length === 0) {
return null;
}
if (!segments || segments.length === 0) {
return null;
}
if (columnIndex != null) {
var len = segments.length;
var i = undefined;
if (columnIndex != null) {
var len = segments.length;
var i = undefined;
for (i = 0; i < len; i += 1) {
var _segments$i = trace___slicedToArray(segments[i], 5);
for (i = 0; i < len; i += 1) {
var generatedCodeColumn = segments[i][0];
var _generatedCodeColumn = _segments$i[0];
var _sourceFileIndex = _segments$i[1];
var _sourceCodeLine = _segments$i[2];
var _sourceCodeColumn = _segments$i[3];
var _nameIndex = _segments$i[4];
if (generatedCodeColumn > columnIndex) {
break;
}
if (generatedCodeColumn === columnIndex) {
var _sourceFileIndex = segments[i][1];
var _sourceCodeLine = segments[i][2];
var sourceCodeColumn = segments[i][3];
var _nameIndex = segments[i][4];
if (_generatedCodeColumn === columnIndex) {
var _parent = node.sources[_sourceFileIndex];
_arguments = [_parent, _sourceCodeLine, _sourceCodeColumn, node.map.names[_nameIndex] || name];
_this = undefined;
return _shouldContinue = true;
}
if (_generatedCodeColumn > columnIndex) {
break;
}
}
var _parent = node.sources[_sourceFileIndex];
return trace(_parent, _sourceCodeLine, sourceCodeColumn, node.map.names[_nameIndex] || name);
}
}
}
// fall back to a line mapping
var _segments$0 = trace___slicedToArray(segments[0], 5);
// fall back to a line mapping
var sourceFileIndex = segments[0][1];
var sourceCodeLine = segments[0][2];
var nameIndex = segments[0][4];
var generatedCodeColumn = _segments$0[0];
var sourceFileIndex = _segments$0[1];
var sourceCodeLine = _segments$0[2];
var sourceCodeColumn = _segments$0[3];
var nameIndex = _segments$0[4];
var parent = node.sources[sourceFileIndex];
_arguments = [parent, sourceCodeLine, null, node.map.names[nameIndex] || name];
_this = undefined;
return _shouldContinue = true;
}).apply(_this, _arguments);
} while (_shouldContinue);
return _result;
var parent = node.sources[sourceFileIndex];
return trace(parent, sourceCodeLine, null, node.map.names[nameIndex] || name);
}
var Node___slicedToArray = function (arr, i) { if (Array.isArray(arr)) { return arr; } else { var _arr = []; for (var _iterator = arr[Symbol.iterator](), _step; !(_step = _iterator.next()).done;) { _arr.push(_step.value); if (i && _arr.length === i) break; } return _arr; } };
var Node__Promise = sander.Promise;

@@ -410,54 +404,59 @@

var options = arguments[0] === undefined ? {} : arguments[0];
var resolved,
allNames = [],
allSources = [],
includeContent;
var allNames = [],
allSources = [];
includeContent = options.includeContent !== false;
var applySegment = function (segment, result) {
var traced = trace__default(_this.sources[segment[1]], // source
segment[2], // source code line
segment[3], // source code column
_this.map.names[segment[4]]);
resolved = this.mappings.map(function (line) {
var result = [];
if (!traced) {
return;
}
line.forEach(function (segment) {
var _segment = Node___slicedToArray(segment, 4);
var sourceIndex = allSources.indexOf(traced.source);
if (! ~sourceIndex) {
sourceIndex = allSources.length;
allSources.push(traced.source);
}
var generatedCodeColumn = _segment[0];
var sourceFileIndex = _segment[1];
var sourceCodeLine = _segment[2];
var sourceCodeColumn = _segment[3];
var source;var traced;var newSegment;var sourceIndex;var nameIndex;
var newSegment = [segment[0], // generated code column
sourceIndex, traced.line - 1, traced.column];
source = _this.sources[sourceFileIndex];
traced = trace__default(source, sourceCodeLine, sourceCodeColumn, _this.map.names[segment[4]]);
var nameIndex;
if (!traced) {
return;
if (traced.name) {
nameIndex = allNames.indexOf(traced.name);
if (! ~nameIndex) {
nameIndex = allNames.length;
allNames.push(traced.name);
}
sourceIndex = allSources.indexOf(traced.source);
if (! ~sourceIndex) {
sourceIndex = allSources.length;
allSources.push(traced.source);
}
newSegment.push(nameIndex);
}
newSegment = [generatedCodeColumn, sourceIndex, traced.line - 1, traced.column];
result.push(newSegment);
};
if (traced.name) {
nameIndex = allNames.indexOf(traced.name);
if (! ~nameIndex) {
nameIndex = allNames.length;
allNames.push(traced.name);
}
var i = this.mappings.length;
var resolved = new Array(i);
newSegment.push(nameIndex);
}
var j = undefined,
line = undefined,
result = undefined;
result.push(newSegment);
});
while (i--) {
line = this.mappings[i];
resolved[i] = result = [];
return result;
});
for (j = 0; j < line.length; j += 1) {
applySegment(line[j], result);
}
}
var includeContent = options.includeContent !== false;
return new SourceMap({
file: this.file.split("/").pop(),
file: path.basename(this.file),
sources: allSources.map(function (source) {

@@ -464,0 +463,0 @@ return getRelativePath(options.base || _this.file, source);

{
"name": "sorcery",
"description": "Resolve a chain of sourcemaps back to the original source",
"version": "0.3.0",
"version": "0.3.2",
"author": "Rich Harris",

@@ -13,3 +13,3 @@ "repository": "https://github.com/Rich-Harris/sorcery",

"sander": "^0.1.6",
"vlq": "^0.1.0"
"vlq": "^0.2.1"
},

@@ -20,3 +20,8 @@ "devDependencies": {

"gobble-6to5": "^3.0.0",
"gobble-browserify": "^0.2.0",
"gobble-coffee": "^0.2.1",
"gobble-esperanto-bundle": "^0.1.7",
"gobble-uglifyjs": "^0.2.0",
"mocha": "^2.1.0",
"promise-map-series": "^0.2.1",
"source-map": "^0.1.40",

@@ -29,3 +34,3 @@ "uglify-js": "^2.4.15"

"scripts": {
"build": "mkdir -p .tmp; rm .tmp/*; set -e; npm test; rm dist/*; cp .tmp/* dist",
"build": "sh ./scripts/build.sh",
"test": "mocha",

@@ -32,0 +37,0 @@ "prepublish": "npm run build"

@@ -95,54 +95,63 @@ import path from 'path';

apply ( options = {} ) {
var resolved,
allNames = [],
allSources = [],
includeContent;
var allNames = [],
allSources = [];
includeContent = options.includeContent !== false;
var applySegment = ( segment, result ) => {
var traced = trace(
this.sources[ segment[1] ], // source
segment[2], // source code line
segment[3], // source code column
this.map.names[ segment[4] ]
);
resolved = this.mappings.map( line => {
var result = [];
if ( !traced ) {
return;
}
line.forEach( segment => {
var [
generatedCodeColumn,
sourceFileIndex,
sourceCodeLine,
sourceCodeColumn
] = segment,
source, traced, newSegment, sourceIndex, nameIndex;
var sourceIndex = allSources.indexOf( traced.source );
if ( !~sourceIndex ) {
sourceIndex = allSources.length;
allSources.push( traced.source );
}
source = this.sources[ sourceFileIndex ];
traced = trace( source, sourceCodeLine, sourceCodeColumn, this.map.names[ segment[4] ] );
var newSegment = [
segment[0], // generated code column
sourceIndex,
traced.line - 1,
traced.column
];
if ( !traced ) {
return;
}
var nameIndex;
sourceIndex = allSources.indexOf( traced.source );
if ( !~sourceIndex ) {
sourceIndex = allSources.length;
allSources.push( traced.source );
if ( traced.name ) {
nameIndex = allNames.indexOf( traced.name );
if ( !~nameIndex ) {
nameIndex = allNames.length;
allNames.push( traced.name );
}
newSegment = [ generatedCodeColumn, sourceIndex, traced.line - 1, traced.column ];
newSegment.push( nameIndex );
}
if ( traced.name ) {
nameIndex = allNames.indexOf( traced.name );
if ( !~nameIndex ) {
nameIndex = allNames.length;
allNames.push( traced.name );
}
result.push( newSegment );
};
newSegment.push( nameIndex );
}
let i = this.mappings.length;
let resolved = new Array( i );
result.push( newSegment );
});
let j, line, result;
return result;
});
while ( i-- ) {
line = this.mappings[i];
resolved[i] = result = [];
for ( j = 0; j < line.length; j += 1 ) {
applySegment( line[j], result );
}
}
let includeContent = options.includeContent !== false;
return new SourceMap({
file: this.file.split( '/' ).pop(),
file: path.basename( this.file ),
sources: allSources.map( ( source ) => {

@@ -221,2 +230,2 @@ return getRelativePath( options.base || this.file, source );

});
}
}
import * as vlq from 'vlq';
function decodeSegments ( encodedSegments ) {
let i = encodedSegments.length;
let segments = new Array( i);
while ( i-- ) {
segments[i] = vlq.decode( encodedSegments[i] );
}
return segments;
}
export default function decodeMappings ( mappings ) {
var decoded,
sourceFileIndex = 0, // second field
sourceCodeLine = 0, // third field
sourceCodeColumn = 0, // fourth field
nameIndex = 0; // fifth field
let sourceFileIndex = 0; // second field
let sourceCodeLine = 0; // third field
let sourceCodeColumn = 0; // fourth field
let nameIndex = 0; // fifth field
decoded = mappings.split( ';' ).map( function ( line ) {
var generatedCodeColumn = 0, // first field - reset each time
decodedLine = [];
let lines = mappings.split( ';' );
let numLines = lines.length;
let decoded = new Array( numLines );
line.split( ',' ).map( vlq.decode ).forEach( function ( segment ) {
var result;
let i, j, line, generatedCodeColumn, decodedLine, segments, segment, 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 ) {
return;
break;
}

@@ -28,3 +48,3 @@

// only one field!
return;
break;
}

@@ -42,8 +62,8 @@

}
});
}
return decodedLine;
});
decoded[i] = decodedLine;
}
return decoded;
}
}
import * as vlq from 'vlq';
export default function encodeMappings ( decoded ) {
var mappings,
sourceFileIndex = 0, // second field
sourceCodeLine = 0, // third field
sourceCodeColumn = 0, // fourth field
nameIndex = 0; // fifth field
var offsets = {
generatedCodeColumn: 0,
sourceFileIndex: 0, // second field
sourceCodeLine: 0, // third field
sourceCodeColumn: 0, // fourth field
nameIndex: 0 // fifth field
};
mappings = decoded.map( function ( line ) {
var generatedCodeColumn = 0; // first field - reset each time
return decoded.map( function ( line ) {
offsets.generatedCodeColumn = 0; // first field - reset each time
return line.map( encodeSegment ).join( ',' );
}).join( ';' );
return line.map( function ( segment ) {
var result;
function encodeSegment ( segment ) {
if ( !segment.length ) {
return segment;
}
if ( !segment.length ) {
return segment;
}
let result = new Array( segment.length );
result = [ segment[0] - generatedCodeColumn ];
generatedCodeColumn = segment[0];
result[0] = segment[0] - offsets.generatedCodeColumn;
offsets.generatedCodeColumn = segment[0];
if ( segment.length === 1 ) {
// only one field!
return result;
}
if ( segment.length === 1 ) {
// only one field!
return result;
}
result[1] = segment[1] - sourceFileIndex;
result[2] = segment[2] - sourceCodeLine;
result[3] = segment[3] - sourceCodeColumn;
result[1] = segment[1] - offsets.sourceFileIndex;
result[2] = segment[2] - offsets.sourceCodeLine;
result[3] = segment[3] - offsets.sourceCodeColumn;
sourceFileIndex = segment[1];
sourceCodeLine = segment[2];
sourceCodeColumn = segment[3];
offsets.sourceFileIndex = segment[1];
offsets.sourceCodeLine = segment[2];
offsets.sourceCodeColumn = segment[3];
if ( segment.length === 5 ) {
result[4] = segment[4] - nameIndex;
nameIndex = segment[4];
}
if ( segment.length === 5 ) {
result[4] = segment[4] - offsets.nameIndex;
offsets.nameIndex = segment[4];
}
return vlq.encode( result );
}).join( ',' );
}).join( ';' );
return mappings;
}
return vlq.encode( result );
}
}

@@ -0,6 +1,8 @@

var separator = /[\/\\]/;
export default function getRelativePath ( from, to ) {
var fromParts, toParts, i;
fromParts = from.split( '/' );
toParts = to.split( '/' );
fromParts = from.split( separator );
toParts = to.split( separator );

@@ -20,2 +22,2 @@ fromParts.pop(); // get dirname

return fromParts.concat( toParts ).join( '/' );
}
}

@@ -44,18 +44,17 @@ /**

for ( i = 0; i < len; i += 1 ) {
let [
generatedCodeColumn,
sourceFileIndex,
sourceCodeLine,
sourceCodeColumn,
nameIndex
] = segments[i];
let generatedCodeColumn = segments[i][0];
if ( generatedCodeColumn > columnIndex ) {
break;
}
if ( generatedCodeColumn === columnIndex ) {
let sourceFileIndex = segments[i][1];
let sourceCodeLine = segments[i][2];
let sourceCodeColumn = segments[i][3];
let nameIndex = segments[i][4];
let parent = node.sources[ sourceFileIndex ];
return trace( parent, sourceCodeLine, sourceCodeColumn, node.map.names[ nameIndex ] || name );
}
if ( generatedCodeColumn > columnIndex ) {
break;
}
}

@@ -65,12 +64,8 @@ }

// fall back to a line mapping
let [
generatedCodeColumn,
sourceFileIndex,
sourceCodeLine,
sourceCodeColumn,
nameIndex
] = segments[0];
let sourceFileIndex = segments[0][1];
let sourceCodeLine = segments[0][2];
let nameIndex = segments[0][4];
let parent = node.sources[ sourceFileIndex ];
return trace( parent, sourceCodeLine, null, node.map.names[ nameIndex ] || name );
}
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc