UNPKG

brick-module

Version:

Better React Native native module development

49 lines (48 loc) 1.77 kB
//#region src/BrickError.ts /** * BrickError - Type-safe class for custom errors from native modules. * Matches the structure of iOS/Android BrickError. */ var BrickError = class BrickError extends Error { /** Error code (same as error.name) */ code; /** Additional properties (e.g., amount, currency) */ userInfo; /** Name of the module where the error occurred */ moduleName; constructor(message, code, userInfo = {}, moduleName) { super(message); this.name = code; this.code = code; this.userInfo = userInfo; this.moduleName = moduleName; } /** * Type guard to check if an error object is a BrickError. * @param error - The error object to check * @returns true if the error is a BrickError */ static isBrickError(error) { return error instanceof Error && typeof error.code === "string" && typeof error.userInfo === "object" && error.userInfo !== null; } /** * Converts a general error object to a BrickError. * @param error - The error object to convert * @param moduleName - Name of the module where the error occurred * @returns A BrickError instance */ static from(error, moduleName) { if (error instanceof BrickError) { if (moduleName && !error.moduleName) return new BrickError(error.message, error.code, error.userInfo, moduleName); return error; } if (BrickError.isBrickError(error)) return new BrickError(error.message, error.code, error.userInfo, moduleName || error.moduleName); if (error instanceof Error) { const anyError = error; return new BrickError(error.message, anyError.code || anyError.name || "UNKNOWN_ERROR", anyError.userInfo || {}, moduleName || anyError.moduleName); } return new BrickError(String(error), "UNKNOWN_ERROR", {}, moduleName); } }; //#endregion export { BrickError };