@temporalio/common
Version:
Common library for code that's used across the Client, Worker, and/or Workflow
73 lines (72 loc) • 3.25 kB
TypeScript
import { ProtoFailure } from '../failure';
import { PayloadConverter } from './payload-converter';
/**
* Cuts out the framework part of a stack trace, leaving only user code entries
*/
export declare function cutoffStackTrace(stack?: string): string;
/**
* A `FailureConverter` is responsible for converting from proto `Failure` instances to JS `Errors` and back.
*
* We recommended using the {@link DefaultFailureConverter} instead of customizing the default implementation in order
* to maintain cross-language Failure serialization compatibility.
*/
export interface FailureConverter {
/**
* Converts a caught error to a Failure proto message.
*/
errorToFailure(err: unknown, payloadConverter: PayloadConverter): ProtoFailure;
/**
* Converts a Failure proto message to a JS Error object.
*
* The returned error must be an instance of `TemporalFailure`.
*/
failureToError(err: ProtoFailure, payloadConverter: PayloadConverter): Error;
}
/**
* The "shape" of the attributes set as the {@link ProtoFailure.encodedAttributes} payload in case
* {@link DefaultEncodedFailureAttributes.encodeCommonAttributes} is set to `true`.
*/
export interface DefaultEncodedFailureAttributes {
message: string;
stack_trace: string;
}
/**
* Options for the {@link DefaultFailureConverter} constructor.
*/
export interface DefaultFailureConverterOptions {
/**
* Whether to encode error messages and stack traces (for encrypting these attributes use a {@link PayloadCodec}).
*/
encodeCommonAttributes: boolean;
}
/**
* Default, cross-language-compatible Failure converter.
*
* By default, it will leave error messages and stack traces as plain text. In order to encrypt them, set
* `encodeCommonAttributes` to `true` in the constructor options and use a {@link PayloadCodec} that can encrypt /
* decrypt Payloads in your {@link WorkerOptions.dataConverter | Worker} and
* {@link ClientOptions.dataConverter | Client options}.
*/
export declare class DefaultFailureConverter implements FailureConverter {
readonly options: DefaultFailureConverterOptions;
constructor(options?: Partial<DefaultFailureConverterOptions>);
/**
* Converts a Failure proto message to a JS Error object.
*
* Does not set common properties, that is done in {@link failureToError}.
*/
failureToErrorInner(failure: ProtoFailure, payloadConverter: PayloadConverter): Error;
failureToError(failure: ProtoFailure, payloadConverter: PayloadConverter): Error;
errorToFailure(err: unknown, payloadConverter: PayloadConverter): ProtoFailure;
errorToFailureInner(err: unknown, payloadConverter: PayloadConverter): ProtoFailure;
/**
* Converts a Failure proto message to a JS Error object if defined or returns undefined.
*/
optionalFailureToOptionalError(failure: ProtoFailure | undefined | null, payloadConverter: PayloadConverter): Error | undefined;
/**
* Converts an error to a Failure proto message if defined or returns undefined
*/
optionalErrorToOptionalFailure(err: unknown, payloadConverter: PayloadConverter): ProtoFailure | undefined;
private nexusFailureToTemporalFailure;
private temporalFailureToNexusFailure;
}