Repository URL to install this package:
|
Version:
0.7.0 ▾
|
// (c) Copyright 2023 Supertenant Ltd. - all rights reserved.
// See LICENSE file in project root for license terms.
"use strict";function jsonPrepareStackTrace(error,structuredStackTrace){return jsonifyStackTrace(structuredStackTrace)}function attachJsonStackTrace(error,structuredStackTrace){return error._jsonStackTrace=jsonifyStackTrace(structuredStackTrace),defaultPrepareStackTrace(error,structuredStackTrace)}function jsonifyStackTrace(structuredStackTrace){var len=structuredStackTrace.length,result=new Array(len);for(let i=0;i<len;i++){var callSite=structuredStackTrace[i];result[i]={m:exports.buildFunctionIdentifier(callSite),c:callSite.getFileName()||void 0,n:callSite.getLineNumber()||void 0}}return result}function defaultPrepareStackTrace(error,frames){return frames.push(error),frames.reverse().join("\n at ")}exports.captureStackTrace=function captureStackTrace(length,referenceFunction,drop=0){if(length<=0)return[];referenceFunction=referenceFunction||captureStackTrace;var originalLimit=Error.stackTraceLimit,originalPrepareStackTrace=Error.prepareStackTrace,length=(Error.stackTraceLimit=length+drop,Error.prepareStackTrace=jsonPrepareStackTrace,{}),referenceFunction=(Error.captureStackTrace(length,referenceFunction),null!=length.stack&&0!==length.stack.length||Error.captureStackTrace(length),length.stack);return Error.stackTraceLimit=originalLimit,Error.prepareStackTrace=originalPrepareStackTrace,0<drop&&referenceFunction.splice(0,drop),referenceFunction},exports.getStackTraceAsJson=function(length,error){var originalLimit,originalPrepareStackTrace;return length<=0?[]:(originalLimit=Error.stackTraceLimit,originalPrepareStackTrace=Error.prepareStackTrace,Error.stackTraceLimit=length,Error.prepareStackTrace=attachJsonStackTrace,error.stack,Error.stackTraceLimit=originalLimit,Error.prepareStackTrace=originalPrepareStackTrace,length=error._jsonStackTrace,delete error._jsonStackTrace,length)},exports.buildFunctionIdentifier=function(callSite){if(callSite.isConstructor())return"new "+callSite.getFunctionName();var name,methodName=callSite.getMethodName(),functionName=callSite.getFunctionName(),callSite=callSite.getTypeName();if(!methodName&&!functionName)return"<anonymous>";if(functionName&&!methodName||!functionName&&methodName)return name=functionName||methodName,callSite?callSite+"."+name:name;if(functionName===methodName)return callSite?callSite+"."+functionName:functionName;let label="";return callSite&&(label+=callSite+"."),label=label+functionName+` [as ${methodName}]`};