autotel-effect 4.0.0 → 4.0.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.
package/NOTICE ADDED
@@ -0,0 +1,9 @@
1
+ autotel
2
+ Copyright 2026 Jag Reehal
3
+
4
+ This product is licensed under the Apache License, Version 2.0.
5
+ See the LICENSE file for the full license text.
6
+
7
+ "autotel" is a trademark of Jag Reehal. The Apache License, Version 2.0
8
+ does not grant rights to use the "autotel" name. See TRADEMARKS.md for
9
+ the trademark policy.
package/README.md CHANGED
@@ -94,6 +94,15 @@ Effect.log('charged').pipe(Effect.annotateLogs({ 'order.id': 'o-1' }));
94
94
  // {"level":"info","msg":"charged","order.id":"o-1","traceId":"...","spanId":"..."}
95
95
  ```
96
96
 
97
+ Rich annotation values are flattened to the attribute shape the rest of autotel
98
+ produces: a nested object becomes dot-notation keys, a `Date` becomes an ISO
99
+ string, an `Error` becomes its message.
100
+
101
+ ```typescript
102
+ Effect.annotateLogs({ order: { id: 7 }, at: new Date(0) });
103
+ // attributes: { 'order.id': 7, at: '1970-01-01T00:00:00.000Z' }
104
+ ```
105
+
97
106
  Errors keep their stack: a `Cause` passed to `Effect.logError` (or an `Error`
98
107
  in the message parts) is logged as `err` rather than stringified into `msg`.
99
108
 
package/dist/index.cjs CHANGED
@@ -21,11 +21,13 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
21
21
  enumerable: true
22
22
  }) : target, mod));
23
23
  //#endregion
24
+ let _effect_opentelemetry_OtelLogger = require("@effect/opentelemetry/OtelLogger");
24
25
  let _effect_opentelemetry_OtelTracer = require("@effect/opentelemetry/OtelTracer");
25
26
  _effect_opentelemetry_OtelTracer = __toESM(_effect_opentelemetry_OtelTracer, 1);
26
27
  let _effect_opentelemetry_Resource = require("@effect/opentelemetry/Resource");
27
28
  _effect_opentelemetry_Resource = __toESM(_effect_opentelemetry_Resource, 1);
28
29
  let _opentelemetry_api_logs = require("@opentelemetry/api-logs");
30
+ let autotel = require("autotel");
29
31
  let autotel_logger = require("autotel/logger");
30
32
  let effect_Cause = require("effect/Cause");
31
33
  effect_Cause = __toESM(effect_Cause, 1);
@@ -82,12 +84,12 @@ function loggerLayer(options) {
82
84
  if (options.console ?? true) log[method](metadata, body);
83
85
  otelLogger().emit({
84
86
  body,
85
- severityNumber: LEVEL_TO_SEVERITY[logLevel],
87
+ severityNumber: (0, _effect_opentelemetry_OtelLogger.logLevelToSeverityNumber)(logLevel),
86
88
  severityText: logLevel,
87
- attributes: {
89
+ attributes: (0, autotel.flattenToAttributes)({
88
90
  ...metadata,
89
91
  ...Array.isArray(metadata.err) ? { err: metadata.err.join("\n") } : {}
90
- }
92
+ })
91
93
  });
92
94
  })], { mergeWithExisting: options.mergeWithExisting ?? false });
93
95
  }
@@ -99,16 +101,6 @@ const LEVEL_TO_METHOD = {
99
101
  Error: "error",
100
102
  Fatal: "error"
101
103
  };
102
- const LEVEL_TO_SEVERITY = {
103
- All: _opentelemetry_api_logs.SeverityNumber.UNSPECIFIED,
104
- Trace: _opentelemetry_api_logs.SeverityNumber.TRACE,
105
- Debug: _opentelemetry_api_logs.SeverityNumber.DEBUG,
106
- Info: _opentelemetry_api_logs.SeverityNumber.INFO,
107
- Warn: _opentelemetry_api_logs.SeverityNumber.WARN,
108
- Error: _opentelemetry_api_logs.SeverityNumber.ERROR,
109
- Fatal: _opentelemetry_api_logs.SeverityNumber.FATAL,
110
- None: _opentelemetry_api_logs.SeverityNumber.UNSPECIFIED
111
- };
112
104
  function formatPart(part) {
113
105
  if (typeof part === "string") return part;
114
106
  if (part instanceof Error) return String(part);
package/dist/index.js CHANGED
@@ -1,6 +1,8 @@
1
+ import { logLevelToSeverityNumber } from "@effect/opentelemetry/OtelLogger";
1
2
  import * as OtelTracer from "@effect/opentelemetry/OtelTracer";
2
3
  import * as Resource from "@effect/opentelemetry/Resource";
3
- import { SeverityNumber, logs } from "@opentelemetry/api-logs";
4
+ import { logs } from "@opentelemetry/api-logs";
5
+ import { flattenToAttributes } from "autotel";
4
6
  import { createBuiltinLogger } from "autotel/logger";
5
7
  import * as Cause from "effect/Cause";
6
8
  import * as Layer from "effect/Layer";
@@ -53,12 +55,12 @@ function loggerLayer(options) {
53
55
  if (options.console ?? true) log[method](metadata, body);
54
56
  otelLogger().emit({
55
57
  body,
56
- severityNumber: LEVEL_TO_SEVERITY[logLevel],
58
+ severityNumber: logLevelToSeverityNumber(logLevel),
57
59
  severityText: logLevel,
58
- attributes: {
60
+ attributes: flattenToAttributes({
59
61
  ...metadata,
60
62
  ...Array.isArray(metadata.err) ? { err: metadata.err.join("\n") } : {}
61
- }
63
+ })
62
64
  });
63
65
  })], { mergeWithExisting: options.mergeWithExisting ?? false });
64
66
  }
@@ -70,16 +72,6 @@ const LEVEL_TO_METHOD = {
70
72
  Error: "error",
71
73
  Fatal: "error"
72
74
  };
73
- const LEVEL_TO_SEVERITY = {
74
- All: SeverityNumber.UNSPECIFIED,
75
- Trace: SeverityNumber.TRACE,
76
- Debug: SeverityNumber.DEBUG,
77
- Info: SeverityNumber.INFO,
78
- Warn: SeverityNumber.WARN,
79
- Error: SeverityNumber.ERROR,
80
- Fatal: SeverityNumber.FATAL,
81
- None: SeverityNumber.UNSPECIFIED
82
- };
83
75
  function formatPart(part) {
84
76
  if (typeof part === "string") return part;
85
77
  if (part instanceof Error) return String(part);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "autotel-effect",
3
- "version": "4.0.0",
3
+ "version": "4.0.1",
4
4
  "description": "Bridge autotel and Effect v4: Effect.withSpan spans export through autotel's global TracerProvider",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -15,7 +15,9 @@
15
15
  },
16
16
  "files": [
17
17
  "dist",
18
- "README.md"
18
+ "README.md",
19
+ "LICENSE",
20
+ "NOTICE"
19
21
  ],
20
22
  "keywords": [
21
23
  "autotel",
@@ -53,7 +55,7 @@
53
55
  "@opentelemetry/api-logs": "^0.222.0",
54
56
  "@opentelemetry/sdk-logs": "^0.222.0",
55
57
  "@types/node": "^26.1.2",
56
- "autotel": "7.6.1",
58
+ "autotel": "7.6.2",
57
59
  "effect": "4.0.0-rc.112",
58
60
  "rimraf": "^6.1.3",
59
61
  "tsdown": "^0.22.14",