Spaces:
Paused
Paused
| ; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.getUserCodeFrame = getUserCodeFrame; | |
| // We try to load node dependencies | |
| let chalk = null; | |
| let readFileSync = null; | |
| let codeFrameColumns = null; | |
| try { | |
| const nodeRequire = module && module.require; | |
| readFileSync = nodeRequire.call(module, 'fs').readFileSync; | |
| codeFrameColumns = nodeRequire.call(module, '@babel/code-frame').codeFrameColumns; | |
| chalk = nodeRequire.call(module, 'chalk'); | |
| } catch { | |
| // We're in a browser environment | |
| } | |
| // frame has the form "at myMethod (location/to/my/file.js:10:2)" | |
| function getCodeFrame(frame) { | |
| const locationStart = frame.indexOf('(') + 1; | |
| const locationEnd = frame.indexOf(')'); | |
| const frameLocation = frame.slice(locationStart, locationEnd); | |
| const frameLocationElements = frameLocation.split(':'); | |
| const [filename, line, column] = [frameLocationElements[0], parseInt(frameLocationElements[1], 10), parseInt(frameLocationElements[2], 10)]; | |
| let rawFileContents = ''; | |
| try { | |
| rawFileContents = readFileSync(filename, 'utf-8'); | |
| } catch { | |
| return ''; | |
| } | |
| const codeFrame = codeFrameColumns(rawFileContents, { | |
| start: { | |
| line, | |
| column | |
| } | |
| }, { | |
| highlightCode: true, | |
| linesBelow: 0 | |
| }); | |
| return `${chalk.dim(frameLocation)}\n${codeFrame}\n`; | |
| } | |
| function getUserCodeFrame() { | |
| // If we couldn't load dependencies, we can't generate the user trace | |
| /* istanbul ignore next */ | |
| if (!readFileSync || !codeFrameColumns) { | |
| return ''; | |
| } | |
| const err = new Error(); | |
| const firstClientCodeFrame = err.stack.split('\n').slice(1) // Remove first line which has the form "Error: TypeError" | |
| .find(frame => !frame.includes('node_modules/')); // Ignore frames from 3rd party libraries | |
| return getCodeFrame(firstClientCodeFrame); | |
| } |