@effect/opentelemetry 0.1.3 → 0.3.0

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/NodeSdk.js CHANGED
@@ -24,7 +24,7 @@ const config = config => config;
24
24
  * @category layer
25
25
  */
26
26
  exports.config = config;
27
- const layer = config => Layer.scopedDiscard(Effect.acquireRelease(Effect.flatMap(Effect.all(config, _Resource.Resource), ([config, resource]) => Effect.sync(() => {
27
+ const layer = config => Layer.scopedDiscard(Effect.acquireRelease(Effect.flatMap(Effect.all([config, _Resource.Resource]), ([config, resource]) => Effect.sync(() => {
28
28
  const sdk = new _sdkNode.NodeSDK({
29
29
  ...config,
30
30
  resource
package/NodeSdk.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"NodeSdk.js","names":["Effect","_interopRequireWildcard","require","Layer","_Resource","_sdkNode","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","config","exports","layer","scopedDiscard","acquireRelease","flatMap","all","Resource","resource","sync","sdk","NodeSDK","start","promise","shutdown"],"sources":["./src/NodeSdk.ts"],"sourcesContent":[null],"mappings":";;;;;;AAGA,IAAAA,MAAA,gBAAAC,uBAAA,eAAAC,OAAA;AACA,IAAAC,KAAA,gBAAAF,uBAAA,eAAAC,OAAA;AACA,IAAAE,SAAA,gBAAAF,OAAA;AAEA,IAAAG,QAAA,gBAAAH,OAAA;AAAiD,SAAAI,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAN,wBAAAU,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAG,KAAA,GAAAR,wBAAA,CAAAC,WAAA,OAAAO,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAJ,GAAA,YAAAG,KAAA,CAAAE,GAAA,CAAAL,GAAA,SAAAM,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAX,GAAA,QAAAW,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAd,GAAA,EAAAW,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAV,GAAA,EAAAW,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAX,GAAA,CAAAW,GAAA,SAAAL,MAAA,CAAAJ,OAAA,GAAAF,GAAA,MAAAG,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAAhB,GAAA,EAAAM,MAAA,YAAAA,MAAA;AAPjD;;;;AAeA;;;;AAIO,MAAMW,MAAM,GAA8CA,MAAqB,IAAKA,MAAM;AAEjG;;;;AAAAC,OAAA,CAAAD,MAAA,GAAAA,MAAA;AAIO,MAAME,KAAK,GAChBF,MAA0C,IAE1CzB,KAAK,CAAC4B,aAAa,CAAC/B,MAAM,CAACgC,cAAc,CACvChC,MAAM,CAACiC,OAAO,CACZjC,MAAM,CAACkC,GAAG,CAACN,MAAM,EAAEO,kBAAQ,CAAC,EAC5B,CAAC,CAACP,MAAM,EAAEQ,QAAQ,CAAC,KACjBpC,MAAM,CAACqC,IAAI,CAAC,MAAK;EACf,MAAMC,GAAG,GAAG,IAAIC,gBAAO,CAAC;IAAE,GAAGX,MAAM;IAAEQ;EAAQ,CAAE,CAAC;EAChDE,GAAG,CAACE,KAAK,EAAE;EACX,OAAOF,GAAG;AACZ,CAAC,CAAC,CACL,EACAA,GAAG,IAAKtC,MAAM,CAACyC,OAAO,CAAC,MAAMH,GAAG,CAACI,QAAQ,EAAE,CAAC,CAC9C,CAAC;AAAAb,OAAA,CAAAC,KAAA,GAAAA,KAAA"}
1
+ {"version":3,"file":"NodeSdk.js","names":["Effect","_interopRequireWildcard","require","Layer","_Resource","_sdkNode","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","config","exports","layer","scopedDiscard","acquireRelease","flatMap","all","Resource","resource","sync","sdk","NodeSDK","start","promise","shutdown"],"sources":["./src/NodeSdk.ts"],"sourcesContent":[null],"mappings":";;;;;;AAGA,IAAAA,MAAA,gBAAAC,uBAAA,eAAAC,OAAA;AACA,IAAAC,KAAA,gBAAAF,uBAAA,eAAAC,OAAA;AACA,IAAAE,SAAA,gBAAAF,OAAA;AAEA,IAAAG,QAAA,gBAAAH,OAAA;AAAiD,SAAAI,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAN,wBAAAU,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAG,KAAA,GAAAR,wBAAA,CAAAC,WAAA,OAAAO,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAJ,GAAA,YAAAG,KAAA,CAAAE,GAAA,CAAAL,GAAA,SAAAM,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAX,GAAA,QAAAW,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAd,GAAA,EAAAW,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAV,GAAA,EAAAW,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAX,GAAA,CAAAW,GAAA,SAAAL,MAAA,CAAAJ,OAAA,GAAAF,GAAA,MAAAG,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAAhB,GAAA,EAAAM,MAAA,YAAAA,MAAA;AAPjD;;;;AAeA;;;;AAIO,MAAMW,MAAM,GAA8CA,MAAqB,IAAKA,MAAM;AAEjG;;;;AAAAC,OAAA,CAAAD,MAAA,GAAAA,MAAA;AAIO,MAAME,KAAK,GAChBF,MAA0C,IAE1CzB,KAAK,CAAC4B,aAAa,CAAC/B,MAAM,CAACgC,cAAc,CACvChC,MAAM,CAACiC,OAAO,CACZjC,MAAM,CAACkC,GAAG,CAAC,CAACN,MAAM,EAAEO,kBAAQ,CAAC,CAAC,EAC9B,CAAC,CAACP,MAAM,EAAEQ,QAAQ,CAAC,KACjBpC,MAAM,CAACqC,IAAI,CAAC,MAAK;EACf,MAAMC,GAAG,GAAG,IAAIC,gBAAO,CAAC;IAAE,GAAGX,MAAM;IAAEQ;EAAQ,CAAE,CAAC;EAChDE,GAAG,CAACE,KAAK,EAAE;EACX,OAAOF,GAAG;AACZ,CAAC,CAAC,CACL,EACAA,GAAG,IAAKtC,MAAM,CAACyC,OAAO,CAAC,MAAMH,GAAG,CAACI,QAAQ,EAAE,CAAC,CAC9C,CAAC;AAAAb,OAAA,CAAAC,KAAA,GAAAA,KAAA"}
package/Tracer.d.ts CHANGED
@@ -1,18 +1,50 @@
1
1
  /**
2
2
  * @since 1.0.0
3
3
  */
4
+ import type { Tag } from "@effect/data/Context";
4
5
  import type { Effect } from "@effect/io/Effect";
5
6
  import type { Layer } from "@effect/io/Layer";
6
- import type { Tracer } from "@effect/io/Tracer";
7
+ import type { ExternalSpan, Tracer } from "@effect/io/Tracer";
8
+ import { OtelSupervisor } from "@effect/opentelemetry/internal/tracer";
7
9
  import type { Resource } from "@effect/opentelemetry/Resource";
10
+ import type * as Otel from "@opentelemetry/api";
8
11
  /**
9
12
  * @since 1.0.0
10
13
  * @category constructors
11
14
  */
12
15
  export declare const make: Effect<Resource, never, Tracer>;
16
+ export {
17
+ /**
18
+ * An effect supervisor that sets up the OpenTelemetry context for the fiber executions.
19
+ *
20
+ * @since 1.0.0
21
+ * @category supervisor
22
+ */
23
+ OtelSupervisor };
24
+ /**
25
+ * @since 1.0.0
26
+ * @category constructors
27
+ */
28
+ export declare const makeExternalSpan: (options: {
29
+ readonly name: string;
30
+ readonly traceId: string;
31
+ readonly spanId: string;
32
+ readonly traceFlags?: Otel.TraceFlags;
33
+ readonly traceState?: string;
34
+ }) => ExternalSpan;
13
35
  /**
14
36
  * @since 1.0.0
15
37
  * @category layers
16
38
  */
17
39
  export declare const layer: Layer<Resource, never, never>;
40
+ /**
41
+ * @since 1.0.0
42
+ * @category tags
43
+ */
44
+ export declare const TraceFlags: Tag<Otel.TraceFlags, Otel.TraceFlags>;
45
+ /**
46
+ * @since 1.0.0
47
+ * @category tags
48
+ */
49
+ export declare const TraceState: Tag<Otel.TraceState, Otel.TraceState>;
18
50
  //# sourceMappingURL=Tracer.d.ts.map
package/Tracer.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Tracer.d.ts","sourceRoot":"","sources":["./src/Tracer.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAA;AAE9D;;;GAGG;AACH,eAAO,MAAM,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAiB,CAAA;AAElE;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAkB,CAAA"}
1
+ {"version":3,"file":"Tracer.d.ts","sourceRoot":"","sources":["./src/Tracer.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE7D,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAA;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAA;AAC9D,OAAO,KAAK,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAE/C;;;GAGG;AACH,eAAO,MAAM,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAiB,CAAA;AAElE,OAAO;AACL;;;;;GAKG;AACH,cAAc,EACf,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,CAC7B,OAAO,EAAE;IACP,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,UAAU,CAAA;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAC7B,KACE,YAAwC,CAAA;AAE7C;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAkB,CAAA;AAElE;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAA0B,CAAA;AAEvF;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAA0B,CAAA"}
package/Tracer.js CHANGED
@@ -3,8 +3,14 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.make = exports.layer = void 0;
7
- var internal = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/opentelemetry/internal_effect_untraced/tracer"));
6
+ Object.defineProperty(exports, "OtelSupervisor", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return internal.OtelSupervisor;
10
+ }
11
+ });
12
+ exports.makeExternalSpan = exports.make = exports.layer = exports.TraceState = exports.TraceFlags = void 0;
13
+ var internal = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/opentelemetry/internal/tracer"));
8
14
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
9
15
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
10
16
  /**
@@ -12,11 +18,29 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
12
18
  * @category constructors
13
19
  */
14
20
  const make = internal.make;
21
+ exports.make = make;
22
+ /**
23
+ * @since 1.0.0
24
+ * @category constructors
25
+ */
26
+ const makeExternalSpan = internal.makeExternalSpan;
15
27
  /**
16
28
  * @since 1.0.0
17
29
  * @category layers
18
30
  */
19
- exports.make = make;
31
+ exports.makeExternalSpan = makeExternalSpan;
20
32
  const layer = internal.layer;
33
+ /**
34
+ * @since 1.0.0
35
+ * @category tags
36
+ */
21
37
  exports.layer = layer;
38
+ const TraceFlags = internal.traceFlagsTag;
39
+ /**
40
+ * @since 1.0.0
41
+ * @category tags
42
+ */
43
+ exports.TraceFlags = TraceFlags;
44
+ const TraceState = internal.traceStateTag;
45
+ exports.TraceState = TraceState;
22
46
  //# sourceMappingURL=Tracer.js.map
package/Tracer.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Tracer.js","names":["internal","_interopRequireWildcard","require","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","make","exports","layer"],"sources":["./src/Tracer.ts"],"sourcesContent":[null],"mappings":";;;;;;AAMA,IAAAA,QAAA,gBAAAC,uBAAA,eAAAC,OAAA;AAAiF,SAAAC,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAH,wBAAAO,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAG,KAAA,GAAAR,wBAAA,CAAAC,WAAA,OAAAO,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAJ,GAAA,YAAAG,KAAA,CAAAE,GAAA,CAAAL,GAAA,SAAAM,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAX,GAAA,QAAAW,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAd,GAAA,EAAAW,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAV,GAAA,EAAAW,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAX,GAAA,CAAAW,GAAA,SAAAL,MAAA,CAAAJ,OAAA,GAAAF,GAAA,MAAAG,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAAhB,GAAA,EAAAM,MAAA,YAAAA,MAAA;AAGjF;;;;AAIO,MAAMW,IAAI,GAAoCzB,QAAQ,CAACyB,IAAI;AAElE;;;;AAAAC,OAAA,CAAAD,IAAA,GAAAA,IAAA;AAIO,MAAME,KAAK,GAAkC3B,QAAQ,CAAC2B,KAAK;AAAAD,OAAA,CAAAC,KAAA,GAAAA,KAAA"}
1
+ {"version":3,"file":"Tracer.js","names":["internal","_interopRequireWildcard","require","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","make","exports","makeExternalSpan","layer","TraceFlags","traceFlagsTag","TraceState","traceStateTag"],"sources":["./src/Tracer.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;AAOA,IAAAA,QAAA,gBAAAC,uBAAA,eAAAC,OAAA;AAAiE,SAAAC,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAH,wBAAAO,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAG,KAAA,GAAAR,wBAAA,CAAAC,WAAA,OAAAO,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAJ,GAAA,YAAAG,KAAA,CAAAE,GAAA,CAAAL,GAAA,SAAAM,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAX,GAAA,QAAAW,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAd,GAAA,EAAAW,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAV,GAAA,EAAAW,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAX,GAAA,CAAAW,GAAA,SAAAL,MAAA,CAAAJ,OAAA,GAAAF,GAAA,MAAAG,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAAhB,GAAA,EAAAM,MAAA,YAAAA,MAAA;AAKjE;;;;AAIO,MAAMW,IAAI,GAAoCzB,QAAQ,CAACyB,IAAI;AAAAC,OAAA,CAAAD,IAAA,GAAAA,IAAA;AAYlE;;;;AAIO,MAAME,gBAAgB,GAQT3B,QAAQ,CAAC2B,gBAAgB;AAE7C;;;;AAAAD,OAAA,CAAAC,gBAAA,GAAAA,gBAAA;AAIO,MAAMC,KAAK,GAAkC5B,QAAQ,CAAC4B,KAAK;AAElE;;;;AAAAF,OAAA,CAAAE,KAAA,GAAAA,KAAA;AAIO,MAAMC,UAAU,GAA0C7B,QAAQ,CAAC8B,aAAa;AAEvF;;;;AAAAJ,OAAA,CAAAG,UAAA,GAAAA,UAAA;AAIO,MAAME,UAAU,GAA0C/B,QAAQ,CAACgC,aAAa;AAAAN,OAAA,CAAAK,UAAA,GAAAA,UAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracer.d.ts","sourceRoot":"","sources":["../src/internal/tracer.ts"],"names":[],"mappings":""}
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.traceStateTag = exports.traceFlagsTag = exports.supervisor = exports.makeExternalSpan = exports.make = exports.layer = exports.OtelSupervisor = exports.OtelSpan = void 0;
7
+ var Context = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Context"));
8
+ var List = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/List"));
9
+ var Option = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Option"));
10
+ var Cause = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Cause"));
11
+ var Effect = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Effect"));
12
+ var FiberRef = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/FiberRef"));
13
+ var FiberRefs = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/FiberRefs"));
14
+ var Layer = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Layer"));
15
+ var Supervisor = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Supervisor"));
16
+ var Tracer = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Tracer"));
17
+ var _Resource = /*#__PURE__*/require("@effect/opentelemetry/Resource");
18
+ var OtelApi = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@opentelemetry/api"));
19
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
20
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
+ /** @internal */
22
+ class OtelSpan {
23
+ constructor(traceApi, contextApi, tracer, name, parent, context, startTime) {
24
+ this.name = name;
25
+ this.parent = parent;
26
+ this.context = context;
27
+ this._tag = "Span";
28
+ this.attributes = new Map();
29
+ const active = contextApi.active();
30
+ this.span = tracer.startSpan(name, {
31
+ startTime: nanosToHrTime(startTime)
32
+ }, parent._tag === "Some" ? populateContext(active, parent.value, context) : active);
33
+ const spanContext = this.span.spanContext();
34
+ this.spanId = spanContext.spanId;
35
+ this.traceId = spanContext.traceId;
36
+ this.status = {
37
+ _tag: "Started",
38
+ startTime
39
+ };
40
+ }
41
+ attribute(key, value) {
42
+ this.span.setAttribute(key, value);
43
+ this.attributes.set(key, value);
44
+ }
45
+ end(endTime, exit) {
46
+ this.status = {
47
+ _tag: "Ended",
48
+ endTime,
49
+ exit,
50
+ startTime: this.status.startTime
51
+ };
52
+ if (exit._tag === "Success") {
53
+ this.span.setStatus({
54
+ code: OtelApi.SpanStatusCode.OK
55
+ });
56
+ } else {
57
+ if (Cause.isInterruptedOnly(exit.cause)) {
58
+ this.span.setStatus({
59
+ code: OtelApi.SpanStatusCode.OK
60
+ });
61
+ } else {
62
+ this.span.setStatus({
63
+ code: OtelApi.SpanStatusCode.ERROR,
64
+ message: Cause.pretty(exit.cause)
65
+ });
66
+ }
67
+ }
68
+ this.span.end(nanosToHrTime(endTime));
69
+ }
70
+ event(name, startTime, attributes) {
71
+ this.span.addEvent(name, attributes, nanosToHrTime(startTime));
72
+ }
73
+ }
74
+ /** @internal */
75
+ exports.OtelSpan = OtelSpan;
76
+ const make = /*#__PURE__*/Effect.map(tracer => Tracer.make({
77
+ span(name, parent, context, startTime) {
78
+ return new OtelSpan(OtelApi.trace, OtelApi.context, tracer, name, parent, context, startTime);
79
+ }
80
+ }))( /*#__PURE__*/Effect.flatMap(resource => Effect.sync(() => OtelApi.trace.getTracer(resource.attributes["service.name"], resource.attributes["service.version"])))(_Resource.Resource));
81
+ /** @internal */
82
+ exports.make = make;
83
+ const traceFlagsTag = /*#__PURE__*/Context.Tag("@effect/opentelemetry/traceFlags");
84
+ /** @internal */
85
+ exports.traceFlagsTag = traceFlagsTag;
86
+ const traceStateTag = /*#__PURE__*/Context.Tag("@effect/opentelemetry/traceState");
87
+ /** @internal */
88
+ exports.traceStateTag = traceStateTag;
89
+ const makeExternalSpan = options => {
90
+ let context = Context.empty();
91
+ if (options.traceFlags) {
92
+ context = Context.add(context, traceFlagsTag, options.traceFlags);
93
+ }
94
+ if (options.traceState) {
95
+ context = Option.match(createTraceState(options.traceState), {
96
+ onNone: () => context,
97
+ onSome: traceState => Context.add(context, traceStateTag, traceState)
98
+ });
99
+ }
100
+ return {
101
+ _tag: "ExternalSpan",
102
+ traceId: options.traceId,
103
+ spanId: options.spanId,
104
+ context
105
+ };
106
+ };
107
+ /** @internal */
108
+ exports.makeExternalSpan = makeExternalSpan;
109
+ class OtelSupervisor extends Supervisor.AbstractSupervisor {
110
+ value() {
111
+ return Effect.unit;
112
+ }
113
+ onRun(execution, fiber) {
114
+ const currentSpan = Option.flatMap(FiberRefs.get(fiber.unsafeGetFiberRefs(), FiberRef.currentTracerSpan), List.head);
115
+ if (currentSpan._tag === "None") {
116
+ return execution();
117
+ }
118
+ return OtelApi.context.with(populateContext(OtelApi.context.active(), currentSpan.value), execution);
119
+ }
120
+ }
121
+ /** @internal */
122
+ exports.OtelSupervisor = OtelSupervisor;
123
+ const supervisor = /*#__PURE__*/new OtelSupervisor();
124
+ /** @internal */
125
+ exports.supervisor = supervisor;
126
+ const layer = /*#__PURE__*/Layer.merge( /*#__PURE__*/Layer.unwrapEffect( /*#__PURE__*/Effect.map(make, Effect.setTracer)), /*#__PURE__*/Supervisor.addSupervisor(supervisor));
127
+ // -------------------------------------------------------------------------------------
128
+ // utils
129
+ // -------------------------------------------------------------------------------------
130
+ exports.layer = layer;
131
+ const bigint1e9 = 1000000000n;
132
+ const nanosToHrTime = timestamp => {
133
+ return [Number(timestamp / bigint1e9), Number(timestamp % bigint1e9)];
134
+ };
135
+ const createTraceState = /*#__PURE__*/Option.liftThrowable(OtelApi.createTraceState);
136
+ const populateContext = (otelContext, span, context) => span instanceof OtelSpan ? OtelApi.trace.setSpan(otelContext, span.span) : OtelApi.trace.setSpanContext(otelContext, {
137
+ spanId: span.spanId,
138
+ traceId: span.traceId,
139
+ isRemote: span._tag === "ExternalSpan",
140
+ traceFlags: Option.getOrElse(context ? extractTraceTag(span, context, traceFlagsTag) : Context.getOption(span.context, traceFlagsTag), () => OtelApi.TraceFlags.SAMPLED),
141
+ traceState: Option.getOrUndefined(context ? extractTraceTag(span, context, traceStateTag) : Context.getOption(span.context, traceStateTag))
142
+ });
143
+ const extractTraceTag = (parent, context, tag) => Option.orElse(Context.getOption(context, tag), () => Context.getOption(parent.context, tag));
144
+ //# sourceMappingURL=tracer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracer.js","names":["Context","_interopRequireWildcard","require","List","Option","Cause","Effect","FiberRef","FiberRefs","Layer","Supervisor","Tracer","_Resource","OtelApi","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","OtelSpan","constructor","traceApi","contextApi","tracer","name","parent","context","startTime","_tag","attributes","Map","active","span","startSpan","nanosToHrTime","populateContext","value","spanContext","spanId","traceId","status","attribute","setAttribute","end","endTime","exit","setStatus","code","SpanStatusCode","OK","isInterruptedOnly","cause","ERROR","message","pretty","event","addEvent","exports","make","map","trace","flatMap","resource","sync","getTracer","Resource","traceFlagsTag","Tag","traceStateTag","makeExternalSpan","options","empty","traceFlags","add","traceState","match","createTraceState","onNone","onSome","OtelSupervisor","AbstractSupervisor","unit","onRun","execution","fiber","currentSpan","unsafeGetFiberRefs","currentTracerSpan","head","with","supervisor","layer","merge","unwrapEffect","setTracer","addSupervisor","bigint1e9","timestamp","Number","liftThrowable","otelContext","setSpan","setSpanContext","isRemote","getOrElse","extractTraceTag","getOption","TraceFlags","SAMPLED","getOrUndefined","tag","orElse"],"sources":["../src/internal/tracer.ts"],"sourcesContent":[null],"mappings":"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"}
package/mjs/NodeSdk.mjs CHANGED
@@ -14,7 +14,7 @@ export const config = config => config;
14
14
  * @since 1.0.0
15
15
  * @category layer
16
16
  */
17
- export const layer = config => Layer.scopedDiscard(Effect.acquireRelease(Effect.flatMap(Effect.all(config, Resource), ([config, resource]) => Effect.sync(() => {
17
+ export const layer = config => Layer.scopedDiscard(Effect.acquireRelease(Effect.flatMap(Effect.all([config, Resource]), ([config, resource]) => Effect.sync(() => {
18
18
  const sdk = new NodeSDK({
19
19
  ...config,
20
20
  resource
@@ -1 +1 @@
1
- {"version":3,"file":"NodeSdk.mjs","names":["Effect","Layer","Resource","NodeSDK","config","layer","scopedDiscard","acquireRelease","flatMap","all","resource","sync","sdk","start","promise","shutdown"],"sources":["../src/NodeSdk.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,MAAM,MAAM,mBAAmB;AAC3C,OAAO,KAAKC,KAAK,MAAM,kBAAkB;AACzC,SAASC,QAAQ,QAAQ,gCAAgC;AAEzD,SAASC,OAAO,QAAQ,yBAAyB;AAQjD;;;;AAIA,OAAO,MAAMC,MAAM,GAA8CA,MAAqB,IAAKA,MAAM;AAEjG;;;;AAIA,OAAO,MAAMC,KAAK,GAChBD,MAA0C,IAE1CH,KAAK,CAACK,aAAa,CAACN,MAAM,CAACO,cAAc,CACvCP,MAAM,CAACQ,OAAO,CACZR,MAAM,CAACS,GAAG,CAACL,MAAM,EAAEF,QAAQ,CAAC,EAC5B,CAAC,CAACE,MAAM,EAAEM,QAAQ,CAAC,KACjBV,MAAM,CAACW,IAAI,CAAC,MAAK;EACf,MAAMC,GAAG,GAAG,IAAIT,OAAO,CAAC;IAAE,GAAGC,MAAM;IAAEM;EAAQ,CAAE,CAAC;EAChDE,GAAG,CAACC,KAAK,EAAE;EACX,OAAOD,GAAG;AACZ,CAAC,CAAC,CACL,EACAA,GAAG,IAAKZ,MAAM,CAACc,OAAO,CAAC,MAAMF,GAAG,CAACG,QAAQ,EAAE,CAAC,CAC9C,CAAC"}
1
+ {"version":3,"file":"NodeSdk.mjs","names":["Effect","Layer","Resource","NodeSDK","config","layer","scopedDiscard","acquireRelease","flatMap","all","resource","sync","sdk","start","promise","shutdown"],"sources":["../src/NodeSdk.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,MAAM,MAAM,mBAAmB;AAC3C,OAAO,KAAKC,KAAK,MAAM,kBAAkB;AACzC,SAASC,QAAQ,QAAQ,gCAAgC;AAEzD,SAASC,OAAO,QAAQ,yBAAyB;AAQjD;;;;AAIA,OAAO,MAAMC,MAAM,GAA8CA,MAAqB,IAAKA,MAAM;AAEjG;;;;AAIA,OAAO,MAAMC,KAAK,GAChBD,MAA0C,IAE1CH,KAAK,CAACK,aAAa,CAACN,MAAM,CAACO,cAAc,CACvCP,MAAM,CAACQ,OAAO,CACZR,MAAM,CAACS,GAAG,CAAC,CAACL,MAAM,EAAEF,QAAQ,CAAC,CAAC,EAC9B,CAAC,CAACE,MAAM,EAAEM,QAAQ,CAAC,KACjBV,MAAM,CAACW,IAAI,CAAC,MAAK;EACf,MAAMC,GAAG,GAAG,IAAIT,OAAO,CAAC;IAAE,GAAGC,MAAM;IAAEM;EAAQ,CAAE,CAAC;EAChDE,GAAG,CAACC,KAAK,EAAE;EACX,OAAOD,GAAG;AACZ,CAAC,CAAC,CACL,EACAA,GAAG,IAAKZ,MAAM,CAACc,OAAO,CAAC,MAAMF,GAAG,CAACG,QAAQ,EAAE,CAAC,CAC9C,CAAC"}
package/mjs/Tracer.mjs CHANGED
@@ -1,12 +1,36 @@
1
- import * as internal from "@effect/opentelemetry/internal_effect_untraced/tracer";
1
+ import * as internal from "@effect/opentelemetry/internal/tracer";
2
+ import { OtelSupervisor } from "@effect/opentelemetry/internal/tracer";
2
3
  /**
3
4
  * @since 1.0.0
4
5
  * @category constructors
5
6
  */
6
7
  export const make = internal.make;
8
+ export {
9
+ /**
10
+ * An effect supervisor that sets up the OpenTelemetry context for the fiber executions.
11
+ *
12
+ * @since 1.0.0
13
+ * @category supervisor
14
+ */
15
+ OtelSupervisor };
16
+ /**
17
+ * @since 1.0.0
18
+ * @category constructors
19
+ */
20
+ export const makeExternalSpan = internal.makeExternalSpan;
7
21
  /**
8
22
  * @since 1.0.0
9
23
  * @category layers
10
24
  */
11
25
  export const layer = internal.layer;
26
+ /**
27
+ * @since 1.0.0
28
+ * @category tags
29
+ */
30
+ export const TraceFlags = internal.traceFlagsTag;
31
+ /**
32
+ * @since 1.0.0
33
+ * @category tags
34
+ */
35
+ export const TraceState = internal.traceStateTag;
12
36
  //# sourceMappingURL=Tracer.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tracer.mjs","names":["internal","make","layer"],"sources":["../src/Tracer.ts"],"sourcesContent":[null],"mappings":"AAMA,OAAO,KAAKA,QAAQ,MAAM,uDAAuD;AAGjF;;;;AAIA,OAAO,MAAMC,IAAI,GAAoCD,QAAQ,CAACC,IAAI;AAElE;;;;AAIA,OAAO,MAAMC,KAAK,GAAkCF,QAAQ,CAACE,KAAK"}
1
+ {"version":3,"file":"Tracer.mjs","names":["internal","OtelSupervisor","make","makeExternalSpan","layer","TraceFlags","traceFlagsTag","TraceState","traceStateTag"],"sources":["../src/Tracer.ts"],"sourcesContent":[null],"mappings":"AAOA,OAAO,KAAKA,QAAQ,MAAM,uCAAuC;AACjE,SAASC,cAAc,QAAQ,uCAAuC;AAItE;;;;AAIA,OAAO,MAAMC,IAAI,GAAoCF,QAAQ,CAACE,IAAI;AAElE;AACE;;;;;;AAMAD,cAAc;AAGhB;;;;AAIA,OAAO,MAAME,gBAAgB,GAQTH,QAAQ,CAACG,gBAAgB;AAE7C;;;;AAIA,OAAO,MAAMC,KAAK,GAAkCJ,QAAQ,CAACI,KAAK;AAElE;;;;AAIA,OAAO,MAAMC,UAAU,GAA0CL,QAAQ,CAACM,aAAa;AAEvF;;;;AAIA,OAAO,MAAMC,UAAU,GAA0CP,QAAQ,CAACQ,aAAa"}
@@ -0,0 +1,128 @@
1
+ import * as Context from "@effect/data/Context";
2
+ import * as List from "@effect/data/List";
3
+ import * as Option from "@effect/data/Option";
4
+ import * as Cause from "@effect/io/Cause";
5
+ import * as Effect from "@effect/io/Effect";
6
+ import * as FiberRef from "@effect/io/FiberRef";
7
+ import * as FiberRefs from "@effect/io/FiberRefs";
8
+ import * as Layer from "@effect/io/Layer";
9
+ import * as Supervisor from "@effect/io/Supervisor";
10
+ import * as Tracer from "@effect/io/Tracer";
11
+ import { Resource } from "@effect/opentelemetry/Resource";
12
+ import * as OtelApi from "@opentelemetry/api";
13
+ /** @internal */
14
+ export class OtelSpan {
15
+ constructor(traceApi, contextApi, tracer, name, parent, context, startTime) {
16
+ this.name = name;
17
+ this.parent = parent;
18
+ this.context = context;
19
+ this._tag = "Span";
20
+ this.attributes = new Map();
21
+ const active = contextApi.active();
22
+ this.span = tracer.startSpan(name, {
23
+ startTime: nanosToHrTime(startTime)
24
+ }, parent._tag === "Some" ? populateContext(active, parent.value, context) : active);
25
+ const spanContext = this.span.spanContext();
26
+ this.spanId = spanContext.spanId;
27
+ this.traceId = spanContext.traceId;
28
+ this.status = {
29
+ _tag: "Started",
30
+ startTime
31
+ };
32
+ }
33
+ attribute(key, value) {
34
+ this.span.setAttribute(key, value);
35
+ this.attributes.set(key, value);
36
+ }
37
+ end(endTime, exit) {
38
+ this.status = {
39
+ _tag: "Ended",
40
+ endTime,
41
+ exit,
42
+ startTime: this.status.startTime
43
+ };
44
+ if (exit._tag === "Success") {
45
+ this.span.setStatus({
46
+ code: OtelApi.SpanStatusCode.OK
47
+ });
48
+ } else {
49
+ if (Cause.isInterruptedOnly(exit.cause)) {
50
+ this.span.setStatus({
51
+ code: OtelApi.SpanStatusCode.OK
52
+ });
53
+ } else {
54
+ this.span.setStatus({
55
+ code: OtelApi.SpanStatusCode.ERROR,
56
+ message: Cause.pretty(exit.cause)
57
+ });
58
+ }
59
+ }
60
+ this.span.end(nanosToHrTime(endTime));
61
+ }
62
+ event(name, startTime, attributes) {
63
+ this.span.addEvent(name, attributes, nanosToHrTime(startTime));
64
+ }
65
+ }
66
+ /** @internal */
67
+ export const make = /*#__PURE__*/Effect.map(tracer => Tracer.make({
68
+ span(name, parent, context, startTime) {
69
+ return new OtelSpan(OtelApi.trace, OtelApi.context, tracer, name, parent, context, startTime);
70
+ }
71
+ }))( /*#__PURE__*/Effect.flatMap(resource => Effect.sync(() => OtelApi.trace.getTracer(resource.attributes["service.name"], resource.attributes["service.version"])))(Resource));
72
+ /** @internal */
73
+ export const traceFlagsTag = /*#__PURE__*/Context.Tag("@effect/opentelemetry/traceFlags");
74
+ /** @internal */
75
+ export const traceStateTag = /*#__PURE__*/Context.Tag("@effect/opentelemetry/traceState");
76
+ /** @internal */
77
+ export const makeExternalSpan = options => {
78
+ let context = Context.empty();
79
+ if (options.traceFlags) {
80
+ context = Context.add(context, traceFlagsTag, options.traceFlags);
81
+ }
82
+ if (options.traceState) {
83
+ context = Option.match(createTraceState(options.traceState), {
84
+ onNone: () => context,
85
+ onSome: traceState => Context.add(context, traceStateTag, traceState)
86
+ });
87
+ }
88
+ return {
89
+ _tag: "ExternalSpan",
90
+ traceId: options.traceId,
91
+ spanId: options.spanId,
92
+ context
93
+ };
94
+ };
95
+ /** @internal */
96
+ export class OtelSupervisor extends Supervisor.AbstractSupervisor {
97
+ value() {
98
+ return Effect.unit;
99
+ }
100
+ onRun(execution, fiber) {
101
+ const currentSpan = Option.flatMap(FiberRefs.get(fiber.unsafeGetFiberRefs(), FiberRef.currentTracerSpan), List.head);
102
+ if (currentSpan._tag === "None") {
103
+ return execution();
104
+ }
105
+ return OtelApi.context.with(populateContext(OtelApi.context.active(), currentSpan.value), execution);
106
+ }
107
+ }
108
+ /** @internal */
109
+ export const supervisor = /*#__PURE__*/new OtelSupervisor();
110
+ /** @internal */
111
+ export const layer = /*#__PURE__*/Layer.merge( /*#__PURE__*/Layer.unwrapEffect( /*#__PURE__*/Effect.map(make, Effect.setTracer)), /*#__PURE__*/Supervisor.addSupervisor(supervisor));
112
+ // -------------------------------------------------------------------------------------
113
+ // utils
114
+ // -------------------------------------------------------------------------------------
115
+ const bigint1e9 = 1000000000n;
116
+ const nanosToHrTime = timestamp => {
117
+ return [Number(timestamp / bigint1e9), Number(timestamp % bigint1e9)];
118
+ };
119
+ const createTraceState = /*#__PURE__*/Option.liftThrowable(OtelApi.createTraceState);
120
+ const populateContext = (otelContext, span, context) => span instanceof OtelSpan ? OtelApi.trace.setSpan(otelContext, span.span) : OtelApi.trace.setSpanContext(otelContext, {
121
+ spanId: span.spanId,
122
+ traceId: span.traceId,
123
+ isRemote: span._tag === "ExternalSpan",
124
+ traceFlags: Option.getOrElse(context ? extractTraceTag(span, context, traceFlagsTag) : Context.getOption(span.context, traceFlagsTag), () => OtelApi.TraceFlags.SAMPLED),
125
+ traceState: Option.getOrUndefined(context ? extractTraceTag(span, context, traceStateTag) : Context.getOption(span.context, traceStateTag))
126
+ });
127
+ const extractTraceTag = (parent, context, tag) => Option.orElse(Context.getOption(context, tag), () => Context.getOption(parent.context, tag));
128
+ //# sourceMappingURL=tracer.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracer.mjs","names":["Context","List","Option","Cause","Effect","FiberRef","FiberRefs","Layer","Supervisor","Tracer","Resource","OtelApi","OtelSpan","constructor","traceApi","contextApi","tracer","name","parent","context","startTime","_tag","attributes","Map","active","span","startSpan","nanosToHrTime","populateContext","value","spanContext","spanId","traceId","status","attribute","key","setAttribute","set","end","endTime","exit","setStatus","code","SpanStatusCode","OK","isInterruptedOnly","cause","ERROR","message","pretty","event","addEvent","make","map","trace","flatMap","resource","sync","getTracer","traceFlagsTag","Tag","traceStateTag","makeExternalSpan","options","empty","traceFlags","add","traceState","match","createTraceState","onNone","onSome","OtelSupervisor","AbstractSupervisor","unit","onRun","execution","fiber","currentSpan","get","unsafeGetFiberRefs","currentTracerSpan","head","with","supervisor","layer","merge","unwrapEffect","setTracer","addSupervisor","bigint1e9","timestamp","Number","liftThrowable","otelContext","setSpan","setSpanContext","isRemote","getOrElse","extractTraceTag","getOption","TraceFlags","SAMPLED","getOrUndefined","tag","orElse"],"sources":["../../src/internal/tracer.ts"],"sourcesContent":[null],"mappings":"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"}
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@effect/opentelemetry",
3
- "version": "0.1.3",
3
+ "version": "0.3.0",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/Effect-TS/opentelemetry.git"
8
8
  },
9
9
  "dependencies": {
10
- "@effect/data": "^0.12.9",
11
- "@effect/io": "^0.27.1",
10
+ "@effect/data": "^0.14.1",
11
+ "@effect/io": "^0.32.0",
12
12
  "@opentelemetry/api": "^1.4.1",
13
13
  "@opentelemetry/resources": "^1.14.0",
14
14
  "@opentelemetry/semantic-conventions": "^1.14.0"
package/src/NodeSdk.ts CHANGED
@@ -28,7 +28,7 @@ export const layer = <R, E>(
28
28
  ): Layer.Layer<Resource | R, E, never> =>
29
29
  Layer.scopedDiscard(Effect.acquireRelease(
30
30
  Effect.flatMap(
31
- Effect.all(config, Resource),
31
+ Effect.all([config, Resource]),
32
32
  ([config, resource]) =>
33
33
  Effect.sync(() => {
34
34
  const sdk = new NodeSDK({ ...config, resource })
package/src/Tracer.ts CHANGED
@@ -1,11 +1,14 @@
1
1
  /**
2
2
  * @since 1.0.0
3
3
  */
4
+ import type { Tag } from "@effect/data/Context"
4
5
  import type { Effect } from "@effect/io/Effect"
5
6
  import type { Layer } from "@effect/io/Layer"
6
- import type { Tracer } from "@effect/io/Tracer"
7
- import * as internal from "@effect/opentelemetry/internal_effect_untraced/tracer"
7
+ import type { ExternalSpan, Tracer } from "@effect/io/Tracer"
8
+ import * as internal from "@effect/opentelemetry/internal/tracer"
9
+ import { OtelSupervisor } from "@effect/opentelemetry/internal/tracer"
8
10
  import type { Resource } from "@effect/opentelemetry/Resource"
11
+ import type * as Otel from "@opentelemetry/api"
9
12
 
10
13
  /**
11
14
  * @since 1.0.0
@@ -13,8 +16,44 @@ import type { Resource } from "@effect/opentelemetry/Resource"
13
16
  */
14
17
  export const make: Effect<Resource, never, Tracer> = internal.make
15
18
 
19
+ export {
20
+ /**
21
+ * An effect supervisor that sets up the OpenTelemetry context for the fiber executions.
22
+ *
23
+ * @since 1.0.0
24
+ * @category supervisor
25
+ */
26
+ OtelSupervisor
27
+ }
28
+
29
+ /**
30
+ * @since 1.0.0
31
+ * @category constructors
32
+ */
33
+ export const makeExternalSpan: (
34
+ options: {
35
+ readonly name: string
36
+ readonly traceId: string
37
+ readonly spanId: string
38
+ readonly traceFlags?: Otel.TraceFlags
39
+ readonly traceState?: string
40
+ }
41
+ ) => ExternalSpan = internal.makeExternalSpan
42
+
16
43
  /**
17
44
  * @since 1.0.0
18
45
  * @category layers
19
46
  */
20
47
  export const layer: Layer<Resource, never, never> = internal.layer
48
+
49
+ /**
50
+ * @since 1.0.0
51
+ * @category tags
52
+ */
53
+ export const TraceFlags: Tag<Otel.TraceFlags, Otel.TraceFlags> = internal.traceFlagsTag
54
+
55
+ /**
56
+ * @since 1.0.0
57
+ * @category tags
58
+ */
59
+ export const TraceState: Tag<Otel.TraceState, Otel.TraceState> = internal.traceStateTag
@@ -0,0 +1,230 @@
1
+ import * as Context from "@effect/data/Context"
2
+ import { pipe } from "@effect/data/Function"
3
+ import * as List from "@effect/data/List"
4
+ import * as Option from "@effect/data/Option"
5
+ import * as Cause from "@effect/io/Cause"
6
+ import * as Effect from "@effect/io/Effect"
7
+ import type { Exit } from "@effect/io/Exit"
8
+ import type { RuntimeFiber } from "@effect/io/Fiber"
9
+ import * as FiberRef from "@effect/io/FiberRef"
10
+ import * as FiberRefs from "@effect/io/FiberRefs"
11
+ import * as Layer from "@effect/io/Layer"
12
+ import * as Supervisor from "@effect/io/Supervisor"
13
+ import * as Tracer from "@effect/io/Tracer"
14
+ import { Resource } from "@effect/opentelemetry/Resource"
15
+ import * as OtelApi from "@opentelemetry/api"
16
+
17
+ /** @internal */
18
+ export class OtelSpan implements Tracer.Span {
19
+ readonly _tag = "Span"
20
+
21
+ readonly span: OtelApi.Span
22
+ readonly spanId: string
23
+ readonly traceId: string
24
+ readonly attributes = new Map<string, Tracer.AttributeValue>()
25
+ status: Tracer.SpanStatus
26
+
27
+ constructor(
28
+ traceApi: OtelApi.TraceAPI,
29
+ contextApi: OtelApi.ContextAPI,
30
+ tracer: OtelApi.Tracer,
31
+ readonly name: string,
32
+ readonly parent: Option.Option<Tracer.ParentSpan>,
33
+ readonly context: Context.Context<never>,
34
+ startTime: bigint
35
+ ) {
36
+ const active = contextApi.active()
37
+ this.span = tracer.startSpan(
38
+ name,
39
+ { startTime: nanosToHrTime(startTime) },
40
+ parent._tag === "Some" ? populateContext(active, parent.value, context) : active
41
+ )
42
+ const spanContext = this.span.spanContext()
43
+ this.spanId = spanContext.spanId
44
+ this.traceId = spanContext.traceId
45
+
46
+ this.status = {
47
+ _tag: "Started",
48
+ startTime
49
+ }
50
+ }
51
+
52
+ attribute(key: string, value: Tracer.AttributeValue) {
53
+ this.span.setAttribute(key, value)
54
+ this.attributes.set(key, value)
55
+ }
56
+
57
+ end(endTime: bigint, exit: Exit<unknown, unknown>) {
58
+ this.status = {
59
+ _tag: "Ended",
60
+ endTime,
61
+ exit,
62
+ startTime: this.status.startTime
63
+ }
64
+
65
+ if (exit._tag === "Success") {
66
+ this.span.setStatus({
67
+ code: OtelApi.SpanStatusCode.OK
68
+ })
69
+ } else {
70
+ if (Cause.isInterruptedOnly(exit.cause)) {
71
+ this.span.setStatus({
72
+ code: OtelApi.SpanStatusCode.OK
73
+ })
74
+ } else {
75
+ this.span.setStatus({
76
+ code: OtelApi.SpanStatusCode.ERROR,
77
+ message: Cause.pretty(exit.cause)
78
+ })
79
+ }
80
+ }
81
+ this.span.end(nanosToHrTime(endTime))
82
+ }
83
+
84
+ event(name: string, startTime: bigint, attributes?: Record<string, Tracer.AttributeValue>) {
85
+ this.span.addEvent(name, attributes, nanosToHrTime(startTime))
86
+ }
87
+ }
88
+
89
+ /** @internal */
90
+ export const make = pipe(
91
+ Resource,
92
+ Effect.flatMap((resource) =>
93
+ Effect.sync(() =>
94
+ OtelApi.trace.getTracer(
95
+ resource.attributes["service.name"] as string,
96
+ resource.attributes["service.version"] as string
97
+ )
98
+ )
99
+ ),
100
+ Effect.map((tracer) =>
101
+ Tracer.make({
102
+ span(name, parent, context, startTime) {
103
+ return new OtelSpan(
104
+ OtelApi.trace,
105
+ OtelApi.context,
106
+ tracer,
107
+ name,
108
+ parent,
109
+ context,
110
+ startTime
111
+ )
112
+ }
113
+ })
114
+ )
115
+ )
116
+
117
+ /** @internal */
118
+ export const traceFlagsTag = Context.Tag<OtelApi.TraceFlags>("@effect/opentelemetry/traceFlags")
119
+
120
+ /** @internal */
121
+ export const traceStateTag = Context.Tag<OtelApi.TraceState>("@effect/opentelemetry/traceState")
122
+
123
+ /** @internal */
124
+ export const makeExternalSpan = (options: {
125
+ readonly name: string
126
+ readonly traceId: string
127
+ readonly spanId: string
128
+ readonly traceFlags?: number
129
+ readonly traceState?: string
130
+ }): Tracer.ExternalSpan => {
131
+ let context = Context.empty()
132
+
133
+ if (options.traceFlags) {
134
+ context = Context.add(context, traceFlagsTag, options.traceFlags)
135
+ }
136
+
137
+ if (options.traceState) {
138
+ context = Option.match(createTraceState(options.traceState), {
139
+ onNone: () => context,
140
+ onSome: (traceState) => Context.add(context, traceStateTag, traceState)
141
+ })
142
+ }
143
+
144
+ return {
145
+ _tag: "ExternalSpan",
146
+ traceId: options.traceId,
147
+ spanId: options.spanId,
148
+ context
149
+ }
150
+ }
151
+
152
+ /** @internal */
153
+ export class OtelSupervisor extends Supervisor.AbstractSupervisor<void> {
154
+ value(): Effect.Effect<never, never, void> {
155
+ return Effect.unit
156
+ }
157
+
158
+ onRun<E, A, X>(execution: () => X, fiber: RuntimeFiber<E, A>): X {
159
+ const currentSpan = Option.flatMap(
160
+ FiberRefs.get(
161
+ fiber.unsafeGetFiberRefs(),
162
+ FiberRef.currentTracerSpan
163
+ ),
164
+ List.head
165
+ )
166
+
167
+ if (currentSpan._tag === "None") {
168
+ return execution()
169
+ }
170
+
171
+ return OtelApi.context.with(
172
+ populateContext(OtelApi.context.active(), currentSpan.value),
173
+ execution
174
+ )
175
+ }
176
+ }
177
+
178
+ /** @internal */
179
+ export const supervisor = new OtelSupervisor()
180
+
181
+ /** @internal */
182
+ export const layer = Layer.merge(
183
+ Layer.unwrapEffect(Effect.map(make, Effect.setTracer)),
184
+ Supervisor.addSupervisor(supervisor)
185
+ )
186
+
187
+ // -------------------------------------------------------------------------------------
188
+ // utils
189
+ // -------------------------------------------------------------------------------------
190
+
191
+ const bigint1e9 = 1_000_000_000n
192
+ const nanosToHrTime = (timestamp: bigint): OtelApi.HrTime => {
193
+ return [Number(timestamp / bigint1e9), Number(timestamp % bigint1e9)]
194
+ }
195
+
196
+ const createTraceState = Option.liftThrowable(OtelApi.createTraceState)
197
+
198
+ const populateContext = (
199
+ otelContext: OtelApi.Context,
200
+ span: Tracer.ParentSpan,
201
+ context?: Context.Context<never>
202
+ ): OtelApi.Context =>
203
+ span instanceof OtelSpan ?
204
+ OtelApi.trace.setSpan(otelContext, span.span) :
205
+ OtelApi.trace.setSpanContext(otelContext, {
206
+ spanId: span.spanId,
207
+ traceId: span.traceId,
208
+ isRemote: span._tag === "ExternalSpan",
209
+ traceFlags: Option.getOrElse(
210
+ context ?
211
+ extractTraceTag(span, context, traceFlagsTag) :
212
+ Context.getOption(span.context, traceFlagsTag),
213
+ () => OtelApi.TraceFlags.SAMPLED
214
+ ),
215
+ traceState: Option.getOrUndefined(
216
+ context ?
217
+ extractTraceTag(span, context, traceStateTag) :
218
+ Context.getOption(span.context, traceStateTag)
219
+ )
220
+ })
221
+
222
+ const extractTraceTag = <I, S>(
223
+ parent: Tracer.ParentSpan,
224
+ context: Context.Context<never>,
225
+ tag: Context.Tag<I, S>
226
+ ) =>
227
+ Option.orElse(
228
+ Context.getOption(context, tag),
229
+ () => Context.getOption(parent.context, tag)
230
+ )
@@ -1 +0,0 @@
1
- {"version":3,"file":"tracer.d.ts","sourceRoot":"","sources":["../src/internal_effect_untraced/tracer.ts"],"names":[],"mappings":""}
@@ -1,85 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.make = exports.layer = exports.OtelSpan = void 0;
7
- var Cause = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Cause"));
8
- var Effect = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Effect"));
9
- var Layer = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Layer"));
10
- var Tracer = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Tracer"));
11
- var _Resource = /*#__PURE__*/require("@effect/opentelemetry/Resource");
12
- var OtelApi = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@opentelemetry/api"));
13
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
14
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
- /** @internal */
16
- class OtelSpan {
17
- constructor(traceApi, contextApi, tracer, name, parent, startTime) {
18
- this.name = name;
19
- this.parent = parent;
20
- this._tag = "Span";
21
- this.attributes = new Map();
22
- const active = contextApi.active();
23
- this.span = parent._tag === "Some" ? tracer.startSpan(name, {
24
- startTime
25
- }, parent.value instanceof OtelSpan ? traceApi.setSpan(active, parent.value.span) : traceApi.setSpanContext(active, {
26
- spanId: parent.value.spanId,
27
- traceId: parent.value.traceId,
28
- isRemote: parent.value._tag === "ExternalSpan",
29
- traceFlags: OtelApi.TraceFlags.SAMPLED
30
- })) : tracer.startSpan(name, {
31
- startTime
32
- }, active);
33
- const spanContext = this.span.spanContext();
34
- this.spanId = spanContext.spanId;
35
- this.traceId = spanContext.traceId;
36
- this.status = {
37
- _tag: "Started",
38
- startTime
39
- };
40
- }
41
- attribute(key, value) {
42
- this.span.setAttribute(key, value);
43
- this.attributes.set(key, value);
44
- }
45
- end(endTime, exit) {
46
- this.status = {
47
- _tag: "Ended",
48
- endTime,
49
- exit,
50
- startTime: this.status.startTime
51
- };
52
- if (exit._tag === "Success") {
53
- this.span.setStatus({
54
- code: OtelApi.SpanStatusCode.OK
55
- });
56
- } else {
57
- if (Cause.isInterruptedOnly(exit.cause)) {
58
- this.span.setStatus({
59
- code: OtelApi.SpanStatusCode.OK
60
- });
61
- } else {
62
- this.span.setStatus({
63
- code: OtelApi.SpanStatusCode.ERROR,
64
- message: Cause.pretty(exit.cause)
65
- });
66
- }
67
- }
68
- this.span.end(endTime);
69
- }
70
- event(name, attributes) {
71
- this.span.addEvent(name, attributes);
72
- }
73
- }
74
- /** @internal */
75
- exports.OtelSpan = OtelSpan;
76
- const make = /*#__PURE__*/Effect.map(tracer => Tracer.make({
77
- span(name, parent, startTime) {
78
- return new OtelSpan(OtelApi.trace, OtelApi.context, tracer, name, parent, startTime);
79
- }
80
- }))( /*#__PURE__*/Effect.flatMap(resource => Effect.sync(() => OtelApi.trace.getTracer(resource.attributes["service.name"], resource.attributes["service.version"])))(_Resource.Resource));
81
- /** @internal */
82
- exports.make = make;
83
- const layer = /*#__PURE__*/Layer.unwrapEffect( /*#__PURE__*/Effect.map(make, Effect.setTracer));
84
- exports.layer = layer;
85
- //# sourceMappingURL=tracer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tracer.js","names":["Cause","_interopRequireWildcard","require","Effect","Layer","Tracer","_Resource","OtelApi","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","OtelSpan","constructor","traceApi","contextApi","tracer","name","parent","startTime","_tag","attributes","Map","active","span","startSpan","value","setSpan","setSpanContext","spanId","traceId","isRemote","traceFlags","TraceFlags","SAMPLED","spanContext","status","attribute","setAttribute","end","endTime","exit","setStatus","code","SpanStatusCode","OK","isInterruptedOnly","cause","ERROR","message","pretty","event","addEvent","exports","make","map","trace","context","flatMap","resource","sync","getTracer","Resource","layer","unwrapEffect","setTracer"],"sources":["../src/internal_effect_untraced/tracer.ts"],"sourcesContent":[null],"mappings":"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"}
@@ -1,74 +0,0 @@
1
- import * as Cause from "@effect/io/Cause";
2
- import * as Effect from "@effect/io/Effect";
3
- import * as Layer from "@effect/io/Layer";
4
- import * as Tracer from "@effect/io/Tracer";
5
- import { Resource } from "@effect/opentelemetry/Resource";
6
- import * as OtelApi from "@opentelemetry/api";
7
- /** @internal */
8
- export class OtelSpan {
9
- constructor(traceApi, contextApi, tracer, name, parent, startTime) {
10
- this.name = name;
11
- this.parent = parent;
12
- this._tag = "Span";
13
- this.attributes = new Map();
14
- const active = contextApi.active();
15
- this.span = parent._tag === "Some" ? tracer.startSpan(name, {
16
- startTime
17
- }, parent.value instanceof OtelSpan ? traceApi.setSpan(active, parent.value.span) : traceApi.setSpanContext(active, {
18
- spanId: parent.value.spanId,
19
- traceId: parent.value.traceId,
20
- isRemote: parent.value._tag === "ExternalSpan",
21
- traceFlags: OtelApi.TraceFlags.SAMPLED
22
- })) : tracer.startSpan(name, {
23
- startTime
24
- }, active);
25
- const spanContext = this.span.spanContext();
26
- this.spanId = spanContext.spanId;
27
- this.traceId = spanContext.traceId;
28
- this.status = {
29
- _tag: "Started",
30
- startTime
31
- };
32
- }
33
- attribute(key, value) {
34
- this.span.setAttribute(key, value);
35
- this.attributes.set(key, value);
36
- }
37
- end(endTime, exit) {
38
- this.status = {
39
- _tag: "Ended",
40
- endTime,
41
- exit,
42
- startTime: this.status.startTime
43
- };
44
- if (exit._tag === "Success") {
45
- this.span.setStatus({
46
- code: OtelApi.SpanStatusCode.OK
47
- });
48
- } else {
49
- if (Cause.isInterruptedOnly(exit.cause)) {
50
- this.span.setStatus({
51
- code: OtelApi.SpanStatusCode.OK
52
- });
53
- } else {
54
- this.span.setStatus({
55
- code: OtelApi.SpanStatusCode.ERROR,
56
- message: Cause.pretty(exit.cause)
57
- });
58
- }
59
- }
60
- this.span.end(endTime);
61
- }
62
- event(name, attributes) {
63
- this.span.addEvent(name, attributes);
64
- }
65
- }
66
- /** @internal */
67
- export const make = /*#__PURE__*/Effect.map(tracer => Tracer.make({
68
- span(name, parent, startTime) {
69
- return new OtelSpan(OtelApi.trace, OtelApi.context, tracer, name, parent, startTime);
70
- }
71
- }))( /*#__PURE__*/Effect.flatMap(resource => Effect.sync(() => OtelApi.trace.getTracer(resource.attributes["service.name"], resource.attributes["service.version"])))(Resource));
72
- /** @internal */
73
- export const layer = /*#__PURE__*/Layer.unwrapEffect( /*#__PURE__*/Effect.map(make, Effect.setTracer));
74
- //# sourceMappingURL=tracer.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tracer.mjs","names":["Cause","Effect","Layer","Tracer","Resource","OtelApi","OtelSpan","constructor","traceApi","contextApi","tracer","name","parent","startTime","_tag","attributes","Map","active","span","startSpan","value","setSpan","setSpanContext","spanId","traceId","isRemote","traceFlags","TraceFlags","SAMPLED","spanContext","status","attribute","key","setAttribute","set","end","endTime","exit","setStatus","code","SpanStatusCode","OK","isInterruptedOnly","cause","ERROR","message","pretty","event","addEvent","make","map","trace","context","flatMap","resource","sync","getTracer","layer","unwrapEffect","setTracer"],"sources":["../../src/internal_effect_untraced/tracer.ts"],"sourcesContent":[null],"mappings":"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"}
@@ -1,122 +0,0 @@
1
- import { pipe } from "@effect/data/Function"
2
- import type { Option } from "@effect/data/Option"
3
- import * as Cause from "@effect/io/Cause"
4
- import * as Effect from "@effect/io/Effect"
5
- import type { Exit } from "@effect/io/Exit"
6
- import * as Layer from "@effect/io/Layer"
7
- import * as Tracer from "@effect/io/Tracer"
8
- import { Resource } from "@effect/opentelemetry/Resource"
9
- import * as OtelApi from "@opentelemetry/api"
10
-
11
- /** @internal */
12
- export class OtelSpan implements Tracer.Span {
13
- readonly _tag = "Span"
14
-
15
- readonly span: OtelApi.Span
16
- readonly spanId: string
17
- readonly traceId: string
18
- readonly attributes = new Map<string, string>()
19
- status: Tracer.SpanStatus
20
-
21
- constructor(
22
- traceApi: OtelApi.TraceAPI,
23
- contextApi: OtelApi.ContextAPI,
24
- tracer: OtelApi.Tracer,
25
- readonly name: string,
26
- readonly parent: Option<Tracer.ParentSpan>,
27
- startTime: number
28
- ) {
29
- const active = contextApi.active()
30
- this.span = parent._tag === "Some"
31
- ? tracer.startSpan(
32
- name,
33
- { startTime },
34
- parent.value instanceof OtelSpan ?
35
- traceApi.setSpan(active, parent.value.span) :
36
- traceApi.setSpanContext(active, {
37
- spanId: parent.value.spanId,
38
- traceId: parent.value.traceId,
39
- isRemote: parent.value._tag === "ExternalSpan",
40
- traceFlags: OtelApi.TraceFlags.SAMPLED
41
- })
42
- )
43
- : tracer.startSpan(name, { startTime }, active)
44
- const spanContext = this.span.spanContext()
45
-
46
- this.spanId = spanContext.spanId
47
- this.traceId = spanContext.traceId
48
-
49
- this.status = {
50
- _tag: "Started",
51
- startTime
52
- }
53
- }
54
-
55
- attribute(key: string, value: string) {
56
- this.span.setAttribute(key, value)
57
- this.attributes.set(key, value)
58
- }
59
-
60
- end(endTime: number, exit: Exit<unknown, unknown>) {
61
- this.status = {
62
- _tag: "Ended",
63
- endTime,
64
- exit,
65
- startTime: this.status.startTime
66
- }
67
-
68
- if (exit._tag === "Success") {
69
- this.span.setStatus({
70
- code: OtelApi.SpanStatusCode.OK
71
- })
72
- } else {
73
- if (Cause.isInterruptedOnly(exit.cause)) {
74
- this.span.setStatus({
75
- code: OtelApi.SpanStatusCode.OK
76
- })
77
- } else {
78
- this.span.setStatus({
79
- code: OtelApi.SpanStatusCode.ERROR,
80
- message: Cause.pretty(exit.cause)
81
- })
82
- }
83
- }
84
- this.span.end(endTime)
85
- }
86
-
87
- event(name: string, attributes?: Record<string, string>) {
88
- this.span.addEvent(name, attributes)
89
- }
90
- }
91
-
92
- /** @internal */
93
- export const make = pipe(
94
- Resource,
95
- Effect.flatMap((resource) =>
96
- Effect.sync(() =>
97
- OtelApi.trace.getTracer(
98
- resource.attributes["service.name"] as string,
99
- resource.attributes["service.version"] as string
100
- )
101
- )
102
- ),
103
- Effect.map((tracer) =>
104
- Tracer.make({
105
- span(name, parent, startTime) {
106
- return new OtelSpan(
107
- OtelApi.trace,
108
- OtelApi.context,
109
- tracer,
110
- name,
111
- parent,
112
- startTime
113
- )
114
- }
115
- })
116
- )
117
- )
118
-
119
- /** @internal */
120
- export const layer = Layer.unwrapEffect(
121
- Effect.map(make, Effect.setTracer)
122
- )