Skip to content

Commit 276aee4

Browse files
v3.7.4
1 parent 47855e0 commit 276aee4

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+2384
-1084
lines changed

changelogs/3.7.4.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Bug fixes and performance improvements

dev/resolveStackTrace.js renamed to dev/resolveStackTrace.mjs

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
const fs = require('fs');
2-
const { SourceMapConsumer } = require('source-map');
3-
const path = require('path');
1+
import fs from 'fs';
2+
import { SourceMapConsumer } from 'source-map';
3+
import path from 'path';
4+
import { fileURLToPath } from 'url';
45

56
const USAGE_GUIDE = `This script is intended to be used manually.
67
It makes JavaScript errors from user logs more readable by converting the stacktrace references from minified file addresses to source code addresses.
@@ -20,29 +21,31 @@ Examples:
2021
2122
npm run resolve-stacktrace "Error: Test\n at t.BitBuilder.writeVarUint (https://mytonwallet.local/941.c17ba5754ec7f174fec2.js:2:25840)\n at t.BitBuilder.writeCoins (https://mytonwallet.local/941.c17ba5754ec7f174fec2.js:2:26382)"`;
2223

24+
const __filename = fileURLToPath(import.meta.url);
25+
const __dirname = path.dirname(__filename);
2326
const DEFAULT_MAP_DIRECTORY = path.join(__dirname, '..', 'dist');
2427

2528
const { mapDirectory, stackTrace } = resolveArguments();
26-
const resolvedStackTrace = resolveStackTrace(mapDirectory, stackTrace);
29+
const resolvedStackTrace = await resolveStackTrace(mapDirectory, stackTrace);
2730
process.stdout.write(`${resolvedStackTrace}\n`);
2831
process.exit(0);
2932

3033
function resolveArguments() {
31-
const arguments = process.argv.slice(2);
32-
switch (arguments.length) {
34+
const args = process.argv.slice(2);
35+
switch (args.length) {
3336
case 0:
3437
process.stderr.write(`Too few arguments!\n\n${USAGE_GUIDE}\n`)
3538
process.exit(1);
3639
break;
3740
case 1:
3841
return {
3942
mapDirectory: DEFAULT_MAP_DIRECTORY,
40-
stackTrace: parseStackTrace(arguments[0]),
43+
stackTrace: parseStackTrace(args[0]),
4144
};
4245
case 2:
4346
return {
44-
mapDirectory: arguments[0],
45-
stackTrace: parseStackTrace(arguments[1]),
47+
mapDirectory: args[0],
48+
stackTrace: parseStackTrace(args[1]),
4649
};
4750
default:
4851
process.stderr.write(`Too many arguments!\n\n${USAGE_GUIDE}\n`)
@@ -90,22 +93,22 @@ function parsePlainStackTrace(inputText) {
9093
return null;
9194
}
9295

93-
function resolveStackTrace(mapDirectory, stackTrace) {
96+
async function resolveStackTrace(mapDirectory, stackTrace) {
9497
const consumerCache = {};
9598

96-
return stackTrace
99+
return (await Promise.all(stackTrace
97100
.split('\n')
98-
.map(line => resolveStackTraceLine(mapDirectory, consumerCache, line))
99-
.join('\n');
101+
.map(line => resolveStackTraceLine(mapDirectory, consumerCache, line)))
102+
).join('\n');
100103
}
101104

102-
function resolveStackTraceLine(mapDirectory, consumerCache, line) {
105+
async function resolveStackTraceLine(mapDirectory, consumerCache, line) {
103106
const parsedLine = parseStackTraceLine(line);
104107
if (!parsedLine) {
105108
return line;
106109
}
107110

108-
const newTrace = resolveTrace(
111+
const newTrace = await resolveTrace(
109112
mapDirectory,
110113
consumerCache,
111114
parsedLine.fileUrl,
@@ -138,7 +141,7 @@ function parseStackTraceLine(line) {
138141
return { lineIndent, fileUrl, lineNumber: Number(lineNumber), columnNumber: Number(columnNumber) };
139142
}
140143

141-
function resolveTrace(mapDirectory, consumerCache, fileUrl, lineNumber, columnNumber) {
144+
async function resolveTrace(mapDirectory, consumerCache, fileUrl, lineNumber, columnNumber) {
142145
const mapFile = findSourceMapFile(mapDirectory, fileUrl);
143146
if (!mapFile) {
144147
return null;
@@ -150,7 +153,8 @@ function resolveTrace(mapDirectory, consumerCache, fileUrl, lineNumber, columnNu
150153
consumerCache[mapFile] = consumer;
151154
}
152155

153-
const sourcePosition = consumerCache[mapFile].originalPositionFor({ line: lineNumber, column: columnNumber });
156+
const cache = await consumerCache[mapFile];
157+
const sourcePosition = cache.originalPositionFor({ line: lineNumber, column: columnNumber });
154158
if (sourcePosition.line === null) {
155159
return null;
156160
}

0 commit comments

Comments
 (0)