@vidavidorra/bunyan-pretty-stream 3.0.16 → 4.0.0-beta.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 (49) hide show
  1. package/LICENSE.md +70 -70
  2. package/dist/bunyan/core-fields.d.ts +6 -0
  3. package/dist/bunyan/core-fields.js +16 -0
  4. package/dist/bunyan/from-json-string.d.ts +3 -0
  5. package/dist/bunyan/from-json-string.js +17 -0
  6. package/dist/bunyan/index.d.ts +4 -0
  7. package/dist/bunyan/index.js +4 -0
  8. package/dist/bunyan/is-record.d.ts +3 -0
  9. package/dist/bunyan/is-record.js +17 -0
  10. package/dist/bunyan/record.d.ts +16 -0
  11. package/dist/bunyan/record.js +2 -0
  12. package/dist/bunyan-pretty-stream.d.ts +11 -0
  13. package/dist/bunyan-pretty-stream.js +25 -0
  14. package/dist/formatter/extra.d.ts +11 -0
  15. package/dist/formatter/extra.js +33 -0
  16. package/dist/formatter/extras.d.ts +7 -0
  17. package/dist/formatter/extras.js +18 -0
  18. package/dist/formatter/formatter.d.ts +25 -0
  19. package/dist/formatter/formatter.js +115 -0
  20. package/dist/formatter/index.d.ts +1 -0
  21. package/dist/formatter/index.js +2 -0
  22. package/dist/formatter/time.d.ts +11 -0
  23. package/dist/formatter/time.js +68 -0
  24. package/dist/index.d.ts +3 -0
  25. package/dist/index.js +2 -0
  26. package/dist/{src/logger.d.ts → logger.d.ts} +2 -2
  27. package/dist/logger.js +2 -0
  28. package/dist/options.d.ts +332 -0
  29. package/dist/options.js +109 -0
  30. package/dist/parser/extras.d.ts +13 -0
  31. package/dist/parser/extras.js +47 -0
  32. package/dist/parser/parser.d.ts +22 -0
  33. package/dist/parser/parser.js +53 -0
  34. package/package.json +193 -46
  35. package/dist/src/bunyan-pretty-stream.d.ts +0 -10
  36. package/dist/src/bunyan-pretty-stream.js +0 -32
  37. package/dist/src/bunyan-record.d.ts +0 -19
  38. package/dist/src/bunyan-record.js +0 -55
  39. package/dist/src/formatter/extras.d.ts +0 -34
  40. package/dist/src/formatter/extras.js +0 -94
  41. package/dist/src/formatter/formatter.d.ts +0 -34
  42. package/dist/src/formatter/formatter.js +0 -200
  43. package/dist/src/formatter/index.d.ts +0 -2
  44. package/dist/src/formatter/index.js +0 -5
  45. package/dist/src/index.d.ts +0 -3
  46. package/dist/src/index.js +0 -5
  47. package/dist/src/logger.js +0 -2
  48. package/dist/src/options.d.ts +0 -151
  49. package/dist/src/options.js +0 -68
@@ -0,0 +1,332 @@
1
+ import { z } from 'zod';
2
+ declare const publicSchema: z.ZodObject<{
3
+ show: z.ZodDefault<z.ZodObject<{
4
+ time: z.ZodDefault<z.ZodBoolean>;
5
+ name: z.ZodDefault<z.ZodBoolean>;
6
+ hostname: z.ZodDefault<z.ZodBoolean>;
7
+ pid: z.ZodDefault<z.ZodBoolean>;
8
+ source: z.ZodDefault<z.ZodBoolean>;
9
+ extras: z.ZodDefault<z.ZodBoolean>;
10
+ }, "strict", z.ZodTypeAny, {
11
+ source: boolean;
12
+ name: boolean;
13
+ time: boolean;
14
+ hostname: boolean;
15
+ pid: boolean;
16
+ extras: boolean;
17
+ }, {
18
+ source?: boolean | undefined;
19
+ name?: boolean | undefined;
20
+ time?: boolean | undefined;
21
+ hostname?: boolean | undefined;
22
+ pid?: boolean | undefined;
23
+ extras?: boolean | undefined;
24
+ }>>;
25
+ extras: z.ZodDefault<z.ZodObject<{
26
+ key: z.ZodOptional<z.ZodString>;
27
+ maxLength: z.ZodDefault<z.ZodObject<{
28
+ key: z.ZodDefault<z.ZodNumber>;
29
+ value: z.ZodDefault<z.ZodNumber>;
30
+ total: z.ZodDefault<z.ZodNumber>;
31
+ }, "strict", z.ZodTypeAny, {
32
+ key: number;
33
+ total: number;
34
+ value: number;
35
+ }, {
36
+ key?: number | undefined;
37
+ total?: number | undefined;
38
+ value?: number | undefined;
39
+ }>>;
40
+ }, "strict", z.ZodTypeAny, {
41
+ key?: string | undefined;
42
+ maxLength: {
43
+ key: number;
44
+ total: number;
45
+ value: number;
46
+ };
47
+ }, {
48
+ key?: string | undefined;
49
+ maxLength?: {
50
+ key?: number | undefined;
51
+ total?: number | undefined;
52
+ value?: number | undefined;
53
+ } | undefined;
54
+ }>>;
55
+ indent: z.ZodDefault<z.ZodObject<{
56
+ details: z.ZodDefault<z.ZodNumber>;
57
+ json: z.ZodDefault<z.ZodNumber>;
58
+ }, "strict", z.ZodTypeAny, {
59
+ details: number;
60
+ json: number;
61
+ }, {
62
+ details?: number | undefined;
63
+ json?: number | undefined;
64
+ }>>;
65
+ basePath: z.ZodDefault<z.ZodEffects<z.ZodString, string, unknown>>;
66
+ newLineCharacter: z.ZodDefault<z.ZodEnum<["\r", "\n", "\r\n"]>>;
67
+ time: z.ZodDefault<z.ZodObject<{
68
+ utc: z.ZodDefault<z.ZodBoolean>;
69
+ /**
70
+ * Formatting presets as defined by the [Luxon documentation](
71
+ * https://moment.github.io/luxon/#/formatting?id=presets) with
72
+ * additional custom ISO 8601 presets.
73
+ */
74
+ preset: z.ZodDefault<z.ZodEnum<["DATE_SHORT", "DATE_MED", "DATE_MED_WITH_WEEKDAY", "DATE_FULL", "DATE_HUGE", "TIME_SIMPLE", "TIME_WITH_SECONDS", "TIME_WITH_SHORT_OFFSET", "TIME_WITH_LONG_OFFSET", "TIME_24_SIMPLE", "TIME_24_WITH_SECONDS", "TIME_24_WITH_SHORT_OFFSET", "TIME_24_WITH_LONG_OFFSET", "DATETIME_SHORT", "DATETIME_MED", "DATETIME_FULL", "DATETIME_HUGE", "DATETIME_SHORT_WITH_SECONDS", "DATETIME_MED_WITH_SECONDS", "DATETIME_FULL_WITH_SECONDS", "DATETIME_HUGE_WITH_SECONDS", "TIME_ISO_8601", "TIME_ISO_8601_OFFSET", "DATETIME_ISO_8601", "DATETIME_ISO_8601_OFFSET"]>>;
75
+ /**
76
+ * Formatting with tokens as defined by the [Luxon documentation](
77
+ * https://moment.github.io/luxon/#/formatting?id=formatting-with-tokens-strings-for-cthulhu).
78
+ */
79
+ format: z.ZodOptional<z.ZodString>;
80
+ }, "strict", z.ZodTypeAny, {
81
+ format?: string | undefined;
82
+ utc: boolean;
83
+ preset: "DATE_SHORT" | "DATE_MED" | "DATE_MED_WITH_WEEKDAY" | "DATE_FULL" | "DATE_HUGE" | "TIME_SIMPLE" | "TIME_WITH_SECONDS" | "TIME_WITH_SHORT_OFFSET" | "TIME_WITH_LONG_OFFSET" | "TIME_24_SIMPLE" | "TIME_24_WITH_SECONDS" | "TIME_24_WITH_SHORT_OFFSET" | "TIME_24_WITH_LONG_OFFSET" | "DATETIME_SHORT" | "DATETIME_MED" | "DATETIME_FULL" | "DATETIME_HUGE" | "DATETIME_SHORT_WITH_SECONDS" | "DATETIME_MED_WITH_SECONDS" | "DATETIME_FULL_WITH_SECONDS" | "DATETIME_HUGE_WITH_SECONDS" | "TIME_ISO_8601" | "TIME_ISO_8601_OFFSET" | "DATETIME_ISO_8601" | "DATETIME_ISO_8601_OFFSET";
84
+ }, {
85
+ format?: string | undefined;
86
+ utc?: boolean | undefined;
87
+ preset?: "DATE_SHORT" | "DATE_MED" | "DATE_MED_WITH_WEEKDAY" | "DATE_FULL" | "DATE_HUGE" | "TIME_SIMPLE" | "TIME_WITH_SECONDS" | "TIME_WITH_SHORT_OFFSET" | "TIME_WITH_LONG_OFFSET" | "TIME_24_SIMPLE" | "TIME_24_WITH_SECONDS" | "TIME_24_WITH_SHORT_OFFSET" | "TIME_24_WITH_LONG_OFFSET" | "DATETIME_SHORT" | "DATETIME_MED" | "DATETIME_FULL" | "DATETIME_HUGE" | "DATETIME_SHORT_WITH_SECONDS" | "DATETIME_MED_WITH_SECONDS" | "DATETIME_FULL_WITH_SECONDS" | "DATETIME_HUGE_WITH_SECONDS" | "TIME_ISO_8601" | "TIME_ISO_8601_OFFSET" | "DATETIME_ISO_8601" | "DATETIME_ISO_8601_OFFSET" | undefined;
88
+ }>>;
89
+ }, "strict", z.ZodTypeAny, {
90
+ show: {
91
+ source: boolean;
92
+ name: boolean;
93
+ time: boolean;
94
+ hostname: boolean;
95
+ pid: boolean;
96
+ extras: boolean;
97
+ };
98
+ time: {
99
+ format?: string | undefined;
100
+ utc: boolean;
101
+ preset: "DATE_SHORT" | "DATE_MED" | "DATE_MED_WITH_WEEKDAY" | "DATE_FULL" | "DATE_HUGE" | "TIME_SIMPLE" | "TIME_WITH_SECONDS" | "TIME_WITH_SHORT_OFFSET" | "TIME_WITH_LONG_OFFSET" | "TIME_24_SIMPLE" | "TIME_24_WITH_SECONDS" | "TIME_24_WITH_SHORT_OFFSET" | "TIME_24_WITH_LONG_OFFSET" | "DATETIME_SHORT" | "DATETIME_MED" | "DATETIME_FULL" | "DATETIME_HUGE" | "DATETIME_SHORT_WITH_SECONDS" | "DATETIME_MED_WITH_SECONDS" | "DATETIME_FULL_WITH_SECONDS" | "DATETIME_HUGE_WITH_SECONDS" | "TIME_ISO_8601" | "TIME_ISO_8601_OFFSET" | "DATETIME_ISO_8601" | "DATETIME_ISO_8601_OFFSET";
102
+ };
103
+ extras: {
104
+ key?: string | undefined;
105
+ maxLength: {
106
+ key: number;
107
+ total: number;
108
+ value: number;
109
+ };
110
+ };
111
+ indent: {
112
+ details: number;
113
+ json: number;
114
+ };
115
+ basePath: string;
116
+ newLineCharacter: "\r" | "\n" | "\r\n";
117
+ }, {
118
+ show?: {
119
+ source?: boolean | undefined;
120
+ name?: boolean | undefined;
121
+ time?: boolean | undefined;
122
+ hostname?: boolean | undefined;
123
+ pid?: boolean | undefined;
124
+ extras?: boolean | undefined;
125
+ } | undefined;
126
+ time?: {
127
+ format?: string | undefined;
128
+ utc?: boolean | undefined;
129
+ preset?: "DATE_SHORT" | "DATE_MED" | "DATE_MED_WITH_WEEKDAY" | "DATE_FULL" | "DATE_HUGE" | "TIME_SIMPLE" | "TIME_WITH_SECONDS" | "TIME_WITH_SHORT_OFFSET" | "TIME_WITH_LONG_OFFSET" | "TIME_24_SIMPLE" | "TIME_24_WITH_SECONDS" | "TIME_24_WITH_SHORT_OFFSET" | "TIME_24_WITH_LONG_OFFSET" | "DATETIME_SHORT" | "DATETIME_MED" | "DATETIME_FULL" | "DATETIME_HUGE" | "DATETIME_SHORT_WITH_SECONDS" | "DATETIME_MED_WITH_SECONDS" | "DATETIME_FULL_WITH_SECONDS" | "DATETIME_HUGE_WITH_SECONDS" | "TIME_ISO_8601" | "TIME_ISO_8601_OFFSET" | "DATETIME_ISO_8601" | "DATETIME_ISO_8601_OFFSET" | undefined;
130
+ } | undefined;
131
+ extras?: {
132
+ key?: string | undefined;
133
+ maxLength?: {
134
+ key?: number | undefined;
135
+ total?: number | undefined;
136
+ value?: number | undefined;
137
+ } | undefined;
138
+ } | undefined;
139
+ indent?: {
140
+ details?: number | undefined;
141
+ json?: number | undefined;
142
+ } | undefined;
143
+ basePath?: unknown;
144
+ newLineCharacter?: "\r" | "\n" | "\r\n" | undefined;
145
+ }>;
146
+ type PublicOptions = z.input<typeof publicSchema>;
147
+ declare const schema: z.ZodObject<{
148
+ show: z.ZodDefault<z.ZodObject<{
149
+ time: z.ZodDefault<z.ZodBoolean>;
150
+ name: z.ZodDefault<z.ZodBoolean>;
151
+ hostname: z.ZodDefault<z.ZodBoolean>;
152
+ pid: z.ZodDefault<z.ZodBoolean>;
153
+ source: z.ZodDefault<z.ZodBoolean>;
154
+ extras: z.ZodDefault<z.ZodBoolean>;
155
+ }, "strict", z.ZodTypeAny, {
156
+ source: boolean;
157
+ name: boolean;
158
+ time: boolean;
159
+ hostname: boolean;
160
+ pid: boolean;
161
+ extras: boolean;
162
+ }, {
163
+ source?: boolean | undefined;
164
+ name?: boolean | undefined;
165
+ time?: boolean | undefined;
166
+ hostname?: boolean | undefined;
167
+ pid?: boolean | undefined;
168
+ extras?: boolean | undefined;
169
+ }>>;
170
+ time: z.ZodDefault<z.ZodObject<{
171
+ utc: z.ZodDefault<z.ZodBoolean>;
172
+ /**
173
+ * Formatting presets as defined by the [Luxon documentation](
174
+ * https://moment.github.io/luxon/#/formatting?id=presets) with
175
+ * additional custom ISO 8601 presets.
176
+ */
177
+ preset: z.ZodDefault<z.ZodEnum<["DATE_SHORT", "DATE_MED", "DATE_MED_WITH_WEEKDAY", "DATE_FULL", "DATE_HUGE", "TIME_SIMPLE", "TIME_WITH_SECONDS", "TIME_WITH_SHORT_OFFSET", "TIME_WITH_LONG_OFFSET", "TIME_24_SIMPLE", "TIME_24_WITH_SECONDS", "TIME_24_WITH_SHORT_OFFSET", "TIME_24_WITH_LONG_OFFSET", "DATETIME_SHORT", "DATETIME_MED", "DATETIME_FULL", "DATETIME_HUGE", "DATETIME_SHORT_WITH_SECONDS", "DATETIME_MED_WITH_SECONDS", "DATETIME_FULL_WITH_SECONDS", "DATETIME_HUGE_WITH_SECONDS", "TIME_ISO_8601", "TIME_ISO_8601_OFFSET", "DATETIME_ISO_8601", "DATETIME_ISO_8601_OFFSET"]>>;
178
+ /**
179
+ * Formatting with tokens as defined by the [Luxon documentation](
180
+ * https://moment.github.io/luxon/#/formatting?id=formatting-with-tokens-strings-for-cthulhu).
181
+ */
182
+ format: z.ZodOptional<z.ZodString>;
183
+ }, "strict", z.ZodTypeAny, {
184
+ format?: string | undefined;
185
+ utc: boolean;
186
+ preset: "DATE_SHORT" | "DATE_MED" | "DATE_MED_WITH_WEEKDAY" | "DATE_FULL" | "DATE_HUGE" | "TIME_SIMPLE" | "TIME_WITH_SECONDS" | "TIME_WITH_SHORT_OFFSET" | "TIME_WITH_LONG_OFFSET" | "TIME_24_SIMPLE" | "TIME_24_WITH_SECONDS" | "TIME_24_WITH_SHORT_OFFSET" | "TIME_24_WITH_LONG_OFFSET" | "DATETIME_SHORT" | "DATETIME_MED" | "DATETIME_FULL" | "DATETIME_HUGE" | "DATETIME_SHORT_WITH_SECONDS" | "DATETIME_MED_WITH_SECONDS" | "DATETIME_FULL_WITH_SECONDS" | "DATETIME_HUGE_WITH_SECONDS" | "TIME_ISO_8601" | "TIME_ISO_8601_OFFSET" | "DATETIME_ISO_8601" | "DATETIME_ISO_8601_OFFSET";
187
+ }, {
188
+ format?: string | undefined;
189
+ utc?: boolean | undefined;
190
+ preset?: "DATE_SHORT" | "DATE_MED" | "DATE_MED_WITH_WEEKDAY" | "DATE_FULL" | "DATE_HUGE" | "TIME_SIMPLE" | "TIME_WITH_SECONDS" | "TIME_WITH_SHORT_OFFSET" | "TIME_WITH_LONG_OFFSET" | "TIME_24_SIMPLE" | "TIME_24_WITH_SECONDS" | "TIME_24_WITH_SHORT_OFFSET" | "TIME_24_WITH_LONG_OFFSET" | "DATETIME_SHORT" | "DATETIME_MED" | "DATETIME_FULL" | "DATETIME_HUGE" | "DATETIME_SHORT_WITH_SECONDS" | "DATETIME_MED_WITH_SECONDS" | "DATETIME_FULL_WITH_SECONDS" | "DATETIME_HUGE_WITH_SECONDS" | "TIME_ISO_8601" | "TIME_ISO_8601_OFFSET" | "DATETIME_ISO_8601" | "DATETIME_ISO_8601_OFFSET" | undefined;
191
+ }>>;
192
+ indent: z.ZodDefault<z.ZodObject<{
193
+ details: z.ZodDefault<z.ZodNumber>;
194
+ json: z.ZodDefault<z.ZodNumber>;
195
+ }, "strict", z.ZodTypeAny, {
196
+ details: number;
197
+ json: number;
198
+ }, {
199
+ details?: number | undefined;
200
+ json?: number | undefined;
201
+ }>>;
202
+ basePath: z.ZodDefault<z.ZodEffects<z.ZodString, string, unknown>>;
203
+ newLineCharacter: z.ZodDefault<z.ZodEnum<["\r", "\n", "\r\n"]>>;
204
+ extras: z.ZodDefault<z.ZodObject<{
205
+ key: z.ZodOptional<z.ZodString>;
206
+ maxLength: z.ZodDefault<z.ZodObject<{
207
+ key: z.ZodDefault<z.ZodNumber>;
208
+ value: z.ZodDefault<z.ZodNumber>;
209
+ total: z.ZodDefault<z.ZodNumber>;
210
+ }, "strict", z.ZodTypeAny, {
211
+ key: number;
212
+ total: number;
213
+ value: number;
214
+ }, {
215
+ key?: number | undefined;
216
+ total?: number | undefined;
217
+ value?: number | undefined;
218
+ }>>;
219
+ formatCharacters: z.ZodDefault<z.ZodObject<{
220
+ start: z.ZodDefault<z.ZodString>;
221
+ end: z.ZodDefault<z.ZodString>;
222
+ keyValueSeparator: z.ZodDefault<z.ZodString>;
223
+ separator: z.ZodDefault<z.ZodString>;
224
+ }, "strict", z.ZodTypeAny, {
225
+ end: string;
226
+ start: string;
227
+ keyValueSeparator: string;
228
+ separator: string;
229
+ }, {
230
+ end?: string | undefined;
231
+ start?: string | undefined;
232
+ keyValueSeparator?: string | undefined;
233
+ separator?: string | undefined;
234
+ }>>;
235
+ }, "strict", z.ZodTypeAny, {
236
+ key?: string | undefined;
237
+ maxLength: {
238
+ key: number;
239
+ total: number;
240
+ value: number;
241
+ };
242
+ formatCharacters: {
243
+ end: string;
244
+ start: string;
245
+ keyValueSeparator: string;
246
+ separator: string;
247
+ };
248
+ }, {
249
+ key?: string | undefined;
250
+ maxLength?: {
251
+ key?: number | undefined;
252
+ total?: number | undefined;
253
+ value?: number | undefined;
254
+ } | undefined;
255
+ formatCharacters?: {
256
+ end?: string | undefined;
257
+ start?: string | undefined;
258
+ keyValueSeparator?: string | undefined;
259
+ separator?: string | undefined;
260
+ } | undefined;
261
+ }>>;
262
+ }, "strict", z.ZodTypeAny, {
263
+ show: {
264
+ source: boolean;
265
+ name: boolean;
266
+ time: boolean;
267
+ hostname: boolean;
268
+ pid: boolean;
269
+ extras: boolean;
270
+ };
271
+ time: {
272
+ format?: string | undefined;
273
+ utc: boolean;
274
+ preset: "DATE_SHORT" | "DATE_MED" | "DATE_MED_WITH_WEEKDAY" | "DATE_FULL" | "DATE_HUGE" | "TIME_SIMPLE" | "TIME_WITH_SECONDS" | "TIME_WITH_SHORT_OFFSET" | "TIME_WITH_LONG_OFFSET" | "TIME_24_SIMPLE" | "TIME_24_WITH_SECONDS" | "TIME_24_WITH_SHORT_OFFSET" | "TIME_24_WITH_LONG_OFFSET" | "DATETIME_SHORT" | "DATETIME_MED" | "DATETIME_FULL" | "DATETIME_HUGE" | "DATETIME_SHORT_WITH_SECONDS" | "DATETIME_MED_WITH_SECONDS" | "DATETIME_FULL_WITH_SECONDS" | "DATETIME_HUGE_WITH_SECONDS" | "TIME_ISO_8601" | "TIME_ISO_8601_OFFSET" | "DATETIME_ISO_8601" | "DATETIME_ISO_8601_OFFSET";
275
+ };
276
+ extras: {
277
+ key?: string | undefined;
278
+ maxLength: {
279
+ key: number;
280
+ total: number;
281
+ value: number;
282
+ };
283
+ formatCharacters: {
284
+ end: string;
285
+ start: string;
286
+ keyValueSeparator: string;
287
+ separator: string;
288
+ };
289
+ };
290
+ indent: {
291
+ details: number;
292
+ json: number;
293
+ };
294
+ basePath: string;
295
+ newLineCharacter: "\r" | "\n" | "\r\n";
296
+ }, {
297
+ show?: {
298
+ source?: boolean | undefined;
299
+ name?: boolean | undefined;
300
+ time?: boolean | undefined;
301
+ hostname?: boolean | undefined;
302
+ pid?: boolean | undefined;
303
+ extras?: boolean | undefined;
304
+ } | undefined;
305
+ time?: {
306
+ format?: string | undefined;
307
+ utc?: boolean | undefined;
308
+ preset?: "DATE_SHORT" | "DATE_MED" | "DATE_MED_WITH_WEEKDAY" | "DATE_FULL" | "DATE_HUGE" | "TIME_SIMPLE" | "TIME_WITH_SECONDS" | "TIME_WITH_SHORT_OFFSET" | "TIME_WITH_LONG_OFFSET" | "TIME_24_SIMPLE" | "TIME_24_WITH_SECONDS" | "TIME_24_WITH_SHORT_OFFSET" | "TIME_24_WITH_LONG_OFFSET" | "DATETIME_SHORT" | "DATETIME_MED" | "DATETIME_FULL" | "DATETIME_HUGE" | "DATETIME_SHORT_WITH_SECONDS" | "DATETIME_MED_WITH_SECONDS" | "DATETIME_FULL_WITH_SECONDS" | "DATETIME_HUGE_WITH_SECONDS" | "TIME_ISO_8601" | "TIME_ISO_8601_OFFSET" | "DATETIME_ISO_8601" | "DATETIME_ISO_8601_OFFSET" | undefined;
309
+ } | undefined;
310
+ extras?: {
311
+ key?: string | undefined;
312
+ maxLength?: {
313
+ key?: number | undefined;
314
+ total?: number | undefined;
315
+ value?: number | undefined;
316
+ } | undefined;
317
+ formatCharacters?: {
318
+ end?: string | undefined;
319
+ start?: string | undefined;
320
+ keyValueSeparator?: string | undefined;
321
+ separator?: string | undefined;
322
+ } | undefined;
323
+ } | undefined;
324
+ indent?: {
325
+ details?: number | undefined;
326
+ json?: number | undefined;
327
+ } | undefined;
328
+ basePath?: unknown;
329
+ newLineCharacter?: "\r" | "\n" | "\r\n" | undefined;
330
+ }>;
331
+ type Options = z.infer<typeof schema>;
332
+ export { type PublicOptions, type Options, schema };
@@ -0,0 +1,109 @@
1
+ import { normalize } from 'node:path';
2
+ import { z } from 'zod';
3
+ import bunyanCoreFields from './bunyan/core-fields.js';
4
+ const extras = z
5
+ .object({
6
+ key: z
7
+ .string()
8
+ .min(1)
9
+ .regex(new RegExp(`^((?!(${bunyanCoreFields.join('|')})).)*$`))
10
+ .optional(),
11
+ maxLength: z
12
+ .object({
13
+ key: z.number().int().positive().default(20),
14
+ value: z.number().int().positive().default(50),
15
+ total: z.number().int().positive().default(500),
16
+ })
17
+ .strict()
18
+ .default({}),
19
+ })
20
+ .strict();
21
+ const publicSchema = z
22
+ .object({
23
+ show: z
24
+ .object({
25
+ time: z.boolean().default(true),
26
+ name: z.boolean().default(false),
27
+ hostname: z.boolean().default(false),
28
+ pid: z.boolean().default(false),
29
+ source: z.boolean().default(false),
30
+ extras: z.boolean().default(true),
31
+ })
32
+ .strict()
33
+ .default({}),
34
+ extras: extras.default({}),
35
+ indent: z
36
+ .object({
37
+ details: z.number().int().nonnegative().default(4),
38
+ json: z.number().int().nonnegative().default(2),
39
+ })
40
+ .strict()
41
+ .default({}),
42
+ basePath: z
43
+ .preprocess((arg) => typeof arg === 'string' && arg.length > 0 ? normalize(arg) : arg, z.string().min(1))
44
+ .default('/'),
45
+ newLineCharacter: z.enum(['\r', '\n', '\r\n']).default('\n'),
46
+ time: z
47
+ .object({
48
+ utc: z.boolean().default(true),
49
+ /**
50
+ * Formatting presets as defined by the [Luxon documentation](
51
+ * https://moment.github.io/luxon/#/formatting?id=presets) with
52
+ * additional custom ISO 8601 presets.
53
+ */
54
+ preset: z
55
+ .enum([
56
+ 'DATE_SHORT',
57
+ 'DATE_MED',
58
+ 'DATE_MED_WITH_WEEKDAY',
59
+ 'DATE_FULL',
60
+ 'DATE_HUGE',
61
+ 'TIME_SIMPLE',
62
+ 'TIME_WITH_SECONDS',
63
+ 'TIME_WITH_SHORT_OFFSET',
64
+ 'TIME_WITH_LONG_OFFSET',
65
+ 'TIME_24_SIMPLE',
66
+ 'TIME_24_WITH_SECONDS',
67
+ 'TIME_24_WITH_SHORT_OFFSET',
68
+ 'TIME_24_WITH_LONG_OFFSET',
69
+ 'DATETIME_SHORT',
70
+ 'DATETIME_MED',
71
+ 'DATETIME_FULL',
72
+ 'DATETIME_HUGE',
73
+ 'DATETIME_SHORT_WITH_SECONDS',
74
+ 'DATETIME_MED_WITH_SECONDS',
75
+ 'DATETIME_FULL_WITH_SECONDS',
76
+ 'DATETIME_HUGE_WITH_SECONDS',
77
+ 'TIME_ISO_8601',
78
+ 'TIME_ISO_8601_OFFSET',
79
+ 'DATETIME_ISO_8601',
80
+ 'DATETIME_ISO_8601_OFFSET',
81
+ ])
82
+ .default('DATETIME_ISO_8601_OFFSET'),
83
+ /**
84
+ * Formatting with tokens as defined by the [Luxon documentation](
85
+ * https://moment.github.io/luxon/#/formatting?id=formatting-with-tokens-strings-for-cthulhu).
86
+ */
87
+ format: z.string().min(1).optional(),
88
+ })
89
+ .strict()
90
+ .default({}),
91
+ })
92
+ .strict();
93
+ const schema = publicSchema.extend({
94
+ extras: extras
95
+ .extend({
96
+ formatCharacters: z
97
+ .object({
98
+ start: z.string().min(1).default('('),
99
+ end: z.string().min(1).default(')'),
100
+ keyValueSeparator: z.string().min(1).default('='),
101
+ separator: z.string().min(1).default(', '),
102
+ })
103
+ .strict()
104
+ .default({}),
105
+ })
106
+ .default({}),
107
+ });
108
+ export { schema };
109
+ //# sourceMappingURL=options.js.map
@@ -0,0 +1,13 @@
1
+ import type { Options } from '../options.js';
2
+ declare class Extras {
3
+ private readonly _options;
4
+ private readonly _extra;
5
+ private _extras;
6
+ private _length;
7
+ constructor(options: Options['extras']);
8
+ get extras(): string[];
9
+ reset(): void;
10
+ add(key: string, value: unknown): boolean;
11
+ private lengthAfterAdding;
12
+ }
13
+ export default Extras;
@@ -0,0 +1,47 @@
1
+ import Extra from '../formatter/extra.js';
2
+ class Extras {
3
+ _options;
4
+ _extra;
5
+ _extras = [];
6
+ _length = 0;
7
+ constructor(options) {
8
+ this._options = options;
9
+ this._extra = new Extra(this._options.formatCharacters.keyValueSeparator);
10
+ }
11
+ get extras() {
12
+ return this._extras;
13
+ }
14
+ reset() {
15
+ this._extras = [];
16
+ this._length = 0;
17
+ }
18
+ add(key, value) {
19
+ if (/\r\n|\r|\n/.test(key) ||
20
+ (typeof value === 'object' && value !== null) ||
21
+ typeof value === 'function' ||
22
+ (typeof value === 'string' && /\r\n|\r|\n/.test(value))) {
23
+ return false;
24
+ }
25
+ const extra = this._extra.format(key, value);
26
+ const length = this.lengthAfterAdding(extra?.formatted.length ?? 0);
27
+ if (extra === null ||
28
+ extra.key.length > this._options.maxLength.key ||
29
+ extra.value.length > this._options.maxLength.value ||
30
+ length > this._options.maxLength.total) {
31
+ return false;
32
+ }
33
+ this._extras.push(extra.formatted);
34
+ this._length = length;
35
+ return true;
36
+ }
37
+ lengthAfterAdding(lengthToAdd) {
38
+ const { formatCharacters } = this._options;
39
+ return (this._length +
40
+ lengthToAdd +
41
+ (this._length === 0
42
+ ? formatCharacters.start.length + formatCharacters.end.length
43
+ : formatCharacters.separator.length));
44
+ }
45
+ }
46
+ export default Extras;
47
+ //# sourceMappingURL=extras.js.map
@@ -0,0 +1,22 @@
1
+ import type BunyanRecord from '../bunyan/record.js';
2
+ import type { Options } from '../options.js';
3
+ type ParsedRecord = {
4
+ version: BunyanRecord['v'];
5
+ message: BunyanRecord['msg'];
6
+ source: BunyanRecord['src'];
7
+ extras: string[];
8
+ details: Record<string, unknown>;
9
+ } & Pick<BunyanRecord, 'level' | 'name' | 'hostname' | 'pid' | 'time'>;
10
+ type ParserOptions = {
11
+ show: Options['show']['extras'];
12
+ extras: Options['extras'];
13
+ };
14
+ declare class Parser {
15
+ private readonly _extras;
16
+ private readonly _options;
17
+ constructor(options: ParserOptions);
18
+ parse(bunyanRecord: BunyanRecord): ParsedRecord;
19
+ private toRecord;
20
+ }
21
+ export default Parser;
22
+ export type { ParsedRecord };
@@ -0,0 +1,53 @@
1
+ import is from '@sindresorhus/is';
2
+ import Extras from './extras.js';
3
+ class Parser {
4
+ _extras;
5
+ _options;
6
+ constructor(options) {
7
+ this._options = options;
8
+ this._extras = new Extras(this._options.extras);
9
+ }
10
+ parse(bunyanRecord) {
11
+ const record = this.toRecord(bunyanRecord);
12
+ if (!this._options.show) {
13
+ return record;
14
+ }
15
+ let extras = record.details;
16
+ if (this._options.extras.key === undefined) {
17
+ record.details = {};
18
+ }
19
+ else {
20
+ const { [this._options.extras.key]: extrasByKey, ...leftOvers } = record.details;
21
+ record.details = leftOvers;
22
+ extras =
23
+ is.plainObject(extrasByKey) && is.nonEmptyObject(extrasByKey)
24
+ ? extrasByKey
25
+ : { [this._options.extras.key]: extrasByKey };
26
+ }
27
+ this._extras.reset();
28
+ for (const [key, value] of Object.entries(extras)) {
29
+ if (!this._extras.add(key, value) && value !== undefined) {
30
+ record.details[key] = value;
31
+ }
32
+ }
33
+ record.extras = this._extras.extras;
34
+ return record;
35
+ }
36
+ toRecord(bunyanRecord) {
37
+ const { v: version, level, name, hostname, pid, time, msg: message, src: source, ...leftOvers } = bunyanRecord;
38
+ return {
39
+ version,
40
+ level,
41
+ name,
42
+ hostname,
43
+ pid,
44
+ time,
45
+ message,
46
+ source,
47
+ extras: [],
48
+ details: leftOvers,
49
+ };
50
+ }
51
+ }
52
+ export default Parser;
53
+ //# sourceMappingURL=parser.js.map