@webpieces/core-util 0.2.93 → 0.2.95

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/README.md CHANGED
@@ -21,7 +21,7 @@ import { toError } from '@webpieces/core-util';
21
21
 
22
22
  try {
23
23
  await riskyOperation();
24
- } catch (err: any) {
24
+ } catch (err: unknown) {
25
25
  const error = toError(err);
26
26
  console.error('Operation failed:', error.message);
27
27
  throw error;
@@ -49,7 +49,7 @@ WebPieces projects enforce this pattern via ESLint rule `@webpieces/catch-error-
49
49
  ```typescript
50
50
  try {
51
51
  operation();
52
- } catch (err: any) {
52
+ } catch (err: unknown) {
53
53
  const error = toError(err);
54
54
  // Handle error...
55
55
  }
@@ -59,7 +59,7 @@ try {
59
59
  ```typescript
60
60
  try {
61
61
  operation();
62
- } catch (err: any) {
62
+ } catch (err: unknown) {
63
63
  //const error = toError(err);
64
64
  }
65
65
  ```
@@ -71,11 +71,11 @@ For nested catches, use numbered suffixes:
71
71
  ```typescript
72
72
  try {
73
73
  operation1();
74
- } catch (err: any) {
74
+ } catch (err: unknown) {
75
75
  const error = toError(err);
76
76
  try {
77
77
  rollback();
78
- } catch (err2: any) {
78
+ } catch (err2: unknown) {
79
79
  const error2 = toError(err2);
80
80
  console.error('Rollback failed:', error2);
81
81
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webpieces/core-util",
3
- "version": "0.2.93",
3
+ "version": "0.2.95",
4
4
  "description": "Utility functions for WebPieces - works in browser and Node.js",
5
5
  "type": "commonjs",
6
6
  "main": "./src/index.js",
@@ -18,7 +18,7 @@
18
18
  * ```typescript
19
19
  * try {
20
20
  * riskyOperation();
21
- * } catch (err: any) {
21
+ * } catch (err: unknown) {
22
22
  * const error = toError(err);
23
23
  * // Handle error...
24
24
  * }
@@ -28,12 +28,12 @@
28
28
  * ```typescript
29
29
  * try {
30
30
  * riskyOperation();
31
- * } catch (err: any) {
31
+ * } catch (err: unknown) {
32
32
  * //const error = toError(err);
33
33
  * }
34
34
  * ```
35
35
  *
36
- * @param err - Unknown error from catch block (typed as any)
36
+ * @param err - Unknown error from catch block (typed as unknown)
37
37
  * @returns Standardized Error instance
38
38
  *
39
39
  * @example
@@ -41,7 +41,7 @@
41
41
  * // Standard usage
42
42
  * try {
43
43
  * await riskyOperation();
44
- * } catch (err: any) {
44
+ * } catch (err: unknown) {
45
45
  * const error = toError(err);
46
46
  * console.error('Operation failed:', error.message);
47
47
  * throw error;
@@ -53,15 +53,15 @@
53
53
  * // Nested catch blocks
54
54
  * try {
55
55
  * await operation1();
56
- * } catch (err: any) {
56
+ * } catch (err: unknown) {
57
57
  * const error = toError(err);
58
58
  * try {
59
59
  * await rollback();
60
- * } catch (err2: any) {
60
+ * } catch (err2: unknown) {
61
61
  * const error2 = toError(err2);
62
62
  * console.error('Rollback failed:', error2);
63
63
  * }
64
64
  * }
65
65
  * ```
66
66
  */
67
- export declare function toError(err: any): Error;
67
+ export declare function toError(err: unknown): Error;
@@ -21,7 +21,7 @@ exports.toError = toError;
21
21
  * ```typescript
22
22
  * try {
23
23
  * riskyOperation();
24
- * } catch (err: any) {
24
+ * } catch (err: unknown) {
25
25
  * const error = toError(err);
26
26
  * // Handle error...
27
27
  * }
@@ -31,12 +31,12 @@ exports.toError = toError;
31
31
  * ```typescript
32
32
  * try {
33
33
  * riskyOperation();
34
- * } catch (err: any) {
34
+ * } catch (err: unknown) {
35
35
  * //const error = toError(err);
36
36
  * }
37
37
  * ```
38
38
  *
39
- * @param err - Unknown error from catch block (typed as any)
39
+ * @param err - Unknown error from catch block (typed as unknown)
40
40
  * @returns Standardized Error instance
41
41
  *
42
42
  * @example
@@ -44,7 +44,7 @@ exports.toError = toError;
44
44
  * // Standard usage
45
45
  * try {
46
46
  * await riskyOperation();
47
- * } catch (err: any) {
47
+ * } catch (err: unknown) {
48
48
  * const error = toError(err);
49
49
  * console.error('Operation failed:', error.message);
50
50
  * throw error;
@@ -56,17 +56,18 @@ exports.toError = toError;
56
56
  * // Nested catch blocks
57
57
  * try {
58
58
  * await operation1();
59
- * } catch (err: any) {
59
+ * } catch (err: unknown) {
60
60
  * const error = toError(err);
61
61
  * try {
62
62
  * await rollback();
63
- * } catch (err2: any) {
63
+ * } catch (err2: unknown) {
64
64
  * const error2 = toError(err2);
65
65
  * console.error('Rollback failed:', error2);
66
66
  * }
67
67
  * }
68
68
  * ```
69
69
  */
70
+ // webpieces-disable no-any-unknown -- toError intentionally accepts unknown to safely convert any thrown value to Error
70
71
  function toError(err) {
71
72
  // If already an Error instance, return it directly
72
73
  if (err instanceof Error) {
@@ -1 +1 @@
1
- {"version":3,"file":"errorUtils.js","sourceRoot":"","sources":["../../../../../../packages/core/core-util/src/lib/errorUtils.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AA6DH,0BAyCC;AApGD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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,mIAAmI;QACnI,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,6BAA6B;YAC7B,+EAA+E;YAC/E,gFAAgF;YAChF,KAAK,GAAG,CAAC,CAAC,+BAA+B;YACzC,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 // eslint-disable-next-line @webpieces/no-unmanaged-exceptions -- toError utility must handle circular references without recursion\n try {\n const message = JSON.stringify(err);\n return new Error(`Non-Error object thrown: ${message}`);\n } catch (err: any) {\n //const error = toError(err);\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 void err; // Mark as intentionally unused\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"]}
1
+ {"version":3,"file":"errorUtils.js","sourceRoot":"","sources":["../../../../../../packages/core/core-util/src/lib/errorUtils.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AA8DH,0BAyCC;AArGD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,wHAAwH;AACxH,SAAgB,OAAO,CAAC,GAAY;IAChC,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,mIAAmI;QACnI,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,GAAY,EAAE,CAAC;YACpB,6BAA6B;YAC7B,+EAA+E;YAC/E,gFAAgF;YAChF,KAAK,GAAG,CAAC,CAAC,+BAA+B;YACzC,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: unknown) {\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: unknown) {\n * //const error = toError(err);\n * }\n * ```\n *\n * @param err - Unknown error from catch block (typed as unknown)\n * @returns Standardized Error instance\n *\n * @example\n * ```typescript\n * // Standard usage\n * try {\n * await riskyOperation();\n * } catch (err: unknown) {\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: unknown) {\n * const error = toError(err);\n * try {\n * await rollback();\n * } catch (err2: unknown) {\n * const error2 = toError(err2);\n * console.error('Rollback failed:', error2);\n * }\n * }\n * ```\n */\n// webpieces-disable no-any-unknown -- toError intentionally accepts unknown to safely convert any thrown value to Error\nexport function toError(err: unknown): 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 // eslint-disable-next-line @webpieces/no-unmanaged-exceptions -- toError utility must handle circular references without recursion\n try {\n const message = JSON.stringify(err);\n return new Error(`Non-Error object thrown: ${message}`);\n } catch (err: unknown) {\n //const error = toError(err);\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 void err; // Mark as intentionally unused\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"]}