@beignet/provider-logger-pino 0.0.34 → 0.0.36

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/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # @beignet/provider-logger-pino
2
2
 
3
+ ## 0.0.36
4
+
5
+ ## 0.0.35
6
+
7
+ ### Patch Changes
8
+
9
+ - 397f106: Standardize framework-owned operational errors, degrade opaque OpenAPI path parameters safely, and add direct Redis, Pino, and Upstash adapters.
10
+ - 7d0c795: Expose stable named provider types while keeping private config schemas out of package declarations and preserving validated config and contributed-port inference. Drizzle's Postgres and MySQL config schema constants are now internal; use the exported config interfaces for validated shapes.
11
+
3
12
  ## 0.0.34
4
13
 
5
14
  ### Patch Changes
package/README.md CHANGED
@@ -10,6 +10,10 @@ Use this package when you want `ctx.ports.logger` backed by Pino while keeping
10
10
  application code dependent on the stable `LoggerPort` interface from
11
11
  `@beignet/core/ports`.
12
12
 
13
+ `createPinoLoggerProvider(...)` returns the stable `PinoLoggerProvider` type.
14
+ `LoggerPinoConfig` describes its validated config; the Zod schema remains
15
+ internal.
16
+
13
17
  ## Install
14
18
 
15
19
  ```bash
@@ -77,6 +81,23 @@ export const providers = [
77
81
  ];
78
82
  ```
79
83
 
84
+ ### Direct adapter
85
+
86
+ Use `createPinoLogger(...)` when the app owns Pino configuration, transports,
87
+ or destinations:
88
+
89
+ ```ts
90
+ import { createPinoLogger } from "@beignet/provider-logger-pino";
91
+ import pino from "pino";
92
+
93
+ const destination = pino.destination("./app.log");
94
+ const pinoLogger = pino({ level: "info" }, destination);
95
+ const logger = createPinoLogger({ logger: pinoLogger });
96
+ ```
97
+
98
+ The direct factory only adapts the supplied Pino logger to `LoggerPort`; the
99
+ caller owns flushing and destination shutdown.
100
+
80
101
  ## Usage
81
102
 
82
103
  ```ts
@@ -93,6 +114,8 @@ log.error("Failed to publish post", { error });
93
114
 
94
115
  | Export | Purpose |
95
116
  | --- | --- |
117
+ | `createPinoLogger(options)` | Adapt an app-owned Pino logger to `LoggerPort` |
118
+ | `CreatePinoLoggerOptions` | Options for `createPinoLogger()` |
96
119
  | `createPinoLoggerProvider(options?)` | Provider factory; omitted options use `LOG_*` env values |
97
120
  | `CreatePinoLoggerProviderOptions` | Options for `createPinoLoggerProvider()` |
98
121
  | `LoggerPinoConfig` | Validated provider config type |
@@ -102,8 +125,9 @@ log.error("Failed to publish post", { error });
102
125
  ## Installed ports
103
126
 
104
127
  The provider contributes `ctx.ports.logger`, the standard Beignet
105
- `LoggerPort`. It does not expose a provider-specific escape hatch because child
106
- loggers and bindings are available through the stable port.
128
+ `LoggerPort`. Use `createPinoLogger(...)` when app infrastructure needs to own
129
+ the underlying Pino logger; application workflows should continue to depend on
130
+ the stable port.
107
131
 
108
132
  ## Instrumentation
109
133
 
package/dist/index.d.ts CHANGED
@@ -29,38 +29,41 @@
29
29
  * ```
30
30
  */
31
31
  import type { LoggerPort } from "@beignet/core/ports";
32
- import { z } from "zod";
32
+ import { type AnyProviderConfigSchema, type ServiceProvider } from "@beignet/core/providers";
33
+ import { type Logger as PinoLogger } from "pino";
33
34
  /**
34
35
  * Logger port types re-exported for provider consumers.
35
36
  */
36
37
  export type { LoggerPort, LogLevel } from "@beignet/core/ports";
37
38
  /**
38
- * Configuration schema for the Pino logger provider.
39
- * Validates environment variables with LOG_ prefix.
39
+ * Validated configuration for the Pino logger provider.
40
40
  */
41
- declare const LoggerPinoConfigSchema: z.ZodObject<{
42
- LEVEL: z.ZodDefault<z.ZodEnum<{
43
- trace: "trace";
44
- debug: "debug";
45
- info: "info";
46
- warn: "warn";
47
- error: "error";
48
- fatal: "fatal";
49
- }>>;
50
- FORMAT: z.ZodDefault<z.ZodEnum<{
51
- json: "json";
52
- pretty: "pretty";
53
- }>>;
54
- SERVICE: z.ZodOptional<z.ZodString>;
55
- TIMESTAMP: z.ZodDefault<z.ZodPipe<z.ZodEnum<{
56
- true: "true";
57
- false: "false";
58
- }>, z.ZodTransform<boolean, "true" | "false">>>;
59
- }, z.core.$strip>;
41
+ export interface LoggerPinoConfig {
42
+ LEVEL: "trace" | "debug" | "info" | "warn" | "error" | "fatal";
43
+ FORMAT: "json" | "pretty";
44
+ SERVICE?: string;
45
+ TIMESTAMP: boolean;
46
+ }
47
+ export interface PinoLoggerProviderPorts {
48
+ logger: LoggerPort;
49
+ }
60
50
  /**
61
- * Inferred configuration type for Pino logger provider.
51
+ * Pino logger lifecycle provider with stable contributed-port typing.
62
52
  */
63
- export type LoggerPinoConfig = z.infer<typeof LoggerPinoConfigSchema>;
53
+ export type PinoLoggerProvider = ServiceProvider<unknown, AnyProviderConfigSchema<LoggerPinoConfig>, Pick<PinoLoggerProviderPorts, keyof PinoLoggerProviderPorts>>;
54
+ /**
55
+ * Options for adapting an app-owned Pino logger directly.
56
+ */
57
+ export interface CreatePinoLoggerOptions {
58
+ /**
59
+ * Configured Pino logger. The caller owns its destination and lifecycle.
60
+ */
61
+ logger: PinoLogger;
62
+ }
63
+ /**
64
+ * Adapt an app-owned Pino logger to Beignet's stable LoggerPort.
65
+ */
66
+ export declare function createPinoLogger(options: CreatePinoLoggerOptions): LoggerPort;
64
67
  /**
65
68
  * Options for the Pino logger provider factory.
66
69
  */
@@ -87,25 +90,5 @@ export interface CreatePinoLoggerProviderOptions {
87
90
  *
88
91
  * Options override the corresponding `LOG_*` env values.
89
92
  */
90
- export declare function createPinoLoggerProvider(options?: CreatePinoLoggerProviderOptions): import("@beignet/core/providers").ServiceProvider<unknown, z.ZodObject<{
91
- LEVEL: z.ZodDefault<z.ZodEnum<{
92
- trace: "trace";
93
- debug: "debug";
94
- info: "info";
95
- warn: "warn";
96
- error: "error";
97
- fatal: "fatal";
98
- }>>;
99
- FORMAT: z.ZodDefault<z.ZodEnum<{
100
- json: "json";
101
- pretty: "pretty";
102
- }>>;
103
- SERVICE: z.ZodOptional<z.ZodString>;
104
- TIMESTAMP: z.ZodDefault<z.ZodPipe<z.ZodEnum<{
105
- true: "true";
106
- false: "false";
107
- }>, z.ZodTransform<boolean, "true" | "false">>>;
108
- }, z.core.$strip>, {
109
- logger: LoggerPort;
110
- }, unknown, void>;
93
+ export declare function createPinoLoggerProvider(options?: CreatePinoLoggerProviderOptions): PinoLoggerProvider;
111
94
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAYhE;;;GAGG;AACH,QAAA,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;iBA8B1B,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AA8EtE;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC9C;;OAEG;IACH,KAAK,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAClC;;OAEG;IACH,MAAM,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACpC;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,GAAE,+BAAoC;;;;;;;;;;;;;;;;;;;;kBAgD9C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EACL,KAAK,uBAAuB,EAE5B,KAAK,eAAe,EACrB,MAAM,yBAAyB,CAAC;AACjC,OAAa,EAAE,KAAK,MAAM,IAAI,UAAU,EAAE,MAAM,MAAM,CAAC;AAGvD;;GAEG;AACH,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAgDhE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IAC/D,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,UAAU,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,eAAe,CAC9C,OAAO,EACP,uBAAuB,CAAC,gBAAgB,CAAC,EACzC,IAAI,CAAC,uBAAuB,EAAE,MAAM,uBAAuB,CAAC,CAC7D,CAAC;AA8EF;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,MAAM,EAAE,UAAU,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,UAAU,CAE7E;AAED;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC9C;;OAEG;IACH,KAAK,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAClC;;OAEG;IACH,MAAM,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACpC;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,GAAE,+BAAoC,GAC5C,kBAAkB,CA+CpB"}
package/dist/index.js CHANGED
@@ -28,7 +28,7 @@
28
28
  * log.info("Processing request");
29
29
  * ```
30
30
  */
31
- import { createProvider } from "@beignet/core/providers";
31
+ import { createProvider, } from "@beignet/core/providers";
32
32
  import pino from "pino";
33
33
  import { z } from "zod";
34
34
  /**
@@ -79,7 +79,7 @@ const LoggerPinoConfigSchema = z.object({
79
79
  * @param bindings - Optional base bindings to add to all log entries
80
80
  * @returns Configured Pino logger instance
81
81
  */
82
- function createPinoLogger(config, bindings = {}) {
82
+ function createPinoInstance(config, bindings = {}) {
83
83
  const pinoOptions = {
84
84
  level: config.LEVEL,
85
85
  timestamp: config.TIMESTAMP ? pino.stdTimeFunctions.isoTime : false,
@@ -123,7 +123,7 @@ function createPinoLogger(config, bindings = {}) {
123
123
  * @param logger - Pino logger instance to wrap
124
124
  * @returns LoggerPort implementation
125
125
  */
126
- function wrapPino(logger) {
126
+ function adaptPinoLogger(logger) {
127
127
  return {
128
128
  trace: (message, meta) => meta ? logger.trace(meta, message) : logger.trace(message),
129
129
  debug: (message, meta) => meta ? logger.debug(meta, message) : logger.debug(message),
@@ -131,9 +131,15 @@ function wrapPino(logger) {
131
131
  warn: (message, meta) => meta ? logger.warn(meta, message) : logger.warn(message),
132
132
  error: (message, meta) => meta ? logger.error(meta, message) : logger.error(message),
133
133
  fatal: (message, meta) => meta ? logger.fatal(meta, message) : logger.fatal(message),
134
- child: (bindings) => wrapPino(logger.child(bindings)),
134
+ child: (bindings) => adaptPinoLogger(logger.child(bindings)),
135
135
  };
136
136
  }
137
+ /**
138
+ * Adapt an app-owned Pino logger to Beignet's stable LoggerPort.
139
+ */
140
+ export function createPinoLogger(options) {
141
+ return adaptPinoLogger(options.logger);
142
+ }
137
143
  /**
138
144
  * Create an env-backed Pino logger provider.
139
145
  *
@@ -171,9 +177,9 @@ export function createPinoLoggerProvider(options = {}) {
171
177
  baseBindings.service = service;
172
178
  }
173
179
  // Create and configure Pino logger
174
- const logger = createPinoLogger(resolvedConfig, baseBindings);
180
+ const logger = createPinoInstance(resolvedConfig, baseBindings);
175
181
  // Wrap logger to match LoggerPort interface
176
- const port = wrapPino(logger);
182
+ const port = createPinoLogger({ logger });
177
183
  return { ports: { logger: port } };
178
184
  },
179
185
  });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beignet/provider-logger-pino",
3
- "version": "0.0.34",
3
+ "version": "0.0.36",
4
4
  "type": "module",
5
5
  "description": "Pino logger provider for Beignet - adds logger port using pino",
6
6
  "main": "./dist/index.js",
package/src/index.ts CHANGED
@@ -30,7 +30,11 @@
30
30
  */
31
31
 
32
32
  import type { LoggerPort } from "@beignet/core/ports";
33
- import { createProvider } from "@beignet/core/providers";
33
+ import {
34
+ type AnyProviderConfigSchema,
35
+ createProvider,
36
+ type ServiceProvider,
37
+ } from "@beignet/core/providers";
34
38
  import pino, { type Logger as PinoLogger } from "pino";
35
39
  import { z } from "zod";
36
40
 
@@ -83,12 +87,30 @@ const LoggerPinoConfigSchema = z.object({
83
87
  * Default: true
84
88
  */
85
89
  TIMESTAMP: BooleanString.default(true),
86
- });
90
+ }) satisfies z.ZodType<LoggerPinoConfig>;
87
91
 
88
92
  /**
89
- * Inferred configuration type for Pino logger provider.
93
+ * Validated configuration for the Pino logger provider.
90
94
  */
91
- export type LoggerPinoConfig = z.infer<typeof LoggerPinoConfigSchema>;
95
+ export interface LoggerPinoConfig {
96
+ LEVEL: "trace" | "debug" | "info" | "warn" | "error" | "fatal";
97
+ FORMAT: "json" | "pretty";
98
+ SERVICE?: string;
99
+ TIMESTAMP: boolean;
100
+ }
101
+
102
+ export interface PinoLoggerProviderPorts {
103
+ logger: LoggerPort;
104
+ }
105
+
106
+ /**
107
+ * Pino logger lifecycle provider with stable contributed-port typing.
108
+ */
109
+ export type PinoLoggerProvider = ServiceProvider<
110
+ unknown,
111
+ AnyProviderConfigSchema<LoggerPinoConfig>,
112
+ Pick<PinoLoggerProviderPorts, keyof PinoLoggerProviderPorts>
113
+ >;
92
114
 
93
115
  /**
94
116
  * Create a Pino logger instance with the given configuration.
@@ -97,7 +119,7 @@ export type LoggerPinoConfig = z.infer<typeof LoggerPinoConfigSchema>;
97
119
  * @param bindings - Optional base bindings to add to all log entries
98
120
  * @returns Configured Pino logger instance
99
121
  */
100
- function createPinoLogger(
122
+ function createPinoInstance(
101
123
  config: LoggerPinoConfig,
102
124
  bindings: Record<string, unknown> = {},
103
125
  ): PinoLogger {
@@ -148,7 +170,7 @@ function createPinoLogger(
148
170
  * @param logger - Pino logger instance to wrap
149
171
  * @returns LoggerPort implementation
150
172
  */
151
- function wrapPino(logger: PinoLogger): LoggerPort {
173
+ function adaptPinoLogger(logger: PinoLogger): LoggerPort {
152
174
  return {
153
175
  trace: (message, meta) =>
154
176
  meta ? logger.trace(meta, message) : logger.trace(message),
@@ -162,10 +184,27 @@ function wrapPino(logger: PinoLogger): LoggerPort {
162
184
  meta ? logger.error(meta, message) : logger.error(message),
163
185
  fatal: (message, meta) =>
164
186
  meta ? logger.fatal(meta, message) : logger.fatal(message),
165
- child: (bindings) => wrapPino(logger.child(bindings)),
187
+ child: (bindings) => adaptPinoLogger(logger.child(bindings)),
166
188
  };
167
189
  }
168
190
 
191
+ /**
192
+ * Options for adapting an app-owned Pino logger directly.
193
+ */
194
+ export interface CreatePinoLoggerOptions {
195
+ /**
196
+ * Configured Pino logger. The caller owns its destination and lifecycle.
197
+ */
198
+ logger: PinoLogger;
199
+ }
200
+
201
+ /**
202
+ * Adapt an app-owned Pino logger to Beignet's stable LoggerPort.
203
+ */
204
+ export function createPinoLogger(options: CreatePinoLoggerOptions): LoggerPort {
205
+ return adaptPinoLogger(options.logger);
206
+ }
207
+
169
208
  /**
170
209
  * Options for the Pino logger provider factory.
171
210
  */
@@ -195,7 +234,7 @@ export interface CreatePinoLoggerProviderOptions {
195
234
  */
196
235
  export function createPinoLoggerProvider(
197
236
  options: CreatePinoLoggerProviderOptions = {},
198
- ) {
237
+ ): PinoLoggerProvider {
199
238
  return createProvider({
200
239
  name: "logger-pino",
201
240
 
@@ -234,12 +273,12 @@ export function createPinoLoggerProvider(
234
273
  }
235
274
 
236
275
  // Create and configure Pino logger
237
- const logger = createPinoLogger(resolvedConfig, baseBindings);
276
+ const logger = createPinoInstance(resolvedConfig, baseBindings);
238
277
 
239
278
  // Wrap logger to match LoggerPort interface
240
- const port = wrapPino(logger);
279
+ const port = createPinoLogger({ logger });
241
280
 
242
- return { ports: { logger: port } };
281
+ return { ports: { logger: port } satisfies PinoLoggerProviderPorts };
243
282
  },
244
283
  });
245
284
  }