1*a5fb1ba8SEvan Bacon"use strict";
226ad19fcSEvan Bacon/**
326ad19fcSEvan Bacon * Copyright (c) 650 Industries.
426ad19fcSEvan Bacon * Copyright (c) Meta Platforms, Inc. and affiliates.
526ad19fcSEvan Bacon *
626ad19fcSEvan Bacon * This source code is licensed under the MIT license found in the
726ad19fcSEvan Bacon * LICENSE file in the root directory of this source tree.
826ad19fcSEvan Bacon */
9*a5fb1ba8SEvan Baconvar __importDefault = (this && this.__importDefault) || function (mod) {
10*a5fb1ba8SEvan Bacon    return (mod && mod.__esModule) ? mod : { "default": mod };
11*a5fb1ba8SEvan Bacon};
12*a5fb1ba8SEvan BaconObject.defineProperty(exports, "__esModule", { value: true });
13*a5fb1ba8SEvan Baconexports.symbolicate = exports.deleteStack = void 0;
14*a5fb1ba8SEvan Baconconst symbolicateStackTrace_1 = __importDefault(require("../modules/symbolicateStackTrace"));
1526ad19fcSEvan Baconconst cache = new Map();
1626ad19fcSEvan Bacon/**
1726ad19fcSEvan Bacon * Sanitize because sometimes, `symbolicateStackTrace` gives us invalid values.
1826ad19fcSEvan Bacon */
1926ad19fcSEvan Baconconst sanitize = ({ stack: maybeStack, codeFrame, }) => {
2026ad19fcSEvan Bacon    if (!Array.isArray(maybeStack)) {
2126ad19fcSEvan Bacon        throw new Error('Expected stack to be an array.');
2226ad19fcSEvan Bacon    }
2326ad19fcSEvan Bacon    const stack = [];
2426ad19fcSEvan Bacon    for (const maybeFrame of maybeStack) {
2526ad19fcSEvan Bacon        let collapse = false;
2626ad19fcSEvan Bacon        if ('collapse' in maybeFrame) {
2726ad19fcSEvan Bacon            if (typeof maybeFrame.collapse !== 'boolean') {
2826ad19fcSEvan Bacon                throw new Error('Expected stack frame `collapse` to be a boolean.');
2926ad19fcSEvan Bacon            }
3026ad19fcSEvan Bacon            collapse = maybeFrame.collapse;
3126ad19fcSEvan Bacon        }
3226ad19fcSEvan Bacon        stack.push({
3326ad19fcSEvan Bacon            arguments: [],
3426ad19fcSEvan Bacon            column: maybeFrame.column,
3526ad19fcSEvan Bacon            file: maybeFrame.file,
3626ad19fcSEvan Bacon            lineNumber: maybeFrame.lineNumber,
3726ad19fcSEvan Bacon            methodName: maybeFrame.methodName,
3826ad19fcSEvan Bacon            collapse,
3926ad19fcSEvan Bacon        });
4026ad19fcSEvan Bacon    }
4126ad19fcSEvan Bacon    return { stack, codeFrame };
4226ad19fcSEvan Bacon};
43*a5fb1ba8SEvan Baconfunction deleteStack(stack) {
4426ad19fcSEvan Bacon    cache.delete(stack);
4526ad19fcSEvan Bacon}
46*a5fb1ba8SEvan Baconexports.deleteStack = deleteStack;
47*a5fb1ba8SEvan Baconfunction symbolicate(stack) {
4826ad19fcSEvan Bacon    let promise = cache.get(stack);
4926ad19fcSEvan Bacon    if (promise == null) {
50*a5fb1ba8SEvan Bacon        promise = (0, symbolicateStackTrace_1.default)(stack).then(sanitize);
5126ad19fcSEvan Bacon        cache.set(stack, promise);
5226ad19fcSEvan Bacon    }
5326ad19fcSEvan Bacon    return promise;
5426ad19fcSEvan Bacon}
55*a5fb1ba8SEvan Baconexports.symbolicate = symbolicate;
5626ad19fcSEvan Bacon//# sourceMappingURL=LogBoxSymbolication.js.map