@livestore/common-cf 0.4.0-dev.8 → 0.4.0-dev.9

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 (23) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/helper.d.ts +25 -0
  3. package/dist/helper.d.ts.map +1 -0
  4. package/dist/helper.js +2 -0
  5. package/dist/helper.js.map +1 -0
  6. package/dist/mod.d.ts +1 -0
  7. package/dist/mod.d.ts.map +1 -1
  8. package/dist/mod.js +1 -0
  9. package/dist/mod.js.map +1 -1
  10. package/dist/ws-rpc/test-fixtures/worker.d.ts +1 -3
  11. package/dist/ws-rpc/test-fixtures/worker.d.ts.map +1 -1
  12. package/dist/ws-rpc/test-fixtures/worker.js +1 -4
  13. package/dist/ws-rpc/test-fixtures/worker.js.map +1 -1
  14. package/package.json +6 -6
  15. package/src/do-rpc/test-fixtures/.wrangler/state/v3/do/test-durable-object-rpc-TestRpcDurableObject/9ad3dfcb5436dfc3f2e14f5b554a0fd6d8b68206ad64fdde7320232d04e16dfe.sqlite +0 -0
  16. package/src/do-rpc/test-fixtures/.wrangler/state/v3/do/test-durable-object-rpc-TestRpcDurableObject/9ad3dfcb5436dfc3f2e14f5b554a0fd6d8b68206ad64fdde7320232d04e16dfe.sqlite-shm +0 -0
  17. package/src/do-rpc/test-fixtures/.wrangler/state/v3/do/test-durable-object-rpc-TestRpcDurableObject/9ad3dfcb5436dfc3f2e14f5b554a0fd6d8b68206ad64fdde7320232d04e16dfe.sqlite-wal +0 -0
  18. package/src/helper.ts +26 -0
  19. package/src/mod.ts +1 -0
  20. package/src/ws-rpc/test-fixtures/.wrangler/state/v3/do/test-durable-object-rpc-TestRpcDurableObject/9ad3dfcb5436dfc3f2e14f5b554a0fd6d8b68206ad64fdde7320232d04e16dfe.sqlite +0 -0
  21. package/src/ws-rpc/test-fixtures/.wrangler/state/v3/do/test-durable-object-rpc-TestRpcDurableObject/9ad3dfcb5436dfc3f2e14f5b554a0fd6d8b68206ad64fdde7320232d04e16dfe.sqlite-shm +0 -0
  22. package/src/ws-rpc/test-fixtures/.wrangler/state/v3/do/test-durable-object-rpc-TestRpcDurableObject/9ad3dfcb5436dfc3f2e14f5b554a0fd6d8b68206ad64fdde7320232d04e16dfe.sqlite-wal +0 -0
  23. package/src/ws-rpc/test-fixtures/worker.ts +3 -5
@@ -0,0 +1,25 @@
1
+ import type * as CfTypes from './cf-types.ts';
2
+ export declare namespace HelperTypes {
3
+ type AnyDON = CfTypes.DurableObjectNamespace<any>;
4
+ type DOKeys<T> = {
5
+ [K in keyof T]-?: T[K] extends AnyDON ? K : never;
6
+ }[keyof T];
7
+ /**
8
+ * Helper type to extract DurableObject keys from Env to give consumer type safety.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * type PlatformEnv = {
13
+ * DB: D1Database
14
+ * ADMIN_TOKEN: string
15
+ * SYNC_BACKEND_DO: DurableObjectNamespace<SyncBackendDO>
16
+ * }
17
+ * export default makeWorker<PlatformEnv>({
18
+ * syncBackendBinding: 'SYNC_BACKEND_DO',
19
+ * // ^ (property) syncBackendBinding: "SYNC_BACKEND_DO"
20
+ * });
21
+ */
22
+ export type ExtractDurableObjectKeys<TEnv> = DOKeys<TEnv> extends never ? string : DOKeys<TEnv> & string;
23
+ export {};
24
+ }
25
+ //# sourceMappingURL=helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,OAAO,MAAM,eAAe,CAAA;AAE7C,yBAAiB,WAAW,CAAC;IAC3B,KAAK,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAA;IAEjD,KAAK,MAAM,CAAC,CAAC,IAAI;SACd,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,CAAC,GAAG,KAAK;KAClD,CAAC,MAAM,CAAC,CAAC,CAAA;IAEV;;;;;;;;;;;;;;OAcG;IACH,MAAM,MAAM,wBAAwB,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAA;;CACzG"}
package/dist/helper.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helper.js","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":""}
package/dist/mod.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export type * as CfTypes from './cf-types.ts';
2
2
  export * from './do-rpc/mod.ts';
3
+ export * from './helper.ts';
3
4
  export * from './ws-rpc/ws-rpc-server.ts';
4
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,YAAY,KAAK,OAAO,MAAM,eAAe,CAAA;AAC7C,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,YAAY,KAAK,OAAO,MAAM,eAAe,CAAA;AAC7C,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,2BAA2B,CAAA"}
package/dist/mod.js CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from "./do-rpc/mod.js";
2
+ export * from "./helper.js";
2
3
  export * from "./ws-rpc/ws-rpc-server.js";
3
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":"AACA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA"}
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AACA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,2BAA2B,CAAA"}
@@ -2,10 +2,8 @@ import { DurableObject } from 'cloudflare:workers';
2
2
  export interface Env {
3
3
  TEST_RPC_DO: DurableObjectNamespace<TestRpcDurableObject>;
4
4
  }
5
- export declare class TestRpcDurableObject extends DurableObject {
5
+ export declare class TestRpcDurableObject extends DurableObject<Env, unknown> {
6
6
  __DURABLE_OBJECT_BRAND: never;
7
- env: Env;
8
- ctx: DurableObjectState;
9
7
  constructor(state: DurableObjectState, env: Env);
10
8
  fetch(request: Request): Promise<Response>;
11
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/ws-rpc/test-fixtures/worker.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAMlD,MAAM,WAAW,GAAG;IAClB,WAAW,EAAE,sBAAsB,CAAC,oBAAoB,CAAC,CAAA;CAC1D;AAED,qBAAa,oBAAqB,SAAQ,aAAa;IACrD,sBAAsB,EAA6B,KAAK,CAAA;IACxD,GAAG,EAAE,GAAG,CAAA;IACR,GAAG,EAAE,kBAAkB,CAAA;gBAEX,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,GAAG;IA8CzC,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;CAgBjD;;mBAGsB,OAAO,OAAO,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;;AAD5D,wBAeC"}
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/ws-rpc/test-fixtures/worker.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAMlD,MAAM,WAAW,GAAG;IAClB,WAAW,EAAE,sBAAsB,CAAC,oBAAoB,CAAC,CAAA;CAC1D;AAED,qBAAa,oBAAqB,SAAQ,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC;IACnE,sBAAsB,EAA6B,KAAK,CAAA;gBAE5C,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,GAAG;IA8CzC,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;CAgBjD;;mBAGsB,OAAO,OAAO,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;;AAD5D,wBAeC"}
@@ -5,11 +5,8 @@ import { setupDurableObjectWebSocketRpc } from "../ws-rpc-server.js";
5
5
  import { TestRpcs } from "./rpc-schema.js";
6
6
  export class TestRpcDurableObject extends DurableObject {
7
7
  __DURABLE_OBJECT_BRAND = 'TestRpcDurableObject';
8
- env;
9
- ctx;
10
8
  constructor(state, env) {
11
9
  super(state, env);
12
- this.env = env;
13
10
  this.ctx = state;
14
11
  const handlersLayer = TestRpcs.toLayer({
15
12
  Ping: ({ message }) => Effect.succeed({ response: `Pong: ${message}` }),
@@ -36,7 +33,7 @@ export class TestRpcDurableObject extends DurableObject {
36
33
  return new Response('Durable Object expected Upgrade: websocket', { status: 426 });
37
34
  }
38
35
  const { 0: client, 1: server } = new WebSocketPair();
39
- // Hibernate the server
36
+ // Hibernate the server; DurableObjectState is stored on ctx
40
37
  this.ctx.acceptWebSocket(server);
41
38
  return new Response(null, {
42
39
  status: 101,
@@ -1 +1 @@
1
- {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../src/ws-rpc/test-fixtures/worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../src/ws-rpc/test-fixtures/worker.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@livestore/common-cf",
3
- "version": "0.4.0-dev.8",
3
+ "version": "0.4.0-dev.9",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "exports": {
@@ -8,14 +8,14 @@
8
8
  "./declare": "./dist/declare/mod.js"
9
9
  },
10
10
  "dependencies": {
11
- "@cloudflare/workers-types": "4.20250823.0",
12
- "@livestore/utils": "0.4.0-dev.8",
13
- "@livestore/common": "0.4.0-dev.8"
11
+ "@cloudflare/workers-types": "4.20250923.0",
12
+ "@livestore/common": "0.4.0-dev.9",
13
+ "@livestore/utils": "0.4.0-dev.9"
14
14
  },
15
15
  "devDependencies": {
16
16
  "vitest": "3.2.4",
17
- "wrangler": "4.32.0",
18
- "@livestore/utils-dev": "0.4.0-dev.8"
17
+ "wrangler": "4.38.0",
18
+ "@livestore/utils-dev": "0.4.0-dev.9"
19
19
  },
20
20
  "files": [
21
21
  "dist",
package/src/helper.ts ADDED
@@ -0,0 +1,26 @@
1
+ import type * as CfTypes from './cf-types.ts'
2
+
3
+ export namespace HelperTypes {
4
+ type AnyDON = CfTypes.DurableObjectNamespace<any>
5
+
6
+ type DOKeys<T> = {
7
+ [K in keyof T]-?: T[K] extends AnyDON ? K : never
8
+ }[keyof T]
9
+
10
+ /**
11
+ * Helper type to extract DurableObject keys from Env to give consumer type safety.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * type PlatformEnv = {
16
+ * DB: D1Database
17
+ * ADMIN_TOKEN: string
18
+ * SYNC_BACKEND_DO: DurableObjectNamespace<SyncBackendDO>
19
+ * }
20
+ * export default makeWorker<PlatformEnv>({
21
+ * syncBackendBinding: 'SYNC_BACKEND_DO',
22
+ * // ^ (property) syncBackendBinding: "SYNC_BACKEND_DO"
23
+ * });
24
+ */
25
+ export type ExtractDurableObjectKeys<TEnv> = DOKeys<TEnv> extends never ? string : DOKeys<TEnv> & string
26
+ }
package/src/mod.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export type * as CfTypes from './cf-types.ts'
2
2
  export * from './do-rpc/mod.ts'
3
+ export * from './helper.ts'
3
4
  export * from './ws-rpc/ws-rpc-server.ts'
@@ -10,14 +10,12 @@ export interface Env {
10
10
  TEST_RPC_DO: DurableObjectNamespace<TestRpcDurableObject>
11
11
  }
12
12
 
13
- export class TestRpcDurableObject extends DurableObject {
13
+ export class TestRpcDurableObject extends DurableObject<Env, unknown> {
14
14
  __DURABLE_OBJECT_BRAND = 'TestRpcDurableObject' as never
15
- env: Env
16
- ctx: DurableObjectState
17
15
 
18
16
  constructor(state: DurableObjectState, env: Env) {
19
17
  super(state, env)
20
- this.env = env
18
+
21
19
  this.ctx = state
22
20
 
23
21
  const handlersLayer = TestRpcs.toLayer({
@@ -69,7 +67,7 @@ export class TestRpcDurableObject extends DurableObject {
69
67
 
70
68
  const { 0: client, 1: server } = new WebSocketPair()
71
69
 
72
- // Hibernate the server
70
+ // Hibernate the server; DurableObjectState is stored on ctx
73
71
  this.ctx.acceptWebSocket(server)
74
72
 
75
73
  return new Response(null, {