@livestore/adapter-node 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.
Files changed (43) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/client-session/in-memory-adapter.d.ts +21 -0
  3. package/dist/client-session/in-memory-adapter.d.ts.map +1 -0
  4. package/dist/{in-memory/index.js → client-session/in-memory-adapter.js} +5 -4
  5. package/dist/client-session/in-memory-adapter.js.map +1 -0
  6. package/dist/client-session/{index.d.ts → persisted-adapter.d.ts} +2 -2
  7. package/dist/client-session/persisted-adapter.d.ts.map +1 -0
  8. package/dist/client-session/{index.js → persisted-adapter.js} +16 -43
  9. package/dist/client-session/persisted-adapter.js.map +1 -0
  10. package/dist/devtools/devtools-server.d.ts +1 -3
  11. package/dist/devtools/devtools-server.d.ts.map +1 -1
  12. package/dist/devtools/devtools-server.js +46 -44
  13. package/dist/devtools/devtools-server.js.map +1 -1
  14. package/dist/devtools/mod.d.ts +1 -1
  15. package/dist/devtools/mod.d.ts.map +1 -1
  16. package/dist/devtools/mod.js +1 -1
  17. package/dist/devtools/mod.js.map +1 -1
  18. package/dist/devtools/vite-dev-server.d.ts +1 -1
  19. package/dist/devtools/vite-dev-server.d.ts.map +1 -1
  20. package/dist/devtools/vite-dev-server.js +1 -1
  21. package/dist/devtools/vite-dev-server.js.map +1 -1
  22. package/dist/index.d.ts +2 -2
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +2 -2
  25. package/dist/index.js.map +1 -1
  26. package/dist/make-leader-worker.js +1 -1
  27. package/dist/make-leader-worker.js.map +1 -1
  28. package/dist/worker-schema.d.ts +1 -1
  29. package/dist/worker-schema.d.ts.map +1 -1
  30. package/package.json +8 -8
  31. package/src/{in-memory/index.ts → client-session/in-memory-adapter.ts} +16 -2
  32. package/src/client-session/{index.ts → persisted-adapter.ts} +27 -50
  33. package/src/devtools/devtools-server.ts +75 -59
  34. package/src/devtools/mod.ts +1 -1
  35. package/src/devtools/vite-dev-server.ts +1 -1
  36. package/src/index.ts +2 -2
  37. package/src/make-leader-worker.ts +1 -1
  38. package/tmp/pack.tgz +0 -0
  39. package/dist/client-session/index.d.ts.map +0 -1
  40. package/dist/client-session/index.js.map +0 -1
  41. package/dist/in-memory/index.d.ts +0 -15
  42. package/dist/in-memory/index.d.ts.map +0 -1
  43. package/dist/in-memory/index.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@livestore/adapter-node",
3
- "version": "0.3.0-dev.23",
3
+ "version": "0.3.0-dev.25",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "exports": {
@@ -26,17 +26,17 @@
26
26
  }
27
27
  },
28
28
  "dependencies": {
29
- "@livestore/devtools-vite": "0.3.0-dev.23",
29
+ "@livestore/devtools-vite": "0.3.0-dev.25",
30
30
  "@opentelemetry/api": "1.9.0",
31
31
  "@opentelemetry/otlp-exporter-base": "0.57.2",
32
32
  "vite": "6.2.1",
33
33
  "ws": "8.18.0",
34
- "@livestore/devtools-node-common": "0.3.0-dev.23",
35
- "@livestore/adapter-web": "0.3.0-dev.23",
36
- "@livestore/common": "0.3.0-dev.23",
37
- "@livestore/utils": "0.3.0-dev.23",
38
- "@livestore/webmesh": "0.3.0-dev.23",
39
- "@livestore/sqlite-wasm": "0.3.0-dev.23"
34
+ "@livestore/common": "0.3.0-dev.25",
35
+ "@livestore/devtools-node-common": "0.3.0-dev.25",
36
+ "@livestore/adapter-web": "0.3.0-dev.25",
37
+ "@livestore/utils": "0.3.0-dev.25",
38
+ "@livestore/sqlite-wasm": "0.3.0-dev.25",
39
+ "@livestore/webmesh": "0.3.0-dev.25"
40
40
  },
41
41
  "devDependencies": {
42
42
  "@rollup/plugin-commonjs": "^28.0.3",
@@ -30,11 +30,18 @@ export interface InMemoryAdapterOptions {
30
30
  * @default nanoid(6)
31
31
  */
32
32
  sessionId?: string
33
+
34
+ /** Only used internally for testing */
35
+ testing?: {
36
+ overrides?: {
37
+ leaderThread?: Partial<ClientSessionLeaderThreadProxy>
38
+ }
39
+ }
33
40
  }
34
41
 
35
42
  /** NOTE: This adapter is currently only used for testing */
36
43
  export const makeInMemoryAdapter =
37
- ({ sync: syncOptions, clientId = 'in-memory', sessionId = nanoid(6) }: InMemoryAdapterOptions): Adapter =>
44
+ ({ sync: syncOptions, clientId = 'in-memory', sessionId = nanoid(6), testing }: InMemoryAdapterOptions): Adapter =>
38
45
  ({
39
46
  schema,
40
47
  storeId,
@@ -68,6 +75,7 @@ export const makeInMemoryAdapter =
68
75
  makeSqliteDb,
69
76
  syncOptions,
70
77
  syncPayload,
78
+ testing,
71
79
  })
72
80
 
73
81
  sqliteDb.import(initialSnapshot)
@@ -92,6 +100,7 @@ const makeLeaderThread = ({
92
100
  makeSqliteDb,
93
101
  syncOptions,
94
102
  syncPayload,
103
+ testing,
95
104
  }: {
96
105
  storeId: string
97
106
  clientId: string
@@ -99,6 +108,11 @@ const makeLeaderThread = ({
99
108
  makeSqliteDb: MakeSqliteDb
100
109
  syncOptions: SyncOptions | undefined
101
110
  syncPayload: Schema.JsonValue | undefined
111
+ testing?: {
112
+ overrides?: {
113
+ leaderThread?: Partial<ClientSessionLeaderThreadProxy>
114
+ }
115
+ }
102
116
  }) =>
103
117
  Effect.gen(function* () {
104
118
  const layer = yield* Layer.memoize(
@@ -132,7 +146,7 @@ const makeLeaderThread = ({
132
146
 
133
147
  const leaderThread = {
134
148
  mutations: {
135
- pull: Stream.fromQueue(pullQueue),
149
+ pull: testing?.overrides?.leaderThread?.mutations?.pull ?? (() => Stream.fromQueue(pullQueue)),
136
150
  push: (batch) =>
137
151
  syncProcessor
138
152
  .push(
@@ -19,6 +19,7 @@ import {
19
19
  Effect,
20
20
  FetchHttpClient,
21
21
  Fiber,
22
+ Layer,
22
23
  ParseResult,
23
24
  Queue,
24
25
  Schema,
@@ -62,7 +63,7 @@ export interface NodeAdapterOptions {
62
63
  /**
63
64
  * Warning: This adapter doesn't currently support multiple client sessions for the same client (i.e. same storeId + clientId)
64
65
  */
65
- export const makeNodeAdapter = ({
66
+ export const makePersistedAdapter = ({
66
67
  workerUrl,
67
68
  schemaPath,
68
69
  baseDirectory,
@@ -135,8 +136,6 @@ export const makeNodeAdapter = ({
135
136
  sessionInfo: Devtools.SessionInfo.SessionInfo.make({ storeId, clientId, sessionId }),
136
137
  }).pipe(Effect.tapCauseLogPretty, Effect.forkScoped)
137
138
 
138
- webmeshNode.debug.print()
139
-
140
139
  const storeDevtoolsChannel = yield* DevtoolsNode.makeChannelForConnectedMeshNode({
141
140
  node: webmeshNode,
142
141
  target: `devtools-${storeId}-${clientId}-${sessionId}`,
@@ -179,7 +178,7 @@ const makeLeaderThread = ({
179
178
  devtoolsEnabled,
180
179
  devtoolsOptions,
181
180
  schemaPath,
182
- // bootStatusQueue,
181
+ bootStatusQueue,
183
182
  syncPayload,
184
183
  }: {
185
184
  shutdown: (cause: Cause.Cause<UnexpectedError | IntentionalShutdownCause>) => void
@@ -199,8 +198,9 @@ const makeLeaderThread = ({
199
198
  execArgv: process.env.DEBUG_WORKER ? ['--inspect --enable-source-maps'] : ['--enable-source-maps'],
200
199
  argv: [Schema.encodeSync(WorkerSchema.WorkerArgv)({ storeId, clientId, sessionId })],
201
200
  })
201
+ const nodeWorkerLayer = yield* Layer.build(PlatformNode.NodeWorker.layer(() => nodeWorker))
202
202
 
203
- const leaderThreadFiber = yield* Worker.makePoolSerialized<typeof WorkerSchema.LeaderWorkerInner.Request.Type>({
203
+ const worker = yield* Worker.makePoolSerialized<typeof WorkerSchema.LeaderWorkerInner.Request.Type>({
204
204
  size: 1,
205
205
  concurrency: 100,
206
206
  initialMessage: () =>
@@ -213,12 +213,10 @@ const makeLeaderThread = ({
213
213
  syncPayload,
214
214
  }),
215
215
  }).pipe(
216
- Effect.provide(PlatformNode.NodeWorker.layer(() => nodeWorker)),
216
+ Effect.provide(nodeWorkerLayer),
217
217
  UnexpectedError.mapToUnexpectedError,
218
218
  Effect.tapErrorCause((cause) => Effect.sync(() => shutdown(cause))),
219
219
  Effect.withSpan('@livestore/adapter-node:adapter:setupLeaderThread'),
220
- Effect.tapCauseLogPretty,
221
- Effect.forkScoped,
222
220
  )
223
221
 
224
222
  yield* Effect.addFinalizer(() =>
@@ -240,8 +238,7 @@ const makeLeaderThread = ({
240
238
  ): TReq extends Schema.WithResult<infer A, infer _I, infer _E, infer _EI, infer R>
241
239
  ? Effect.Effect<A, UnexpectedError, R>
242
240
  : never =>
243
- Fiber.join(leaderThreadFiber).pipe(
244
- Effect.flatMap((worker) => worker.executeEffect(req) as any),
241
+ (worker.executeEffect(req) as any).pipe(
245
242
  Effect.logWarnIfTakesLongerThan({
246
243
  label: `@livestore/adapter-node:client-session:runInWorker:${req._tag}`,
247
244
  duration: 2000,
@@ -262,37 +259,19 @@ const makeLeaderThread = ({
262
259
  ): TReq extends Schema.WithResult<infer A, infer _I, infer _E, infer _EI, infer R>
263
260
  ? Stream.Stream<A, UnexpectedError, R>
264
261
  : never =>
265
- Effect.gen(function* () {
266
- const sharedWorker = yield* Fiber.join(leaderThreadFiber)
267
- return sharedWorker.execute(req as any).pipe(
268
- Stream.mapError((cause) =>
269
- Schema.is(UnexpectedError)(cause)
270
- ? cause
271
- : ParseResult.isParseError(cause) || Schema.is(WorkerError.WorkerError)(cause)
272
- ? new UnexpectedError({ cause })
273
- : cause,
274
- ),
275
- Stream.withSpan(`@livestore/adapter-node:client-session:runInWorkerStream:${req._tag}`),
276
- )
277
- }).pipe(Stream.unwrap) as any
278
-
279
- const _bootStatusFiber = yield* runInWorkerStream(new WorkerSchema.LeaderWorkerInner.BootStatusStream()).pipe(
280
- // TODO bring back when fixed https://github.com/Effect-TS/effect/issues/4576
281
- // Stream.tap((bootStatus) => Queue.offer(bootStatusQueue, bootStatus)),
282
- // TODO remove when fixed https://github.com/Effect-TS/effect/issues/4576
283
- // Stream.tap(
284
- // Effect.fn(function* (_) {
285
- // if (yield* Queue.isShutdown(bootStatusQueue)) {
286
- // return
287
- // } else {
288
- // console.log('offering boot status', _)
289
- // // yield* Queue.offer(bootStatusQueue, _).pipe(
290
- // // Effect.onInterrupt(() => Effect.log('boot status stream interrupted')),
291
- // // // Effect.tapErrorCause((cause) => Effect.logError('error offering boot status', cause)),
292
- // // )
293
- // }
294
- // }),
295
- // ),
262
+ worker.execute(req as any).pipe(
263
+ Stream.mapError((cause) =>
264
+ Schema.is(UnexpectedError)(cause)
265
+ ? cause
266
+ : ParseResult.isParseError(cause) || Schema.is(WorkerError.WorkerError)(cause)
267
+ ? new UnexpectedError({ cause })
268
+ : cause,
269
+ ),
270
+ Stream.withSpan(`@livestore/adapter-node:client-session:runInWorkerStream:${req._tag}`),
271
+ ) as any
272
+
273
+ const bootStatusFiber = yield* runInWorkerStream(new WorkerSchema.LeaderWorkerInner.BootStatusStream()).pipe(
274
+ Stream.tap((bootStatus) => Queue.offer(bootStatusQueue, bootStatus)),
296
275
  Stream.runDrain,
297
276
  Effect.tapErrorCause((cause) =>
298
277
  Cause.isInterruptedOnly(cause) ? Effect.void : Effect.sync(() => shutdown(cause)),
@@ -302,12 +281,11 @@ const makeLeaderThread = ({
302
281
  Effect.forkScoped,
303
282
  )
304
283
 
305
- // TODO bring back when fixed https://github.com/Effect-TS/effect/issues/4576
306
- // yield* Queue.awaitShutdown(bootStatusQueue).pipe(
307
- // Effect.andThen(Fiber.interrupt(bootStatusFiber)),
308
- // Effect.tapCauseLogPretty,
309
- // Effect.forkScoped,
310
- // )
284
+ yield* Queue.awaitShutdown(bootStatusQueue).pipe(
285
+ Effect.andThen(Fiber.interrupt(bootStatusFiber)),
286
+ Effect.tapCauseLogPretty,
287
+ Effect.forkScoped,
288
+ )
311
289
 
312
290
  const initialLeaderHead = yield* runInWorker(new WorkerSchema.LeaderWorkerInner.GetLeaderHead())
313
291
 
@@ -326,9 +304,8 @@ const makeLeaderThread = ({
326
304
  const leaderThread = {
327
305
  networkStatus,
328
306
  mutations: {
329
- pull: runInWorkerStream(new WorkerSchema.LeaderWorkerInner.PullStream({ cursor: initialLeaderHead })).pipe(
330
- Stream.orDie,
331
- ),
307
+ pull: ({ cursor }) =>
308
+ runInWorkerStream(new WorkerSchema.LeaderWorkerInner.PullStream({ cursor })).pipe(Stream.orDie),
332
309
  push: (batch) =>
333
310
  runInWorker(new WorkerSchema.LeaderWorkerInner.PushToLeader({ batch })).pipe(
334
311
  Effect.withSpan('@livestore/adapter-node:client-session:pushToLeader', {
@@ -1,13 +1,22 @@
1
1
  import http from 'node:http'
2
2
  import path from 'node:path'
3
3
 
4
- import { UnexpectedError } from '@livestore/common'
5
4
  import { LS_DEV } from '@livestore/utils'
6
- import type { HttpClient, Scope } from '@livestore/utils/effect'
7
- import { Effect } from '@livestore/utils/effect'
8
- import { makeWebSocketServer } from '@livestore/webmesh/websocket-server'
5
+ import {
6
+ Deferred,
7
+ Effect,
8
+ Exit,
9
+ Headers,
10
+ HttpMiddleware,
11
+ HttpServer,
12
+ HttpServerRequest,
13
+ HttpServerResponse,
14
+ Layer,
15
+ } from '@livestore/utils/effect'
16
+ import { PlatformNode } from '@livestore/utils/node'
17
+ import { makeMeshNode, makeWebSocketEdge } from '@livestore/webmesh'
9
18
 
10
- import { makeViteServer } from './vite-dev-server.js'
19
+ import { makeViteMiddleware } from './vite-dev-server.js'
11
20
 
12
21
  /**
13
22
  * Starts a devtools HTTP/WS server which serves ...
@@ -28,52 +37,10 @@ export const startDevtoolsServer = ({
28
37
  sessionId: string
29
38
  host: string
30
39
  port: number
31
- }): Effect.Effect<void, UnexpectedError, Scope.Scope | HttpClient.HttpClient> =>
40
+ }) =>
32
41
  Effect.gen(function* () {
33
- const httpServer = yield* Effect.sync(() => http.createServer()).pipe(
34
- Effect.acquireRelease((httpServer) =>
35
- Effect.async<void, UnexpectedError>((cb) => {
36
- httpServer.removeAllListeners()
37
- httpServer.closeAllConnections()
38
- httpServer.close((err) => {
39
- if (err) {
40
- cb(Effect.fail(UnexpectedError.make({ cause: err })))
41
- } else {
42
- cb(Effect.succeed(undefined))
43
- }
44
- })
45
- }).pipe(Effect.orDie),
46
- ),
47
- )
48
-
49
- const webSocketServer = yield* makeWebSocketServer({ relayNodeName: 'ws' })
50
-
51
- // Handle upgrade manually
52
- httpServer.on('upgrade', (request, socket, head) => {
53
- webSocketServer.handleUpgrade(request, socket, head, (ws) => {
54
- webSocketServer.emit('connection', ws, request)
55
- })
56
- })
57
-
58
- const startServer = (port: number) =>
59
- Effect.async<void, UnexpectedError>((cb) => {
60
- httpServer.on('error', (err: any) => {
61
- cb(UnexpectedError.make({ cause: err }))
62
- })
63
-
64
- httpServer.listen(port, host, () => {
65
- cb(Effect.succeed(undefined))
66
- })
67
- })
68
-
69
- yield* startServer(port)
70
-
71
- yield* Effect.logDebug(
72
- `[@livestore/adapter-node:devtools] LiveStore devtools are available at http://${host}:${port}/_livestore/node/${storeId}/${clientId}/${sessionId}`,
73
- )
74
-
75
42
  const clientSessionInfo = { storeId, clientId, sessionId }
76
- const viteServer = yield* makeViteServer({
43
+ const viteMiddleware = yield* makeViteMiddleware({
77
44
  mode: { _tag: 'node', clientSessionInfo, url: `ws://localhost:${port}` },
78
45
  schemaPath: path.resolve(process.cwd(), schemaPath),
79
46
  viteConfig: (viteConfig) => {
@@ -88,16 +55,65 @@ export const startDevtoolsServer = ({
88
55
 
89
56
  return viteConfig
90
57
  },
91
- })
58
+ }).pipe(Effect.acquireRelease((viteMiddleware) => Effect.promise(() => viteMiddleware.close())))
59
+
60
+ const relayNodeName = 'ws'
61
+
62
+ const node = yield* makeMeshNode(relayNodeName)
63
+
64
+ const handler = Effect.gen(function* () {
65
+ const req = yield* HttpServerRequest.HttpServerRequest
66
+
67
+ if (Headers.has(req.headers, 'upgrade')) {
68
+ // yield* Effect.log(`WS Relay ${relayNodeName}: request ${req.url}`)
92
69
 
93
- yield* Effect.addFinalizer(() => Effect.promise(() => viteServer.close()))
70
+ const socket = yield* req.upgrade
94
71
 
95
- httpServer.on('request', (req, res) => {
96
- if (req.url === '/' || req.url === '') {
97
- res.writeHead(302, { Location: '/_livestore/node' })
98
- res.end()
99
- } else if (req.url?.startsWith('/_livestore')) {
100
- return viteServer.middlewares(req, res as any)
72
+ const { webChannel, from } = yield* makeWebSocketEdge({ socket, socketType: { _tag: 'relay' } })
73
+
74
+ yield* node
75
+ .addEdge({ target: from, edgeChannel: webChannel, replaceIfExists: true })
76
+ .pipe(Effect.acquireRelease(() => node.removeEdge(from).pipe(Effect.orDie)))
77
+
78
+ if (LS_DEV) {
79
+ yield* Effect.log(`WS Relay ${relayNodeName}: added edge from '${from}'`)
80
+ yield* Effect.addFinalizerLog(`WS Relay ${relayNodeName}: removed edge from '${from}'`)
81
+ }
82
+
83
+ // We want to keep the websocket open until the client disconnects or the server shuts down
84
+ yield* Effect.never
85
+
86
+ return HttpServerResponse.empty({ status: 101 })
87
+ } else {
88
+ if (req.url === '/' || req.url === '') {
89
+ return HttpServerResponse.redirect('/_livestore/node')
90
+ } else if (req.url.startsWith('/_livestore')) {
91
+ // Here we're delegating to the Vite middleware
92
+
93
+ // TODO replace this once @effect/platform-node supports Node HTTP middlewares
94
+ const nodeReq = PlatformNode.NodeHttpServerRequest.toIncomingMessage(req)
95
+ const nodeRes = PlatformNode.NodeHttpServerRequest.toServerResponse(req)
96
+ const deferred = yield* Deferred.make()
97
+ viteMiddleware.middlewares(nodeReq, nodeRes, () => Deferred.unsafeDone(deferred, Exit.void))
98
+ yield* deferred
99
+
100
+ // The response is already sent, so we need to return an empty response (which won't be sent)
101
+ return HttpServerResponse.empty()
102
+ }
101
103
  }
102
- })
103
- }).pipe(Effect.withSpan('@livestore/adapter-node:devtools:startDevtoolsServer'))
104
+
105
+ return HttpServerResponse.text('Not found')
106
+ }).pipe(Effect.interruptible)
107
+
108
+ yield* Effect.logDebug(
109
+ `[@livestore/adapter-node:devtools] LiveStore devtools are available at http://${host}:${port}/_livestore/node/${storeId}/${clientId}/${sessionId}`,
110
+ )
111
+
112
+ return HttpServer.serve(handler, HttpMiddleware.logger)
113
+ }).pipe(
114
+ Layer.unwrapScoped,
115
+ // HttpServer.withLogAddress,
116
+ Layer.provide(PlatformNode.NodeHttpServer.layer(() => http.createServer(), { port, host })),
117
+ Layer.launch,
118
+ Effect.orDie,
119
+ )
@@ -1,2 +1,2 @@
1
- export { makeViteServer } from './vite-dev-server.js'
1
+ export { makeViteMiddleware } from './vite-dev-server.js'
2
2
  export type { ViteDevtoolsOptions } from './vite-dev-server.js'
@@ -28,7 +28,7 @@ export type ViteDevtoolsOptions = {
28
28
  const __dirname = path.dirname(fileURLToPath(import.meta.url))
29
29
 
30
30
  // NOTE this is currently also used in @livestore/devtools-expo
31
- export const makeViteServer = (options: ViteDevtoolsOptions): Effect.Effect<Vite.ViteDevServer, UnexpectedError> =>
31
+ export const makeViteMiddleware = (options: ViteDevtoolsOptions): Effect.Effect<Vite.ViteDevServer, UnexpectedError> =>
32
32
  Effect.gen(function* () {
33
33
  const hmrPort = yield* getFreePort
34
34
 
package/src/index.ts CHANGED
@@ -1,2 +1,2 @@
1
- export { makeInMemoryAdapter } from './in-memory/index.js'
2
- export { makeNodeAdapter } from './client-session/index.js'
1
+ export { makeInMemoryAdapter } from './client-session/in-memory-adapter.js'
2
+ export { makePersistedAdapter } from './client-session/persisted-adapter.js'
@@ -276,7 +276,7 @@ const makeDevtoolsOptions = ({
276
276
  sessionId: 'static', // TODO make this dynamic
277
277
  port: devtoolsPort,
278
278
  host: devtoolsHost,
279
- })
279
+ }).pipe(Effect.tapCauseLogPretty, Effect.forkScoped)
280
280
 
281
281
  const devtoolsWebChannel = yield* makeNodeDevtoolsChannel({
282
282
  nodeName: `leader-${storeId}-${clientId}`,
package/tmp/pack.tgz CHANGED
Binary file
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client-session/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,OAAO,EAOR,MAAM,mBAAmB,CAAA;AAuB1B,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,SAAS,EAAE,GAAG,CAAA;IACd,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAA;IAClB,wCAAwC;IACxC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE;QACT;;;;WAIG;QACH,IAAI,EAAE,MAAM,CAAA;QACZ;;WAEG;QACH,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;CACF;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,2FAQ7B,kBAAkB,KAAG,OAiGA,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client-session/index.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- import type { Adapter, SyncOptions } from '@livestore/common';
2
- export interface InMemoryAdapterOptions {
3
- sync?: SyncOptions;
4
- /**
5
- * @default 'in-memory'
6
- */
7
- clientId?: string;
8
- /**
9
- * @default nanoid(6)
10
- */
11
- sessionId?: string;
12
- }
13
- /** NOTE: This adapter is currently only used for testing */
14
- export declare const makeInMemoryAdapter: ({ sync: syncOptions, clientId, sessionId }: InMemoryAdapterOptions) => Adapter;
15
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/in-memory/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAKP,WAAW,EACZ,MAAM,mBAAmB,CAAA;AAe1B,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,4DAA4D;AAC5D,eAAO,MAAM,mBAAmB,GAC7B,4CAAsE,sBAAsB,KAAG,OAiDjD,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/in-memory/index.ts"],"names":[],"mappings":"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"}