@visulima/pail 4.0.0-alpha.9 → 4.0.1

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.
Files changed (145) hide show
  1. package/CHANGELOG.md +519 -0
  2. package/LICENSE.md +270 -166
  3. package/README.md +53 -24
  4. package/dist/error.d.ts +95 -96
  5. package/dist/error.js +5 -76
  6. package/dist/index.browser.d.ts +568 -47
  7. package/dist/index.browser.js +19 -1499
  8. package/dist/index.server.d.ts +749 -65
  9. package/dist/index.server.js +32 -3179
  10. package/dist/middleware/elysia.d.ts +66 -63
  11. package/dist/middleware/elysia.js +1 -70
  12. package/dist/middleware/express.d.ts +74 -71
  13. package/dist/middleware/express.js +1 -29
  14. package/dist/middleware/fastify.d.ts +70 -67
  15. package/dist/middleware/fastify.js +1 -46
  16. package/dist/middleware/hono.d.ts +75 -72
  17. package/dist/middleware/hono.js +1 -33
  18. package/dist/middleware/next/handler.d.ts +102 -34
  19. package/dist/middleware/next/handler.js +1 -53
  20. package/dist/middleware/sveltekit.d.ts +101 -98
  21. package/dist/middleware/sveltekit.js +1 -43
  22. package/dist/object-tree.d.ts +67 -70
  23. package/dist/object-tree.js +2 -89
  24. package/dist/packem_shared/AbstractJsonReporter-Bp_JCrMQ.js +1 -0
  25. package/dist/packem_shared/AbstractJsonReporter-w_bGGiD-.js +1 -0
  26. package/dist/packem_shared/JsonReporter-Sd_lJGS-.js +2 -0
  27. package/dist/packem_shared/JsonReporter-bmem9lcg.js +1 -0
  28. package/dist/packem_shared/PailError-CbU1Ogfa.js +5 -0
  29. package/dist/packem_shared/PrettyReporter-CcDdPQSt.js +44 -0
  30. package/dist/packem_shared/PrettyReporter-DsHfKOU7.js +5 -0
  31. package/dist/packem_shared/abstract-json-reporter.d-wfESoEa-.d.ts +62 -0
  32. package/dist/packem_shared/abstract-pretty-reporter-DrLBJ6ds.js +57 -0
  33. package/dist/packem_shared/addKnownErrorConstructor-C1OJTj2D-0FlJMfXz.js +25 -0
  34. package/dist/packem_shared/constants-DKfCaSUR.js +1 -0
  35. package/dist/packem_shared/constants-ep2nsfdy.js +1 -0
  36. package/dist/packem_shared/create-middleware-logger.d-B-JmQ1Sl.d.ts +47 -0
  37. package/dist/packem_shared/headers-DH0H2s8W.js +1 -0
  38. package/dist/packem_shared/index-Q1764hvO.js +1 -0
  39. package/dist/packem_shared/index.d-T71KjNAr.d.ts +16 -0
  40. package/dist/packem_shared/pailMiddleware-B5DJoBYl.js +1 -0
  41. package/dist/packem_shared/serializeError-C-NFvZ8_-D0CA_Qlx.js +1 -0
  42. package/dist/packem_shared/storage-DaXAlpiO.js +1 -0
  43. package/dist/packem_shared/types.d-Cz9S7jZh.d.ts +201 -0
  44. package/dist/packem_shared/types.d-bWnqHJKL.d.ts +211 -0
  45. package/dist/packem_shared/types.d-xxE3FOD3.d.ts +229 -0
  46. package/dist/packem_shared/useLogger-DB34CuU5.js +1 -0
  47. package/dist/packem_shared/wide-event.d-D3ATYpoK.d.ts +717 -0
  48. package/dist/packem_shared/write-console-log-based-on-level-BqjxV016.js +1 -0
  49. package/dist/packem_shared/write-stream-C7jxLxIT.js +1 -0
  50. package/dist/processor/caller/caller-processor.d.ts +50 -47
  51. package/dist/processor/caller/caller-processor.js +1 -59
  52. package/dist/processor/environment-processor.d.ts +114 -113
  53. package/dist/processor/environment-processor.js +1 -78
  54. package/dist/processor/message-formatter-processor.d.ts +59 -49
  55. package/dist/processor/message-formatter-processor.js +1 -713
  56. package/dist/processor/opentelemetry-processor.d.ts +70 -66
  57. package/dist/processor/opentelemetry-processor.js +1 -52
  58. package/dist/processor/redact-processor.d.ts +99 -41
  59. package/dist/processor/redact-processor.js +1 -30
  60. package/dist/processor/sampling-processor.d.ts +103 -101
  61. package/dist/processor/sampling-processor.js +1 -59
  62. package/dist/reporter/file/json-file-reporter.d.ts +109 -42
  63. package/dist/reporter/file/json-file-reporter.js +2 -136
  64. package/dist/reporter/http/abstract-http-reporter.d.ts +256 -211
  65. package/dist/reporter/http/abstract-http-reporter.js +2 -435
  66. package/dist/reporter/http/http-reporter.d.ts +41 -36
  67. package/dist/reporter/http/http-reporter.edge-light.d.ts +487 -39
  68. package/dist/reporter/http/http-reporter.edge-light.js +2 -733
  69. package/dist/reporter/http/http-reporter.js +1 -13
  70. package/dist/reporter/json/index.browser.d.ts +98 -3
  71. package/dist/reporter/json/index.browser.js +1 -2
  72. package/dist/reporter/json/index.d.ts +53 -3
  73. package/dist/reporter/json/index.js +1 -2
  74. package/dist/reporter/pretty/index.browser.d.ts +105 -2
  75. package/dist/reporter/pretty/index.browser.js +1 -1
  76. package/dist/reporter/pretty/index.d.ts +270 -2
  77. package/dist/reporter/pretty/index.js +1 -1
  78. package/dist/reporter/simple/simple-reporter.server.d.ts +215 -18
  79. package/dist/reporter/simple/simple-reporter.server.js +8 -182
  80. package/dist/wide-event.d.ts +6 -300
  81. package/dist/wide-event.js +1 -281
  82. package/package.json +43 -58
  83. package/dist/constants.d.ts +0 -37
  84. package/dist/interactive/index.d.ts +0 -2
  85. package/dist/interactive/index.js +0 -2
  86. package/dist/interactive/interactive-manager.d.ts +0 -108
  87. package/dist/interactive/interactive-stream-hook.d.ts +0 -68
  88. package/dist/middleware/next/middleware.d.ts +0 -59
  89. package/dist/middleware/next/storage.d.ts +0 -14
  90. package/dist/middleware/shared/create-middleware-logger.d.ts +0 -82
  91. package/dist/middleware/shared/headers.d.ts +0 -14
  92. package/dist/middleware/shared/routes.d.ts +0 -30
  93. package/dist/middleware/shared/storage.d.ts +0 -29
  94. package/dist/packem_shared/AbstractJsonReporter-CGKHS8_M.js +0 -286
  95. package/dist/packem_shared/AbstractJsonReporter-DDjDkciI.js +0 -286
  96. package/dist/packem_shared/InteractiveManager-Cd6A14ZK.js +0 -172
  97. package/dist/packem_shared/InteractiveStreamHook-ePIURL_U.js +0 -133
  98. package/dist/packem_shared/JsonReporter-B3XX8GHN.js +0 -58
  99. package/dist/packem_shared/JsonReporter-p_BXg6Sj.js +0 -28
  100. package/dist/packem_shared/PrettyReporter-BYL3NrdA.js +0 -214
  101. package/dist/packem_shared/PrettyReporter-CvBn-hxP.js +0 -1459
  102. package/dist/packem_shared/Spinner-DIdVcfWq.js +0 -2183
  103. package/dist/packem_shared/abstract-pretty-reporter-jU8WL_6c.js +0 -2602
  104. package/dist/packem_shared/constants-B1RjD_ps.js +0 -99
  105. package/dist/packem_shared/constants-omsTHUWB.js +0 -119
  106. package/dist/packem_shared/createPailError-B11aRfrT.js +0 -76
  107. package/dist/packem_shared/getBarChar-BWj1UrH3.js +0 -404
  108. package/dist/packem_shared/headers-Cp4uLtr4.js +0 -123
  109. package/dist/packem_shared/index-DnkF86LQ.js +0 -658
  110. package/dist/packem_shared/index-frijFf5m.js +0 -1252
  111. package/dist/packem_shared/pailMiddleware-Ci88geIF.js +0 -24
  112. package/dist/packem_shared/storage-D0vqz8OX.js +0 -36
  113. package/dist/packem_shared/useLogger-D0rU3lcX.js +0 -33
  114. package/dist/packem_shared/write-console-log-based-on-level-DBmRYXpj.js +0 -14
  115. package/dist/packem_shared/write-stream-BG8fhcs3.js +0 -6
  116. package/dist/pail.browser.d.ts +0 -412
  117. package/dist/pail.server.d.ts +0 -233
  118. package/dist/processor/caller/get-caller-filename.d.ts +0 -23
  119. package/dist/progress-bar.d.ts +0 -136
  120. package/dist/progress-bar.js +0 -404
  121. package/dist/reporter/file/utils/rotating-file-stream.d.ts +0 -48
  122. package/dist/reporter/http/utils/compression.d.ts +0 -7
  123. package/dist/reporter/http/utils/log-size-error.d.ts +0 -30
  124. package/dist/reporter/http/utils/retry.d.ts +0 -27
  125. package/dist/reporter/json/abstract-json-reporter.d.ts +0 -61
  126. package/dist/reporter/json/json-reporter.browser.d.ts +0 -40
  127. package/dist/reporter/json/json-reporter.server.d.ts +0 -50
  128. package/dist/reporter/pretty/abstract-pretty-reporter.d.ts +0 -83
  129. package/dist/reporter/pretty/pretty-reporter.browser.d.ts +0 -36
  130. package/dist/reporter/pretty/pretty-reporter.server.d.ts +0 -70
  131. package/dist/reporter/raw/raw-reporter.browser.d.ts +0 -5
  132. package/dist/reporter/raw/raw-reporter.server.d.ts +0 -13
  133. package/dist/reporter/utils/default-inspector-config.d.ts +0 -3
  134. package/dist/reporter/utils/format-label.d.ts +0 -3
  135. package/dist/spinner.d.ts +0 -220
  136. package/dist/spinner.js +0 -2183
  137. package/dist/types.d.ts +0 -241
  138. package/dist/utils/ansi-escapes.d.ts +0 -4
  139. package/dist/utils/arrayify.d.ts +0 -2
  140. package/dist/utils/get-longest-badge.d.ts +0 -4
  141. package/dist/utils/get-longest-label.d.ts +0 -4
  142. package/dist/utils/merge-types.d.ts +0 -4
  143. package/dist/utils/stream/safe-stream-handler.d.ts +0 -21
  144. package/dist/utils/write-console-log-based-on-level.d.ts +0 -4
  145. package/dist/utils/write-stream.d.ts +0 -2
package/dist/error.d.ts CHANGED
@@ -1,104 +1,103 @@
1
1
  /**
2
- * Options for creating a PailError.
3
- *
4
- * Extends standard error properties with self-documenting fields
5
- * that provide actionable context for debugging, particularly useful
6
- * for AI-assisted log analysis.
7
- */
2
+ * Options for creating a PailError.
3
+ *
4
+ * Extends standard error properties with self-documenting fields
5
+ * that provide actionable context for debugging, particularly useful
6
+ * for AI-assisted log analysis.
7
+ */
8
8
  interface PailErrorOptions {
9
- /** The root cause of this error */
10
- cause?: unknown;
11
- /** A suggested resolution or steps to fix the issue */
12
- fix?: string;
13
- /** A link to relevant documentation or issue tracker */
14
- link?: string;
15
- /** The error message */
16
- message: string;
17
- /** HTTP status code associated with this error */
18
- status?: number;
19
- /** An explanation of what caused the failure */
20
- why?: string;
9
+ /** The root cause of this error */
10
+ cause?: unknown;
11
+ /** A suggested resolution or steps to fix the issue */
12
+ fix?: string;
13
+ /** A link to relevant documentation or issue tracker */
14
+ link?: string;
15
+ /** The error message */
16
+ message: string;
17
+ /** HTTP status code associated with this error */
18
+ status?: number;
19
+ /** An explanation of what caused the failure */
20
+ why?: string;
21
21
  }
22
22
  /**
23
- * Self-documenting error class for structured logging.
24
- *
25
- * Inspired by evlog's structured error approach, PailError extends the native
26
- * Error class with additional fields that make log entries immediately actionable:
27
- * - `why`: Explains what caused the failure
28
- * - `fix`: Suggests how to resolve the issue
29
- * - `link`: Points to relevant documentation
30
- * - `status`: HTTP status code for request-related errors
31
- *
32
- * These fields are preserved through the logging pipeline and displayed by reporters,
33
- * making it easier for both humans and AI agents to understand and resolve issues.
34
- * @example
35
- * ```typescript
36
- * import { PailError, createPailError } from "@visulima/pail/error";
37
- *
38
- * // Using the class directly
39
- * throw new PailError({
40
- * message: "Payment processing failed",
41
- * status: 402,
42
- * why: "The customer's card was declined by the payment provider",
43
- * fix: "Retry with a different payment method or contact the card issuer",
44
- * link: "https://docs.example.com/payments/declined",
45
- * });
46
- *
47
- * // Using the factory function
48
- * throw createPailError("Connection timeout");
49
- *
50
- * // With full options
51
- * throw createPailError({
52
- * message: "Database connection failed",
53
- * why: "Connection pool exhausted after 30s timeout",
54
- * fix: "Increase pool size or check for connection leaks",
55
- * });
56
- * ```
57
- */
23
+ * Self-documenting error class for structured logging.
24
+ *
25
+ * Inspired by evlog's structured error approach, PailError extends the native
26
+ * Error class with additional fields that make log entries immediately actionable:
27
+ * - `why`: Explains what caused the failure
28
+ * - `fix`: Suggests how to resolve the issue
29
+ * - `link`: Points to relevant documentation
30
+ * - `status`: HTTP status code for request-related errors
31
+ *
32
+ * These fields are preserved through the logging pipeline and displayed by reporters,
33
+ * making it easier for both humans and AI agents to understand and resolve issues.
34
+ * @example
35
+ * ```typescript
36
+ * import { PailError, createPailError } from "@visulima/pail/error";
37
+ *
38
+ * // Using the class directly
39
+ * throw new PailError({
40
+ * message: "Payment processing failed",
41
+ * status: 402,
42
+ * why: "The customer's card was declined by the payment provider",
43
+ * fix: "Retry with a different payment method or contact the card issuer",
44
+ * link: "https://docs.example.com/payments/declined",
45
+ * });
46
+ *
47
+ * // Using the factory function
48
+ * throw createPailError("Connection timeout");
49
+ *
50
+ * // With full options
51
+ * throw createPailError({
52
+ * message: "Database connection failed",
53
+ * why: "Connection pool exhausted after 30s timeout",
54
+ * fix: "Increase pool size or check for connection leaks",
55
+ * });
56
+ * ```
57
+ */
58
58
  declare class PailError extends Error {
59
- /** HTTP status code (defaults to 500) */
60
- readonly status: number;
61
- /** Explanation of what caused the failure */
62
- readonly why: string | undefined;
63
- /** Suggested resolution steps */
64
- readonly fix: string | undefined;
65
- /** Link to relevant documentation */
66
- readonly link: string | undefined;
67
- constructor(options: PailErrorOptions | string);
68
- /**
69
- * Converts the error to a JSON-serializable object.
70
- *
71
- * Includes all self-documenting fields in the output for structured logging.
72
- * @returns A plain object representation of the error
73
- */
74
- toJSON(): Record<string, unknown>;
75
- /**
76
- * Returns a formatted string representation including self-documenting fields.
77
- * @returns Formatted error string with why/fix/link context
78
- */
79
- toString(): string;
59
+ /** HTTP status code (defaults to 500) */
60
+ readonly status: number;
61
+ /** Explanation of what caused the failure */
62
+ readonly why: string | undefined;
63
+ /** Suggested resolution steps */
64
+ readonly fix: string | undefined;
65
+ /** Link to relevant documentation */
66
+ readonly link: string | undefined;
67
+ constructor(options: PailErrorOptions | string);
68
+ /**
69
+ * Converts the error to a JSON-serializable object.
70
+ *
71
+ * Includes all self-documenting fields in the output for structured logging.
72
+ * @returns A plain object representation of the error
73
+ */
74
+ toJSON(): Record<string, unknown>;
75
+ /**
76
+ * Returns a formatted string representation including self-documenting fields.
77
+ * @returns Formatted error string with why/fix/link context
78
+ */
79
+ override toString(): string;
80
80
  }
81
81
  /**
82
- * Factory function for creating PailError instances.
83
- *
84
- * A convenient shorthand for creating PailError objects. Accepts either
85
- * a string message or a full PailErrorOptions object.
86
- * @param options Error message string or PailErrorOptions object
87
- * @returns A new PailError instance
88
- * @example
89
- * ```typescript
90
- * import { createPailError } from "@visulima/pail/error";
91
- *
92
- * throw createPailError("Something went wrong");
93
- *
94
- * throw createPailError({
95
- * message: "Auth failed",
96
- * status: 401,
97
- * why: "Token expired",
98
- * fix: "Refresh the authentication token",
99
- * });
100
- * ```
101
- */
82
+ * Factory function for creating PailError instances.
83
+ *
84
+ * A convenient shorthand for creating PailError objects. Accepts either
85
+ * a string message or a full PailErrorOptions object.
86
+ * @param options Error message string or PailErrorOptions object
87
+ * @returns A new PailError instance
88
+ * @example
89
+ * ```typescript
90
+ * import { createPailError } from "@visulima/pail/error";
91
+ *
92
+ * throw createPailError("Something went wrong");
93
+ *
94
+ * throw createPailError({
95
+ * message: "Auth failed",
96
+ * status: 401,
97
+ * why: "Token expired",
98
+ * fix: "Refresh the authentication token",
99
+ * });
100
+ * ```
101
+ */
102
102
  declare const createPailError: (options: PailErrorOptions | string) => PailError;
103
- export { createPailError, PailError };
104
- export type { PailErrorOptions };
103
+ export { PailError, type PailErrorOptions, createPailError };
package/dist/error.js CHANGED
@@ -1,76 +1,5 @@
1
- class PailError extends Error {
2
- /** HTTP status code (defaults to 500) */
3
- status;
4
- /** Explanation of what caused the failure */
5
- why;
6
- /** Suggested resolution steps */
7
- fix;
8
- /** Link to relevant documentation */
9
- link;
10
- constructor(options) {
11
- const resolvedOptions = typeof options === "string" ? { message: options } : options;
12
- super(resolvedOptions.message, resolvedOptions.cause === void 0 ? void 0 : { cause: resolvedOptions.cause });
13
- this.name = "PailError";
14
- this.status = resolvedOptions.status ?? 500;
15
- this.why = resolvedOptions.why;
16
- this.fix = resolvedOptions.fix;
17
- this.link = resolvedOptions.link;
18
- }
19
- /**
20
- * Converts the error to a JSON-serializable object.
21
- *
22
- * Includes all self-documenting fields in the output for structured logging.
23
- * @returns A plain object representation of the error
24
- */
25
- toJSON() {
26
- const json = {
27
- message: this.message,
28
- name: this.name,
29
- status: this.status
30
- };
31
- if (this.why) {
32
- json.why = this.why;
33
- }
34
- if (this.fix) {
35
- json.fix = this.fix;
36
- }
37
- if (this.link) {
38
- json.link = this.link;
39
- }
40
- if (this.stack) {
41
- json.stack = this.stack;
42
- }
43
- if (this.cause !== void 0) {
44
- json.cause = this.cause instanceof Error ? { message: this.cause.message, name: this.cause.name, stack: this.cause.stack } : this.cause;
45
- }
46
- return json;
47
- }
48
- /**
49
- * Returns a formatted string representation including self-documenting fields.
50
- * @returns Formatted error string with why/fix/link context
51
- */
52
- toString() {
53
- let output = `${this.name} [${this.status}]: ${this.message}`;
54
- if (this.why) {
55
- output += `
56
- Why: ${this.why}`;
57
- }
58
- if (this.fix) {
59
- output += `
60
- Fix: ${this.fix}`;
61
- }
62
- if (this.link) {
63
- output += `
64
- Link: ${this.link}`;
65
- }
66
- if (this.cause !== void 0) {
67
- const causeMessage = this.cause instanceof Error ? this.cause.message : String(this.cause);
68
- output += `
69
- Cause: ${causeMessage}`;
70
- }
71
- return output;
72
- }
73
- }
74
- const createPailError = (options) => new PailError(options);
75
-
76
- export { PailError, createPailError };
1
+ class e extends Error{status;why;fix;link;constructor(s){const t=typeof s=="string"?{message:s}:s;super(t.message,t.cause===void 0?void 0:{cause:t.cause}),this.name="PailError",this.status=t.status??500,this.why=t.why,this.fix=t.fix,this.link=t.link}toJSON(){const s={message:this.message,name:this.name,status:this.status};return this.why&&(s.why=this.why),this.fix&&(s.fix=this.fix),this.link&&(s.link=this.link),this.stack&&(s.stack=this.stack),this.cause!==void 0&&(s.cause=this.cause instanceof Error?{message:this.cause.message,name:this.cause.name,stack:this.cause.stack}:this.cause),s}toString(){let s=`${this.name} [${String(this.status)}]: ${this.message}`;if(this.why&&(s+=`
2
+ Why: ${this.why}`),this.fix&&(s+=`
3
+ Fix: ${this.fix}`),this.link&&(s+=`
4
+ Link: ${this.link}`),this.cause!==void 0){const t=this.cause instanceof Error?this.cause.message:String(this.cause);s+=`
5
+ Cause: ${t}`}return s}}const a=i=>new e(i);export{e as PailError,a as createPailError};