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