@livestore/adapter-web 0.3.0-dev.15 → 0.3.0-dev.17

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 (67) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/common/connection.d.ts.map +1 -1
  3. package/dist/devtools-bridge/background-browser-channel.d.ts.map +1 -1
  4. package/dist/devtools-bridge/bridge-shared.d.ts.map +1 -1
  5. package/dist/in-memory/index.d.ts.map +1 -1
  6. package/dist/opfs-utils.d.ts.map +1 -1
  7. package/dist/web-worker/client-session/client-session-devtools.d.ts.map +1 -1
  8. package/dist/web-worker/client-session/index.d.ts.map +1 -1
  9. package/dist/web-worker/client-session/index.js +13 -27
  10. package/dist/web-worker/client-session/index.js.map +1 -1
  11. package/dist/web-worker/common/persisted-sqlite.d.ts.map +1 -1
  12. package/dist/web-worker/common/shutdown-channel.d.ts +1 -5
  13. package/dist/web-worker/common/shutdown-channel.d.ts.map +1 -1
  14. package/dist/web-worker/common/worker-disconnect-channel.d.ts +12 -0
  15. package/dist/web-worker/common/worker-disconnect-channel.d.ts.map +1 -0
  16. package/dist/web-worker/common/worker-disconnect-channel.js +9 -0
  17. package/dist/web-worker/common/worker-disconnect-channel.js.map +1 -0
  18. package/dist/web-worker/common/worker-schema.d.ts +2 -2
  19. package/dist/web-worker/common/worker-schema.d.ts.map +1 -1
  20. package/dist/web-worker/common/worker-schema.js +2 -2
  21. package/dist/web-worker/leader-worker/make-leader-worker.d.ts +1 -1
  22. package/dist/web-worker/leader-worker/make-leader-worker.d.ts.map +1 -1
  23. package/dist/web-worker/leader-worker/make-leader-worker.js +4 -2
  24. package/dist/web-worker/leader-worker/make-leader-worker.js.map +1 -1
  25. package/dist/web-worker/shared-worker/make-shared-worker.d.ts.map +1 -1
  26. package/dist/web-worker/shared-worker/make-shared-worker.js +5 -3
  27. package/dist/web-worker/shared-worker/make-shared-worker.js.map +1 -1
  28. package/package.json +6 -6
  29. package/src/web-worker/client-session/index.ts +20 -34
  30. package/src/web-worker/common/worker-disconnect-channel.ts +10 -0
  31. package/src/web-worker/common/worker-schema.ts +2 -2
  32. package/src/web-worker/leader-worker/make-leader-worker.ts +4 -2
  33. package/src/web-worker/shared-worker/make-shared-worker.ts +2 -2
  34. package/dist/src/main.d.ts +0 -2
  35. package/dist/src/main.d.ts.map +0 -1
  36. package/dist/src/main.js +0 -25
  37. package/dist/src/main.js.map +0 -1
  38. package/dist/src/worker-schema.d.ts +0 -19
  39. package/dist/src/worker-schema.d.ts.map +0 -1
  40. package/dist/src/worker-schema.js +0 -38
  41. package/dist/src/worker-schema.js.map +0 -1
  42. package/dist/src/worker.d.ts +0 -2
  43. package/dist/src/worker.d.ts.map +0 -1
  44. package/dist/src/worker.js +0 -24
  45. package/dist/src/worker.js.map +0 -1
  46. package/dist/web-worker/client-session/trim-batch.d.ts +0 -4
  47. package/dist/web-worker/client-session/trim-batch.d.ts.map +0 -1
  48. package/dist/web-worker/client-session/trim-batch.js +0 -13
  49. package/dist/web-worker/client-session/trim-batch.js.map +0 -1
  50. package/dist/web-worker/client-session/trim-batch.test.d.ts +0 -2
  51. package/dist/web-worker/client-session/trim-batch.test.d.ts.map +0 -1
  52. package/dist/web-worker/client-session/trim-batch.test.js +0 -38
  53. package/dist/web-worker/client-session/trim-batch.test.js.map +0 -1
  54. package/dist/worker-repro/main.d.ts +0 -3
  55. package/dist/worker-repro/main.d.ts.map +0 -1
  56. package/dist/worker-repro/main.js +0 -23
  57. package/dist/worker-repro/main.js.map +0 -1
  58. package/dist/worker-repro/worker-schema.d.ts +0 -37
  59. package/dist/worker-repro/worker-schema.d.ts.map +0 -1
  60. package/dist/worker-repro/worker-schema.js +0 -46
  61. package/dist/worker-repro/worker-schema.js.map +0 -1
  62. package/dist/worker-repro/worker.d.ts +0 -2
  63. package/dist/worker-repro/worker.d.ts.map +0 -1
  64. package/dist/worker-repro/worker.js +0 -22
  65. package/dist/worker-repro/worker.js.map +0 -1
  66. package/src/web-worker/client-session/trim-batch.test.ts +0 -48
  67. package/src/web-worker/client-session/trim-batch.ts +0 -15
@@ -3,8 +3,6 @@ import { Devtools, IntentionalShutdownCause, UnexpectedError } from '@livestore/
3
3
  // TODO bring back - this currently doesn't work due to https://github.com/vitejs/vite/issues/8427
4
4
  // NOTE We're using a non-relative import here for Vite to properly resolve the import during app builds
5
5
  // import LiveStoreSharedWorker from '@livestore/adapter-web/internal-shared-worker?sharedworker'
6
- import { ShutdownChannel } from '@livestore/common/leader-thread'
7
- import type { MutationEvent } from '@livestore/common/schema'
8
6
  import { EventId, SESSION_CHANGESET_META_TABLE } from '@livestore/common/schema'
9
7
  import { makeWebDevtoolsChannel } from '@livestore/devtools-web-common/web-channel'
10
8
  import { sqliteDbFactory } from '@livestore/sqlite-wasm/browser'
@@ -12,7 +10,6 @@ import { loadSqlite3Wasm } from '@livestore/sqlite-wasm/load-wasm'
12
10
  import { isDevEnv, shouldNeverHappen, tryAsFunctionAndNew } from '@livestore/utils'
13
11
  import {
14
12
  BrowserWorker,
15
- BucketQueue,
16
13
  Cause,
17
14
  Deferred,
18
15
  Effect,
@@ -32,9 +29,9 @@ import { nanoid } from '@livestore/utils/nanoid'
32
29
  import * as OpfsUtils from '../../opfs-utils.js'
33
30
  import { readPersistedAppDbFromClientSession, resetPersistedDataFromClientSession } from '../common/persisted-sqlite.js'
34
31
  import { makeShutdownChannel } from '../common/shutdown-channel.js'
32
+ import { DedicatedWorkerDisconnectBroadcast, makeWorkerDisconnectChannel } from '../common/worker-disconnect-channel.js'
35
33
  import * as WorkerSchema from '../common/worker-schema.js'
36
34
  import { bootDevtools } from './client-session-devtools.js'
37
- import { trimPushBatch } from './trim-batch.js'
38
35
 
39
36
  // NOTE we're starting to initialize the sqlite wasm binary here to speed things up
40
37
  const sqlite3Promise = loadSqlite3Wasm()
@@ -111,11 +108,11 @@ export const makeAdapter =
111
108
  const sessionId = getPersistedId(`sessionId:${storeId}`, 'session')
112
109
 
113
110
  const shutdownChannel = yield* makeShutdownChannel(storeId)
111
+ const workerDisconnectChannel = yield* makeWorkerDisconnectChannel(storeId)
114
112
 
115
113
  yield* shutdownChannel.listen.pipe(
116
114
  Stream.flatten(),
117
- Stream.filter(Schema.is(IntentionalShutdownCause)),
118
- Stream.tap((msg) => shutdown(Cause.fail(msg))),
115
+ Stream.tap((error) => Effect.sync(() => shutdown(Cause.fail(error)))),
119
116
  Stream.runDrain,
120
117
  Effect.interruptible,
121
118
  Effect.tapCauseLogPretty,
@@ -144,7 +141,7 @@ export const makeAdapter =
144
141
  Effect.provide(BrowserWorker.layer(() => sharedWebWorker)),
145
142
  Effect.tapCauseLogPretty,
146
143
  UnexpectedError.mapToUnexpectedError,
147
- Effect.tapErrorCause(shutdown),
144
+ Effect.tapErrorCause((cause) => Effect.sync(() => shutdown(cause))),
148
145
  Effect.withSpan('@livestore/adapter-web:client-session:setupSharedWorker'),
149
146
  Effect.forkScoped,
150
147
  )
@@ -187,18 +184,19 @@ export const makeAdapter =
187
184
  }).pipe(
188
185
  Effect.provide(BrowserWorker.layer(() => worker)),
189
186
  UnexpectedError.mapToUnexpectedError,
190
- Effect.tapErrorCause(shutdown),
187
+ Effect.tapErrorCause((cause) => Effect.sync(() => shutdown(cause))),
191
188
  Effect.withSpan('@livestore/adapter-web:client-session:setupDedicatedWorker'),
192
189
  Effect.tapCauseLogPretty,
193
190
  Effect.forkScoped,
194
191
  )
195
192
 
196
- yield* shutdownChannel.send(ShutdownChannel.DedicatedWorkerDisconnectBroadcast.make({}))
193
+ yield* workerDisconnectChannel.send(DedicatedWorkerDisconnectBroadcast.make({}))
197
194
 
198
195
  const sharedWorker = yield* Fiber.join(sharedWorkerFiber)
199
- yield* sharedWorker
200
- .executeEffect(new WorkerSchema.SharedWorker.UpdateMessagePort({ port: mc.port2 }))
201
- .pipe(UnexpectedError.mapToUnexpectedError, Effect.tapErrorCause(shutdown))
196
+ yield* sharedWorker.executeEffect(new WorkerSchema.SharedWorker.UpdateMessagePort({ port: mc.port2 })).pipe(
197
+ UnexpectedError.mapToUnexpectedError,
198
+ Effect.tapErrorCause((cause) => Effect.sync(() => shutdown(cause))),
199
+ )
202
200
 
203
201
  yield* Deferred.succeed(waitForSharedWorkerInitialized, undefined)
204
202
 
@@ -304,7 +302,7 @@ export const makeAdapter =
304
302
  Stream.tap((_) => SubscriptionRef.set(networkStatus, _)),
305
303
  Stream.runDrain,
306
304
  Effect.forever, // NOTE Whenever the leader changes, we need to re-start the stream
307
- Effect.tapErrorCause(shutdown),
305
+ Effect.tapErrorCause((cause) => Effect.sync(() => shutdown(cause))),
308
306
  Effect.interruptible,
309
307
  Effect.tapCauseLogPretty,
310
308
  Effect.forkScoped,
@@ -313,7 +311,9 @@ export const makeAdapter =
313
311
  const bootStatusFiber = yield* runInWorkerStream(new WorkerSchema.LeaderWorkerInner.BootStatusStream()).pipe(
314
312
  Stream.tap((_) => Queue.offer(bootStatusQueue, _)),
315
313
  Stream.runDrain,
316
- Effect.tapErrorCause((cause) => (Cause.isInterruptedOnly(cause) ? Effect.void : shutdown(cause))),
314
+ Effect.tapErrorCause((cause) =>
315
+ Cause.isInterruptedOnly(cause) ? Effect.void : Effect.sync(() => shutdown(cause)),
316
+ ),
317
317
  Effect.interruptible,
318
318
  Effect.tapCauseLogPretty,
319
319
  Effect.forkScoped,
@@ -388,21 +388,6 @@ export const makeAdapter =
388
388
  }).pipe(Effect.tapCauseLogPretty, Effect.orDie),
389
389
  )
390
390
 
391
- const pushQueue = yield* BucketQueue.make<MutationEvent.AnyEncoded>()
392
-
393
- yield* Effect.gen(function* () {
394
- const batch = yield* BucketQueue.takeBetween(pushQueue, 1, 100)
395
- // We need to trim "old batches" which can happen during client session rebasing
396
- const trimmedBatch = trimPushBatch(batch)
397
- yield* runInWorker(new WorkerSchema.LeaderWorkerInner.PushToLeader({ batch: trimmedBatch })).pipe(
398
- Effect.withSpan('@livestore/adapter-web:client-session:pushToLeader', {
399
- attributes: { batchSize: batch.length },
400
- }),
401
- // We can ignore the error here because the ClientSessionSyncProcessor will retry after rebasing
402
- Effect.ignoreLogged,
403
- )
404
- }).pipe(Effect.forever, Effect.interruptible, Effect.tapCauseLogPretty, Effect.forkScoped)
405
-
406
391
  const devtools: ClientSession['devtools'] = devtoolsEnabled
407
392
  ? { enabled: true, pullLatch: yield* Effect.makeLatch(true), pushLatch: yield* Effect.makeLatch(true) }
408
393
  : { enabled: false }
@@ -425,11 +410,12 @@ export const makeAdapter =
425
410
  pull: runInWorkerStream(new WorkerSchema.LeaderWorkerInner.PullStream({ cursor: initialLeaderHead })).pipe(
426
411
  Stream.orDie,
427
412
  ),
428
-
429
- // NOTE instead of sending the worker message right away, we're batching the events in order to
430
- // - maintain a consistent order of events
431
- // - improve efficiency by reducing the number of messages
432
- push: (batch) => BucketQueue.offerAll(pushQueue, batch),
413
+ push: (batch) =>
414
+ runInWorker(new WorkerSchema.LeaderWorkerInner.PushToLeader({ batch })).pipe(
415
+ Effect.withSpan('@livestore/adapter-web:client-session:pushToLeader', {
416
+ attributes: { batchSize: batch.length },
417
+ }),
418
+ ),
433
419
  },
434
420
 
435
421
  initialState: { leaderHead: initialLeaderHead, migrationsReport },
@@ -0,0 +1,10 @@
1
+ import { Schema, WebChannel } from '@livestore/utils/effect'
2
+
3
+ export class DedicatedWorkerDisconnectBroadcast extends Schema.TaggedStruct('DedicatedWorkerDisconnectBroadcast', {}) {}
4
+
5
+ /** Used across workers for leader election purposes */
6
+ export const makeWorkerDisconnectChannel = (storeId: string) =>
7
+ WebChannel.broadcastChannel({
8
+ channelName: `livestore.worker-disconnect.${storeId}`,
9
+ schema: DedicatedWorkerDisconnectBroadcast,
10
+ })
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  BootStatus,
3
3
  Devtools,
4
- InvalidPushError,
4
+ LeaderAheadError,
5
5
  MigrationsReport,
6
6
  NetworkStatus,
7
7
  SyncState,
@@ -78,7 +78,7 @@ export namespace LeaderWorkerInner {
78
78
  batch: Schema.Array(MutationEvent.AnyEncoded),
79
79
  },
80
80
  success: Schema.Void,
81
- failure: Schema.Union(UnexpectedError, InvalidPushError),
81
+ failure: Schema.Union(UnexpectedError, LeaderAheadError),
82
82
  }) {}
83
83
 
84
84
  export class PullStream extends Schema.TaggedRequest<PullStream>()('PullStream', {
@@ -48,6 +48,8 @@ if (isDevEnv()) {
48
48
  globalThis.__debugLiveStoreUtils = {
49
49
  opfs: OpfsUtils,
50
50
  blobUrl: (buffer: Uint8Array) => URL.createObjectURL(new Blob([buffer], { type: 'application/octet-stream' })),
51
+ runSync: (effect: Effect.Effect<any, any, never>) => Effect.runSync(effect),
52
+ runFork: (effect: Effect.Effect<any, any, never>) => Effect.runFork(effect),
51
53
  }
52
54
  }
53
55
 
@@ -64,7 +66,7 @@ export const makeWorkerEffect = (options: WorkerOptions) => {
64
66
 
65
67
  return makeWorkerRunnerOuter(options).pipe(
66
68
  Layer.provide(BrowserWorkerRunner.layer),
67
- Layer.launch,
69
+ WorkerRunner.launch,
68
70
  Effect.scoped,
69
71
  Effect.tapCauseLogPretty,
70
72
  Effect.annotateLogs({ thread: self.name }),
@@ -91,7 +93,7 @@ const makeWorkerRunnerOuter = (
91
93
  Effect.gen(function* () {
92
94
  yield* makeWorkerRunnerInner(workerOptions).pipe(
93
95
  Layer.provide(BrowserWorkerRunner.layerMessagePort(incomingRequestsPort)),
94
- Layer.launch,
96
+ WorkerRunner.launch,
95
97
  Effect.scoped,
96
98
  Effect.withSpan('@livestore/adapter-web:worker:wrapper:InitialMessage:innerFiber'),
97
99
  Effect.tapCauseLogPretty,
@@ -1,4 +1,4 @@
1
- import { IntentionalShutdownCause, UnexpectedError } from '@livestore/common'
1
+ import { UnexpectedError } from '@livestore/common'
2
2
  import { connectViaWorker } from '@livestore/devtools-web-common/web-channel'
3
3
  import * as WebMeshWorker from '@livestore/devtools-web-common/worker'
4
4
  import { isDevEnv, isNotUndefined, LS_DEV } from '@livestore/utils'
@@ -233,7 +233,6 @@ const makeWorkerRunner = Effect.gen(function* () {
233
233
 
234
234
  yield* shutdownChannel.listen.pipe(
235
235
  Stream.flatten(),
236
- Stream.filter(Schema.is(IntentionalShutdownCause)),
237
236
  Stream.tap(() => reset),
238
237
  Stream.runDrain,
239
238
  )
@@ -282,6 +281,7 @@ const makeWorkerRunner = Effect.gen(function* () {
282
281
  export const makeWorker = () => {
283
282
  makeWorkerRunner.pipe(
284
283
  Layer.provide(BrowserWorkerRunner.layer),
284
+ // WorkerRunner.launch,
285
285
  Layer.launch,
286
286
  Effect.scoped,
287
287
  Effect.tapCauseLogPretty,
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=main.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/src/main.ts"],"names":[],"mappings":""}
package/dist/src/main.js DELETED
@@ -1,25 +0,0 @@
1
- import { BrowserRuntime, BrowserWorker } from '@effect/platform-browser';
2
- import { Worker } from '@effect/platform';
3
- import * as WorkerSchema from './worker-schema.js';
4
- import { Effect } from 'effect';
5
- const main = Effect.gen(function* () {
6
- const mc = new MessageChannel();
7
- console.log('booting outer');
8
- const outer = yield* Worker.makeSerialized({
9
- initialMessage: () => new WorkerSchema.Outer.InitialMessage({
10
- port: mc.port1,
11
- }),
12
- }).pipe(Effect.provide(BrowserWorker.layer(() => new globalThis.Worker(new URL('./worker.ts', import.meta.url), { type: 'module' }))));
13
- console.log('booting inner');
14
- const inner = yield* Worker.makeSerialized({
15
- initialMessage: () => new WorkerSchema.Inner.InitialMessage(),
16
- }).pipe(Effect.provide(BrowserWorker.layer(() => mc.port2)));
17
- // const res = yield* inner.executeEffect(new WorkerSchema.Inner.Multiply({
18
- // a: 4,
19
- // b: 2,
20
- // }))
21
- // console.log('should be 8', res)
22
- yield* Effect.never;
23
- }).pipe(Effect.timeout(2000));
24
- main.pipe(Effect.scoped, BrowserRuntime.runMain);
25
- //# sourceMappingURL=main.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/src/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxE,OAAO,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAA;AACvC,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAChC,MAAM,EAAE,GAAG,IAAI,cAAc,EAAE,CAAA;IAE/B,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;IAE5B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CAAmD;QAC5F,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,cAAc,CAAC;YAC1D,IAAI,EAAE,EAAE,CAAC,KAAK;SACf,CAAC;KACF,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IAEtI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;IAE5B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CAA4C;QACrF,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,cAAc,EAAE;KAC7D,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAE5D,2EAA2E;IAC3E,SAAS;IACT,SAAS;IACT,MAAM;IAEN,kCAAkC;IAElC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAA;AACpB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;AAE7B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,CAAA"}
@@ -1,19 +0,0 @@
1
- export declare namespace Outer {
2
- const InitialMessage_base: any;
3
- export class InitialMessage extends InitialMessage_base {
4
- }
5
- export {};
6
- }
7
- export declare namespace Inner {
8
- const InitialMessage_base_1: any;
9
- export class InitialMessage extends InitialMessage_base_1 {
10
- }
11
- const Multiply_base: any;
12
- export class Multiply extends Multiply_base {
13
- }
14
- const Request_base: any;
15
- export class Request extends Request_base {
16
- }
17
- export {};
18
- }
19
- //# sourceMappingURL=worker-schema.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker-schema.d.ts","sourceRoot":"","sources":["../../src/src/worker-schema.ts"],"names":[],"mappings":"AAGA,yBAAiB,KAAK,CAAC;;IACrB,MAAM,OAAO,cAAe,SAAQ,mBAMnC;KAAG;;CACL;AAED,yBAAiB,KAAK,CAAC;;IACtB,MAAM,OAAO,cAAe,SAAQ,qBAIlC;KAAG;;IAEL,MAAM,OAAO,QAAS,SAAQ,aAO5B;KAAG;;IAEL,MAAM,OAAO,OAAQ,SAAQ,YAAsC;KAAG;;CACtE"}
@@ -1,38 +0,0 @@
1
- import { Transferable } from "@effect/platform";
2
- import { Schema } from "effect";
3
- export var Outer;
4
- (function (Outer) {
5
- class InitialMessage extends Schema.TaggedRequest()('InitialMessage', {
6
- payload: {
7
- port: Transferable.MessagePort,
8
- },
9
- success: Schema.Void,
10
- failure: Schema.Never,
11
- }) {
12
- }
13
- Outer.InitialMessage = InitialMessage;
14
- })(Outer || (Outer = {}));
15
- export var Inner;
16
- (function (Inner) {
17
- class InitialMessage extends Schema.TaggedRequest()('InitialMessage', {
18
- payload: {},
19
- success: Schema.Void,
20
- failure: Schema.Never,
21
- }) {
22
- }
23
- Inner.InitialMessage = InitialMessage;
24
- class Multiply extends Schema.TaggedRequest()('Multiply', {
25
- payload: {
26
- a: Schema.Number,
27
- b: Schema.Number,
28
- },
29
- success: Schema.Number,
30
- failure: Schema.Never,
31
- }) {
32
- }
33
- Inner.Multiply = Multiply;
34
- class Request extends Schema.Union(InitialMessage, Multiply) {
35
- }
36
- Inner.Request = Request;
37
- })(Inner || (Inner = {}));
38
- //# sourceMappingURL=worker-schema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker-schema.js","sourceRoot":"","sources":["../../src/src/worker-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,KAAW,KAAK,CAQrB;AARD,WAAiB,KAAK;IACpB,MAAa,cAAe,SAAQ,MAAM,CAAC,aAAa,EAAkB,CAAC,gBAAgB,EAAE;QAC7F,OAAO,EAAE;YACR,IAAI,EAAE,YAAY,CAAC,WAAW;SAC9B;QACD,OAAO,EAAE,MAAM,CAAC,IAAI;QACpB,OAAO,EAAE,MAAM,CAAC,KAAK;KACrB,CAAC;KAAG;IANS,oBAAc,iBAMvB,CAAA;AACN,CAAC,EARgB,KAAK,KAAL,KAAK,QAQrB;AAED,MAAM,KAAW,KAAK,CAiBrB;AAjBD,WAAiB,KAAK;IACrB,MAAa,cAAe,SAAQ,MAAM,CAAC,aAAa,EAAkB,CAAC,gBAAgB,EAAE;QAC5F,OAAO,EAAE,EAAG;QACZ,OAAO,EAAE,MAAM,CAAC,IAAI;QACpB,OAAO,EAAE,MAAM,CAAC,KAAK;KACrB,CAAC;KAAG;IAJQ,oBAAc,iBAItB,CAAA;IAEL,MAAa,QAAS,SAAQ,MAAM,CAAC,aAAa,EAAY,CAAC,UAAU,EAAE;QAC1E,OAAO,EAAE;YACR,CAAC,EAAE,MAAM,CAAC,MAAM;YAChB,CAAC,EAAE,MAAM,CAAC,MAAM;SAChB;QACD,OAAO,EAAE,MAAM,CAAC,MAAM;QACtB,OAAO,EAAE,MAAM,CAAC,KAAK;KACrB,CAAC;KAAG;IAPQ,cAAQ,WAOhB,CAAA;IAEL,MAAa,OAAQ,SAAQ,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,QAAQ,CAAC;KAAG;IAAzD,aAAO,UAAkD,CAAA;AACvE,CAAC,EAjBgB,KAAK,KAAL,KAAK,QAiBrB"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=worker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/src/worker.ts"],"names":[],"mappings":""}
@@ -1,24 +0,0 @@
1
- import { WorkerRunner } from '@effect/platform';
2
- import { BrowserWorkerRunner } from '@effect/platform-browser';
3
- import * as WorkerSchema from './worker-schema.js';
4
- import { Effect, Layer } from 'effect';
5
- const workerOuter = WorkerRunner.layerSerialized(WorkerSchema.Outer.InitialMessage, {
6
- InitialMessage: ({ port }) => Effect.gen(function* () {
7
- yield* Effect.log('outer worker started');
8
- yield* Effect.addFinalizer(() => Effect.log('outer finalizer'));
9
- yield* workerInner.pipe(Layer.provide(BrowserWorkerRunner.layerMessagePort(port)), Layer.launch,
10
- // Effect.scoped,
11
- Effect.tapErrorCause(Effect.logError), Effect.forkScoped);
12
- return Layer.empty;
13
- })
14
- });
15
- const workerInner = WorkerRunner.layerSerialized(WorkerSchema.Inner.Request, {
16
- InitialMessage: () => Effect.gen(function* () {
17
- yield* Effect.log('inner worker started');
18
- yield* Effect.addFinalizer(() => Effect.log('inner finalizer'));
19
- return Layer.empty;
20
- }).pipe(Layer.unwrapScoped),
21
- Multiply: ({ a, b }) => Effect.succeed(a * b)
22
- });
23
- workerOuter.pipe(Layer.provide(BrowserWorkerRunner.layer), Layer.launch, Effect.scoped, Effect.tapErrorCause(Effect.logError), Effect.runFork);
24
- //# sourceMappingURL=worker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/src/worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAG,mBAAmB,EAAC,MAAM,0BAA0B,CAAA;AAC9D,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAGtC,MAAM,WAAW,GAAG,YAAY,CAAC,eAAe,CAAC,YAAY,CAAC,KAAK,CAAC,cAAc,EAAE;IACnF,cAAc,EAAE,CAAC,EAAC,IAAI,EAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC/C,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;QACzC,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAA;QAE/D,KAAK,CAAC,CAAC,WAAW,CAAC,IAAI,CACtB,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,EACzD,KAAK,CAAC,MAAM;QACZ,iBAAiB;QACjB,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,EACrC,MAAM,CAAC,UAAU,CACjB,CAAA;QAED,OAAO,KAAK,CAAC,KAAK,CAAA;IACnB,CAAC,CAAC;CACF,CAAC,CAAA;AAEF,MAAM,WAAW,GAAG,YAAY,CAAC,eAAe,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE;IAC5E,cAAc,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;QAEzC,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAA;QAE/D,OAAO,KAAK,CAAC,KAAK,CAAA;IACnB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;IAC3B,QAAQ,EAAE,CAAC,EAAC,CAAC,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;CAC3C,CAAC,CAAA;AAIF,WAAW,CAAC,IAAI,CACf,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,EACxC,KAAK,CAAC,MAAM,EACZ,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,EACrC,MAAM,CAAC,OAAO,CACd,CAAA"}
@@ -1,4 +0,0 @@
1
- import type { MutationEvent } from '@livestore/common/schema';
2
- /** [(0,1), (0,2), (1,0), (0,1), (0,2), (1,0), (1,1)] -> [(0,1), (0,2), (1,0), (1,1)] */
3
- export declare const trimPushBatch: (batch: ReadonlyArray<MutationEvent.AnyEncoded>) => readonly MutationEvent.AnyEncoded[];
4
- //# sourceMappingURL=trim-batch.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trim-batch.d.ts","sourceRoot":"","sources":["../../../src/web-worker/client-session/trim-batch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAG7D,wFAAwF;AACxF,eAAO,MAAM,aAAa,UAAW,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC,wCAU3E,CAAA"}
@@ -1,13 +0,0 @@
1
- import { EventId } from '@livestore/common/schema';
2
- /** [(0,1), (0,2), (1,0), (0,1), (0,2), (1,0), (1,1)] -> [(0,1), (0,2), (1,0), (1,1)] */
3
- export const trimPushBatch = (batch) => {
4
- // Iterate over batch from the end and stop once we encounter an event with a larger id than the previous event
5
- // Then return the slice of the batch up to and including that event
6
- for (let i = batch.length - 2; i >= 0; i--) {
7
- if (EventId.isGreaterThanOrEqual(batch[i].id, batch[i + 1].id)) {
8
- return batch.slice(i + 1);
9
- }
10
- }
11
- return batch;
12
- };
13
- //# sourceMappingURL=trim-batch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trim-batch.js","sourceRoot":"","sources":["../../../src/web-worker/client-session/trim-batch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAElD,wFAAwF;AACxF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAA8C,EAAE,EAAE;IAC9E,+GAA+G;IAC/G,oEAAoE;IACpE,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,IAAI,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YACjE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=trim-batch.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trim-batch.test.d.ts","sourceRoot":"","sources":["../../../src/web-worker/client-session/trim-batch.test.ts"],"names":[],"mappings":""}
@@ -1,38 +0,0 @@
1
- import { EventId } from '@livestore/common/schema';
2
- import { describe, expect, it } from 'vitest';
3
- import { trimPushBatch } from './trim-batch.js';
4
- describe('trimPushBatch', () => {
5
- it('should return same batch', () => {
6
- const batch = [
7
- { id: EventId.make({ global: 0, client: 1 }), parentId: EventId.make({ global: 0, client: 0 }) },
8
- { id: EventId.make({ global: 0, client: 2 }), parentId: EventId.make({ global: 0, client: 1 }) },
9
- { id: EventId.make({ global: 1, client: 0 }), parentId: EventId.make({ global: 0, client: 0 }) },
10
- { id: EventId.make({ global: 1, client: 1 }), parentId: EventId.make({ global: 1, client: 0 }) },
11
- ];
12
- const trimmed = trimPushBatch(batch);
13
- expect(trimmed).toEqual(batch);
14
- });
15
- it('should trim the batch', () => {
16
- const batch = [
17
- { id: EventId.make({ global: 0, client: 1 }), parentId: EventId.make({ global: 0, client: 0 }) },
18
- { id: EventId.make({ global: 0, client: 2 }), parentId: EventId.make({ global: 0, client: 1 }) },
19
- // should trim above
20
- { id: EventId.make({ global: 0, client: 1 }), parentId: EventId.make({ global: 0, client: 0 }) },
21
- { id: EventId.make({ global: 0, client: 2 }), parentId: EventId.make({ global: 0, client: 1 }) },
22
- { id: EventId.make({ global: 1, client: 0 }), parentId: EventId.make({ global: 0, client: 0 }) },
23
- { id: EventId.make({ global: 1, client: 1 }), parentId: EventId.make({ global: 1, client: 0 }) },
24
- ];
25
- const trimmed = trimPushBatch(batch);
26
- expect(trimmed).toEqual(batch.slice(2));
27
- });
28
- it('should trim the batch', () => {
29
- const batch = [
30
- { id: EventId.make({ global: 0, client: 1 }), parentId: EventId.make({ global: 0, client: 0 }) },
31
- // should trim above
32
- { id: EventId.make({ global: 0, client: 1 }), parentId: EventId.make({ global: 0, client: 0 }) },
33
- ];
34
- const trimmed = trimPushBatch(batch);
35
- expect(trimmed).toEqual(batch.slice(1));
36
- });
37
- });
38
- //# sourceMappingURL=trim-batch.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trim-batch.test.js","sourceRoot":"","sources":["../../../src/web-worker/client-session/trim-batch.test.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { Effect } from '@livestore/utils/effect';
2
- export declare const workerRepro: Effect.Effect<void, import("@effect/platform/WorkerError").WorkerError | import("effect/Cause").TimeoutException, import("effect/Scope").Scope>;
3
- //# sourceMappingURL=main.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/worker-repro/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,MAAM,EAAU,MAAM,yBAAyB,CAAA;AAIvE,eAAO,MAAM,WAAW,iJA8BK,CAAA"}
@@ -1,23 +0,0 @@
1
- import { BrowserWorker, Effect, Worker } from '@livestore/utils/effect';
2
- import * as WorkerSchema from './worker-schema.js';
3
- export const workerRepro = Effect.gen(function* () {
4
- const mc = new MessageChannel();
5
- console.log('booting outer');
6
- const outer = yield* Worker.makeSerialized({
7
- initialMessage: () => new WorkerSchema.Outer.InitialMessage({
8
- port: mc.port1,
9
- }),
10
- }).pipe(Effect.provide(BrowserWorker.layer(() => new globalThis.Worker(new URL('./worker.js', import.meta.url), { type: 'module' }))));
11
- console.log('booting inner');
12
- const inner = yield* Worker.makeSerialized({
13
- initialMessage: () => new WorkerSchema.Inner.InitialMessage(),
14
- }).pipe(Effect.provide(BrowserWorker.layer(() => mc.port2)));
15
- // const res = yield* inner.executeEffect(new WorkerSchema.Inner.Multiply({
16
- // a: 4,
17
- // b: 2,
18
- // }))
19
- // console.log('should be 8', res)
20
- yield* Effect.never;
21
- }).pipe(Effect.timeout(2000));
22
- // main.pipe(Effect.scoped, Effect.tapCauseLogPretty, Effect.runFork)
23
- //# sourceMappingURL=main.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/worker-repro/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEvE,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAA;AAElD,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC7C,MAAM,EAAE,GAAG,IAAI,cAAc,EAAE,CAAA;IAE/B,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;IAE5B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CAAqD;QAC7F,cAAc,EAAE,GAAG,EAAE,CACnB,IAAI,YAAY,CAAC,KAAK,CAAC,cAAc,CAAC;YACpC,IAAI,EAAE,EAAE,CAAC,KAAK;SACf,CAAC;KACL,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,OAAO,CACZ,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAC9G,CACF,CAAA;IAED,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;IAE5B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CAA8C;QACtF,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,cAAc,EAAE;KAC9D,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAE5D,2EAA2E;IAC3E,SAAS;IACT,SAAS;IACT,MAAM;IAEN,kCAAkC;IAElC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAA;AACrB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;AAE7B,qEAAqE"}
@@ -1,37 +0,0 @@
1
- import { UnexpectedError } from '@livestore/common';
2
- import { Schema } from '@livestore/utils/effect';
3
- export declare namespace Outer {
4
- const InitialMessage_base: Schema.TaggedRequestClass<InitialMessage, "InitialMessage", {
5
- readonly _tag: Schema.tag<"InitialMessage">;
6
- } & {
7
- port: Schema.Schema<MessagePort, MessagePort, never>;
8
- storeId: typeof Schema.String;
9
- clientId: typeof Schema.String;
10
- }, typeof Schema.Void, typeof UnexpectedError>;
11
- export class InitialMessage extends InitialMessage_base {
12
- }
13
- const Request_base: typeof InitialMessage;
14
- export class Request extends Request_base {
15
- }
16
- export {};
17
- }
18
- export declare namespace Inner {
19
- const InitialMessage_base_1: Schema.TaggedRequestClass<InitialMessage, "InitialMessage", {
20
- readonly _tag: Schema.tag<"InitialMessage">;
21
- }, typeof Schema.Void, typeof Schema.Never>;
22
- export class InitialMessage extends InitialMessage_base_1 {
23
- }
24
- const Multiply_base: Schema.TaggedRequestClass<Multiply, "Multiply", {
25
- readonly _tag: Schema.tag<"Multiply">;
26
- } & {
27
- a: typeof Schema.Number;
28
- b: typeof Schema.Number;
29
- }, typeof Schema.Number, typeof Schema.Never>;
30
- export class Multiply extends Multiply_base {
31
- }
32
- const Request_base_1: Schema.Union<[typeof InitialMessage, typeof Multiply]>;
33
- export class Request extends Request_base_1 {
34
- }
35
- export {};
36
- }
37
- //# sourceMappingURL=worker-schema.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker-schema.d.ts","sourceRoot":"","sources":["../../src/worker-repro/worker-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,MAAM,EAAgB,MAAM,yBAAyB,CAAA;AAE9D,yBAAiB,KAAK,CAAC;;;;;;;;IAQrB,MAAM,OAAO,cAAe,SAAQ,mBAIlC;KAAG;;IAEL,MAAM,OAAO,OAAQ,SAAQ,YAA4B;KAAG;;CAC7D;AAED,yBAAiB,KAAK,CAAC;;;;IACrB,MAAM,OAAO,cAAe,SAAQ,qBAIlC;KAAG;;;;;;;IAEL,MAAM,OAAO,QAAS,SAAQ,aAO5B;KAAG;;IAEL,MAAM,OAAO,OAAQ,SAAQ,cAAsC;KAAG;;CACvE"}
@@ -1,46 +0,0 @@
1
- import { UnexpectedError } from '@livestore/common';
2
- import { Schema, Transferable } from '@livestore/utils/effect';
3
- export var Outer;
4
- (function (Outer) {
5
- // export class InitialMessage extends Schema.TaggedRequest<InitialMessage>()('InitialMessage', {
6
- // payload: {
7
- // port: Transferable.MessagePort,
8
- // },
9
- // success: Schema.Void,
10
- // failure: Schema.Never,
11
- // }) {}
12
- class InitialMessage extends Schema.TaggedRequest()('InitialMessage', {
13
- payload: { port: Transferable.MessagePort, storeId: Schema.String, clientId: Schema.String },
14
- success: Schema.Void,
15
- failure: UnexpectedError,
16
- }) {
17
- }
18
- Outer.InitialMessage = InitialMessage;
19
- class Request extends Schema.Union(InitialMessage) {
20
- }
21
- Outer.Request = Request;
22
- })(Outer || (Outer = {}));
23
- export var Inner;
24
- (function (Inner) {
25
- class InitialMessage extends Schema.TaggedRequest()('InitialMessage', {
26
- payload: {},
27
- success: Schema.Void,
28
- failure: Schema.Never,
29
- }) {
30
- }
31
- Inner.InitialMessage = InitialMessage;
32
- class Multiply extends Schema.TaggedRequest()('Multiply', {
33
- payload: {
34
- a: Schema.Number,
35
- b: Schema.Number,
36
- },
37
- success: Schema.Number,
38
- failure: Schema.Never,
39
- }) {
40
- }
41
- Inner.Multiply = Multiply;
42
- class Request extends Schema.Union(InitialMessage, Multiply) {
43
- }
44
- Inner.Request = Request;
45
- })(Inner || (Inner = {}));
46
- //# sourceMappingURL=worker-schema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker-schema.js","sourceRoot":"","sources":["../../src/worker-repro/worker-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAE9D,MAAM,KAAW,KAAK,CAerB;AAfD,WAAiB,KAAK;IACpB,iGAAiG;IACjG,eAAe;IACf,sCAAsC;IACtC,OAAO;IACP,0BAA0B;IAC1B,2BAA2B;IAC3B,QAAQ;IACR,MAAa,cAAe,SAAQ,MAAM,CAAC,aAAa,EAAkB,CAAC,gBAAgB,EAAE;QAC3F,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE;QAC5F,OAAO,EAAE,MAAM,CAAC,IAAI;QACpB,OAAO,EAAE,eAAe;KACzB,CAAC;KAAG;IAJQ,oBAAc,iBAItB,CAAA;IAEL,MAAa,OAAQ,SAAQ,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC;KAAG;IAA/C,aAAO,UAAwC,CAAA;AAC9D,CAAC,EAfgB,KAAK,KAAL,KAAK,QAerB;AAED,MAAM,KAAW,KAAK,CAiBrB;AAjBD,WAAiB,KAAK;IACpB,MAAa,cAAe,SAAQ,MAAM,CAAC,aAAa,EAAkB,CAAC,gBAAgB,EAAE;QAC3F,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,MAAM,CAAC,IAAI;QACpB,OAAO,EAAE,MAAM,CAAC,KAAK;KACtB,CAAC;KAAG;IAJQ,oBAAc,iBAItB,CAAA;IAEL,MAAa,QAAS,SAAQ,MAAM,CAAC,aAAa,EAAY,CAAC,UAAU,EAAE;QACzE,OAAO,EAAE;YACP,CAAC,EAAE,MAAM,CAAC,MAAM;YAChB,CAAC,EAAE,MAAM,CAAC,MAAM;SACjB;QACD,OAAO,EAAE,MAAM,CAAC,MAAM;QACtB,OAAO,EAAE,MAAM,CAAC,KAAK;KACtB,CAAC;KAAG;IAPQ,cAAQ,WAOhB,CAAA;IAEL,MAAa,OAAQ,SAAQ,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,QAAQ,CAAC;KAAG;IAAzD,aAAO,UAAkD,CAAA;AACxE,CAAC,EAjBgB,KAAK,KAAL,KAAK,QAiBrB"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=worker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/worker-repro/worker.ts"],"names":[],"mappings":""}
@@ -1,22 +0,0 @@
1
- import { BrowserWorkerRunner, Effect, Layer, WorkerRunner } from '@livestore/utils/effect';
2
- import * as WorkerSchema from './worker-schema.js';
3
- const workerOuter = WorkerRunner.layerSerialized(WorkerSchema.Outer.InitialMessage, {
4
- InitialMessage: ({ port }) => Effect.gen(function* () {
5
- yield* Effect.log('outer worker started');
6
- yield* Effect.addFinalizer(() => Effect.log('outer finalizer'));
7
- yield* workerInner.pipe(Layer.provide(BrowserWorkerRunner.layerMessagePort(port)), Layer.launch,
8
- // Effect.scoped,
9
- Effect.tapErrorCause(Effect.logError), Effect.forkScoped);
10
- return Layer.empty;
11
- }).pipe(Layer.unwrapScoped),
12
- });
13
- const workerInner = WorkerRunner.layerSerialized(WorkerSchema.Inner.Request, {
14
- InitialMessage: () => Effect.gen(function* () {
15
- yield* Effect.log('inner worker started');
16
- yield* Effect.addFinalizer(() => Effect.log('inner finalizer'));
17
- return Layer.empty;
18
- }).pipe(Layer.unwrapScoped),
19
- Multiply: ({ a, b }) => Effect.succeed(a * b),
20
- });
21
- workerOuter.pipe(Layer.provide(BrowserWorkerRunner.layer), Layer.launch, Effect.scoped, Effect.tapErrorCause(Effect.logError), Effect.runFork);
22
- //# sourceMappingURL=worker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/worker-repro/worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAE1F,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAA;AAElD,MAAM,WAAW,GAAG,YAAY,CAAC,eAAe,CAAC,YAAY,CAAC,KAAK,CAAC,cAAc,EAAE;IAClF,cAAc,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAC3B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;QACzC,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAA;QAE/D,KAAK,CAAC,CAAC,WAAW,CAAC,IAAI,CACrB,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,EACzD,KAAK,CAAC,MAAM;QACZ,iBAAiB;QACjB,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,EACrC,MAAM,CAAC,UAAU,CAClB,CAAA;QAED,OAAO,KAAK,CAAC,KAAK,CAAA;IACpB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;CAC9B,CAAC,CAAA;AAEF,MAAM,WAAW,GAAG,YAAY,CAAC,eAAe,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE;IAC3E,cAAc,EAAE,GAAG,EAAE,CACnB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;QAEzC,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAA;QAE/D,OAAO,KAAK,CAAC,KAAK,CAAA;IACpB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;IAC7B,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;CAC9C,CAAC,CAAA;AAEF,WAAW,CAAC,IAAI,CACd,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,EACxC,KAAK,CAAC,MAAM,EACZ,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,EACrC,MAAM,CAAC,OAAO,CACf,CAAA"}