@webpieces/core-util 0.2.13 → 0.2.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errorUtils.js","sourceRoot":"","sources":["../../../../../../packages/core/core-util/src/lib/errorUtils.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AA6DH,0BAuCC;AAlGD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,SAAgB,OAAO,CAAC,GAAQ;
|
|
1
|
+
{"version":3,"file":"errorUtils.js","sourceRoot":"","sources":["../../../../../../packages/core/core-util/src/lib/errorUtils.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AA6DH,0BAuCC;AAlGD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,SAAgB,OAAO,CAAC,GAAQ;IAC5B,mDAAmD;IACnD,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC;IACf,CAAC;IAED,kEAAkE;IAClE,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACjC,IAAI,SAAS,IAAI,GAAG,EAAE,CAAC;YACnB,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YAE7C,oCAAoC;YACpC,IAAI,OAAO,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAClD,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;YAC5B,CAAC;YAED,mCAAmC;YACnC,IAAI,MAAM,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAChD,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YAC1B,CAAC;YAED,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,gDAAgD;QAChD,IAAI,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACpC,OAAO,IAAI,KAAK,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAChB,0DAA0D;YAC1D,+EAA+E;YAC/E,gFAAgF;YAChF,OAAO,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACtE,CAAC;IACL,CAAC;IAED,4DAA4D;IAC5D,MAAM,OAAO,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACvE,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC","sourcesContent":["/**\n * Error handling utilities for standardized error processing\n * All catch blocks should use toError() to ensure consistent error handling\n *\n * This pattern is enforced by the @webpieces/eslint-plugin-webpieces rule:\n * `catch-error-pattern`\n */\n\n/**\n * Converts unknown error types to Error instances\n *\n * This function standardizes all caught errors into Error objects, ensuring:\n * - Type safety (always returns Error)\n * - Consistent error structure\n * - Proper stack traces\n * - Integration with monitoring/logging systems\n *\n * **WebPieces Pattern**: All catch blocks must follow this pattern:\n * ```typescript\n * try {\n * riskyOperation();\n * } catch (err: any) {\n * const error = toError(err);\n * // Handle error...\n * }\n * ```\n *\n * Alternative (explicitly ignored errors):\n * ```typescript\n * try {\n * riskyOperation();\n * } catch (err: any) {\n * //const error = toError(err);\n * }\n * ```\n *\n * @param err - Unknown error from catch block (typed as any)\n * @returns Standardized Error instance\n *\n * @example\n * ```typescript\n * // Standard usage\n * try {\n * await riskyOperation();\n * } catch (err: any) {\n * const error = toError(err);\n * console.error('Operation failed:', error.message);\n * throw error;\n * }\n * ```\n *\n * @example\n * ```typescript\n * // Nested catch blocks\n * try {\n * await operation1();\n * } catch (err: any) {\n * const error = toError(err);\n * try {\n * await rollback();\n * } catch (err2: any) {\n * const error2 = toError(err2);\n * console.error('Rollback failed:', error2);\n * }\n * }\n * ```\n */\nexport function toError(err: any): Error {\n // If already an Error instance, return it directly\n if (err instanceof Error) {\n return err;\n }\n\n // If it's an object with a message property, create Error from it\n if (err && typeof err === 'object') {\n if ('message' in err) {\n const error = new Error(String(err.message));\n\n // Preserve stack trace if available\n if ('stack' in err && typeof err.stack === 'string') {\n error.stack = err.stack;\n }\n\n // Preserve error name if available\n if ('name' in err && typeof err.name === 'string') {\n error.name = err.name;\n }\n\n return error;\n }\n\n // For objects without message, try to stringify\n try {\n const message = JSON.stringify(err);\n return new Error(`Non-Error object thrown: ${message}`);\n } catch (err: any) {\n // eslint-disable-next-line @webpieces/catch-error-pattern\n // NOTE: Intentionally not calling toError() here to prevent infinite recursion\n // in error recovery path. This is the ONLY acceptable exception to the pattern.\n return new Error('Non-Error object thrown (unable to stringify)');\n }\n }\n\n // For primitives (string, number, boolean, null, undefined)\n const message = err == null ? 'Null or undefined thrown' : String(err);\n return new Error(message);\n}\n"]}
|