@livestore/adapter-cloudflare 0.4.0-dev.22 → 0.4.0-dev.23

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.
@@ -1 +1 @@
1
- {"version":3,"file":"WebSocket.d.ts","sourceRoot":"","sources":["../src/WebSocket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,MAAM,EAAkB,KAAK,QAAQ,EAAE,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAC3F,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAO3D;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,oCAK3B;IACD,+CAA+C;IAC/C,aAAa,EAAE,OAAO,CAAC,iBAAiB,CAAA;IACxC,GAAG,EAAE,GAAG,CAAA;IACR,SAAS,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,KAAK,CAAA;CAC/C,KAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,cAAc,EAAE,KAAK,CAAC,KAAK,CA8CtE,CAAA"}
1
+ {"version":3,"file":"WebSocket.d.ts","sourceRoot":"","sources":["../src/WebSocket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,MAAM,EAAkB,KAAK,QAAQ,EAAE,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAC3F,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAO3D;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,oCAK3B;IACD,+CAA+C;IAC/C,aAAa,EAAE,OAAO,CAAC,iBAAiB,CAAA;IACxC,GAAG,EAAE,GAAG,CAAA;IACR,SAAS,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,KAAK,CAAA;CAC/C,KAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,cAAc,EAAE,KAAK,CAAC,KAAK,CAkDtE,CAAA"}
package/dist/WebSocket.js CHANGED
@@ -13,14 +13,16 @@ export const makeWebSocket = ({
13
13
  reconnect, url, durableObject, }) => Effect.gen(function* () {
14
14
  // yield* validateUrl(url)
15
15
  const socket = yield* Effect.tryPromise({
16
- try: () => durableObject.fetch(url, { headers: { Upgrade: 'websocket' } }).then((res) => {
17
- if (!res.webSocket) {
16
+ try: () =>
17
+ // NOTE: .toString() required due to type mismatch between standard URL and CF's URL types
18
+ durableObject.fetch(url.toString(), { headers: { Upgrade: 'websocket' } }).then((res) => {
19
+ if (res.webSocket == null) {
18
20
  throw new Error('WebSocket upgrade failed');
19
21
  }
20
22
  return res.webSocket;
21
23
  }),
22
24
  catch: (cause) => new WebSocket.WebSocketError({ cause }),
23
- }).pipe(reconnect ? Effect.retry(reconnect) : identity, Effect.withSpan('make-websocket-durable-object'));
25
+ }).pipe(reconnect !== undefined && reconnect !== false ? Effect.retry(reconnect) : identity, Effect.withSpan('make-websocket-durable-object'));
24
26
  socket.accept();
25
27
  /**
26
28
  * Common WebSocket close codes: https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/close
@@ -38,7 +40,7 @@ reconnect, url, durableObject, }) => Effect.gen(function* () {
38
40
  yield* Effect.addFinalizer(Effect.fn(function* (exit) {
39
41
  yield* Effect.try({
40
42
  try: () => {
41
- if (Exit.isFailure(exit)) {
43
+ if (Exit.isFailure(exit) === true) {
42
44
  socket.close(3000);
43
45
  }
44
46
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"WebSocket.js","sourceRoot":"","sources":["../src/WebSocket.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAA6B,MAAM,yBAAyB,CAAA;AAC3F,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAE3D,mDAAmD;AACnD,0GAA0G;AAC1G,sJAAsJ;AACtJ,2FAA2F;AAE3F;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC;AAC5B,MAAM;AACN,SAAS,EACT,GAAG,EACH,aAAa,GAMd,EAA2E,EAAE,CAC5E,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,0BAA0B;IAE1B,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;QACtC,GAAG,EAAE,GAAG,EAAE,CACR,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAQ,EAAE,EAAE;YAChF,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;YAC7C,CAAC;YACD,OAAO,GAAG,CAAC,SAA8B,CAAA;QAC3C,CAAC,CAAC;QACJ,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC;KAC1D,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,+BAA+B,CAAC,CAAC,CAAA;IAEzG,MAAM,CAAC,MAAM,EAAE,CAAA;IAEf;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CACxB,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI;QACvB,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;YAChB,GAAG,EAAE,GAAG,EAAE;gBACR,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;oBACzB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBACpB,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBACpB,CAAC;YACH,CAAC;YACD,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;SACjE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACvB,CAAC,CAAC,CACH,CAAA;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"WebSocket.js","sourceRoot":"","sources":["../src/WebSocket.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAA6B,MAAM,yBAAyB,CAAA;AAC3F,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAE3D,mDAAmD;AACnD,0GAA0G;AAC1G,sJAAsJ;AACtJ,2FAA2F;AAE3F;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC;AAC5B,MAAM;AACN,SAAS,EACT,GAAG,EACH,aAAa,GAMd,EAA2E,EAAE,CAC5E,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,0BAA0B;IAE1B,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;QACtC,GAAG,EAAE,GAAG,EAAE;QACR,0FAA0F;QAC1F,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAQ,EAAE,EAAE;YAC3F,IAAI,GAAG,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;YAC7C,CAAC;YACD,OAAO,GAAG,CAAC,SAA8B,CAAA;QAC3C,CAAC,CAAC;QACJ,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC;KAC1D,CAAC,CAAC,IAAI,CACL,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,EACnF,MAAM,CAAC,QAAQ,CAAC,+BAA+B,CAAC,CACjD,CAAA;IAED,MAAM,CAAC,MAAM,EAAE,CAAA;IAEf;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CACxB,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI;QACvB,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;YAChB,GAAG,EAAE,GAAG,EAAE;gBACR,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;oBAClC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBACpB,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBACpB,CAAC;YACH,CAAC;YACD,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;SACjE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACvB,CAAC,CAAC,CACH,CAAA;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAC,CAAA"}
@@ -1,4 +1,4 @@
1
- import { LogConfig } from '@livestore/common';
1
+ import { LogConfig, type SyncOptions } from '@livestore/common';
2
2
  import type { CfTypes, HelperTypes } from '@livestore/common-cf';
3
3
  import { type LiveStoreSchema } from '@livestore/livestore';
4
4
  import type * as CfSyncBackend from '@livestore/sync-cf/cf-worker';
@@ -38,6 +38,12 @@ export type CreateStoreDoOptions<TSchema extends LiveStoreSchema, TEnv, TState>
38
38
  * Note: Only use this for development purposes.
39
39
  */
40
40
  resetPersistence?: boolean;
41
+ /**
42
+ * Controls how initial sync behaves when the store boots.
43
+ *
44
+ * @default { _tag: 'Blocking', timeout: 500 }
45
+ */
46
+ initialSyncOptions?: SyncOptions['initialSyncOptions'];
41
47
  } & LogConfig.WithLoggerOptions;
42
48
  /**
43
49
  * Creates a LiveStore instance inside a Cloudflare Durable Object.
@@ -79,7 +85,7 @@ export type CreateStoreDoOptions<TSchema extends LiveStoreSchema, TEnv, TState>
79
85
  *
80
86
  * @see https://livestore.dev/docs/reference/adapters/cloudflare for setup guide
81
87
  */
82
- export declare const createStoreDo: <TSchema extends LiveStoreSchema, TEnv, TState extends CfTypes.DurableObjectState = CfTypes.DurableObjectState>({ schema, storeId, clientId, sessionId, durableObject, syncBackendStub, livePull, resetPersistence, }: CreateStoreDoOptions<TSchema, TEnv, TState>) => Effect.Effect<import("@livestore/livestore").Store<TSchema, {}>, import("@livestore/common").UnknownError, never>;
88
+ export declare const createStoreDo: <TSchema extends LiveStoreSchema, TEnv, TState extends CfTypes.DurableObjectState = CfTypes.DurableObjectState>({ schema, storeId, clientId, sessionId, durableObject, syncBackendStub, livePull, resetPersistence, initialSyncOptions, }: CreateStoreDoOptions<TSchema, TEnv, TState>) => Effect.Effect<import("@livestore/livestore").Store<TSchema, {}>, import("@livestore/common").UnknownError, never>;
83
89
  /**
84
90
  * Promise-based wrapper around `createStoreDo` for simpler async/await usage.
85
91
  *
@@ -1 +1 @@
1
- {"version":3,"file":"create-store-do.d.ts","sourceRoot":"","sources":["../src/create-store-do.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAChE,OAAO,EAAe,KAAK,eAAe,EAAe,MAAM,sBAAsB,CAAA;AACrF,OAAO,KAAK,KAAK,aAAa,MAAM,8BAA8B,CAAA;AAElE,OAAO,EAAE,MAAM,EAAiB,MAAM,yBAAyB,CAAA;AAG/D,MAAM,MAAM,GAAG,GAAG;IAChB,eAAe,EAAE,OAAO,CAAC,sBAAsB,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAA;CACvF,CAAA;AAED,MAAM,MAAM,oBAAoB,CAAC,OAAO,SAAS,eAAe,EAAE,IAAI,EAAE,MAAM,IAAI;IAChF,uEAAuE;IACvE,MAAM,EAAE,OAAO,CAAA;IACf,qFAAqF;IACrF,OAAO,EAAE,MAAM,CAAA;IACf,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,CAAA;IAChB,8EAA8E;IAC9E,SAAS,EAAE,MAAM,CAAA;IACjB,8HAA8H;IAC9H,aAAa,EAAE;QACb,qDAAqD;QACrD,GAAG,EAAE,MAAM,CAAA;QACX,+DAA+D;QAC/D,GAAG,EAAE,IAAI,CAAA;QACT,oFAAoF;QACpF,WAAW,EAAE,WAAW,CAAC,wBAAwB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;KACjE,CAAA;IACD,iFAAiF;IACjF,eAAe,EAAE,OAAO,CAAC,iBAAiB,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAA;IACjF;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,GAAG,SAAS,CAAC,iBAAiB,CAAA;AAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,eAAO,MAAM,aAAa,GACxB,OAAO,SAAS,eAAe,EAC/B,IAAI,EACJ,MAAM,SAAS,OAAO,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,EACtE,uGASC,oBAAoB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,sHAuB1C,CAAA;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,oBAAoB,GAC/B,OAAO,SAAS,eAAe,EAC/B,IAAI,EACJ,MAAM,SAAS,OAAO,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,EAEtE,SAAS,oBAAoB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,+DASnD,CAAA"}
1
+ {"version":3,"file":"create-store-do.d.ts","sourceRoot":"","sources":["../src/create-store-do.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAChE,OAAO,EAAe,KAAK,eAAe,EAAe,MAAM,sBAAsB,CAAA;AACrF,OAAO,KAAK,KAAK,aAAa,MAAM,8BAA8B,CAAA;AAElE,OAAO,EAAE,MAAM,EAAiB,MAAM,yBAAyB,CAAA;AAI/D,MAAM,MAAM,GAAG,GAAG;IAChB,eAAe,EAAE,OAAO,CAAC,sBAAsB,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAA;CACvF,CAAA;AAED,MAAM,MAAM,oBAAoB,CAAC,OAAO,SAAS,eAAe,EAAE,IAAI,EAAE,MAAM,IAAI;IAChF,uEAAuE;IACvE,MAAM,EAAE,OAAO,CAAA;IACf,qFAAqF;IACrF,OAAO,EAAE,MAAM,CAAA;IACf,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,CAAA;IAChB,8EAA8E;IAC9E,SAAS,EAAE,MAAM,CAAA;IACjB,8HAA8H;IAC9H,aAAa,EAAE;QACb,qDAAqD;QACrD,GAAG,EAAE,MAAM,CAAA;QACX,+DAA+D;QAC/D,GAAG,EAAE,IAAI,CAAA;QACT,oFAAoF;QACpF,WAAW,EAAE,WAAW,CAAC,wBAAwB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;KACjE,CAAA;IACD,iFAAiF;IACjF,eAAe,EAAE,OAAO,CAAC,iBAAiB,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAA;IACjF;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,WAAW,CAAC,oBAAoB,CAAC,CAAA;CACvD,GAAG,SAAS,CAAC,iBAAiB,CAAA;AAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,eAAO,MAAM,aAAa,GACxB,OAAO,SAAS,eAAe,EAC/B,IAAI,EACJ,MAAM,SAAS,OAAO,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,EACtE,2HAUC,oBAAoB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,sHAuB1C,CAAA;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,oBAAoB,GAC/B,OAAO,SAAS,eAAe,EAC/B,IAAI,EACJ,MAAM,SAAS,OAAO,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,EAEtE,SAAS,oBAAoB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,+DASnD,CAAA"}
@@ -44,7 +44,7 @@ import { makeAdapter } from "./make-adapter.js";
44
44
  * @see https://livestore.dev/docs/reference/adapters/cloudflare for setup guide
45
45
  */
46
46
  // TODO Also support in Cloudflare workers outside of a durable object context.
47
- export const createStoreDo = ({ schema, storeId, clientId, sessionId, durableObject, syncBackendStub, livePull = false, resetPersistence = false, }) => Effect.gen(function* () {
47
+ export const createStoreDo = ({ schema, storeId, clientId, sessionId, durableObject, syncBackendStub, livePull = false, resetPersistence = false, initialSyncOptions = { _tag: 'Blocking', timeout: 500 }, }) => Effect.gen(function* () {
48
48
  const { ctx, bindingName } = durableObject;
49
49
  const storage = ctx.storage;
50
50
  const durableObjectId = ctx.id.toString();
@@ -60,7 +60,7 @@ export const createStoreDo = ({ schema, storeId, clientId, sessionId, durableObj
60
60
  durableObjectContext: { bindingName, durableObjectId },
61
61
  }),
62
62
  livePull, // Uses DO RPC callbacks for reactive pull
63
- initialSyncOptions: { _tag: 'Blocking', timeout: 500 },
63
+ initialSyncOptions,
64
64
  },
65
65
  });
66
66
  return yield* createStore({ schema, adapter, storeId }).pipe(Scope.extend(scope), provideOtel({}));
@@ -1 +1 @@
1
- {"version":3,"file":"create-store-do.js","sourceRoot":"","sources":["../src/create-store-do.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAE7C,OAAO,EAAE,WAAW,EAAwB,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAErF,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAwC/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,+EAA+E;AAC/E,MAAM,CAAC,MAAM,aAAa,GAAG,CAI3B,EACA,MAAM,EACN,OAAO,EACP,QAAQ,EACR,SAAS,EACT,aAAa,EACb,eAAe,EACf,QAAQ,GAAG,KAAK,EAChB,gBAAgB,GAAG,KAAK,GACoB,EAAE,EAAE,CAChD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,aAAa,CAAA;IAC1C,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAA;IAC3B,MAAM,eAAe,GAAG,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAA;IACzC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;IAEjC,MAAM,OAAO,GAAG,WAAW,CAAC;QAC1B,QAAQ;QACR,SAAS;QACT,OAAO;QACP,gBAAgB;QAChB,WAAW,EAAE;YACX,OAAO,EAAE,aAAa,CAAC;gBACrB,eAAe;gBACf,oBAAoB,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE;aACvD,CAAC;YACF,QAAQ,EAAE,0CAA0C;YACpD,kBAAkB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE;SACvD;KACF,CAAC,CAAA;IAEF,OAAO,KAAK,CAAC,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,CAAA;AACpG,CAAC,CAAC,CAAA;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAKlC,OAAoD,EACpD,EAAE,CACF,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CACzB,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE;IAClC,UAAU,EAAE,UAAU;IACtB,aAAa,EAAE,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC;CACpD,CAAC,EACF,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,UAAU,CAClB,CAAA"}
1
+ {"version":3,"file":"create-store-do.js","sourceRoot":"","sources":["../src/create-store-do.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAoB,MAAM,mBAAmB,CAAA;AAE/D,OAAO,EAAE,WAAW,EAAwB,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAErF,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAE/D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AA8C/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,+EAA+E;AAC/E,MAAM,CAAC,MAAM,aAAa,GAAG,CAI3B,EACA,MAAM,EACN,OAAO,EACP,QAAQ,EACR,SAAS,EACT,aAAa,EACb,eAAe,EACf,QAAQ,GAAG,KAAK,EAChB,gBAAgB,GAAG,KAAK,EACxB,kBAAkB,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,GACX,EAAE,EAAE,CAChD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,aAAa,CAAA;IAC1C,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAA;IAC3B,MAAM,eAAe,GAAG,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAA;IACzC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;IAEjC,MAAM,OAAO,GAAG,WAAW,CAAC;QAC1B,QAAQ;QACR,SAAS;QACT,OAAO;QACP,gBAAgB;QAChB,WAAW,EAAE;YACX,OAAO,EAAE,aAAa,CAAC;gBACrB,eAAe;gBACf,oBAAoB,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE;aACvD,CAAC;YACF,QAAQ,EAAE,0CAA0C;YACpD,kBAAkB;SACnB;KACF,CAAC,CAAA;IAEF,OAAO,KAAK,CAAC,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,CAAA;AACpG,CAAC,CAAC,CAAA;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAKlC,OAAoD,EACpD,EAAE,CACF,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CACzB,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE;IAClC,UAAU,EAAE,UAAU;IACtB,aAAa,EAAE,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC;CACpD,CAAC,EACF,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,UAAU,CAClB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"make-adapter.d.ts","sourceRoot":"","sources":["../src/make-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EAKZ,KAAK,WAAW,EAEjB,MAAM,mBAAmB,CAAA;AAQ1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAMnD,eAAO,MAAM,WAAW,GACrB,kEAME;IACD,OAAO,EAAE,OAAO,CAAC,oBAAoB,CAAA;IACrC,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,WAAW,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,KAAG,OAiJD,CAAA"}
1
+ {"version":3,"file":"make-adapter.d.ts","sourceRoot":"","sources":["../src/make-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EAKZ,KAAK,WAAW,EAEjB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAcnD,eAAO,MAAM,WAAW,GACrB,kEAME;IACD,OAAO,EAAE,OAAO,CAAC,oBAAoB,CAAA;IACrC,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,WAAW,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,KAAG,OA+ID,CAAA"}
@@ -1,7 +1,8 @@
1
1
  import { ClientSessionLeaderThreadProxy, liveStoreStorageFormatVersion, makeClientSession, UnknownError, } from '@livestore/common';
2
2
  import { Eventlog, LeaderThreadCtx, makeLeaderThreadLayer, streamEventsWithSyncState, } from '@livestore/common/leader-thread';
3
3
  import { LiveStoreEvent } from '@livestore/livestore';
4
- import { sqliteDbFactory } from '@livestore/sqlite-wasm/cf';
4
+ import { CF_SQL_VFS_REQUIRED_PRAGMAS, sqliteDbFactory } from '@livestore/sqlite-wasm/cf';
5
+ import { makeSqliteDb as makeDoSqliteDb } from "./make-sqlite-db.js";
5
6
  import { loadSqlite3Wasm } from '@livestore/sqlite-wasm/load-wasm';
6
7
  import { Effect, FetchHttpClient, Layer, Schedule, SubscriptionRef, WebChannel } from '@livestore/utils/effect';
7
8
  export const makeAdapter = ({ storage, clientId, syncOptions, sessionId, resetPersistence = false, }) => (adapterArgs) => Effect.gen(function* () {
@@ -13,29 +14,25 @@ export const makeAdapter = ({ storage, clientId, syncOptions, sessionId, resetPe
13
14
  const makeSqliteDb = sqliteDbFactory({ sqlite3 });
14
15
  const syncInMemoryDb = yield* makeSqliteDb({ _tag: 'in-memory', storage, configureDb: () => { } }).pipe(UnknownError.mapToUnknownError);
15
16
  const schemaHashSuffix = schema.state.sqlite.migrations.strategy === 'manual' ? 'fixed' : schema.state.sqlite.hash.toString();
16
- const stateDbFileName = getStateDbFileName(schemaHashSuffix);
17
- const eventlogDbFileName = getEventlogDbFileName();
18
17
  if (resetPersistence === true) {
19
- yield* resetDurableObjectPersistence({
20
- storage,
21
- storeId,
22
- dbFileNames: [stateDbFileName, eventlogDbFileName],
23
- });
18
+ yield* resetDurableObjectPersistence({ storage, storeId });
24
19
  }
20
+ const stateDbFileName = getStateDbFileName(schemaHashSuffix);
25
21
  const dbState = yield* makeSqliteDb({
26
22
  _tag: 'storage',
27
23
  storage,
28
24
  fileName: stateDbFileName,
29
- configureDb: () => { },
25
+ configureDb: (db) => db.execute([...CF_SQL_VFS_REQUIRED_PRAGMAS, 'cache_size=-8000'].map((p) => `PRAGMA ${p}`).join(';\n')),
30
26
  }).pipe(UnknownError.mapToUnknownError);
31
- const dbEventlog = yield* makeSqliteDb({
32
- _tag: 'storage',
33
- storage,
34
- fileName: eventlogDbFileName,
27
+ // dbEventlog runs on DO SQLite directly (not through the VFS). SQL-level transaction
28
+ // control (BEGIN/COMMIT/ROLLBACK) is silently dropped — see isTransactionControlStatement
29
+ // in make-sqlite-db.ts for details on why this is safe.
30
+ const dbEventlog = yield* makeDoSqliteDb({
31
+ _tag: 'file',
32
+ db: storage.sql,
35
33
  configureDb: () => { },
36
34
  }).pipe(UnknownError.mapToUnknownError);
37
35
  const shutdownChannel = yield* WebChannel.noopChannel();
38
- // Use Durable Object sync backend if no backend is specified
39
36
  const layer = yield* Layer.build(makeLeaderThreadLayer({
40
37
  schema,
41
38
  storeId,
@@ -86,7 +83,7 @@ export const makeAdapter = ({ storage, clientId, syncOptions, sessionId, resetPe
86
83
  sqliteDb: syncInMemoryDb,
87
84
  webmeshMode: 'proxy',
88
85
  connectWebmeshNode: Effect.fnUntraced(function* ({ webmeshNode }) {
89
- if (devtoolsOptions.enabled) {
86
+ if (devtoolsOptions.enabled === true) {
90
87
  console.log('connectWebmeshNode', { webmeshNode });
91
88
  // yield* Webmesh.connectViaWebSocket({
92
89
  // node: webmeshNode,
@@ -107,14 +104,16 @@ export const makeAdapter = ({ storage, clientId, syncOptions, sessionId, resetPe
107
104
  return clientSession;
108
105
  }).pipe(Effect.withSpan('@livestore/adapter-cloudflare:makeAdapter', { attributes: { clientId, sessionId } }), Effect.provide(FetchHttpClient.layer));
109
106
  const getStateDbFileName = (suffix) => `state${suffix}@${liveStoreStorageFormatVersion}.db`;
110
- const getEventlogDbFileName = () => `eventlog@${liveStoreStorageFormatVersion}.db`;
111
- const resetDurableObjectPersistence = ({ storage, storeId, dbFileNames, }) => Effect.try({
112
- try: () => storage.transactionSync(() => {
113
- for (const baseName of dbFileNames) {
114
- const likePattern = `${baseName}%`;
115
- safeSqlExec(storage, 'DELETE FROM vfs_blocks WHERE file_path LIKE ?', likePattern);
116
- safeSqlExec(storage, 'DELETE FROM vfs_files WHERE file_path LIKE ?', likePattern);
117
- }
107
+ const resetDurableObjectPersistence = ({ storage, storeId, }) => Effect.try({
108
+ try: () =>
109
+ // All three tables live in the DO's single storage.sql database but are
110
+ // owned by different layers during normal operation:
111
+ // - vfs_pages: written by the wa-sqlite VFS layer (backs dbState)
112
+ // - eventlog, __livestore_sync_status: written directly by dbEventlog via storage.sql
113
+ storage.transactionSync(() => {
114
+ safeSqlExec(storage, 'DELETE FROM vfs_pages');
115
+ safeSqlExec(storage, 'DELETE FROM eventlog');
116
+ safeSqlExec(storage, 'DELETE FROM __livestore_sync_status');
118
117
  }),
119
118
  catch: (cause) => new UnknownError({
120
119
  cause,
@@ -123,14 +122,14 @@ const resetDurableObjectPersistence = ({ storage, storeId, dbFileNames, }) => Ef
123
122
  }).pipe(Effect.retry({ schedule: Schedule.exponentialBackoff10Sec }), Effect.withSpan('@livestore/adapter-cloudflare:resetPersistence', { attributes: { storeId } }));
124
123
  const safeSqlExec = (storage, query, binding) => {
125
124
  try {
126
- storage.sql.exec(query, binding);
125
+ binding !== undefined ? storage.sql.exec(query, binding) : storage.sql.exec(query);
127
126
  }
128
127
  catch (error) {
129
- if (isMissingVfsTableError(error)) {
128
+ if (isMissingTableError(error) === true) {
130
129
  return;
131
130
  }
132
131
  throw error;
133
132
  }
134
133
  };
135
- const isMissingVfsTableError = (error) => error instanceof Error && error.message.toLowerCase().includes('no such table');
134
+ const isMissingTableError = (error) => error instanceof Error && error.message.toLowerCase().includes('no such table');
136
135
  //# sourceMappingURL=make-adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"make-adapter.js","sourceRoot":"","sources":["../src/make-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,8BAA8B,EAE9B,6BAA6B,EAC7B,iBAAiB,EAEjB,YAAY,GACb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAEL,QAAQ,EACR,eAAe,EACf,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,iCAAiC,CAAA;AAExC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAClE,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAE/G,MAAM,CAAC,MAAM,WAAW,GACtB,CAAC,EACC,OAAO,EACP,QAAQ,EACR,WAAW,EACX,SAAS,EACT,gBAAgB,GAAG,KAAK,GAOzB,EAAW,EAAE,CACd,CAAC,WAAW,EAAE,EAAE,CACd,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,EACJ,OAAO;IACP,kDAAkD;IAClD,kBAAkB,EAClB,iBAAiB,EACjB,MAAM,GACP,GAAG,WAAW,CAAA;IAEf,MAAM,eAAe,GAAG,EAAE,OAAO,EAAE,KAAK,EAAqB,CAAA;IAE7D,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;IAE9D,MAAM,YAAY,GAAG,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;IAEjD,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CACpG,YAAY,CAAC,iBAAiB,CAC/B,CAAA;IAED,MAAM,gBAAgB,GACpB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAA;IAEtG,MAAM,eAAe,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,CAAA;IAC5D,MAAM,kBAAkB,GAAG,qBAAqB,EAAE,CAAA;IAElD,IAAI,gBAAgB,KAAK,IAAI,EAAE,CAAC;QAC9B,KAAK,CAAC,CAAC,6BAA6B,CAAC;YACnC,OAAO;YACP,OAAO;YACP,WAAW,EAAE,CAAC,eAAe,EAAE,kBAAkB,CAAC;SACnD,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC;QAClC,IAAI,EAAE,SAAS;QACf,OAAO;QACP,QAAQ,EAAE,eAAe;QACzB,WAAW,EAAE,GAAG,EAAE,GAAE,CAAC;KACtB,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAA;IAEvC,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC;QACrC,IAAI,EAAE,SAAS;QACf,OAAO;QACP,QAAQ,EAAE,kBAAkB;QAC5B,WAAW,EAAE,GAAG,EAAE,GAAE,CAAC;KACtB,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAA;IAEvC,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,WAAW,EAAY,CAAA;IAEjE,6DAA6D;IAE7D,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAC9B,qBAAqB,CAAC;QACpB,MAAM;QACN,OAAO;QACP,QAAQ;QACR,YAAY;QACZ,WAAW;QACX,OAAO;QACP,UAAU;QACV,eAAe;QACf,eAAe;QACf,kBAAkB;QAClB,iBAAiB;KAClB,CAAC,CACH,CAAA;IAED,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACnE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,0BAA0B,EAAE,YAAY,EAAE,aAAa,EAAE,GACnG,KAAK,CAAC,CAAC,eAAe,CAAA;QAExB,MAAM,iBAAiB,GAAG,QAAQ,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAA;QAClE,qDAAqD;QAErD,MAAM,YAAY,GAAG,8BAA8B,CAAC,EAAE,CACpD;YACE,MAAM,EAAE;gBACN,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;gBACpD,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CACd,aAAa,CAAC,IAAI,CAChB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,cAAc,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,EACpE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC5B;gBACH,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAClB,yBAAyB,CAAC;oBACxB,UAAU;oBACV,SAAS,EAAE,aAAa,CAAC,SAAS;oBAClC,OAAO;iBACR,CAAC;aACL;YACD,YAAY,EAAE;gBACZ,UAAU,EAAE,iBAAiB;gBAC7B,gBAAgB,EAAE,YAAY,CAAC,gBAAgB;gBAC/C,WAAW,EAAE,WAAW;aACzB;YACD,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC3C,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACvD,SAAS,EAAE,aAAa,CAAC,SAAS;YAClC,mBAAmB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,0BAA0B,CAAC,KAAK,CAAC,OAAO,CAAC;YAC3E,aAAa;SACd,EACD;QACE,kEAAkE;SACnE,CACF,CAAA;QAED,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,EAAE,CAAA;QAExC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,CAAA;IAC1C,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;IAE9B,cAAc,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;IAEtC,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC,IAAI,CAAa,UAAU,CAAC,CAAA;IAEtE,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,iBAAiB,CAAC;QAC7C,GAAG,WAAW;QACd,QAAQ,EAAE,cAAc;QACxB,WAAW,EAAE,OAAO;QACpB,kBAAkB,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,EAAE,WAAW,EAAE;YAC9D,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC;gBAC5B,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,EAAE,WAAW,EAAE,CAAC,CAAA;gBAClD,yCAAyC;gBACzC,yBAAyB;gBACzB,mEAAmE;gBACnE,wBAAwB;gBACxB,yDAAyD;YAC3D,CAAC;QACH,CAAC,CAAC;QACF,YAAY;QACZ,UAAU;QACV,QAAQ;QACR,SAAS;QACT,QAAQ,EAAE,IAAI;QACd,yEAAyE;QACzE,oBAAoB,EAAE,CAAC,eAAe,EAAE,EAAE,CAAC,GAAG,EAAE,GAAE,CAAC;QACnD,MAAM,EAAE,SAAS;KAClB,CAAC,CAAA;IAEF,OAAO,aAAa,CAAA;AACtB,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CAAC,2CAA2C,EAAE,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,CAAC,EACrG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CACtC,CAAA;AAEL,MAAM,kBAAkB,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,QAAQ,MAAM,IAAI,6BAA6B,KAAK,CAAA;AAEnG,MAAM,qBAAqB,GAAG,GAAG,EAAE,CAAC,YAAY,6BAA6B,KAAK,CAAA;AAElF,MAAM,6BAA6B,GAAG,CAAC,EACrC,OAAO,EACP,OAAO,EACP,WAAW,GAKZ,EAAE,EAAE,CACH,MAAM,CAAC,GAAG,CAAC;IACT,GAAG,EAAE,GAAG,EAAE,CACR,OAAO,CAAC,eAAe,CAAC,GAAG,EAAE;QAC3B,KAAK,MAAM,QAAQ,IAAI,WAAW,EAAE,CAAC;YACnC,MAAM,WAAW,GAAG,GAAG,QAAQ,GAAG,CAAA;YAClC,WAAW,CAAC,OAAO,EAAE,+CAA+C,EAAE,WAAW,CAAC,CAAA;YAClF,WAAW,CAAC,OAAO,EAAE,8CAA8C,EAAE,WAAW,CAAC,CAAA;QACnF,CAAC;IACH,CAAC,CAAC;IACJ,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,IAAI,YAAY,CAAC;QACf,KAAK;QACL,IAAI,EAAE,wEAAwE,OAAO,EAAE;KACxF,CAAC;CACL,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,uBAAuB,EAAE,CAAC,EAC5D,MAAM,CAAC,QAAQ,CAAC,gDAAgD,EAAE,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAC/F,CAAA;AAEH,MAAM,WAAW,GAAG,CAAC,OAAqC,EAAE,KAAa,EAAE,OAAe,EAAE,EAAE;IAC5F,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IAClC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,OAAM;QACR,CAAC;QAED,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC,CAAA;AAED,MAAM,sBAAsB,GAAG,CAAC,KAAc,EAAW,EAAE,CACzD,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAA"}
1
+ {"version":3,"file":"make-adapter.js","sourceRoot":"","sources":["../src/make-adapter.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"make-sqlite-db.d.ts","sourceRoot":"","sources":["../src/make-sqlite-db.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EAGf,QAAQ,EAGT,MAAM,mBAAmB,CAAA;AAG1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AA8DnD,KAAK,QAAQ,GAAG;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,eAAe,CAAA;IAChC,KAAK,EAAE,uBAAuB,CAAA;IAC9B,WAAW,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,IAAI,CAAA;CACpC,CAAA;AAED,KAAK,uBAAuB,GACxB;IACE,IAAI,EAAE,MAAM,CAAA;IAGZ,EAAE,EAAE,OAAO,CAAC,UAAU,CAAA;IACtB,WAAW,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,IAAI,CAAA;CACpC,GACD;IACE,IAAI,EAAE,WAAW,CAAA;IACjB,EAAE,EAAE,OAAO,CAAC,UAAU,CAAA;IACtB,WAAW,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,IAAI,CAAA;CACpC,CAAA;AAEL,MAAM,MAAM,sBAAsB,GAAG,YAAY,CAAC,QAAQ,EAAE,uBAAuB,EAAE;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GAAG,QAAQ,CAAC,CAAA;AAEvH,eAAO,MAAM,YAAY,EAAE,sBA8BvB,CAAA;AAEJ,eAAO,MAAM,aAAa,GACxB,SAAS,SAAS;IAChB,eAAe,EAAE,eAAe,CAAA;IAEhC,WAAW,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,CAAA;CAC/C,EACD,2BAGC;IACD,UAAU,EAAE,OAAO,CAAC,UAAU,CAAA;IAC9B,QAAQ,EAAE,SAAS,CAAA;CACpB,KAAG,QAAQ,CAAC,SAAS,CAmHrB,CAAA"}
1
+ {"version":3,"file":"make-sqlite-db.d.ts","sourceRoot":"","sources":["../src/make-sqlite-db.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EAGf,QAAQ,EAGT,MAAM,mBAAmB,CAAA;AAE1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAkEnD,KAAK,QAAQ,GAAG;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,eAAe,CAAA;IAChC,KAAK,EAAE,uBAAuB,CAAA;IAC9B,WAAW,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,IAAI,CAAA;CACpC,CAAA;AAED,KAAK,uBAAuB,GACxB;IACE,IAAI,EAAE,MAAM,CAAA;IAGZ,EAAE,EAAE,OAAO,CAAC,UAAU,CAAA;IACtB,WAAW,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,IAAI,CAAA;CACpC,GACD;IACE,IAAI,EAAE,WAAW,CAAA;IACjB,EAAE,EAAE,OAAO,CAAC,UAAU,CAAA;IACtB,WAAW,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,IAAI,CAAA;CACpC,CAAA;AAEL,MAAM,MAAM,sBAAsB,GAAG,YAAY,CAAC,QAAQ,EAAE,uBAAuB,EAAE;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GAAG,QAAQ,CAAC,CAAA;AAEvH,eAAO,MAAM,YAAY,EAAE,sBA2BvB,CAAA;AAEJ,eAAO,MAAM,aAAa,GACxB,SAAS,SAAS;IAChB,eAAe,EAAE,eAAe,CAAA;IAChC,WAAW,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,CAAA;CAC/C,EACD,2BAGC;IACD,UAAU,EAAE,OAAO,CAAC,UAAU,CAAA;IAC9B,QAAQ,EAAE,SAAS,CAAA;CACpB,KAAG,QAAQ,CAAC,SAAS,CAkHrB,CAAA"}
@@ -11,13 +11,15 @@ class CloudflarePreparedStatement {
11
11
  }
12
12
  execute = (bindValues, options) => {
13
13
  try {
14
- const cursor = this.sqlStorage.exec(this.sql, ...(bindValues ? Object.values(bindValues) : []));
14
+ if (isTransactionControlStatement(this.sql) === true)
15
+ return;
16
+ const cursor = this.sqlStorage.exec(this.sql, ...(bindValues !== undefined ? Object.values(bindValues) : []));
15
17
  // Count affected rows by iterating through cursor
16
18
  let changedCount = 0;
17
19
  for (const _row of cursor) {
18
20
  changedCount++;
19
21
  }
20
- if (options?.onRowsChanged) {
22
+ if (options?.onRowsChanged !== undefined) {
21
23
  options.onRowsChanged(changedCount);
22
24
  }
23
25
  }
@@ -31,7 +33,7 @@ class CloudflarePreparedStatement {
31
33
  };
32
34
  select = (bindValues) => {
33
35
  try {
34
- const cursor = this.sqlStorage.exec(this.sql, ...(bindValues ? Object.values(bindValues) : []));
36
+ const cursor = this.sqlStorage.exec(this.sql, ...(bindValues !== undefined ? Object.values(bindValues) : []));
35
37
  const results = [];
36
38
  for (const row of cursor) {
37
39
  results.push(row);
@@ -51,14 +53,12 @@ class CloudflarePreparedStatement {
51
53
  };
52
54
  }
53
55
  export const makeSqliteDb = (input) => Effect.gen(function* () {
54
- // console.log('makeSqliteDb', input)
55
56
  if (input._tag === 'in-memory') {
56
57
  return makeSqliteDb_({
57
58
  sqlStorage: input.db,
58
59
  metadata: {
59
60
  _tag: 'file',
60
61
  dbPointer: 0,
61
- // persistenceInfo: { fileName: ':memory:' },
62
62
  persistenceInfo: { fileName: 'cf' },
63
63
  input,
64
64
  configureDb: input.configureDb,
@@ -71,7 +71,6 @@ export const makeSqliteDb = (input) => Effect.gen(function* () {
71
71
  metadata: {
72
72
  _tag: 'file',
73
73
  dbPointer: 0,
74
- // persistenceInfo: { fileName: `${input.directory}/${input.databaseName}` },
75
74
  persistenceInfo: { fileName: 'cf' },
76
75
  input,
77
76
  configureDb: input.configureDb,
@@ -126,14 +125,13 @@ export const makeSqliteDb_ = ({ sqlStorage, metadata, }) => {
126
125
  }),
127
126
  destroy: () => {
128
127
  sqliteDb.close();
129
- // metadata.deleteDb()
130
128
  throw new SqliteError({
131
129
  code: -1,
132
130
  cause: 'Database destroy not supported with public SqlStorage API',
133
131
  });
134
132
  },
135
133
  close: () => {
136
- if (isClosed) {
134
+ if (isClosed === true) {
137
135
  return;
138
136
  }
139
137
  for (const stmt of preparedStmts) {
@@ -188,4 +186,38 @@ export const makeSqliteDb_ = ({ sqlStorage, metadata, }) => {
188
186
  metadata.configureDb(sqliteDb);
189
187
  return sqliteDb;
190
188
  };
189
+ /**
190
+ * CF DO SQLite rejects SQL-level transaction control and requires `storage.transactionSync()` instead.
191
+ * The current adapter only detects and suppresses those SQL statements. It does not yet translate the
192
+ * caller's transaction intent into a shared Durable Object storage transaction.
193
+ *
194
+ * ## Consistency implications
195
+ *
196
+ * `LeaderSyncProcessor.materializeEventsBatch()` wraps both `dbState` and `dbEventlog` in
197
+ * `BEGIN`/`COMMIT` to keep them consistent. Because this adapter drops those statements,
198
+ * eventlog INSERTs are auto-committed individually while `dbState` (VFS-backed) still has
199
+ * real transaction boundaries. If a batch partially fails, earlier eventlog rows survive
200
+ * while `dbState` rolls back.
201
+ *
202
+ * This is safe because:
203
+ * - The eventlog is append-only and idempotent — replaying already-inserted events is a no-op.
204
+ * - State is always rebuildable from the eventlog on cold start (`recreateDb`).
205
+ * - A Durable Object is single-threaded, so no concurrent reader can observe the
206
+ * intermediate inconsistency.
207
+ *
208
+ * Uses prefix matching to cover all SQLite variants:
209
+ * - `BEGIN [DEFERRED | IMMEDIATE | EXCLUSIVE] [TRANSACTION]`
210
+ * - `COMMIT [TRANSACTION]` / `END [TRANSACTION]`
211
+ * - `ROLLBACK [TRANSACTION] [TO [SAVEPOINT] name]`
212
+ * - `SAVEPOINT name` / `RELEASE [SAVEPOINT] name`
213
+ */
214
+ const isTransactionControlStatement = (sql) => {
215
+ const upper = sql.trim().toUpperCase();
216
+ return (upper.startsWith('BEGIN') === true ||
217
+ upper.startsWith('COMMIT') === true ||
218
+ upper.startsWith('END') === true ||
219
+ upper.startsWith('ROLLBACK') === true ||
220
+ upper.startsWith('SAVEPOINT') === true ||
221
+ upper.startsWith('RELEASE') === true);
222
+ };
191
223
  //# sourceMappingURL=make-sqlite-db.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"make-sqlite-db.js","sourceRoot":"","sources":["../src/make-sqlite-db.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"make-sqlite-db.js","sourceRoot":"","sources":["../src/make-sqlite-db.ts"],"names":[],"mappings":"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"}
package/dist/mod.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import './polyfill.ts';
2
2
  export type { ClientDoWithRpcCallback } from '@livestore/common-cf';
3
- export { type CreateStoreDoOptions, createStoreDo, createStoreDoPromise, type Env, } from './create-store-do.ts';
3
+ export { type CreateStoreDoOptions, createStoreDo, createStoreDoPromise, type Env } from './create-store-do.ts';
4
4
  export { makeAdapter } from './make-adapter.ts';
5
5
  //# sourceMappingURL=mod.d.ts.map
package/dist/mod.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAA;AAEtB,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AACnE,OAAO,EACL,KAAK,oBAAoB,EACzB,aAAa,EACb,oBAAoB,EACpB,KAAK,GAAG,GACT,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAA;AAEtB,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AACnE,OAAO,EAAE,KAAK,oBAAoB,EAAE,aAAa,EAAE,oBAAoB,EAAE,KAAK,GAAG,EAAE,MAAM,sBAAsB,CAAA;AAC/G,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA"}
package/dist/mod.js CHANGED
@@ -1,4 +1,4 @@
1
1
  import "./polyfill.js";
2
- export { createStoreDo, createStoreDoPromise, } from "./create-store-do.js";
2
+ export { createStoreDo, createStoreDoPromise } from "./create-store-do.js";
3
3
  export { makeAdapter } from "./make-adapter.js";
4
4
  //# sourceMappingURL=mod.js.map
package/dist/mod.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mod.js","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAA;AAGtB,OAAO,EAEL,aAAa,EACb,oBAAoB,GAErB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA"}
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAA;AAGtB,OAAO,EAA6B,aAAa,EAAE,oBAAoB,EAAY,MAAM,sBAAsB,CAAA;AAC/G,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,16 @@
1
1
  {
2
2
  "name": "@livestore/adapter-cloudflare",
3
- "version": "0.4.0-dev.22",
3
+ "version": "0.4.0-dev.23",
4
+ "license": "Apache-2.0",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git+https://github.com/livestorejs/livestore.git"
8
+ },
9
+ "files": [
10
+ "dist",
11
+ "package.json",
12
+ "src"
13
+ ],
4
14
  "type": "module",
5
15
  "sideEffects": [
6
16
  "./src/polyfill.ts",
@@ -10,26 +20,59 @@
10
20
  ".": "./dist/mod.js",
11
21
  "./polyfill": "./dist/polyfill.js"
12
22
  },
23
+ "publishConfig": {
24
+ "access": "public"
25
+ },
13
26
  "dependencies": {
14
27
  "@cloudflare/workers-types": "4.20251118.0",
15
- "@livestore/common": "0.4.0-dev.22",
16
- "@livestore/common-cf": "0.4.0-dev.22",
17
- "@livestore/sqlite-wasm": "0.4.0-dev.22",
18
- "@livestore/sync-cf": "0.4.0-dev.22",
19
- "@livestore/livestore": "0.4.0-dev.22",
20
- "@livestore/utils": "0.4.0-dev.22"
28
+ "@livestore/common-cf": "^0.4.0-dev.23",
29
+ "@livestore/livestore": "^0.4.0-dev.23",
30
+ "@livestore/common": "^0.4.0-dev.23",
31
+ "@livestore/sqlite-wasm": "^0.4.0-dev.23",
32
+ "@livestore/sync-cf": "^0.4.0-dev.23",
33
+ "@livestore/utils": "^0.4.0-dev.23"
21
34
  },
22
35
  "devDependencies": {
23
36
  "wrangler": "4.42.2"
24
37
  },
25
- "files": [
26
- "package.json",
27
- "src",
28
- "dist"
29
- ],
30
- "license": "Apache-2.0",
31
- "publishConfig": {
32
- "access": "public"
38
+ "peerDependencies": {
39
+ "@effect/ai": "^0.35.0",
40
+ "@effect/cli": "^0.75.1",
41
+ "@effect/cluster": "^0.58.2",
42
+ "@effect/experimental": "^0.60.0",
43
+ "@effect/opentelemetry": "^0.63.0",
44
+ "@effect/platform": "^0.96.1",
45
+ "@effect/platform-browser": "^0.76.0",
46
+ "@effect/platform-bun": "^0.89.0",
47
+ "@effect/platform-node": "^0.106.0",
48
+ "@effect/printer": "^0.49.0",
49
+ "@effect/printer-ansi": "^0.49.0",
50
+ "@effect/rpc": "^0.75.1",
51
+ "@effect/sql": "^0.51.1",
52
+ "@effect/typeclass": "^0.40.0",
53
+ "@effect/vitest": "^0.29.0",
54
+ "@opentelemetry/api": "^1.9.0",
55
+ "@opentelemetry/resources": "^2.2.0",
56
+ "@standard-schema/spec": "^1.1.0",
57
+ "effect": "^3.21.2"
58
+ },
59
+ "$genie": {
60
+ "source": "package.json.genie.ts",
61
+ "warning": "DO NOT EDIT - changes will be overwritten",
62
+ "workspaceClosureDirs": [
63
+ "packages/@livestore/adapter-cloudflare",
64
+ "packages/@livestore/adapter-web",
65
+ "packages/@livestore/common",
66
+ "packages/@livestore/common-cf",
67
+ "packages/@livestore/devtools-web-common",
68
+ "packages/@livestore/livestore",
69
+ "packages/@livestore/sqlite-wasm",
70
+ "packages/@livestore/sync-cf",
71
+ "packages/@livestore/utils",
72
+ "packages/@livestore/utils-dev",
73
+ "packages/@livestore/wa-sqlite",
74
+ "packages/@livestore/webmesh"
75
+ ]
33
76
  },
34
77
  "scripts": {
35
78
  "test": "echo No tests yet"
package/src/WebSocket.ts CHANGED
@@ -27,14 +27,18 @@ export const makeWebSocket = ({
27
27
 
28
28
  const socket = yield* Effect.tryPromise({
29
29
  try: () =>
30
- durableObject.fetch(url, { headers: { Upgrade: 'websocket' } }).then((res: any) => {
31
- if (!res.webSocket) {
30
+ // NOTE: .toString() required due to type mismatch between standard URL and CF's URL types
31
+ durableObject.fetch(url.toString(), { headers: { Upgrade: 'websocket' } }).then((res: any) => {
32
+ if (res.webSocket == null) {
32
33
  throw new Error('WebSocket upgrade failed')
33
34
  }
34
35
  return res.webSocket as CfTypes.WebSocket
35
36
  }),
36
37
  catch: (cause) => new WebSocket.WebSocketError({ cause }),
37
- }).pipe(reconnect ? Effect.retry(reconnect) : identity, Effect.withSpan('make-websocket-durable-object'))
38
+ }).pipe(
39
+ reconnect !== undefined && reconnect !== false ? Effect.retry(reconnect) : identity,
40
+ Effect.withSpan('make-websocket-durable-object'),
41
+ )
38
42
 
39
43
  socket.accept()
40
44
 
@@ -55,7 +59,7 @@ export const makeWebSocket = ({
55
59
  Effect.fn(function* (exit) {
56
60
  yield* Effect.try({
57
61
  try: () => {
58
- if (Exit.isFailure(exit)) {
62
+ if (Exit.isFailure(exit) === true) {
59
63
  socket.close(3000)
60
64
  } else {
61
65
  socket.close(1000)
@@ -1,9 +1,10 @@
1
- import { LogConfig } from '@livestore/common'
1
+ import { LogConfig, type SyncOptions } from '@livestore/common'
2
2
  import type { CfTypes, HelperTypes } from '@livestore/common-cf'
3
3
  import { createStore, type LiveStoreSchema, provideOtel } from '@livestore/livestore'
4
4
  import type * as CfSyncBackend from '@livestore/sync-cf/cf-worker'
5
5
  import { makeDoRpcSync } from '@livestore/sync-cf/client'
6
6
  import { Effect, Logger, Scope } from '@livestore/utils/effect'
7
+
7
8
  import { makeAdapter } from './make-adapter.ts'
8
9
 
9
10
  export type Env = {
@@ -42,6 +43,12 @@ export type CreateStoreDoOptions<TSchema extends LiveStoreSchema, TEnv, TState>
42
43
  * Note: Only use this for development purposes.
43
44
  */
44
45
  resetPersistence?: boolean
46
+ /**
47
+ * Controls how initial sync behaves when the store boots.
48
+ *
49
+ * @default { _tag: 'Blocking', timeout: 500 }
50
+ */
51
+ initialSyncOptions?: SyncOptions['initialSyncOptions']
45
52
  } & LogConfig.WithLoggerOptions
46
53
 
47
54
  /**
@@ -98,6 +105,7 @@ export const createStoreDo = <
98
105
  syncBackendStub,
99
106
  livePull = false,
100
107
  resetPersistence = false,
108
+ initialSyncOptions = { _tag: 'Blocking', timeout: 500 },
101
109
  }: CreateStoreDoOptions<TSchema, TEnv, TState>) =>
102
110
  Effect.gen(function* () {
103
111
  const { ctx, bindingName } = durableObject
@@ -116,7 +124,7 @@ export const createStoreDo = <
116
124
  durableObjectContext: { bindingName, durableObjectId },
117
125
  }),
118
126
  livePull, // Uses DO RPC callbacks for reactive pull
119
- initialSyncOptions: { _tag: 'Blocking', timeout: 500 },
127
+ initialSyncOptions,
120
128
  },
121
129
  })
122
130