@beignet/provider-logger-pino 0.0.31 → 0.0.32

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,42 @@
1
1
  # @beignet/provider-logger-pino
2
2
 
3
+ ## 0.0.32
4
+
5
+ ### Patch Changes
6
+
7
+ - f759611: Provider factory options now resolve through one framework-owned rule:
8
+ `ProviderConfigDef` gains an `overrides` map that merges defined values over
9
+ env-derived input before validation, and every first-party provider factory
10
+ uses it instead of hand-rolled schema defaults and setup-time fallbacks. The
11
+ precedence is now uniform — defined factory options win over environment
12
+ variables in all thirteen providers. This flips the previous env-wins
13
+ behavior of `provider-cache-redis`, `provider-locks-redis`, and the storage,
14
+ search, and blob providers; set the env var (or drop the option) if you
15
+ relied on env winning. `installProviderForTest(...)` gains an `env` option
16
+ that resolves config through the same loader, and unreachable missing-config
17
+ guards in the pino and inngest factories are gone.
18
+ - eb680ef: Provider naming now follows one implementation-first order matching the
19
+ factories. `@beignet/provider-redis` is renamed `@beignet/provider-cache-redis`
20
+ (the package fills the cache port; the raw client stays as the
21
+ `ctx.ports.redis` escape hatch) with `redisCacheProvider`,
22
+ `createRedisCacheProvider`, and provider name `cache-redis` matching
23
+ `locks-redis`. Default consts flip to implementation-first:
24
+ `loggerPinoProvider` is now `pinoLoggerProvider`, `mailResendProvider` is now
25
+ `resendMailProvider`, and `mailSmtpProvider` is now `smtpMailProvider`.
26
+ CLI starter templates and the `redis-cache` provider preset wire the new
27
+ names. No aliases are kept.
28
+ - 671b986: Every provider package now exposes a `createXProvider(options)` factory, so
29
+ env-only configuration is a convenience rather than the only path. New
30
+ factories: `createPinoLoggerProvider`, `createResendMailProvider`,
31
+ `createSmtpMailProvider`, `createStripePaymentsProvider`,
32
+ `createUpstashRateLimitProvider`, and `createInngestJobsProvider`. Options
33
+ mirror each provider's env config fields and override env-derived values; the
34
+ default consts keep their behavior and now simply call their factory. (The
35
+ consts themselves are renamed to implementation-first order —
36
+ `pinoLoggerProvider`, `resendMailProvider`, `smtpMailProvider` — in this
37
+ release's provider naming normalization; `stripePaymentsProvider`,
38
+ `upstashRateLimitProvider`, and `inngestJobsProvider` already followed it.)
39
+
3
40
  ## 0.0.31
4
41
 
5
42
  ## 0.0.30
package/README.md CHANGED
@@ -26,13 +26,13 @@ bun add -d pino-pretty
26
26
 
27
27
  ```ts
28
28
  import { createNextServer, createNextServerLoader } from "@beignet/next";
29
- import { loggerPinoProvider } from "@beignet/provider-logger-pino";
29
+ import { pinoLoggerProvider } from "@beignet/provider-logger-pino";
30
30
  import { appPorts } from "@/infra/app-ports";
31
31
 
32
32
  export const getServer = createNextServerLoader(() =>
33
33
  createNextServer({
34
34
  ports: appPorts,
35
- providers: [loggerPinoProvider],
35
+ providers: [pinoLoggerProvider],
36
36
  context: ({ ports }) => ({
37
37
  requestId: crypto.randomUUID(),
38
38
  ports,
@@ -60,6 +60,23 @@ The provider reads `LOG_`-prefixed environment variables:
60
60
  `LOG_FORMAT=pretty` requires `pino-pretty`. If it is unavailable, the provider
61
61
  falls back to JSON logging and emits a warning.
62
62
 
63
+ Use `createPinoLoggerProvider(...)` when you want to pass options directly
64
+ instead of relying only on `LOG_*` env vars. Options override env-derived
65
+ values:
66
+
67
+ ```ts
68
+ import { createPinoLoggerProvider } from "@beignet/provider-logger-pino";
69
+
70
+ export const providers = [
71
+ createPinoLoggerProvider({
72
+ level: "debug",
73
+ format: "pretty",
74
+ service: "api",
75
+ timestamp: true,
76
+ }),
77
+ ];
78
+ ```
79
+
63
80
  ## Usage
64
81
 
65
82
  ```ts
@@ -76,7 +93,9 @@ log.error("Failed to publish post", { error });
76
93
 
77
94
  | Export | Purpose |
78
95
  | --- | --- |
79
- | `loggerPinoProvider` | Ready-to-install Beignet provider |
96
+ | `pinoLoggerProvider` | Default env-backed Beignet provider |
97
+ | `createPinoLoggerProvider` | Provider factory; options override `LOG_*` env values |
98
+ | `CreatePinoLoggerProviderOptions` | Options for `createPinoLoggerProvider` |
80
99
  | `LoggerPinoConfig` | Validated provider config type |
81
100
  | `LoggerPort` | Re-export from `@beignet/core/ports` |
82
101
  | `LogLevel` | Re-export from `@beignet/core/ports` |
package/dist/index.d.ts CHANGED
@@ -12,11 +12,11 @@
12
12
  * @example
13
13
  * ```ts
14
14
  * import { createNextServer } from "@beignet/next";
15
- * import { loggerPinoProvider } from "@beignet/provider-logger-pino";
15
+ * import { pinoLoggerProvider } from "@beignet/provider-logger-pino";
16
16
  *
17
17
  * const server = await createNextServer({
18
18
  * ports: basePorts,
19
- * providers: [loggerPinoProvider],
19
+ * providers: [pinoLoggerProvider],
20
20
  * // ...
21
21
  * });
22
22
  *
@@ -62,7 +62,54 @@ declare const LoggerPinoConfigSchema: z.ZodObject<{
62
62
  */
63
63
  export type LoggerPinoConfig = z.infer<typeof LoggerPinoConfigSchema>;
64
64
  /**
65
- * Pino logger provider that extends ports with structured logging capabilities.
65
+ * Options for the Pino logger provider factory.
66
+ */
67
+ export interface CreatePinoLoggerProviderOptions {
68
+ /**
69
+ * Minimum log level. Overrides `LOG_LEVEL`.
70
+ */
71
+ level?: LoggerPinoConfig["LEVEL"];
72
+ /**
73
+ * Log format. Overrides `LOG_FORMAT`.
74
+ */
75
+ format?: LoggerPinoConfig["FORMAT"];
76
+ /**
77
+ * Service name added to log bindings. Overrides `LOG_SERVICE`.
78
+ */
79
+ service?: string;
80
+ /**
81
+ * Whether to include timestamps in log entries. Overrides `LOG_TIMESTAMP`.
82
+ */
83
+ timestamp?: boolean;
84
+ }
85
+ /**
86
+ * Create an env-backed Pino logger provider.
87
+ *
88
+ * Options override the corresponding `LOG_*` env values.
89
+ */
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>;
111
+ /**
112
+ * Default env-backed Pino logger provider.
66
113
  *
67
114
  * Configuration via environment variables:
68
115
  * - LOG_LEVEL: Minimum log level (trace/debug/info/warn/error/fatal, default: info)
@@ -74,12 +121,12 @@ export type LoggerPinoConfig = z.infer<typeof LoggerPinoConfigSchema>;
74
121
  * ```ts
75
122
  * const server = await createNextServer({
76
123
  * ports: basePorts,
77
- * providers: [loggerPinoProvider],
124
+ * providers: [pinoLoggerProvider],
78
125
  * // ...
79
126
  * });
80
127
  * ```
81
128
  */
82
- export declare const loggerPinoProvider: import("@beignet/core/providers").ServiceProvider<unknown, z.ZodObject<{
129
+ export declare const pinoLoggerProvider: import("@beignet/core/providers").ServiceProvider<unknown, z.ZodObject<{
83
130
  LEVEL: z.ZodDefault<z.ZodEnum<{
84
131
  trace: "trace";
85
132
  debug: "debug";
@@ -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;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;iBA8B7B,CAAC"}
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;;;;;;;;;;;;;;;;;;;;kBA8C9C;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;iBAA6B,CAAC"}
package/dist/index.js CHANGED
@@ -12,11 +12,11 @@
12
12
  * @example
13
13
  * ```ts
14
14
  * import { createNextServer } from "@beignet/next";
15
- * import { loggerPinoProvider } from "@beignet/provider-logger-pino";
15
+ * import { pinoLoggerProvider } from "@beignet/provider-logger-pino";
16
16
  *
17
17
  * const server = await createNextServer({
18
18
  * ports: basePorts,
19
- * providers: [loggerPinoProvider],
19
+ * providers: [pinoLoggerProvider],
20
20
  * // ...
21
21
  * });
22
22
  *
@@ -135,7 +135,51 @@ function wrapPino(logger) {
135
135
  };
136
136
  }
137
137
  /**
138
- * Pino logger provider that extends ports with structured logging capabilities.
138
+ * Create an env-backed Pino logger provider.
139
+ *
140
+ * Options override the corresponding `LOG_*` env values.
141
+ */
142
+ export function createPinoLoggerProvider(options = {}) {
143
+ return createProvider({
144
+ name: "logger-pino",
145
+ config: {
146
+ schema: LoggerPinoConfigSchema,
147
+ envPrefix: "LOG_",
148
+ // Defined options win over env-derived values at config load time.
149
+ overrides: {
150
+ LEVEL: options.level,
151
+ FORMAT: options.format,
152
+ TIMESTAMP: options.timestamp,
153
+ SERVICE: options.service,
154
+ },
155
+ },
156
+ async setup({ config }) {
157
+ if (!config) {
158
+ // Every schema field has a default, so a declared config always
159
+ // parses; this only guards the typing.
160
+ throw new Error("[pinoLoggerProvider] Provider config was not loaded.");
161
+ }
162
+ const resolvedConfig = {
163
+ LEVEL: config.LEVEL,
164
+ FORMAT: config.FORMAT,
165
+ TIMESTAMP: config.TIMESTAMP,
166
+ };
167
+ // Prepare base bindings
168
+ const service = config.SERVICE;
169
+ const baseBindings = {};
170
+ if (service) {
171
+ baseBindings.service = service;
172
+ }
173
+ // Create and configure Pino logger
174
+ const logger = createPinoLogger(resolvedConfig, baseBindings);
175
+ // Wrap logger to match LoggerPort interface
176
+ const port = wrapPino(logger);
177
+ return { ports: { logger: port } };
178
+ },
179
+ });
180
+ }
181
+ /**
182
+ * Default env-backed Pino logger provider.
139
183
  *
140
184
  * Configuration via environment variables:
141
185
  * - LOG_LEVEL: Minimum log level (trace/debug/info/warn/error/fatal, default: info)
@@ -147,32 +191,10 @@ function wrapPino(logger) {
147
191
  * ```ts
148
192
  * const server = await createNextServer({
149
193
  * ports: basePorts,
150
- * providers: [loggerPinoProvider],
194
+ * providers: [pinoLoggerProvider],
151
195
  * // ...
152
196
  * });
153
197
  * ```
154
198
  */
155
- export const loggerPinoProvider = createProvider({
156
- name: "logger-pino",
157
- config: {
158
- schema: LoggerPinoConfigSchema,
159
- envPrefix: "LOG_",
160
- },
161
- async setup({ config }) {
162
- if (!config) {
163
- throw new Error("[loggerPinoProvider] Missing logger config. " +
164
- "Please set LOG_LEVEL, LOG_FORMAT, etc. environment variables.");
165
- }
166
- // Prepare base bindings
167
- const baseBindings = {};
168
- if (config.SERVICE) {
169
- baseBindings.service = config.SERVICE;
170
- }
171
- // Create and configure Pino logger
172
- const logger = createPinoLogger(config, baseBindings);
173
- // Wrap logger to match LoggerPort interface
174
- const port = wrapPino(logger);
175
- return { ports: { logger: port } };
176
- },
177
- });
199
+ export const pinoLoggerProvider = createPinoLoggerProvider();
178
200
  //# sourceMappingURL=index.js.map
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.31",
3
+ "version": "0.0.32",
4
4
  "type": "module",
5
5
  "description": "Pino logger provider for Beignet - adds logger port using pino",
6
6
  "main": "./dist/index.js",
@@ -88,7 +88,7 @@
88
88
  "registration": {
89
89
  "required": true,
90
90
  "tokens": [
91
- "loggerPinoProvider"
91
+ "pinoLoggerProvider"
92
92
  ]
93
93
  }
94
94
  }
package/src/index.ts CHANGED
@@ -12,11 +12,11 @@
12
12
  * @example
13
13
  * ```ts
14
14
  * import { createNextServer } from "@beignet/next";
15
- * import { loggerPinoProvider } from "@beignet/provider-logger-pino";
15
+ * import { pinoLoggerProvider } from "@beignet/provider-logger-pino";
16
16
  *
17
17
  * const server = await createNextServer({
18
18
  * ports: basePorts,
19
- * providers: [loggerPinoProvider],
19
+ * providers: [pinoLoggerProvider],
20
20
  * // ...
21
21
  * });
22
22
  *
@@ -167,7 +167,83 @@ function wrapPino(logger: PinoLogger): LoggerPort {
167
167
  }
168
168
 
169
169
  /**
170
- * Pino logger provider that extends ports with structured logging capabilities.
170
+ * Options for the Pino logger provider factory.
171
+ */
172
+ export interface CreatePinoLoggerProviderOptions {
173
+ /**
174
+ * Minimum log level. Overrides `LOG_LEVEL`.
175
+ */
176
+ level?: LoggerPinoConfig["LEVEL"];
177
+ /**
178
+ * Log format. Overrides `LOG_FORMAT`.
179
+ */
180
+ format?: LoggerPinoConfig["FORMAT"];
181
+ /**
182
+ * Service name added to log bindings. Overrides `LOG_SERVICE`.
183
+ */
184
+ service?: string;
185
+ /**
186
+ * Whether to include timestamps in log entries. Overrides `LOG_TIMESTAMP`.
187
+ */
188
+ timestamp?: boolean;
189
+ }
190
+
191
+ /**
192
+ * Create an env-backed Pino logger provider.
193
+ *
194
+ * Options override the corresponding `LOG_*` env values.
195
+ */
196
+ export function createPinoLoggerProvider(
197
+ options: CreatePinoLoggerProviderOptions = {},
198
+ ) {
199
+ return createProvider({
200
+ name: "logger-pino",
201
+
202
+ config: {
203
+ schema: LoggerPinoConfigSchema,
204
+ envPrefix: "LOG_",
205
+ // Defined options win over env-derived values at config load time.
206
+ overrides: {
207
+ LEVEL: options.level,
208
+ FORMAT: options.format,
209
+ TIMESTAMP: options.timestamp,
210
+ SERVICE: options.service,
211
+ },
212
+ },
213
+
214
+ async setup({ config }) {
215
+ if (!config) {
216
+ // Every schema field has a default, so a declared config always
217
+ // parses; this only guards the typing.
218
+ throw new Error("[pinoLoggerProvider] Provider config was not loaded.");
219
+ }
220
+
221
+ const resolvedConfig: LoggerPinoConfig = {
222
+ LEVEL: config.LEVEL,
223
+ FORMAT: config.FORMAT,
224
+ TIMESTAMP: config.TIMESTAMP,
225
+ };
226
+
227
+ // Prepare base bindings
228
+ const service = config.SERVICE;
229
+ const baseBindings: Record<string, unknown> = {};
230
+ if (service) {
231
+ baseBindings.service = service;
232
+ }
233
+
234
+ // Create and configure Pino logger
235
+ const logger = createPinoLogger(resolvedConfig, baseBindings);
236
+
237
+ // Wrap logger to match LoggerPort interface
238
+ const port = wrapPino(logger);
239
+
240
+ return { ports: { logger: port } };
241
+ },
242
+ });
243
+ }
244
+
245
+ /**
246
+ * Default env-backed Pino logger provider.
171
247
  *
172
248
  * Configuration via environment variables:
173
249
  * - LOG_LEVEL: Minimum log level (trace/debug/info/warn/error/fatal, default: info)
@@ -179,39 +255,9 @@ function wrapPino(logger: PinoLogger): LoggerPort {
179
255
  * ```ts
180
256
  * const server = await createNextServer({
181
257
  * ports: basePorts,
182
- * providers: [loggerPinoProvider],
258
+ * providers: [pinoLoggerProvider],
183
259
  * // ...
184
260
  * });
185
261
  * ```
186
262
  */
187
- export const loggerPinoProvider = createProvider({
188
- name: "logger-pino",
189
-
190
- config: {
191
- schema: LoggerPinoConfigSchema,
192
- envPrefix: "LOG_",
193
- },
194
-
195
- async setup({ config }) {
196
- if (!config) {
197
- throw new Error(
198
- "[loggerPinoProvider] Missing logger config. " +
199
- "Please set LOG_LEVEL, LOG_FORMAT, etc. environment variables.",
200
- );
201
- }
202
-
203
- // Prepare base bindings
204
- const baseBindings: Record<string, unknown> = {};
205
- if (config.SERVICE) {
206
- baseBindings.service = config.SERVICE;
207
- }
208
-
209
- // Create and configure Pino logger
210
- const logger = createPinoLogger(config, baseBindings);
211
-
212
- // Wrap logger to match LoggerPort interface
213
- const port = wrapPino(logger);
214
-
215
- return { ports: { logger: port } };
216
- },
217
- });
263
+ export const pinoLoggerProvider = createPinoLoggerProvider();