Files
triggerdotdev--trigger.dev/packages/core/src/utils.ts
Eric Allam 13f750a18b v4: implement onCancel callbacks (#2022)
* v4: implement onCancel callbacks

* chat example

* Add changeset

* A few improvements
2025-05-03 20:50:11 +01:00

41 lines
818 B
TypeScript

export function assertExhaustive(x: never): never {
throw new Error("Unexpected object: " + x);
}
export async function tryCatch<T, E = Error>(
promise: Promise<T> | undefined
): Promise<[null, T] | [E, null]> {
if (!promise) {
return [null, undefined as T];
}
try {
const data = await promise;
return [null, data];
} catch (error) {
return [error as E, null];
}
}
export type Deferred<T> = {
promise: Promise<T>;
resolve: (value: T) => void;
reject: (reason?: any) => void;
};
export function promiseWithResolvers<T>(): Deferred<T> {
let resolve!: (value: T) => void;
let reject!: (reason?: any) => void;
const promise = new Promise<T>((_resolve, _reject) => {
resolve = _resolve;
reject = _reject;
});
return {
promise,
resolve,
reject,
};
}