@livestore/adapter-web 0.3.0-dev.19 → 0.3.0-dev.22

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 (50) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/web-worker/client-session/client-session-devtools.d.ts +1 -1
  3. package/dist/web-worker/client-session/client-session-devtools.d.ts.map +1 -1
  4. package/dist/web-worker/client-session/client-session-devtools.js +7 -97
  5. package/dist/web-worker/client-session/client-session-devtools.js.map +1 -1
  6. package/dist/web-worker/client-session/index.d.ts +10 -0
  7. package/dist/web-worker/client-session/index.d.ts.map +1 -1
  8. package/dist/web-worker/client-session/index.js +51 -17
  9. package/dist/web-worker/client-session/index.js.map +1 -1
  10. package/dist/web-worker/common/persisted-sqlite.d.ts +1 -1
  11. package/dist/web-worker/common/worker-schema.d.ts +9 -3
  12. package/dist/web-worker/common/worker-schema.d.ts.map +1 -1
  13. package/package.json +7 -14
  14. package/src/web-worker/client-session/client-session-devtools.ts +8 -155
  15. package/src/web-worker/client-session/index.ts +79 -16
  16. package/dist/devtools-bridge/background-browser-channel.d.ts +0 -9
  17. package/dist/devtools-bridge/background-browser-channel.d.ts.map +0 -1
  18. package/dist/devtools-bridge/background-browser-channel.js +0 -31
  19. package/dist/devtools-bridge/background-browser-channel.js.map +0 -1
  20. package/dist/devtools-bridge/background-message.d.ts +0 -75
  21. package/dist/devtools-bridge/background-message.d.ts.map +0 -1
  22. package/dist/devtools-bridge/background-message.js +0 -53
  23. package/dist/devtools-bridge/background-message.js.map +0 -1
  24. package/dist/devtools-bridge/bridge-shared.d.ts +0 -14
  25. package/dist/devtools-bridge/bridge-shared.d.ts.map +0 -1
  26. package/dist/devtools-bridge/bridge-shared.js +0 -67
  27. package/dist/devtools-bridge/bridge-shared.js.map +0 -1
  28. package/dist/devtools-bridge/browser-extension-bridge.d.ts +0 -3
  29. package/dist/devtools-bridge/browser-extension-bridge.d.ts.map +0 -1
  30. package/dist/devtools-bridge/browser-extension-bridge.js +0 -59
  31. package/dist/devtools-bridge/browser-extension-bridge.js.map +0 -1
  32. package/dist/devtools-bridge/iframe-message.d.ts +0 -16
  33. package/dist/devtools-bridge/iframe-message.d.ts.map +0 -1
  34. package/dist/devtools-bridge/iframe-message.js +0 -11
  35. package/dist/devtools-bridge/iframe-message.js.map +0 -1
  36. package/dist/devtools-bridge/index.d.ts +0 -6
  37. package/dist/devtools-bridge/index.d.ts.map +0 -1
  38. package/dist/devtools-bridge/index.js +0 -5
  39. package/dist/devtools-bridge/index.js.map +0 -1
  40. package/dist/devtools-bridge/web-bridge.d.ts +0 -31
  41. package/dist/devtools-bridge/web-bridge.d.ts.map +0 -1
  42. package/dist/devtools-bridge/web-bridge.js +0 -131
  43. package/dist/devtools-bridge/web-bridge.js.map +0 -1
  44. package/src/devtools-bridge/background-browser-channel.ts +0 -57
  45. package/src/devtools-bridge/background-message.ts +0 -42
  46. package/src/devtools-bridge/bridge-shared.ts +0 -97
  47. package/src/devtools-bridge/browser-extension-bridge.ts +0 -64
  48. package/src/devtools-bridge/iframe-message.ts +0 -9
  49. package/src/devtools-bridge/index.ts +0 -9
  50. package/src/devtools-bridge/web-bridge.ts +0 -169
@@ -1,169 +0,0 @@
1
- import type { WebAdapterOptions } from '@livestore/adapter-web'
2
- import { WorkerSchema } from '@livestore/adapter-web'
3
- import { Devtools, liveStoreVersion } from '@livestore/common'
4
- import type { LiveStoreSchema } from '@livestore/common/schema'
5
- import { tryAsFunctionAndNew } from '@livestore/utils'
6
- import type { Deferred, HashSet, Scope, SubscriptionRef } from '@livestore/utils/effect'
7
- import { BrowserWorker, Effect, Equal, FiberSet, Hash, PubSub, Schema, Stream, Worker } from '@livestore/utils/effect'
8
- import { nanoid } from '@livestore/utils/nanoid'
9
-
10
- import { makeShared } from './bridge-shared.js'
11
-
12
- export class WebBridgeInfo extends Schema.Class<WebBridgeInfo>('WebBridgeChannelInfo')({
13
- appHostId: Schema.String,
14
- storeId: Schema.String,
15
- webBridgeId: Schema.String,
16
- isLeader: Schema.Boolean,
17
- }) {
18
- // eslint-disable-next-line prefer-arrow/prefer-arrow-functions
19
- [Hash.symbol](): number {
20
- return Hash.string(this.appHostId)
21
- }
22
-
23
- // eslint-disable-next-line prefer-arrow/prefer-arrow-functions
24
- [Equal.symbol](that: Equal.Equal): boolean {
25
- return this.appHostId === (that as WebBridgeInfo).appHostId
26
- }
27
- }
28
-
29
- export type WebBridgeOptions = {
30
- selectedChannelInfoDeferred: Deferred.Deferred<WebBridgeInfo>
31
- bridgeInfos: SubscriptionRef.SubscriptionRef<HashSet.HashSet<WebBridgeInfo>>
32
- }
33
-
34
- // const prepareWebDevtoolsBridge = (
35
- // options: {
36
- // sharedWorker: WebAdapterOptions['sharedWorker']
37
- // appSchema: LiveStoreSchema
38
- // } & WebBridgeOptions,
39
- // ): Effect.Effect<Devtools.PrepareDevtoolsBridge, never, Scope.Scope> =>
40
- // Effect.gen(function* () {
41
- // const responsePubSub = yield* PubSub.unbounded<
42
- // Devtools.MessageFromApp | Devtools.MessageFromApp
43
- // >().pipe(Effect.acquireRelease(PubSub.shutdown))
44
-
45
- // const devtoolsId = nanoid()
46
-
47
- // const portForDevtoolsDeferred = yield* Deferred.make<MessagePort>()
48
-
49
- // const webBridgeBroadcastChannel = yield* Devtools.WebBridge.makeBroadcastChannel()
50
-
51
- // yield* webBridgeBroadcastChannel.listen.pipe(
52
- // Stream.flatten(),
53
- // Stream.filter(Schema.is(Devtools.WebBridge.AppHostReady)),
54
- // Stream.tap(() => webBridgeBroadcastChannel.send(Devtools.WebBridge.DevtoolsReady.make({ devtoolsId }))),
55
- // Stream.runDrain,
56
- // Effect.withSpan(`@livestore/adapter-web:devtools:webBridgeChannel:listen`),
57
- // Effect.ignoreLogged,
58
- // Effect.forkScoped,
59
- // )
60
-
61
- // yield* webBridgeBroadcastChannel.send(Devtools.WebBridge.DevtoolsReady.make({ devtoolsId }))
62
-
63
- // const connectionFiberSet = yield* FiberSet.make()
64
-
65
- // yield* webBridgeBroadcastChannel.listen.pipe(
66
- // Stream.flatten(),
67
- // Stream.filter(Schema.is(Devtools.WebBridge.ConnectToDevtools)),
68
- // Stream.tap((msg) =>
69
- // Effect.gen(function* () {
70
- // if (devtoolsId !== msg.devtoolsId) return
71
-
72
- // const bridgeInfo = new WebBridgeInfo({
73
- // appHostId: msg.appHostId,
74
- // webBridgeId: msg.webBridgeId,
75
- // isLeader: msg.isLeader,
76
- // storeId: msg.storeId,
77
- // })
78
-
79
- // // Propagate disconnect event while connecting.
80
- // // There's another disconnect handler below after the connection is established.
81
- // yield* webBridgeBroadcastChannel.listen.pipe(
82
- // Stream.flatten(),
83
- // Stream.filter(Schema.is(Devtools.WebBridge.AppHostWillDisconnect)),
84
- // Stream.filter((msg) => msg.appHostId === bridgeInfo.appHostId),
85
- // Stream.tap(() => SubscriptionRef.getAndUpdate(options.bridgeInfos, HashSet.remove(bridgeInfo))),
86
- // Stream.runDrain,
87
- // Effect.withSpan(`@livestore/adapter-web:devtools:webBridgeChannel:listenForAppHostWillDisconnect`),
88
- // Effect.tapCauseLogPretty,
89
- // FiberSet.run(connectionFiberSet),
90
- // )
91
-
92
- // yield* SubscriptionRef.getAndUpdate(options.bridgeInfos, HashSet.add(bridgeInfo))
93
- // }),
94
- // ),
95
- // Stream.runDrain,
96
- // Effect.withSpan(`@livestore/adapter-web:devtools:webBridgeChannel:listen`),
97
- // Effect.tapCauseLogPretty,
98
- // FiberSet.run(connectionFiberSet),
99
- // )
100
-
101
- // const selectedChannelInfo = yield* Deferred.await(options.selectedChannelInfoDeferred)
102
-
103
- // const sharedWorker = tryAsFunctionAndNew(options.sharedWorker, {
104
- // name: `livestore-shared-worker-${selectedChannelInfo.storeId}`,
105
- // })
106
-
107
- // const sharedWorkerDeferred = yield* Worker.makeSerialized<typeof WorkerSchema.SharedWorker.Request.Type>({
108
- // initialMessage: () => new WorkerSchema.SharedWorker.InitialMessage({ payload: { _tag: 'FromWebBridge' } }),
109
- // }).pipe(
110
- // Effect.provide(BrowserWorker.layer(() => sharedWorker)),
111
- // Effect.tapCauseLogPretty,
112
- // Effect.withSpan('@livestore/adapter-web:coordinator:setupSharedWorker'),
113
- // Effect.toForkedDeferred,
114
- // )
115
-
116
- // yield* Effect.gen(function* () {
117
- // const mc = new MessageChannel()
118
-
119
- // const worker = yield* Deferred.await(sharedWorkerDeferred)
120
- // yield* worker.executeEffect(
121
- // new WorkerSchema.SharedWorker.DevtoolsWebBridgeOfferPort({
122
- // port: mc.port1,
123
- // webBridgeId: selectedChannelInfo.webBridgeId,
124
- // }),
125
- // )
126
-
127
- // yield* Deferred.succeed(portForDevtoolsDeferred, mc.port2)
128
-
129
- // // Stop listening for new connections and close `AppHostWillDisconnect` listeners
130
- // yield* FiberSet.clear(connectionFiberSet)
131
- // }).pipe(Effect.tapCauseLogPretty, Effect.forkScoped)
132
-
133
- // const { sendToAppHost, appHostId, isLeader } = yield* makeShared({ portForDevtoolsDeferred, responsePubSub })
134
-
135
- // // NOTE we need a second listener here since we depend on the `appHostId` to be set
136
- // yield* webBridgeBroadcastChannel.listen.pipe(
137
- // Stream.flatten(),
138
- // Stream.filter(Schema.is(Devtools.WebBridge.AppHostWillDisconnect)),
139
- // Stream.filter((msg) => msg.appHostId === appHostId),
140
- // Stream.tap(() => SubscriptionRef.getAndUpdate(options.bridgeInfos, HashSet.remove(selectedChannelInfo))),
141
- // Stream.tap(() => PubSub.publish(responsePubSub, Devtools.Disconnect.make({ appHostId, liveStoreVersion }))),
142
- // Stream.runDrain,
143
- // Effect.withSpan(`@livestore/adapter-web:devtools:webBridgeChannel:listenForAppHostWillDisconnect`),
144
- // Effect.ignoreLogged,
145
- // Effect.forkScoped,
146
- // )
147
-
148
- // // NOTE this is not guaranteed to "go through" to the app host but at least we try 🤷
149
- // yield* Stream.fromEventListener(window, 'beforeunload').pipe(
150
- // Stream.tap(() => sendToAppHost(Devtools.Disconnect.make({ appHostId, liveStoreVersion }))),
151
- // Stream.runDrain,
152
- // Effect.ignoreLogged,
153
- // Effect.forkScoped,
154
- // )
155
-
156
- // const copyToClipboard = (text: string) =>
157
- // Effect.sync(() => {
158
- // navigator.clipboard.writeText(text)
159
- // })
160
-
161
- // return {
162
- // responsePubSub,
163
- // sendToAppHost,
164
- // appHostId,
165
- // copyToClipboard,
166
- // sendEscapeKey: Effect.void,
167
- // isLeader,
168
- // } satisfies Devtools.PrepareDevtoolsBridge
169
- // }).pipe(Effect.orDie)