@livestore/adapter-web 0.3.0-dev.23 → 0.3.0-dev.25
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 -1
- package/dist/in-memory/{index.d.ts → in-memory-adapter.d.ts} +1 -1
- package/dist/in-memory/in-memory-adapter.d.ts.map +1 -0
- package/dist/in-memory/{index.js → in-memory-adapter.js} +3 -3
- package/dist/in-memory/in-memory-adapter.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/web-worker/client-session/{index.d.ts → persisted-adapter.d.ts} +3 -3
- package/dist/web-worker/client-session/persisted-adapter.d.ts.map +1 -0
- package/dist/web-worker/client-session/{index.js → persisted-adapter.js} +5 -4
- package/dist/web-worker/client-session/persisted-adapter.js.map +1 -0
- package/dist/web-worker/common/persisted-sqlite.d.ts +2 -1
- package/dist/web-worker/common/persisted-sqlite.d.ts.map +1 -1
- package/dist/web-worker/common/persisted-sqlite.js +6 -4
- package/dist/web-worker/common/persisted-sqlite.js.map +1 -1
- package/dist/web-worker/common/worker-schema.d.ts +4 -4
- package/dist/web-worker/common/worker-schema.d.ts.map +1 -1
- package/dist/web-worker/common/worker-schema.js +3 -3
- package/dist/web-worker/leader-worker/make-leader-worker.js +4 -4
- package/dist/web-worker/shared-worker/make-shared-worker.d.ts.map +1 -1
- package/dist/web-worker/shared-worker/make-shared-worker.js +34 -55
- package/dist/web-worker/shared-worker/make-shared-worker.js.map +1 -1
- package/dist/web-worker/vite-dev-polyfill.js +1 -1
- package/dist/web-worker/vite-dev-polyfill.js.map +1 -1
- package/package.json +6 -6
- package/src/in-memory/{index.ts → in-memory-adapter.ts} +2 -2
- package/src/index.ts +2 -2
- package/src/web-worker/client-session/{index.ts → persisted-adapter.ts} +8 -6
- package/src/web-worker/common/persisted-sqlite.ts +12 -4
- package/src/web-worker/common/worker-schema.ts +3 -3
- package/src/web-worker/leader-worker/make-leader-worker.ts +5 -5
- package/src/web-worker/shared-worker/make-shared-worker.ts +42 -81
- package/src/web-worker/vite-dev-polyfill.ts +1 -1
- package/tmp/pack.tgz +0 -0
- package/dist/in-memory/index.d.ts.map +0 -1
- package/dist/in-memory/index.js.map +0 -1
- package/dist/web-worker/client-session/index.d.ts.map +0 -1
- package/dist/web-worker/client-session/index.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@livestore/adapter-web",
|
|
3
|
-
"version": "0.3.0-dev.
|
|
3
|
+
"version": "0.3.0-dev.25",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"exports": {
|
|
@@ -51,11 +51,11 @@
|
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
53
|
"@opentelemetry/api": "1.9.0",
|
|
54
|
-
"@livestore/common": "0.3.0-dev.
|
|
55
|
-
"@livestore/devtools-web-common": "0.3.0-dev.
|
|
56
|
-
"@livestore/
|
|
57
|
-
"@livestore/
|
|
58
|
-
"@livestore/
|
|
54
|
+
"@livestore/common": "0.3.0-dev.25",
|
|
55
|
+
"@livestore/devtools-web-common": "0.3.0-dev.25",
|
|
56
|
+
"@livestore/utils": "0.3.0-dev.25",
|
|
57
|
+
"@livestore/sqlite-wasm": "0.3.0-dev.25",
|
|
58
|
+
"@livestore/webmesh": "0.3.0-dev.25"
|
|
59
59
|
},
|
|
60
60
|
"devDependencies": {
|
|
61
61
|
"@types/chrome": "^0.0.304",
|
|
@@ -46,11 +46,11 @@ export const makeInMemoryAdapter =
|
|
|
46
46
|
sessionId: nanoid(6),
|
|
47
47
|
leaderThread: {
|
|
48
48
|
mutations: {
|
|
49
|
-
pull: Stream.never,
|
|
49
|
+
pull: () => Stream.never,
|
|
50
50
|
push: () => Effect.void,
|
|
51
51
|
},
|
|
52
52
|
initialState: { leaderHead: EventId.ROOT, migrationsReport },
|
|
53
|
-
export: Effect.
|
|
53
|
+
export: Effect.sync(() => sqliteDb.export()),
|
|
54
54
|
getMutationLogData: Effect.succeed(new Uint8Array()),
|
|
55
55
|
getSyncState: Effect.dieMessage('Not implemented'),
|
|
56
56
|
networkStatus: SubscriptionRef.make({ isConnected: false, timestampMs: Date.now(), latchClosed: false }).pipe(
|
package/src/index.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export { makeInMemoryAdapter } from './in-memory/
|
|
1
|
+
export { makePersistedAdapter, type WebAdapterOptions } from './web-worker/client-session/persisted-adapter.js'
|
|
2
|
+
export { makeInMemoryAdapter } from './in-memory/in-memory-adapter.js'
|
|
3
3
|
export * as WorkerSchema from './web-worker/common/worker-schema.js'
|
|
@@ -61,7 +61,7 @@ export type WebAdapterOptions = {
|
|
|
61
61
|
* ```ts
|
|
62
62
|
* import LiveStoreSharedWorker from '@livestore/adapter-web/shared-worker?sharedworker'
|
|
63
63
|
*
|
|
64
|
-
* const adapter =
|
|
64
|
+
* const adapter = makePersistedAdapter({
|
|
65
65
|
* sharedWorker: LiveStoreSharedWorker,
|
|
66
66
|
* // ...
|
|
67
67
|
* })
|
|
@@ -93,7 +93,7 @@ export type WebAdapterOptions = {
|
|
|
93
93
|
sessionId?: string
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
-
export const
|
|
96
|
+
export const makePersistedAdapter =
|
|
97
97
|
(options: WebAdapterOptions): Adapter =>
|
|
98
98
|
({
|
|
99
99
|
schema,
|
|
@@ -116,7 +116,11 @@ export const makeAdapter =
|
|
|
116
116
|
|
|
117
117
|
const storageOptions = yield* Schema.decode(WorkerSchema.StorageType)(options.storage)
|
|
118
118
|
|
|
119
|
+
const shutdownChannel = yield* makeShutdownChannel(storeId)
|
|
120
|
+
|
|
119
121
|
if (options.resetPersistence === true) {
|
|
122
|
+
yield* shutdownChannel.send(IntentionalShutdownCause.make({ reason: 'adapter-reset' }))
|
|
123
|
+
|
|
120
124
|
yield* resetPersistedDataFromClientSession({ storageOptions, storeId })
|
|
121
125
|
}
|
|
122
126
|
|
|
@@ -133,7 +137,6 @@ export const makeAdapter =
|
|
|
133
137
|
// Unique per client session (i.e. tab, window)
|
|
134
138
|
const sessionId = options.sessionId ?? getPersistedId(`sessionId:${storeId}`, 'session')
|
|
135
139
|
|
|
136
|
-
const shutdownChannel = yield* makeShutdownChannel(storeId)
|
|
137
140
|
const workerDisconnectChannel = yield* makeWorkerDisconnectChannel(storeId)
|
|
138
141
|
|
|
139
142
|
yield* shutdownChannel.listen.pipe(
|
|
@@ -435,9 +438,8 @@ export const makeAdapter =
|
|
|
435
438
|
),
|
|
436
439
|
|
|
437
440
|
mutations: {
|
|
438
|
-
pull:
|
|
439
|
-
Stream.orDie,
|
|
440
|
-
),
|
|
441
|
+
pull: ({ cursor }) =>
|
|
442
|
+
runInWorkerStream(new WorkerSchema.LeaderWorkerInner.PullStream({ cursor })).pipe(Stream.orDie),
|
|
441
443
|
push: (batch) =>
|
|
442
444
|
runInWorker(new WorkerSchema.LeaderWorkerInner.PushToLeader({ batch })).pipe(
|
|
443
445
|
Effect.withSpan('@livestore/adapter-web:client-session:pushToLeader', {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { liveStoreStorageFormatVersion } from '@livestore/common'
|
|
1
|
+
import { liveStoreStorageFormatVersion, UnexpectedError } from '@livestore/common'
|
|
2
2
|
import type { LiveStoreSchema } from '@livestore/common/schema'
|
|
3
3
|
import { decodeSAHPoolFilename, HEADER_OFFSET_DATA } from '@livestore/sqlite-wasm/browser'
|
|
4
|
-
import { Effect, Schema } from '@livestore/utils/effect'
|
|
4
|
+
import { Effect, Schedule, Schema } from '@livestore/utils/effect'
|
|
5
5
|
|
|
6
6
|
import * as OpfsUtils from '../../opfs-utils.js'
|
|
7
7
|
import type * as WorkerSchema from './worker-schema.js'
|
|
@@ -87,7 +87,12 @@ export const resetPersistedDataFromClientSession = ({
|
|
|
87
87
|
Effect.gen(function* () {
|
|
88
88
|
const directory = sanitizeOpfsDir(storageOptions.directory, storeId)
|
|
89
89
|
yield* opfsDeleteAbs(directory)
|
|
90
|
-
}).pipe(
|
|
90
|
+
}).pipe(
|
|
91
|
+
Effect.retry({
|
|
92
|
+
schedule: Schedule.exponentialBackoff10Sec,
|
|
93
|
+
}),
|
|
94
|
+
Effect.withSpan('@livestore/adapter-web:resetPersistedDataFromClientSession'),
|
|
95
|
+
)
|
|
91
96
|
|
|
92
97
|
const opfsDeleteAbs = (absPath: string) =>
|
|
93
98
|
Effect.promise(async () => {
|
|
@@ -114,7 +119,10 @@ const opfsDeleteAbs = (absPath: string) =>
|
|
|
114
119
|
throw error
|
|
115
120
|
}
|
|
116
121
|
}
|
|
117
|
-
}).pipe(
|
|
122
|
+
}).pipe(
|
|
123
|
+
UnexpectedError.mapToUnexpectedError,
|
|
124
|
+
Effect.withSpan('@livestore/adapter-web:worker:opfsDeleteFile', { attributes: { absFilePath: absPath } }),
|
|
125
|
+
)
|
|
118
126
|
|
|
119
127
|
export const sanitizeOpfsDir = (directory: string | undefined, storeId: string) => {
|
|
120
128
|
// Root dir should be `''` not `/`
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
UnexpectedError,
|
|
9
9
|
} from '@livestore/common'
|
|
10
10
|
import { EventId, MutationEvent } from '@livestore/common/schema'
|
|
11
|
-
import * as
|
|
11
|
+
import * as WebmeshWorker from '@livestore/devtools-web-common/worker'
|
|
12
12
|
import { Schema, Transferable } from '@livestore/utils/effect'
|
|
13
13
|
|
|
14
14
|
export const StorageTypeOpfs = Schema.Struct({
|
|
@@ -159,7 +159,7 @@ export namespace LeaderWorkerInner {
|
|
|
159
159
|
NetworkStatusStream,
|
|
160
160
|
Shutdown,
|
|
161
161
|
ExtraDevtoolsMessage,
|
|
162
|
-
|
|
162
|
+
WebmeshWorker.Schema.CreateConnection,
|
|
163
163
|
)
|
|
164
164
|
export type Request = typeof Request.Type
|
|
165
165
|
}
|
|
@@ -202,6 +202,6 @@ export namespace SharedWorker {
|
|
|
202
202
|
LeaderWorkerInner.Shutdown,
|
|
203
203
|
LeaderWorkerInner.ExtraDevtoolsMessage,
|
|
204
204
|
|
|
205
|
-
|
|
205
|
+
WebmeshWorker.Schema.CreateConnection,
|
|
206
206
|
) {}
|
|
207
207
|
}
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
import type { LiveStoreSchema } from '@livestore/common/schema'
|
|
11
11
|
import { MutationEvent } from '@livestore/common/schema'
|
|
12
12
|
import { makeChannelForConnectedMeshNode } from '@livestore/devtools-web-common/web-channel'
|
|
13
|
-
import * as
|
|
13
|
+
import * as WebmeshWorker from '@livestore/devtools-web-common/worker'
|
|
14
14
|
import { sqliteDbFactory } from '@livestore/sqlite-wasm/browser'
|
|
15
15
|
import { loadSqlite3Wasm } from '@livestore/sqlite-wasm/load-wasm'
|
|
16
16
|
import { isDevEnv, LS_DEV } from '@livestore/utils'
|
|
@@ -97,7 +97,7 @@ const makeWorkerRunnerOuter = (
|
|
|
97
97
|
Effect.scoped,
|
|
98
98
|
Effect.withSpan('@livestore/adapter-web:worker:wrapper:InitialMessage:innerFiber'),
|
|
99
99
|
Effect.tapCauseLogPretty,
|
|
100
|
-
Effect.provide(
|
|
100
|
+
Effect.provide(WebmeshWorker.CacheService.layer({ nodeName: `leader-${storeId}-${clientId}` })),
|
|
101
101
|
Effect.forkScoped,
|
|
102
102
|
)
|
|
103
103
|
|
|
@@ -242,7 +242,7 @@ const makeWorkerRunnerInner = ({ schema, sync: syncOptions }: WorkerOptions) =>
|
|
|
242
242
|
UnexpectedError.mapToUnexpectedError,
|
|
243
243
|
Effect.withSpan('@livestore/adapter-web:worker:ExtraDevtoolsMessage'),
|
|
244
244
|
),
|
|
245
|
-
'DevtoolsWebCommon.CreateConnection':
|
|
245
|
+
'DevtoolsWebCommon.CreateConnection': WebmeshWorker.CreateConnection,
|
|
246
246
|
})
|
|
247
247
|
|
|
248
248
|
const makeDevtoolsOptions = ({
|
|
@@ -253,12 +253,12 @@ const makeDevtoolsOptions = ({
|
|
|
253
253
|
devtoolsEnabled: boolean
|
|
254
254
|
dbReadModel: SqliteDb
|
|
255
255
|
dbMutationLog: SqliteDb
|
|
256
|
-
}): Effect.Effect<DevtoolsOptions, UnexpectedError, Scope.Scope |
|
|
256
|
+
}): Effect.Effect<DevtoolsOptions, UnexpectedError, Scope.Scope | WebmeshWorker.CacheService> =>
|
|
257
257
|
Effect.gen(function* () {
|
|
258
258
|
if (devtoolsEnabled === false) {
|
|
259
259
|
return { enabled: false }
|
|
260
260
|
}
|
|
261
|
-
const { node } = yield*
|
|
261
|
+
const { node } = yield* WebmeshWorker.CacheService
|
|
262
262
|
|
|
263
263
|
return {
|
|
264
264
|
enabled: true,
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { UnexpectedError } from '@livestore/common'
|
|
2
2
|
import { connectViaWorker } from '@livestore/devtools-web-common/web-channel'
|
|
3
|
-
import * as
|
|
3
|
+
import * as WebmeshWorker from '@livestore/devtools-web-common/worker'
|
|
4
4
|
import { isDevEnv, isNotUndefined, LS_DEV } from '@livestore/utils'
|
|
5
5
|
import {
|
|
6
6
|
BrowserWorker,
|
|
7
7
|
BrowserWorkerRunner,
|
|
8
8
|
Deferred,
|
|
9
|
-
Duration,
|
|
10
9
|
Effect,
|
|
11
10
|
Exit,
|
|
12
11
|
FetchHttpClient,
|
|
@@ -15,7 +14,6 @@ import {
|
|
|
15
14
|
Logger,
|
|
16
15
|
LogLevel,
|
|
17
16
|
ParseResult,
|
|
18
|
-
Queue,
|
|
19
17
|
Ref,
|
|
20
18
|
Schema,
|
|
21
19
|
Scope,
|
|
@@ -65,6 +63,7 @@ const makeWorkerRunner = Effect.gen(function* () {
|
|
|
65
63
|
Effect.andThen((worker) => worker.executeEffect(req) as Effect.Effect<unknown, unknown, never>),
|
|
66
64
|
// Effect.tap((_) => Effect.log(`forwardRequest: ${req._tag}`, _)),
|
|
67
65
|
// Effect.tapError((cause) => Effect.logError(`forwardRequest err: ${req._tag}`, cause)),
|
|
66
|
+
Effect.interruptible,
|
|
68
67
|
Effect.logWarnIfTakesLongerThan({
|
|
69
68
|
label: `@livestore/adapter-web:shared-worker:forwardRequest:${req._tag}`,
|
|
70
69
|
duration: 500,
|
|
@@ -80,57 +79,35 @@ const makeWorkerRunner = Effect.gen(function* () {
|
|
|
80
79
|
Effect.tapCauseLogPretty,
|
|
81
80
|
) as any
|
|
82
81
|
|
|
83
|
-
// const forwardRequestStream = <TReq extends WorkerSchema.DedicatedWorkerInner.Request>(
|
|
84
|
-
// req: TReq,
|
|
85
|
-
// ): TReq extends Serializable.WithResult<infer A, infer _I, infer _E, infer _EI, infer _R>
|
|
86
|
-
// ? Stream.Stream<A, UnexpectedError, never>
|
|
87
|
-
// : never =>
|
|
88
|
-
// waitForWorker.pipe(
|
|
89
|
-
// Effect.logBefore(`forwardRequestStream: ${req._tag}`),
|
|
90
|
-
// Effect.andThen((worker) => worker.execute(req) as Stream.Stream<unknown, unknown, never>),
|
|
91
|
-
// Effect.interruptible,
|
|
92
|
-
// UnexpectedError.mapToUnexpectedError,
|
|
93
|
-
// Effect.tapCauseLogPretty,
|
|
94
|
-
// Stream.unwrap,
|
|
95
|
-
// Stream.ensuring(Effect.logDebug(`shutting down stream for ${req._tag}`)),
|
|
96
|
-
// UnexpectedError.mapToUnexpectedErrorStream,
|
|
97
|
-
// ) as any
|
|
98
|
-
|
|
99
|
-
// TODO bring back the `forwardRequestStream` impl above. Needs debugging with Tim Smart
|
|
100
|
-
// It seems the in-progress streams are not being closed properly if the worker is closed (e.g. by closing the leader tab)
|
|
101
82
|
const forwardRequestStream = <TReq extends WorkerSchema.LeaderWorkerInner.Request>(
|
|
102
83
|
req: TReq,
|
|
103
84
|
): TReq extends Schema.WithResult<infer A, infer _I, infer _E, infer _EI, infer _R>
|
|
104
85
|
? Stream.Stream<A, UnexpectedError, never>
|
|
105
86
|
: never =>
|
|
106
87
|
Effect.gen(function* () {
|
|
88
|
+
yield* Effect.logDebug(`forwardRequestStream: ${req._tag}`)
|
|
107
89
|
const { worker, scope } = yield* SubscriptionRef.waitUntil(leaderWorkerContextSubRef, isNotUndefined)
|
|
108
|
-
const
|
|
90
|
+
const stream = worker.execute(req) as Stream.Stream<unknown, unknown, never>
|
|
109
91
|
|
|
110
|
-
|
|
92
|
+
// It seems the request stream is not automatically interrupted when the scope shuts down
|
|
93
|
+
// so we need to manually interrupt it when the scope shuts down
|
|
94
|
+
const shutdownDeferred = yield* Deferred.make<void>()
|
|
95
|
+
yield* Scope.addFinalizer(scope, Deferred.succeed(shutdownDeferred, undefined))
|
|
111
96
|
|
|
112
|
-
|
|
97
|
+
// Here we're creating an empty stream that will finish when the scope shuts down
|
|
98
|
+
const scopeShutdownStream = Effect.gen(function* () {
|
|
99
|
+
yield* shutdownDeferred
|
|
100
|
+
return Stream.empty
|
|
101
|
+
}).pipe(Stream.unwrap)
|
|
113
102
|
|
|
114
|
-
|
|
115
|
-
Stream.tap((_) => Queue.offer(queue, _)),
|
|
116
|
-
Stream.runDrain,
|
|
117
|
-
Effect.interruptible,
|
|
118
|
-
Effect.forkIn(scope),
|
|
119
|
-
)
|
|
120
|
-
|
|
121
|
-
return Stream.fromQueue(queue)
|
|
103
|
+
return Stream.merge(stream, scopeShutdownStream, { haltStrategy: 'either' })
|
|
122
104
|
}).pipe(
|
|
105
|
+
Effect.interruptible,
|
|
123
106
|
UnexpectedError.mapToUnexpectedError,
|
|
124
107
|
Effect.tapCauseLogPretty,
|
|
125
108
|
Stream.unwrap,
|
|
126
|
-
Stream.
|
|
127
|
-
|
|
128
|
-
? cause
|
|
129
|
-
: ParseResult.isParseError(cause) || Schema.is(WorkerError.WorkerError)(cause)
|
|
130
|
-
? new UnexpectedError({ cause })
|
|
131
|
-
: cause,
|
|
132
|
-
),
|
|
133
|
-
// Stream.ensuring(Effect.logDebug(`shutting down stream for ${req._tag}`)),
|
|
109
|
+
Stream.ensuring(Effect.logDebug(`shutting down stream for ${req._tag}`)),
|
|
110
|
+
UnexpectedError.mapToUnexpectedErrorStream,
|
|
134
111
|
) as any
|
|
135
112
|
|
|
136
113
|
const resetCurrentWorkerCtx = Effect.gen(function* () {
|
|
@@ -142,14 +119,10 @@ const makeWorkerRunner = Effect.gen(function* () {
|
|
|
142
119
|
yield* Effect.yieldNow()
|
|
143
120
|
|
|
144
121
|
yield* Scope.close(prevWorker.scope, Exit.void).pipe(
|
|
145
|
-
// TODO there still seem to be scenarios where it takes longer than 1 second which is leading to problems
|
|
146
|
-
Effect.timeout(Duration.seconds(1)),
|
|
147
122
|
Effect.logWarnIfTakesLongerThan({
|
|
148
123
|
label: '@livestore/adapter-web:shared-worker:close-previous-worker',
|
|
149
124
|
duration: 500,
|
|
150
125
|
}),
|
|
151
|
-
// Effect.catchTag('TimeoutException', () => Scope.close(prevWorker.scope, Exit.fail('boom'))),
|
|
152
|
-
Effect.ignoreLogged,
|
|
153
126
|
)
|
|
154
127
|
}
|
|
155
128
|
}).pipe(Effect.withSpan('@livestore/adapter-web:shared-worker:resetCurrentWorkerCtx'))
|
|
@@ -179,7 +152,7 @@ const makeWorkerRunner = Effect.gen(function* () {
|
|
|
179
152
|
if (deferredAlreadyDone) {
|
|
180
153
|
const previousInitialMessage = yield* Deferred.await(initialMessagePayloadDeferred)
|
|
181
154
|
const messageSchema = WorkerSchema.LeaderWorkerInner.InitialMessage.pipe(
|
|
182
|
-
Schema.
|
|
155
|
+
Schema.omit('devtoolsEnabled', 'debugInstanceId'),
|
|
183
156
|
)
|
|
184
157
|
const isEqual = Schema.equivalence(messageSchema)
|
|
185
158
|
if (isEqual(initialMessage, previousInitialMessage.initialMessage) === false) {
|
|
@@ -189,7 +162,7 @@ const makeWorkerRunner = Effect.gen(function* () {
|
|
|
189
162
|
cause: 'Initial message already sent and was different now',
|
|
190
163
|
payload: {
|
|
191
164
|
diff,
|
|
192
|
-
previousInitialMessage,
|
|
165
|
+
previousInitialMessage: previousInitialMessage.initialMessage,
|
|
193
166
|
newInitialMessage: initialMessage,
|
|
194
167
|
},
|
|
195
168
|
})
|
|
@@ -208,26 +181,6 @@ const makeWorkerRunner = Effect.gen(function* () {
|
|
|
208
181
|
|
|
209
182
|
const scope = yield* Scope.make()
|
|
210
183
|
|
|
211
|
-
const workerDeferred = yield* Deferred.make<
|
|
212
|
-
Worker.SerializedWorkerPool<WorkerSchema.LeaderWorkerInner.Request>,
|
|
213
|
-
UnexpectedError
|
|
214
|
-
>()
|
|
215
|
-
// TODO we could also keep the pool instance around to re-use it by removing the previous worker and adding a new one
|
|
216
|
-
yield* Worker.makePoolSerialized<WorkerSchema.LeaderWorkerInner.Request>({
|
|
217
|
-
size: 1,
|
|
218
|
-
concurrency: 100,
|
|
219
|
-
initialMessage: () => initialMessagePayload.initialMessage,
|
|
220
|
-
}).pipe(
|
|
221
|
-
Effect.tap((worker) => Deferred.succeed(workerDeferred, worker)),
|
|
222
|
-
Effect.provide(BrowserWorker.layer(() => port)),
|
|
223
|
-
Effect.catchAllCause((cause) => new UnexpectedError({ cause })),
|
|
224
|
-
Effect.tapError((cause) => Deferred.fail(workerDeferred, cause)),
|
|
225
|
-
Effect.withSpan('@livestore/adapter-web:shared-worker:makeWorkerProxyFromPort'),
|
|
226
|
-
Effect.tapCauseLogPretty,
|
|
227
|
-
Scope.extend(scope),
|
|
228
|
-
Effect.forkIn(scope),
|
|
229
|
-
)
|
|
230
|
-
|
|
231
184
|
yield* Effect.gen(function* () {
|
|
232
185
|
const shutdownChannel = yield* makeShutdownChannel(initialMessagePayload.initialMessage.storeId)
|
|
233
186
|
|
|
@@ -235,22 +188,32 @@ const makeWorkerRunner = Effect.gen(function* () {
|
|
|
235
188
|
Stream.flatten(),
|
|
236
189
|
Stream.tap(() => reset),
|
|
237
190
|
Stream.runDrain,
|
|
191
|
+
Effect.tapCauseLogPretty,
|
|
192
|
+
Effect.forkScoped,
|
|
238
193
|
)
|
|
239
|
-
}).pipe(Effect.tapCauseLogPretty, Scope.extend(scope), Effect.forkIn(scope))
|
|
240
194
|
|
|
241
|
-
|
|
195
|
+
const workerLayer = yield* Layer.build(BrowserWorker.layer(() => port))
|
|
242
196
|
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
197
|
+
const worker = yield* Worker.makePoolSerialized<WorkerSchema.LeaderWorkerInner.Request>({
|
|
198
|
+
size: 1,
|
|
199
|
+
concurrency: 100,
|
|
200
|
+
initialMessage: () => initialMessagePayload.initialMessage,
|
|
201
|
+
}).pipe(
|
|
202
|
+
Effect.provide(workerLayer),
|
|
203
|
+
Effect.withSpan('@livestore/adapter-web:shared-worker:makeWorkerProxyFromPort'),
|
|
204
|
+
)
|
|
246
205
|
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
Effect.forkIn(scope),
|
|
251
|
-
)
|
|
206
|
+
// Prepare the web mesh connection for leader worker to be able to connect to the devtools
|
|
207
|
+
const { node } = yield* WebmeshWorker.CacheService
|
|
208
|
+
const { storeId, clientId } = initialMessagePayload.initialMessage
|
|
252
209
|
|
|
253
|
-
|
|
210
|
+
yield* connectViaWorker({ node, worker, target: `leader-${storeId}-${clientId}` }).pipe(
|
|
211
|
+
Effect.tapCauseLogPretty,
|
|
212
|
+
Effect.forkScoped,
|
|
213
|
+
)
|
|
214
|
+
|
|
215
|
+
yield* SubscriptionRef.set(leaderWorkerContextSubRef, { worker, scope })
|
|
216
|
+
}).pipe(Effect.tapCauseLogPretty, Scope.extend(scope), Effect.forkIn(scope))
|
|
254
217
|
}).pipe(
|
|
255
218
|
Effect.withSpan('@livestore/adapter-web:shared-worker:updateMessagePort'),
|
|
256
219
|
UnexpectedError.mapToUnexpectedError,
|
|
@@ -272,9 +235,7 @@ const makeWorkerRunner = Effect.gen(function* () {
|
|
|
272
235
|
ExtraDevtoolsMessage: forwardRequest,
|
|
273
236
|
|
|
274
237
|
// Accept devtools connections (from leader and client sessions)
|
|
275
|
-
'DevtoolsWebCommon.CreateConnection':
|
|
276
|
-
|
|
277
|
-
// ...devtoolsWebBridge.handlers,
|
|
238
|
+
'DevtoolsWebCommon.CreateConnection': WebmeshWorker.CreateConnection,
|
|
278
239
|
})
|
|
279
240
|
}).pipe(Layer.unwrapScoped)
|
|
280
241
|
|
|
@@ -288,7 +249,7 @@ export const makeWorker = () => {
|
|
|
288
249
|
Effect.annotateLogs({ thread: self.name }),
|
|
289
250
|
Effect.provide(Logger.prettyWithThread(self.name)),
|
|
290
251
|
Effect.provide(FetchHttpClient.layer),
|
|
291
|
-
Effect.provide(
|
|
252
|
+
Effect.provide(WebmeshWorker.CacheService.layer({ nodeName: 'shared-worker' })),
|
|
292
253
|
LS_DEV ? TaskTracing.withAsyncTaggingTracing((name) => (console as any).createTask(name)) : identity,
|
|
293
254
|
// TODO remove type-cast (currently needed to silence a tsc bug)
|
|
294
255
|
(_) => _ as any as Effect.Effect<void, any>,
|
|
@@ -3,7 +3,7 @@ globalThis.$RefreshReg$ = () => {}
|
|
|
3
3
|
// @ts-expect-error TODO remove when Vite does proper treeshaking during dev
|
|
4
4
|
globalThis.$RefreshSig$ = () => (type: any) => type
|
|
5
5
|
|
|
6
|
-
//
|
|
6
|
+
// @ts-expect-error Needed for React
|
|
7
7
|
globalThis.process = globalThis.process ?? { env: {} }
|
|
8
8
|
|
|
9
9
|
globalThis.document = (globalThis as any)?.document ?? {
|
package/tmp/pack.tgz
CHANGED
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/in-memory/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAA+C,MAAM,mBAAmB,CAAA;AAc7F,4DAA4D;AAC5D,eAAO,MAAM,mBAAmB,GAC7B,cAAc,UAAU,KAAG,OAiDmB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/in-memory/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAA;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEhD,4EAA4E;AAE5E,mFAAmF;AACnF,MAAM,cAAc,GAAG,eAAe,EAAE,CAAA;AAExC,4DAA4D;AAC5D,MAAM,CAAC,MAAM,mBAAmB,GAC9B,CAAC,WAAwB,EAAW,EAAE,CACtC,CAAC,EACC,MAAM;AACN,qEAAqE;EACtE,EAAE,EAAE,CACH,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,CAAA;IAE3D,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAA;IAC3E,IAAI,gBAAgB,GAAqB,EAAE,UAAU,EAAE,EAAE,EAAE,CAAA;IAE3D,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,KAAK,CAAC,CAAC,mBAAmB,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAA;QAE3D,gBAAgB,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;QAE7D,yBAAyB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC7C,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QAE5B,KAAK,CAAC,CAAC,mBAAmB,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAA;IAC7D,CAAC;IAED,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAa,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAEpF,MAAM,aAAa,GAAG;QACpB,QAAQ;QACR,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;QAC5B,QAAQ,EAAE,WAAW;QACrB,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;QACpB,YAAY,EAAE;YACZ,SAAS,EAAE;gBACT,IAAI,EAAE,MAAM,CAAC,KAAK;gBAClB,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI;aACxB;YACD,YAAY,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,IAAI,EAAE,gBAAgB,EAAE;YAC5D,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC;YAC5C,kBAAkB,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,UAAU,EAAE,CAAC;YACpD,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC;YAClD,aAAa,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAC3G,MAAM,CAAC,OAAO,CACf;YACD,mBAAmB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC;SAChE;QACD,UAAU;QACV,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,yBAAyB,CAAC;KACrC,CAAA;IAEzB,OAAO,aAAa,CAAA;AACtB,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/web-worker/client-session/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAA4C,MAAM,mBAAmB,CAAA;AAuC1F,OAAO,KAAK,YAAY,MAAM,4BAA4B,CAAA;AAc1D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,UAAU,CAAC,MAAM,CAAC,CAAA;IACnH;;;;;;;;;;;;;OAaG;IACH,YAAY,EACR,CAAC,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,UAAU,CAAC,YAAY,CAAC,GACxD,CAAC,KAAK,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,UAAU,CAAC,YAAY,CAAC,CAAA;IAChE;;OAEG;IACH,OAAO,EAAE,YAAY,CAAC,kBAAkB,CAAA;IACxC;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,eAAO,MAAM,WAAW,GACrB,SAAS,iBAAiB,KAAG,OAmciB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/web-worker/client-session/index.ts"],"names":[],"mappings":"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"}
|