@logtape/adaptor-bunyan 2.1.0-dev.0 → 2.1.0-dev.550

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/README.md CHANGED
@@ -130,7 +130,7 @@ Customizing interpolated value formatting
130
130
 
131
131
  By default the adapter renders interpolated values in the message template
132
132
  with `node:util.inspect()` (`breakLength: Infinity`). Provide a
133
- `valueFormatter` to override that for example, to use `JSON.stringify`
133
+ `valueFormatter` to override that, for example to use `JSON.stringify`
134
134
  or a redaction-aware serializer:
135
135
 
136
136
  ~~~~ typescript
@@ -145,14 +145,15 @@ const sink = getBunyanSink(logger, {
145
145
  Properties and Bunyan reserved fields
146
146
  -------------------------------------
147
147
 
148
- LogTape `record.properties` are passed verbatim to Bunyan as the merge-object
149
- of the call. Bunyan automatically applies any `serializers` configured on
150
- the logger to matching top-level fields.
148
+ LogTape `record.properties` are passed to Bunyan as the merge-object of
149
+ the call. Bunyan automatically applies any `serializers` configured on
150
+ the logger to matching top-level fields. The adapter also sets the
151
+ merge-object's `time` field to a `Date` derived from `record.timestamp`
152
+ so the resulting Bunyan record reflects when LogTape created the record,
153
+ not when the sink call ran.
151
154
 
152
- Bunyan reserves a small set of field names (`name`, `hostname`, `pid`,
153
- `level`, `time`, `msg`, `src`, `v`). If your LogTape properties happen to
154
- contain any of these names, Bunyan's normal collision behaviour applies —
155
- configure your structured property names to avoid conflicts.
155
+ Bunyan's other reserved field names (`name`, `hostname`, `pid`, `level`,
156
+ `msg`, `src`, `v`) should not be used as keys in your LogTape properties.
156
157
 
157
158
 
158
159
  Docs
package/dist/mod.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  const require_rolldown_runtime = require('./_virtual/rolldown_runtime.cjs');
2
- const node_util = require_rolldown_runtime.__toESM(require("node:util"));
3
2
  const __logtape_logtape = require_rolldown_runtime.__toESM(require("@logtape/logtape"));
3
+ const node_util = require_rolldown_runtime.__toESM(require("node:util"));
4
4
 
5
5
  //#region src/mod.ts
6
6
  function defaultValueFormatter(value) {
@@ -44,11 +44,14 @@ function decorateCategoryEnd(category, decorator) {
44
44
  * Bunyan does not provide a global default logger; you must create one
45
45
  * with `bunyan.createLogger({ name: "..." })` and pass it in.
46
46
  *
47
- * LogTape's `record.properties` are passed verbatim to Bunyan as the
48
- * merge-object, so any `serializers` configured on the Bunyan logger
49
- * apply automatically. Bunyan's reserved fields (`name`, `hostname`,
50
- * `pid`, `level`, `time`, `msg`, `src`, `v`) should not be used as
51
- * property keys.
47
+ * LogTape's `record.properties` are passed to Bunyan as the merge-object,
48
+ * so any `serializers` configured on the Bunyan logger apply automatically.
49
+ * The adapter also sets the merge-object's `time` field to a `Date`
50
+ * derived from `record.timestamp`, so the resulting Bunyan record reflects
51
+ * when LogTape created the record rather than when the sink call ran.
52
+ *
53
+ * Bunyan's other reserved fields (`name`, `hostname`, `pid`, `level`,
54
+ * `msg`, `src`, `v`) should not be used as property keys.
52
55
  *
53
56
  * @example
54
57
  * ```typescript
@@ -81,21 +84,23 @@ function decorateCategoryEnd(category, decorator) {
81
84
  */
82
85
  function getBunyanSink(logger, options = {}) {
83
86
  const categoryOptions = !options.category ? void 0 : typeof options.category === "object" ? options.category : {};
84
- const category = categoryOptions == null ? void 0 : {
87
+ const category = categoryOptions === void 0 ? void 0 : {
85
88
  separator: categoryOptions.separator ?? "·",
86
89
  position: categoryOptions.position ?? "start",
87
90
  decorator: categoryOptions.decorator ?? ":"
88
91
  };
89
92
  const valueFormatter = options.valueFormatter ?? defaultValueFormatter;
90
93
  return (record) => {
91
- let message = "";
92
- if (category != null && record.category.length > 0) {
94
+ let message = renderMessage(record.message, valueFormatter);
95
+ if (category !== void 0 && record.category.length > 0) {
93
96
  const joined = record.category.join(category.separator);
94
- if (category.position === "start") message += decorateCategoryStart(joined, category.decorator);
95
- message += renderMessage(record.message, valueFormatter);
96
- if (category.position === "end") message += decorateCategoryEnd(joined, category.decorator);
97
- } else message = renderMessage(record.message, valueFormatter);
98
- const properties = record.properties;
97
+ if (category.position === "start") message = decorateCategoryStart(joined, category.decorator) + message;
98
+ else message = message + decorateCategoryEnd(joined, category.decorator);
99
+ }
100
+ const properties = {
101
+ ...record.properties,
102
+ time: new Date(record.timestamp)
103
+ };
99
104
  switch (record.level) {
100
105
  case "trace":
101
106
  logger.trace(properties, message);
package/dist/mod.d.cts CHANGED
@@ -82,11 +82,14 @@ interface CategoryOptions {
82
82
  * Bunyan does not provide a global default logger; you must create one
83
83
  * with `bunyan.createLogger({ name: "..." })` and pass it in.
84
84
  *
85
- * LogTape's `record.properties` are passed verbatim to Bunyan as the
86
- * merge-object, so any `serializers` configured on the Bunyan logger
87
- * apply automatically. Bunyan's reserved fields (`name`, `hostname`,
88
- * `pid`, `level`, `time`, `msg`, `src`, `v`) should not be used as
89
- * property keys.
85
+ * LogTape's `record.properties` are passed to Bunyan as the merge-object,
86
+ * so any `serializers` configured on the Bunyan logger apply automatically.
87
+ * The adapter also sets the merge-object's `time` field to a `Date`
88
+ * derived from `record.timestamp`, so the resulting Bunyan record reflects
89
+ * when LogTape created the record rather than when the sink call ran.
90
+ *
91
+ * Bunyan's other reserved fields (`name`, `hostname`, `pid`, `level`,
92
+ * `msg`, `src`, `v`) should not be used as property keys.
90
93
  *
91
94
  * @example
92
95
  * ```typescript
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.cts","names":[],"sources":["../src/mod.ts"],"sourcesContent":[],"mappings":";;;;;;AAYA;;;;;;;AA2BiB,UA3BA,YAAA,CA2BA;EAAM,KAAA,CAAA,WAAA,EAzBN,MAyBM,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;EAUN,KAAA,CAAA,WAAA,EA9BA,MA8BiB,CAAA,MAOF,EAAA,OAAA,CAAA,EAAA,MAAe,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;EAoB9B,IAAA,CAAA,WAAA,EApDA,MAoDe,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;EA+IhB,IAAA,CAAA,WAAa,EA9LZ,MA8LY,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;EAAA,KAAA,CAAA,WAAA,EAzLZ,MAyLY,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;EAAA,KACnB,CAAA,WAAA,EArLO,MAqLP,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;;;AAEH;AA+FP;;AACU,UA7QO,iBAAA,CA6QP;EAAY;AACW;;;;;gCAvQD;;;;;;;;;;;;;;;;;;UAoBf,eAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA+ID,aAAA,SACN,wBACC,oBACR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA+Fa,OAAA,SACN,wBACC"}
1
+ {"version":3,"file":"mod.d.cts","names":[],"sources":["../src/mod.ts"],"sourcesContent":[],"mappings":";;;;;;AAYA;;;;;;;AA2BiB,UA3BA,YAAA,CA2BA;EAAM,KAAA,CAAA,WAAA,EAzBN,MAyBM,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;EAUN,KAAA,CAAA,WAAA,EA9BA,MA8BiB,CAAA,MAOF,EAAA,OAAA,CAAA,EAAA,MAAe,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;EAoB9B,IAAA,CAAA,WAAA,EApDA,MAoDe,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;EAkJhB,IAAA,CAAA,WAAa,EAjMZ,MAiMY,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;EAAA,KAAA,CAAA,WAAA,EA5LZ,MA4LY,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;EAAA,KACnB,CAAA,WAAA,EAxLO,MAwLP,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;;;AAEH;AA8FP;;AACU,UA/QO,iBAAA,CA+QP;EAAY;AACW;;;;;gCAzQD;;;;;;;;;;;;;;;;;;UAoBf,eAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkJD,aAAA,SACN,wBACC,oBACR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA8Fa,OAAA,SACN,wBACC"}
package/dist/mod.d.ts CHANGED
@@ -82,11 +82,14 @@ interface CategoryOptions {
82
82
  * Bunyan does not provide a global default logger; you must create one
83
83
  * with `bunyan.createLogger({ name: "..." })` and pass it in.
84
84
  *
85
- * LogTape's `record.properties` are passed verbatim to Bunyan as the
86
- * merge-object, so any `serializers` configured on the Bunyan logger
87
- * apply automatically. Bunyan's reserved fields (`name`, `hostname`,
88
- * `pid`, `level`, `time`, `msg`, `src`, `v`) should not be used as
89
- * property keys.
85
+ * LogTape's `record.properties` are passed to Bunyan as the merge-object,
86
+ * so any `serializers` configured on the Bunyan logger apply automatically.
87
+ * The adapter also sets the merge-object's `time` field to a `Date`
88
+ * derived from `record.timestamp`, so the resulting Bunyan record reflects
89
+ * when LogTape created the record rather than when the sink call ran.
90
+ *
91
+ * Bunyan's other reserved fields (`name`, `hostname`, `pid`, `level`,
92
+ * `msg`, `src`, `v`) should not be used as property keys.
90
93
  *
91
94
  * @example
92
95
  * ```typescript
package/dist/mod.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.ts","names":[],"sources":["../src/mod.ts"],"sourcesContent":[],"mappings":";;;;;;AAYA;;;;;;;AA2BiB,UA3BA,YAAA,CA2BA;EAAM,KAAA,CAAA,WAAA,EAzBN,MAyBM,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;EAUN,KAAA,CAAA,WAAA,EA9BA,MA8BiB,CAAA,MAOF,EAAA,OAAA,CAAA,EAAA,MAAe,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;EAoB9B,IAAA,CAAA,WAAA,EApDA,MAoDe,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;EA+IhB,IAAA,CAAA,WAAa,EA9LZ,MA8LY,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;EAAA,KAAA,CAAA,WAAA,EAzLZ,MAyLY,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;EAAA,KACnB,CAAA,WAAA,EArLO,MAqLP,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;;;AAEH;AA+FP;;AACU,UA7QO,iBAAA,CA6QP;EAAY;AACW;;;;;gCAvQD;;;;;;;;;;;;;;;;;;UAoBf,eAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA+ID,aAAA,SACN,wBACC,oBACR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA+Fa,OAAA,SACN,wBACC"}
1
+ {"version":3,"file":"mod.d.ts","names":[],"sources":["../src/mod.ts"],"sourcesContent":[],"mappings":";;;;;;AAYA;;;;;;;AA2BiB,UA3BA,YAAA,CA2BA;EAAM,KAAA,CAAA,WAAA,EAzBN,MAyBM,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;EAUN,KAAA,CAAA,WAAA,EA9BA,MA8BiB,CAAA,MAOF,EAAA,OAAA,CAAA,EAAA,MAAe,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;EAoB9B,IAAA,CAAA,WAAA,EApDA,MAoDe,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;EAkJhB,IAAA,CAAA,WAAa,EAjMZ,MAiMY,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;EAAA,KAAA,CAAA,WAAA,EA5LZ,MA4LY,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;EAAA,KACnB,CAAA,WAAA,EAxLO,MAwLP,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA;;;AAEH;AA8FP;;AACU,UA/QO,iBAAA,CA+QP;EAAY;AACW;;;;;gCAzQD;;;;;;;;;;;;;;;;;;UAoBf,eAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkJD,aAAA,SACN,wBACC,oBACR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA8Fa,OAAA,SACN,wBACC"}
package/dist/mod.js CHANGED
@@ -1,5 +1,5 @@
1
- import { inspect } from "node:util";
2
1
  import { configureSync } from "@logtape/logtape";
2
+ import { inspect } from "node:util";
3
3
 
4
4
  //#region src/mod.ts
5
5
  function defaultValueFormatter(value) {
@@ -43,11 +43,14 @@ function decorateCategoryEnd(category, decorator) {
43
43
  * Bunyan does not provide a global default logger; you must create one
44
44
  * with `bunyan.createLogger({ name: "..." })` and pass it in.
45
45
  *
46
- * LogTape's `record.properties` are passed verbatim to Bunyan as the
47
- * merge-object, so any `serializers` configured on the Bunyan logger
48
- * apply automatically. Bunyan's reserved fields (`name`, `hostname`,
49
- * `pid`, `level`, `time`, `msg`, `src`, `v`) should not be used as
50
- * property keys.
46
+ * LogTape's `record.properties` are passed to Bunyan as the merge-object,
47
+ * so any `serializers` configured on the Bunyan logger apply automatically.
48
+ * The adapter also sets the merge-object's `time` field to a `Date`
49
+ * derived from `record.timestamp`, so the resulting Bunyan record reflects
50
+ * when LogTape created the record rather than when the sink call ran.
51
+ *
52
+ * Bunyan's other reserved fields (`name`, `hostname`, `pid`, `level`,
53
+ * `msg`, `src`, `v`) should not be used as property keys.
51
54
  *
52
55
  * @example
53
56
  * ```typescript
@@ -80,21 +83,23 @@ function decorateCategoryEnd(category, decorator) {
80
83
  */
81
84
  function getBunyanSink(logger, options = {}) {
82
85
  const categoryOptions = !options.category ? void 0 : typeof options.category === "object" ? options.category : {};
83
- const category = categoryOptions == null ? void 0 : {
86
+ const category = categoryOptions === void 0 ? void 0 : {
84
87
  separator: categoryOptions.separator ?? "·",
85
88
  position: categoryOptions.position ?? "start",
86
89
  decorator: categoryOptions.decorator ?? ":"
87
90
  };
88
91
  const valueFormatter = options.valueFormatter ?? defaultValueFormatter;
89
92
  return (record) => {
90
- let message = "";
91
- if (category != null && record.category.length > 0) {
93
+ let message = renderMessage(record.message, valueFormatter);
94
+ if (category !== void 0 && record.category.length > 0) {
92
95
  const joined = record.category.join(category.separator);
93
- if (category.position === "start") message += decorateCategoryStart(joined, category.decorator);
94
- message += renderMessage(record.message, valueFormatter);
95
- if (category.position === "end") message += decorateCategoryEnd(joined, category.decorator);
96
- } else message = renderMessage(record.message, valueFormatter);
97
- const properties = record.properties;
96
+ if (category.position === "start") message = decorateCategoryStart(joined, category.decorator) + message;
97
+ else message = message + decorateCategoryEnd(joined, category.decorator);
98
+ }
99
+ const properties = {
100
+ ...record.properties,
101
+ time: new Date(record.timestamp)
102
+ };
98
103
  switch (record.level) {
99
104
  case "trace":
100
105
  logger.trace(properties, message);
package/dist/mod.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mod.js","names":["value: unknown","parts: readonly (string | unknown)[]","valueFormatter: (value: unknown) => string","category: string","decorator: Required<CategoryOptions>[\"decorator\"]","logger: BunyanLogger","options: BunyanSinkOptions","category: Required<CategoryOptions> | undefined","record: LogRecord"],"sources":["../src/mod.ts"],"sourcesContent":["import { inspect } from \"node:util\";\nimport { configureSync, type LogRecord, type Sink } from \"@logtape/logtape\";\n\n/**\n * A structural representation of a [Bunyan] logger sufficient for the\n * adapter's needs. Avoids importing Bunyan's own type definitions so the\n * package builds cleanly under both Deno and Node.js.\n *\n * [Bunyan]: https://github.com/trentm/node-bunyan\n *\n * @since 2.1.0\n */\nexport interface BunyanLogger {\n trace(\n mergeObject: Record<string, unknown>,\n format: string,\n ...args: unknown[]\n ): void;\n debug(\n mergeObject: Record<string, unknown>,\n format: string,\n ...args: unknown[]\n ): void;\n info(\n mergeObject: Record<string, unknown>,\n format: string,\n ...args: unknown[]\n ): void;\n warn(\n mergeObject: Record<string, unknown>,\n format: string,\n ...args: unknown[]\n ): void;\n error(\n mergeObject: Record<string, unknown>,\n format: string,\n ...args: unknown[]\n ): void;\n fatal(\n mergeObject: Record<string, unknown>,\n format: string,\n ...args: unknown[]\n ): void;\n}\n\n/**\n * Options for configuring the Bunyan sink adapter.\n * @since 2.1.0\n */\nexport interface BunyanSinkOptions {\n /**\n * Configuration for how LogTape categories are handled in Bunyan logs.\n * - `false` or `undefined`: Categories are not included in the log message\n * - `true`: Categories are included with default formatting\n * - `CategoryOptions`: Custom category formatting configuration\n */\n readonly category?: boolean | CategoryOptions;\n\n /**\n * A function that converts an interpolated value in the message template\n * to a string. By default, values are formatted with\n * `node:util#inspect()` using `breakLength: Infinity` so each value\n * appears on a single line in the rendered `msg` field.\n *\n * Supply a custom formatter to use, for example, `JSON.stringify`,\n * a redaction-aware serializer, or any other strategy.\n * @default `(value) => inspect(value, { breakLength: Infinity })`\n */\n readonly valueFormatter?: (value: unknown) => string;\n}\n\n/**\n * Configuration options for formatting LogTape categories in Bunyan log\n * messages.\n * @since 2.1.0\n */\nexport interface CategoryOptions {\n /**\n * The separator used to join category parts when multiple categories exist.\n * @default \"·\"\n */\n readonly separator?: string;\n\n /**\n * Where to position the category in the log message.\n * - `\"start\"`: Category appears at the beginning of the message\n * - `\"end\"`: Category appears at the end of the message\n * @default \"start\"\n */\n readonly position?: \"start\" | \"end\";\n\n /**\n * The decorator used to format the category in the log message.\n * - `\"[]\"`: [category] format\n * - `\"()\"`: (category) format\n * - `\"<>\"`: <category> format\n * - `\"{}\"`: {category} format\n * - `\":\"`: category: format\n * - `\"-\"`: category - format\n * - `\"|\"`: category | format\n * - `\"/\"`: category / format\n * - `\"\"`: category format (no decoration)\n * @default \":\"\n */\n readonly decorator?: \"[]\" | \"()\" | \"<>\" | \"{}\" | \":\" | \"-\" | \"|\" | \"/\" | \"\";\n}\n\nfunction defaultValueFormatter(value: unknown): string {\n return inspect(value, { breakLength: Infinity });\n}\n\nfunction renderMessage(\n parts: readonly (string | unknown)[],\n valueFormatter: (value: unknown) => string,\n): string {\n let rendered = \"\";\n for (let i = 0; i < parts.length; i++) {\n if (i % 2 === 0) {\n rendered += parts[i] as string;\n } else {\n rendered += valueFormatter(parts[i]);\n }\n }\n return rendered;\n}\n\nfunction decorateCategoryStart(\n category: string,\n decorator: Required<CategoryOptions>[\"decorator\"],\n): string {\n switch (decorator) {\n case \"[]\":\n return `[${category}] `;\n case \"()\":\n return `(${category}) `;\n case \"<>\":\n return `<${category}> `;\n case \"{}\":\n return `{${category}} `;\n case \":\":\n return `${category}: `;\n case \"-\":\n return `${category} - `;\n case \"|\":\n return `${category} | `;\n case \"/\":\n return `${category} / `;\n case \"\":\n return `${category} `;\n }\n}\n\nfunction decorateCategoryEnd(\n category: string,\n decorator: Required<CategoryOptions>[\"decorator\"],\n): string {\n switch (decorator) {\n case \"[]\":\n return ` [${category}]`;\n case \"()\":\n return ` (${category})`;\n case \"<>\":\n return ` <${category}>`;\n case \"{}\":\n return ` {${category}}`;\n case \":\":\n return `: ${category}`;\n case \"-\":\n return ` - ${category}`;\n case \"|\":\n return ` | ${category}`;\n case \"/\":\n return ` / ${category}`;\n case \"\":\n return ` ${category}`;\n }\n}\n\n/**\n * Creates a LogTape sink that forwards log records to a Bunyan logger.\n *\n * Bunyan does not provide a global default logger; you must create one\n * with `bunyan.createLogger({ name: \"...\" })` and pass it in.\n *\n * LogTape's `record.properties` are passed verbatim to Bunyan as the\n * merge-object, so any `serializers` configured on the Bunyan logger\n * apply automatically. Bunyan's reserved fields (`name`, `hostname`,\n * `pid`, `level`, `time`, `msg`, `src`, `v`) should not be used as\n * property keys.\n *\n * @example\n * ```typescript\n * import { configure } from \"@logtape/logtape\";\n * import { getBunyanSink } from \"@logtape/adaptor-bunyan\";\n * import bunyan from \"bunyan\";\n *\n * const bunyanLogger = bunyan.createLogger({ name: \"my-app\" });\n *\n * await configure({\n * sinks: {\n * bunyan: getBunyanSink(bunyanLogger, {\n * category: {\n * position: \"start\",\n * decorator: \"[]\",\n * separator: \".\"\n * }\n * })\n * },\n * loggers: [\n * { category: \"my-library\", sinks: [\"bunyan\"] }\n * ]\n * });\n * ```\n *\n * @param logger The Bunyan logger instance to forward logs to.\n * @param options Configuration options for the sink adapter.\n * @returns A LogTape sink function that can be used in LogTape configuration.\n * @since 2.1.0\n */\nexport function getBunyanSink(\n logger: BunyanLogger,\n options: BunyanSinkOptions = {},\n): Sink {\n const categoryOptions = !options.category\n ? undefined\n : typeof options.category === \"object\"\n ? options.category\n : {};\n const category: Required<CategoryOptions> | undefined =\n categoryOptions == null ? undefined : {\n separator: categoryOptions.separator ?? \"·\",\n position: categoryOptions.position ?? \"start\",\n decorator: categoryOptions.decorator ?? \":\",\n };\n const valueFormatter = options.valueFormatter ?? defaultValueFormatter;\n return (record: LogRecord) => {\n let message = \"\";\n if (category != null && record.category.length > 0) {\n const joined = record.category.join(category.separator);\n if (category.position === \"start\") {\n message += decorateCategoryStart(joined, category.decorator);\n }\n message += renderMessage(record.message, valueFormatter);\n if (category.position === \"end\") {\n message += decorateCategoryEnd(joined, category.decorator);\n }\n } else {\n message = renderMessage(record.message, valueFormatter);\n }\n const properties = record.properties as Record<string, unknown>;\n switch (record.level) {\n case \"trace\":\n logger.trace(properties, message);\n return;\n case \"debug\":\n logger.debug(properties, message);\n return;\n case \"info\":\n logger.info(properties, message);\n return;\n case \"warning\":\n logger.warn(properties, message);\n return;\n case \"error\":\n logger.error(properties, message);\n return;\n case \"fatal\":\n logger.fatal(properties, message);\n return;\n }\n };\n}\n\n/**\n * Automatically configures LogTape to route all logs to a Bunyan logger.\n *\n * This is a convenience function that wires up `getBunyanSink()` as\n * LogTape's catch-all sink and routes the meta logger\n * (`[\"logtape\", \"meta\"]`) to the same sink with `lowestLevel: \"warning\"`,\n * matching the conventions of the other adapter packages.\n *\n * Bunyan does not provide a global default logger, so the logger argument\n * is required. Create one with `bunyan.createLogger({ name: \"...\" })`\n * and pass it in.\n *\n * @example Basic auto-configuration\n * ```typescript\n * import bunyan from \"bunyan\";\n * import { install } from \"@logtape/adaptor-bunyan\";\n *\n * const bunyanLogger = bunyan.createLogger({ name: \"my-app\" });\n * install(bunyanLogger);\n *\n * import { getLogger } from \"@logtape/logtape\";\n * const logger = getLogger(\"my-app\");\n * logger.info(\"This will be logged through Bunyan\");\n * ```\n *\n * @example Auto-configuration with custom options\n * ```typescript\n * import bunyan from \"bunyan\";\n * import { install } from \"@logtape/adaptor-bunyan\";\n *\n * const bunyanLogger = bunyan.createLogger({ name: \"my-app\" });\n * install(bunyanLogger, {\n * category: {\n * position: \"start\",\n * decorator: \"[]\",\n * separator: \".\"\n * }\n * });\n * ```\n *\n * @param logger The Bunyan logger instance to forward logs to.\n * @param options Configuration options for the sink adapter.\n * @since 2.1.0\n */\nexport function install(\n logger: BunyanLogger,\n options: BunyanSinkOptions = {},\n): void {\n configureSync({\n sinks: {\n bunyan: getBunyanSink(logger, options),\n },\n loggers: [\n {\n category: [\"logtape\", \"meta\"],\n sinks: [\"bunyan\"],\n lowestLevel: \"warning\",\n },\n { category: [], sinks: [\"bunyan\"] },\n ],\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"mod.js","names":["value: unknown","parts: readonly (string | unknown)[]","valueFormatter: (value: unknown) => string","category: string","decorator: Required<CategoryOptions>[\"decorator\"]","logger: BunyanLogger","options: BunyanSinkOptions","categoryOptions: CategoryOptions | undefined","category: Required<CategoryOptions> | undefined","record: LogRecord"],"sources":["../src/mod.ts"],"sourcesContent":["import { configureSync, type LogRecord, type Sink } from \"@logtape/logtape\";\nimport { inspect } from \"node:util\";\n\n/**\n * A structural representation of a [Bunyan] logger sufficient for the\n * adapter's needs. Avoids importing Bunyan's own type definitions so the\n * package builds cleanly under both Deno and Node.js.\n *\n * [Bunyan]: https://github.com/trentm/node-bunyan\n *\n * @since 2.1.0\n */\nexport interface BunyanLogger {\n trace(\n mergeObject: Record<string, unknown>,\n format: string,\n ...args: unknown[]\n ): void;\n debug(\n mergeObject: Record<string, unknown>,\n format: string,\n ...args: unknown[]\n ): void;\n info(\n mergeObject: Record<string, unknown>,\n format: string,\n ...args: unknown[]\n ): void;\n warn(\n mergeObject: Record<string, unknown>,\n format: string,\n ...args: unknown[]\n ): void;\n error(\n mergeObject: Record<string, unknown>,\n format: string,\n ...args: unknown[]\n ): void;\n fatal(\n mergeObject: Record<string, unknown>,\n format: string,\n ...args: unknown[]\n ): void;\n}\n\n/**\n * Options for configuring the Bunyan sink adapter.\n * @since 2.1.0\n */\nexport interface BunyanSinkOptions {\n /**\n * Configuration for how LogTape categories are handled in Bunyan logs.\n * - `false` or `undefined`: Categories are not included in the log message\n * - `true`: Categories are included with default formatting\n * - `CategoryOptions`: Custom category formatting configuration\n */\n readonly category?: boolean | CategoryOptions;\n\n /**\n * A function that converts an interpolated value in the message template\n * to a string. By default, values are formatted with\n * `node:util#inspect()` using `breakLength: Infinity` so each value\n * appears on a single line in the rendered `msg` field.\n *\n * Supply a custom formatter to use, for example, `JSON.stringify`,\n * a redaction-aware serializer, or any other strategy.\n * @default `(value) => inspect(value, { breakLength: Infinity })`\n */\n readonly valueFormatter?: (value: unknown) => string;\n}\n\n/**\n * Configuration options for formatting LogTape categories in Bunyan log\n * messages.\n * @since 2.1.0\n */\nexport interface CategoryOptions {\n /**\n * The separator used to join category parts when multiple categories exist.\n * @default \"·\"\n */\n readonly separator?: string;\n\n /**\n * Where to position the category in the log message.\n * - `\"start\"`: Category appears at the beginning of the message\n * - `\"end\"`: Category appears at the end of the message\n * @default \"start\"\n */\n readonly position?: \"start\" | \"end\";\n\n /**\n * The decorator used to format the category in the log message.\n * - `\"[]\"`: [category] format\n * - `\"()\"`: (category) format\n * - `\"<>\"`: <category> format\n * - `\"{}\"`: {category} format\n * - `\":\"`: category: format\n * - `\"-\"`: category - format\n * - `\"|\"`: category | format\n * - `\"/\"`: category / format\n * - `\"\"`: category format (no decoration)\n * @default \":\"\n */\n readonly decorator?: \"[]\" | \"()\" | \"<>\" | \"{}\" | \":\" | \"-\" | \"|\" | \"/\" | \"\";\n}\n\nfunction defaultValueFormatter(value: unknown): string {\n return inspect(value, { breakLength: Infinity });\n}\n\nfunction renderMessage(\n parts: readonly (string | unknown)[],\n valueFormatter: (value: unknown) => string,\n): string {\n let rendered = \"\";\n for (let i = 0; i < parts.length; i++) {\n if (i % 2 === 0) {\n rendered += parts[i] as string;\n } else {\n rendered += valueFormatter(parts[i]);\n }\n }\n return rendered;\n}\n\nfunction decorateCategoryStart(\n category: string,\n decorator: Required<CategoryOptions>[\"decorator\"],\n): string {\n switch (decorator) {\n case \"[]\":\n return `[${category}] `;\n case \"()\":\n return `(${category}) `;\n case \"<>\":\n return `<${category}> `;\n case \"{}\":\n return `{${category}} `;\n case \":\":\n return `${category}: `;\n case \"-\":\n return `${category} - `;\n case \"|\":\n return `${category} | `;\n case \"/\":\n return `${category} / `;\n case \"\":\n return `${category} `;\n }\n}\n\nfunction decorateCategoryEnd(\n category: string,\n decorator: Required<CategoryOptions>[\"decorator\"],\n): string {\n switch (decorator) {\n case \"[]\":\n return ` [${category}]`;\n case \"()\":\n return ` (${category})`;\n case \"<>\":\n return ` <${category}>`;\n case \"{}\":\n return ` {${category}}`;\n case \":\":\n return `: ${category}`;\n case \"-\":\n return ` - ${category}`;\n case \"|\":\n return ` | ${category}`;\n case \"/\":\n return ` / ${category}`;\n case \"\":\n return ` ${category}`;\n }\n}\n\n/**\n * Creates a LogTape sink that forwards log records to a Bunyan logger.\n *\n * Bunyan does not provide a global default logger; you must create one\n * with `bunyan.createLogger({ name: \"...\" })` and pass it in.\n *\n * LogTape's `record.properties` are passed to Bunyan as the merge-object,\n * so any `serializers` configured on the Bunyan logger apply automatically.\n * The adapter also sets the merge-object's `time` field to a `Date`\n * derived from `record.timestamp`, so the resulting Bunyan record reflects\n * when LogTape created the record rather than when the sink call ran.\n *\n * Bunyan's other reserved fields (`name`, `hostname`, `pid`, `level`,\n * `msg`, `src`, `v`) should not be used as property keys.\n *\n * @example\n * ```typescript\n * import { configure } from \"@logtape/logtape\";\n * import { getBunyanSink } from \"@logtape/adaptor-bunyan\";\n * import bunyan from \"bunyan\";\n *\n * const bunyanLogger = bunyan.createLogger({ name: \"my-app\" });\n *\n * await configure({\n * sinks: {\n * bunyan: getBunyanSink(bunyanLogger, {\n * category: {\n * position: \"start\",\n * decorator: \"[]\",\n * separator: \".\"\n * }\n * })\n * },\n * loggers: [\n * { category: \"my-library\", sinks: [\"bunyan\"] }\n * ]\n * });\n * ```\n *\n * @param logger The Bunyan logger instance to forward logs to.\n * @param options Configuration options for the sink adapter.\n * @returns A LogTape sink function that can be used in LogTape configuration.\n * @since 2.1.0\n */\nexport function getBunyanSink(\n logger: BunyanLogger,\n options: BunyanSinkOptions = {},\n): Sink {\n const categoryOptions: CategoryOptions | undefined = !options.category\n ? undefined\n : typeof options.category === \"object\"\n ? options.category\n : {};\n const category: Required<CategoryOptions> | undefined =\n categoryOptions === undefined ? undefined : {\n separator: categoryOptions.separator ?? \"·\",\n position: categoryOptions.position ?? \"start\",\n decorator: categoryOptions.decorator ?? \":\",\n };\n const valueFormatter = options.valueFormatter ?? defaultValueFormatter;\n return (record: LogRecord) => {\n let message = renderMessage(record.message, valueFormatter);\n if (category !== undefined && record.category.length > 0) {\n const joined = record.category.join(category.separator);\n if (category.position === \"start\") {\n message = decorateCategoryStart(joined, category.decorator) + message;\n } else {\n message = message + decorateCategoryEnd(joined, category.decorator);\n }\n }\n const properties = {\n ...record.properties,\n time: new Date(record.timestamp),\n };\n switch (record.level) {\n case \"trace\":\n logger.trace(properties, message);\n return;\n case \"debug\":\n logger.debug(properties, message);\n return;\n case \"info\":\n logger.info(properties, message);\n return;\n case \"warning\":\n logger.warn(properties, message);\n return;\n case \"error\":\n logger.error(properties, message);\n return;\n case \"fatal\":\n logger.fatal(properties, message);\n return;\n }\n };\n}\n\n/**\n * Automatically configures LogTape to route all logs to a Bunyan logger.\n *\n * This is a convenience function that wires up `getBunyanSink()` as\n * LogTape's catch-all sink and routes the meta logger\n * (`[\"logtape\", \"meta\"]`) to the same sink with `lowestLevel: \"warning\"`,\n * matching the conventions of the other adapter packages.\n *\n * Bunyan does not provide a global default logger, so the logger argument\n * is required. Create one with `bunyan.createLogger({ name: \"...\" })`\n * and pass it in.\n *\n * @example Basic auto-configuration\n * ```typescript\n * import bunyan from \"bunyan\";\n * import { install } from \"@logtape/adaptor-bunyan\";\n *\n * const bunyanLogger = bunyan.createLogger({ name: \"my-app\" });\n * install(bunyanLogger);\n *\n * import { getLogger } from \"@logtape/logtape\";\n * const logger = getLogger(\"my-app\");\n * logger.info(\"This will be logged through Bunyan\");\n * ```\n *\n * @example Auto-configuration with custom options\n * ```typescript\n * import bunyan from \"bunyan\";\n * import { install } from \"@logtape/adaptor-bunyan\";\n *\n * const bunyanLogger = bunyan.createLogger({ name: \"my-app\" });\n * install(bunyanLogger, {\n * category: {\n * position: \"start\",\n * decorator: \"[]\",\n * separator: \".\"\n * }\n * });\n * ```\n *\n * @param logger The Bunyan logger instance to forward logs to.\n * @param options Configuration options for the sink adapter.\n * @since 2.1.0\n */\nexport function install(\n logger: BunyanLogger,\n options: BunyanSinkOptions = {},\n): void {\n configureSync({\n sinks: {\n bunyan: getBunyanSink(logger, options),\n },\n loggers: [\n {\n category: [\"logtape\", \"meta\"],\n sinks: [\"bunyan\"],\n lowestLevel: \"warning\",\n },\n { category: [], sinks: [\"bunyan\"] },\n ],\n });\n}\n"],"mappings":";;;;AA2GA,SAAS,sBAAsBA,OAAwB;AACrD,QAAO,QAAQ,OAAO,EAAE,aAAa,SAAU,EAAC;AACjD;AAED,SAAS,cACPC,OACAC,gBACQ;CACR,IAAI,WAAW;AACf,MAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,IAChC,KAAI,IAAI,MAAM,EACZ,aAAY,MAAM;KAElB,aAAY,eAAe,MAAM,GAAG;AAGxC,QAAO;AACR;AAED,SAAS,sBACPC,UACAC,WACQ;AACR,SAAQ,WAAR;EACE,KAAK,KACH,SAAQ,GAAG,SAAS;EACtB,KAAK,KACH,SAAQ,GAAG,SAAS;EACtB,KAAK,KACH,SAAQ,GAAG,SAAS;EACtB,KAAK,KACH,SAAQ,GAAG,SAAS;EACtB,KAAK,IACH,SAAQ,EAAE,SAAS;EACrB,KAAK,IACH,SAAQ,EAAE,SAAS;EACrB,KAAK,IACH,SAAQ,EAAE,SAAS;EACrB,KAAK,IACH,SAAQ,EAAE,SAAS;EACrB,KAAK,GACH,SAAQ,EAAE,SAAS;CACtB;AACF;AAED,SAAS,oBACPD,UACAC,WACQ;AACR,SAAQ,WAAR;EACE,KAAK,KACH,SAAQ,IAAI,SAAS;EACvB,KAAK,KACH,SAAQ,IAAI,SAAS;EACvB,KAAK,KACH,SAAQ,IAAI,SAAS;EACvB,KAAK,KACH,SAAQ,IAAI,SAAS;EACvB,KAAK,IACH,SAAQ,IAAI,SAAS;EACvB,KAAK,IACH,SAAQ,KAAK,SAAS;EACxB,KAAK,IACH,SAAQ,KAAK,SAAS;EACxB,KAAK,IACH,SAAQ,KAAK,SAAS;EACxB,KAAK,GACH,SAAQ,GAAG,SAAS;CACvB;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CD,SAAgB,cACdC,QACAC,UAA6B,CAAE,GACzB;CACN,MAAMC,mBAAgD,QAAQ,2BAEnD,QAAQ,aAAa,WAC5B,QAAQ,WACR,CAAE;CACN,MAAMC,WACJ,sCAA4C;EAC1C,WAAW,gBAAgB,aAAa;EACxC,UAAU,gBAAgB,YAAY;EACtC,WAAW,gBAAgB,aAAa;CACzC;CACH,MAAM,iBAAiB,QAAQ,kBAAkB;AACjD,QAAO,CAACC,WAAsB;EAC5B,IAAI,UAAU,cAAc,OAAO,SAAS,eAAe;AAC3D,MAAI,uBAA0B,OAAO,SAAS,SAAS,GAAG;GACxD,MAAM,SAAS,OAAO,SAAS,KAAK,SAAS,UAAU;AACvD,OAAI,SAAS,aAAa,QACxB,WAAU,sBAAsB,QAAQ,SAAS,UAAU,GAAG;OAE9D,WAAU,UAAU,oBAAoB,QAAQ,SAAS,UAAU;EAEtE;EACD,MAAM,aAAa;GACjB,GAAG,OAAO;GACV,MAAM,IAAI,KAAK,OAAO;EACvB;AACD,UAAQ,OAAO,OAAf;GACE,KAAK;AACH,WAAO,MAAM,YAAY,QAAQ;AACjC;GACF,KAAK;AACH,WAAO,MAAM,YAAY,QAAQ;AACjC;GACF,KAAK;AACH,WAAO,KAAK,YAAY,QAAQ;AAChC;GACF,KAAK;AACH,WAAO,KAAK,YAAY,QAAQ;AAChC;GACF,KAAK;AACH,WAAO,MAAM,YAAY,QAAQ;AACjC;GACF,KAAK;AACH,WAAO,MAAM,YAAY,QAAQ;AACjC;EACH;CACF;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CD,SAAgB,QACdJ,QACAC,UAA6B,CAAE,GACzB;AACN,eAAc;EACZ,OAAO,EACL,QAAQ,cAAc,QAAQ,QAAQ,CACvC;EACD,SAAS,CACP;GACE,UAAU,CAAC,WAAW,MAAO;GAC7B,OAAO,CAAC,QAAS;GACjB,aAAa;EACd,GACD;GAAE,UAAU,CAAE;GAAE,OAAO,CAAC,QAAS;EAAE,CACpC;CACF,EAAC;AACH"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@logtape/adaptor-bunyan",
3
- "version": "2.1.0-dev.0",
3
+ "version": "2.1.0-dev.550+abfa44ef",
4
4
  "description": "Bunyan adapter for LogTape logging library",
5
5
  "keywords": [
6
6
  "logging",
@@ -50,7 +50,7 @@
50
50
  ],
51
51
  "peerDependencies": {
52
52
  "bunyan": "^1.8.0",
53
- "@logtape/logtape": "^2.1.0"
53
+ "@logtape/logtape": "^2.1.0-dev.550+abfa44ef"
54
54
  },
55
55
  "devDependencies": {
56
56
  "@alinea/suite": "^0.6.3",