export interface ShopifyErrorLike { status: number; message: Error; cause?: Error; } export const isObject = (object: unknown): object is Record => { 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(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); }