🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

error-position

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

error-position - npm Package Compare versions

Comparing version
1.0.1
to
1.0.2
+68
-56
index.js

@@ -1,5 +0,18 @@

const { SourceMapConsumer } = require('source-map')
const path = require('path')
const fs = require('fs')
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const source_map_1 = require("source-map");
const path_1 = __importDefault(require("path"));
const fs_1 = __importDefault(require("fs"));
/**

@@ -10,15 +23,16 @@ * 输入err:错误堆栈字符串

*/
async function errorPosition(err, sourceMap) {
// 解析错误堆栈字符串
let errStack = parseError(err);
// 根据错误堆栈和sourceMap文件找到实际位置
let result = await sourceMapDeal(sourceMap, errStack);
return result;
function errorPosition(err, sourceMap) {
return __awaiter(this, void 0, void 0, function* () {
// 解析错误堆栈字符串
let errStack = parseError(err);
// 根据错误堆栈和sourceMap文件找到实际位置
let result = yield sourceMapDeal(sourceMap, errStack);
return result;
});
}
/**
* 解析错误堆栈字符串
* @param err 错误堆栈字符串
* @param err 错误堆栈字符串
*/
function parseError(err) {
function parseError(err) {
let arr = err.split('\n');

@@ -31,6 +45,7 @@ let stack = [];

message = val;
} else if (/^(at )/.test(val)) {
let res = val.match(/[(]{0,1}(\S+):(\d+):(\d+)/);
}
else if (/^(at )/.test(val)) {
let res = val.match(/[(]{0,1}(\S+):[\s]*(\d+)?:(\d+)?/);
let res1 = val.match(/^at\s+(\S+)\s+\(/);
if (res) {
if (res) {
let url = res[1] ? res[1] : '';

@@ -44,3 +59,3 @@ let line = res[2] ? res[2] : 0;

col
})
});
}

@@ -52,5 +67,4 @@ }

stack: stack
}
};
}
/**

@@ -61,9 +75,10 @@ * 获取souceMap的consumer

*/
async function getSourceMapConsumer(sourceMapPath, filename) {
let mapPath = path.join(sourceMapPath, filename + '.map');
let rawSourceMap = fs.readFileSync(mapPath).toString();
let consumer = await new SourceMapConsumer(rawSourceMap);
return consumer;
function getSourceMapConsumer(sourceMapPath, filename) {
return __awaiter(this, void 0, void 0, function* () {
let mapPath = path_1.default.join(sourceMapPath, filename + '.map');
let rawSourceMap = fs_1.default.readFileSync(mapPath).toString();
let consumer = yield new source_map_1.SourceMapConsumer(rawSourceMap);
return consumer;
});
}
/**

@@ -74,21 +89,22 @@ * 处理souceMpa文件

*/
async function sourceMapDeal(sourceMapPath, errStack) {
let stack = errStack.stack;
let consumerObj = {};
let result = [];
for (let i = 0; i < stack.length; i++) {
let value = stack[i];
let url = value.url;
let res = url.match(/[\/\(\s\\]([A-Za-z_-]+.js)$/)
let filename = res && res[1] ? res[1] : false;
if (filename && !consumerObj[filename]) {
let consumer = await getSourceMapConsumer(sourceMapPath, filename);
consumerObj[filename] = consumer;
function sourceMapDeal(sourceMapPath, errStack) {
return __awaiter(this, void 0, void 0, function* () {
let stack = errStack.stack;
let consumerObj = {};
let result = [];
for (let i = 0; i < stack.length; i++) {
let value = stack[i];
let url = value.url;
let res = url.match(/[\/\(\s\\]([A-Za-z_-]+.js)$/);
let filename = res && res[1] ? res[1] : false;
if (filename && !consumerObj[filename]) {
let consumer = yield getSourceMapConsumer(sourceMapPath, filename);
consumerObj[filename] = consumer;
}
let obj = getSourceCode(consumerObj[filename] || '', value);
result.push(obj);
}
let obj = getSourceCode(consumerObj[filename] || '', value);
result.push(obj);
}
return result;
return result;
});
}
/**

@@ -99,4 +115,4 @@ * 获取源码所在位置、所在行代码等信息

*/
function getSourceCode(consumer, stack) {
if (!consumer) {
function getSourceCode(consumer, stack) {
if (!consumer) {
return {

@@ -108,4 +124,4 @@ stack: stack,

let sm = consumer.originalPositionFor({
line: parseInt(stack.line), // 压缩后的行数
column: parseInt(stack.col) // 压缩后的列数
line: parseInt(stack.line),
column: parseInt(stack.col) // 压缩后的列数
});

@@ -120,16 +136,12 @@ // 压缩前的所有源文件列表

const rawLines = smContent.split(/\r?\n/g);
return Object.assign(Object.assign({ code: rawLines[sm.line - 1] }, sm), { stack: stack, ret: true });
}
else {
return {
code: rawLines[sm.line - 1],
...sm,
stack: stack,
ret: true
};
} else {
return {
stack: stack,
ret: false
};
}
}
}
module.exports = errorPosition;
exports.default = errorPosition;
//# sourceMappingURL=index.js.map
{
"name": "error-position",
"version": "1.0.1",
"version": "1.0.2",
"author": "jingjing",

@@ -15,3 +15,5 @@ "description": "根据js常见错误堆栈字符串和sourceMap文件路径定位错误位置",

"scripts": {
"dev": "node index.js"
"dev": "node index.js",
"compile": "tsc -p ./",
"watch": "tsc -watch -p ./"
},

@@ -27,3 +29,5 @@ "repository": {

"homepage": "https://github.com/jingjinghahah/errorPosition#readme",
"devDependencies": {},
"devDependencies": {
"@types/node": "^13.11.1"
},
"dependencies": {

@@ -30,0 +34,0 @@ "source-map": "^0.7.3"