@livestore/adapter-cloudflare 0.0.0-snapshot-8452e32b7fbfc129741b253b9c853f866b52129f.1 → 0.4.0-dev.4

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/package.json CHANGED
@@ -1,24 +1,25 @@
1
1
  {
2
2
  "name": "@livestore/adapter-cloudflare",
3
- "version": "0.0.0-snapshot-8452e32b7fbfc129741b253b9c853f866b52129f.1",
3
+ "version": "0.4.0-dev.4",
4
4
  "type": "module",
5
5
  "sideEffects": [
6
6
  "./src/polyfill.ts"
7
7
  ],
8
8
  "exports": {
9
- ".": "./dist/mod.js"
9
+ ".": "./dist/mod.js",
10
+ "./polyfill": "./dist/polyfill.js"
10
11
  },
11
12
  "dependencies": {
12
- "@cloudflare/workers-types": "4.20250807.0",
13
- "@livestore/common-cf": "0.0.0-snapshot-8452e32b7fbfc129741b253b9c853f866b52129f.1",
14
- "@livestore/common": "0.0.0-snapshot-8452e32b7fbfc129741b253b9c853f866b52129f.1",
15
- "@livestore/livestore": "0.0.0-snapshot-8452e32b7fbfc129741b253b9c853f866b52129f.1",
16
- "@livestore/sqlite-wasm": "0.0.0-snapshot-8452e32b7fbfc129741b253b9c853f866b52129f.1",
17
- "@livestore/sync-cf": "0.0.0-snapshot-8452e32b7fbfc129741b253b9c853f866b52129f.1",
18
- "@livestore/utils": "0.0.0-snapshot-8452e32b7fbfc129741b253b9c853f866b52129f.1"
13
+ "@cloudflare/workers-types": "4.20250823.0",
14
+ "@livestore/common": "0.4.0-dev.4",
15
+ "@livestore/sqlite-wasm": "0.4.0-dev.4",
16
+ "@livestore/sync-cf": "0.4.0-dev.4",
17
+ "@livestore/utils": "0.4.0-dev.4",
18
+ "@livestore/livestore": "0.4.0-dev.4",
19
+ "@livestore/common-cf": "0.4.0-dev.4"
19
20
  },
20
21
  "devDependencies": {
21
- "wrangler": "^4.30.0"
22
+ "wrangler": "^4.32.0"
22
23
  },
23
24
  "files": [
24
25
  "package.json",
@@ -1,12 +0,0 @@
1
- import type { SyncBackendConstructor } from '@livestore/common';
2
- import type { WSMessage } from '@livestore/sync-cf/common';
3
- import type * as CfWorker from './cf-types.ts';
4
- export type MakeDurableObjectSyncBackendOptions = {
5
- /** WebSocket URL to connect to the sync backend Durable Object */
6
- durableObject: CfWorker.DurableObjectStub;
7
- };
8
- /**
9
- * Specialized sync backend used for Cloudflare Workers compatible only with `@livestore/sync-cf`
10
- */
11
- export declare const makeSyncProviderClient: ({ durableObject }: MakeDurableObjectSyncBackendOptions) => SyncBackendConstructor<WSMessage.SyncMetadata>;
12
- //# sourceMappingURL=sync-provider-client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync-provider-client.d.ts","sourceRoot":"","sources":["../src/sync-provider-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAE/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAE1D,OAAO,KAAK,KAAK,QAAQ,MAAM,eAAe,CAAA;AAG9C,MAAM,MAAM,mCAAmC,GAAG;IAChD,kEAAkE;IAClE,aAAa,EAAE,QAAQ,CAAC,iBAAiB,CAAA;CAC1C,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,GAChC,mBAAmB,mCAAmC,KAAG,sBAAsB,CAAC,SAAS,CAAC,YAAY,CAqBtG,CAAA"}
@@ -1,24 +0,0 @@
1
- import { makeCfSync } from '@livestore/sync-cf';
2
- import { Effect, Schedule } from '@livestore/utils/effect';
3
- import { makeWebSocket } from "./WebSocket.js";
4
- /**
5
- * Specialized sync backend used for Cloudflare Workers compatible only with `@livestore/sync-cf`
6
- */
7
- export const makeSyncProviderClient = ({ durableObject }) => (args) => {
8
- // Create a WebSocket factory that uses Cloudflare Durable Objects
9
- const webSocketFactory = (wsUrl) => Effect.gen(function* () {
10
- const url = new URL(wsUrl);
11
- const socket = yield* makeWebSocket({
12
- durableObject,
13
- url,
14
- reconnect: Schedule.exponential(100),
15
- });
16
- return socket;
17
- });
18
- // Use the unified ws-impl with the Cloudflare WebSocket factory
19
- return makeCfSync({
20
- url: 'https://unused.com', // URL is constructed internally by ws-impl
21
- webSocketFactory,
22
- })(args);
23
- };
24
- //# sourceMappingURL=sync-provider-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync-provider-client.js","sourceRoot":"","sources":["../src/sync-provider-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAA8B,MAAM,yBAAyB,CAAA;AAEtF,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAO9C;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GACjC,CAAC,EAAE,aAAa,EAAuC,EAAkD,EAAE,CAC3G,CAAC,IAAI,EAAE,EAAE;IACP,kEAAkE;IAClE,MAAM,gBAAgB,GAAG,CACvB,KAAa,EAC+D,EAAE,CAC9E,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAA;QAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,aAAa,CAAC;YAClC,aAAa;YACb,GAAG;YACH,SAAS,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC;SACrC,CAAC,CAAA;QACF,OAAO,MAAyC,CAAA;IAClD,CAAC,CAAC,CAAA;IAEJ,gEAAgE;IAChE,OAAO,UAAU,CAAC;QAChB,GAAG,EAAE,oBAAoB,EAAE,2CAA2C;QACtE,gBAAgB;KACjB,CAAC,CAAC,IAAI,CAAC,CAAA;AACV,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=sync-provider-rpc-client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync-provider-rpc-client.d.ts","sourceRoot":"","sources":["../src/sync-provider-rpc-client.ts"],"names":[],"mappings":""}
@@ -1,139 +0,0 @@
1
- // import { InvalidPullError, InvalidPushError, SyncBackend } from '@livestore/common'
2
- // import { layerProtocolDurableObject } from '@livestore/common-cf'
3
- // import * as CfSyncBackend from '@livestore/sync-cf/cf-worker'
4
- // import {
5
- // Effect,
6
- // Layer,
7
- // Option,
8
- // Queue,
9
- // RpcClient,
10
- // RpcSerialization,
11
- // Stream,
12
- // SubscriptionRef,
13
- // } from '@livestore/utils/effect'
14
- // import { nanoid } from '@livestore/utils/nanoid'
15
- // import type * as CfWorker from './cf-types.ts'
16
- export {};
17
- // // Extended RPC interface for sync backend stub
18
- // interface SyncBackendRpcStub extends CfWorker.DurableObjectStub, CfSyncBackend.SyncBackendRpcInterface {}
19
- // export type MakeRpcSyncBackendOptions = {
20
- // /** Sync backend Durable Object stub for RPC calls */
21
- // syncBackendStub: SyncBackendRpcStub
22
- // /** This client's ID for subscription callbacks */
23
- // clientId: string
24
- // /** This client's Durable Object ID for subscription callbacks */
25
- // durableObjectId: string
26
- // }
27
- // /**
28
- // * RPC-based sync client that uses direct Durable Object RPC calls
29
- // * instead of WebSocket connections
30
- // */
31
- // export const makeRpcSyncProviderClient =
32
- // ({
33
- // syncBackendStub,
34
- // clientId,
35
- // durableObjectId,
36
- // }: MakeRpcSyncBackendOptions): SyncBackend.SyncBackendConstructor<{ createdAt: string }> =>
37
- // ({ storeId, payload }) =>
38
- // Effect.gen(function* () {
39
- // const isConnected = yield* SubscriptionRef.make(true)
40
- // // PubSub for incoming messages from RPC callbacks
41
- // const ProtocolLive = layerProtocolDurableObject((payload) => syncBackendStub.rpc(payload)).pipe(
42
- // Layer.provide(RpcSerialization.layerJson),
43
- // )
44
- // const rpcClient = yield* RpcClient.make(CfSyncBackend.SyncDoRpc).pipe(Effect.provide(ProtocolLive))
45
- // // Nothing to do here
46
- // const connect = Effect.void
47
- // const pull: SyncBackend.SyncBackend<{ createdAt: string }>['pull'] = (args) =>
48
- // Effect.gen(function* () {
49
- // const initialCursor = Option.getOrUndefined(args)?.cursor.global
50
- // const cursorRef = { current: initialCursor }
51
- // // const incomingMessages = yield* PubSub.unbounded<SyncBackend.PullResItem>()
52
- // const messagesQueue =
53
- // yield* Queue.unbounded<SyncBackend.PullResItem<{ createdAt: string }>>().pipe(
54
- // // Effect.acquireRelease(Queue.shutdown),
55
- // )
56
- // const requestId = nanoid()
57
- // const runPull = Effect.gen(function* () {
58
- // yield* rpcClient.SyncDoRpc.Pull({
59
- // requestId,
60
- // cursor: cursorRef.current,
61
- // storeId,
62
- // }).pipe(
63
- // Stream.mapError((cause) => new InvalidPullError({ cause })),
64
- // Stream.map((_) => ({ batch: _.batch, remaining: _.remaining })),
65
- // Stream.tap((msg) => Effect.log(`RPC pulled ${msg.batch.length} events from sync provider`)),
66
- // Stream.tap((msg) =>
67
- // Effect.sync(() => {
68
- // if (msg.batch.length > 0) {
69
- // cursorRef.current = msg.batch.at(-1)!.eventEncoded.seqNum
70
- // }
71
- // }),
72
- // ),
73
- // Stream.withSpan('rpc-sync-client:pull'),
74
- // Stream.tapErrorCause((cause) => Effect.logError(cause)),
75
- // Stream.tapChunk((msg) => Queue.offerAll(messagesQueue, msg)),
76
- // Stream.runDrain,
77
- // )
78
- // })
79
- // yield* rpcClient.SyncDoRpc.Subscribe({ clientId, storeId, requestId, durableObjectId, payload }).pipe(
80
- // // yield* Stream.succeed('ok').pipe(
81
- // // Stream.repeat(Schedule.spaced(1000)),
82
- // Stream.tapLogWithLabel('rpc-sync-client:subscribe'),
83
- // Stream.tap(() => runPull),
84
- // Stream.onDone(() => Effect.log('rpc-sync-client:subscribe done')),
85
- // Stream.onEnd(Effect.log('rpc-sync-client:subscribe end')),
86
- // Stream.runDrain,
87
- // Effect.tapCauseLogPretty,
88
- // Effect.tap(() => Effect.log('rpc-sync-client:subscribe tap')),
89
- // // Effect.forkScoped,
90
- // Effect.fork,
91
- // Effect.tapCauseLogPretty,
92
- // )
93
- // // setInterval(() => {
94
- // // console.log('runPull')
95
- // // }, 1000)
96
- // yield* runPull
97
- // yield* Effect.addFinalizerLog('rpc-sync-client:finalizer')
98
- // // console.log('client do pull', args)
99
- // // return Stream.empty
100
- // return Stream.fromQueue(messagesQueue)
101
- // }).pipe(Stream.unwrapScoped)
102
- // const push: SyncBackend.SyncBackend<{ createdAt: string }>['push'] = (batch) =>
103
- // Effect.gen(function* () {
104
- // yield* Effect.log(`RPC Sync Client: Pushing ${batch.length} events`)
105
- // if (batch.length === 0) {
106
- // return
107
- // }
108
- // yield* rpcClient.SyncDoRpc.Push({ requestId: nanoid(), batch, storeId }).pipe(
109
- // Effect.tapCauseLogPretty,
110
- // Effect.mapError((cause) => new InvalidPushError({ reason: { _tag: 'Unexpected', cause } })),
111
- // // Effect.orDie,
112
- // )
113
- // yield* Effect.log(`RPC Sync Client: Successfully pushed ${batch.length} events`)
114
- // // console.log(`RPC Sync Client: Pushing ${batch.length} events`)
115
- // // const pushReq = WSMessage.PushReq.make({
116
- // // requestId: `rpc-push-${Date.now()}`,
117
- // // batch,
118
- // // })
119
- // // // Direct RPC call to sync backend
120
- // // // yield* Effect.tryPromise({
121
- // // // try: () => syncBackendStub.push(pushReq),
122
- // // // catch: (error) => new InvalidPushError({ reason: { _tag: 'Unexpected', message: String(error) } }),
123
- // // // })
124
- // // console.log(`RPC Sync Client: Successfully pushed ${batch.length} events`)
125
- // }).pipe(Effect.withSpan('rpc-sync-client:push'))
126
- // return SyncBackend.of({
127
- // connect,
128
- // isConnected,
129
- // pull,
130
- // push,
131
- // metadata: {
132
- // name: 'rpc-sync-client',
133
- // description: 'Cloudflare Durable Object RPC Sync Client',
134
- // protocol: 'rpc',
135
- // storeId,
136
- // },
137
- // })
138
- // }).pipe(Effect.withSpan('makeRpcSyncProviderClient'))
139
- //# sourceMappingURL=sync-provider-rpc-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync-provider-rpc-client.js","sourceRoot":"","sources":["../src/sync-provider-rpc-client.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,oEAAoE;AACpE,gEAAgE;AAChE,WAAW;AACX,YAAY;AACZ,WAAW;AACX,YAAY;AACZ,WAAW;AACX,eAAe;AACf,sBAAsB;AACtB,YAAY;AACZ,qBAAqB;AACrB,mCAAmC;AACnC,mDAAmD;AACnD,iDAAiD;;AAEjD,kDAAkD;AAElD,4GAA4G;AAE5G,4CAA4C;AAC5C,0DAA0D;AAC1D,wCAAwC;AACxC,uDAAuD;AACvD,qBAAqB;AACrB,sEAAsE;AACtE,4BAA4B;AAC5B,IAAI;AAEJ,MAAM;AACN,qEAAqE;AACrE,sCAAsC;AACtC,MAAM;AACN,2CAA2C;AAC3C,OAAO;AACP,uBAAuB;AACvB,gBAAgB;AAChB,uBAAuB;AACvB,gGAAgG;AAChG,8BAA8B;AAC9B,gCAAgC;AAChC,8DAA8D;AAE9D,2DAA2D;AAE3D,yGAAyG;AACzG,qDAAqD;AACrD,UAAU;AAEV,4GAA4G;AAE5G,8BAA8B;AAC9B,oCAAoC;AAEpC,uFAAuF;AACvF,oCAAoC;AACpC,6EAA6E;AAE7E,yDAAyD;AAEzD,2FAA2F;AAC3F,kCAAkC;AAClC,6FAA6F;AAC7F,0DAA0D;AAC1D,gBAAgB;AAEhB,uCAAuC;AAEvC,sDAAsD;AACtD,gDAAgD;AAChD,2BAA2B;AAC3B,2CAA2C;AAC3C,yBAAyB;AACzB,uBAAuB;AACvB,6EAA6E;AAC7E,iFAAiF;AACjF,6GAA6G;AAC7G,oCAAoC;AACpC,sCAAsC;AACtC,gDAAgD;AAChD,gFAAgF;AAChF,sBAAsB;AACtB,sBAAsB;AACtB,mBAAmB;AACnB,yDAAyD;AACzD,yEAAyE;AACzE,8EAA8E;AAC9E,iCAAiC;AACjC,gBAAgB;AAChB,eAAe;AAEf,mHAAmH;AACnH,mDAAmD;AACnD,yDAAyD;AACzD,mEAAmE;AACnE,yCAAyC;AACzC,iFAAiF;AACjF,yEAAyE;AACzE,+BAA+B;AAC/B,wCAAwC;AACxC,6EAA6E;AAC7E,oCAAoC;AACpC,2BAA2B;AAC3B,wCAAwC;AACxC,cAAc;AAEd,mCAAmC;AACnC,wCAAwC;AACxC,wBAAwB;AAExB,2BAA2B;AAE3B,uEAAuE;AAEvE,mDAAmD;AACnD,mCAAmC;AAEnC,mDAAmD;AACnD,uCAAuC;AAEvC,wFAAwF;AACxF,oCAAoC;AACpC,iFAAiF;AAEjF,sCAAsC;AACtC,qBAAqB;AACrB,cAAc;AAEd,2FAA2F;AAC3F,wCAAwC;AACxC,2GAA2G;AAC3G,+BAA+B;AAC/B,cAAc;AAEd,6FAA6F;AAE7F,8EAA8E;AAE9E,wDAAwD;AACxD,sDAAsD;AACtD,wBAAwB;AACxB,kBAAkB;AAElB,kDAAkD;AAClD,6CAA6C;AAC7C,8DAA8D;AAC9D,wHAAwH;AACxH,qBAAqB;AAErB,0FAA0F;AAC1F,2DAA2D;AAE3D,gCAAgC;AAChC,mBAAmB;AACnB,uBAAuB;AACvB,gBAAgB;AAChB,gBAAgB;AAChB,sBAAsB;AACtB,qCAAqC;AACrC,sEAAsE;AACtE,6BAA6B;AAC7B,qBAAqB;AACrB,aAAa;AACb,WAAW;AACX,4DAA4D"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=sync-provider-ws-client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync-provider-ws-client.d.ts","sourceRoot":"","sources":["../src/sync-provider-ws-client.ts"],"names":[],"mappings":""}
@@ -1,40 +0,0 @@
1
- // import type { SyncBackend } from '@livestore/common'
2
- // import { makeCfSync } from '@livestore/sync-cf'
3
- // import type * as CfSyncBackend from '@livestore/sync-cf/cf-worker'
4
- // import type { WSMessage } from '@livestore/sync-cf/common'
5
- // import { Effect, Schedule, type Scope, type WebSocket } from '@livestore/utils/effect'
6
- // import type * as CfWorker from './cf-types.ts'
7
- // import { makeWebSocket } from './WebSocket.ts'
8
- export {};
9
- // export type MakeDurableObjectSyncBackendOptions = {
10
- // /** WebSocket URL to connect to the sync backend Durable Object */
11
- // durableObject: CfWorker.DurableObjectStub<CfSyncBackend.SyncBackendRpcInterface>
12
- // }
13
- // /**
14
- // * Specialized sync backend used for Cloudflare Workers compatible only with `@livestore/sync-cf`
15
- // */
16
- // export const makeWsSyncProviderClient =
17
- // ({
18
- // durableObject,
19
- // }: MakeDurableObjectSyncBackendOptions): SyncBackend.SyncBackendConstructor<WSMessage.SyncMetadata> =>
20
- // (args) => {
21
- // // Create a WebSocket factory that uses Cloudflare Durable Objects
22
- // const webSocketFactory = (
23
- // wsUrl: string,
24
- // ): Effect.Effect<globalThis.WebSocket, WebSocket.WebSocketError, Scope.Scope> =>
25
- // Effect.gen(function* () {
26
- // const url = new URL(wsUrl)
27
- // const socket = yield* makeWebSocket({
28
- // durableObject,
29
- // url,
30
- // reconnect: Schedule.exponential(100),
31
- // })
32
- // return socket as unknown as globalThis.WebSocket
33
- // })
34
- // // Use the unified ws-impl with the Cloudflare WebSocket factory
35
- // return makeCfSync({
36
- // url: 'https://unused.com', // URL is constructed internally by ws-impl
37
- // webSocketFactory,
38
- // })(args)
39
- // }
40
- //# sourceMappingURL=sync-provider-ws-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync-provider-ws-client.js","sourceRoot":"","sources":["../src/sync-provider-ws-client.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,kDAAkD;AAClD,qEAAqE;AACrE,6DAA6D;AAC7D,yFAAyF;AACzF,iDAAiD;AACjD,iDAAiD;;AAEjD,sDAAsD;AACtD,uEAAuE;AACvE,qFAAqF;AACrF,IAAI;AAEJ,MAAM;AACN,oGAAoG;AACpG,MAAM;AACN,0CAA0C;AAC1C,OAAO;AACP,qBAAqB;AACrB,2GAA2G;AAC3G,gBAAgB;AAChB,yEAAyE;AACzE,iCAAiC;AACjC,uBAAuB;AACvB,uFAAuF;AACvF,kCAAkC;AAClC,qCAAqC;AACrC,gDAAgD;AAChD,2BAA2B;AAC3B,iBAAiB;AACjB,kDAAkD;AAClD,aAAa;AACb,2DAA2D;AAC3D,WAAW;AAEX,uEAAuE;AACvE,0BAA0B;AAC1B,+EAA+E;AAC/E,0BAA0B;AAC1B,eAAe;AACf,MAAM"}