@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 +1 -1
- package/NodeSdk.js.map +1 -1
- package/Tracer.d.ts +33 -1
- package/Tracer.d.ts.map +1 -1
- package/Tracer.js +27 -3
- package/Tracer.js.map +1 -1
- package/internal/tracer.d.ts.map +1 -0
- package/internal/tracer.js +144 -0
- package/internal/tracer.js.map +1 -0
- package/mjs/NodeSdk.mjs +1 -1
- package/mjs/NodeSdk.mjs.map +1 -1
- package/mjs/Tracer.mjs +25 -1
- package/mjs/Tracer.mjs.map +1 -1
- package/mjs/internal/tracer.mjs +128 -0
- package/mjs/internal/tracer.mjs.map +1 -0
- package/package.json +3 -3
- package/src/NodeSdk.ts +1 -1
- package/src/Tracer.ts +41 -2
- package/src/internal/tracer.ts +230 -0
- package/internal_effect_untraced/tracer.d.ts.map +0 -1
- package/internal_effect_untraced/tracer.js +0 -85
- package/internal_effect_untraced/tracer.js.map +0 -1
- package/mjs/internal_effect_untraced/tracer.mjs +0 -74
- package/mjs/internal_effect_untraced/tracer.mjs.map +0 -1
- package/src/internal_effect_untraced/tracer.ts +0 -122
- /package/{internal_effect_untraced → internal}/tracer.d.ts +0 -0
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,
|
|
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;
|
|
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
|
-
|
|
7
|
-
|
|
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.
|
|
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":"
|
|
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
|
package/mjs/NodeSdk.mjs.map
CHANGED
|
@@ -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,
|
|
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/
|
|
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
|
package/mjs/Tracer.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tracer.mjs","names":["internal","make","layer"],"sources":["../src/Tracer.ts"],"sourcesContent":[null],"mappings":"
|
|
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.
|
|
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.
|
|
11
|
-
"@effect/io": "^0.
|
|
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/
|
|
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":";;;;;;AAEA,IAAAA,KAAA,gBAAAC,uBAAA,eAAAC,OAAA;AACA,IAAAC,MAAA,gBAAAF,uBAAA,eAAAC,OAAA;AAEA,IAAAE,KAAA,gBAAAH,uBAAA,eAAAC,OAAA;AACA,IAAAG,MAAA,gBAAAJ,uBAAA,eAAAC,OAAA;AACA,IAAAI,SAAA,gBAAAJ,OAAA;AACA,IAAAK,OAAA,gBAAAN,uBAAA,eAAAC,OAAA;AAA6C,SAAAM,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,SAAAR,wBAAAY,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;AAE7C;AACM,MAAOW,QAAQ;EASnBC,YACEC,QAA0B,EAC1BC,UAA8B,EAC9BC,MAAsB,EACbC,IAAY,EACZC,MAAiC,EAC1CC,SAAiB;IAFR,KAAAF,IAAI,GAAJA,IAAI;IACJ,KAAAC,MAAM,GAANA,MAAM;IAbR,KAAAE,IAAI,GAAG,MAAM;IAKb,KAAAC,UAAU,GAAG,IAAIC,GAAG,EAAkB;IAW7C,MAAMC,MAAM,GAAGR,UAAU,CAACQ,MAAM,EAAE;IAClC,IAAI,CAACC,IAAI,GAAGN,MAAM,CAACE,IAAI,KAAK,MAAM,GAC9BJ,MAAM,CAACS,SAAS,CAChBR,IAAI,EACJ;MAAEE;IAAS,CAAE,EACbD,MAAM,CAACQ,KAAK,YAAYd,QAAQ,GAC9BE,QAAQ,CAACa,OAAO,CAACJ,MAAM,EAAEL,MAAM,CAACQ,KAAK,CAACF,IAAI,CAAC,GAC3CV,QAAQ,CAACc,cAAc,CAACL,MAAM,EAAE;MAC9BM,MAAM,EAAEX,MAAM,CAACQ,KAAK,CAACG,MAAM;MAC3BC,OAAO,EAAEZ,MAAM,CAACQ,KAAK,CAACI,OAAO;MAC7BC,QAAQ,EAAEb,MAAM,CAACQ,KAAK,CAACN,IAAI,KAAK,cAAc;MAC9CY,UAAU,EAAE3C,OAAO,CAAC4C,UAAU,CAACC;KAChC,CAAC,CACL,GACClB,MAAM,CAACS,SAAS,CAACR,IAAI,EAAE;MAAEE;IAAS,CAAE,EAAEI,MAAM,CAAC;IACjD,MAAMY,WAAW,GAAG,IAAI,CAACX,IAAI,CAACW,WAAW,EAAE;IAE3C,IAAI,CAACN,MAAM,GAAGM,WAAW,CAACN,MAAM;IAChC,IAAI,CAACC,OAAO,GAAGK,WAAW,CAACL,OAAO;IAElC,IAAI,CAACM,MAAM,GAAG;MACZhB,IAAI,EAAE,SAAS;MACfD;KACD;EACH;EAEAkB,SAASA,CAAC/B,GAAW,EAAEoB,KAAa;IAClC,IAAI,CAACF,IAAI,CAACc,YAAY,CAAChC,GAAG,EAAEoB,KAAK,CAAC;IAClC,IAAI,CAACL,UAAU,CAACV,GAAG,CAACL,GAAG,EAAEoB,KAAK,CAAC;EACjC;EAEAa,GAAGA,CAACC,OAAe,EAAEC,IAA4B;IAC/C,IAAI,CAACL,MAAM,GAAG;MACZhB,IAAI,EAAE,OAAO;MACboB,OAAO;MACPC,IAAI;MACJtB,SAAS,EAAE,IAAI,CAACiB,MAAM,CAACjB;KACxB;IAED,IAAIsB,IAAI,CAACrB,IAAI,KAAK,SAAS,EAAE;MAC3B,IAAI,CAACI,IAAI,CAACkB,SAAS,CAAC;QAClBC,IAAI,EAAEtD,OAAO,CAACuD,cAAc,CAACC;OAC9B,CAAC;KACH,MAAM;MACL,IAAI/D,KAAK,CAACgE,iBAAiB,CAACL,IAAI,CAACM,KAAK,CAAC,EAAE;QACvC,IAAI,CAACvB,IAAI,CAACkB,SAAS,CAAC;UAClBC,IAAI,EAAEtD,OAAO,CAACuD,cAAc,CAACC;SAC9B,CAAC;OACH,MAAM;QACL,IAAI,CAACrB,IAAI,CAACkB,SAAS,CAAC;UAClBC,IAAI,EAAEtD,OAAO,CAACuD,cAAc,CAACI,KAAK;UAClCC,OAAO,EAAEnE,KAAK,CAACoE,MAAM,CAACT,IAAI,CAACM,KAAK;SACjC,CAAC;;;IAGN,IAAI,CAACvB,IAAI,CAACe,GAAG,CAACC,OAAO,CAAC;EACxB;EAEAW,KAAKA,CAAClC,IAAY,EAAEI,UAAmC;IACrD,IAAI,CAACG,IAAI,CAAC4B,QAAQ,CAACnC,IAAI,EAAEI,UAAU,CAAC;EACtC;;AAGF;AAAAgC,OAAA,CAAAzC,QAAA,GAAAA,QAAA;AACO,MAAM0C,IAAI,gBAUfrE,MAAM,CAACsE,GAAG,CAAEvC,MAAM,IAChB7B,MAAM,CAACmE,IAAI,CAAC;EACV9B,IAAIA,CAACP,IAAI,EAAEC,MAAM,EAAEC,SAAS;IAC1B,OAAO,IAAIP,QAAQ,CACjBvB,OAAO,CAACmE,KAAK,EACbnE,OAAO,CAACoE,OAAO,EACfzC,MAAM,EACNC,IAAI,EACJC,MAAM,EACNC,SAAS,CACV;EACH;CACD,CAAC,CACH,eArBDlC,MAAM,CAACyE,OAAO,CAAEC,QAAQ,IACtB1E,MAAM,CAAC2E,IAAI,CAAC,MACVvE,OAAO,CAACmE,KAAK,CAACK,SAAS,CACrBF,QAAQ,CAACtC,UAAU,CAAC,cAAc,CAAW,EAC7CsC,QAAQ,CAACtC,UAAU,CAAC,iBAAiB,CAAW,CACjD,CACF,CACF,CARDyC,kBAAQ,EAuBT;AAED;AAAAT,OAAA,CAAAC,IAAA,GAAAA,IAAA;AACO,MAAMS,KAAK,gBAAG7E,KAAK,CAAC8E,YAAY,eACrC/E,MAAM,CAACsE,GAAG,CAACD,IAAI,EAAErE,MAAM,CAACgF,SAAS,CAAC,CACnC;AAAAZ,OAAA,CAAAU,KAAA,GAAAA,KAAA"}
|
|
@@ -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":"AAEA,OAAO,KAAKA,KAAK,MAAM,kBAAkB;AACzC,OAAO,KAAKC,MAAM,MAAM,mBAAmB;AAE3C,OAAO,KAAKC,KAAK,MAAM,kBAAkB;AACzC,OAAO,KAAKC,MAAM,MAAM,mBAAmB;AAC3C,SAASC,QAAQ,QAAQ,gCAAgC;AACzD,OAAO,KAAKC,OAAO,MAAM,oBAAoB;AAE7C;AACA,OAAM,MAAOC,QAAQ;EASnBC,YACEC,QAA0B,EAC1BC,UAA8B,EAC9BC,MAAsB,EACbC,IAAY,EACZC,MAAiC,EAC1CC,SAAiB;IAFR,KAAAF,IAAI,GAAJA,IAAI;IACJ,KAAAC,MAAM,GAANA,MAAM;IAbR,KAAAE,IAAI,GAAG,MAAM;IAKb,KAAAC,UAAU,GAAG,IAAIC,GAAG,EAAkB;IAW7C,MAAMC,MAAM,GAAGR,UAAU,CAACQ,MAAM,EAAE;IAClC,IAAI,CAACC,IAAI,GAAGN,MAAM,CAACE,IAAI,KAAK,MAAM,GAC9BJ,MAAM,CAACS,SAAS,CAChBR,IAAI,EACJ;MAAEE;IAAS,CAAE,EACbD,MAAM,CAACQ,KAAK,YAAYd,QAAQ,GAC9BE,QAAQ,CAACa,OAAO,CAACJ,MAAM,EAAEL,MAAM,CAACQ,KAAK,CAACF,IAAI,CAAC,GAC3CV,QAAQ,CAACc,cAAc,CAACL,MAAM,EAAE;MAC9BM,MAAM,EAAEX,MAAM,CAACQ,KAAK,CAACG,MAAM;MAC3BC,OAAO,EAAEZ,MAAM,CAACQ,KAAK,CAACI,OAAO;MAC7BC,QAAQ,EAAEb,MAAM,CAACQ,KAAK,CAACN,IAAI,KAAK,cAAc;MAC9CY,UAAU,EAAErB,OAAO,CAACsB,UAAU,CAACC;KAChC,CAAC,CACL,GACClB,MAAM,CAACS,SAAS,CAACR,IAAI,EAAE;MAAEE;IAAS,CAAE,EAAEI,MAAM,CAAC;IACjD,MAAMY,WAAW,GAAG,IAAI,CAACX,IAAI,CAACW,WAAW,EAAE;IAE3C,IAAI,CAACN,MAAM,GAAGM,WAAW,CAACN,MAAM;IAChC,IAAI,CAACC,OAAO,GAAGK,WAAW,CAACL,OAAO;IAElC,IAAI,CAACM,MAAM,GAAG;MACZhB,IAAI,EAAE,SAAS;MACfD;KACD;EACH;EAEAkB,SAASA,CAACC,GAAW,EAAEZ,KAAa;IAClC,IAAI,CAACF,IAAI,CAACe,YAAY,CAACD,GAAG,EAAEZ,KAAK,CAAC;IAClC,IAAI,CAACL,UAAU,CAACmB,GAAG,CAACF,GAAG,EAAEZ,KAAK,CAAC;EACjC;EAEAe,GAAGA,CAACC,OAAe,EAAEC,IAA4B;IAC/C,IAAI,CAACP,MAAM,GAAG;MACZhB,IAAI,EAAE,OAAO;MACbsB,OAAO;MACPC,IAAI;MACJxB,SAAS,EAAE,IAAI,CAACiB,MAAM,CAACjB;KACxB;IAED,IAAIwB,IAAI,CAACvB,IAAI,KAAK,SAAS,EAAE;MAC3B,IAAI,CAACI,IAAI,CAACoB,SAAS,CAAC;QAClBC,IAAI,EAAElC,OAAO,CAACmC,cAAc,CAACC;OAC9B,CAAC;KACH,MAAM;MACL,IAAIzC,KAAK,CAAC0C,iBAAiB,CAACL,IAAI,CAACM,KAAK,CAAC,EAAE;QACvC,IAAI,CAACzB,IAAI,CAACoB,SAAS,CAAC;UAClBC,IAAI,EAAElC,OAAO,CAACmC,cAAc,CAACC;SAC9B,CAAC;OACH,MAAM;QACL,IAAI,CAACvB,IAAI,CAACoB,SAAS,CAAC;UAClBC,IAAI,EAAElC,OAAO,CAACmC,cAAc,CAACI,KAAK;UAClCC,OAAO,EAAE7C,KAAK,CAAC8C,MAAM,CAACT,IAAI,CAACM,KAAK;SACjC,CAAC;;;IAGN,IAAI,CAACzB,IAAI,CAACiB,GAAG,CAACC,OAAO,CAAC;EACxB;EAEAW,KAAKA,CAACpC,IAAY,EAAEI,UAAmC;IACrD,IAAI,CAACG,IAAI,CAAC8B,QAAQ,CAACrC,IAAI,EAAEI,UAAU,CAAC;EACtC;;AAGF;AACA,OAAO,MAAMkC,IAAI,gBAUfhD,MAAM,CAACiD,GAAG,CAAExC,MAAM,IAChBP,MAAM,CAAC8C,IAAI,CAAC;EACV/B,IAAIA,CAACP,IAAI,EAAEC,MAAM,EAAEC,SAAS;IAC1B,OAAO,IAAIP,QAAQ,CACjBD,OAAO,CAAC8C,KAAK,EACb9C,OAAO,CAAC+C,OAAO,EACf1C,MAAM,EACNC,IAAI,EACJC,MAAM,EACNC,SAAS,CACV;EACH;CACD,CAAC,CACH,eArBDZ,MAAM,CAACoD,OAAO,CAAEC,QAAQ,IACtBrD,MAAM,CAACsD,IAAI,CAAC,MACVlD,OAAO,CAAC8C,KAAK,CAACK,SAAS,CACrBF,QAAQ,CAACvC,UAAU,CAAC,cAAc,CAAW,EAC7CuC,QAAQ,CAACvC,UAAU,CAAC,iBAAiB,CAAW,CACjD,CACF,CACF,CARDX,QAAQ,EAuBT;AAED;AACA,OAAO,MAAMqD,KAAK,gBAAGvD,KAAK,CAACwD,YAAY,eACrCzD,MAAM,CAACiD,GAAG,CAACD,IAAI,EAAEhD,MAAM,CAAC0D,SAAS,CAAC,CACnC"}
|
|
@@ -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
|
-
)
|
|
File without changes
|