mirror of
https://github.com/vercel/commerce.git
synced 2025-03-14 06:32:32 +00:00
* Adds better error messages and environment variable fault tolerance * No hidden undefined
28 lines
726 B
TypeScript
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);
|
|
}
|