diff options
Diffstat (limited to 'node_modules/@jest/source-map/build/getCallsite.js')
-rw-r--r-- | node_modules/@jest/source-map/build/getCallsite.js | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/node_modules/@jest/source-map/build/getCallsite.js b/node_modules/@jest/source-map/build/getCallsite.js new file mode 100644 index 0000000..35c6102 --- /dev/null +++ b/node_modules/@jest/source-map/build/getCallsite.js @@ -0,0 +1,108 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); +exports.default = getCallsite; + +function _callsites() { + const data = _interopRequireDefault(require('callsites')); + + _callsites = function () { + return data; + }; + + return data; +} + +function _gracefulFs() { + const data = require('graceful-fs'); + + _gracefulFs = function () { + return data; + }; + + return data; +} + +function _sourceMap() { + const data = require('source-map'); + + _sourceMap = function () { + return data; + }; + + return data; +} + +function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : {default: obj}; +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +// Copied from https://github.com/rexxars/sourcemap-decorate-callsites/blob/5b9735a156964973a75dc62fd2c7f0c1975458e8/lib/index.js#L113-L158 +const addSourceMapConsumer = (callsite, consumer) => { + const getLineNumber = callsite.getLineNumber; + const getColumnNumber = callsite.getColumnNumber; + let position = null; + + function getPosition() { + if (!position) { + position = consumer.originalPositionFor({ + column: getColumnNumber.call(callsite) || -1, + line: getLineNumber.call(callsite) || -1 + }); + } + + return position; + } + + Object.defineProperties(callsite, { + getColumnNumber: { + value() { + return getPosition().column || getColumnNumber.call(callsite); + }, + + writable: false + }, + getLineNumber: { + value() { + return getPosition().line || getLineNumber.call(callsite); + }, + + writable: false + } + }); +}; + +function getCallsite(level, sourceMaps) { + const levelAfterThisCall = level + 1; + const stack = (0, _callsites().default)()[levelAfterThisCall]; + const sourceMapFileName = + sourceMaps === null || sourceMaps === void 0 + ? void 0 + : sourceMaps.get(stack.getFileName() || ''); + + if (sourceMapFileName) { + try { + const sourceMap = (0, _gracefulFs().readFileSync)( + sourceMapFileName, + 'utf8' + ); // @ts-expect-error: Not allowed to pass string + + addSourceMapConsumer( + stack, + new (_sourceMap().SourceMapConsumer)(sourceMap) + ); + } catch { + // ignore + } + } + + return stack; +} |