Optional causeReadonly clientOptional stackStatic stackThe Error.stackTraceLimit property specifies the number of stack frames
collected by a stack trace (whether generated by new Error().stack or
Error.captureStackTrace(obj)).
The default value is 10 but may be set to any valid JavaScript number. Changes
will affect any stack trace captured after the value has been changed.
If set to a non-number value, or set to a negative number, stack traces will not capture any frames.
Static captureCreates a .stack property on targetObject, which when accessed returns
a string representing the location in the code at which
Error.captureStackTrace() was called.
const myObject = {};
Error.captureStackTrace(myObject);
myObject.stack; // Similar to `new Error().stack`
The first line of the trace will be prefixed with
${myObject.name}: ${myObject.message}.
The optional constructorOpt argument accepts a function. If given, all frames
above constructorOpt, including constructorOpt, will be omitted from the
generated stack trace.
The constructorOpt argument is useful for hiding implementation
details of error generation from the user. For instance:
function a() {
b();
}
function b() {
c();
}
function c() {
// Create an error without stack trace to avoid calculating the stack trace twice.
const { stackTraceLimit } = Error;
Error.stackTraceLimit = 0;
const error = new Error();
Error.stackTraceLimit = stackTraceLimit;
// Capture the stack trace above function b
Error.captureStackTrace(error, b); // Neither function c, nor b is included in the stack trace
throw error;
}
a();
Optional constructorOpt: FunctionStatic prepare
Errors thrown by getPluginApiToken.
A plugin checks which error happened with
instanceof:For
instanceofto work, the thrown error and the class the plugin compares against must be the same class object. These classes are defined here in the SDK core package — the same module the plugin importsgetPluginApiTokenfrom — so that condition holds.The catch: the host integration (
@urth/metatell-sdk-internal) is bundled separately and has its own copy of these classes. If it threw an error across the boundary, that error would belong to its copy, ande instanceof NotAuthenticatedErrorwould befalsein the plugin even for the "same" error. (This is the well-known problem thatinstanceofdoes not work across separate bundles.)To avoid it, the host side never throws across the boundary. It returns a plain value describing the failure as a string
code, and core translates thatcodeinto the matching class below before throwing (seeerrorForCodein./index.ts). The error a plugin catches is therefore always an instance of the class it imported.