@livestore/utils 0.0.0 → 0.0.3
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/dist/.tsbuildinfo.json +1 -1
- package/dist/NoopTracer.d.ts +1 -0
- package/dist/NoopTracer.d.ts.map +1 -1
- package/dist/NoopTracer.js +1 -1
- package/dist/NoopTracer.js.map +1 -1
- package/dist/effect/Effect.d.ts +4 -0
- package/dist/effect/Effect.d.ts.map +1 -1
- package/dist/effect/Effect.js +8 -0
- package/dist/effect/Effect.js.map +1 -1
- package/dist/effect/Layer.d.ts +17 -3
- package/dist/effect/Layer.d.ts.map +1 -1
- package/dist/effect/Layer.js +8 -7
- package/dist/effect/Layer.js.map +1 -1
- package/dist/effect/ServiceContext.d.ts.map +1 -1
- package/dist/effect/ServiceContext.js +7 -7
- package/dist/effect/ServiceContext.js.map +1 -1
- package/dist/effect/index.d.ts +3 -2
- package/dist/effect/index.d.ts.map +1 -1
- package/dist/effect/index.js +3 -3
- package/dist/effect/index.js.map +1 -1
- package/package.json +12 -23
- package/src/NoopTracer.ts +1 -1
- package/src/effect/Effect.ts +18 -0
- package/src/effect/Layer.ts +42 -0
- package/src/effect/ServiceContext.ts +7 -9
- package/src/effect/index.ts +4 -4
- package/dist/binary.d.ts +0 -4
- package/dist/binary.d.ts.map +0 -1
- package/dist/binary.js +0 -23
- package/dist/binary.js.map +0 -1
- package/dist/effect/Debounce.d.ts +0 -5
- package/dist/effect/Debounce.d.ts.map +0 -1
- package/dist/effect/Debounce.js +0 -33
- package/dist/effect/Debounce.js.map +0 -1
- package/dist/effect/EndableQueue.d.ts +0 -11
- package/dist/effect/EndableQueue.d.ts.map +0 -1
- package/dist/effect/EndableQueue.js +0 -22
- package/dist/effect/EndableQueue.js.map +0 -1
- package/dist/effect/EnvVar.d.ts +0 -16
- package/dist/effect/EnvVar.d.ts.map +0 -1
- package/dist/effect/EnvVar.js +0 -21
- package/dist/effect/EnvVar.js.map +0 -1
- package/dist/effect/Gate.d.ts +0 -14
- package/dist/effect/Gate.d.ts.map +0 -1
- package/dist/effect/Gate.js +0 -17
- package/dist/effect/Gate.js.map +0 -1
- package/dist/effect/Otel/Dummy.d.ts +0 -5
- package/dist/effect/Otel/Dummy.d.ts.map +0 -1
- package/dist/effect/Otel/Dummy.js +0 -22
- package/dist/effect/Otel/Dummy.js.map +0 -1
- package/dist/effect/Otel/Meter.d.ts +0 -20
- package/dist/effect/Otel/Meter.d.ts.map +0 -1
- package/dist/effect/Otel/Meter.js +0 -76
- package/dist/effect/Otel/Meter.js.map +0 -1
- package/dist/effect/Otel/OtlpGrpc.d.ts +0 -6
- package/dist/effect/Otel/OtlpGrpc.d.ts.map +0 -1
- package/dist/effect/Otel/OtlpGrpc.js +0 -42
- package/dist/effect/Otel/OtlpGrpc.js.map +0 -1
- package/dist/effect/Otel/OtlpHttp.d.ts +0 -6
- package/dist/effect/Otel/OtlpHttp.d.ts.map +0 -1
- package/dist/effect/Otel/OtlpHttp.js +0 -42
- package/dist/effect/Otel/OtlpHttp.js.map +0 -1
- package/dist/effect/Otel/OtlpWebsocket.d.ts +0 -6
- package/dist/effect/Otel/OtlpWebsocket.d.ts.map +0 -1
- package/dist/effect/Otel/OtlpWebsocket.js +0 -42
- package/dist/effect/Otel/OtlpWebsocket.js.map +0 -1
- package/dist/effect/Otel/Span.d.ts +0 -32
- package/dist/effect/Otel/Span.d.ts.map +0 -1
- package/dist/effect/Otel/Span.js +0 -97
- package/dist/effect/Otel/Span.js.map +0 -1
- package/dist/effect/Otel/Tracer.d.ts +0 -15
- package/dist/effect/Otel/Tracer.d.ts.map +0 -1
- package/dist/effect/Otel/Tracer.js +0 -17
- package/dist/effect/Otel/Tracer.js.map +0 -1
- package/dist/effect/Otel/index.d.ts +0 -8
- package/dist/effect/Otel/index.d.ts.map +0 -1
- package/dist/effect/Otel/index.js +0 -9
- package/dist/effect/Otel/index.js.map +0 -1
- package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpGrpc.d.ts +0 -14
- package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpGrpc.d.ts.map +0 -1
- package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpGrpc.js +0 -15
- package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpGrpc.js.map +0 -1
- package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpHttp.d.ts +0 -14
- package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpHttp.d.ts.map +0 -1
- package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpHttp.js +0 -15
- package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpHttp.js.map +0 -1
- package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpWebsocket.d.ts +0 -19
- package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpWebsocket.d.ts.map +0 -1
- package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpWebsocket.js +0 -17
- package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpWebsocket.js.map +0 -1
- package/dist/effect/Otel/lib-metrics/MetricsProvider.d.ts +0 -10
- package/dist/effect/Otel/lib-metrics/MetricsProvider.d.ts.map +0 -1
- package/dist/effect/Otel/lib-metrics/MetricsProvider.js +0 -4
- package/dist/effect/Otel/lib-metrics/MetricsProvider.js.map +0 -1
- package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderGrpc.d.ts +0 -16
- package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderGrpc.d.ts.map +0 -1
- package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderGrpc.js +0 -39
- package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderGrpc.js.map +0 -1
- package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderHttp.d.ts +0 -16
- package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderHttp.d.ts.map +0 -1
- package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderHttp.js +0 -39
- package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderHttp.js.map +0 -1
- package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderWebsocket.d.ts +0 -16
- package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderWebsocket.d.ts.map +0 -1
- package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderWebsocket.js +0 -39
- package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderWebsocket.js.map +0 -1
- package/dist/effect/Otel/lib-metrics/PeriodicMetricsProvider.d.ts +0 -17
- package/dist/effect/Otel/lib-metrics/PeriodicMetricsProvider.d.ts.map +0 -1
- package/dist/effect/Otel/lib-metrics/PeriodicMetricsProvider.js +0 -27
- package/dist/effect/Otel/lib-metrics/PeriodicMetricsProvider.js.map +0 -1
- package/dist/effect/Otel/lib-tracer/BatchSpanProcessor.d.ts +0 -18
- package/dist/effect/Otel/lib-tracer/BatchSpanProcessor.d.ts.map +0 -1
- package/dist/effect/Otel/lib-tracer/BatchSpanProcessor.js +0 -31
- package/dist/effect/Otel/lib-tracer/BatchSpanProcessor.js.map +0 -1
- package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpGrpc.d.ts +0 -19
- package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpGrpc.d.ts.map +0 -1
- package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpGrpc.js +0 -36
- package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpGrpc.js.map +0 -1
- package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpHttp.d.ts +0 -19
- package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpHttp.d.ts.map +0 -1
- package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpHttp.js +0 -36
- package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpHttp.js.map +0 -1
- package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpWebsocket.d.ts +0 -9
- package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpWebsocket.d.ts.map +0 -1
- package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpWebsocket.js +0 -29
- package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpWebsocket.js.map +0 -1
- package/dist/effect/Otel/lib-tracer/SimpleProcessor.d.ts +0 -19
- package/dist/effect/Otel/lib-tracer/SimpleProcessor.d.ts.map +0 -1
- package/dist/effect/Otel/lib-tracer/SimpleProcessor.js +0 -25
- package/dist/effect/Otel/lib-tracer/SimpleProcessor.js.map +0 -1
- package/dist/effect/Otel/lib-tracer/TracerProvider.d.ts +0 -10
- package/dist/effect/Otel/lib-tracer/TracerProvider.d.ts.map +0 -1
- package/dist/effect/Otel/lib-tracer/TracerProvider.js +0 -7
- package/dist/effect/Otel/lib-tracer/TracerProvider.js.map +0 -1
- package/dist/effect/Otel/lib-tracer/WebProvider.d.ts +0 -18
- package/dist/effect/Otel/lib-tracer/WebProvider.d.ts.map +0 -1
- package/dist/effect/Otel/lib-tracer/WebProvider.js +0 -25
- package/dist/effect/Otel/lib-tracer/WebProvider.js.map +0 -1
- package/dist/effect/ReadonlyArray.d.ts +0 -4
- package/dist/effect/ReadonlyArray.d.ts.map +0 -1
- package/dist/effect/ReadonlyArray.js +0 -11
- package/dist/effect/ReadonlyArray.js.map +0 -1
- package/dist/effect/RequestResolver.d.ts +0 -11
- package/dist/effect/RequestResolver.d.ts.map +0 -1
- package/dist/effect/RequestResolver.js +0 -18
- package/dist/effect/RequestResolver.js.map +0 -1
- package/dist/effect/STM.d.ts +0 -3
- package/dist/effect/STM.d.ts.map +0 -1
- package/dist/effect/STM.js +0 -3
- package/dist/effect/STM.js.map +0 -1
- package/dist/effect/Scheduler.d.ts +0 -49
- package/dist/effect/Scheduler.d.ts.map +0 -1
- package/dist/effect/Scheduler.js +0 -168
- package/dist/effect/Scheduler.js.map +0 -1
- package/dist/effect/Schema/SchemaHash.d.ts +0 -3
- package/dist/effect/Schema/SchemaHash.d.ts.map +0 -1
- package/dist/effect/Schema/SchemaHash.js +0 -15
- package/dist/effect/Schema/SchemaHash.js.map +0 -1
- package/dist/effect/Schema/SchemaHash.test.d.ts +0 -2
- package/dist/effect/Schema/SchemaHash.test.d.ts.map +0 -1
- package/dist/effect/Schema/SchemaHash.test.js +0 -13
- package/dist/effect/Schema/SchemaHash.test.js.map +0 -1
- package/dist/effect/Schema/SchemaJsonWrapper.d.ts +0 -11
- package/dist/effect/Schema/SchemaJsonWrapper.d.ts.map +0 -1
- package/dist/effect/Schema/SchemaJsonWrapper.js +0 -38
- package/dist/effect/Schema/SchemaJsonWrapper.js.map +0 -1
- package/dist/effect/Schema/SchemaJsonWrapper.test.d.ts +0 -2
- package/dist/effect/Schema/SchemaJsonWrapper.test.d.ts.map +0 -1
- package/dist/effect/Schema/SchemaJsonWrapper.test.js +0 -42
- package/dist/effect/Schema/SchemaJsonWrapper.test.js.map +0 -1
- package/dist/effect/Schema/index.d.ts +0 -15
- package/dist/effect/Schema/index.d.ts.map +0 -1
- package/dist/effect/Schema/index.js +0 -14
- package/dist/effect/Schema/index.js.map +0 -1
- package/dist/effect/SmartQueue.d.ts +0 -38
- package/dist/effect/SmartQueue.d.ts.map +0 -1
- package/dist/effect/SmartQueue.js +0 -123
- package/dist/effect/SmartQueue.js.map +0 -1
- package/dist/effect/Stream/chainSwitch.d.ts +0 -3
- package/dist/effect/Stream/chainSwitch.d.ts.map +0 -1
- package/dist/effect/Stream/chainSwitch.js +0 -48
- package/dist/effect/Stream/chainSwitch.js.map +0 -1
- package/dist/effect/Stream/index.d.ts +0 -37
- package/dist/effect/Stream/index.d.ts.map +0 -1
- package/dist/effect/Stream/index.js +0 -82
- package/dist/effect/Stream/index.js.map +0 -1
- package/dist/effect/SubscriptionRef.d.ts +0 -10
- package/dist/effect/SubscriptionRef.d.ts.map +0 -1
- package/dist/effect/SubscriptionRef.js +0 -8
- package/dist/effect/SubscriptionRef.js.map +0 -1
- package/dist/effect/TimeoutGate.d.ts +0 -13
- package/dist/effect/TimeoutGate.d.ts.map +0 -1
- package/dist/effect/TimeoutGate.js +0 -41
- package/dist/effect/TimeoutGate.js.map +0 -1
- package/dist/effect/WebCrypto.d.ts +0 -18
- package/dist/effect/WebCrypto.d.ts.map +0 -1
- package/dist/effect/WebCrypto.js +0 -56
- package/dist/effect/WebCrypto.js.map +0 -1
- package/dist/effect/WebLock.d.ts +0 -5
- package/dist/effect/WebLock.d.ts.map +0 -1
- package/dist/effect/WebLock.js +0 -20
- package/dist/effect/WebLock.js.map +0 -1
- package/dist/effect/browser.d.ts +0 -19
- package/dist/effect/browser.d.ts.map +0 -1
- package/dist/effect/browser.js +0 -82
- package/dist/effect/browser.js.map +0 -1
- package/dist/effect/fetch.d.ts +0 -89
- package/dist/effect/fetch.d.ts.map +0 -1
- package/dist/effect/fetch.js +0 -142
- package/dist/effect/fetch.js.map +0 -1
- package/dist/single-item.d.ts +0 -8
- package/dist/single-item.d.ts.map +0 -1
- package/dist/single-item.js +0 -9
- package/dist/single-item.js.map +0 -1
- package/dist/types/index.d.ts +0 -2
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -2
- package/dist/types/index.js.map +0 -1
- package/dist/types/json.d.ts +0 -27
- package/dist/types/json.d.ts.map +0 -1
- package/dist/types/json.js +0 -2
- package/dist/types/json.js.map +0 -1
- package/src/effect/Otel/Dummy.ts +0 -32
- package/src/effect/Otel/Meter.ts +0 -145
- package/src/effect/Otel/OtlpGrpc.ts +0 -75
- package/src/effect/Otel/OtlpHttp.ts +0 -75
- package/src/effect/Otel/OtlpWebsocket.ts +0 -75
- package/src/effect/Otel/Span.ts +0 -222
- package/src/effect/Otel/Tracer.ts +0 -30
- package/src/effect/Otel/index.ts +0 -8
- package/src/effect/Otel/lib-metrics/ExporterMetricsOltpGrpc.ts +0 -39
- package/src/effect/Otel/lib-metrics/ExporterMetricsOltpHttp.ts +0 -39
- package/src/effect/Otel/lib-metrics/ExporterMetricsOltpWebsocket.ts +0 -47
- package/src/effect/Otel/lib-metrics/MetricsProvider.ts +0 -12
- package/src/effect/Otel/lib-metrics/OTLPMetricsProviderGrpc.ts +0 -77
- package/src/effect/Otel/lib-metrics/OTLPMetricsProviderHttp.ts +0 -77
- package/src/effect/Otel/lib-metrics/OTLPMetricsProviderWebsocket.ts +0 -80
- package/src/effect/Otel/lib-metrics/PeriodicMetricsProvider.ts +0 -55
- package/src/effect/Otel/lib-tracer/BatchSpanProcessor.ts +0 -58
- package/src/effect/Otel/lib-tracer/ExporterTraceOtlpGrpc.ts +0 -64
- package/src/effect/Otel/lib-tracer/ExporterTraceOtlpHttp.ts +0 -64
- package/src/effect/Otel/lib-tracer/ExporterTraceOtlpWebsocket.ts +0 -38
- package/src/effect/Otel/lib-tracer/README.md +0 -1
- package/src/effect/Otel/lib-tracer/SimpleProcessor.ts +0 -46
- package/src/effect/Otel/lib-tracer/TracerProvider.ts +0 -16
- package/src/effect/Otel/lib-tracer/WebProvider.ts +0 -48
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import * as Chunk from '@effect/data/Chunk';
|
|
2
|
-
import * as Option from '@effect/data/Option';
|
|
3
|
-
import * as Effect from '@effect/io/Effect';
|
|
4
|
-
import * as Queue from '@effect/io/Queue';
|
|
5
|
-
import * as Stream from '@effect/stream/Stream';
|
|
6
|
-
export const EndItem = Symbol.for('@livestore/utils/effect/EnvVarEndableQueue/EndItem');
|
|
7
|
-
export const make = () => Queue.unbounded();
|
|
8
|
-
export const end = (queue) => Queue.offer(queue, EndItem);
|
|
9
|
-
export const createStream = (queue, maxChunkSize = Stream.DefaultChunkSize) => {
|
|
10
|
-
return Stream.repeatEffectChunkOption(Effect.gen(function* ($) {
|
|
11
|
-
const items = yield* $(Queue.takeBetween(queue, 1, maxChunkSize));
|
|
12
|
-
const nonEndItems = Chunk.filter(items, (item) => item !== EndItem);
|
|
13
|
-
if (Chunk.isEmpty(nonEndItems)) {
|
|
14
|
-
return yield* $(Effect.fail(Option.none()));
|
|
15
|
-
}
|
|
16
|
-
if (nonEndItems.length !== items.length) {
|
|
17
|
-
yield* $(Queue.offer(queue, EndItem));
|
|
18
|
-
}
|
|
19
|
-
return nonEndItems;
|
|
20
|
-
}));
|
|
21
|
-
};
|
|
22
|
-
//# sourceMappingURL=EndableQueue.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EndableQueue.js","sourceRoot":"","sources":["../../src/effect/EndableQueue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,oBAAoB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAA;AAC7C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAE/C,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAA;AAMvF,MAAM,CAAC,MAAM,IAAI,GAAG,GAAU,EAAE,CAAC,KAAK,CAAC,SAAS,EAA2B,CAAA;AAE3E,MAAM,CAAC,MAAM,GAAG,GAAG,CAAQ,KAA0B,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;AAErF,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,KAA0B,EAC1B,eAAuB,MAAM,CAAC,gBAAgB,EACV,EAAE;IACtC,OAAO,MAAM,CAAC,uBAAuB,CACnC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC,CAAA;QAEjE,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,CAAA;QAEnE,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;YAC9B,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;SAC5C;QAED,IAAI,WAAW,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE;YACvC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;SACtC;QAED,OAAO,WAAiC,CAAA;IAC1C,CAAC,CAAC,CACH,CAAA;AACH,CAAC,CAAA"}
|
package/dist/effect/EnvVar.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import * as Context from '@effect/data/Context';
|
|
2
|
-
import * as Effect from '@effect/io/Effect';
|
|
3
|
-
declare const EnvVarSymbol: unique symbol;
|
|
4
|
-
type EnvVarSymbol = typeof EnvVarSymbol;
|
|
5
|
-
export declare class EnvVarImpl<Name> {
|
|
6
|
-
readonly envVarName: Name;
|
|
7
|
-
readonly value: string;
|
|
8
|
-
readonly [EnvVarSymbol]: symbol;
|
|
9
|
-
constructor(envVarName: Name, value: string);
|
|
10
|
-
}
|
|
11
|
-
export declare const provideEnvVar: <Name extends string>(envVarName: Name) => <R1, E1, A1>(ma: Effect.Effect<R1, E1, A1>) => Effect.Effect<Exclude<R1, EnvVar<Name>>, E1, A1>;
|
|
12
|
-
export interface EnvVar<Name extends string> extends EnvVarImpl<Name> {
|
|
13
|
-
}
|
|
14
|
-
export declare const EnvVarFor: <Name extends string>(envVarName: Name) => Context.Tag<EnvVar<Name>, EnvVar<Name>>;
|
|
15
|
-
export {};
|
|
16
|
-
//# sourceMappingURL=EnvVar.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EnvVar.d.ts","sourceRoot":"","sources":["../../src/effect/EnvVar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAA;AAC/C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAE3C,QAAA,MAAM,YAAY,eAA+C,CAAA;AACjE,KAAK,YAAY,GAAG,OAAO,YAAY,CAAA;AAEvC,qBAAa,UAAU,CAAC,IAAI;IAGxB,QAAQ,CAAC,UAAU,EAAE,IAAI;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM;IAHxB,QAAQ,CAAC,CAAC,YAAY,CAAC,SAAe;gBAE3B,UAAU,EAAE,IAAI,EAChB,KAAK,EAAE,MAAM;CAEzB;AAED,eAAO,MAAM,aAAa,4IAQzB,CAAA;AAED,MAAM,WAAW,MAAM,CAAC,IAAI,SAAS,MAAM,CAAE,SAAQ,UAAU,CAAC,IAAI,CAAC;CAAG;AAExE,eAAO,MAAM,SAAS,oFACsC,CAAA"}
|
package/dist/effect/EnvVar.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
var _a;
|
|
2
|
-
import * as Context from '@effect/data/Context';
|
|
3
|
-
import * as Effect from '@effect/io/Effect';
|
|
4
|
-
const EnvVarSymbol = Symbol.for('@livestore/utils/effect/EnvVar');
|
|
5
|
-
export class EnvVarImpl {
|
|
6
|
-
constructor(envVarName, value) {
|
|
7
|
-
this.envVarName = envVarName;
|
|
8
|
-
this.value = value;
|
|
9
|
-
this[_a] = EnvVarSymbol;
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
_a = EnvVarSymbol;
|
|
13
|
-
export const provideEnvVar = (envVarName) => {
|
|
14
|
-
const value = process?.env?.[envVarName];
|
|
15
|
-
if (value === undefined) {
|
|
16
|
-
return () => Effect.die(new Error(`Environment variable not found: "${envVarName}"`));
|
|
17
|
-
}
|
|
18
|
-
return Effect.provideService(EnvVarFor(envVarName), new EnvVarImpl(envVarName, value));
|
|
19
|
-
};
|
|
20
|
-
export const EnvVarFor = (envVarName) => Context.Tag(Symbol.for(`env/${envVarName}`));
|
|
21
|
-
//# sourceMappingURL=EnvVar.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EnvVar.js","sourceRoot":"","sources":["../../src/effect/EnvVar.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAA;AAC/C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAE3C,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAA;AAGjE,MAAM,OAAO,UAAU;IAErB,YACW,UAAgB,EAChB,KAAa;QADb,eAAU,GAAV,UAAU,CAAM;QAChB,UAAK,GAAL,KAAK,CAAQ;QAHf,QAAc,GAAG,YAAY,CAAA;IAInC,CAAC;CACL;KALW,YAAY;AAOxB,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,UAAgB,EACmF,EAAE;IACrG,MAAM,KAAK,GAAG,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,CAAA;IACxC,IAAI,KAAK,KAAK,SAAS,EAAE;QACvB,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,oCAAoC,UAAU,GAAG,CAAC,CAAC,CAAA;KACtF;IACD,OAAO,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,IAAI,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAA;AACxF,CAAC,CAAA;AAID,MAAM,CAAC,MAAM,SAAS,GAAG,CAAsB,UAAgB,EAA2C,EAAE,CAC1G,OAAO,CAAC,GAAG,CAAe,MAAM,CAAC,GAAG,CAAC,OAAO,UAAU,EAAE,CAAC,CAAC,CAAA"}
|
package/dist/effect/Gate.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import * as Effect from '@effect/io/Effect';
|
|
2
|
-
import * as TRef from '@effect/stm/TRef';
|
|
3
|
-
export declare class Gate {
|
|
4
|
-
private readonly ref;
|
|
5
|
-
constructor(ref: TRef.TRef<boolean>);
|
|
6
|
-
open: Effect.Effect<never, never, boolean>;
|
|
7
|
-
close: Effect.Effect<never, never, boolean>;
|
|
8
|
-
waitForOpen: Effect.Effect<never, never, void>;
|
|
9
|
-
waitForOpenAndThenClose: Effect.Effect<never, never, void>;
|
|
10
|
-
waitForClose: Effect.Effect<never, never, void>;
|
|
11
|
-
runGated: <R, E, A>(effect: Effect.Effect<R, E, A>) => Effect.Effect<R, E, A>;
|
|
12
|
-
}
|
|
13
|
-
export declare const makeGate: (initiallyOpen: boolean) => Effect.Effect<never, never, Gate>;
|
|
14
|
-
//# sourceMappingURL=Gate.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Gate.d.ts","sourceRoot":"","sources":["../../src/effect/Gate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAE3C,OAAO,KAAK,IAAI,MAAM,kBAAkB,CAAA;AAExC,qBAAa,IAAI;IACH,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IAEpD,IAAI,uCAAmD;IAEvD,KAAK,uCAAoD;IAEzD,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAI7C;IAED,uBAAuB,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAKzD;IAED,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAI9C;IAED,QAAQ,sEAKL;CACJ;AAED,eAAO,MAAM,QAAQ,kBAAmB,OAAO,KAAG,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAK/E,CAAA"}
|
package/dist/effect/Gate.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { pipe } from '@effect/data/Function';
|
|
2
|
-
import * as Effect from '@effect/io/Effect';
|
|
3
|
-
import * as STM from '@effect/stm/STM';
|
|
4
|
-
import * as TRef from '@effect/stm/TRef';
|
|
5
|
-
export class Gate {
|
|
6
|
-
constructor(ref) {
|
|
7
|
-
this.ref = ref;
|
|
8
|
-
this.open = pipe(TRef.getAndSet(this.ref, true), STM.commit);
|
|
9
|
-
this.close = pipe(TRef.getAndSet(this.ref, false), STM.commit);
|
|
10
|
-
this.waitForOpen = pipe(TRef.get(this.ref), STM.flatMap((isOpen) => STM.check(() => isOpen)), STM.commit);
|
|
11
|
-
this.waitForOpenAndThenClose = pipe(TRef.get(this.ref), STM.flatMap((isOpen) => STM.check(() => isOpen)), STM.flatMap(() => TRef.set(this.ref, false)), STM.commit);
|
|
12
|
-
this.waitForClose = pipe(TRef.get(this.ref), STM.flatMap((isOpen) => STM.check(() => !isOpen)), STM.commit);
|
|
13
|
-
this.runGated = (effect) => pipe(this.waitForOpenAndThenClose, Effect.flatMap(() => effect), Effect.tap(() => this.open));
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
export const makeGate = (initiallyOpen) => pipe(TRef.make(initiallyOpen), STM.map((ref) => new Gate(ref)), STM.commit);
|
|
17
|
-
//# sourceMappingURL=Gate.js.map
|
package/dist/effect/Gate.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Gate.js","sourceRoot":"","sources":["../../src/effect/Gate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAC5C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,GAAG,MAAM,iBAAiB,CAAA;AACtC,OAAO,KAAK,IAAI,MAAM,kBAAkB,CAAA;AAExC,MAAM,OAAO,IAAI;IACf,YAA6B,GAAuB;QAAvB,QAAG,GAAH,GAAG,CAAoB;QAEpD,SAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;QAEvD,UAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;QAEzD,gBAAW,GAAsC,IAAI,CACnD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAClB,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAChD,GAAG,CAAC,MAAM,CACX,CAAA;QAED,4BAAuB,GAAsC,IAAI,CAC/D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAClB,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAChD,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,EAC5C,GAAG,CAAC,MAAM,CACX,CAAA;QAED,iBAAY,GAAsC,IAAI,CACpD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAClB,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EACjD,GAAG,CAAC,MAAM,CACX,CAAA;QAED,aAAQ,GAAG,CAAU,MAA8B,EAA0B,EAAE,CAC7E,IAAI,CACF,IAAI,CAAC,uBAAuB,EAC5B,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAC5B,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAC5B,CAAA;IA9BoD,CAAC;CA+BzD;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,aAAsB,EAAqC,EAAE,CACpF,IAAI,CACF,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EACxB,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAC/B,GAAG,CAAC,MAAM,CACX,CAAA"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import * as Layer from '@effect/io/Layer';
|
|
2
|
-
import * as Otel from './index.js';
|
|
3
|
-
export declare const DummyTracingLive: Layer.Layer<never, never, Otel.Tracer>;
|
|
4
|
-
export declare const DummyMeterLive: Layer.Layer<never, never, Otel.Meter>;
|
|
5
|
-
//# sourceMappingURL=Dummy.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Dummy.d.ts","sourceRoot":"","sources":["../../../src/effect/Otel/Dummy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AAIzC,OAAO,KAAK,IAAI,MAAM,YAAY,CAAA;AAYlC,eAAO,MAAM,gBAAgB,wCAAgD,CAAA;AAe7E,eAAO,MAAM,cAAc,uCAA6C,CAAA"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import * as Layer from '@effect/io/Layer';
|
|
2
|
-
import { NoopTracer } from '../../NoopTracer.js';
|
|
3
|
-
import * as Otel from './index.js';
|
|
4
|
-
//
|
|
5
|
-
// Dummy Tracer
|
|
6
|
-
//
|
|
7
|
-
const DummyTracing = () => ({
|
|
8
|
-
[Otel.TracerSymbol]: Otel.TracerSymbol,
|
|
9
|
-
tracer: new NoopTracer(),
|
|
10
|
-
});
|
|
11
|
-
export const DummyTracingLive = Layer.sync(Otel.Tracer, () => DummyTracing());
|
|
12
|
-
const NoopMeter = () => ({
|
|
13
|
-
createHistogram: () => ({ record: () => { } }),
|
|
14
|
-
createCounter: () => ({ add: () => { } }),
|
|
15
|
-
createUpDownCounter: () => ({ add: () => { } }),
|
|
16
|
-
});
|
|
17
|
-
const DummyMeter = () => ({
|
|
18
|
-
[Otel.MeterSymbol]: Otel.MeterSymbol,
|
|
19
|
-
meter: NoopMeter(),
|
|
20
|
-
});
|
|
21
|
-
export const DummyMeterLive = Layer.sync(Otel.Meter, () => DummyMeter());
|
|
22
|
-
//# sourceMappingURL=Dummy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Dummy.js","sourceRoot":"","sources":["../../../src/effect/Otel/Dummy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AAGzC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,KAAK,IAAI,MAAM,YAAY,CAAA;AAElC,EAAE;AACF,eAAe;AACf,EAAE;AAEF,MAAM,YAAY,GAAG,GAAG,EAAE,CACxB,CAAC;IACC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,YAAY;IACtC,MAAM,EAAE,IAAI,UAAU,EAAE;CACzB,CAAU,CAAA;AAEb,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC,CAAA;AAE7E,MAAM,SAAS,GAAG,GAAG,EAAE,CACrB,CAAC;IACC,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;IAC7C,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;IACxC,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;CAC/C,CAAiC,CAAA;AAEpC,MAAM,UAAU,GAAG,GAAG,EAAE,CACtB,CAAC;IACC,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,WAAW;IACpC,KAAK,EAAE,SAAS,EAAE;CACnB,CAAU,CAAA;AAEb,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,CAAA"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import * as Context from '@effect/data/Context';
|
|
2
|
-
import * as Effect from '@effect/io/Effect';
|
|
3
|
-
import * as Layer from '@effect/io/Layer';
|
|
4
|
-
import type * as OTMetrics from '@opentelemetry/api-metrics';
|
|
5
|
-
import { MetricsProvider } from './lib-metrics/MetricsProvider.js';
|
|
6
|
-
export declare const MeterSymbol: unique symbol;
|
|
7
|
-
export type MeterSymbol = typeof MeterSymbol;
|
|
8
|
-
export interface Meter {
|
|
9
|
-
readonly [MeterSymbol]: MeterSymbol;
|
|
10
|
-
readonly meter: OTMetrics.Meter;
|
|
11
|
-
}
|
|
12
|
-
export declare const Meter: Context.Tag<Meter, Meter>;
|
|
13
|
-
export declare const makeMeter: (name: string) => Effect.Effect<MetricsProvider, never, Meter>;
|
|
14
|
-
export declare const LiveMeter: Layer.Layer<MetricsProvider, never, Meter>;
|
|
15
|
-
export declare const histogram: (metricName: string, value: number, attributes?: OTMetrics.MetricAttributes) => <R, E, A>(effect: Effect.Effect<R, E, A>) => Effect.Effect<Meter | R, E, A>;
|
|
16
|
-
export declare const histogramEff: <R2>(metricName: string, valueEff: Effect.Effect<R2, never, number>) => <R, E, A>(effect: Effect.Effect<R, E, A>) => Effect.Effect<Meter | R2 | R, E, A>;
|
|
17
|
-
export declare const upDownCounter: (metricName: string, delta: number, attributes?: OTMetrics.MetricAttributes) => <R, E, A>(effect: Effect.Effect<R, E, A>) => Effect.Effect<Meter | R, E, A>;
|
|
18
|
-
/** NOTE we're using an up-down-counter here (which is push based) instead of an observable gauge (which is pull based) */
|
|
19
|
-
export declare const gauge: (metricName: string, value: number, attributes?: OTMetrics.MetricAttributes) => <R, E, A>(effect: Effect.Effect<R, E, A>) => Effect.Effect<Meter | R, E, A>;
|
|
20
|
-
//# sourceMappingURL=Meter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Meter.d.ts","sourceRoot":"","sources":["../../../src/effect/Otel/Meter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAA;AAE/C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,KAAK,KAAK,SAAS,MAAM,4BAA4B,CAAA;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAElE,eAAO,MAAM,WAAW,eAAkC,CAAA;AAC1D,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAA;AAE5C,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,CAAC,WAAW,CAAC,EAAE,WAAW,CAAA;IACnC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAA;CAChC;AAED,eAAO,MAAM,KAAK,2BAAkC,CAAA;AAEpD,eAAO,MAAM,SAAS,SAAU,MAAM,iDAUlC,CAAA;AAEJ,eAAO,MAAM,SAAS,4CAAuD,CAAA;AAe7E,eAAO,MAAM,SAAS,eACP,MAAM,SAAS,MAAM,eAAe,UAAU,gBAAgB,gFASxE,CAAA;AAEL,eAAO,MAAM,YAAY,mBACN,MAAM,iIASpB,CAAA;AAEL,eAAO,MAAM,aAAa,eACX,MAAM,SAAS,MAAM,eAAe,UAAU,gBAAgB,gFASxE,CAAA;AAEL,0HAA0H;AAC1H,eAAO,MAAM,KAAK,eACH,MAAM,SAAS,MAAM,eAAe,UAAU,gBAAgB,gFAqB1E,CAAA"}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import * as Context from '@effect/data/Context';
|
|
2
|
-
import { identity, pipe } from '@effect/data/Function';
|
|
3
|
-
import * as Effect from '@effect/io/Effect';
|
|
4
|
-
import * as Layer from '@effect/io/Layer';
|
|
5
|
-
import { MetricsProvider } from './lib-metrics/MetricsProvider.js';
|
|
6
|
-
export const MeterSymbol = Symbol.for('effect-otel/Meter');
|
|
7
|
-
export const Meter = Context.Tag(MeterSymbol);
|
|
8
|
-
export const makeMeter = (name) => Effect.gen(function* ($) {
|
|
9
|
-
const { metricsProvider } = yield* $(MetricsProvider);
|
|
10
|
-
const meter = yield* $(Effect.sync(() => metricsProvider.getMeter(name)));
|
|
11
|
-
return identity({
|
|
12
|
-
[MeterSymbol]: MeterSymbol,
|
|
13
|
-
meter,
|
|
14
|
-
});
|
|
15
|
-
});
|
|
16
|
-
export const LiveMeter = Layer.scoped(Meter, makeMeter('@effect/otel/Meter'));
|
|
17
|
-
const metricCache = {
|
|
18
|
-
histograms: new Map(),
|
|
19
|
-
gauges: new Map(),
|
|
20
|
-
upDownCounters: new Map(),
|
|
21
|
-
};
|
|
22
|
-
export const histogram = (metricName, value, attributes) => (effect) => Effect.tap(effect, () => pipe(Effect.map(Meter, ({ meter }) => getOrCreate(metricCache.histograms, metricName, () => meter.createHistogram(metricName))), Effect.tap((histogram) => Effect.sync(() => histogram.record(value, attributes)))));
|
|
23
|
-
export const histogramEff = (metricName, valueEff) => (effect) => Effect.tap(effect, () => pipe(Effect.map(Meter, ({ meter }) => getOrCreate(metricCache.histograms, metricName, () => meter.createHistogram(metricName))), Effect.tap((histogram) => Effect.map(valueEff, (value) => histogram.record(value)))));
|
|
24
|
-
export const upDownCounter = (metricName, delta, attributes) => (effect) => Effect.tap(effect, () => pipe(Effect.map(Meter, ({ meter }) => getOrCreate(metricCache.upDownCounters, metricName, () => meter.createUpDownCounter(metricName))), Effect.tap((counter) => Effect.sync(() => counter.add(delta, attributes)))));
|
|
25
|
-
/** NOTE we're using an up-down-counter here (which is push based) instead of an observable gauge (which is pull based) */
|
|
26
|
-
export const gauge = (metricName, value, attributes) => (effect) => {
|
|
27
|
-
// NOTE this is currently used to keep separate gauges for each attribute value
|
|
28
|
-
const metricCacheName = metricName + '_' + JSON.stringify(attributes);
|
|
29
|
-
return Effect.tap(effect, () => pipe(Effect.map(Meter, ({ meter }) => getOrCreate(metricCache.gauges, metricCacheName, () => ({
|
|
30
|
-
counter: meter.createUpDownCounter(metricName),
|
|
31
|
-
prevValue: 0,
|
|
32
|
-
}))), Effect.tap(({ counter, prevValue }) => Effect.sync(() => {
|
|
33
|
-
const delta = value - prevValue;
|
|
34
|
-
counter.add(delta, attributes);
|
|
35
|
-
metricCache.gauges.set(metricCacheName, { counter, prevValue: value });
|
|
36
|
-
}))));
|
|
37
|
-
};
|
|
38
|
-
// export const gauge =
|
|
39
|
-
// (metricName: string, value: number, attributes?: OTMetrics.MetricAttributes) =>
|
|
40
|
-
// <R, E, A>(effect: Effect.Effect<R, E, A>) => {
|
|
41
|
-
// // NOTE this is currently used to keep separate gauges for each attribute value
|
|
42
|
-
// const metricCacheName = metricName + '_' + JSON.stringify(attributes)
|
|
43
|
-
// return pipe(
|
|
44
|
-
// effect,
|
|
45
|
-
// Effect.tap(() =>
|
|
46
|
-
// pipe(
|
|
47
|
-
// withMeter((meter) =>
|
|
48
|
-
// getOrCreate(metricCache.gauges, metricCacheName, () => ({
|
|
49
|
-
// observable: meter.createObservableGauge(metricName),
|
|
50
|
-
// currentCallback: () => {},
|
|
51
|
-
// })),
|
|
52
|
-
// ),
|
|
53
|
-
// Effect.tap(({ observable, currentCallback }) =>
|
|
54
|
-
// Effect.succeedWith(() => {
|
|
55
|
-
// observable.removeCallback(currentCallback)
|
|
56
|
-
// const newCallback: OTMetrics.ObservableCallback = (observableResult) => {
|
|
57
|
-
// observableResult.observe(value, attributes)
|
|
58
|
-
// }
|
|
59
|
-
// observable.addCallback(newCallback)
|
|
60
|
-
// metricCache.gauges.set(metricCacheName, { observable, currentCallback: newCallback })
|
|
61
|
-
// }),
|
|
62
|
-
// ),
|
|
63
|
-
// ),
|
|
64
|
-
// ),
|
|
65
|
-
// )
|
|
66
|
-
// }
|
|
67
|
-
const getOrCreate = (map, name, create) => {
|
|
68
|
-
const cached = map.get(name);
|
|
69
|
-
if (cached) {
|
|
70
|
-
return cached;
|
|
71
|
-
}
|
|
72
|
-
const created = create();
|
|
73
|
-
map.set(name, created);
|
|
74
|
-
return created;
|
|
75
|
-
};
|
|
76
|
-
//# sourceMappingURL=Meter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Meter.js","sourceRoot":"","sources":["../../../src/effect/Otel/Meter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import * as Layer from '@effect/io/Layer';
|
|
2
|
-
import type { ResourceAttributes } from '@opentelemetry/resources';
|
|
3
|
-
import * as Otel from './index.js';
|
|
4
|
-
export declare const makeWebTracingLayer: (serviceName: string, exporterUrl?: string, resourceAttributes?: ResourceAttributes) => Layer.Layer<never, never, Otel.Tracer>;
|
|
5
|
-
export declare const makeWebMetricLayer: (serviceName: string, exporterUrl?: string, resourceAttributes?: ResourceAttributes) => Layer.Layer<never, never, Otel.Meter>;
|
|
6
|
-
//# sourceMappingURL=OtlpGrpc.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OtlpGrpc.d.ts","sourceRoot":"","sources":["../../../src/effect/Otel/OtlpGrpc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAIlE,OAAO,KAAK,IAAI,MAAM,YAAY,CAAA;AA6BlC,eAAO,MAAM,mBAAmB,gBACjB,MAAM,gBACL,MAAM,uBACC,kBAAkB,KACtC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,MAAM,CAOrC,CAAA;AAqBH,eAAO,MAAM,kBAAkB,gBAChB,MAAM,gBACL,MAAM,uBACC,kBAAkB,KACtC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,KAAK,CAIpC,CAAA"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import * as Layer from '@effect/io/Layer';
|
|
2
|
-
import { Resource } from '@opentelemetry/resources';
|
|
3
|
-
import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions';
|
|
4
|
-
import * as Otel from './index.js';
|
|
5
|
-
import { makeOTLPMetricExporterConfigLayer } from './lib-metrics/ExporterMetricsOltpGrpc.js';
|
|
6
|
-
import { OTLPMetricsProvider } from './lib-metrics/OTLPMetricsProviderGrpc.js';
|
|
7
|
-
import { BatchProcessor } from './lib-tracer/BatchSpanProcessor.js';
|
|
8
|
-
import * as GrpcExporter from './lib-tracer/ExporterTraceOtlpGrpc.js';
|
|
9
|
-
import * as OTWeb from './lib-tracer/WebProvider.js';
|
|
10
|
-
import { LiveMeter } from './Meter.js';
|
|
11
|
-
//
|
|
12
|
-
// TRACING
|
|
13
|
-
//
|
|
14
|
-
const makeWebTracingProvider = (serviceName, resourceAttributes) => OTWeb.WebProvider({
|
|
15
|
-
resource: new Resource({
|
|
16
|
-
[SemanticResourceAttributes.SERVICE_NAME]: serviceName,
|
|
17
|
-
...resourceAttributes,
|
|
18
|
-
}),
|
|
19
|
-
});
|
|
20
|
-
const TraceCollectorConfig = (exporterUrl) => GrpcExporter.makeOTLPTraceExporterConfigLayer({
|
|
21
|
-
// empty headers makes sure to use XHR instead of `navigator.sendBeacon`
|
|
22
|
-
headers: {},
|
|
23
|
-
url: exporterUrl,
|
|
24
|
-
});
|
|
25
|
-
const LiveBatchGrpcProcessor = BatchProcessor(GrpcExporter.makeTracingSpanExporter);
|
|
26
|
-
export const makeWebTracingLayer = (serviceName, exporterUrl, resourceAttributes) => Layer.provideMerge(TraceCollectorConfig(exporterUrl), Layer.provide(Layer.provideMerge(makeWebTracingProvider(serviceName, resourceAttributes), LiveBatchGrpcProcessor), Otel.LiveTracer));
|
|
27
|
-
//
|
|
28
|
-
// METRICS
|
|
29
|
-
//
|
|
30
|
-
const makeWebMetricProvider = (serviceName, resourceAttributes) => OTLPMetricsProvider({
|
|
31
|
-
resource: new Resource({
|
|
32
|
-
[SemanticResourceAttributes.SERVICE_NAME]: serviceName,
|
|
33
|
-
...resourceAttributes,
|
|
34
|
-
}),
|
|
35
|
-
});
|
|
36
|
-
const MetricCollectorConfig = (exporterUrl) => makeOTLPMetricExporterConfigLayer({
|
|
37
|
-
// empty headers makes sure to use XHR instead of `navigator.sendBeacon`
|
|
38
|
-
headers: {},
|
|
39
|
-
url: exporterUrl,
|
|
40
|
-
});
|
|
41
|
-
export const makeWebMetricLayer = (serviceName, exporterUrl, resourceAttributes) => Layer.provide(Layer.provideMerge(MetricCollectorConfig(exporterUrl), makeWebMetricProvider(serviceName, resourceAttributes)), LiveMeter);
|
|
42
|
-
//# sourceMappingURL=OtlpGrpc.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OtlpGrpc.js","sourceRoot":"","sources":["../../../src/effect/Otel/OtlpGrpc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAA;AAEhF,OAAO,KAAK,IAAI,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,iCAAiC,EAAE,MAAM,0CAA0C,CAAA;AAC5F,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAA;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACnE,OAAO,KAAK,YAAY,MAAM,uCAAuC,CAAA;AACrE,OAAO,KAAK,KAAK,MAAM,6BAA6B,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAEtC,EAAE;AACF,UAAU;AACV,EAAE;AAEF,MAAM,sBAAsB,GAAG,CAAC,WAAmB,EAAE,kBAAuC,EAAE,EAAE,CAC9F,KAAK,CAAC,WAAW,CAAC;IAChB,QAAQ,EAAE,IAAI,QAAQ,CAAC;QACrB,CAAC,0BAA0B,CAAC,YAAY,CAAC,EAAE,WAAW;QACtD,GAAG,kBAAkB;KACtB,CAAC;CACH,CAAC,CAAA;AAEJ,MAAM,oBAAoB,GAAG,CAAC,WAAoB,EAAE,EAAE,CACpD,YAAY,CAAC,gCAAgC,CAAC;IAC5C,wEAAwE;IACxE,OAAO,EAAE,EAAE;IACX,GAAG,EAAE,WAAW;CACjB,CAAC,CAAA;AAEJ,MAAM,sBAAsB,GAAG,cAAc,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAA;AAEnF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,WAAmB,EACnB,WAAoB,EACpB,kBAAuC,EACC,EAAE,CAC1C,KAAK,CAAC,YAAY,CAChB,oBAAoB,CAAC,WAAW,CAAC,EACjC,KAAK,CAAC,OAAO,CACX,KAAK,CAAC,YAAY,CAAC,sBAAsB,CAAC,WAAW,EAAE,kBAAkB,CAAC,EAAE,sBAAsB,CAAC,EACnG,IAAI,CAAC,UAAU,CAChB,CACF,CAAA;AAEH,EAAE;AACF,UAAU;AACV,EAAE;AAEF,MAAM,qBAAqB,GAAG,CAAC,WAAmB,EAAE,kBAAuC,EAAE,EAAE,CAC7F,mBAAmB,CAAC;IAClB,QAAQ,EAAE,IAAI,QAAQ,CAAC;QACrB,CAAC,0BAA0B,CAAC,YAAY,CAAC,EAAE,WAAW;QACtD,GAAG,kBAAkB;KACtB,CAAC;CACH,CAAC,CAAA;AAEJ,MAAM,qBAAqB,GAAG,CAAC,WAAoB,EAAE,EAAE,CACrD,iCAAiC,CAAC;IAChC,wEAAwE;IACxE,OAAO,EAAE,EAAE;IACX,GAAG,EAAE,WAAW;CACjB,CAAC,CAAA;AAEJ,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,WAAmB,EACnB,WAAoB,EACpB,kBAAuC,EACA,EAAE,CACzC,KAAK,CAAC,OAAO,CACX,KAAK,CAAC,YAAY,CAAC,qBAAqB,CAAC,WAAW,CAAC,EAAE,qBAAqB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC,EAC9G,SAAS,CACV,CAAA"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import * as Layer from '@effect/io/Layer';
|
|
2
|
-
import type { ResourceAttributes } from '@opentelemetry/resources';
|
|
3
|
-
import * as Otel from './index.js';
|
|
4
|
-
export declare const makeWebTracingLayer: (serviceName: string, exporterUrl?: string, resourceAttributes?: ResourceAttributes) => Layer.Layer<never, never, Otel.Tracer>;
|
|
5
|
-
export declare const makeWebMetricLayer: (serviceName: string, exporterUrl?: string, resourceAttributes?: ResourceAttributes) => Layer.Layer<never, never, Otel.Meter>;
|
|
6
|
-
//# sourceMappingURL=OtlpHttp.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OtlpHttp.d.ts","sourceRoot":"","sources":["../../../src/effect/Otel/OtlpHttp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAIlE,OAAO,KAAK,IAAI,MAAM,YAAY,CAAA;AA6BlC,eAAO,MAAM,mBAAmB,gBACjB,MAAM,gBACL,MAAM,uBACC,kBAAkB,KACtC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,MAAM,CAOrC,CAAA;AAqBH,eAAO,MAAM,kBAAkB,gBAChB,MAAM,gBACL,MAAM,uBACC,kBAAkB,KACtC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,KAAK,CAIpC,CAAA"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import * as Layer from '@effect/io/Layer';
|
|
2
|
-
import { Resource } from '@opentelemetry/resources';
|
|
3
|
-
import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions';
|
|
4
|
-
import * as Otel from './index.js';
|
|
5
|
-
import { makeOTLPMetricExporterConfigLayer } from './lib-metrics/ExporterMetricsOltpHttp.js';
|
|
6
|
-
import { OTLPMetricsProvider } from './lib-metrics/OTLPMetricsProviderHttp.js';
|
|
7
|
-
import { BatchProcessor } from './lib-tracer/BatchSpanProcessor.js';
|
|
8
|
-
import * as HttpExporter from './lib-tracer/ExporterTraceOtlpHttp.js';
|
|
9
|
-
import * as OTWeb from './lib-tracer/WebProvider.js';
|
|
10
|
-
import { LiveMeter } from './Meter.js';
|
|
11
|
-
//
|
|
12
|
-
// TRACING
|
|
13
|
-
//
|
|
14
|
-
const makeWebTracingProvider = (serviceName, resourceAttributes) => OTWeb.WebProvider({
|
|
15
|
-
resource: new Resource({
|
|
16
|
-
[SemanticResourceAttributes.SERVICE_NAME]: serviceName,
|
|
17
|
-
...resourceAttributes,
|
|
18
|
-
}),
|
|
19
|
-
});
|
|
20
|
-
const TraceCollectorConfig = (exporterUrl) => HttpExporter.makeOTLPTraceExporterConfigLayer({
|
|
21
|
-
// empty headers makes sure to use XHR instead of `navigator.sendBeacon`
|
|
22
|
-
headers: {},
|
|
23
|
-
url: exporterUrl,
|
|
24
|
-
});
|
|
25
|
-
const LiveBatchHttpProcessor = BatchProcessor(HttpExporter.makeTracingSpanExporter);
|
|
26
|
-
export const makeWebTracingLayer = (serviceName, exporterUrl, resourceAttributes) => Layer.provideMerge(TraceCollectorConfig(exporterUrl), Layer.provide(Layer.provideMerge(makeWebTracingProvider(serviceName, resourceAttributes), LiveBatchHttpProcessor), Otel.LiveTracer));
|
|
27
|
-
//
|
|
28
|
-
// METRICS
|
|
29
|
-
//
|
|
30
|
-
const makeWebMetricProvider = (serviceName, resourceAttributes) => OTLPMetricsProvider({
|
|
31
|
-
resource: new Resource({
|
|
32
|
-
[SemanticResourceAttributes.SERVICE_NAME]: serviceName,
|
|
33
|
-
...resourceAttributes,
|
|
34
|
-
}),
|
|
35
|
-
});
|
|
36
|
-
const MetricCollectorConfig = (exporterUrl) => makeOTLPMetricExporterConfigLayer({
|
|
37
|
-
// empty headers makes sure to use XHR instead of `navigator.sendBeacon`
|
|
38
|
-
headers: {},
|
|
39
|
-
url: exporterUrl,
|
|
40
|
-
});
|
|
41
|
-
export const makeWebMetricLayer = (serviceName, exporterUrl, resourceAttributes) => Layer.provide(Layer.provideMerge(MetricCollectorConfig(exporterUrl), makeWebMetricProvider(serviceName, resourceAttributes)), LiveMeter);
|
|
42
|
-
//# sourceMappingURL=OtlpHttp.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OtlpHttp.js","sourceRoot":"","sources":["../../../src/effect/Otel/OtlpHttp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAA;AAEhF,OAAO,KAAK,IAAI,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,iCAAiC,EAAE,MAAM,0CAA0C,CAAA;AAC5F,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAA;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACnE,OAAO,KAAK,YAAY,MAAM,uCAAuC,CAAA;AACrE,OAAO,KAAK,KAAK,MAAM,6BAA6B,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAEtC,EAAE;AACF,UAAU;AACV,EAAE;AAEF,MAAM,sBAAsB,GAAG,CAAC,WAAmB,EAAE,kBAAuC,EAAE,EAAE,CAC9F,KAAK,CAAC,WAAW,CAAC;IAChB,QAAQ,EAAE,IAAI,QAAQ,CAAC;QACrB,CAAC,0BAA0B,CAAC,YAAY,CAAC,EAAE,WAAW;QACtD,GAAG,kBAAkB;KACtB,CAAC;CACH,CAAC,CAAA;AAEJ,MAAM,oBAAoB,GAAG,CAAC,WAAoB,EAAE,EAAE,CACpD,YAAY,CAAC,gCAAgC,CAAC;IAC5C,wEAAwE;IACxE,OAAO,EAAE,EAAE;IACX,GAAG,EAAE,WAAW;CACjB,CAAC,CAAA;AAEJ,MAAM,sBAAsB,GAAG,cAAc,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAA;AAEnF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,WAAmB,EACnB,WAAoB,EACpB,kBAAuC,EACC,EAAE,CAC1C,KAAK,CAAC,YAAY,CAChB,oBAAoB,CAAC,WAAW,CAAC,EACjC,KAAK,CAAC,OAAO,CACX,KAAK,CAAC,YAAY,CAAC,sBAAsB,CAAC,WAAW,EAAE,kBAAkB,CAAC,EAAE,sBAAsB,CAAC,EACnG,IAAI,CAAC,UAAU,CAChB,CACF,CAAA;AAEH,EAAE;AACF,UAAU;AACV,EAAE;AAEF,MAAM,qBAAqB,GAAG,CAAC,WAAmB,EAAE,kBAAuC,EAAE,EAAE,CAC7F,mBAAmB,CAAC;IAClB,QAAQ,EAAE,IAAI,QAAQ,CAAC;QACrB,CAAC,0BAA0B,CAAC,YAAY,CAAC,EAAE,WAAW;QACtD,GAAG,kBAAkB;KACtB,CAAC;CACH,CAAC,CAAA;AAEJ,MAAM,qBAAqB,GAAG,CAAC,WAAoB,EAAE,EAAE,CACrD,iCAAiC,CAAC;IAChC,wEAAwE;IACxE,OAAO,EAAE,EAAE;IACX,GAAG,EAAE,WAAW;CACjB,CAAC,CAAA;AAEJ,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,WAAmB,EACnB,WAAoB,EACpB,kBAAuC,EACA,EAAE,CACzC,KAAK,CAAC,OAAO,CACX,KAAK,CAAC,YAAY,CAAC,qBAAqB,CAAC,WAAW,CAAC,EAAE,qBAAqB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC,EAC9G,SAAS,CACV,CAAA"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import * as Layer from '@effect/io/Layer';
|
|
2
|
-
import type { ResourceAttributes } from '@opentelemetry/resources';
|
|
3
|
-
import * as Otel from './index.js';
|
|
4
|
-
export declare const makeWebTracingLayer: (serviceName: string, exporterUrl?: string, resourceAttributes?: ResourceAttributes) => Layer.Layer<never, never, Otel.Tracer>;
|
|
5
|
-
export declare const makeWebMetricLayer: (serviceName: string, exporterUrl?: string, resourceAttributes?: ResourceAttributes) => Layer.Layer<never, never, Otel.Meter>;
|
|
6
|
-
//# sourceMappingURL=OtlpWebsocket.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OtlpWebsocket.d.ts","sourceRoot":"","sources":["../../../src/effect/Otel/OtlpWebsocket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAIlE,OAAO,KAAK,IAAI,MAAM,YAAY,CAAA;AA6BlC,eAAO,MAAM,mBAAmB,gBACjB,MAAM,gBACL,MAAM,uBACC,kBAAkB,KACtC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,MAAM,CAOrC,CAAA;AAqBH,eAAO,MAAM,kBAAkB,gBAChB,MAAM,gBACL,MAAM,uBACC,kBAAkB,KACtC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,KAAK,CAIpC,CAAA"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import * as Layer from '@effect/io/Layer';
|
|
2
|
-
import { Resource } from '@opentelemetry/resources';
|
|
3
|
-
import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions';
|
|
4
|
-
import * as Otel from './index.js';
|
|
5
|
-
import { makeOTLPMetricExporterConfigLayer } from './lib-metrics/ExporterMetricsOltpWebsocket.js';
|
|
6
|
-
import { OTLPMetricsProvider } from './lib-metrics/OTLPMetricsProviderWebsocket.js';
|
|
7
|
-
import { BatchProcessor } from './lib-tracer/BatchSpanProcessor.js';
|
|
8
|
-
import * as WebSocketExporter from './lib-tracer/ExporterTraceOtlpWebsocket.js';
|
|
9
|
-
import * as OTWeb from './lib-tracer/WebProvider.js';
|
|
10
|
-
import { LiveMeter } from './Meter.js';
|
|
11
|
-
//
|
|
12
|
-
// TRACING
|
|
13
|
-
//
|
|
14
|
-
const makeWebTracingProvider = (serviceName, resourceAttributes) => OTWeb.WebProvider({
|
|
15
|
-
resource: new Resource({
|
|
16
|
-
[SemanticResourceAttributes.SERVICE_NAME]: serviceName,
|
|
17
|
-
...resourceAttributes,
|
|
18
|
-
}),
|
|
19
|
-
});
|
|
20
|
-
const TraceCollectorConfig = (exporterUrl) => WebSocketExporter.makeOTLPTraceExporterConfigLayer({
|
|
21
|
-
// empty headers makes sure to use XHR instead of `navigator.sendBeacon`
|
|
22
|
-
headers: {},
|
|
23
|
-
url: exporterUrl,
|
|
24
|
-
});
|
|
25
|
-
const LiveBatchWebsocketProcessor = BatchProcessor(WebSocketExporter.makeTracingSpanExporter);
|
|
26
|
-
export const makeWebTracingLayer = (serviceName, exporterUrl, resourceAttributes) => Layer.provideMerge(TraceCollectorConfig(exporterUrl), Layer.provide(Layer.provideMerge(makeWebTracingProvider(serviceName, resourceAttributes), LiveBatchWebsocketProcessor), Otel.LiveTracer));
|
|
27
|
-
//
|
|
28
|
-
// METRICS
|
|
29
|
-
//
|
|
30
|
-
const makeWebMetricProvider = (serviceName, resourceAttributes) => OTLPMetricsProvider({
|
|
31
|
-
resource: new Resource({
|
|
32
|
-
[SemanticResourceAttributes.SERVICE_NAME]: serviceName,
|
|
33
|
-
...resourceAttributes,
|
|
34
|
-
}),
|
|
35
|
-
});
|
|
36
|
-
const MetricCollectorConfig = (exporterUrl) => makeOTLPMetricExporterConfigLayer({
|
|
37
|
-
// empty headers makes sure to use XHR instead of `navigator.sendBeacon`
|
|
38
|
-
headers: {},
|
|
39
|
-
url: exporterUrl,
|
|
40
|
-
});
|
|
41
|
-
export const makeWebMetricLayer = (serviceName, exporterUrl, resourceAttributes) => Layer.provide(Layer.provideMerge(MetricCollectorConfig(exporterUrl), makeWebMetricProvider(serviceName, resourceAttributes)), LiveMeter);
|
|
42
|
-
//# sourceMappingURL=OtlpWebsocket.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OtlpWebsocket.js","sourceRoot":"","sources":["../../../src/effect/Otel/OtlpWebsocket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAA;AAEhF,OAAO,KAAK,IAAI,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,iCAAiC,EAAE,MAAM,+CAA+C,CAAA;AACjG,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAA;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACnE,OAAO,KAAK,iBAAiB,MAAM,4CAA4C,CAAA;AAC/E,OAAO,KAAK,KAAK,MAAM,6BAA6B,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAEtC,EAAE;AACF,UAAU;AACV,EAAE;AAEF,MAAM,sBAAsB,GAAG,CAAC,WAAmB,EAAE,kBAAuC,EAAE,EAAE,CAC9F,KAAK,CAAC,WAAW,CAAC;IAChB,QAAQ,EAAE,IAAI,QAAQ,CAAC;QACrB,CAAC,0BAA0B,CAAC,YAAY,CAAC,EAAE,WAAW;QACtD,GAAG,kBAAkB;KACtB,CAAC;CACH,CAAC,CAAA;AAEJ,MAAM,oBAAoB,GAAG,CAAC,WAAoB,EAAE,EAAE,CACpD,iBAAiB,CAAC,gCAAgC,CAAC;IACjD,wEAAwE;IACxE,OAAO,EAAE,EAAE;IACX,GAAG,EAAE,WAAW;CACjB,CAAC,CAAA;AAEJ,MAAM,2BAA2B,GAAG,cAAc,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,CAAA;AAE7F,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,WAAmB,EACnB,WAAoB,EACpB,kBAAuC,EACC,EAAE,CAC1C,KAAK,CAAC,YAAY,CAChB,oBAAoB,CAAC,WAAW,CAAC,EACjC,KAAK,CAAC,OAAO,CACX,KAAK,CAAC,YAAY,CAAC,sBAAsB,CAAC,WAAW,EAAE,kBAAkB,CAAC,EAAE,2BAA2B,CAAC,EACxG,IAAI,CAAC,UAAU,CAChB,CACF,CAAA;AAEH,EAAE;AACF,UAAU;AACV,EAAE;AAEF,MAAM,qBAAqB,GAAG,CAAC,WAAmB,EAAE,kBAAuC,EAAE,EAAE,CAC7F,mBAAmB,CAAC;IAClB,QAAQ,EAAE,IAAI,QAAQ,CAAC;QACrB,CAAC,0BAA0B,CAAC,YAAY,CAAC,EAAE,WAAW;QACtD,GAAG,kBAAkB;KACtB,CAAC;CACH,CAAC,CAAA;AAEJ,MAAM,qBAAqB,GAAG,CAAC,WAAoB,EAAE,EAAE,CACrD,iCAAiC,CAAC;IAChC,wEAAwE;IACxE,OAAO,EAAE,EAAE;IACX,GAAG,EAAE,WAAW;CACjB,CAAC,CAAA;AAEJ,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,WAAmB,EACnB,WAAoB,EACpB,kBAAuC,EACA,EAAE,CACzC,KAAK,CAAC,OAAO,CACX,KAAK,CAAC,YAAY,CAAC,qBAAqB,CAAC,WAAW,CAAC,EAAE,qBAAqB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC,EAC9G,SAAS,CACV,CAAA"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import * as Context from '@effect/data/Context';
|
|
2
|
-
import * as Effect from '@effect/io/Effect';
|
|
3
|
-
import * as Layer from '@effect/io/Layer';
|
|
4
|
-
import * as Stream from '@effect/stream/Stream';
|
|
5
|
-
import * as otel from '@opentelemetry/api';
|
|
6
|
-
import { Tracer } from './Tracer.js';
|
|
7
|
-
export declare const SpanSymbol: unique symbol;
|
|
8
|
-
export type SpanSymbol = typeof SpanSymbol;
|
|
9
|
-
export interface Span {
|
|
10
|
-
readonly [SpanSymbol]: SpanSymbol;
|
|
11
|
-
readonly span: otel.Span;
|
|
12
|
-
}
|
|
13
|
-
export declare const Span: Context.Tag<Span, Span>;
|
|
14
|
-
export declare const makeSpan: (span: otel.Span) => Span;
|
|
15
|
-
export declare const requireParentSpan: <R, E, A>(effect: Effect.Effect<R, E, A>) => Effect.Effect<Span | R, E, A>;
|
|
16
|
-
export declare const activeSpanContext: Effect.Effect<Span, never, otel.SpanContext>;
|
|
17
|
-
export declare const activeContext: Effect.Effect<Span, never, otel.Context>;
|
|
18
|
-
export declare const endInProgressSpans: Effect.Effect<never, never, void>;
|
|
19
|
-
export declare const withSpan: (name: string, options?: otel.SpanOptions, ctx?: otel.Context) => <R, E, A>(effect: Effect.Effect<R, E, A>) => Effect.Effect<Tracer | Exclude<R, Span>, E, A>;
|
|
20
|
-
export declare const withSpanScoped: (name: string, options?: otel.SpanOptions, ctx?: otel.Context) => <R, E, A>(effect: Effect.Effect<R, E, A>) => Effect.Effect<import("@effect/io/Scope.js").Scope | Tracer | Exclude<R, Span>, E, A>;
|
|
21
|
-
export declare const withSpanStream: (name: string, options?: otel.SpanOptions, ctx?: otel.Context) => <R, E, A>(stream: Stream.Stream<Span | R, E, A>) => Stream.Stream<Tracer | Exclude<R, Span>, E, A>;
|
|
22
|
-
export declare const spanLayer: {
|
|
23
|
-
(name: string, options?: otel.SpanOptions, ctx?: otel.Context, afterEnded?: (span: otel.Span) => Effect.Effect<never, never, void>): Layer.Layer<Tracer, never, Span>;
|
|
24
|
-
<TIdentifier>(name: string, options: otel.SpanOptions | undefined, ctx: otel.Context | undefined, afterEnded: ((span: otel.Span) => Effect.Effect<never, never, void>) | undefined, tag: Context.Tag<TIdentifier, Span>): Layer.Layer<Tracer, never, TIdentifier>;
|
|
25
|
-
};
|
|
26
|
-
export declare const spanLayerFromContext: (parentSpanCtx: otel.Context) => Layer.Layer<never, never, Span>;
|
|
27
|
-
export declare const withSpanLayer: (name: string, options?: otel.SpanOptions, ctx?: otel.Context) => <R, E, A>(layer: Layer.Layer<Span | R, E, A>) => Layer.Layer<Tracer | Exclude<R, Span>, E, A>;
|
|
28
|
-
export declare const addAttribute: (name: string, value: otel.AttributeValue) => Effect.Effect<Span, never, void>;
|
|
29
|
-
export declare const addAttributes: (attributes: otel.Attributes) => Effect.Effect<Span, never, void>;
|
|
30
|
-
export declare const addAttributesEffect: <R, E>(attributes: Effect.Effect<R, E, otel.Attributes>) => Effect.Effect<Span | R, E, void>;
|
|
31
|
-
export declare const addEvent: (name: string, attributesOrStartTime?: otel.SpanAttributes | otel.TimeInput, startTime?: otel.TimeInput) => Effect.Effect<Span, never, void>;
|
|
32
|
-
//# sourceMappingURL=Span.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Span.d.ts","sourceRoot":"","sources":["../../../src/effect/Otel/Span.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAA;AAI/C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAE3C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAC/C,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAE1C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,eAAO,MAAM,UAAU,eAAiC,CAAA;AACxD,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAA;AAG1C,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,UAAU,CAAA;IACjC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAA;CACzB;AAED,eAAO,MAAM,IAAI,yBAAgC,CAAA;AAEjD,eAAO,MAAM,QAAQ,SAAU,SAAS,KAAG,IAGzC,CAAA;AAEF,eAAO,MAAM,iBAAiB,4EAAqF,CAAA;AAEnH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAE1E,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAElE,CAAA;AAQD,eAAO,MAAM,kBAAkB,mCAG7B,CAAA;AA0CF,eAAO,MAAM,QAAQ,SACZ,MAAM,YAAY,KAAK,WAAW,QAAQ,YAAY,gGAU1D,CAAA;AAEL,eAAO,MAAM,cAAc,SAClB,MAAM,YAAY,KAAK,WAAW,QAAQ,YAAY,sIAWzD,CAAA;AAEN,eAAO,MAAM,cAAc,SAClB,MAAM,YAAY,KAAK,WAAW,QAAQ,YAAY,uGAc1D,CAAA;AAGL,eAAO,MAAM,SAAS,EAAE;IACtB,CACE,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,IAAI,CAAC,WAAW,EAC1B,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,EAClB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,GAClE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;IACnC,CAAC,WAAW,EACV,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,IAAI,CAAC,WAAW,GAAG,SAAS,EACrC,GAAG,EAAE,IAAI,CAAC,OAAO,GAAG,SAAS,EAC7B,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,SAAS,EAChF,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,GAClC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAA;CA8BzC,CAAA;AAEH,eAAO,MAAM,oBAAoB,kBAAmB,YAAY,oCAG/D,CAAA;AAED,eAAO,MAAM,aAAa,SACjB,MAAM,YAAY,KAAK,WAAW,QAAQ,YAAY,kGAER,CAAA;AAEvD,eAAO,MAAM,YAAY,SAAU,MAAM,SAAS,KAAK,cAAc,qCAKlE,CAAA;AAEH,eAAO,MAAM,aAAa,eAAgB,KAAK,UAAU,qCAKtD,CAAA;AAEH,eAAO,MAAM,mBAAmB,8FAO7B,CAAA;AAEH,eAAO,MAAM,QAAQ,SACb,MAAM,0BACY,KAAK,cAAc,GAAG,KAAK,SAAS,cAChD,KAAK,SAAS,qCAMzB,CAAA"}
|
package/dist/effect/Otel/Span.js
DELETED
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import * as Context from '@effect/data/Context';
|
|
2
|
-
import { pipe } from '@effect/data/Function';
|
|
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 Exit from '@effect/io/Exit';
|
|
7
|
-
import * as Layer from '@effect/io/Layer';
|
|
8
|
-
import * as Stream from '@effect/stream/Stream';
|
|
9
|
-
import * as otel from '@opentelemetry/api';
|
|
10
|
-
import { Tracer } from './Tracer.js';
|
|
11
|
-
export const SpanSymbol = Symbol.for('effect-otel/Span');
|
|
12
|
-
export const Span = Context.Tag(SpanSymbol);
|
|
13
|
-
export const makeSpan = (span) => ({
|
|
14
|
-
[SpanSymbol]: SpanSymbol,
|
|
15
|
-
span,
|
|
16
|
-
});
|
|
17
|
-
export const requireParentSpan = (effect) => effect;
|
|
18
|
-
export const activeSpanContext = Effect.map(Span, (_) => _.span.spanContext());
|
|
19
|
-
export const activeContext = Effect.flatMap(Span, (_) => Effect.sync(() => otel.trace.setSpan(otel.context.active(), _.span)));
|
|
20
|
-
// TODO get rid of this
|
|
21
|
-
const inProgressSpans = new Set();
|
|
22
|
-
// @ts-expect-error `inProgressSpans` is not a global variable
|
|
23
|
-
globalThis.inProgressSpans = inProgressSpans;
|
|
24
|
-
// TODO get rid of this
|
|
25
|
-
export const endInProgressSpans = Effect.sync(() => {
|
|
26
|
-
inProgressSpans.forEach((span) => span.end());
|
|
27
|
-
inProgressSpans.clear();
|
|
28
|
-
});
|
|
29
|
-
const startSpan = (tracer, context, name, options, ctx) => {
|
|
30
|
-
let span;
|
|
31
|
-
const maybeSpan = Context.getOption(context, Span);
|
|
32
|
-
if (ctx !== undefined) {
|
|
33
|
-
span = tracer.startSpan(name, options, ctx);
|
|
34
|
-
}
|
|
35
|
-
else if (options?.root !== true && Option.isSome(maybeSpan)) {
|
|
36
|
-
const ctx = otel.trace.setSpan(otel.context.active(), maybeSpan.value.span);
|
|
37
|
-
span = tracer.startSpan(name, options, ctx);
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
span = tracer.startSpan(name, { ...options, root: true });
|
|
41
|
-
}
|
|
42
|
-
inProgressSpans.add(span);
|
|
43
|
-
return span;
|
|
44
|
-
};
|
|
45
|
-
const handleExit = (span, exit) => Effect.sync(() => {
|
|
46
|
-
if (Exit.isFailure(exit)) {
|
|
47
|
-
if (Cause.isInterruptedOnly(exit.cause)) {
|
|
48
|
-
// TODO in the future set a special status code for interruption (once Otel supports it)
|
|
49
|
-
span.setStatus({ code: otel.SpanStatusCode.OK, message: Cause.pretty(exit.cause) });
|
|
50
|
-
// NOTE as a workaround we're using the `span.label` attribute which is visible in Grafana
|
|
51
|
-
// See https://github.com/grafana/grafana/pull/50931
|
|
52
|
-
span.setAttribute('span.label', '⚠️ Interrupted️');
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
span.setStatus({ code: otel.SpanStatusCode.ERROR, message: Cause.pretty(exit.cause) });
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
span.setStatus({ code: otel.SpanStatusCode.OK });
|
|
60
|
-
}
|
|
61
|
-
inProgressSpans.delete(span);
|
|
62
|
-
span.end();
|
|
63
|
-
});
|
|
64
|
-
export const withSpan = (name, options, ctx) => (effect) => Effect.flatMap(Tracer, (tracer) => Effect.acquireUseRelease(Effect.flatMap(Effect.context(), (context) => Effect.sync(() => startSpan(tracer.tracer, context, name, options, ctx))), (span) => Effect.provideService(effect, Span, makeSpan(span)), handleExit));
|
|
65
|
-
export const withSpanScoped = (name, options, ctx) => (effect) => Effect.flatMap(Tracer, (tracer) => {
|
|
66
|
-
const createSpan = Effect.acquireRelease(Effect.flatMap(Effect.context(), (context) => Effect.sync(() => startSpan(tracer.tracer, context, name, options, ctx))), handleExit);
|
|
67
|
-
return Effect.flatMap(createSpan, (span) => Effect.provideService(effect, Span, makeSpan(span)));
|
|
68
|
-
});
|
|
69
|
-
export const withSpanStream = (name, options, ctx) => (stream) => Stream.unwrapScoped(Effect.flatMap(Tracer, (tracer) => pipe(Effect.acquireRelease(Effect.flatMap(Effect.context(), (context) => Effect.sync(() => startSpan(tracer.tracer, context, name, options, ctx))), handleExit), Effect.map((span) => Stream.provideService(stream, Span, makeSpan(span))))));
|
|
70
|
-
// TODO add optional arg for `Tag` of `Span`
|
|
71
|
-
export const spanLayer = (name, options, ctx, afterEnded, tag) => Layer.flatMap(Layer.context(), (context) => Layer.scoped(tag ?? Span, pipe(Effect.sync(() => {
|
|
72
|
-
const tracer = Context.get(context, Tracer);
|
|
73
|
-
return startSpan(tracer.tracer, context, name, options, ctx);
|
|
74
|
-
}), Effect.map(makeSpan), Effect.acquireRelease(({ span }, exit) => pipe(handleExit(span, exit), Effect.tap(() => {
|
|
75
|
-
if (afterEnded !== undefined) {
|
|
76
|
-
return afterEnded(span);
|
|
77
|
-
}
|
|
78
|
-
return Effect.unit;
|
|
79
|
-
}))))));
|
|
80
|
-
export const spanLayerFromContext = (parentSpanCtx) => {
|
|
81
|
-
// const _spanId = otel.trace.getSpan(parentSpanCtx)!.spanContext().spanId
|
|
82
|
-
return Layer.succeed(Span, makeSpan(otel.trace.getSpan(parentSpanCtx)));
|
|
83
|
-
};
|
|
84
|
-
export const withSpanLayer = (name, options, ctx) => (layer) => Layer.provide(spanLayer(name, options, ctx), layer);
|
|
85
|
-
export const addAttribute = (name, value) => Effect.flatMap(Span, ({ span }) => Effect.sync(() => {
|
|
86
|
-
span.setAttribute(name, value);
|
|
87
|
-
}));
|
|
88
|
-
export const addAttributes = (attributes) => Effect.flatMap(Span, ({ span }) => Effect.sync(() => {
|
|
89
|
-
span.setAttributes(attributes);
|
|
90
|
-
}));
|
|
91
|
-
export const addAttributesEffect = (attributes) => Effect.flatMap(attributes, (attributes) => Effect.flatMap(Span, ({ span }) => Effect.sync(() => {
|
|
92
|
-
span.setAttributes(attributes);
|
|
93
|
-
})));
|
|
94
|
-
export const addEvent = (name, attributesOrStartTime, startTime) => Effect.flatMap(Span, ({ span }) => Effect.sync(() => {
|
|
95
|
-
span.addEvent(name, attributesOrStartTime, startTime);
|
|
96
|
-
}));
|
|
97
|
-
//# sourceMappingURL=Span.js.map
|