@livestore/utils 0.2.0 → 0.3.0-dev.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo.json +1 -1
- package/dist/NoopTracer.js +1 -1
- package/dist/NoopTracer.js.map +1 -1
- package/dist/base64.d.ts +1 -1
- package/dist/base64.d.ts.map +1 -1
- package/dist/base64.js.map +1 -1
- package/dist/effect/BucketQueue.d.ts +7 -0
- package/dist/effect/BucketQueue.d.ts.map +1 -0
- package/dist/effect/BucketQueue.js +16 -0
- package/dist/effect/BucketQueue.js.map +1 -0
- package/dist/effect/Effect.d.ts +6 -1
- package/dist/effect/Effect.d.ts.map +1 -1
- package/dist/effect/Effect.js +24 -10
- package/dist/effect/Effect.js.map +1 -1
- package/dist/effect/Logger.d.ts +3 -0
- package/dist/effect/Logger.d.ts.map +1 -0
- package/dist/effect/Logger.js +10 -0
- package/dist/effect/Logger.js.map +1 -0
- package/dist/effect/Schema/index.d.ts.map +1 -1
- package/dist/effect/Schema/index.js +1 -1
- package/dist/effect/Schema/index.js.map +1 -1
- package/dist/effect/Schema/msgpack.d.ts +1 -1
- package/dist/effect/Schema/msgpack.d.ts.map +1 -1
- package/dist/effect/TaskTracing.d.ts +5 -0
- package/dist/effect/TaskTracing.d.ts.map +1 -0
- package/dist/effect/TaskTracing.js +38 -0
- package/dist/effect/TaskTracing.js.map +1 -0
- package/dist/effect/WebChannel/broadcastChannelWithAck.d.ts +13 -0
- package/dist/effect/WebChannel/broadcastChannelWithAck.d.ts.map +1 -0
- package/dist/effect/WebChannel/broadcastChannelWithAck.js +88 -0
- package/dist/effect/WebChannel/broadcastChannelWithAck.js.map +1 -0
- package/dist/effect/WebChannel/common.d.ts +16 -0
- package/dist/effect/WebChannel/common.d.ts.map +1 -0
- package/dist/effect/WebChannel/common.js +4 -0
- package/dist/effect/WebChannel/common.js.map +1 -0
- package/dist/effect/WebChannel.d.ts +55 -25
- package/dist/effect/WebChannel.d.ts.map +1 -1
- package/dist/effect/WebChannel.js +133 -15
- package/dist/effect/WebChannel.js.map +1 -1
- package/dist/effect/WebLock.d.ts +4 -0
- package/dist/effect/WebLock.d.ts.map +1 -1
- package/dist/effect/WebLock.js +61 -0
- package/dist/effect/WebLock.js.map +1 -1
- package/dist/effect/WebSocket.d.ts +19 -0
- package/dist/effect/WebSocket.d.ts.map +1 -0
- package/dist/effect/WebSocket.js +53 -0
- package/dist/effect/WebSocket.js.map +1 -0
- package/dist/effect/index.d.ts +6 -2
- package/dist/effect/index.d.ts.map +1 -1
- package/dist/effect/index.js +10 -2
- package/dist/effect/index.js.map +1 -1
- package/dist/env.d.ts +5 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +25 -0
- package/dist/env.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -12
- package/dist/index.js.map +1 -1
- package/dist/node/ChildProcessRunner/ChildProcessRunner.d.ts +5 -0
- package/dist/node/ChildProcessRunner/ChildProcessRunner.d.ts.map +1 -0
- package/dist/node/ChildProcessRunner/ChildProcessRunner.js +55 -0
- package/dist/node/ChildProcessRunner/ChildProcessRunner.js.map +1 -0
- package/dist/node/ChildProcessRunner/ChildProcessWorker.d.ts +10 -0
- package/dist/node/ChildProcessRunner/ChildProcessWorker.d.ts.map +1 -0
- package/dist/node/ChildProcessRunner/ChildProcessWorker.js +46 -0
- package/dist/node/ChildProcessRunner/ChildProcessWorker.js.map +1 -0
- package/dist/node/mod.d.ts +22 -0
- package/dist/node/mod.d.ts.map +1 -0
- package/dist/node/mod.js +83 -0
- package/dist/node/mod.js.map +1 -0
- package/dist/node-vitest/mod.d.ts +2 -0
- package/dist/node-vitest/mod.d.ts.map +1 -0
- package/dist/node-vitest/mod.js +2 -0
- package/dist/node-vitest/mod.js.map +1 -0
- package/dist/node-vitest/polyfill.d.ts +2 -0
- package/dist/node-vitest/polyfill.d.ts.map +1 -0
- package/dist/node-vitest/polyfill.js +3 -0
- package/dist/node-vitest/polyfill.js.map +1 -0
- package/dist/object/index.d.ts.map +1 -1
- package/dist/object/pick.d.ts.map +1 -1
- package/package.json +49 -15
- package/src/NoopTracer.ts +1 -1
- package/src/base64.ts +1 -1
- package/src/effect/BucketQueue.ts +22 -0
- package/src/effect/Effect.ts +41 -17
- package/src/effect/Logger.ts +17 -0
- package/src/effect/Schema/index.ts +1 -1
- package/src/effect/TaskTracing.ts +43 -0
- package/src/effect/WebChannel/broadcastChannelWithAck.ts +126 -0
- package/src/effect/WebChannel/common.ts +17 -0
- package/src/effect/WebChannel.ts +223 -49
- package/src/effect/WebLock.ts +75 -0
- package/src/effect/WebSocket.ts +72 -0
- package/src/effect/index.ts +14 -1
- package/src/env.ts +31 -0
- package/src/index.ts +3 -11
- package/src/node/ChildProcessRunner/ChildProcessRunner.ts +63 -0
- package/src/node/ChildProcessRunner/ChildProcessWorker.ts +66 -0
- package/src/node/mod.ts +115 -0
- package/src/node-vitest/mod.ts +1 -0
- package/src/node-vitest/polyfill.ts +1 -0
- package/tmp/effect-deferred-repro.ts +29 -0
- package/tmp/effect-semaphore-repro.ts +93 -0
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChildProcessRunner.d.ts","sourceRoot":"","sources":["../../../src/node/ChildProcessRunner/ChildProcessRunner.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,+BAA+B,CAAA;AAOvD,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAkDrC,gBAAgB;AAChB,eAAO,MAAM,KAAK,kDAA2D,CAAA"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/* eslint-disable prefer-arrow/prefer-arrow-functions */
|
|
2
|
+
import process from 'node:process';
|
|
3
|
+
import { WorkerError } from '@effect/platform/WorkerError';
|
|
4
|
+
import * as Runner from '@effect/platform/WorkerRunner';
|
|
5
|
+
import { FiberId } from 'effect';
|
|
6
|
+
import * as Context from 'effect/Context';
|
|
7
|
+
import * as Deferred from 'effect/Deferred';
|
|
8
|
+
import * as Effect from 'effect/Effect';
|
|
9
|
+
import * as Exit from 'effect/Exit';
|
|
10
|
+
import * as FiberSet from 'effect/FiberSet';
|
|
11
|
+
import * as Layer from 'effect/Layer';
|
|
12
|
+
import * as Runtime from 'effect/Runtime';
|
|
13
|
+
import * as Scope from 'effect/Scope';
|
|
14
|
+
const platformRunnerImpl = Runner.PlatformRunner.of({
|
|
15
|
+
[Runner.PlatformRunnerTypeId]: Runner.PlatformRunnerTypeId,
|
|
16
|
+
start() {
|
|
17
|
+
return Effect.gen(function* () {
|
|
18
|
+
if (!process.send) {
|
|
19
|
+
return yield* new WorkerError({ reason: 'spawn', cause: new Error('not in a child process') });
|
|
20
|
+
}
|
|
21
|
+
const port = {
|
|
22
|
+
postMessage: (message) => process.send(message),
|
|
23
|
+
on: (event, handler) => process.on(event, handler),
|
|
24
|
+
close: () => process.disconnect(),
|
|
25
|
+
};
|
|
26
|
+
const send = (_portId, message, _transfers) => Effect.sync(() => port.postMessage([1, message] /*, transfers as any*/));
|
|
27
|
+
const run = (handler) => Effect.uninterruptibleMask((restore) => Effect.gen(function* () {
|
|
28
|
+
const runtime = (yield* Effect.runtime()).pipe(Runtime.updateContext(Context.omit(Scope.Scope)));
|
|
29
|
+
const fiberSet = yield* FiberSet.make();
|
|
30
|
+
const runFork = Runtime.runFork(runtime);
|
|
31
|
+
port.on('message', (message) => {
|
|
32
|
+
if (message[0] === 0) {
|
|
33
|
+
FiberSet.unsafeAdd(fiberSet, runFork(restore(handler(0, message[1]))));
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
Deferred.unsafeDone(fiberSet.deferred, Exit.interrupt(FiberId.none));
|
|
37
|
+
port.close();
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
port.on('messageerror', (cause) => {
|
|
41
|
+
Deferred.unsafeDone(fiberSet.deferred, new WorkerError({ reason: 'decode', cause }));
|
|
42
|
+
});
|
|
43
|
+
port.on('error', (cause) => {
|
|
44
|
+
Deferred.unsafeDone(fiberSet.deferred, new WorkerError({ reason: 'unknown', cause }));
|
|
45
|
+
});
|
|
46
|
+
port.postMessage([0]);
|
|
47
|
+
return (yield* restore(FiberSet.join(fiberSet)));
|
|
48
|
+
}).pipe(Effect.scoped));
|
|
49
|
+
return { run, send };
|
|
50
|
+
});
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
/** @internal */
|
|
54
|
+
export const layer = Layer.succeed(Runner.PlatformRunner, platformRunnerImpl);
|
|
55
|
+
//# sourceMappingURL=ChildProcessRunner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChildProcessRunner.js","sourceRoot":"","sources":["../../../src/node/ChildProcessRunner/ChildProcessRunner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type * as ChildProcess from 'node:child_process';
|
|
2
|
+
import * as Worker from '@effect/platform/Worker';
|
|
3
|
+
import * as Layer from 'effect/Layer';
|
|
4
|
+
/** @internal */
|
|
5
|
+
export declare const layerWorker: Layer.Layer<Worker.PlatformWorker, never, never>;
|
|
6
|
+
/** @internal */
|
|
7
|
+
export declare const layerManager: Layer.Layer<Worker.WorkerManager, never, never>;
|
|
8
|
+
/** @internal */
|
|
9
|
+
export declare const layer: (spawn: (id: number) => ChildProcess.ChildProcess) => Layer.Layer<Worker.Spawner | Worker.WorkerManager, never, never>;
|
|
10
|
+
//# sourceMappingURL=ChildProcessWorker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChildProcessWorker.d.ts","sourceRoot":"","sources":["../../../src/node/ChildProcessRunner/ChildProcessWorker.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,YAAY,MAAM,oBAAoB,CAAA;AAEvD,OAAO,KAAK,MAAM,MAAM,yBAAyB,CAAA;AAKjD,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAgDrC,gBAAgB;AAChB,eAAO,MAAM,WAAW,kDAA2D,CAAA;AAEnF,gBAAgB;AAChB,eAAO,MAAM,YAAY,iDAAkD,CAAA;AAE3E,gBAAgB;AAChB,eAAO,MAAM,KAAK,UAAW,CAAC,EAAE,EAAE,MAAM,KAAK,YAAY,CAAC,YAAY,qEACf,CAAA"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/* eslint-disable prefer-arrow/prefer-arrow-functions */
|
|
2
|
+
import * as Worker from '@effect/platform/Worker';
|
|
3
|
+
import { WorkerError } from '@effect/platform/WorkerError';
|
|
4
|
+
import * as Deferred from 'effect/Deferred';
|
|
5
|
+
import * as Effect from 'effect/Effect';
|
|
6
|
+
import * as Exit from 'effect/Exit';
|
|
7
|
+
import * as Layer from 'effect/Layer';
|
|
8
|
+
import * as Scope from 'effect/Scope';
|
|
9
|
+
const platformWorkerImpl = Worker.makePlatform()({
|
|
10
|
+
setup({ scope, worker: childProcess }) {
|
|
11
|
+
return Effect.flatMap(Deferred.make(), (exitDeferred) => {
|
|
12
|
+
childProcess.on('exit', () => {
|
|
13
|
+
Deferred.unsafeDone(exitDeferred, Exit.void);
|
|
14
|
+
});
|
|
15
|
+
return Effect.as(Scope.addFinalizer(scope, Effect.suspend(() => {
|
|
16
|
+
childProcess.send([1]);
|
|
17
|
+
return Deferred.await(exitDeferred);
|
|
18
|
+
}).pipe(Effect.interruptible, Effect.timeout(5000), Effect.catchAllCause(() => Effect.sync(() => childProcess.kill())))), {
|
|
19
|
+
postMessage: (message) => childProcess.send(message),
|
|
20
|
+
on: (event, handler) => childProcess.on(event, handler),
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
},
|
|
24
|
+
listen({ deferred, emit, port }) {
|
|
25
|
+
port.on('message', (message) => {
|
|
26
|
+
emit(message);
|
|
27
|
+
});
|
|
28
|
+
port.on('messageerror', (cause) => {
|
|
29
|
+
Deferred.unsafeDone(deferred, new WorkerError({ reason: 'decode', cause }));
|
|
30
|
+
});
|
|
31
|
+
port.on('error', (cause) => {
|
|
32
|
+
Deferred.unsafeDone(deferred, new WorkerError({ reason: 'unknown', cause }));
|
|
33
|
+
});
|
|
34
|
+
port.on('exit', (code) => {
|
|
35
|
+
Deferred.unsafeDone(deferred, new WorkerError({ reason: 'unknown', cause: new Error(`exited with code ${code}`) }));
|
|
36
|
+
});
|
|
37
|
+
return Effect.void;
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
/** @internal */
|
|
41
|
+
export const layerWorker = Layer.succeed(Worker.PlatformWorker, platformWorkerImpl);
|
|
42
|
+
/** @internal */
|
|
43
|
+
export const layerManager = Layer.provide(Worker.layerManager, layerWorker);
|
|
44
|
+
/** @internal */
|
|
45
|
+
export const layer = (spawn) => Layer.merge(layerManager, Worker.layerSpawner(spawn));
|
|
46
|
+
//# sourceMappingURL=ChildProcessWorker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChildProcessWorker.js","sourceRoot":"","sources":["../../../src/node/ChildProcessRunner/ChildProcessWorker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type * as otel from '@opentelemetry/api';
|
|
2
|
+
import { Effect, Layer } from 'effect';
|
|
3
|
+
import type { ParentSpan } from 'effect/Tracer';
|
|
4
|
+
import type { OtelTracer } from '../effect/index.js';
|
|
5
|
+
export * as Cli from '@effect/cli';
|
|
6
|
+
export * as PlatformBun from '@effect/platform-bun';
|
|
7
|
+
export * as PlatformNode from '@effect/platform-node';
|
|
8
|
+
export * as SocketServer from '@effect/experimental/SocketServer';
|
|
9
|
+
export * as OtelResource from '@effect/opentelemetry/Resource';
|
|
10
|
+
export { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
|
|
11
|
+
export { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';
|
|
12
|
+
export * as OtelNodeSdk from '@effect/opentelemetry/NodeSdk';
|
|
13
|
+
export * as ChildProcessRunner from './ChildProcessRunner/ChildProcessRunner.js';
|
|
14
|
+
export * as ChildProcessWorker from './ChildProcessRunner/ChildProcessWorker.js';
|
|
15
|
+
export declare const OtelLiveHttp: ({ serviceName, rootSpanName, skipLogUrl, }?: {
|
|
16
|
+
serviceName?: string;
|
|
17
|
+
rootSpanName?: string;
|
|
18
|
+
skipLogUrl?: boolean;
|
|
19
|
+
}) => Layer.Layer<OtelTracer.OtelTracer | ParentSpan, never, never>;
|
|
20
|
+
export declare const logTraceUiUrlForSpan: (printMsg?: (url: string) => string) => (span: otel.Span) => Effect.Effect<string | undefined, never, never>;
|
|
21
|
+
export declare const getTracingBackendUrl: (span: otel.Span) => Effect.Effect<string | undefined, never, never>;
|
|
22
|
+
//# sourceMappingURL=mod.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/node/mod.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAK/C,OAAO,EAAU,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAG/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAIpD,OAAO,KAAK,GAAG,MAAM,aAAa,CAAA;AAClC,OAAO,KAAK,WAAW,MAAM,sBAAsB,CAAA;AACnD,OAAO,KAAK,YAAY,MAAM,uBAAuB,CAAA;AACrD,OAAO,KAAK,YAAY,MAAM,mCAAmC,CAAA;AACjE,OAAO,KAAK,YAAY,MAAM,gCAAgC,CAAA;AAE9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAA;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAA;AAC9E,OAAO,KAAK,WAAW,MAAM,+BAA+B,CAAA;AAE5D,OAAO,KAAK,kBAAkB,MAAM,4CAA4C,CAAA;AAChF,OAAO,KAAK,kBAAkB,MAAM,4CAA4C,CAAA;AAOhF,eAAO,MAAM,YAAY,gDAItB;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,KAAQ,KAAK,CAAC,KAAK,CACzF,UAAU,CAAC,UAAU,GAAG,UAAU,EAClC,KAAK,EACL,KAAK,CAqC6B,CAAA;AAEpC,eAAO,MAAM,oBAAoB,cAAe,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,YAAY,IAAI,CAAC,IAAI,oDAazF,CAAA;AAEH,eAAO,MAAM,oBAAoB,SAAU,IAAI,CAAC,IAAI,oDAqBhD,CAAA"}
|
package/dist/node/mod.js
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import * as OtelNodeSdk from '@effect/opentelemetry/NodeSdk';
|
|
2
|
+
import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';
|
|
3
|
+
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
|
|
4
|
+
import { PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics';
|
|
5
|
+
import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base';
|
|
6
|
+
import { Config, Effect, Layer } from 'effect';
|
|
7
|
+
import { tapCauseLogPretty } from '../effect/Effect.js';
|
|
8
|
+
// import { tapCauseLogPretty } from '../effect/Effect.js'
|
|
9
|
+
export * as Cli from '@effect/cli';
|
|
10
|
+
export * as PlatformBun from '@effect/platform-bun';
|
|
11
|
+
export * as PlatformNode from '@effect/platform-node';
|
|
12
|
+
export * as SocketServer from '@effect/experimental/SocketServer';
|
|
13
|
+
export * as OtelResource from '@effect/opentelemetry/Resource';
|
|
14
|
+
export { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
|
|
15
|
+
export { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';
|
|
16
|
+
export * as OtelNodeSdk from '@effect/opentelemetry/NodeSdk';
|
|
17
|
+
export * as ChildProcessRunner from './ChildProcessRunner/ChildProcessRunner.js';
|
|
18
|
+
export * as ChildProcessWorker from './ChildProcessRunner/ChildProcessWorker.js';
|
|
19
|
+
// Enable debug logging for OpenTelemetry
|
|
20
|
+
// otel.diag.setLogger(new otel.DiagConsoleLogger(), otel.DiagLogLevel.ERROR)
|
|
21
|
+
// export const OtelLiveHttp = (args: any): Layer.Layer<never> => Layer.empty
|
|
22
|
+
export const OtelLiveHttp = ({ serviceName, rootSpanName, skipLogUrl, } = {}) => Effect.gen(function* () {
|
|
23
|
+
const config = yield* Config.all({
|
|
24
|
+
exporterUrlTracing: Config.string('OTEL_EXPORTER_OTLP_TRACES_ENDPOINT'),
|
|
25
|
+
exporterUrlMracing: Config.string('OTEL_EXPORTER_OTLP_METRICS_ENDPOINT'),
|
|
26
|
+
serviceName: serviceName
|
|
27
|
+
? Config.succeed(serviceName)
|
|
28
|
+
: Config.string('OTEL_SERVICE_NAME').pipe(Config.withDefault('overtone-node-utils-default-service')),
|
|
29
|
+
rootSpanName: rootSpanName
|
|
30
|
+
? Config.succeed(rootSpanName)
|
|
31
|
+
: Config.string('OTEL_ROOT_SPAN_NAME').pipe(Config.withDefault('RootSpan')),
|
|
32
|
+
}).pipe(tapCauseLogPretty, Effect.orDie);
|
|
33
|
+
const resource = { serviceName: config.serviceName };
|
|
34
|
+
// METRICS
|
|
35
|
+
const metricExporter = new OTLPMetricExporter({ url: config.exporterUrlMracing });
|
|
36
|
+
const metricReader = new PeriodicExportingMetricReader({
|
|
37
|
+
exporter: metricExporter,
|
|
38
|
+
exportIntervalMillis: 1000,
|
|
39
|
+
});
|
|
40
|
+
// TRACING
|
|
41
|
+
const OtelLive = OtelNodeSdk.layer(() => ({
|
|
42
|
+
resource,
|
|
43
|
+
metricReader,
|
|
44
|
+
spanProcessor: new BatchSpanProcessor(new OTLPTraceExporter({ url: config.exporterUrlTracing, headers: {} })),
|
|
45
|
+
}));
|
|
46
|
+
const RootSpanLive = Layer.span(config.rootSpanName, {
|
|
47
|
+
attributes: { config },
|
|
48
|
+
onEnd: skipLogUrl ? undefined : (span) => logTraceUiUrlForSpan()(span.span),
|
|
49
|
+
});
|
|
50
|
+
return RootSpanLive.pipe(Layer.provideMerge(OtelLive));
|
|
51
|
+
}).pipe(Layer.unwrapEffect);
|
|
52
|
+
export const logTraceUiUrlForSpan = (printMsg) => (span) => getTracingBackendUrl(span).pipe(Effect.tap((url) => {
|
|
53
|
+
if (url === undefined) {
|
|
54
|
+
console.warn('No tracing backend url found');
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
if (printMsg) {
|
|
58
|
+
console.log(printMsg(url));
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
console.log(`Trace URL: ${url}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}));
|
|
65
|
+
export const getTracingBackendUrl = (span) => Effect.gen(function* () {
|
|
66
|
+
const endpoint = yield* Config.string('TRACING_UI_ENDPOINT').pipe(Config.option, Effect.orDie);
|
|
67
|
+
if (endpoint._tag === 'None')
|
|
68
|
+
return;
|
|
69
|
+
const traceId = span.spanContext().traceId;
|
|
70
|
+
// Grafana + Tempo
|
|
71
|
+
const grafanaEndpoint = endpoint.value;
|
|
72
|
+
const searchParams = new URLSearchParams({
|
|
73
|
+
orgId: '1',
|
|
74
|
+
left: JSON.stringify({
|
|
75
|
+
datasource: 'tempo',
|
|
76
|
+
queries: [{ query: traceId, queryType: 'traceql', refId: 'A' }],
|
|
77
|
+
range: { from: 'now-1h', to: 'now' },
|
|
78
|
+
}),
|
|
79
|
+
});
|
|
80
|
+
// TODO make dynamic via env var
|
|
81
|
+
return `${grafanaEndpoint}/explore?${searchParams.toString()}`;
|
|
82
|
+
});
|
|
83
|
+
//# sourceMappingURL=mod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/node/mod.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/node-vitest/mod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/node-vitest/mod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"polyfill.d.ts","sourceRoot":"","sources":["../../src/node-vitest/polyfill.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"polyfill.js","sourceRoot":"","sources":["../../src/node-vitest/polyfill.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/object/index.ts"],"names":[],"mappings":"AAEA,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AAEzB,KAAK,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAE3F,eAAO,MAAM,eAAe,GAAI,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,OAChE,IAAI,YACC,CAAC,GAAG,EAAE,MAAM,IAAI,EAAE,GAAG,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,KAAK,KAC7D,GAAG,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/object/index.ts"],"names":[],"mappings":"AAEA,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AAEzB,KAAK,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAE3F,eAAO,MAAM,eAAe,GAAI,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,OAChE,IAAI,YACC,CAAC,GAAG,EAAE,MAAM,IAAI,EAAE,GAAG,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,KAAK,KAC7D,GAAG,CAAC,IAAI,MAAM,IAAI,GAAG,KAAK,GAG5B,CAAA;AAED,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAA;AAEjE,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,KAAG,OAAO,CAAC,CAAC,CAAsC,CAAA;AAErH,eAAO,MAAM,mBAAmB,GAAI,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,IAAI,KAAG,GAAG,CAAC,IAAI,MAAM,IAAI,GAAG,CAAC,GAI9F,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pick.d.ts","sourceRoot":"","sources":["../../src/object/pick.ts"],"names":[],"mappings":"AAAA,KAAK,gBAAgB,CAAC,CAAC,IAAI,WAAW,CAAC;KAAG,CAAC,IAAI,MAAM,CAAC,IAAI,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,CAAA;AACxG,KAAK,WAAW,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS;CAAE,CAAA;AAC1D,KAAK,YAAY,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,IAAI,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAA;AACrF,KAAK,WAAW,CAAC,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;AAE3D,eAAO,MAAM,IAAI,GAAI,GAAG,EAAE,IAAI,SAAS,MAAM,GAAG,OAAO,GAAG,QAAQ,IAAI,EAAE,KAAG,WAAW,CAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"pick.d.ts","sourceRoot":"","sources":["../../src/object/pick.ts"],"names":[],"mappings":"AAAA,KAAK,gBAAgB,CAAC,CAAC,IAAI,WAAW,CAAC;KAAG,CAAC,IAAI,MAAM,CAAC,IAAI,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,CAAA;AACxG,KAAK,WAAW,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS;CAAE,CAAA;AAC1D,KAAK,YAAY,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,IAAI,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAA;AACrF,KAAK,WAAW,CAAC,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;AAE3D,eAAO,MAAM,IAAI,GAAI,GAAG,EAAE,IAAI,SAAS,MAAM,GAAG,OAAO,GAAG,QAAQ,IAAI,EAAE,KAAG,WAAW,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,GAAE,CAK7G,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,GAAG,EAAE,IAAI,SAAS,MAAM,GAAG,EAAE,KAAK,OACzD,GAAG,QACF,IAAI,EAAE,aACD,KAAK,KACf,WAAW,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAE,CAAC,GAAG,KAUtD,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@livestore/utils",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0-dev.1",
|
|
4
4
|
"sideEffects": [
|
|
5
5
|
"./dist/global.js"
|
|
6
6
|
],
|
|
@@ -24,6 +24,18 @@
|
|
|
24
24
|
"./effect": {
|
|
25
25
|
"types": "./dist/effect/index.d.ts",
|
|
26
26
|
"default": "./dist/effect/index.js"
|
|
27
|
+
},
|
|
28
|
+
"./node": {
|
|
29
|
+
"types": "./dist/node/mod.d.ts",
|
|
30
|
+
"default": "./dist/node/mod.js"
|
|
31
|
+
},
|
|
32
|
+
"./node-vitest": {
|
|
33
|
+
"types": "./dist/node-vitest/mod.d.ts",
|
|
34
|
+
"default": "./dist/node-vitest/mod.js"
|
|
35
|
+
},
|
|
36
|
+
"./node-vitest-polyfill": {
|
|
37
|
+
"types": "./dist/node-vitest/polyfill.d.ts",
|
|
38
|
+
"default": "./dist/node-vitest/polyfill.js"
|
|
27
39
|
}
|
|
28
40
|
},
|
|
29
41
|
"react-native": "./dist/index.js",
|
|
@@ -36,8 +48,17 @@
|
|
|
36
48
|
"./nanoid": [
|
|
37
49
|
"./dist/nanoid/index.d.ts"
|
|
38
50
|
],
|
|
39
|
-
"effect": [
|
|
40
|
-
"./dist/effect"
|
|
51
|
+
"./effect": [
|
|
52
|
+
"./dist/effect/index.d.ts"
|
|
53
|
+
],
|
|
54
|
+
"./node": [
|
|
55
|
+
"./dist/node/mod.d.ts"
|
|
56
|
+
],
|
|
57
|
+
"./node-vitest": [
|
|
58
|
+
"./dist/node-vitest/mod.d.ts"
|
|
59
|
+
],
|
|
60
|
+
"./node-vitest-polyfill": [
|
|
61
|
+
"./dist/node-vitest/polyfill.d.ts"
|
|
41
62
|
]
|
|
42
63
|
}
|
|
43
64
|
},
|
|
@@ -45,25 +66,38 @@
|
|
|
45
66
|
"msgpackr": "^1.11.2",
|
|
46
67
|
"nanoid": "^5.0.7",
|
|
47
68
|
"pretty-bytes": "^6.1.1",
|
|
48
|
-
"@livestore/db-schema": "0.
|
|
69
|
+
"@livestore/db-schema": "0.3.0-dev.1"
|
|
49
70
|
},
|
|
50
71
|
"peerDependencies": {
|
|
51
|
-
"@effect/
|
|
52
|
-
"@effect/
|
|
53
|
-
"@effect/
|
|
54
|
-
"@effect/platform
|
|
72
|
+
"@effect/cli": "^0.50.2",
|
|
73
|
+
"@effect/experimental": "^0.36.1",
|
|
74
|
+
"@effect/opentelemetry": "^0.42.1",
|
|
75
|
+
"@effect/platform": "^0.72.1",
|
|
76
|
+
"@effect/platform-browser": "^0.51.1",
|
|
77
|
+
"@effect/platform-bun": "^0.52.1",
|
|
78
|
+
"@effect/platform-node": "^0.68.1",
|
|
79
|
+
"@effect/vitest": "^0.16.1",
|
|
55
80
|
"@opentelemetry/api": "^1.9.0",
|
|
56
|
-
"effect": "^3.
|
|
81
|
+
"effect": "^3.11.7"
|
|
57
82
|
},
|
|
58
83
|
"devDependencies": {
|
|
59
|
-
"@effect/
|
|
60
|
-
"@effect/
|
|
61
|
-
"@effect/
|
|
62
|
-
"@effect/platform
|
|
84
|
+
"@effect/cli": "^0.51.1",
|
|
85
|
+
"@effect/experimental": "0.36.1",
|
|
86
|
+
"@effect/opentelemetry": "0.42.1",
|
|
87
|
+
"@effect/platform": "0.72.1",
|
|
88
|
+
"@effect/platform-browser": "0.51.1",
|
|
89
|
+
"@effect/platform-bun": "0.52.1",
|
|
90
|
+
"@effect/platform-node": "0.68.1",
|
|
91
|
+
"@effect/vitest": "0.16.1",
|
|
63
92
|
"@opentelemetry/api": "^1.9.0",
|
|
64
|
-
"@
|
|
93
|
+
"@opentelemetry/exporter-metrics-otlp-http": "0.57.0",
|
|
94
|
+
"@opentelemetry/exporter-trace-otlp-http": "0.57.0",
|
|
95
|
+
"@opentelemetry/sdk-metrics": "1.30.0",
|
|
96
|
+
"@opentelemetry/sdk-trace-base": "1.30.0",
|
|
97
|
+
"@opentelemetry/sdk-trace-node": "1.30.0",
|
|
98
|
+
"@types/node": "22.10.5",
|
|
65
99
|
"@types/web": "^0.0.175",
|
|
66
|
-
"effect": "3.
|
|
100
|
+
"effect": "3.12.1",
|
|
67
101
|
"vitest": "^2.1.4"
|
|
68
102
|
},
|
|
69
103
|
"publishConfig": {
|
package/src/NoopTracer.ts
CHANGED
|
@@ -20,7 +20,7 @@ export const makeNoopSpan = () => {
|
|
|
20
20
|
;(span as any)._duration = [durationSecs, durationRestNs]
|
|
21
21
|
},
|
|
22
22
|
spanContext: () => {
|
|
23
|
-
return { traceId: 'noop-trace-id', spanId: 'noop-span-id' }
|
|
23
|
+
return { traceId: 'livestore-noop-trace-id', spanId: 'livestore-noop-span-id' }
|
|
24
24
|
},
|
|
25
25
|
_duration: [0, 0],
|
|
26
26
|
} as unknown as otel.Span
|
package/src/base64.ts
CHANGED
|
@@ -76,7 +76,7 @@ const textEncoder = new TextEncoder()
|
|
|
76
76
|
* Encodes a given Uint8Array, ArrayBuffer or string into RFC4648 base64 representation
|
|
77
77
|
* @param data
|
|
78
78
|
*/
|
|
79
|
-
export const encode = (data:
|
|
79
|
+
export const encode = (data: Uint8Array | string): string => {
|
|
80
80
|
const uint8 =
|
|
81
81
|
typeof data === 'string' ? textEncoder.encode(data) : data instanceof Uint8Array ? data : new Uint8Array(data)
|
|
82
82
|
let result = '',
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Array, STM, TRef } from 'effect'
|
|
2
|
+
|
|
3
|
+
export type BucketQueue<A> = TRef.TRef<A[]>
|
|
4
|
+
|
|
5
|
+
export const make = <A>(): STM.STM<BucketQueue<A>> => TRef.make<A[]>([])
|
|
6
|
+
|
|
7
|
+
export const offerAll = <A>(self: BucketQueue<A>, elements: ReadonlyArray<A>) =>
|
|
8
|
+
TRef.update(self, (bucket) => Array.appendAll(bucket, elements))
|
|
9
|
+
|
|
10
|
+
export const clear = <A>(self: BucketQueue<A>) => TRef.set(self, [])
|
|
11
|
+
|
|
12
|
+
export const takeBetween = <A>(self: BucketQueue<A>, min: number, max: number) =>
|
|
13
|
+
STM.gen(function* () {
|
|
14
|
+
const bucket = yield* TRef.get(self)
|
|
15
|
+
if (bucket.length < min) {
|
|
16
|
+
return yield* STM.retry
|
|
17
|
+
} else {
|
|
18
|
+
const elements = bucket.splice(0, Math.min(max, bucket.length))
|
|
19
|
+
yield* TRef.set(self, bucket)
|
|
20
|
+
return elements
|
|
21
|
+
}
|
|
22
|
+
})
|
package/src/effect/Effect.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as OtelTracer from '@effect/opentelemetry/Tracer'
|
|
2
|
-
import type { Context, Duration, Scope } from 'effect'
|
|
3
|
-
import { Cause, Deferred, Effect, Fiber, pipe } from 'effect'
|
|
2
|
+
import type { Context, Duration, Scope, Stream } from 'effect'
|
|
3
|
+
import { Cause, Deferred, Effect, Fiber, FiberRef, HashSet, Logger, pipe } from 'effect'
|
|
4
4
|
import type { UnknownException } from 'effect/Cause'
|
|
5
5
|
import { log } from 'effect/Console'
|
|
6
6
|
import type { LazyArg } from 'effect/Function'
|
|
@@ -56,6 +56,8 @@ const getThreadName = () => {
|
|
|
56
56
|
export const acquireReleaseLog = (label: string) =>
|
|
57
57
|
Effect.acquireRelease(Effect.log(`${label} acquire`), (_, ex) => Effect.log(`${label} release`, ex))
|
|
58
58
|
|
|
59
|
+
export const addFinalizerLog = (...msgs: any[]) => Effect.addFinalizer(() => Effect.log(...msgs))
|
|
60
|
+
|
|
59
61
|
export const logBefore =
|
|
60
62
|
(...msgs: any[]) =>
|
|
61
63
|
<A, E, R>(eff: Effect.Effect<A, E, R>): Effect.Effect<A, E, R> =>
|
|
@@ -84,6 +86,27 @@ export const tapCauseLogPretty = <R, E, A>(eff: Effect.Effect<A, E, R>): Effect.
|
|
|
84
86
|
}),
|
|
85
87
|
)
|
|
86
88
|
|
|
89
|
+
export const eventListener = <TEvent = unknown>(
|
|
90
|
+
target: Stream.EventListener<TEvent>,
|
|
91
|
+
type: string,
|
|
92
|
+
handler: (event: TEvent) => Effect.Effect<void, never, never>,
|
|
93
|
+
options?: { once?: boolean },
|
|
94
|
+
) =>
|
|
95
|
+
Effect.gen(function* () {
|
|
96
|
+
const runtime = yield* Effect.runtime<never>()
|
|
97
|
+
|
|
98
|
+
const handlerFn = (event: TEvent) => handler(event).pipe(Effect.provide(runtime), Effect.runFork)
|
|
99
|
+
|
|
100
|
+
target.addEventListener(type, handlerFn, { once: options?.once ?? false })
|
|
101
|
+
|
|
102
|
+
yield* Effect.addFinalizer(() => Effect.sync(() => target.removeEventListener(type, handlerFn)))
|
|
103
|
+
})
|
|
104
|
+
|
|
105
|
+
export const spanEvent = (message: any, attributes?: Record<string, any>) =>
|
|
106
|
+
Effect.locallyWith(Effect.log(message).pipe(Effect.annotateLogs(attributes ?? {})), FiberRef.currentLoggers, () =>
|
|
107
|
+
HashSet.make(Logger.tracerLogger),
|
|
108
|
+
)
|
|
109
|
+
|
|
87
110
|
export const logWarnIfTakesLongerThan =
|
|
88
111
|
({ label, duration }: { label: string; duration: Duration.DurationInput }) =>
|
|
89
112
|
<R, E, A>(eff: Effect.Effect<A, E, R>): Effect.Effect<A, E, R> =>
|
|
@@ -103,7 +126,7 @@ export const logWarnIfTakesLongerThan =
|
|
|
103
126
|
)
|
|
104
127
|
|
|
105
128
|
const start = Date.now()
|
|
106
|
-
const res = yield* eff
|
|
129
|
+
const res = yield* eff.pipe(Effect.exit)
|
|
107
130
|
|
|
108
131
|
if (timedOut) {
|
|
109
132
|
const end = Date.now()
|
|
@@ -112,7 +135,7 @@ export const logWarnIfTakesLongerThan =
|
|
|
112
135
|
|
|
113
136
|
yield* Fiber.interrupt(timeoutFiber)
|
|
114
137
|
|
|
115
|
-
return res
|
|
138
|
+
return yield* res
|
|
116
139
|
})
|
|
117
140
|
|
|
118
141
|
export const logDuration =
|
|
@@ -185,19 +208,20 @@ const getSpanTrace = () => {
|
|
|
185
208
|
return 'No current fiber'
|
|
186
209
|
}
|
|
187
210
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
)
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
211
|
+
return ''
|
|
212
|
+
// const msg = Effect.runSync(
|
|
213
|
+
// Effect.fail({ message: '' }).pipe(
|
|
214
|
+
// Effect.withParentSpan(fiberOption.value.currentSpan),
|
|
215
|
+
// Effect.catchAllCause((cause) => Effect.succeed(cause.toString())),
|
|
216
|
+
// ),
|
|
217
|
+
// )
|
|
218
|
+
|
|
219
|
+
// // remove the first line
|
|
220
|
+
// return msg
|
|
221
|
+
// .split('\n')
|
|
222
|
+
// .slice(1)
|
|
223
|
+
// .map((_) => _.trim().replace('at ', ''))
|
|
224
|
+
// .join('\n')
|
|
201
225
|
}
|
|
202
226
|
|
|
203
227
|
const logSpanTrace = () => console.log(getSpanTrace())
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Logger } from 'effect'
|
|
2
|
+
|
|
3
|
+
export * from 'effect/Logger'
|
|
4
|
+
|
|
5
|
+
const defaultDateFormat = (date: Date): string =>
|
|
6
|
+
`${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}:${date
|
|
7
|
+
.getSeconds()
|
|
8
|
+
.toString()
|
|
9
|
+
.padStart(2, '0')}.${date.getMilliseconds().toString().padStart(3, '0')}`
|
|
10
|
+
|
|
11
|
+
export const prettyWithThread = (threadName: string) =>
|
|
12
|
+
Logger.replace(
|
|
13
|
+
Logger.defaultLogger,
|
|
14
|
+
Logger.prettyLogger({
|
|
15
|
+
formatDate: (date) => `${defaultDateFormat(date)} ${threadName}`,
|
|
16
|
+
}),
|
|
17
|
+
)
|