@visulima/pail 4.0.0-alpha.2 → 4.0.0-alpha.20

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 (131) hide show
  1. package/CHANGELOG.md +355 -0
  2. package/LICENSE.md +148 -879
  3. package/README.md +323 -0
  4. package/dist/error.d.ts +103 -0
  5. package/dist/error.js +5 -0
  6. package/dist/index.browser.d.ts +557 -45
  7. package/dist/index.browser.js +19 -12
  8. package/dist/index.server.d.ts +724 -63
  9. package/dist/index.server.js +27 -529
  10. package/dist/middleware/elysia.d.ts +73 -0
  11. package/dist/middleware/elysia.js +1 -0
  12. package/dist/middleware/express.d.ts +88 -0
  13. package/dist/middleware/express.js +1 -0
  14. package/dist/middleware/fastify.d.ts +83 -0
  15. package/dist/middleware/fastify.js +1 -0
  16. package/dist/middleware/hono.d.ts +87 -0
  17. package/dist/middleware/hono.js +1 -0
  18. package/dist/middleware/next/handler.d.ts +103 -0
  19. package/dist/middleware/next/handler.js +1 -0
  20. package/dist/middleware/sveltekit.d.ts +125 -0
  21. package/dist/middleware/sveltekit.js +1 -0
  22. package/dist/object-tree.d.ts +67 -70
  23. package/dist/object-tree.js +2 -89
  24. package/dist/packem_shared/AbstractJsonReporter-D_Pb6kpB.js +1 -0
  25. package/dist/packem_shared/AbstractJsonReporter-PVC4ONf2.js +1 -0
  26. package/dist/packem_shared/JsonReporter-BEEmb0W4.js +2 -0
  27. package/dist/packem_shared/JsonReporter-CE-lw7R0.js +1 -0
  28. package/dist/packem_shared/PrettyReporter-CDv9n1Fy.js +5 -0
  29. package/dist/packem_shared/PrettyReporter-CuFxJm_o.js +44 -0
  30. package/dist/packem_shared/abstract-json-reporter.d-BAgznjyU.d.ts +61 -0
  31. package/dist/packem_shared/abstract-pretty-reporter-BpyhtAoN.js +33 -0
  32. package/dist/packem_shared/constants-DKfCaSUR.js +1 -0
  33. package/dist/packem_shared/constants-ep2nsfdy.js +1 -0
  34. package/dist/packem_shared/create-middleware-logger.d-CR3o6VDh.d.ts +47 -0
  35. package/dist/packem_shared/createPailError-53jAfQ-T.js +5 -0
  36. package/dist/packem_shared/headers-S8WyX-2m.js +1 -0
  37. package/dist/packem_shared/index-Dwp5v97D.js +1 -0
  38. package/dist/packem_shared/pailMiddleware-CWOJRmJq.js +1 -0
  39. package/dist/packem_shared/storage-DHM1EP2P.js +1 -0
  40. package/dist/packem_shared/types.d-BeLumqgD.d.ts +246 -0
  41. package/dist/packem_shared/types.d-Cz9S7jZh.d.ts +201 -0
  42. package/dist/packem_shared/types.d-xxE3FOD3.d.ts +229 -0
  43. package/dist/packem_shared/useLogger-qyZrjy4D.js +1 -0
  44. package/dist/packem_shared/wide-event.d-gb2-ks5w.d.ts +705 -0
  45. package/dist/packem_shared/write-console-log-based-on-level-DfD64owL.js +1 -0
  46. package/dist/packem_shared/write-stream-Dd4_PTcm.js +1 -0
  47. package/dist/processor/caller/caller-processor.d.ts +49 -47
  48. package/dist/processor/caller/caller-processor.js +1 -59
  49. package/dist/processor/environment-processor.d.ts +124 -0
  50. package/dist/processor/environment-processor.js +1 -0
  51. package/dist/processor/message-formatter-processor.d.ts +51 -50
  52. package/dist/processor/message-formatter-processor.js +1 -66
  53. package/dist/processor/opentelemetry-processor.d.ts +69 -66
  54. package/dist/processor/opentelemetry-processor.js +1 -52
  55. package/dist/processor/redact-processor.d.ts +60 -41
  56. package/dist/processor/redact-processor.js +1 -30
  57. package/dist/processor/sampling-processor.d.ts +112 -0
  58. package/dist/processor/sampling-processor.js +1 -0
  59. package/dist/reporter/file/json-file-reporter.d.ts +91 -42
  60. package/dist/reporter/file/json-file-reporter.js +2 -136
  61. package/dist/reporter/http/abstract-http-reporter.d.ts +213 -211
  62. package/dist/reporter/http/abstract-http-reporter.js +2 -435
  63. package/dist/reporter/http/http-reporter.d.ts +40 -36
  64. package/dist/reporter/http/http-reporter.edge-light.d.ts +430 -38
  65. package/dist/reporter/http/http-reporter.edge-light.js +2 -651
  66. package/dist/reporter/http/http-reporter.js +1 -13
  67. package/dist/reporter/json/index.browser.d.ts +98 -3
  68. package/dist/reporter/json/index.browser.js +1 -2
  69. package/dist/reporter/json/index.d.ts +51 -3
  70. package/dist/reporter/json/index.js +1 -2
  71. package/dist/reporter/pretty/index.browser.d.ts +105 -2
  72. package/dist/reporter/pretty/index.browser.js +1 -1
  73. package/dist/reporter/pretty/index.d.ts +150 -2
  74. package/dist/reporter/pretty/index.js +1 -1
  75. package/dist/reporter/simple/simple-reporter.server.d.ts +133 -18
  76. package/dist/reporter/simple/simple-reporter.server.js +8 -186
  77. package/dist/wide-event.d.ts +5 -0
  78. package/dist/wide-event.js +1 -0
  79. package/package.json +87 -37
  80. package/dist/constants.d.ts +0 -37
  81. package/dist/interactive/index.d.ts +0 -2
  82. package/dist/interactive/index.js +0 -2
  83. package/dist/interactive/interactive-manager.d.ts +0 -108
  84. package/dist/interactive/interactive-stream-hook.d.ts +0 -68
  85. package/dist/packem_shared/AbstractJsonReporter-BaZ33PlE.js +0 -204
  86. package/dist/packem_shared/InteractiveManager-CbE7d1kY.js +0 -172
  87. package/dist/packem_shared/InteractiveStreamHook-DiSubbJ1.js +0 -21
  88. package/dist/packem_shared/JsonReporter-BRw4skd5.js +0 -28
  89. package/dist/packem_shared/JsonReporter-VzgyLEYz.js +0 -58
  90. package/dist/packem_shared/PrettyReporter-C2wVB7yu.js +0 -222
  91. package/dist/packem_shared/PrettyReporter-DySIXBjQ.js +0 -169
  92. package/dist/packem_shared/abstract-pretty-reporter-Di_sdm2r.js +0 -50
  93. package/dist/packem_shared/constants-omsTHUWB.js +0 -119
  94. package/dist/packem_shared/format-label-De49vNPd.js +0 -1193
  95. package/dist/packem_shared/get-longest-label-C9PWeyKq.js +0 -9
  96. package/dist/packem_shared/index-BomQ3E6J.js +0 -650
  97. package/dist/packem_shared/index-EZ_WSQZS.js +0 -1146
  98. package/dist/packem_shared/interactive-stream-hook-DG4BtN12.js +0 -141
  99. package/dist/packem_shared/pail.browser-u2CSR_af.js +0 -1427
  100. package/dist/packem_shared/write-console-log-based-on-level-DBmRYXpj.js +0 -14
  101. package/dist/packem_shared/write-stream-BG8fhcs3.js +0 -6
  102. package/dist/pail.browser.d.ts +0 -412
  103. package/dist/pail.server.d.ts +0 -233
  104. package/dist/processor/caller/get-caller-filename.d.ts +0 -23
  105. package/dist/progress-bar.d.ts +0 -136
  106. package/dist/progress-bar.js +0 -404
  107. package/dist/reporter/file/utils/rotating-file-stream.d.ts +0 -48
  108. package/dist/reporter/http/utils/compression.d.ts +0 -7
  109. package/dist/reporter/http/utils/log-size-error.d.ts +0 -30
  110. package/dist/reporter/http/utils/retry.d.ts +0 -27
  111. package/dist/reporter/json/abstract-json-reporter.d.ts +0 -61
  112. package/dist/reporter/json/json-reporter.browser.d.ts +0 -40
  113. package/dist/reporter/json/json-reporter.server.d.ts +0 -50
  114. package/dist/reporter/pretty/abstract-pretty-reporter.d.ts +0 -83
  115. package/dist/reporter/pretty/pretty-reporter.browser.d.ts +0 -36
  116. package/dist/reporter/pretty/pretty-reporter.server.d.ts +0 -70
  117. package/dist/reporter/raw/raw-reporter.browser.d.ts +0 -5
  118. package/dist/reporter/raw/raw-reporter.server.d.ts +0 -13
  119. package/dist/reporter/utils/default-inspector-config.d.ts +0 -3
  120. package/dist/reporter/utils/format-label.d.ts +0 -3
  121. package/dist/spinner.d.ts +0 -220
  122. package/dist/spinner.js +0 -2150
  123. package/dist/types.d.ts +0 -241
  124. package/dist/utils/ansi-escapes.d.ts +0 -4
  125. package/dist/utils/arrayify.d.ts +0 -2
  126. package/dist/utils/get-longest-badge.d.ts +0 -4
  127. package/dist/utils/get-longest-label.d.ts +0 -4
  128. package/dist/utils/merge-types.d.ts +0 -4
  129. package/dist/utils/stream/safe-stream-handler.d.ts +0 -21
  130. package/dist/utils/write-console-log-based-on-level.d.ts +0 -4
  131. package/dist/utils/write-stream.d.ts +0 -2
@@ -0,0 +1,201 @@
1
+ import { AnsiColors } from '@visulima/colorize';
2
+ import { InteractiveManager } from '@visulima/interactive-manager';
3
+ import { LiteralUnion, Primitive } from 'type-fest';
4
+ /**
5
+ * Global namespace for extending Pail's metadata interface.
6
+ *
7
+ * This global declaration allows other packages and applications to extend
8
+ * the Meta interface with custom properties by declaring additional properties
9
+ * in the VisulimaPail.CustomMeta interface.
10
+ * @example
11
+ * ```typescript
12
+ * declare global {
13
+ * namespace VisulimaPail {
14
+ * interface CustomMeta<L> {
15
+ * userId?: string;
16
+ * requestId?: string;
17
+ * }
18
+ * }
19
+ * }
20
+ * ```
21
+ */
22
+ declare global {
23
+ namespace VisulimaPail {
24
+ interface CustomMeta<L> {}
25
+ }
26
+ }
27
+ /**
28
+ * Metadata object containing all information about a log entry.
29
+ *
30
+ * This interface defines the structure of metadata that is passed to reporters
31
+ * and processors. It contains all the contextual information about a log message
32
+ * including the message itself, timing information, error details, and more.
33
+ * @template L - The log level type
34
+ */
35
+ interface Meta<L> extends VisulimaPail.CustomMeta<L> {
36
+ badge: string | undefined;
37
+ context: any[] | undefined;
38
+ date: Date | string;
39
+ error: Error | undefined;
40
+ groups: string[];
41
+ label: string | undefined;
42
+ message: Primitive | ReadonlyArray<unknown> | Record<PropertyKey, unknown>;
43
+ prefix: string | undefined;
44
+ repeated?: number;
45
+ scope: string[] | undefined;
46
+ suffix: string | undefined;
47
+ traceError: Error | undefined;
48
+ type: {
49
+ level: ExtendedRfc5424LogLevels | L;
50
+ name: string;
51
+ };
52
+ }
53
+ /**
54
+ * Extended RFC 5424 Log Levels.
55
+ *
56
+ * Standard syslog severity levels as defined in RFC 5424, plus additional
57
+ * levels commonly used in modern applications. Each level has a numeric
58
+ * priority where lower numbers indicate higher severity.
59
+ * @see https://datatracker.ietf.org/doc/html/rfc5424#section-6.2.1
60
+ */
61
+ type ExtendedRfc5424LogLevels = "alert" | "critical" | "debug" | "emergency" | "error" | "informational" | "notice" | "trace" | "warning";
62
+ /**
63
+ * Default Log Types.
64
+ *
65
+ * Predefined semantic log types that provide meaningful categorization
66
+ * for different kinds of log messages. Each type has associated styling
67
+ * and log level configuration.
68
+ */
69
+ type DefaultLogTypes = "alert" | "await" | "complete" | "critical" | "debug" | "emergency" | "error" | "info" | "log" | "notice" | "pending" | "start" | "stop" | "success" | "trace" | "wait" | "warn" | "warning" | "watch";
70
+ /**
71
+ * Logger Function Type.
72
+ *
73
+ * Represents a logging function that can accept either a structured Message object
74
+ * or multiple arguments in the traditional console.log style.
75
+ */
76
+ interface LoggerFunction {
77
+ (message: Message): void;
78
+ (...message: any[]): void;
79
+ }
80
+ /**
81
+ * Logger Configuration.
82
+ *
83
+ * Configuration object that defines how a specific logger type should behave,
84
+ * including its visual appearance and log level.
85
+ * @template L - The log level type
86
+ */
87
+ interface LoggerConfiguration<L extends string> {
88
+ badge?: string;
89
+ color?: AnsiColors;
90
+ label: string;
91
+ logLevel: LiteralUnion<ExtendedRfc5424LogLevels, L>;
92
+ }
93
+ /**
94
+ * Logger Types Configuration.
95
+ *
96
+ * A record mapping logger type names to their configurations.
97
+ * @template T - Custom logger type names
98
+ * @template L - Log level types
99
+ */
100
+ type LoggerTypesConfig<T extends string, L extends string> = Record<T, Partial<LoggerConfiguration<L>>>;
101
+ /**
102
+ * Default Logger Types Configuration.
103
+ *
104
+ * A complete mapping of all default log types to their full configurations.
105
+ * @template L - Log level types
106
+ */
107
+ type DefaultLoggerTypes<L extends string = string> = Record<DefaultLogTypes, LoggerConfiguration<L>>;
108
+ /**
109
+ * Read-only Metadata.
110
+ *
111
+ * Immutable version of the Meta interface for use in reporters.
112
+ * @template L - The log level type
113
+ */
114
+ type ReadonlyMeta<L extends string> = Readonly<Meta<L>>;
115
+ /**
116
+ * Reporter Interface.
117
+ *
118
+ * Base interface for all reporters. Reporters are responsible for
119
+ * outputting log messages to various destinations (console, files, etc.).
120
+ * @template L - The log level type
121
+ */
122
+ interface Reporter<L extends string> {
123
+ log: (meta: ReadonlyMeta<L>) => void;
124
+ }
125
+ /**
126
+ * Stream-Aware Reporter Interface.
127
+ *
128
+ * Extends Reporter with the ability to work with Node.js streams.
129
+ * Used for server-side reporters that need to write to stdout/stderr.
130
+ * @template L - The log level type
131
+ */
132
+ interface StreamAwareReporter<L extends string> extends Reporter<L> {
133
+ /** Set the stderr stream for error output */
134
+ setStderr: (stderr: NodeJS.WriteStream) => void;
135
+ /** Set the stdout stream for standard output */
136
+ setStdout: (stdout: NodeJS.WriteStream) => void;
137
+ }
138
+ /**
139
+ * Logger Types Aware Reporter Interface.
140
+ *
141
+ * Extends Reporter with the ability to receive logger type configurations.
142
+ * Allows reporters to customize their output based on logger types.
143
+ * @template T - Custom logger type names
144
+ * @template L - The log level type
145
+ */
146
+ interface LoggerTypesAwareReporter<T extends string, L extends string> extends Reporter<L> {
147
+ /** Set the logger types configuration */
148
+ setLoggerTypes: (types: LoggerTypesConfig<T, L> & Partial<LoggerTypesConfig<DefaultLogTypes, L>>) => void;
149
+ }
150
+ /**
151
+ * Interactive Stream Reporter Interface.
152
+ *
153
+ * Extends StreamAwareReporter with interactive capabilities for terminal UIs.
154
+ * Supports features like progress bars and dynamic updates.
155
+ * @template L - The log level type
156
+ */
157
+ interface InteractiveStreamReporter<L extends string> extends StreamAwareReporter<L> {
158
+ /** Set the interactive manager for handling interactive output */
159
+ setInteractiveManager: (manager?: InteractiveManager) => void;
160
+ /** Enable or disable interactive mode */
161
+ setIsInteractive: (interactive: boolean) => void;
162
+ }
163
+ /**
164
+ * Processor Interface.
165
+ *
166
+ * Base interface for all processors. Processors can modify or enhance
167
+ * log metadata before it reaches reporters.
168
+ * @template L - The log level type
169
+ */
170
+ interface Processor<L extends string> {
171
+ /** Process the log metadata */
172
+ process: (meta: Meta<L>) => Meta<L>;
173
+ }
174
+ interface ConstructorOptions<T extends string, L extends string> {
175
+ disabled?: boolean;
176
+ logLevel?: LiteralUnion<ExtendedRfc5424LogLevels, L>;
177
+ logLevels?: Partial<Record<ExtendedRfc5424LogLevels, number>> & Record<L, number>;
178
+ messages?: {
179
+ timerEnd?: string;
180
+ timerStart?: string;
181
+ };
182
+ processors?: Processor<L>[];
183
+ rawReporter?: Reporter<L>;
184
+ reporters?: Reporter<L>[];
185
+ scope?: string[] | string;
186
+ throttle?: number;
187
+ throttleMin?: number;
188
+ types?: LoggerTypesConfig<T, L> & Partial<LoggerTypesConfig<DefaultLogTypes, L>>;
189
+ }
190
+ interface ServerConstructorOptions<T extends string, L extends string> extends ConstructorOptions<T, L> {
191
+ interactive?: boolean;
192
+ stderr: NodeJS.WriteStream;
193
+ stdout: NodeJS.WriteStream;
194
+ }
195
+ type Message = {
196
+ context?: any[];
197
+ message: any;
198
+ prefix?: string;
199
+ suffix?: string;
200
+ };
201
+ export { ConstructorOptions as C, DefaultLogTypes as D, ExtendedRfc5424LogLevels as E, InteractiveStreamReporter as I, LoggerTypesConfig as L, Meta as M, Processor as P, Reporter as R, ServerConstructorOptions as S, LoggerFunction as a, DefaultLoggerTypes as b, LoggerConfiguration as c, LoggerTypesAwareReporter as d, StreamAwareReporter as e, ReadonlyMeta as f };
@@ -0,0 +1,229 @@
1
+ import { AnsiColors } from '@visulima/colorize';
2
+ import '@visulima/interactive-manager';
3
+ /**
4
+ Matches any [primitive value](https://developer.mozilla.org/en-US/docs/Glossary/Primitive).
5
+
6
+ @category Type
7
+ */
8
+ type Primitive = null | undefined | string | number | boolean | symbol | bigint;
9
+ /**
10
+ Create a union type by combining primitive types and literal types without sacrificing auto-completion in IDEs for the literal type part of the union.
11
+
12
+ Currently, when a union type of a primitive type is combined with literal types, TypeScript loses all information about the combined literals. Thus, when such type is used in an IDE with autocompletion, no suggestions are made for the declared literals.
13
+
14
+ This type is a workaround for [Microsoft/TypeScript#29729](https://github.com/Microsoft/TypeScript/issues/29729). It will be removed as soon as it's not needed anymore.
15
+
16
+ @example
17
+ ```
18
+ import type {LiteralUnion} from 'type-fest';
19
+
20
+ // Before
21
+
22
+ type Pet = 'dog' | 'cat' | string;
23
+
24
+ const petWithoutAutocomplete: Pet = '';
25
+ // Start typing in your TypeScript-enabled IDE.
26
+ // You **will not** get auto-completion for `dog` and `cat` literals.
27
+
28
+ // After
29
+
30
+ type Pet2 = LiteralUnion<'dog' | 'cat', string>;
31
+
32
+ const petWithAutoComplete: Pet2 = '';
33
+ // You **will** get auto-completion for `dog` and `cat` literals.
34
+ ```
35
+
36
+ @category Type
37
+ */
38
+ type LiteralUnion<LiteralType, BaseType extends Primitive> = LiteralType | (BaseType & Record<never, never>);
39
+ /**
40
+ * Global namespace for extending Pail's metadata interface.
41
+ *
42
+ * This global declaration allows other packages and applications to extend
43
+ * the Meta interface with custom properties by declaring additional properties
44
+ * in the VisulimaPail.CustomMeta interface.
45
+ * @example
46
+ * ```typescript
47
+ * declare global {
48
+ * namespace VisulimaPail {
49
+ * interface CustomMeta<L> {
50
+ * userId?: string;
51
+ * requestId?: string;
52
+ * }
53
+ * }
54
+ * }
55
+ * ```
56
+ */
57
+ declare global {
58
+ namespace VisulimaPail {
59
+ interface CustomMeta<L> {}
60
+ }
61
+ }
62
+ /**
63
+ * Metadata object containing all information about a log entry.
64
+ *
65
+ * This interface defines the structure of metadata that is passed to reporters
66
+ * and processors. It contains all the contextual information about a log message
67
+ * including the message itself, timing information, error details, and more.
68
+ * @template L - The log level type
69
+ */
70
+ interface Meta<L> extends VisulimaPail.CustomMeta<L> {
71
+ badge: string | undefined;
72
+ context: any[] | undefined;
73
+ date: Date | string;
74
+ error: Error | undefined;
75
+ groups: string[];
76
+ label: string | undefined;
77
+ message: Primitive | ReadonlyArray<unknown> | Record<PropertyKey, unknown>;
78
+ prefix: string | undefined;
79
+ repeated?: number;
80
+ scope: string[] | undefined;
81
+ suffix: string | undefined;
82
+ traceError: Error | undefined;
83
+ type: {
84
+ level: ExtendedRfc5424LogLevels | L;
85
+ name: string;
86
+ };
87
+ }
88
+ /**
89
+ * Extended RFC 5424 Log Levels.
90
+ *
91
+ * Standard syslog severity levels as defined in RFC 5424, plus additional
92
+ * levels commonly used in modern applications. Each level has a numeric
93
+ * priority where lower numbers indicate higher severity.
94
+ * @see https://datatracker.ietf.org/doc/html/rfc5424#section-6.2.1
95
+ */
96
+ type ExtendedRfc5424LogLevels = "alert" | "critical" | "debug" | "emergency" | "error" | "informational" | "notice" | "trace" | "warning";
97
+ /**
98
+ * Default Log Types.
99
+ *
100
+ * Predefined semantic log types that provide meaningful categorization
101
+ * for different kinds of log messages. Each type has associated styling
102
+ * and log level configuration.
103
+ */
104
+ type DefaultLogTypes = "alert" | "await" | "complete" | "critical" | "debug" | "emergency" | "error" | "info" | "log" | "notice" | "pending" | "start" | "stop" | "success" | "trace" | "wait" | "warn" | "warning" | "watch";
105
+ /**
106
+ * Logger Function Type.
107
+ *
108
+ * Represents a logging function that can accept either a structured Message object
109
+ * or multiple arguments in the traditional console.log style.
110
+ */
111
+ interface LoggerFunction {
112
+ (message: Message): void;
113
+ (...message: any[]): void;
114
+ }
115
+ /**
116
+ * Logger Configuration.
117
+ *
118
+ * Configuration object that defines how a specific logger type should behave,
119
+ * including its visual appearance and log level.
120
+ * @template L - The log level type
121
+ */
122
+ interface LoggerConfiguration<L extends string> {
123
+ badge?: string;
124
+ color?: AnsiColors;
125
+ label: string;
126
+ logLevel: LiteralUnion<ExtendedRfc5424LogLevels, L>;
127
+ }
128
+ /**
129
+ * Logger Types Configuration.
130
+ *
131
+ * A record mapping logger type names to their configurations.
132
+ * @template T - Custom logger type names
133
+ * @template L - Log level types
134
+ */
135
+ type LoggerTypesConfig<T extends string, L extends string> = Record<T, Partial<LoggerConfiguration<L>>>;
136
+ /**
137
+ * Default Logger Types Configuration.
138
+ *
139
+ * A complete mapping of all default log types to their full configurations.
140
+ * @template L - Log level types
141
+ */
142
+ type DefaultLoggerTypes<L extends string = string> = Record<DefaultLogTypes, LoggerConfiguration<L>>;
143
+ /**
144
+ * Read-only Metadata.
145
+ *
146
+ * Immutable version of the Meta interface for use in reporters.
147
+ * @template L - The log level type
148
+ */
149
+ type ReadonlyMeta<L extends string> = Readonly<Meta<L>>;
150
+ /**
151
+ * Reporter Interface.
152
+ *
153
+ * Base interface for all reporters. Reporters are responsible for
154
+ * outputting log messages to various destinations (console, files, etc.).
155
+ * @template L - The log level type
156
+ */
157
+ interface Reporter<L extends string> {
158
+ log: (meta: ReadonlyMeta<L>) => void;
159
+ }
160
+ /**
161
+ * Stream-Aware Reporter Interface.
162
+ *
163
+ * Extends Reporter with the ability to work with Node.js streams.
164
+ * Used for server-side reporters that need to write to stdout/stderr.
165
+ * @template L - The log level type
166
+ */
167
+ interface StreamAwareReporter<L extends string> extends Reporter<L> {
168
+ /** Set the stderr stream for error output */
169
+ setStderr: (stderr: NodeJS.WriteStream) => void;
170
+ /** Set the stdout stream for standard output */
171
+ setStdout: (stdout: NodeJS.WriteStream) => void;
172
+ }
173
+ /**
174
+ * Logger Types Aware Reporter Interface.
175
+ *
176
+ * Extends Reporter with the ability to receive logger type configurations.
177
+ * Allows reporters to customize their output based on logger types.
178
+ * @template T - Custom logger type names
179
+ * @template L - The log level type
180
+ */
181
+ interface LoggerTypesAwareReporter<T extends string, L extends string> extends Reporter<L> {
182
+ /** Set the logger types configuration */
183
+ setLoggerTypes: (types: LoggerTypesConfig<T, L> & Partial<LoggerTypesConfig<DefaultLogTypes, L>>) => void;
184
+ }
185
+ /**
186
+ * Stringify-Aware Reporter Interface.
187
+ *
188
+ * Extends Reporter with the ability to receive a custom stringify function.
189
+ * Useful for reporters that need to serialize complex objects.
190
+ * @template L - The log level type
191
+ */
192
+ interface StringifyAwareReporter<L extends string> extends Reporter<L> {
193
+ /** Set the stringify function for object serialization */
194
+ setStringify: (stringify: any) => void;
195
+ }
196
+ /**
197
+ * Processor Interface.
198
+ *
199
+ * Base interface for all processors. Processors can modify or enhance
200
+ * log metadata before it reaches reporters.
201
+ * @template L - The log level type
202
+ */
203
+ interface Processor<L extends string> {
204
+ /** Process the log metadata */
205
+ process: (meta: Meta<L>) => Meta<L>;
206
+ }
207
+ interface ConstructorOptions<T extends string, L extends string> {
208
+ disabled?: boolean;
209
+ logLevel?: LiteralUnion<ExtendedRfc5424LogLevels, L>;
210
+ logLevels?: Partial<Record<ExtendedRfc5424LogLevels, number>> & Record<L, number>;
211
+ messages?: {
212
+ timerEnd?: string;
213
+ timerStart?: string;
214
+ };
215
+ processors?: Processor<L>[];
216
+ rawReporter?: Reporter<L>;
217
+ reporters?: Reporter<L>[];
218
+ scope?: string[] | string;
219
+ throttle?: number;
220
+ throttleMin?: number;
221
+ types?: LoggerTypesConfig<T, L> & Partial<LoggerTypesConfig<DefaultLogTypes, L>>;
222
+ }
223
+ type Message = {
224
+ context?: any[];
225
+ message: any;
226
+ prefix?: string;
227
+ suffix?: string;
228
+ };
229
+ export { ConstructorOptions as C, DefaultLogTypes as D, ExtendedRfc5424LogLevels as E, LiteralUnion as L, Meta as M, Processor as P, ReadonlyMeta as R, StringifyAwareReporter as S, LoggerTypesConfig as a, LoggerTypesAwareReporter as b, Reporter as c, LoggerFunction as d, DefaultLoggerTypes as e, LoggerConfiguration as f, StreamAwareReporter as g };
@@ -0,0 +1 @@
1
+ var n=Object.defineProperty;var t=(e,r)=>n(e,"name",{value:r,configurable:!0});import{createRequire as i}from"node:module";const a=i(import.meta.url),o=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,c=t(e=>{if(typeof o<"u"&&o.versions&&o.versions.node){const[r,s]=o.versions.node.split(".").map(Number);if(r>22||r===22&&s>=3||r===20&&s>=16)return o.getBuiltinModule(e)}return a(e)},"__cjs_getBuiltinModule"),{AsyncLocalStorage:u}=c("node:async_hooks");var l=Object.defineProperty,g=t((e,r)=>l(e,"name",{value:r,configurable:!0}),"t");const p=new u,_=g(()=>{const e=p.getStore();if(!e)throw new Error("[pail] useLogger() called outside of withPail() context. Wrap your route handler or server action with withPail().");return e},"useLogger");export{p as pailStorage,_ as useLogger};