@livestore/utils 0.4.0-dev.9 → 0.5.0-dev.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -0
- package/dist/NoopTracer.d.ts +7 -8
- package/dist/NoopTracer.d.ts.map +1 -1
- package/dist/NoopTracer.js +13 -15
- package/dist/NoopTracer.js.map +1 -1
- package/dist/NoopTracer.test.d.ts +2 -0
- package/dist/NoopTracer.test.d.ts.map +1 -0
- package/dist/NoopTracer.test.js +17 -0
- package/dist/NoopTracer.test.js.map +1 -0
- package/dist/binary.js +1 -1
- package/dist/binary.js.map +1 -1
- package/dist/browser/Opfs/Opfs.d.ts +201 -0
- package/dist/browser/Opfs/Opfs.d.ts.map +1 -0
- package/dist/browser/Opfs/Opfs.js +170 -0
- package/dist/browser/Opfs/Opfs.js.map +1 -0
- package/dist/browser/Opfs/debug-utils.d.ts +20 -0
- package/dist/browser/Opfs/debug-utils.d.ts.map +1 -0
- package/dist/browser/Opfs/debug-utils.js +95 -0
- package/dist/browser/Opfs/debug-utils.js.map +1 -0
- package/dist/browser/Opfs/mod.d.ts +4 -0
- package/dist/browser/Opfs/mod.d.ts.map +1 -0
- package/dist/browser/Opfs/mod.js +4 -0
- package/dist/browser/Opfs/mod.js.map +1 -0
- package/dist/browser/Opfs/utils.d.ts +71 -0
- package/dist/browser/Opfs/utils.d.ts.map +1 -0
- package/dist/browser/Opfs/utils.js +227 -0
- package/dist/browser/Opfs/utils.js.map +1 -0
- package/dist/browser/QuotaExceededError.d.ts +60 -0
- package/dist/browser/QuotaExceededError.d.ts.map +1 -0
- package/dist/browser/QuotaExceededError.js +2 -0
- package/dist/browser/QuotaExceededError.js.map +1 -0
- package/dist/browser/WebChannelBrowser.d.ts +22 -0
- package/dist/browser/WebChannelBrowser.d.ts.map +1 -0
- package/dist/browser/WebChannelBrowser.js +87 -0
- package/dist/browser/WebChannelBrowser.js.map +1 -0
- package/dist/browser/WebError.d.ts +389 -0
- package/dist/browser/WebError.d.ts.map +1 -0
- package/dist/browser/WebError.js +423 -0
- package/dist/browser/WebError.js.map +1 -0
- package/dist/browser/WebError.test.d.ts +2 -0
- package/dist/browser/WebError.test.d.ts.map +1 -0
- package/dist/browser/WebError.test.js +46 -0
- package/dist/browser/WebError.test.js.map +1 -0
- package/dist/browser/WebLock.d.ts.map +1 -0
- package/dist/{effect → browser}/WebLock.js +21 -21
- package/dist/browser/WebLock.js.map +1 -0
- package/dist/{browser.d.ts → browser/detect.d.ts} +1 -1
- package/dist/browser/detect.d.ts.map +1 -0
- package/dist/{browser.js → browser/detect.js} +7 -7
- package/dist/browser/detect.js.map +1 -0
- package/dist/browser/mod.d.ts +8 -0
- package/dist/browser/mod.d.ts.map +1 -0
- package/dist/browser/mod.js +8 -0
- package/dist/browser/mod.js.map +1 -0
- package/dist/cuid/cuid.browser.js +1 -1
- package/dist/cuid/cuid.browser.js.map +1 -1
- package/dist/cuid/cuid.node.js +1 -1
- package/dist/cuid/cuid.node.js.map +1 -1
- package/dist/effect/Debug.d.ts +38 -0
- package/dist/effect/Debug.d.ts.map +1 -0
- package/dist/effect/Debug.js +350 -0
- package/dist/effect/Debug.js.map +1 -0
- package/dist/effect/Effect.d.ts +91 -22
- package/dist/effect/Effect.d.ts.map +1 -1
- package/dist/effect/Effect.js +126 -38
- package/dist/effect/Effect.js.map +1 -1
- package/dist/effect/Effect.test.d.ts +2 -0
- package/dist/effect/Effect.test.d.ts.map +1 -0
- package/dist/effect/Effect.test.js +72 -0
- package/dist/effect/Effect.test.js.map +1 -0
- package/dist/effect/Error.d.ts +4 -6
- package/dist/effect/Error.d.ts.map +1 -1
- package/dist/effect/Error.js +1 -1
- package/dist/effect/Error.js.map +1 -1
- package/dist/effect/Logger.d.ts +0 -6
- package/dist/effect/Logger.d.ts.map +1 -1
- package/dist/effect/Logger.js +0 -32
- package/dist/effect/Logger.js.map +1 -1
- package/dist/effect/OtelTracer.d.ts +1 -1
- package/dist/effect/OtelTracer.d.ts.map +1 -1
- package/dist/effect/OtelTracer.js +2 -3
- package/dist/effect/OtelTracer.js.map +1 -1
- package/dist/effect/RpcClient.d.ts +7 -7
- package/dist/effect/RpcClient.d.ts.map +1 -1
- package/dist/effect/RpcClient.js +74 -54
- package/dist/effect/RpcClient.js.map +1 -1
- package/dist/effect/Schedule.d.ts +1 -1
- package/dist/effect/Schedule.d.ts.map +1 -1
- package/dist/effect/Schedule.js +2 -2
- package/dist/effect/Schedule.js.map +1 -1
- package/dist/effect/Schema/debug-diff.d.ts +1 -1
- package/dist/effect/Schema/debug-diff.d.ts.map +1 -1
- package/dist/effect/Schema/debug-diff.js +9 -10
- package/dist/effect/Schema/debug-diff.js.map +1 -1
- package/dist/effect/Schema/debug-diff.test.js +7 -4
- package/dist/effect/Schema/debug-diff.test.js.map +1 -1
- package/dist/effect/Schema/index.d.ts +28 -18
- package/dist/effect/Schema/index.d.ts.map +1 -1
- package/dist/effect/Schema/index.js +55 -28
- package/dist/effect/Schema/index.js.map +1 -1
- package/dist/effect/Stream.d.ts +13 -5
- package/dist/effect/Stream.d.ts.map +1 -1
- package/dist/effect/Stream.js +19 -12
- package/dist/effect/Stream.js.map +1 -1
- package/dist/effect/Stream.test.js +12 -12
- package/dist/effect/Stream.test.js.map +1 -1
- package/dist/effect/Subscribable.d.ts +9 -3
- package/dist/effect/Subscribable.d.ts.map +1 -1
- package/dist/effect/Subscribable.js +20 -35
- package/dist/effect/Subscribable.js.map +1 -1
- package/dist/effect/SubscriptionRef.d.ts +5 -6
- package/dist/effect/SubscriptionRef.d.ts.map +1 -1
- package/dist/effect/SubscriptionRef.js +2 -3
- package/dist/effect/SubscriptionRef.js.map +1 -1
- package/dist/effect/TaskTracing.d.ts +1 -1
- package/dist/effect/TaskTracing.d.ts.map +1 -1
- package/dist/effect/TaskTracing.js +12 -16
- package/dist/effect/TaskTracing.js.map +1 -1
- package/dist/effect/WebChannel/WebChannel.d.ts +11 -30
- package/dist/effect/WebChannel/WebChannel.d.ts.map +1 -1
- package/dist/effect/WebChannel/WebChannel.js +70 -125
- package/dist/effect/WebChannel/WebChannel.js.map +1 -1
- package/dist/effect/WebChannel/WebChannel.test.js +16 -16
- package/dist/effect/WebChannel/WebChannel.test.js.map +1 -1
- package/dist/effect/WebChannel/broadcastChannelWithAck.d.ts.map +1 -1
- package/dist/effect/WebChannel/broadcastChannelWithAck.js +20 -13
- package/dist/effect/WebChannel/broadcastChannelWithAck.js.map +1 -1
- package/dist/effect/WebChannel/common.d.ts +17 -18
- package/dist/effect/WebChannel/common.d.ts.map +1 -1
- package/dist/effect/WebChannel/common.js +7 -7
- package/dist/effect/WebChannel/common.js.map +1 -1
- package/dist/effect/WebSocket.d.ts +4 -6
- package/dist/effect/WebSocket.d.ts.map +1 -1
- package/dist/effect/WebSocket.js +17 -17
- package/dist/effect/WebSocket.js.map +1 -1
- package/dist/effect/WebSocket.test.js +2 -2
- package/dist/effect/WebSocket.test.js.map +1 -1
- package/dist/effect/mod.browser-build.test.d.ts +2 -0
- package/dist/effect/mod.browser-build.test.d.ts.map +1 -0
- package/dist/effect/mod.browser-build.test.js +18 -0
- package/dist/effect/mod.browser-build.test.js.map +1 -0
- package/dist/effect/mod.d.ts +30 -0
- package/dist/effect/mod.d.ts.map +1 -0
- package/dist/effect/mod.js +30 -0
- package/dist/effect/mod.js.map +1 -0
- package/dist/effect/spanEvent.d.ts +12 -0
- package/dist/effect/spanEvent.d.ts.map +1 -0
- package/dist/effect/spanEvent.js +12 -0
- package/dist/effect/spanEvent.js.map +1 -0
- package/dist/effect/spanEvent.test.d.ts +2 -0
- package/dist/effect/spanEvent.test.d.ts.map +1 -0
- package/dist/effect/spanEvent.test.js +79 -0
- package/dist/effect/spanEvent.test.js.map +1 -0
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +1 -1
- package/dist/env.js.map +1 -1
- package/dist/fast-deep-equal.d.ts.map +1 -1
- package/dist/fast-deep-equal.js +9 -10
- package/dist/fast-deep-equal.js.map +1 -1
- package/dist/global.d.ts +3 -0
- package/dist/global.d.ts.map +1 -1
- package/dist/global.js.map +1 -1
- package/dist/misc.d.ts +9 -1
- package/dist/misc.d.ts.map +1 -1
- package/dist/misc.js +12 -4
- package/dist/misc.js.map +1 -1
- package/dist/mod.d.ts +177 -20
- package/dist/mod.d.ts.map +1 -1
- package/dist/mod.js +159 -22
- package/dist/mod.js.map +1 -1
- package/dist/node/mod.d.ts +45 -6
- package/dist/node/mod.d.ts.map +1 -1
- package/dist/node/mod.js +51 -9
- package/dist/node/mod.js.map +1 -1
- package/dist/object/index.d.ts +0 -9
- package/dist/object/index.d.ts.map +1 -1
- package/dist/object/index.js +0 -9
- package/dist/object/index.js.map +1 -1
- package/dist/object/stringify-object.js +2 -2
- package/dist/object/stringify-object.js.map +1 -1
- package/dist/object/stringify-object.test.js.map +1 -1
- package/dist/qr.d.ts +38 -0
- package/dist/qr.d.ts.map +1 -0
- package/dist/qr.js +109 -0
- package/dist/qr.js.map +1 -0
- package/dist/set.js +1 -1
- package/dist/set.js.map +1 -1
- package/dist/string.d.ts +0 -2
- package/dist/string.d.ts.map +1 -1
- package/dist/string.js +0 -2
- package/dist/string.js.map +1 -1
- package/package.json +61 -55
- package/src/NoopTracer.test.ts +20 -0
- package/src/NoopTracer.ts +28 -37
- package/src/binary.ts +1 -1
- package/src/browser/Opfs/Opfs.ts +463 -0
- package/src/browser/Opfs/debug-utils.ts +154 -0
- package/src/browser/Opfs/mod.ts +3 -0
- package/src/browser/Opfs/utils.ts +297 -0
- package/src/browser/QuotaExceededError.ts +60 -0
- package/src/browser/WebChannelBrowser.ts +145 -0
- package/src/browser/WebError.test.ts +66 -0
- package/src/browser/WebError.ts +587 -0
- package/src/{effect → browser}/WebLock.ts +27 -28
- package/src/{browser.ts → browser/detect.ts} +6 -6
- package/src/browser/mod.ts +8 -0
- package/src/cuid/cuid.browser.ts +1 -1
- package/src/cuid/cuid.node.ts +1 -1
- package/src/effect/Debug.ts +477 -0
- package/src/effect/Effect.test.ts +117 -0
- package/src/effect/Effect.ts +174 -79
- package/src/effect/Error.ts +1 -1
- package/src/effect/Logger.ts +0 -48
- package/src/effect/OtelTracer.ts +2 -3
- package/src/effect/RpcClient.ts +85 -65
- package/src/effect/Schedule.ts +4 -5
- package/src/effect/Schema/debug-diff.test.ts +7 -7
- package/src/effect/Schema/debug-diff.ts +11 -12
- package/src/effect/Schema/index.ts +121 -57
- package/src/effect/Stream.test.ts +14 -13
- package/src/effect/Stream.ts +23 -16
- package/src/effect/Subscribable.ts +31 -42
- package/src/effect/SubscriptionRef.ts +9 -13
- package/src/effect/TaskTracing.ts +13 -16
- package/src/effect/WebChannel/WebChannel.test.ts +24 -24
- package/src/effect/WebChannel/WebChannel.ts +102 -192
- package/src/effect/WebChannel/broadcastChannelWithAck.ts +25 -15
- package/src/effect/WebChannel/common.ts +16 -17
- package/src/effect/WebSocket.test.ts +2 -2
- package/src/effect/WebSocket.ts +20 -16
- package/src/effect/mod.browser-build.test.ts +19 -0
- package/src/effect/{index.ts → mod.ts} +43 -69
- package/src/effect/spanEvent.test.ts +92 -0
- package/src/effect/spanEvent.ts +17 -0
- package/src/env.ts +2 -1
- package/src/fast-deep-equal.ts +9 -10
- package/src/global.ts +4 -2
- package/src/misc.ts +13 -5
- package/src/mod.ts +188 -32
- package/src/node/mod.ts +57 -12
- package/src/object/index.ts +0 -24
- package/src/object/stringify-object.test.ts +1 -0
- package/src/object/stringify-object.ts +2 -2
- package/src/qr.ts +125 -0
- package/src/set.ts +1 -1
- package/src/string.ts +0 -3
- package/dist/.tsbuildinfo.json +0 -1
- package/dist/browser.d.ts.map +0 -1
- package/dist/browser.js.map +0 -1
- package/dist/effect/BucketQueue.d.ts +0 -20
- package/dist/effect/BucketQueue.d.ts.map +0 -1
- package/dist/effect/BucketQueue.js +0 -34
- package/dist/effect/BucketQueue.js.map +0 -1
- package/dist/effect/Scheduler.d.ts +0 -4
- package/dist/effect/Scheduler.d.ts.map +0 -1
- package/dist/effect/Scheduler.js +0 -9
- package/dist/effect/Scheduler.js.map +0 -1
- package/dist/effect/ServiceContext.d.ts +0 -37
- package/dist/effect/ServiceContext.d.ts.map +0 -1
- package/dist/effect/ServiceContext.js +0 -55
- package/dist/effect/ServiceContext.js.map +0 -1
- package/dist/effect/WebLock.d.ts.map +0 -1
- package/dist/effect/WebLock.js.map +0 -1
- package/dist/effect/index.d.ts +0 -32
- package/dist/effect/index.d.ts.map +0 -1
- package/dist/effect/index.js +0 -35
- package/dist/effect/index.js.map +0 -1
- package/dist/guards.d.ts +0 -6
- package/dist/guards.d.ts.map +0 -1
- package/dist/guards.js +0 -6
- package/dist/guards.js.map +0 -1
- package/dist/node/ChildProcessRunner/ChildProcessRunner.d.ts +0 -4
- package/dist/node/ChildProcessRunner/ChildProcessRunner.d.ts.map +0 -1
- package/dist/node/ChildProcessRunner/ChildProcessRunner.js +0 -122
- package/dist/node/ChildProcessRunner/ChildProcessRunner.js.map +0 -1
- package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.d.ts +0 -2
- package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.d.ts.map +0 -1
- package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.js +0 -218
- package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.js.map +0 -1
- package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/schema.d.ts +0 -84
- package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/schema.d.ts.map +0 -1
- package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/schema.js +0 -68
- package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/schema.js.map +0 -1
- package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.d.ts +0 -2
- package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.d.ts.map +0 -1
- package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.js +0 -52
- package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.js.map +0 -1
- package/dist/node/ChildProcessRunner/ChildProcessWorker.d.ts +0 -23
- package/dist/node/ChildProcessRunner/ChildProcessWorker.d.ts.map +0 -1
- package/dist/node/ChildProcessRunner/ChildProcessWorker.js +0 -138
- package/dist/node/ChildProcessRunner/ChildProcessWorker.js.map +0 -1
- package/dist/object/omit.d.ts +0 -3
- package/dist/object/omit.d.ts.map +0 -1
- package/dist/object/omit.js +0 -14
- package/dist/object/omit.js.map +0 -1
- package/dist/object/pick.d.ts +0 -14
- package/dist/object/pick.d.ts.map +0 -1
- package/dist/object/pick.js +0 -17
- package/dist/object/pick.js.map +0 -1
- package/dist/time.d.ts +0 -12
- package/dist/time.d.ts.map +0 -1
- package/dist/time.js +0 -22
- package/dist/time.js.map +0 -1
- package/src/effect/BucketQueue.ts +0 -49
- package/src/effect/Scheduler.ts +0 -13
- package/src/effect/ServiceContext.ts +0 -108
- package/src/guards.ts +0 -8
- package/src/node/ChildProcessRunner/ChildProcessRunner.ts +0 -135
- package/src/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.ts +0 -302
- package/src/node/ChildProcessRunner/ChildProcessRunnerTest/schema.ts +0 -78
- package/src/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.ts +0 -66
- package/src/node/ChildProcessRunner/ChildProcessWorker.ts +0 -168
- package/src/object/omit.ts +0 -17
- package/src/object/pick.ts +0 -27
- package/src/time.ts +0 -25
- /package/dist/{effect → browser}/WebLock.d.ts +0 -0
|
@@ -1,38 +1,34 @@
|
|
|
1
|
-
import { Predicate } from 'effect';
|
|
2
|
-
import * as Context from 'effect/Context';
|
|
3
|
-
import * as Effect from 'effect/Effect';
|
|
4
|
-
import { pipe } from 'effect/Function';
|
|
5
|
-
import * as Layer from 'effect/Layer';
|
|
6
|
-
import * as Tracer from 'effect/Tracer';
|
|
1
|
+
import { Context, Effect, Layer, Predicate, Tracer } from 'effect';
|
|
7
2
|
export const withAsyncTaggingTracing = (makeTrace) => (eff) => {
|
|
8
3
|
if (Predicate.hasProperty(console, 'createTask') === false) {
|
|
9
4
|
return eff;
|
|
10
5
|
}
|
|
11
6
|
const makeTracer = Effect.gen(function* () {
|
|
12
7
|
const oldTracer = yield* Effect.tracer;
|
|
8
|
+
const evaluate = (primitive, fiber) => oldTracer.context?.(primitive, fiber) ?? primitive['~effect/Effect/evaluate'](fiber);
|
|
13
9
|
return Tracer.make({
|
|
14
|
-
span: (
|
|
15
|
-
const span = oldTracer.span(
|
|
16
|
-
const trace = makeTrace(name);
|
|
10
|
+
span: (options) => {
|
|
11
|
+
const span = oldTracer.span(options);
|
|
12
|
+
const trace = makeTrace(options.name);
|
|
17
13
|
span.runInTask = (f) => trace.run(f);
|
|
18
14
|
return span;
|
|
19
15
|
},
|
|
20
|
-
context: (
|
|
21
|
-
const maybeParentSpan = Context.getOption(Tracer.ParentSpan)
|
|
16
|
+
context: (primitive, fiber) => {
|
|
17
|
+
const maybeParentSpan = Context.getOption(fiber.context, Tracer.ParentSpan);
|
|
22
18
|
if (maybeParentSpan._tag === 'None')
|
|
23
|
-
return
|
|
19
|
+
return evaluate(primitive, fiber);
|
|
24
20
|
const parentSpan = maybeParentSpan.value;
|
|
25
21
|
if (parentSpan._tag === 'ExternalSpan')
|
|
26
|
-
return
|
|
22
|
+
return evaluate(primitive, fiber);
|
|
27
23
|
const span = parentSpan;
|
|
28
24
|
if ('runInTask' in span && typeof span.runInTask === 'function') {
|
|
29
|
-
return span.runInTask(() =>
|
|
25
|
+
return span.runInTask(() => evaluate(primitive, fiber));
|
|
30
26
|
}
|
|
31
|
-
return
|
|
27
|
+
return evaluate(primitive, fiber);
|
|
32
28
|
},
|
|
33
29
|
});
|
|
34
30
|
});
|
|
35
|
-
const withTracerLayer =
|
|
31
|
+
const withTracerLayer = Layer.effect(Tracer.Tracer, makeTracer);
|
|
36
32
|
return Effect.provide(eff, withTracerLayer);
|
|
37
33
|
};
|
|
38
34
|
//# sourceMappingURL=TaskTracing.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskTracing.js","sourceRoot":"","sources":["../../src/effect/TaskTracing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"TaskTracing.js","sourceRoot":"","sources":["../../src/effect/TaskTracing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAElE,MAAM,CAAC,MAAM,uBAAuB,GAClC,CAAC,SAAsD,EAAE,EAAE,CAC3D,CAAU,GAA2B,EAAE,EAAE;IACvC,IAAI,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,KAAK,KAAK,EAAE,CAAC;QAC3D,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACrC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAA;QACtC,MAAM,QAAQ,GAAG,CAAI,SAAoC,EAAE,KAAU,EAAE,EAAE,CACvE,SAAS,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,yBAAyB,CAAC,CAAC,KAAK,CAAC,CAAA;QACtF,OAAO,MAAM,CAAC,IAAI,CAAC;YACjB,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE;gBAChB,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBACpC,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CACpC;gBAAC,IAAY,CAAC,SAAS,GAAG,CAAC,CAAM,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;gBACnD,OAAO,IAAI,CAAA;YACb,CAAC;YACD,OAAO,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;gBAC5B,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;gBAE3E,IAAI,eAAe,CAAC,IAAI,KAAK,MAAM;oBAAE,OAAO,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;gBACtE,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,CAAA;gBACxC,IAAI,UAAU,CAAC,IAAI,KAAK,cAAc;oBAAE,OAAO,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;gBACzE,MAAM,IAAI,GAAG,UAAU,CAAA;gBACvB,IAAI,WAAW,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;oBAChE,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAA;gBACzD,CAAC;gBAED,OAAO,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;YACnC,CAAC;SACF,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IAE/D,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,eAAe,CAAC,CAAA;AAC7C,CAAC,CAAA"}
|
|
@@ -1,33 +1,14 @@
|
|
|
1
|
+
import type { Duration } from 'effect';
|
|
1
2
|
import { Queue, Scope } from 'effect';
|
|
2
|
-
import type { DurationInput } from 'effect/Duration';
|
|
3
3
|
import * as Effect from '../Effect.ts';
|
|
4
4
|
import * as Schema from '../Schema/index.ts';
|
|
5
5
|
import { type InputSchema, type WebChannel } from './common.ts';
|
|
6
6
|
export declare const shutdown: <MsgListen, MsgSend>(webChannel: WebChannel<MsgListen, MsgSend>) => Effect.Effect<void>;
|
|
7
7
|
export declare const noopChannel: <MsgListen, MsgSend>() => Effect.Effect<WebChannel<MsgListen, MsgSend>, never, Scope.Scope>;
|
|
8
|
-
/** Only works in browser environments */
|
|
9
|
-
export declare const broadcastChannel: <MsgListen, MsgSend, MsgListenEncoded, MsgSendEncoded>({ channelName, schema: inputSchema, }: {
|
|
10
|
-
channelName: string;
|
|
11
|
-
schema: InputSchema<MsgListen, MsgSend, MsgListenEncoded, MsgSendEncoded>;
|
|
12
|
-
}) => Effect.Effect<WebChannel<MsgListen, MsgSend>, never, Scope.Scope>;
|
|
13
|
-
/**
|
|
14
|
-
* NOTE the `listenName` and `sendName` is needed for cases where both sides are using the same window
|
|
15
|
-
* e.g. for a browser extension, so we need a way to know for which side a message is intended for.
|
|
16
|
-
*/
|
|
17
|
-
export declare const windowChannel: <MsgListen, MsgSend, MsgListenEncoded, MsgSendEncoded>({ listenWindow, sendWindow, targetOrigin, ids, schema: inputSchema, }: {
|
|
18
|
-
listenWindow: Window;
|
|
19
|
-
sendWindow: Window;
|
|
20
|
-
targetOrigin?: string;
|
|
21
|
-
ids: {
|
|
22
|
-
own: string;
|
|
23
|
-
other: string;
|
|
24
|
-
};
|
|
25
|
-
schema: InputSchema<MsgListen, MsgSend, MsgListenEncoded, MsgSendEncoded>;
|
|
26
|
-
}) => Effect.Effect<WebChannel<MsgListen, MsgSend>, never, Scope.Scope>;
|
|
27
8
|
export declare const messagePortChannel: <MsgListen, MsgSend, MsgListenEncoded, MsgSendEncoded>(args: {
|
|
28
9
|
port: MessagePort;
|
|
29
10
|
schema: InputSchema<MsgListen, MsgSend, MsgListenEncoded, MsgSendEncoded>;
|
|
30
|
-
debugId?: string | number;
|
|
11
|
+
debugId?: string | number | undefined;
|
|
31
12
|
}) => Effect.Effect<WebChannel<MsgListen, MsgSend>, never, Scope.Scope>;
|
|
32
13
|
export declare const sameThreadChannel: <MsgListen, MsgSend, MsgListenEncoded, MsgSendEncoded>({ schema: inputSchema, channelName, }: {
|
|
33
14
|
schema: InputSchema<MsgListen, MsgSend, MsgListenEncoded, MsgSendEncoded>;
|
|
@@ -36,7 +17,7 @@ export declare const sameThreadChannel: <MsgListen, MsgSend, MsgListenEncoded, M
|
|
|
36
17
|
export declare const messagePortChannelWithAck: <MsgListen, MsgSend, MsgListenEncoded, MsgSendEncoded>(args: {
|
|
37
18
|
port: MessagePort;
|
|
38
19
|
schema: InputSchema<MsgListen, MsgSend, MsgListenEncoded, MsgSendEncoded>;
|
|
39
|
-
debugId?: string | number;
|
|
20
|
+
debugId?: string | number | undefined;
|
|
40
21
|
}) => Effect.Effect<WebChannel<MsgListen, MsgSend>, never, Scope.Scope>;
|
|
41
22
|
export type QueueChannelProxy<MsgListen, MsgSend> = {
|
|
42
23
|
/** Only meant to be used externally */
|
|
@@ -57,23 +38,23 @@ export type QueueChannelProxy<MsgListen, MsgSend> = {
|
|
|
57
38
|
* and the `listenQueue` is only accessible write-only.
|
|
58
39
|
*/
|
|
59
40
|
export declare const queueChannelProxy: <MsgListen, MsgSend>({ schema: inputSchema, }: {
|
|
60
|
-
schema: Schema.
|
|
61
|
-
listen: Schema.
|
|
62
|
-
send: Schema.
|
|
41
|
+
schema: Schema.Codec<MsgListen | MsgSend, any> | {
|
|
42
|
+
listen: Schema.Codec<MsgListen, any>;
|
|
43
|
+
send: Schema.Codec<MsgSend, any>;
|
|
63
44
|
};
|
|
64
45
|
}) => Effect.Effect<QueueChannelProxy<MsgListen, MsgSend>, never, Scope.Scope>;
|
|
65
46
|
/**
|
|
66
47
|
* Eagerly starts listening to a channel by buffering incoming messages in a queue.
|
|
67
48
|
*/
|
|
68
|
-
export declare const toOpenChannel: (channel: WebChannel<
|
|
49
|
+
export declare const toOpenChannel: <MsgListen, MsgSend>(channel: WebChannel<MsgListen, MsgSend>, options?: {
|
|
69
50
|
/**
|
|
70
51
|
* Sends a heartbeat message to the other end of the channel every `interval`.
|
|
71
52
|
* If the other end doesn't respond within `timeout` milliseconds, the channel is shutdown.
|
|
72
53
|
*/
|
|
73
54
|
heartbeat?: {
|
|
74
|
-
interval:
|
|
75
|
-
timeout:
|
|
55
|
+
interval: Duration.Input;
|
|
56
|
+
timeout: Duration.Input;
|
|
76
57
|
};
|
|
77
|
-
}) => Effect.Effect<WebChannel<
|
|
78
|
-
export declare const sendDebugPing: (channel: WebChannel<any, any>) => Effect.Effect<void,
|
|
58
|
+
}) => Effect.Effect<WebChannel<MsgListen, MsgSend>, never, Scope.Scope>;
|
|
59
|
+
export declare const sendDebugPing: (channel: WebChannel<any, any>) => Effect.Effect<void, Schema.SchemaError, never>;
|
|
79
60
|
//# sourceMappingURL=WebChannel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebChannel.d.ts","sourceRoot":"","sources":["../../../src/effect/WebChannel/WebChannel.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"WebChannel.d.ts","sourceRoot":"","sources":["../../../src/effect/WebChannel/WebChannel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Deferred,
|
|
1
|
+
import { Cause, Deferred, Result, Exit, Filter, identity, Option, PubSub, Queue, Scope } from 'effect';
|
|
2
2
|
import { shouldNeverHappen } from "../../misc.js";
|
|
3
3
|
import * as Effect from "../Effect.js";
|
|
4
4
|
import * as Schema from "../Schema/index.js";
|
|
@@ -10,7 +10,7 @@ export const noopChannel = () => Effect.scopeWithCloseable((scope) => Effect.gen
|
|
|
10
10
|
[WebChannelSymbol]: WebChannelSymbol,
|
|
11
11
|
send: () => Effect.void,
|
|
12
12
|
listen: Stream.never,
|
|
13
|
-
closedDeferred: yield* Deferred.make()
|
|
13
|
+
closedDeferred: yield* Effect.acquireRelease(Deferred.make(), Deferred.done(Exit.void)),
|
|
14
14
|
shutdown: Scope.close(scope, Exit.succeed('shutdown')),
|
|
15
15
|
schema: {
|
|
16
16
|
listen: Schema.Any,
|
|
@@ -19,94 +19,33 @@ export const noopChannel = () => Effect.scopeWithCloseable((scope) => Effect.gen
|
|
|
19
19
|
supportsTransferables: false,
|
|
20
20
|
};
|
|
21
21
|
}).pipe(Effect.withSpan(`WebChannel:noopChannel`)));
|
|
22
|
-
/** Only works in browser environments */
|
|
23
|
-
export const broadcastChannel = ({ channelName, schema: inputSchema, }) => Effect.scopeWithCloseable((scope) => Effect.gen(function* () {
|
|
24
|
-
const schema = mapSchema(inputSchema);
|
|
25
|
-
const channel = new BroadcastChannel(channelName);
|
|
26
|
-
yield* Effect.addFinalizer(() => Effect.try(() => channel.close()).pipe(Effect.ignoreLogged));
|
|
27
|
-
const send = (message) => Effect.gen(function* () {
|
|
28
|
-
const messageEncoded = yield* Schema.encode(schema.send)(message);
|
|
29
|
-
channel.postMessage(messageEncoded);
|
|
30
|
-
});
|
|
31
|
-
// TODO also listen to `messageerror` in parallel
|
|
32
|
-
const listen = Stream.fromEventListener(channel, 'message').pipe(Stream.map((_) => Schema.decodeEither(schema.listen)(_.data)), listenToDebugPing(channelName));
|
|
33
|
-
const closedDeferred = yield* Deferred.make().pipe(Effect.acquireRelease(Deferred.done(Exit.void)));
|
|
34
|
-
const supportsTransferables = false;
|
|
35
|
-
return {
|
|
36
|
-
[WebChannelSymbol]: WebChannelSymbol,
|
|
37
|
-
send,
|
|
38
|
-
listen,
|
|
39
|
-
closedDeferred,
|
|
40
|
-
shutdown: Scope.close(scope, Exit.succeed('shutdown')),
|
|
41
|
-
schema,
|
|
42
|
-
supportsTransferables,
|
|
43
|
-
};
|
|
44
|
-
}).pipe(Effect.withSpan(`WebChannel:broadcastChannel(${channelName})`)));
|
|
45
|
-
/**
|
|
46
|
-
* NOTE the `listenName` and `sendName` is needed for cases where both sides are using the same window
|
|
47
|
-
* e.g. for a browser extension, so we need a way to know for which side a message is intended for.
|
|
48
|
-
*/
|
|
49
|
-
export const windowChannel = ({ listenWindow, sendWindow, targetOrigin = '*', ids, schema: inputSchema, }) => Effect.scopeWithCloseable((scope) => Effect.gen(function* () {
|
|
50
|
-
const schema = mapSchema(inputSchema);
|
|
51
|
-
const debugInfo = {
|
|
52
|
-
sendTotal: 0,
|
|
53
|
-
listenTotal: 0,
|
|
54
|
-
targetOrigin,
|
|
55
|
-
ids,
|
|
56
|
-
};
|
|
57
|
-
const WindowMessageListen = Schema.Struct({
|
|
58
|
-
message: schema.listen,
|
|
59
|
-
from: Schema.Literal(ids.other),
|
|
60
|
-
to: Schema.Literal(ids.own),
|
|
61
|
-
}).annotations({ title: 'webmesh.WindowMessageListen' });
|
|
62
|
-
const WindowMessageSend = Schema.Struct({
|
|
63
|
-
message: schema.send,
|
|
64
|
-
from: Schema.Literal(ids.own),
|
|
65
|
-
to: Schema.Literal(ids.other),
|
|
66
|
-
}).annotations({ title: 'webmesh.WindowMessageSend' });
|
|
67
|
-
const send = (message) => Effect.gen(function* () {
|
|
68
|
-
debugInfo.sendTotal++;
|
|
69
|
-
const [messageEncoded, transferables] = yield* Schema.encodeWithTransferables(WindowMessageSend)({
|
|
70
|
-
message,
|
|
71
|
-
from: ids.own,
|
|
72
|
-
to: ids.other,
|
|
73
|
-
});
|
|
74
|
-
sendWindow.postMessage(messageEncoded, targetOrigin, transferables);
|
|
75
|
-
});
|
|
76
|
-
const listen = Stream.fromEventListener(listenWindow, 'message').pipe(
|
|
77
|
-
// Stream.tap((_) => Effect.log(`${ids.other}→${ids.own}:message`, _.data)),
|
|
78
|
-
Stream.filter((_) => Schema.is(Schema.encodedSchema(WindowMessageListen))(_.data)), Stream.map((_) => {
|
|
79
|
-
debugInfo.listenTotal++;
|
|
80
|
-
return Schema.decodeEither(schema.listen)(_.data.message);
|
|
81
|
-
}), listenToDebugPing('window'));
|
|
82
|
-
const closedDeferred = yield* Deferred.make().pipe(Effect.acquireRelease(Deferred.done(Exit.void)));
|
|
83
|
-
const supportsTransferables = true;
|
|
84
|
-
return {
|
|
85
|
-
[WebChannelSymbol]: WebChannelSymbol,
|
|
86
|
-
send,
|
|
87
|
-
listen,
|
|
88
|
-
closedDeferred,
|
|
89
|
-
shutdown: Scope.close(scope, Exit.succeed('shutdown')),
|
|
90
|
-
schema,
|
|
91
|
-
supportsTransferables,
|
|
92
|
-
debugInfo,
|
|
93
|
-
};
|
|
94
|
-
}).pipe(Effect.withSpan(`WebChannel:windowChannel`)));
|
|
95
22
|
export const messagePortChannel = ({ port, schema: inputSchema, debugId }) => Effect.scopeWithCloseable((scope) => Effect.gen(function* () {
|
|
96
23
|
const schema = mapSchema(inputSchema);
|
|
97
24
|
const label = debugId === undefined ? 'messagePort' : `messagePort:${debugId}`;
|
|
25
|
+
// In Effect v4, forking a consumer is not a readiness handshake. Install the MessagePort
|
|
26
|
+
// listener while constructing the channel and buffer into a scoped queue so early messages
|
|
27
|
+
// are not lost before `listen` is pulled.
|
|
28
|
+
const messageQueue = yield* Effect.acquireRelease(Queue.unbounded(), Queue.shutdown);
|
|
29
|
+
const handler = (event) => {
|
|
30
|
+
Queue.offerUnsafe(messageQueue, event);
|
|
31
|
+
};
|
|
32
|
+
port.addEventListener('message', handler);
|
|
33
|
+
yield* Effect.addFinalizer(() => Effect.sync(() => port.removeEventListener('message', handler)));
|
|
98
34
|
const send = (message) => Effect.gen(function* () {
|
|
99
35
|
const [messageEncoded, transferables] = yield* Schema.encodeWithTransferables(schema.send)(message);
|
|
100
36
|
port.postMessage(messageEncoded, transferables);
|
|
101
37
|
});
|
|
102
|
-
const listen = Stream.
|
|
38
|
+
const listen = Stream.fromQueue(messageQueue).pipe(
|
|
103
39
|
// Stream.tap((_) => Effect.log(`${label}:message`, _.data)),
|
|
104
|
-
Stream.map((_) => Schema.
|
|
40
|
+
Stream.map((_) => Schema.decodeResult(schema.listen)(_.data)), listenToDebugPing(label));
|
|
105
41
|
// NOTE unfortunately MessagePorts don't emit a `close` event when the other end is closed
|
|
106
42
|
port.start();
|
|
107
|
-
const closedDeferred = yield* Deferred.make()
|
|
43
|
+
const closedDeferred = yield* Effect.acquireRelease(Deferred.make(), Deferred.done(Exit.void));
|
|
108
44
|
const supportsTransferables = true;
|
|
109
|
-
yield* Effect.addFinalizer(() => Effect.try(
|
|
45
|
+
yield* Effect.addFinalizer(() => Effect.try({
|
|
46
|
+
try: () => port.close(),
|
|
47
|
+
catch: (cause) => new Cause.UnknownError(cause),
|
|
48
|
+
}).pipe(Effect.ignore));
|
|
110
49
|
return {
|
|
111
50
|
[WebChannelSymbol]: WebChannelSymbol,
|
|
112
51
|
send,
|
|
@@ -117,19 +56,17 @@ export const messagePortChannel = ({ port, schema: inputSchema, debugId }) => Ef
|
|
|
117
56
|
supportsTransferables,
|
|
118
57
|
};
|
|
119
58
|
}).pipe(Effect.withSpan(`WebChannel:messagePortChannel`)));
|
|
120
|
-
const sameThreadChannels =
|
|
59
|
+
const sameThreadChannels = new Map();
|
|
121
60
|
export const sameThreadChannel = ({ schema: inputSchema, channelName, }) => Effect.scopeWithCloseable((scope) => Effect.gen(function* () {
|
|
122
61
|
let pubSub = sameThreadChannels.get(channelName);
|
|
123
62
|
if (pubSub === undefined) {
|
|
124
|
-
pubSub = yield* PubSub.unbounded()
|
|
63
|
+
pubSub = yield* Effect.acquireRelease(PubSub.unbounded(), PubSub.shutdown);
|
|
125
64
|
sameThreadChannels.set(channelName, pubSub);
|
|
126
65
|
}
|
|
127
66
|
const schema = mapSchema(inputSchema);
|
|
128
|
-
const send = (message) =>
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
const listen = Stream.fromPubSub(pubSub).pipe(Stream.map(Either.right), listenToDebugPing(channelName));
|
|
132
|
-
const closedDeferred = yield* Deferred.make().pipe(Effect.acquireRelease(Deferred.done(Exit.void)));
|
|
67
|
+
const send = (message) => PubSub.publish(pubSub, message);
|
|
68
|
+
const listen = Stream.fromPubSub(pubSub).pipe(Stream.map(Result.succeed), listenToDebugPing(channelName));
|
|
69
|
+
const closedDeferred = yield* Effect.acquireRelease(Deferred.make(), Deferred.done(Exit.void));
|
|
133
70
|
return {
|
|
134
71
|
[WebChannelSymbol]: WebChannelSymbol,
|
|
135
72
|
send,
|
|
@@ -146,12 +83,12 @@ export const messagePortChannelWithAck = ({ port, schema: inputSchema, debugId }
|
|
|
146
83
|
const requestAckMap = new Map();
|
|
147
84
|
const ChannelRequest = Schema.TaggedStruct('ChannelRequest', {
|
|
148
85
|
id: Schema.String,
|
|
149
|
-
payload: Schema.Union(schema.listen, schema.send),
|
|
150
|
-
}).
|
|
86
|
+
payload: Schema.Union([schema.listen, schema.send]),
|
|
87
|
+
}).annotate({ title: 'webmesh.ChannelRequest' });
|
|
151
88
|
const ChannelRequestAck = Schema.TaggedStruct('ChannelRequestAck', {
|
|
152
89
|
reqId: Schema.String,
|
|
153
|
-
}).
|
|
154
|
-
const ChannelMessage = Schema.Union(ChannelRequest, ChannelRequestAck).
|
|
90
|
+
}).annotate({ title: 'webmesh.ChannelRequestAck' });
|
|
91
|
+
const ChannelMessage = Schema.Union([ChannelRequest, ChannelRequestAck]).annotate({
|
|
155
92
|
title: 'webmesh.ChannelMessage',
|
|
156
93
|
});
|
|
157
94
|
const debugInfo = {
|
|
@@ -160,6 +97,14 @@ export const messagePortChannelWithAck = ({ port, schema: inputSchema, debugId }
|
|
|
160
97
|
listenTotal: 0,
|
|
161
98
|
id: debugId,
|
|
162
99
|
};
|
|
100
|
+
// The ack channel sends protocol messages during setup. Buffer MessagePort events eagerly so
|
|
101
|
+
// the initial ping/pong cannot race a lazily-started `listen` stream under Effect v4.
|
|
102
|
+
const messageQueue = yield* Effect.acquireRelease(Queue.unbounded(), Queue.shutdown);
|
|
103
|
+
const handler = (event) => {
|
|
104
|
+
Queue.offerUnsafe(messageQueue, event);
|
|
105
|
+
};
|
|
106
|
+
port.addEventListener('message', handler);
|
|
107
|
+
yield* Effect.addFinalizer(() => Effect.sync(() => port.removeEventListener('message', handler)));
|
|
163
108
|
const send = (message) => Effect.gen(function* () {
|
|
164
109
|
debugInfo.sendTotal++;
|
|
165
110
|
debugInfo.sendPending++;
|
|
@@ -172,34 +117,35 @@ export const messagePortChannelWithAck = ({ port, schema: inputSchema, debugId }
|
|
|
172
117
|
const ack = yield* Deferred.make();
|
|
173
118
|
requestAckMap.set(id, ack);
|
|
174
119
|
port.postMessage(messageEncoded, transferables);
|
|
175
|
-
yield* ack;
|
|
120
|
+
yield* Deferred.await(ack);
|
|
176
121
|
requestAckMap.delete(id);
|
|
177
122
|
debugInfo.sendPending--;
|
|
178
123
|
});
|
|
179
|
-
|
|
180
|
-
// https://github.com/livestorejs/livestore/issues/262
|
|
181
|
-
const listen = Stream.fromEventListener(port, 'message').pipe(
|
|
124
|
+
const listen = Stream.fromQueue(messageQueue).pipe(
|
|
182
125
|
// Stream.onStart(Effect.log(`${label}:listen:start`)),
|
|
183
126
|
// Stream.tap((_) => Effect.log(`${label}:message`, _.data)),
|
|
184
|
-
Stream.map((_) => Schema.
|
|
185
|
-
if (msg
|
|
186
|
-
if (msg.
|
|
187
|
-
yield* Deferred.succeed(requestAckMap.get(msg.
|
|
127
|
+
Stream.map((_) => Schema.decodeResult(ChannelMessage)(_.data)), Stream.tap((msg) => Effect.gen(function* () {
|
|
128
|
+
if (Result.isSuccess(msg) === true) {
|
|
129
|
+
if (msg.success._tag === 'ChannelRequestAck') {
|
|
130
|
+
yield* Deferred.succeed(requestAckMap.get(msg.success.reqId), void 0);
|
|
188
131
|
}
|
|
189
|
-
else if (msg.
|
|
132
|
+
else if (msg.success._tag === 'ChannelRequest') {
|
|
190
133
|
debugInfo.listenTotal++;
|
|
191
|
-
port.postMessage(Schema.
|
|
134
|
+
port.postMessage(yield* Schema.encodeEffect(ChannelMessage)({ _tag: 'ChannelRequestAck', reqId: msg.success.id }).pipe(Effect.orDie));
|
|
192
135
|
}
|
|
193
136
|
}
|
|
194
|
-
})), Stream.filterMap((msg) => msg
|
|
137
|
+
})), Stream.filterMap(Filter.fromPredicateOption((msg) => Result.isFailure(msg) === true
|
|
195
138
|
? Option.some(msg)
|
|
196
|
-
: msg.
|
|
197
|
-
? Option.some(
|
|
198
|
-
: Option.none())
|
|
139
|
+
: msg.success._tag === 'ChannelRequest'
|
|
140
|
+
? Option.some(Result.succeed(msg.success.payload))
|
|
141
|
+
: Option.none())), listenToDebugPing(label));
|
|
199
142
|
port.start();
|
|
200
|
-
const closedDeferred = yield* Deferred.make()
|
|
143
|
+
const closedDeferred = yield* Effect.acquireRelease(Deferred.make(), Deferred.done(Exit.void));
|
|
201
144
|
const supportsTransferables = true;
|
|
202
|
-
yield* Effect.addFinalizer(() => Effect.try(
|
|
145
|
+
yield* Effect.addFinalizer(() => Effect.try({
|
|
146
|
+
try: () => port.close(),
|
|
147
|
+
catch: (cause) => new Cause.UnknownError(cause),
|
|
148
|
+
}).pipe(Effect.ignore));
|
|
203
149
|
return {
|
|
204
150
|
[WebChannelSymbol]: WebChannelSymbol,
|
|
205
151
|
send,
|
|
@@ -216,11 +162,11 @@ export const messagePortChannelWithAck = ({ port, schema: inputSchema, debugId }
|
|
|
216
162
|
* and the `listenQueue` is only accessible write-only.
|
|
217
163
|
*/
|
|
218
164
|
export const queueChannelProxy = ({ schema: inputSchema, }) => Effect.scopeWithCloseable((scope) => Effect.gen(function* () {
|
|
219
|
-
const sendQueue = yield* Queue.unbounded()
|
|
220
|
-
const listenQueue = yield* Queue.unbounded()
|
|
165
|
+
const sendQueue = yield* Effect.acquireRelease(Queue.unbounded(), Queue.shutdown);
|
|
166
|
+
const listenQueue = yield* Effect.acquireRelease(Queue.unbounded(), Queue.shutdown);
|
|
221
167
|
const send = (message) => Queue.offer(sendQueue, message);
|
|
222
|
-
const listen = Stream.fromQueue(listenQueue).pipe(Stream.map(
|
|
223
|
-
const closedDeferred = yield* Deferred.make()
|
|
168
|
+
const listen = Stream.fromQueue(listenQueue).pipe(Stream.map(Result.succeed), listenToDebugPing('queueChannel'));
|
|
169
|
+
const closedDeferred = yield* Effect.acquireRelease(Deferred.make(), Deferred.done(Exit.void));
|
|
224
170
|
const supportsTransferables = true;
|
|
225
171
|
const schema = mapSchema(inputSchema);
|
|
226
172
|
const webChannel = {
|
|
@@ -238,22 +184,23 @@ export const queueChannelProxy = ({ schema: inputSchema, }) => Effect.scopeWithC
|
|
|
238
184
|
* Eagerly starts listening to a channel by buffering incoming messages in a queue.
|
|
239
185
|
*/
|
|
240
186
|
export const toOpenChannel = (channel, options) => Effect.gen(function* () {
|
|
241
|
-
const queue = yield* Queue.unbounded()
|
|
187
|
+
const queue = yield* Effect.acquireRelease(Queue.unbounded(), Queue.shutdown);
|
|
188
|
+
const heartbeatChannel = channel;
|
|
242
189
|
const pendingPingDeferredRef = {
|
|
243
190
|
current: undefined,
|
|
244
191
|
};
|
|
245
192
|
yield* channel.listen.pipe(
|
|
246
193
|
// TODO implement this on the "chunk" level for better performance
|
|
247
|
-
options?.heartbeat
|
|
194
|
+
options?.heartbeat !== undefined
|
|
248
195
|
? Stream.filterEffect(Effect.fn(function* (msg) {
|
|
249
|
-
if (msg
|
|
250
|
-
if (msg.
|
|
251
|
-
yield*
|
|
196
|
+
if (Result.isSuccess(msg) === true && Schema.is(WebChannelHeartbeat)(msg.success) === true) {
|
|
197
|
+
if (msg.success._tag === 'WebChannel.Ping') {
|
|
198
|
+
yield* heartbeatChannel.send(WebChannelPong.make({ requestId: msg.success.requestId }));
|
|
252
199
|
}
|
|
253
200
|
else {
|
|
254
201
|
const { deferred, requestId } = pendingPingDeferredRef.current ?? shouldNeverHappen('No pending ping');
|
|
255
|
-
if (requestId !== msg.
|
|
256
|
-
shouldNeverHappen('Received pong for unexpected requestId', requestId, msg.
|
|
202
|
+
if (requestId !== msg.success.requestId) {
|
|
203
|
+
shouldNeverHappen('Received pong for unexpected requestId', requestId, msg.success.requestId);
|
|
257
204
|
}
|
|
258
205
|
yield* Deferred.succeed(deferred, void 0);
|
|
259
206
|
}
|
|
@@ -261,24 +208,24 @@ export const toOpenChannel = (channel, options) => Effect.gen(function* () {
|
|
|
261
208
|
}
|
|
262
209
|
return true;
|
|
263
210
|
}))
|
|
264
|
-
: identity, Stream.
|
|
265
|
-
if (options?.heartbeat) {
|
|
211
|
+
: identity, Stream.tapArray((array) => Queue.offerAll(queue, array)), Stream.runDrain, Effect.forkScoped);
|
|
212
|
+
if (options?.heartbeat !== undefined) {
|
|
266
213
|
const { interval, timeout } = options.heartbeat;
|
|
267
214
|
yield* Effect.gen(function* () {
|
|
268
215
|
while (true) {
|
|
269
216
|
yield* Effect.sleep(interval);
|
|
270
217
|
const requestId = crypto.randomUUID();
|
|
271
|
-
yield*
|
|
218
|
+
yield* heartbeatChannel.send(WebChannelPing.make({ requestId }));
|
|
272
219
|
const deferred = yield* Deferred.make();
|
|
273
220
|
pendingPingDeferredRef.current = { deferred, requestId };
|
|
274
|
-
yield* deferred.pipe(Effect.timeout(timeout), Effect.catchTag('
|
|
221
|
+
yield* Deferred.await(deferred).pipe(Effect.timeout(timeout), Effect.catchTag('TimeoutError', () => channel.shutdown));
|
|
275
222
|
}
|
|
276
223
|
}).pipe(Effect.withSpan(`WebChannel:heartbeat`), Effect.forkScoped);
|
|
277
224
|
}
|
|
278
225
|
// We're currently limiting the chunk size to 1 to not drop messages in scearnios where
|
|
279
226
|
// the listen stream get subscribed to, only take N messages and then unsubscribe.
|
|
280
227
|
// Without this limit, messages would be dropped.
|
|
281
|
-
const listen = Stream.fromQueue(queue
|
|
228
|
+
const listen = Stream.fromQueue(queue).pipe(Stream.rechunk(1));
|
|
282
229
|
return {
|
|
283
230
|
[WebChannelSymbol]: WebChannelSymbol,
|
|
284
231
|
send: channel.send,
|
|
@@ -293,7 +240,5 @@ export const toOpenChannel = (channel, options) => Effect.gen(function* () {
|
|
|
293
240
|
},
|
|
294
241
|
};
|
|
295
242
|
});
|
|
296
|
-
export const sendDebugPing = (channel) =>
|
|
297
|
-
yield* channel.send(DebugPingMessage.make({ message: 'ping' }));
|
|
298
|
-
});
|
|
243
|
+
export const sendDebugPing = (channel) => channel.send(DebugPingMessage.make({ message: 'ping' }));
|
|
299
244
|
//# sourceMappingURL=WebChannel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebChannel.js","sourceRoot":"","sources":["../../../src/effect/WebChannel/WebChannel.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WebChannel.js","sourceRoot":"","sources":["../../../src/effect/WebChannel/WebChannel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as Vitest from '@effect/vitest';
|
|
2
|
-
import { Effect, Schema, Stream } from 'effect';
|
|
2
|
+
import { Effect, Fiber, Schema, Stream } from 'effect';
|
|
3
3
|
import { JSDOM } from 'jsdom';
|
|
4
|
-
import * as WebChannel from "
|
|
4
|
+
import * as WebChannel from "../../browser/WebChannelBrowser.js";
|
|
5
5
|
Vitest.describe('WebChannel', () => {
|
|
6
6
|
Vitest.describe('windowChannel', () => {
|
|
7
|
-
Vitest.
|
|
7
|
+
Vitest.live('should work with 2 windows', () => Effect.gen(function* () {
|
|
8
8
|
const windowA = new JSDOM().window;
|
|
9
9
|
const windowB = new JSDOM().window;
|
|
10
10
|
const codeSideA = Effect.gen(function* () {
|
|
@@ -12,48 +12,48 @@ Vitest.describe('WebChannel', () => {
|
|
|
12
12
|
listenWindow: windowA,
|
|
13
13
|
sendWindow: windowB,
|
|
14
14
|
ids: { own: 'a', other: 'b' },
|
|
15
|
-
schema: Schema.
|
|
15
|
+
schema: Schema.Finite,
|
|
16
16
|
});
|
|
17
|
-
const msgFromBFiber = yield* channelToB.listen.pipe(Stream.
|
|
17
|
+
const msgFromBFiber = yield* channelToB.listen.pipe(Stream.runHead, Effect.flatMap(Effect.fromOption), Effect.flatMap(Effect.fromResult), Effect.forkChild);
|
|
18
18
|
yield* channelToB.send(1);
|
|
19
|
-
Vitest.expect(yield* msgFromBFiber).toEqual(2);
|
|
19
|
+
Vitest.expect(yield* Fiber.join(msgFromBFiber)).toEqual(2);
|
|
20
20
|
});
|
|
21
21
|
const codeSideB = Effect.gen(function* () {
|
|
22
22
|
const channelToA = yield* WebChannel.windowChannel({
|
|
23
23
|
listenWindow: windowB,
|
|
24
24
|
sendWindow: windowA,
|
|
25
25
|
ids: { own: 'b', other: 'a' },
|
|
26
|
-
schema: Schema.
|
|
26
|
+
schema: Schema.Finite,
|
|
27
27
|
});
|
|
28
|
-
const msgFromAFiber = yield* channelToA.listen.pipe(Stream.
|
|
28
|
+
const msgFromAFiber = yield* channelToA.listen.pipe(Stream.runHead, Effect.flatMap(Effect.fromOption), Effect.flatMap(Effect.fromResult), Effect.forkChild);
|
|
29
29
|
yield* channelToA.send(2);
|
|
30
|
-
Vitest.expect(yield* msgFromAFiber).toEqual(1);
|
|
30
|
+
Vitest.expect(yield* Fiber.join(msgFromAFiber)).toEqual(1);
|
|
31
31
|
});
|
|
32
32
|
yield* Effect.all([codeSideA, codeSideB], { concurrency: 'unbounded' });
|
|
33
33
|
}));
|
|
34
|
-
Vitest.
|
|
34
|
+
Vitest.live('should work with the same window', () => Effect.gen(function* () {
|
|
35
35
|
const window = new JSDOM().window;
|
|
36
36
|
const codeSideA = Effect.gen(function* () {
|
|
37
37
|
const channelToB = yield* WebChannel.windowChannel({
|
|
38
38
|
listenWindow: window,
|
|
39
39
|
sendWindow: window,
|
|
40
40
|
ids: { own: 'a', other: 'b' },
|
|
41
|
-
schema: Schema.
|
|
41
|
+
schema: Schema.Finite,
|
|
42
42
|
});
|
|
43
|
-
const msgFromBFiber = yield* channelToB.listen.pipe(Stream.
|
|
43
|
+
const msgFromBFiber = yield* channelToB.listen.pipe(Stream.runHead, Effect.flatMap(Effect.fromOption), Effect.flatMap(Effect.fromResult), Effect.forkChild);
|
|
44
44
|
yield* channelToB.send(1);
|
|
45
|
-
Vitest.expect(yield* msgFromBFiber).toEqual(2);
|
|
45
|
+
Vitest.expect(yield* Fiber.join(msgFromBFiber)).toEqual(2);
|
|
46
46
|
});
|
|
47
47
|
const codeSideB = Effect.gen(function* () {
|
|
48
48
|
const channelToA = yield* WebChannel.windowChannel({
|
|
49
49
|
listenWindow: window,
|
|
50
50
|
sendWindow: window,
|
|
51
51
|
ids: { own: 'b', other: 'a' },
|
|
52
|
-
schema: Schema.
|
|
52
|
+
schema: Schema.Finite,
|
|
53
53
|
});
|
|
54
|
-
const msgFromAFiber = yield* channelToA.listen.pipe(Stream.
|
|
54
|
+
const msgFromAFiber = yield* channelToA.listen.pipe(Stream.runHead, Effect.flatMap(Effect.fromOption), Effect.flatMap(Effect.fromResult), Effect.forkChild);
|
|
55
55
|
yield* channelToA.send(2);
|
|
56
|
-
Vitest.expect(yield* msgFromAFiber).toEqual(1);
|
|
56
|
+
Vitest.expect(yield* Fiber.join(msgFromAFiber)).toEqual(1);
|
|
57
57
|
});
|
|
58
58
|
yield* Effect.all([codeSideA, codeSideB], { concurrency: 'unbounded' });
|
|
59
59
|
}));
|