4
0
forked from crowetic/commerce
commerce/lib/type-guards.ts
Michael Novotny 528ad9b8ce
Adds better error messages and environment variable fault tolerance (#1172)
* Adds better error messages and environment variable fault tolerance

* No hidden undefined
2023-08-11 20:19:49 -05:00

28 lines
726 B
TypeScript

export interface ShopifyErrorLike {
status: number;
message: Error;
cause?: Error;
}
export const isObject = (object: unknown): object is Record<string, unknown> => {
return typeof object === 'object' && object !== null && !Array.isArray(object);
};
export const isShopifyError = (error: unknown): error is ShopifyErrorLike => {
if (!isObject(error)) return false;
if (error instanceof Error) return true;
return findError(error);
};
function findError<T extends object>(error: T): boolean {
if (Object.prototype.toString.call(error) === '[object Error]') {
return true;
}
const prototype = Object.getPrototypeOf(error) as T | null;
return prototype === null ? false : findError(prototype);
}