@livestore/sync-cf 0.2.0 → 0.3.0-dev.10

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 (66) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/cf-worker/durable-object.d.ts +40 -34
  3. package/dist/cf-worker/durable-object.d.ts.map +1 -1
  4. package/dist/cf-worker/durable-object.js +158 -123
  5. package/dist/cf-worker/durable-object.js.map +1 -1
  6. package/dist/cf-worker/index.d.ts +1 -6
  7. package/dist/cf-worker/index.d.ts.map +1 -1
  8. package/dist/cf-worker/index.js +30 -64
  9. package/dist/cf-worker/index.js.map +1 -1
  10. package/dist/cf-worker/make-worker.d.ts +6 -0
  11. package/dist/cf-worker/make-worker.d.ts.map +1 -0
  12. package/dist/cf-worker/make-worker.js +31 -0
  13. package/dist/cf-worker/make-worker.js.map +1 -0
  14. package/dist/cf-worker/mod.d.ts +3 -0
  15. package/dist/cf-worker/mod.d.ts.map +1 -0
  16. package/dist/cf-worker/mod.js +3 -0
  17. package/dist/cf-worker/mod.js.map +1 -0
  18. package/dist/cf-worker/types.d.ts +2 -0
  19. package/dist/cf-worker/types.d.ts.map +1 -0
  20. package/dist/cf-worker/types.js +2 -0
  21. package/dist/cf-worker/types.js.map +1 -0
  22. package/dist/cf-worker/worker.d.ts +6 -0
  23. package/dist/cf-worker/worker.d.ts.map +1 -0
  24. package/dist/cf-worker/worker.js +29 -0
  25. package/dist/cf-worker/worker.js.map +1 -0
  26. package/dist/common/mod.d.ts +2 -0
  27. package/dist/common/mod.d.ts.map +1 -0
  28. package/dist/common/mod.js +2 -0
  29. package/dist/common/mod.js.map +1 -0
  30. package/dist/common/ws-message-types.d.ts +92 -216
  31. package/dist/common/ws-message-types.d.ts.map +1 -1
  32. package/dist/common/ws-message-types.js +13 -9
  33. package/dist/common/ws-message-types.js.map +1 -1
  34. package/dist/sync-impl/mod.d.ts +2 -0
  35. package/dist/sync-impl/mod.d.ts.map +1 -0
  36. package/dist/sync-impl/mod.js +2 -0
  37. package/dist/sync-impl/mod.js.map +1 -0
  38. package/dist/sync-impl/ws-impl.d.ts +5 -13
  39. package/dist/sync-impl/ws-impl.d.ts.map +1 -1
  40. package/dist/sync-impl/ws-impl.js +69 -69
  41. package/dist/sync-impl/ws-impl.js.map +1 -1
  42. package/package.json +17 -8
  43. package/src/cf-worker/durable-object.ts +233 -153
  44. package/src/cf-worker/mod.ts +2 -0
  45. package/src/cf-worker/worker.ts +39 -0
  46. package/src/common/ws-message-types.ts +18 -9
  47. package/src/sync-impl/ws-impl.ts +120 -121
  48. package/.netlify/state.json +0 -3
  49. package/.wrangler/state/v3/d1/miniflare-D1DatabaseObject/8ee300993f9a2c909aede59646369fa0cc28d25304b9b9af94f54d4543ad60f4.sqlite +0 -0
  50. package/.wrangler/state/v3/do/websocket-server-WebSocketServer/2c3676d859102e448b271e1b4336b1e40778992b14728e2a2bd642c0f225e9c5.sqlite +0 -0
  51. package/.wrangler/state/v3/do/websocket-server-WebSocketServer/6eb1111cecdc6ae7e3a38c3d7db0f3ec7de5b318e682cdcf0ff0dc881cbbcee7.sqlite +0 -0
  52. package/.wrangler/state/v3/do/websocket-server-WebSocketServer/c4aa0e61dcd784604bee52282348e0538ab69ec76e1652322bbccd539d9ff3ee.sqlite +0 -0
  53. package/.wrangler/state/v3/do/websocket-server-WebSocketServer/d87433156774c933da83e962eba16107cf02ade2f133d7205963558fe47db3ff.sqlite +0 -0
  54. package/.wrangler/tmp/dev-33iU4b/index.js +0 -42167
  55. package/.wrangler/tmp/dev-33iU4b/index.js.map +0 -8
  56. package/.wrangler/tmp/dev-9rcIR8/index.js +0 -18887
  57. package/.wrangler/tmp/dev-9rcIR8/index.js.map +0 -8
  58. package/.wrangler/tmp/dev-rI63Kk/index.js +0 -42165
  59. package/.wrangler/tmp/dev-rI63Kk/index.js.map +0 -8
  60. package/.wrangler/tmp/dev-txPodK/index.js +0 -42118
  61. package/.wrangler/tmp/dev-txPodK/index.js.map +0 -8
  62. package/src/cf-worker/index.ts +0 -84
  63. package/tsconfig.json +0 -12
  64. package/wrangler.toml +0 -21
  65. /package/src/common/{index.ts → mod.ts} +0 -0
  66. /package/src/sync-impl/{index.ts → mod.ts} +0 -0
@@ -1,44 +1,50 @@
1
- import { DbSchema, type MutationEvent } from '@livestore/common/schema';
2
- import { Schema } from '@livestore/utils/effect';
1
+ import { DbSchema } from '@livestore/common/schema';
2
+ import { Effect, Option, Schema } from '@livestore/utils/effect';
3
3
  import { DurableObject } from 'cloudflare:workers';
4
+ import { WSMessage } from '../common/mod.js';
4
5
  export interface Env {
5
- WEBSOCKET_SERVER: DurableObjectNamespace<WebSocketServer>;
6
+ WEBSOCKET_SERVER: DurableObjectNamespace;
6
7
  DB: D1Database;
7
8
  ADMIN_SECRET: string;
8
9
  }
9
- type WebSocketClient = WebSocket;
10
10
  export declare const mutationLogTable: DbSchema.TableDef<{
11
11
  name: "__unused";
12
12
  columns: {
13
- idGlobal: {
13
+ id: {
14
14
  columnType: "integer";
15
- schema: Schema.Schema<number, number, never>;
16
- default: import("effect/Option").None<never>;
15
+ schema: Schema.Schema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
16
+ default: Option.None<never>;
17
17
  nullable: false;
18
18
  primaryKey: true;
19
19
  };
20
- parentIdGlobal: {
20
+ parentId: {
21
21
  columnType: "integer";
22
- schema: Schema.Schema<number, number, never>;
23
- default: import("effect/Option").None<never>;
22
+ schema: Schema.Schema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
23
+ default: Option.None<never>;
24
24
  nullable: false;
25
25
  primaryKey: false;
26
26
  };
27
27
  mutation: {
28
28
  columnType: "text";
29
29
  schema: Schema.Schema<string, string, never>;
30
- default: import("effect/Option").None<never>;
30
+ default: Option.None<never>;
31
31
  nullable: false;
32
32
  primaryKey: false;
33
33
  };
34
34
  args: {
35
35
  columnType: "text";
36
36
  schema: Schema.Schema<any, string, never>;
37
- default: import("effect/Option").None<never>;
37
+ default: Option.None<never>;
38
+ nullable: false;
39
+ primaryKey: false;
40
+ };
41
+ createdAt: {
42
+ columnType: "text";
43
+ schema: Schema.Schema<string, string, never>;
44
+ default: Option.None<never>;
38
45
  nullable: false;
39
46
  primaryKey: false;
40
47
  };
41
- id: DbSchema.SqliteDsl.ColumnDefinition<string, string>;
42
48
  };
43
49
  indexes?: ReadonlyArray<DbSchema.SqliteDsl.Index>;
44
50
  ast: import("@livestore/db-schema/dist/ast/sqlite.js").Table;
@@ -47,32 +53,32 @@ export declare const mutationLogTable: DbSchema.TableDef<{
47
53
  disableAutomaticIdColumn: false;
48
54
  deriveMutations: never;
49
55
  isSingleColumn: false;
50
- requiredInsertColumnNames: "idGlobal" | "parentIdGlobal" | "mutation" | "args";
56
+ requiredInsertColumnNames: "createdAt" | "mutation" | "args" | "id" | "parentId";
51
57
  }, Schema.Schema<{
52
- readonly idGlobal: number;
53
- readonly parentIdGlobal: number;
58
+ readonly id: number & import("effect/Brand").Brand<"GlobalEventId">;
59
+ readonly parentId: number & import("effect/Brand").Brand<"GlobalEventId">;
54
60
  readonly mutation: string;
55
61
  readonly args: any;
56
- readonly id: string;
62
+ readonly createdAt: string;
57
63
  }, {
58
- readonly idGlobal: number;
59
- readonly parentIdGlobal: number;
64
+ readonly id: number;
65
+ readonly parentId: number;
60
66
  readonly mutation: string;
61
67
  readonly args: string;
62
- readonly id: string;
68
+ readonly createdAt: string;
63
69
  }, never>>;
64
- export declare class WebSocketServer extends DurableObject<Env> {
65
- dbName: string;
66
- storage: {
67
- getLatestEvent: () => Promise<MutationEvent.Any | undefined>;
68
- getEvents: (cursor: number | undefined) => Promise<ReadonlyArray<MutationEvent.Any>>;
69
- appendEvent: (event: MutationEvent.Any) => Promise<void>;
70
- resetRoom: () => Promise<void>;
71
- };
72
- constructor(ctx: DurableObjectState, env: Env);
73
- fetch: (_request: Request) => Promise<Response>;
74
- webSocketMessage: (ws: WebSocketClient, message: ArrayBuffer | string) => Promise<undefined>;
75
- webSocketClose: (ws: WebSocketClient, code: number, _reason: string, _wasClean: boolean) => Promise<void>;
76
- }
77
- export {};
70
+ /**
71
+ * Needs to be bumped when the storage format changes (e.g. mutationLogTable schema changes)
72
+ *
73
+ * Changing this version number will lead to a "soft reset".
74
+ */
75
+ export declare const PERSISTENCE_FORMAT_VERSION = 2;
76
+ export type MakeDurableObjectClassOptions = {
77
+ onPush?: (message: WSMessage.PushReq) => Effect.Effect<void> | Promise<void>;
78
+ onPull?: (message: WSMessage.PullReq) => Effect.Effect<void> | Promise<void>;
79
+ };
80
+ export type MakeDurableObjectClass = (options?: MakeDurableObjectClassOptions) => {
81
+ new (ctx: DurableObjectState, env: Env): DurableObject<Env>;
82
+ };
83
+ export declare const makeDurableObject: MakeDurableObjectClass;
78
84
  //# sourceMappingURL=durable-object.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"durable-object.d.ts","sourceRoot":"","sources":["../../src/cf-worker/durable-object.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAA0B,MAAM,0BAA0B,CAAA;AAE/F,OAAO,EAAU,MAAM,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAIlD,MAAM,WAAW,GAAG;IAClB,gBAAgB,EAAE,sBAAsB,CAAC,eAAe,CAAC,CAAA;IACzD,EAAE,EAAE,UAAU,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,KAAK,eAAe,GAAG,SAAS,CAAA;AAMhC,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAK3B,CAAA;AAGF,qBAAa,eAAgB,SAAQ,aAAa,CAAC,GAAG,CAAC;IACrD,MAAM,SAA2C;IACjD,OAAO;8BAiK0B,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,SAAS,CAAC;4BAatC,MAAM,GAAG,SAAS,KAAG,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;6BAe7D,aAAa,CAAC,GAAG;;MA7LG;gBAE1C,GAAG,EAAE,kBAAkB,EAAE,GAAG,EAAE,GAAG;IAI7C,KAAK,aAAoB,OAAO,uBAsBsB;IAEtD,gBAAgB,OAAc,eAAe,WAAW,WAAW,GAAG,MAAM,wBA0H3E;IAED,cAAc,OAAc,eAAe,QAAQ,MAAM,WAAW,MAAM,aAAa,OAAO,mBAG7F;CACF"}
1
+ {"version":3,"file":"durable-object.d.ts","sourceRoot":"","sources":["../../src/cf-worker/durable-object.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAA+B,MAAM,0BAA0B,CAAA;AAEhF,OAAO,EAAE,MAAM,EAAoB,MAAM,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAG5C,MAAM,WAAW,GAAG;IAClB,gBAAgB,EAAE,sBAAsB,CAAA;IACxC,EAAE,EAAE,UAAU,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;CACrB;AASD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAO3B,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,IAAI,CAAA;AAE3C,MAAM,MAAM,6BAA6B,GAAG;IAC1C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5E,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7E,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,CAAC,EAAE,6BAA6B,KAAK;IAChF,KAAK,GAAG,EAAE,kBAAkB,EAAE,GAAG,EAAE,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;CAC5D,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,sBAkM/B,CAAA"}
@@ -1,166 +1,201 @@
1
- import { makeColumnSpec, ROOT_ID } from '@livestore/common';
2
- import { DbSchema, mutationEventSchemaAny } from '@livestore/common/schema';
1
+ import { makeColumnSpec } from '@livestore/common';
2
+ import { DbSchema, EventId } from '@livestore/common/schema';
3
3
  import { shouldNeverHappen } from '@livestore/utils';
4
- import { Effect, Schema } from '@livestore/utils/effect';
4
+ import { Effect, Logger, LogLevel, Option, Schema } from '@livestore/utils/effect';
5
5
  import { DurableObject } from 'cloudflare:workers';
6
- import { WSMessage } from '../common/index.js';
6
+ import { WSMessage } from '../common/mod.js';
7
7
  const encodeOutgoingMessage = Schema.encodeSync(Schema.parseJson(WSMessage.BackendToClientMessage));
8
8
  const encodeIncomingMessage = Schema.encodeSync(Schema.parseJson(WSMessage.ClientToBackendMessage));
9
9
  const decodeIncomingMessage = Schema.decodeUnknownEither(Schema.parseJson(WSMessage.ClientToBackendMessage));
10
+ // NOTE actual table name is determined at runtime by `WebSocketServer.dbName`
10
11
  export const mutationLogTable = DbSchema.table('__unused', {
11
- idGlobal: DbSchema.integer({ primaryKey: true }),
12
- parentIdGlobal: DbSchema.integer({}),
12
+ id: DbSchema.integer({ primaryKey: true, schema: EventId.GlobalEventId }),
13
+ parentId: DbSchema.integer({ schema: EventId.GlobalEventId }),
13
14
  mutation: DbSchema.text({}),
14
15
  args: DbSchema.text({ schema: Schema.parseJson(Schema.Any) }),
16
+ /** ISO date format. Currently only used for debugging purposes. */
17
+ createdAt: DbSchema.text({}),
15
18
  });
16
- // Durable Object
17
- export class WebSocketServer extends DurableObject {
18
- dbName = `mutation_log_${this.ctx.id.toString()}`;
19
- storage = makeStorage(this.ctx, this.env, this.dbName);
20
- constructor(ctx, env) {
21
- super(ctx, env);
22
- }
23
- fetch = async (_request) => Effect.gen(this, function* () {
24
- const { 0: client, 1: server } = new WebSocketPair();
25
- // See https://developers.cloudflare.com/durable-objects/examples/websocket-hibernation-server
26
- this.ctx.acceptWebSocket(server);
27
- this.ctx.setWebSocketAutoResponse(new WebSocketRequestResponsePair(encodeIncomingMessage(WSMessage.Ping.make({ requestId: 'ping' })), encodeOutgoingMessage(WSMessage.Pong.make({ requestId: 'ping' }))));
28
- const colSpec = makeColumnSpec(mutationLogTable.sqliteDef.ast);
29
- this.env.DB.exec(`CREATE TABLE IF NOT EXISTS ${this.dbName} (${colSpec}) strict`);
30
- return new Response(null, {
31
- status: 101,
32
- webSocket: client,
33
- });
34
- }).pipe(Effect.tapCauseLogPretty, Effect.runPromise);
35
- webSocketMessage = async (ws, message) => {
36
- const decodedMessageRes = decodeIncomingMessage(message);
37
- if (decodedMessageRes._tag === 'Left') {
38
- console.error('Invalid message received', decodedMessageRes.left);
39
- return;
19
+ /**
20
+ * Needs to be bumped when the storage format changes (e.g. mutationLogTable schema changes)
21
+ *
22
+ * Changing this version number will lead to a "soft reset".
23
+ */
24
+ export const PERSISTENCE_FORMAT_VERSION = 2;
25
+ export const makeDurableObject = (options) => {
26
+ return class WebSocketServerBase extends DurableObject {
27
+ storage = undefined;
28
+ constructor(ctx, env) {
29
+ super(ctx, env);
40
30
  }
41
- const decodedMessage = decodedMessageRes.right;
42
- const requestId = decodedMessage.requestId;
43
- try {
44
- switch (decodedMessage._tag) {
45
- case 'WSMessage.PullReq': {
46
- const cursor = decodedMessage.cursor;
47
- const CHUNK_SIZE = 100;
48
- // TODO use streaming
49
- const remainingEvents = [...(await this.storage.getEvents(cursor))];
50
- // NOTE we want to make sure the WS server responds at least once with `InitRes` even if `events` is empty
51
- while (true) {
52
- const events = remainingEvents.splice(0, CHUNK_SIZE);
53
- const encodedEvents = Schema.encodeSync(Schema.Array(mutationEventSchemaAny))(events);
54
- const hasMore = remainingEvents.length > 0;
55
- ws.send(encodeOutgoingMessage(WSMessage.PullRes.make({ events: encodedEvents, hasMore, requestId })));
56
- if (hasMore === false) {
57
- break;
31
+ fetch = async (request) => Effect.gen(this, function* () {
32
+ if (this.storage === undefined) {
33
+ const storeId = getStoreId(request);
34
+ const dbName = `mutation_log_${PERSISTENCE_FORMAT_VERSION}_${toValidTableName(storeId)}`;
35
+ this.storage = makeStorage(this.ctx, this.env, dbName);
36
+ }
37
+ const { 0: client, 1: server } = new WebSocketPair();
38
+ // See https://developers.cloudflare.com/durable-objects/examples/websocket-hibernation-server
39
+ this.ctx.acceptWebSocket(server);
40
+ this.ctx.setWebSocketAutoResponse(new WebSocketRequestResponsePair(encodeIncomingMessage(WSMessage.Ping.make({ requestId: 'ping' })), encodeOutgoingMessage(WSMessage.Pong.make({ requestId: 'ping' }))));
41
+ const colSpec = makeColumnSpec(mutationLogTable.sqliteDef.ast);
42
+ this.env.DB.exec(`CREATE TABLE IF NOT EXISTS ${this.storage.dbName} (${colSpec}) strict`);
43
+ return new Response(null, {
44
+ status: 101,
45
+ webSocket: client,
46
+ });
47
+ }).pipe(Effect.tapCauseLogPretty, Effect.runPromise);
48
+ webSocketMessage = (ws, message) => Effect.gen(this, function* () {
49
+ const decodedMessageRes = decodeIncomingMessage(message);
50
+ if (decodedMessageRes._tag === 'Left') {
51
+ console.error('Invalid message received', decodedMessageRes.left);
52
+ return;
53
+ }
54
+ const decodedMessage = decodedMessageRes.right;
55
+ const requestId = decodedMessage.requestId;
56
+ const storage = this.storage;
57
+ if (storage === undefined) {
58
+ throw new Error('storage not initialized');
59
+ }
60
+ try {
61
+ switch (decodedMessage._tag) {
62
+ case 'WSMessage.PullReq': {
63
+ if (options?.onPull) {
64
+ yield* Effect.tryAll(() => options.onPull(decodedMessage));
65
+ }
66
+ const cursor = decodedMessage.cursor;
67
+ const CHUNK_SIZE = 100;
68
+ // TODO use streaming
69
+ const remainingEvents = [...(yield* Effect.promise(() => storage.getEvents(cursor)))];
70
+ // NOTE we want to make sure the WS server responds at least once with `InitRes` even if `events` is empty
71
+ while (true) {
72
+ const events = remainingEvents.splice(0, CHUNK_SIZE);
73
+ ws.send(encodeOutgoingMessage(WSMessage.PullRes.make({ events, remaining: remainingEvents.length, requestId })));
74
+ if (remainingEvents.length === 0) {
75
+ break;
76
+ }
58
77
  }
78
+ break;
59
79
  }
60
- break;
61
- }
62
- case 'WSMessage.PushReq': {
63
- // TODO check whether we could use the Durable Object storage for this to speed up the lookup
64
- const latestEvent = await this.storage.getLatestEvent();
65
- const expectedParentId = latestEvent?.id ?? ROOT_ID;
66
- if (decodedMessage.mutationEventEncoded.parentId.global !== expectedParentId.global) {
67
- ws.send(encodeOutgoingMessage(WSMessage.Error.make({
68
- message: `Invalid parent id. Received ${decodedMessage.mutationEventEncoded.parentId.global} but expected ${expectedParentId.global}`,
69
- requestId,
70
- })));
71
- return;
80
+ case 'WSMessage.PushReq': {
81
+ if (options?.onPush) {
82
+ yield* Effect.tryAll(() => options.onPush(decodedMessage));
83
+ }
84
+ // TODO check whether we could use the Durable Object storage for this to speed up the lookup
85
+ const latestEvent = yield* Effect.promise(() => storage.getLatestEvent());
86
+ const expectedParentId = latestEvent?.id ?? EventId.ROOT.global;
87
+ let i = 0;
88
+ for (const mutationEventEncoded of decodedMessage.batch) {
89
+ if (mutationEventEncoded.parentId !== expectedParentId + i) {
90
+ const err = WSMessage.Error.make({
91
+ message: `Invalid parent id. Received ${mutationEventEncoded.parentId} but expected ${expectedParentId}`,
92
+ requestId,
93
+ });
94
+ yield* Effect.fail(err).pipe(Effect.ignoreLogged);
95
+ ws.send(encodeOutgoingMessage(err));
96
+ return;
97
+ }
98
+ // TODO handle clientId unique conflict
99
+ const createdAt = new Date().toISOString();
100
+ // NOTE we're currently not blocking on this to allow broadcasting right away
101
+ const storePromise = storage.appendEvent(mutationEventEncoded, createdAt);
102
+ ws.send(encodeOutgoingMessage(WSMessage.PushAck.make({ mutationId: mutationEventEncoded.id, requestId })));
103
+ // console.debug(`Broadcasting mutation event to ${this.subscribedWebSockets.size} clients`)
104
+ const connectedClients = this.ctx.getWebSockets();
105
+ if (connectedClients.length > 0) {
106
+ const broadcastMessage = encodeOutgoingMessage(
107
+ // TODO refactor to batch api
108
+ WSMessage.PushBroadcast.make({
109
+ mutationEventEncoded,
110
+ metadata: Option.some({ createdAt }),
111
+ }));
112
+ for (const conn of connectedClients) {
113
+ console.log('Broadcasting to client', conn === ws ? 'self' : 'other');
114
+ // if (conn !== ws) {
115
+ conn.send(broadcastMessage);
116
+ // }
117
+ }
118
+ }
119
+ yield* Effect.promise(() => storePromise);
120
+ i++;
121
+ }
122
+ break;
72
123
  }
73
- // TODO handle clientId unique conflict
74
- // NOTE we're currently not blocking on this to allow broadcasting right away
75
- const storePromise = decodedMessage.persisted
76
- ? this.storage.appendEvent(decodedMessage.mutationEventEncoded)
77
- : Promise.resolve();
78
- ws.send(encodeOutgoingMessage(WSMessage.PushAck.make({ mutationId: decodedMessage.mutationEventEncoded.id.global, requestId })));
79
- // console.debug(`Broadcasting mutation event to ${this.subscribedWebSockets.size} clients`)
80
- const connectedClients = this.ctx.getWebSockets();
81
- if (connectedClients.length > 0) {
82
- const broadcastMessage = encodeOutgoingMessage(WSMessage.PushBroadcast.make({
83
- mutationEventEncoded: decodedMessage.mutationEventEncoded,
84
- persisted: decodedMessage.persisted,
85
- }));
86
- for (const conn of connectedClients) {
87
- console.log('Broadcasting to client', conn === ws ? 'self' : 'other');
88
- // if (conn !== ws) {
89
- conn.send(broadcastMessage);
90
- // }
124
+ case 'WSMessage.AdminResetRoomReq': {
125
+ if (decodedMessage.adminSecret !== this.env.ADMIN_SECRET) {
126
+ ws.send(encodeOutgoingMessage(WSMessage.Error.make({ message: 'Invalid admin secret', requestId })));
127
+ return;
91
128
  }
129
+ yield* Effect.promise(() => storage.resetRoom());
130
+ ws.send(encodeOutgoingMessage(WSMessage.AdminResetRoomRes.make({ requestId })));
131
+ break;
92
132
  }
93
- await storePromise;
94
- break;
95
- }
96
- case 'WSMessage.AdminResetRoomReq': {
97
- if (decodedMessage.adminSecret !== this.env.ADMIN_SECRET) {
98
- ws.send(encodeOutgoingMessage(WSMessage.Error.make({ message: 'Invalid admin secret', requestId })));
99
- return;
133
+ case 'WSMessage.AdminInfoReq': {
134
+ if (decodedMessage.adminSecret !== this.env.ADMIN_SECRET) {
135
+ ws.send(encodeOutgoingMessage(WSMessage.Error.make({ message: 'Invalid admin secret', requestId })));
136
+ return;
137
+ }
138
+ ws.send(encodeOutgoingMessage(WSMessage.AdminInfoRes.make({ requestId, info: { durableObjectId: this.ctx.id.toString() } })));
139
+ break;
100
140
  }
101
- await this.storage.resetRoom();
102
- ws.send(encodeOutgoingMessage(WSMessage.AdminResetRoomRes.make({ requestId })));
103
- break;
104
- }
105
- case 'WSMessage.AdminInfoReq': {
106
- if (decodedMessage.adminSecret !== this.env.ADMIN_SECRET) {
107
- ws.send(encodeOutgoingMessage(WSMessage.Error.make({ message: 'Invalid admin secret', requestId })));
108
- return;
141
+ default: {
142
+ console.error('unsupported message', decodedMessage);
143
+ return shouldNeverHappen();
109
144
  }
110
- ws.send(encodeOutgoingMessage(WSMessage.AdminInfoRes.make({ requestId, info: { durableObjectId: this.ctx.id.toString() } })));
111
- break;
112
- }
113
- default: {
114
- console.error('unsupported message', decodedMessage);
115
- return shouldNeverHappen();
116
145
  }
117
146
  }
118
- }
119
- catch (error) {
120
- ws.send(encodeOutgoingMessage(WSMessage.Error.make({ message: error.message, requestId })));
121
- }
122
- };
123
- webSocketClose = async (ws, code, _reason, _wasClean) => {
124
- // If the client closes the connection, the runtime will invoke the webSocketClose() handler.
125
- ws.close(code, 'Durable Object is closing WebSocket');
147
+ catch (error) {
148
+ ws.send(encodeOutgoingMessage(WSMessage.Error.make({ message: error.message, requestId })));
149
+ }
150
+ }).pipe(Effect.withSpan('@livestore/sync-cf:durable-object:webSocketMessage'), Effect.tapCauseLogPretty, Logger.withMinimumLogLevel(LogLevel.Debug), Effect.provide(Logger.pretty), Effect.runPromise);
151
+ webSocketClose = async (ws, code, _reason, _wasClean) => {
152
+ // If the client closes the connection, the runtime will invoke the webSocketClose() handler.
153
+ ws.close(code, 'Durable Object is closing WebSocket');
154
+ };
126
155
  };
127
- }
156
+ };
128
157
  const makeStorage = (ctx, env, dbName) => {
129
158
  const getLatestEvent = async () => {
130
- const rawEvents = await env.DB.prepare(`SELECT * FROM ${dbName} ORDER BY idGlobal DESC LIMIT 1`).all();
159
+ const rawEvents = await env.DB.prepare(`SELECT * FROM ${dbName} ORDER BY id DESC LIMIT 1`).all();
131
160
  if (rawEvents.error) {
132
161
  throw new Error(rawEvents.error);
133
162
  }
134
- const events = Schema.decodeUnknownSync(Schema.Array(mutationLogTable.schema))(rawEvents.results).map((e) => ({
135
- ...e,
136
- id: { global: e.idGlobal, local: 0 },
137
- parentId: { global: e.parentIdGlobal, local: 0 },
138
- }));
163
+ const events = Schema.decodeUnknownSync(Schema.Array(mutationLogTable.schema))(rawEvents.results);
139
164
  return events[0];
140
165
  };
141
166
  const getEvents = async (cursor) => {
142
- const whereClause = cursor ? `WHERE idGlobal > ${cursor}` : '';
167
+ const whereClause = cursor === undefined ? '' : `WHERE id > ${cursor}`;
168
+ const sql = `SELECT * FROM ${dbName} ${whereClause} ORDER BY id ASC`;
143
169
  // TODO handle case where `cursor` was not found
144
- const rawEvents = await env.DB.prepare(`SELECT * FROM ${dbName} ${whereClause} ORDER BY idGlobal ASC`).all();
170
+ const rawEvents = await env.DB.prepare(sql).all();
145
171
  if (rawEvents.error) {
146
172
  throw new Error(rawEvents.error);
147
173
  }
148
- const events = Schema.decodeUnknownSync(Schema.Array(mutationLogTable.schema))(rawEvents.results).map((e) => ({
149
- ...e,
150
- id: { global: e.idGlobal, local: 0 },
151
- parentId: { global: e.parentIdGlobal, local: 0 },
174
+ const events = Schema.decodeUnknownSync(Schema.Array(mutationLogTable.schema))(rawEvents.results).map(({ createdAt, ...mutationEventEncoded }) => ({
175
+ mutationEventEncoded,
176
+ metadata: Option.some({ createdAt }),
152
177
  }));
153
178
  return events;
154
179
  };
155
- const appendEvent = async (event) => {
156
- const sql = `INSERT INTO ${dbName} (idGlobal, parentIdGlobal, args, mutation) VALUES (?, ?, ?, ?)`;
180
+ const appendEvent = async (event, createdAt) => {
181
+ const sql = `INSERT INTO ${dbName} (id, parentId, args, mutation, createdAt) VALUES (?, ?, ?, ?, ?)`;
157
182
  await env.DB.prepare(sql)
158
- .bind(event.id.global, event.parentId.global, JSON.stringify(event.args), event.mutation)
183
+ .bind(event.id, event.parentId, JSON.stringify(event.args), event.mutation, createdAt)
159
184
  .run();
160
185
  };
161
186
  const resetRoom = async () => {
162
187
  await ctx.storage.deleteAll();
163
188
  };
164
- return { getLatestEvent, getEvents, appendEvent, resetRoom };
189
+ return { dbName, getLatestEvent, getEvents, appendEvent, resetRoom };
190
+ };
191
+ const getStoreId = (request) => {
192
+ const url = new URL(request.url);
193
+ const searchParams = url.searchParams;
194
+ const storeId = searchParams.get('storeId');
195
+ if (storeId === null) {
196
+ throw new Error('storeId search param is required');
197
+ }
198
+ return storeId;
165
199
  };
200
+ const toValidTableName = (str) => str.replaceAll(/[^a-zA-Z0-9]/g, '_');
166
201
  //# sourceMappingURL=durable-object.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"durable-object.js","sourceRoot":"","sources":["../../src/cf-worker/durable-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAE,QAAQ,EAAsB,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAC/F,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAU9C,MAAM,qBAAqB,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC,CAAA;AACnG,MAAM,qBAAqB,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC,CAAA;AACnG,MAAM,qBAAqB,GAAG,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC,CAAA;AAE5G,MAAM,CAAC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE;IACzD,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAChD,cAAc,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;IACpC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IAC3B,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;CAC9D,CAAC,CAAA;AAEF,iBAAiB;AACjB,MAAM,OAAO,eAAgB,SAAQ,aAAkB;IACrD,MAAM,GAAG,gBAAgB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAA;IACjD,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IAEtD,YAAY,GAAuB,EAAE,GAAQ;QAC3C,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IACjB,CAAC;IAED,KAAK,GAAG,KAAK,EAAE,QAAiB,EAAE,EAAE,CAClC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC;QACxB,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,aAAa,EAAE,CAAA;QAEpD,8FAA8F;QAE9F,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;QAEhC,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAC/B,IAAI,4BAA4B,CAC9B,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,EACjE,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,CAClE,CACF,CAAA;QAED,MAAM,OAAO,GAAG,cAAc,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QAC9D,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,8BAA8B,IAAI,CAAC,MAAM,KAAK,OAAO,UAAU,CAAC,CAAA;QAEjF,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;YACxB,MAAM,EAAE,GAAG;YACX,SAAS,EAAE,MAAM;SAClB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;IAEtD,gBAAgB,GAAG,KAAK,EAAE,EAAmB,EAAE,OAA6B,EAAE,EAAE;QAC9E,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAA;QAExD,IAAI,iBAAiB,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACtC,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAA;YACjE,OAAM;QACR,CAAC;QAED,MAAM,cAAc,GAAG,iBAAiB,CAAC,KAAK,CAAA;QAC9C,MAAM,SAAS,GAAG,cAAc,CAAC,SAAS,CAAA;QAE1C,IAAI,CAAC;YACH,QAAQ,cAAc,CAAC,IAAI,EAAE,CAAC;gBAC5B,KAAK,mBAAmB,CAAC,CAAC,CAAC;oBACzB,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAA;oBACpC,MAAM,UAAU,GAAG,GAAG,CAAA;oBAEtB,qBAAqB;oBACrB,MAAM,eAAe,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;oBAEnE,0GAA0G;oBAC1G,OAAO,IAAI,EAAE,CAAC;wBACZ,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,CAAA;wBACpD,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;wBACrF,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,CAAA;wBAE1C,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAA;wBAErG,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;4BACtB,MAAK;wBACP,CAAC;oBACH,CAAC;oBAED,MAAK;gBACP,CAAC;gBACD,KAAK,mBAAmB,CAAC,CAAC,CAAC;oBACzB,6FAA6F;oBAC7F,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAA;oBACvD,MAAM,gBAAgB,GAAG,WAAW,EAAE,EAAE,IAAI,OAAO,CAAA;oBAEnD,IAAI,cAAc,CAAC,oBAAoB,CAAC,QAAQ,CAAC,MAAM,KAAK,gBAAgB,CAAC,MAAM,EAAE,CAAC;wBACpF,EAAE,CAAC,IAAI,CACL,qBAAqB,CACnB,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;4BACnB,OAAO,EAAE,+BAA+B,cAAc,CAAC,oBAAoB,CAAC,QAAQ,CAAC,MAAM,iBAAiB,gBAAgB,CAAC,MAAM,EAAE;4BACrI,SAAS;yBACV,CAAC,CACH,CACF,CAAA;wBACD,OAAM;oBACR,CAAC;oBAED,uCAAuC;oBAEvC,6EAA6E;oBAC7E,MAAM,YAAY,GAAG,cAAc,CAAC,SAAS;wBAC3C,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,oBAAoB,CAAC;wBAC/D,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;oBAErB,EAAE,CAAC,IAAI,CACL,qBAAqB,CACnB,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,cAAc,CAAC,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CACjG,CACF,CAAA;oBAED,4FAA4F;oBAE5F,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAA;oBAEjD,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAChC,MAAM,gBAAgB,GAAG,qBAAqB,CAC5C,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC;4BAC3B,oBAAoB,EAAE,cAAc,CAAC,oBAAoB;4BACzD,SAAS,EAAE,cAAc,CAAC,SAAS;yBACpC,CAAC,CACH,CAAA;wBAED,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE,CAAC;4BACpC,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;4BACrE,qBAAqB;4BACrB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;4BAC3B,IAAI;wBACN,CAAC;oBACH,CAAC;oBAED,MAAM,YAAY,CAAA;oBAElB,MAAK;gBACP,CAAC;gBACD,KAAK,6BAA6B,CAAC,CAAC,CAAC;oBACnC,IAAI,cAAc,CAAC,WAAW,KAAK,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;wBACzD,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAA;wBACpG,OAAM;oBACR,CAAC;oBAED,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAA;oBAC9B,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAA;oBAE/E,MAAK;gBACP,CAAC;gBACD,KAAK,wBAAwB,CAAC,CAAC,CAAC;oBAC9B,IAAI,cAAc,CAAC,WAAW,KAAK,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;wBACzD,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAA;wBACpG,OAAM;oBACR,CAAC;oBAED,EAAE,CAAC,IAAI,CACL,qBAAqB,CACnB,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAC9F,CACF,CAAA;oBAED,MAAK;gBACP,CAAC;gBACD,OAAO,CAAC,CAAC,CAAC;oBACR,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,cAAc,CAAC,CAAA;oBACpD,OAAO,iBAAiB,EAAE,CAAA;gBAC5B,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAA;QAC7F,CAAC;IACH,CAAC,CAAA;IAED,cAAc,GAAG,KAAK,EAAE,EAAmB,EAAE,IAAY,EAAE,OAAe,EAAE,SAAkB,EAAE,EAAE;QAChG,6FAA6F;QAC7F,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,qCAAqC,CAAC,CAAA;IACvD,CAAC,CAAA;CACF;AAED,MAAM,WAAW,GAAG,CAAC,GAAuB,EAAE,GAAQ,EAAE,MAAc,EAAE,EAAE;IACxE,MAAM,cAAc,GAAG,KAAK,IAA4C,EAAE;QACxE,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,iBAAiB,MAAM,iCAAiC,CAAC,CAAC,GAAG,EAAE,CAAA;QACtG,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAClC,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5G,GAAG,CAAC;YACJ,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE;YACpC,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE;SACjD,CAAC,CAAC,CAAA;QACH,OAAO,MAAM,CAAC,CAAC,CAAC,CAAA;IAClB,CAAC,CAAA;IAED,MAAM,SAAS,GAAG,KAAK,EAAE,MAA0B,EAA6C,EAAE;QAChG,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,oBAAoB,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAC9D,gDAAgD;QAChD,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,iBAAiB,MAAM,IAAI,WAAW,wBAAwB,CAAC,CAAC,GAAG,EAAE,CAAA;QAC5G,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAClC,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5G,GAAG,CAAC;YACJ,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE;YACpC,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE;SACjD,CAAC,CAAC,CAAA;QACH,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;IAED,MAAM,WAAW,GAAG,KAAK,EAAE,KAAwB,EAAE,EAAE;QACrD,MAAM,GAAG,GAAG,eAAe,MAAM,iEAAiE,CAAA;QAClG,MAAM,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;aACtB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC;aACxF,GAAG,EAAE,CAAA;IACV,CAAC,CAAA;IAED,MAAM,SAAS,GAAG,KAAK,IAAI,EAAE;QAC3B,MAAM,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,CAAA;IAC/B,CAAC,CAAA;IAED,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,CAAA;AAC9D,CAAC,CAAA"}
1
+ {"version":3,"file":"durable-object.js","sourceRoot":"","sources":["../../src/cf-worker/durable-object.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,3 @@
1
1
  /// <reference no-default-lib="true"/>
2
- import type { Env } from './durable-object.js';
3
- export * from './durable-object.js';
4
- declare const _default: {
5
- fetch: (request: Request, env: Env, _ctx: ExecutionContext) => Promise<Response>;
6
- };
7
- export default _default;
2
+ export {};
8
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cf-worker/index.ts"],"names":[],"mappings":";AAMA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AAE9C,cAAc,qBAAqB,CAAA;;qBA4CV,OAAO,OAAO,GAAG,QAAQ,gBAAgB,KAAG,OAAO,CAAC,QAAQ,CAAC;;AADtF,wBAgCC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cf-worker/index.ts"],"names":[],"mappings":""}