@livestore/utils 0.0.55-dev.2 → 0.0.55

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.
Files changed (81) hide show
  1. package/dist/.tsbuildinfo.json +1 -1
  2. package/dist/effect/Effect.d.ts +2 -0
  3. package/dist/effect/Effect.d.ts.map +1 -1
  4. package/dist/effect/Effect.js +2 -0
  5. package/dist/effect/Effect.js.map +1 -1
  6. package/dist/effect/SubscriptionRef.d.ts +2 -2
  7. package/dist/effect/SubscriptionRef.d.ts.map +1 -1
  8. package/dist/effect/SubscriptionRef.js +2 -3
  9. package/dist/effect/SubscriptionRef.js.map +1 -1
  10. package/dist/effect/index.d.ts +2 -6
  11. package/dist/effect/index.d.ts.map +1 -1
  12. package/dist/effect/index.js +2 -8
  13. package/dist/effect/index.js.map +1 -1
  14. package/dist/misc.d.ts +1 -0
  15. package/dist/misc.d.ts.map +1 -1
  16. package/dist/misc.js +10 -0
  17. package/dist/misc.js.map +1 -1
  18. package/package.json +13 -13
  19. package/src/effect/Effect.ts +8 -0
  20. package/src/effect/SubscriptionRef.ts +3 -11
  21. package/src/effect/index.ts +2 -8
  22. package/src/misc.ts +13 -0
  23. package/dist/effect/Browser.d.ts +0 -18
  24. package/dist/effect/Browser.d.ts.map +0 -1
  25. package/dist/effect/Browser.js +0 -22
  26. package/dist/effect/Browser.js.map +0 -1
  27. package/dist/effect/browser-worker-tmp/BrowserWorker.d.ts +0 -21
  28. package/dist/effect/browser-worker-tmp/BrowserWorker.d.ts.map +0 -1
  29. package/dist/effect/browser-worker-tmp/BrowserWorker.js +0 -17
  30. package/dist/effect/browser-worker-tmp/BrowserWorker.js.map +0 -1
  31. package/dist/effect/browser-worker-tmp/BrowserWorkerRunner.d.ts +0 -12
  32. package/dist/effect/browser-worker-tmp/BrowserWorkerRunner.d.ts.map +0 -1
  33. package/dist/effect/browser-worker-tmp/BrowserWorkerRunner.js +0 -8
  34. package/dist/effect/browser-worker-tmp/BrowserWorkerRunner.js.map +0 -1
  35. package/dist/effect/browser-worker-tmp/internal/worker.d.ts +0 -9
  36. package/dist/effect/browser-worker-tmp/internal/worker.d.ts.map +0 -1
  37. package/dist/effect/browser-worker-tmp/internal/worker.js +0 -56
  38. package/dist/effect/browser-worker-tmp/internal/worker.js.map +0 -1
  39. package/dist/effect/browser-worker-tmp/internal/workerRunner.d.ts +0 -5
  40. package/dist/effect/browser-worker-tmp/internal/workerRunner.d.ts.map +0 -1
  41. package/dist/effect/browser-worker-tmp/internal/workerRunner.js +0 -100
  42. package/dist/effect/browser-worker-tmp/internal/workerRunner.js.map +0 -1
  43. package/dist/effect/browser-worker-tmp/port-platform-runner.d.ts +0 -5
  44. package/dist/effect/browser-worker-tmp/port-platform-runner.d.ts.map +0 -1
  45. package/dist/effect/browser-worker-tmp/port-platform-runner.js +0 -54
  46. package/dist/effect/browser-worker-tmp/port-platform-runner.js.map +0 -1
  47. package/dist/effect/worker-tmp/Worker.d.ts +0 -290
  48. package/dist/effect/worker-tmp/Worker.d.ts.map +0 -1
  49. package/dist/effect/worker-tmp/Worker.js +0 -62
  50. package/dist/effect/worker-tmp/Worker.js.map +0 -1
  51. package/dist/effect/worker-tmp/WorkerError.d.ts +0 -63
  52. package/dist/effect/worker-tmp/WorkerError.d.ts.map +0 -1
  53. package/dist/effect/worker-tmp/WorkerError.js +0 -52
  54. package/dist/effect/worker-tmp/WorkerError.js.map +0 -1
  55. package/dist/effect/worker-tmp/WorkerRunner.d.ts +0 -119
  56. package/dist/effect/worker-tmp/WorkerRunner.d.ts.map +0 -1
  57. package/dist/effect/worker-tmp/WorkerRunner.js +0 -32
  58. package/dist/effect/worker-tmp/WorkerRunner.js.map +0 -1
  59. package/dist/effect/worker-tmp/internal/worker.d.ts +0 -36
  60. package/dist/effect/worker-tmp/internal/worker.d.ts.map +0 -1
  61. package/dist/effect/worker-tmp/internal/worker.js +0 -244
  62. package/dist/effect/worker-tmp/internal/worker.js.map +0 -1
  63. package/dist/effect/worker-tmp/internal/workerError.d.ts +0 -4
  64. package/dist/effect/worker-tmp/internal/workerError.d.ts.map +0 -1
  65. package/dist/effect/worker-tmp/internal/workerError.js +0 -3
  66. package/dist/effect/worker-tmp/internal/workerError.js.map +0 -1
  67. package/dist/effect/worker-tmp/internal/workerRunner.d.ts +0 -21
  68. package/dist/effect/worker-tmp/internal/workerRunner.d.ts.map +0 -1
  69. package/dist/effect/worker-tmp/internal/workerRunner.js +0 -137
  70. package/dist/effect/worker-tmp/internal/workerRunner.js.map +0 -1
  71. package/src/effect/browser-worker-tmp/BrowserWorker.ts +0 -26
  72. package/src/effect/browser-worker-tmp/BrowserWorkerRunner.ts +0 -14
  73. package/src/effect/browser-worker-tmp/internal/worker.ts +0 -71
  74. package/src/effect/browser-worker-tmp/internal/workerRunner.ts +0 -119
  75. package/src/effect/browser-worker-tmp/port-platform-runner.ts +0 -74
  76. package/src/effect/worker-tmp/Worker.ts +0 -374
  77. package/src/effect/worker-tmp/WorkerError.ts +0 -79
  78. package/src/effect/worker-tmp/WorkerRunner.ts +0 -181
  79. package/src/effect/worker-tmp/internal/worker.ts +0 -417
  80. package/src/effect/worker-tmp/internal/workerError.ts +0 -6
  81. package/src/effect/worker-tmp/internal/workerRunner.ts +0 -237
@@ -1,137 +0,0 @@
1
- /* eslint-disable prefer-arrow/prefer-arrow-functions */
2
- import { Transferable } from '@effect/platform';
3
- import * as Schema from '@effect/schema/Schema';
4
- import * as Serializable from '@effect/schema/Serializable';
5
- import * as Cause from 'effect/Cause';
6
- import * as Chunk from 'effect/Chunk';
7
- import * as Context from 'effect/Context';
8
- import * as Effect from 'effect/Effect';
9
- import * as Either from 'effect/Either';
10
- import * as ExecutionStrategy from 'effect/ExecutionStrategy';
11
- import * as Exit from 'effect/Exit';
12
- import * as Fiber from 'effect/Fiber';
13
- import { identity, pipe } from 'effect/Function';
14
- import * as Layer from 'effect/Layer';
15
- import * as Option from 'effect/Option';
16
- import * as Queue from 'effect/Queue';
17
- import * as Scope from 'effect/Scope';
18
- import * as Stream from 'effect/Stream';
19
- import { isWorkerError, WorkerError } from '../WorkerError.js';
20
- /** @internal */
21
- export const PlatformRunnerTypeId = Symbol.for('@effect/platform/Runner/PlatformRunner');
22
- /** @internal */
23
- export const PlatformRunner = Context.GenericTag('@effect/platform/Runner/PlatformRunner');
24
- /** @internal */
25
- export const make = (process, options) => Effect.gen(function* (_) {
26
- const scope = yield* _(Scope.fork(yield* _(Effect.scope), ExecutionStrategy.parallel));
27
- const fiber = Option.getOrThrow(Fiber.getCurrentFiber());
28
- const shutdown = Effect.zipRight(Scope.close(scope, Exit.void), Fiber.interruptFork(fiber));
29
- const platform = yield* _(PlatformRunner);
30
- const backing = yield* _(platform.start(shutdown), Scope.extend(scope));
31
- const fiberMap = new Map();
32
- yield* _(Queue.take(backing.queue), options?.decode
33
- ? Effect.flatMap((msg) => {
34
- const req = msg[1];
35
- if (req[1] === 1) {
36
- return Effect.succeed(msg);
37
- }
38
- return Effect.map(options.decode(req[2]), (data) => [msg[0], [req[0], req[1], data, req[3]]]);
39
- })
40
- : identity, Effect.tap(([portId, req]) => {
41
- const id = req[0];
42
- if (req[1] === 1) {
43
- const fiber = fiberMap.get(id);
44
- if (!fiber)
45
- return Effect.void;
46
- return Fiber.interrupt(fiber);
47
- }
48
- const collector = Transferable.unsafeMakeCollector();
49
- return pipe(Effect.sync(() => process(req[2])), Effect.flatMap((stream) => {
50
- let effect = Effect.isEffect(stream)
51
- ? Effect.flatMap(stream, (data) => {
52
- const transfers = options?.transfers ? options.transfers(data) : [];
53
- return pipe(options?.encodeOutput
54
- ? Effect.provideService(options.encodeOutput(req[2], data), Transferable.Collector, collector)
55
- : Effect.succeed(data), Effect.flatMap((payload) => backing.send(portId, [id, 0, [payload]], [...transfers, ...collector.unsafeRead()])));
56
- })
57
- : pipe(stream, Stream.chunks, Stream.tap((data) => {
58
- if (options?.encodeOutput === undefined) {
59
- const payload = Chunk.toReadonlyArray(data);
60
- const transfers = options?.transfers ? payload.flatMap(options.transfers) : undefined;
61
- return backing.send(portId, [id, 0, payload], transfers);
62
- }
63
- const transfers = [];
64
- collector.unsafeClear();
65
- return pipe(Effect.forEach(data, (data) => {
66
- if (options?.transfers) {
67
- for (const option of options.transfers(data)) {
68
- transfers.push(option);
69
- }
70
- }
71
- return Effect.orDie(options.encodeOutput(req[2], data));
72
- }), Effect.provideService(Transferable.Collector, collector), Effect.flatMap((payload) => {
73
- collector.unsafeRead().forEach((transfer) => transfers.push(transfer));
74
- return backing.send(portId, [id, 0, payload], transfers);
75
- }));
76
- }), Stream.runDrain, Effect.andThen(backing.send(portId, [id, 1])));
77
- if (req[3]) {
78
- const [traceId, spanId, sampled] = req[3];
79
- effect = Effect.withParentSpan(effect, {
80
- _tag: 'ExternalSpan',
81
- traceId,
82
- spanId,
83
- sampled,
84
- context: Context.empty(),
85
- });
86
- }
87
- return effect;
88
- }), Effect.catchIf(isWorkerError, (error) => backing.send(portId, [id, 3, WorkerError.encodeCause(Cause.fail(error))])), Effect.onExit((exit) => {
89
- if (exit._tag === 'Success') {
90
- return Effect.void;
91
- }
92
- return Either.match(Cause.failureOrCause(exit.cause), {
93
- onLeft: (error) => {
94
- const transfers = options?.transfers ? options.transfers(error) : [];
95
- collector.unsafeClear();
96
- return pipe(options?.encodeError
97
- ? Effect.provideService(options.encodeError(req[2], error), Transferable.Collector, collector)
98
- : Effect.succeed(error), Effect.flatMap((payload) => backing.send(portId, [id, 2, payload], [...transfers, ...collector.unsafeRead()])), Effect.catchAllCause((cause) => backing.send(portId, [id, 3, WorkerError.encodeCause(cause)])));
99
- },
100
- onRight: (cause) => backing.send(portId, [id, 3, WorkerError.encodeCause(cause)]),
101
- });
102
- }), Effect.ensuring(Effect.sync(() => fiberMap.delete(id))), Effect.fork, Effect.tap((fiber) => Effect.sync(() => fiberMap.set(id, fiber))));
103
- }), Effect.forever, Effect.forkIn(scope));
104
- });
105
- /** @internal */
106
- export const layer = (process, options) => Layer.scopedDiscard(make(process, options));
107
- /** @internal */
108
- export const makeSerialized = (schema, handlers) => Effect.gen(function* (_) {
109
- const scope = yield* _(Effect.scope);
110
- let context = Context.empty();
111
- const parseRequest = Schema.decodeUnknown(schema);
112
- return yield* _(make((request) => {
113
- const result = handlers[request._tag](request);
114
- if (Layer.isLayer(result)) {
115
- return Effect.flatMap(Layer.buildWithScope(result, scope), (_) => Effect.sync(() => {
116
- context = Context.merge(context, _);
117
- }));
118
- }
119
- else if (Effect.isEffect(result)) {
120
- return Effect.provide(result, context);
121
- }
122
- return Stream.provideContext(result, context);
123
- }, {
124
- decode(message) {
125
- return Effect.mapError(parseRequest(message), (error) => new WorkerError({ reason: 'decode', error }));
126
- },
127
- encodeError(request, message) {
128
- return Effect.mapError(Serializable.serializeFailure(request, message), (error) => new WorkerError({ reason: 'encode', error }));
129
- },
130
- encodeOutput(request, message) {
131
- return Effect.catchAllCause(Serializable.serializeSuccess(request, message), (error) => new WorkerError({ reason: 'encode', error }));
132
- },
133
- }));
134
- });
135
- /** @internal */
136
- export const layerSerialized = (schema, handlers) => Layer.scopedDiscard(makeSerialized(schema, handlers));
137
- //# sourceMappingURL=workerRunner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workerRunner.js","sourceRoot":"","sources":["../../../../src/effect/worker-tmp/internal/workerRunner.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAC/C,OAAO,KAAK,YAAY,MAAM,6BAA6B,CAAA;AAC3D,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,iBAAiB,MAAM,0BAA0B,CAAA;AAC7D,OAAO,KAAK,IAAI,MAAM,aAAa,CAAA;AACnC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAG9D,gBAAgB;AAChB,MAAM,CAAC,MAAM,oBAAoB,GAAsC,MAAM,CAAC,GAAG,CAC/E,wCAAwC,CACJ,CAAA;AAEtC,gBAAgB;AAChB,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU,CAA8B,wCAAwC,CAAC,CAAA;AAEvH,gBAAgB;AAChB,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,OAAwE,EACxE,OAA8C,EAC9C,EAAE,CACF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;IACrB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAA;IACtF,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAA;IACxD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAA;IAC3F,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAA;IACzC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CACtB,QAAQ,CAAC,KAAK,CAAsD,QAAQ,CAAC,EAC7E,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CACpB,CAAA;IACD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAsC,CAAA;IAE9D,KAAK,CAAC,CAAC,CAAC,CACN,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EACzB,OAAO,EAAE,MAAM;QACb,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAmF,EAAE;YACtG,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;YAClB,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjB,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YAC5B,CAAC;YAED,OAAO,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAChG,CAAC,CAAC;QACJ,CAAC,CAAC,QAAQ,EACZ,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE;QAC3B,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;QACjB,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAC9B,IAAI,CAAC,KAAK;gBAAE,OAAO,MAAM,CAAC,IAAI,CAAA;YAC9B,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAC/B,CAAC;QAED,MAAM,SAAS,GAAG,YAAY,CAAC,mBAAmB,EAAE,CAAA;QACpD,OAAO,IAAI,CACT,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAClC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACxB,IAAI,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAClC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;oBAC9B,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;oBACnE,OAAO,IAAI,CACT,OAAO,EAAE,YAAY;wBACnB,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC;wBAC9F,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EACxB,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CACzB,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,CACpF,CACF,CAAA;gBACH,CAAC,CAAC;gBACJ,CAAC,CAAC,IAAI,CACF,MAAM,EACN,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;oBAClB,IAAI,OAAO,EAAE,YAAY,KAAK,SAAS,EAAE,CAAC;wBACxC,MAAM,OAAO,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;wBAC3C,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;wBACrF,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,CAAA;oBAC1D,CAAC;oBAED,MAAM,SAAS,GAAc,EAAE,CAAA;oBAC/B,SAAS,CAAC,WAAW,EAAE,CAAA;oBACvB,OAAO,IAAI,CACT,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE;wBAC5B,IAAI,OAAO,EAAE,SAAS,EAAE,CAAC;4BACvB,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;gCAC7C,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;4BACxB,CAAC;wBACH,CAAC;wBACD,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,YAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAA;oBAC1D,CAAC,CAAC,EACF,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC,EACxD,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;wBACzB,SAAS,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;wBACtE,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,CAAA;oBAC1D,CAAC,CAAC,CACH,CAAA;gBACH,CAAC,CAAC,EACF,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAC9C,CAAA;YAEL,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACX,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;gBACzC,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE;oBACrC,IAAI,EAAE,cAAc;oBACpB,OAAO;oBACP,MAAM;oBACN,OAAO;oBACP,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE;iBACzB,CAAC,CAAA;YACJ,CAAC;YAED,OAAO,MAAM,CAAA;QACf,CAAC,CAAC,EACF,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CACtC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAC1E,EACD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YACrB,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC5B,OAAO,MAAM,CAAC,IAAI,CAAA;YACpB,CAAC;YACD,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBACpD,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;oBAChB,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;oBACpE,SAAS,CAAC,WAAW,EAAE,CAAA;oBACvB,OAAO,IAAI,CACT,OAAO,EAAE,WAAW;wBAClB,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC;wBAC9F,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EACzB,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CACzB,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,OAAc,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,CACzF,EACD,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAC/F,CAAA;gBACH,CAAC;gBACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;aAClF,CAAC,CAAA;QACJ,CAAC,CAAC,EACF,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EACvD,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAClE,CAAA;IACH,CAAC,CAAC,EACF,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CACrB,CAAA;AACH,CAAC,CAAC,CAAA;AAEJ,gBAAgB;AAChB,MAAM,CAAC,MAAM,KAAK,GAAG,CACnB,OAAwE,EACxE,OAA8C,EACoB,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;AAElH,gBAAgB;AAChB,MAAM,CAAC,MAAM,cAAc,GAAG,CAM5B,MAA8B,EAC9B,QAAkB,EAKlB,EAAE,CACF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;IACrB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACpC,IAAI,OAAO,GAAG,OAAO,CAAC,KAAK,EAA0B,CAAA;IACrD,MAAM,YAAY,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,CAAqC,CAAA;IAErF,OAAO,KAAK,CAAC,CAAC,CAAC,CACb,IAAI,CACF,CAAC,OAAU,EAAE,EAAE;QACb,MAAM,MAAM,GAAI,QAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAA;QACvD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAC/D,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;gBACf,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;YACrC,CAAC,CAAC,CACH,CAAA;QACH,CAAC;aAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACnC,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACxC,CAAC;QACD,OAAO,MAAM,CAAC,cAAc,CAAC,MAAa,EAAE,OAAO,CAAC,CAAA;IACtD,CAAC,EACD;QACE,MAAM,CAAC,OAAO;YACZ,OAAO,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;QACxG,CAAC;QACD,WAAW,CAAC,OAAO,EAAE,OAAO;YAC1B,OAAO,MAAM,CAAC,QAAQ,CACpB,YAAY,CAAC,gBAAgB,CAAC,OAAc,EAAE,OAAO,CAAC,EACtD,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CACxD,CAAA;QACH,CAAC;QACD,YAAY,CAAC,OAAO,EAAE,OAAO;YAC3B,OAAO,MAAM,CAAC,aAAa,CACzB,YAAY,CAAC,gBAAgB,CAAC,OAAc,EAAE,OAAO,CAAC,EACtD,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CACxD,CAAA;QACH,CAAC;KACF,CACF,CACF,CAAA;AACH,CAAC,CAAQ,CAAA;AAEX,gBAAgB;AAChB,MAAM,CAAC,MAAM,eAAe,GAAG,CAM7B,MAA8B,EAC9B,QAAkB,EAKlB,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAA"}
@@ -1,26 +0,0 @@
1
- /**
2
- * @since 1.0.0
3
- */
4
- import type * as Layer from 'effect/Layer'
5
-
6
- import type * as Worker from '../worker-tmp/Worker.js'
7
- import * as internal from './internal/worker.js'
8
- /**
9
- * @since 1.0.0
10
- * @category layers
11
- */
12
- export const layerManager: Layer.Layer<Worker.WorkerManager> = internal.layerManager
13
-
14
- /**
15
- * @since 1.0.0
16
- * @category layers
17
- */
18
- export const layerWorker: Layer.Layer<Worker.PlatformWorker> = internal.layerWorker
19
-
20
- /**
21
- * @since 1.0.0
22
- * @category layers
23
- */
24
- export const layer: (
25
- spawn: (id: number) => Worker | SharedWorker | MessagePort,
26
- ) => Layer.Layer<Worker.WorkerManager | Worker.Spawner, never, never> = internal.layer
@@ -1,14 +0,0 @@
1
- /**
2
- * @since 1.0.0
3
- */
4
- import type * as Layer from 'effect/Layer'
5
-
6
- import type * as Runner from '../worker-tmp/WorkerRunner.js'
7
- import * as internal from './internal/workerRunner.js'
8
-
9
- /**
10
- * @since 1.0.0
11
- * @category layers
12
- */
13
- export const layer: Layer.Layer<Runner.PlatformRunner> = internal.layer
14
- export { layerMessagePort } from './port-platform-runner.js'
@@ -1,71 +0,0 @@
1
- /* eslint-disable prefer-arrow/prefer-arrow-functions */
2
- import * as Deferred from 'effect/Deferred'
3
- import * as Effect from 'effect/Effect'
4
- import * as Layer from 'effect/Layer'
5
- import * as Queue from 'effect/Queue'
6
-
7
- import * as Worker from '../../worker-tmp/Worker.js'
8
- import { WorkerError } from '../../worker-tmp/WorkerError.js'
9
-
10
- const platformWorkerImpl = Worker.PlatformWorker.of({
11
- [Worker.PlatformWorkerTypeId]: Worker.PlatformWorkerTypeId,
12
- spawn<I, O>(worker_: unknown) {
13
- return Effect.gen(function* (_) {
14
- const worker = worker_ as globalThis.SharedWorker | globalThis.Worker | MessagePort
15
- let port: globalThis.Worker | MessagePort
16
- if ('port' in worker) {
17
- port = worker.port
18
- } else {
19
- port = worker
20
- }
21
-
22
- yield* _(Effect.addFinalizer(() => Effect.sync(() => port.postMessage([1]))))
23
-
24
- const queue = yield* _(Queue.unbounded<Worker.BackingWorker.Message<O>>())
25
- const latch = yield* Deferred.make<void>()
26
-
27
- const fiber = yield* _(
28
- Effect.async<never, WorkerError, never>((resume) => {
29
- function onMessage(event: MessageEvent) {
30
- queue.unsafeOffer((event as MessageEvent).data)
31
- }
32
- function onError(event: ErrorEvent) {
33
- resume(new WorkerError({ reason: 'unknown', error: event.error ?? event.message }))
34
- }
35
- port.addEventListener('message', onMessage as any)
36
- port.addEventListener('error', onError as any)
37
- Deferred.unsafeDone(latch, Effect.void)
38
- return Effect.sync(() => {
39
- port.removeEventListener('message', onMessage as any)
40
- port.removeEventListener('error', onError as any)
41
- })
42
- }),
43
- Effect.interruptible,
44
- Effect.forkScoped,
45
- )
46
- yield* Deferred.await(latch)
47
-
48
- if ('start' in port) {
49
- port.start()
50
- }
51
-
52
- const send = (message: I, transfers?: ReadonlyArray<unknown>) =>
53
- Effect.try({
54
- try: () => port.postMessage([0, message], transfers as any),
55
- catch: (error) => new WorkerError({ reason: 'send', error }),
56
- })
57
-
58
- return { fiber, queue, send }
59
- })
60
- },
61
- })
62
-
63
- /** @internal */
64
- export const layerWorker = Layer.succeed(Worker.PlatformWorker, platformWorkerImpl)
65
-
66
- /** @internal */
67
- export const layerManager = Layer.provide(Worker.layerManager, layerWorker)
68
-
69
- /** @internal */
70
- export const layer = (spawn: (id: number) => globalThis.Worker | globalThis.SharedWorker | MessagePort) =>
71
- Layer.merge(layerManager, Worker.layerSpawner(spawn))
@@ -1,119 +0,0 @@
1
- /// <reference lib="webworker" />
2
- /* eslint-disable prefer-arrow/prefer-arrow-functions */
3
- import * as Cause from 'effect/Cause'
4
- import * as Effect from 'effect/Effect'
5
- import * as FiberSet from 'effect/FiberSet'
6
- import { globalValue } from 'effect/GlobalValue'
7
- import * as Layer from 'effect/Layer'
8
- import * as Queue from 'effect/Queue'
9
- import * as Schedule from 'effect/Schedule'
10
-
11
- import { WorkerError } from '../../worker-tmp/WorkerError.js'
12
- import * as WorkerRunner from '../../worker-tmp/WorkerRunner.js'
13
-
14
- const cachedPorts = globalValue('@effect/platform-browser/Worker/cachedPorts', () => new Set<MessagePort>())
15
- function globalHandleConnect(event: MessageEvent) {
16
- cachedPorts.add((event as MessageEvent).ports[0]!)
17
- }
18
- if (typeof self !== 'undefined' && 'onconnect' in self) {
19
- // @ts-expect-error TODO
20
- self.addEventListener('connect', globalHandleConnect)
21
- }
22
-
23
- const platformRunnerImpl = WorkerRunner.PlatformRunner.of({
24
- [WorkerRunner.PlatformRunnerTypeId]: WorkerRunner.PlatformRunnerTypeId,
25
- start<I, O>(shutdown: Effect.Effect<void>) {
26
- return Effect.gen(function* () {
27
- let currentPortId = 0
28
-
29
- yield* Effect.addFinalizer(() => Effect.sync(() => self.close()))
30
-
31
- const queue = yield* Queue.unbounded<readonly [portId: number, message: I]>()
32
- const runFork = yield* FiberSet.makeRuntime<never>()
33
- const ports = new Map<number, MessagePort>()
34
- const send = (portId: number, message: O, transfer?: ReadonlyArray<unknown>) =>
35
- Effect.sync(() => {
36
- ports.get(portId)?.postMessage([1, message], {
37
- transfer: transfer as any,
38
- })
39
- })
40
-
41
- function handlePort(port: MessagePort, sharedWorker: boolean) {
42
- const portId = currentPortId++
43
- ports.set(portId, port)
44
-
45
- Effect.async<never, WorkerError, never>((resume) => {
46
- function onMessage(event: MessageEvent) {
47
- const message = (event as MessageEvent).data as WorkerRunner.BackingRunner.Message<I>
48
- if (message[0] === 0) {
49
- queue.unsafeOffer([portId, message[1]])
50
- } else if (sharedWorker && ports.size > 1) {
51
- resume(Effect.interrupt)
52
- } else {
53
- Effect.runFork(shutdown)
54
- }
55
- }
56
- function onMessageError(error: ErrorEvent) {
57
- resume(new WorkerError({ reason: 'decode', error: error.error ?? error.message }))
58
- }
59
- function onError(error: ErrorEvent) {
60
- resume(new WorkerError({ reason: 'unknown', error: error.error ?? error.message }))
61
- }
62
- port.addEventListener('message', onMessage as any)
63
- port.addEventListener('messageerror', onMessageError as any)
64
- port.addEventListener('error', onError as any)
65
-
66
- // ready
67
- if ('start' in port) {
68
- port.start()
69
- }
70
- port.postMessage([0])
71
-
72
- return Effect.sync(() => {
73
- port.removeEventListener('message', onMessage as any)
74
- port.removeEventListener('messageerror', onMessageError as any)
75
- port.removeEventListener('error', onError as any)
76
- })
77
- }).pipe(
78
- Effect.tapErrorCause((cause) => (Cause.isInterruptedOnly(cause) ? Effect.void : Effect.logDebug(cause))),
79
- Effect.retry(Schedule.forever),
80
- Effect.annotateLogs({
81
- package: '@effect/platform-browser',
82
- module: 'WorkerRunner',
83
- }),
84
- Effect.ensuring(
85
- Effect.sync(() => {
86
- ports.delete(portId)
87
- }),
88
- ),
89
- Effect.interruptible,
90
- runFork,
91
- )
92
- }
93
-
94
- if ('onconnect' in self) {
95
- // @ts-expect-error TODO
96
- self.addEventListener('connect', (event: MessageEvent) => {
97
- const port = (event as MessageEvent).ports[0]
98
- handlePort(port!, true)
99
- })
100
- yield* Effect.addFinalizer(() =>
101
- Effect.sync(() => {
102
- ;(self as any).addEventListener('connect', globalHandleConnect)
103
- }),
104
- )
105
- for (const port of cachedPorts) {
106
- handlePort(port, true)
107
- }
108
- cachedPorts.clear()
109
- } else {
110
- handlePort(self as any, false)
111
- }
112
-
113
- return { queue, send }
114
- })
115
- },
116
- })
117
-
118
- /** @internal */
119
- export const layer = Layer.succeed(WorkerRunner.PlatformRunner, platformRunnerImpl)
@@ -1,74 +0,0 @@
1
- import { Deferred } from 'effect'
2
- import * as Cause from 'effect/Cause'
3
- import * as Effect from 'effect/Effect'
4
- import * as Layer from 'effect/Layer'
5
- import * as Queue from 'effect/Queue'
6
- import * as Schedule from 'effect/Schedule'
7
-
8
- import { WorkerError } from '../worker-tmp/WorkerError.js'
9
- import * as Runner from '../worker-tmp/WorkerRunner.js'
10
-
11
- const platformRunnerImpl = (port: MessagePort) =>
12
- Runner.PlatformRunner.of({
13
- [Runner.PlatformRunnerTypeId]: Runner.PlatformRunnerTypeId,
14
- start: <I, O>(shutdown: Effect.Effect<void>) => {
15
- return Effect.gen(function* () {
16
- const queue = yield* Queue.unbounded<readonly [portId: number, message: I]>()
17
-
18
- const latch = yield* Deferred.make<void>()
19
-
20
- yield* Effect.async<never, WorkerError>((resume) => {
21
- const onMessage = (msg: MessageEvent<Runner.BackingRunner.Message<I>>) => {
22
- const message = msg.data
23
- if (message[0] === 0) {
24
- queue.unsafeOffer([0, message[1]])
25
- } else {
26
- Effect.runFork(shutdown)
27
- }
28
- }
29
-
30
- const onError = (error: any) => {
31
- resume(new WorkerError({ reason: 'decode', error }))
32
- }
33
-
34
- port.addEventListener('message', onMessage)
35
- port.addEventListener('messageerror', onError)
36
- port.addEventListener('error', onError)
37
-
38
- Deferred.unsafeDone(latch, Effect.void)
39
-
40
- return Effect.sync(() => {
41
- port.removeEventListener('message', onMessage as any)
42
- port.removeEventListener('error', onError as any)
43
- })
44
- }).pipe(
45
- Effect.tapErrorCause((cause) => (Cause.isInterruptedOnly(cause) ? Effect.void : Effect.logDebug(cause))),
46
- Effect.retry(Schedule.forever),
47
- Effect.annotateLogs({
48
- package: '@livestore/utils/effect',
49
- module: 'PortPlatformRunner',
50
- }),
51
- Effect.interruptible,
52
- Effect.forkScoped,
53
- )
54
-
55
- yield* Deferred.await(latch)
56
-
57
- port.start()
58
-
59
- const send = (_portId: number, message: O, transfers?: ReadonlyArray<unknown>) =>
60
- Effect.try({
61
- try: () => port.postMessage([1, message], transfers as any),
62
- catch: (error) => new WorkerError({ reason: 'send', error }),
63
- }).pipe(Effect.catchTag('WorkerError', Effect.orDie))
64
-
65
- // ready
66
- port.postMessage([0])
67
-
68
- return { queue, send }
69
- })
70
- },
71
- })
72
-
73
- /** @internal */
74
- export const layerMessagePort = (port: MessagePort) => Layer.succeed(Runner.PlatformRunner, platformRunnerImpl(port))