@livestore/sync-cf 0.3.0-dev.6 → 0.3.0-dev.8

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 (45) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/cf-worker/durable-object.d.ts +18 -22
  3. package/dist/cf-worker/durable-object.d.ts.map +1 -1
  4. package/dist/cf-worker/durable-object.js +114 -107
  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 +31 -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/sync-impl/mod.d.ts +2 -0
  31. package/dist/sync-impl/mod.d.ts.map +1 -0
  32. package/dist/sync-impl/mod.js +2 -0
  33. package/dist/sync-impl/mod.js.map +1 -0
  34. package/dist/sync-impl/ws-impl.d.ts +2 -11
  35. package/dist/sync-impl/ws-impl.d.ts.map +1 -1
  36. package/dist/sync-impl/ws-impl.js +3 -3
  37. package/dist/sync-impl/ws-impl.js.map +1 -1
  38. package/package.json +10 -9
  39. package/src/cf-worker/durable-object.ts +154 -132
  40. package/src/cf-worker/mod.ts +2 -0
  41. package/src/cf-worker/worker.ts +41 -0
  42. package/src/sync-impl/ws-impl.ts +5 -14
  43. package/src/cf-worker/index.ts +0 -84
  44. /package/src/common/{index.ts → mod.ts} +0 -0
  45. /package/src/sync-impl/{index.ts → mod.ts} +0 -0
@@ -1,13 +1,12 @@
1
- import { DbSchema, type MutationEvent } from '@livestore/common/schema';
2
- import { Option, 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 type { SyncMetadata } from '../common/ws-message-types.js';
4
+ import { WSMessage } from '../common/mod.js';
5
5
  export interface Env {
6
- WEBSOCKET_SERVER: DurableObjectNamespace<WebSocketServer>;
6
+ WEBSOCKET_SERVER: DurableObjectNamespace;
7
7
  DB: D1Database;
8
8
  ADMIN_SECRET: string;
9
9
  }
10
- type WebSocketClient = WebSocket;
11
10
  export declare const mutationLogTable: DbSchema.TableDef<{
12
11
  name: "__unused";
13
12
  columns: {
@@ -68,21 +67,18 @@ export declare const mutationLogTable: DbSchema.TableDef<{
68
67
  readonly args: string;
69
68
  readonly createdAt: string;
70
69
  }, never>>;
71
- export declare class WebSocketServer extends DurableObject<Env> {
72
- dbName: string;
73
- storage: {
74
- getLatestEvent: () => Promise<MutationEvent.AnyEncodedGlobal | undefined>;
75
- getEvents: (cursor: number | undefined) => Promise<ReadonlyArray<{
76
- mutationEventEncoded: MutationEvent.AnyEncodedGlobal;
77
- metadata: Option.Option<SyncMetadata>;
78
- }>>;
79
- appendEvent: (event: MutationEvent.AnyEncodedGlobal, createdAt: string) => Promise<void>;
80
- resetRoom: () => Promise<void>;
81
- };
82
- constructor(ctx: DurableObjectState, env: Env);
83
- fetch: (_request: Request) => Promise<Response>;
84
- webSocketMessage: (ws: WebSocketClient, message: ArrayBuffer | string) => Promise<undefined>;
85
- webSocketClose: (ws: WebSocketClient, code: number, _reason: string, _wasClean: boolean) => Promise<void>;
86
- }
87
- 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;
88
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,EAAW,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAEhF,OAAO,EAA4B,MAAM,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAGlD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAEjE,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;AAOhC,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAO3B,CAAA;AAUF,qBAAa,eAAgB,SAAQ,aAAa,CAAC,GAAG,CAAC;IACrD,MAAM,SAAyE;IAC/E,OAAO;8BA0K0B,OAAO,CAAC,aAAa,CAAC,gBAAgB,GAAG,SAAS,CAAC;4BAW1E,MAAM,GAAG,SAAS,KACzB,OAAO,CACR,aAAa,CAAC;YAAE,oBAAoB,EAAE,aAAa,CAAC,gBAAgB,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;SAAE,CAAC,CAC/G;6BAiBiC,aAAa,CAAC,gBAAgB,aAAa,MAAM;;MAzM7B;gBAE1C,GAAG,EAAE,kBAAkB,EAAE,GAAG,EAAE,GAAG;IAI7C,KAAK,aAAoB,OAAO,uBAsBsB;IAEtD,gBAAgB,OAAQ,eAAe,WAAW,WAAW,GAAG,MAAM,wBAmInE;IAEH,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,sBAuL/B,CAAA"}
@@ -3,7 +3,7 @@ import { DbSchema, EventId } from '@livestore/common/schema';
3
3
  import { shouldNeverHappen } from '@livestore/utils';
4
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));
@@ -21,124 +21,131 @@ export const mutationLogTable = DbSchema.table('__unused', {
21
21
  *
22
22
  * Changing this version number will lead to a "soft reset".
23
23
  */
24
- const PERSISTENCE_FORMAT_VERSION = 2;
25
- // Durable Object
26
- export class WebSocketServer extends DurableObject {
27
- dbName = `mutation_log_${PERSISTENCE_FORMAT_VERSION}_${this.ctx.id.toString()}`;
28
- storage = makeStorage(this.ctx, this.env, this.dbName);
29
- constructor(ctx, env) {
30
- super(ctx, env);
31
- }
32
- fetch = async (_request) => Effect.gen(this, function* () {
33
- const { 0: client, 1: server } = new WebSocketPair();
34
- // See https://developers.cloudflare.com/durable-objects/examples/websocket-hibernation-server
35
- this.ctx.acceptWebSocket(server);
36
- this.ctx.setWebSocketAutoResponse(new WebSocketRequestResponsePair(encodeIncomingMessage(WSMessage.Ping.make({ requestId: 'ping' })), encodeOutgoingMessage(WSMessage.Pong.make({ requestId: 'ping' }))));
37
- const colSpec = makeColumnSpec(mutationLogTable.sqliteDef.ast);
38
- this.env.DB.exec(`CREATE TABLE IF NOT EXISTS ${this.dbName} (${colSpec}) strict`);
39
- return new Response(null, {
40
- status: 101,
41
- webSocket: client,
42
- });
43
- }).pipe(Effect.tapCauseLogPretty, Effect.runPromise);
44
- webSocketMessage = (ws, message) => Effect.gen(this, function* () {
45
- const decodedMessageRes = decodeIncomingMessage(message);
46
- if (decodedMessageRes._tag === 'Left') {
47
- console.error('Invalid message received', decodedMessageRes.left);
48
- return;
24
+ export const PERSISTENCE_FORMAT_VERSION = 2;
25
+ export const makeDurableObject = (options) => {
26
+ return class WebSocketServerBase extends DurableObject {
27
+ dbName = `mutation_log_${PERSISTENCE_FORMAT_VERSION}_${this.ctx.id.toString()}`;
28
+ storage = makeStorage(this.ctx, this.env, this.dbName);
29
+ constructor(ctx, env) {
30
+ super(ctx, env);
49
31
  }
50
- const decodedMessage = decodedMessageRes.right;
51
- const requestId = decodedMessage.requestId;
52
- try {
53
- switch (decodedMessage._tag) {
54
- case 'WSMessage.PullReq': {
55
- const cursor = decodedMessage.cursor;
56
- const CHUNK_SIZE = 100;
57
- // TODO use streaming
58
- const remainingEvents = [...(yield* Effect.promise(() => this.storage.getEvents(cursor)))];
59
- // NOTE we want to make sure the WS server responds at least once with `InitRes` even if `events` is empty
60
- while (true) {
61
- const events = remainingEvents.splice(0, CHUNK_SIZE);
62
- ws.send(encodeOutgoingMessage(WSMessage.PullRes.make({ events, remaining: remainingEvents.length, requestId })));
63
- if (remainingEvents.length === 0) {
64
- break;
32
+ fetch = async (_request) => Effect.gen(this, function* () {
33
+ const { 0: client, 1: server } = new WebSocketPair();
34
+ // See https://developers.cloudflare.com/durable-objects/examples/websocket-hibernation-server
35
+ this.ctx.acceptWebSocket(server);
36
+ this.ctx.setWebSocketAutoResponse(new WebSocketRequestResponsePair(encodeIncomingMessage(WSMessage.Ping.make({ requestId: 'ping' })), encodeOutgoingMessage(WSMessage.Pong.make({ requestId: 'ping' }))));
37
+ const colSpec = makeColumnSpec(mutationLogTable.sqliteDef.ast);
38
+ this.env.DB.exec(`CREATE TABLE IF NOT EXISTS ${this.dbName} (${colSpec}) strict`);
39
+ return new Response(null, {
40
+ status: 101,
41
+ webSocket: client,
42
+ });
43
+ }).pipe(Effect.tapCauseLogPretty, Effect.runPromise);
44
+ webSocketMessage = (ws, message) => Effect.gen(this, function* () {
45
+ const decodedMessageRes = decodeIncomingMessage(message);
46
+ if (decodedMessageRes._tag === 'Left') {
47
+ console.error('Invalid message received', decodedMessageRes.left);
48
+ return;
49
+ }
50
+ const decodedMessage = decodedMessageRes.right;
51
+ const requestId = decodedMessage.requestId;
52
+ try {
53
+ switch (decodedMessage._tag) {
54
+ case 'WSMessage.PullReq': {
55
+ if (options?.onPull) {
56
+ yield* Effect.tryAll(() => options.onPull(decodedMessage));
57
+ }
58
+ const cursor = decodedMessage.cursor;
59
+ const CHUNK_SIZE = 100;
60
+ // TODO use streaming
61
+ const remainingEvents = [...(yield* Effect.promise(() => this.storage.getEvents(cursor)))];
62
+ // NOTE we want to make sure the WS server responds at least once with `InitRes` even if `events` is empty
63
+ while (true) {
64
+ const events = remainingEvents.splice(0, CHUNK_SIZE);
65
+ ws.send(encodeOutgoingMessage(WSMessage.PullRes.make({ events, remaining: remainingEvents.length, requestId })));
66
+ if (remainingEvents.length === 0) {
67
+ break;
68
+ }
65
69
  }
70
+ break;
66
71
  }
67
- break;
68
- }
69
- case 'WSMessage.PushReq': {
70
- // TODO check whether we could use the Durable Object storage for this to speed up the lookup
71
- const latestEvent = yield* Effect.promise(() => this.storage.getLatestEvent());
72
- const expectedParentId = latestEvent?.id ?? EventId.ROOT.global;
73
- let i = 0;
74
- for (const mutationEventEncoded of decodedMessage.batch) {
75
- if (mutationEventEncoded.parentId !== expectedParentId + i) {
76
- const err = WSMessage.Error.make({
77
- message: `Invalid parent id. Received ${mutationEventEncoded.parentId} but expected ${expectedParentId}`,
78
- requestId,
79
- });
80
- yield* Effect.fail(err).pipe(Effect.ignoreLogged);
81
- ws.send(encodeOutgoingMessage(err));
82
- return;
72
+ case 'WSMessage.PushReq': {
73
+ if (options?.onPush) {
74
+ yield* Effect.tryAll(() => options.onPush(decodedMessage));
83
75
  }
84
- // TODO handle clientId unique conflict
85
- const createdAt = new Date().toISOString();
86
- // NOTE we're currently not blocking on this to allow broadcasting right away
87
- const storePromise = this.storage.appendEvent(mutationEventEncoded, createdAt);
88
- ws.send(encodeOutgoingMessage(WSMessage.PushAck.make({ mutationId: mutationEventEncoded.id, requestId })));
89
- // console.debug(`Broadcasting mutation event to ${this.subscribedWebSockets.size} clients`)
90
- const connectedClients = this.ctx.getWebSockets();
91
- if (connectedClients.length > 0) {
92
- const broadcastMessage = encodeOutgoingMessage(
93
- // TODO refactor to batch api
94
- WSMessage.PushBroadcast.make({
95
- mutationEventEncoded,
96
- metadata: Option.some({ createdAt }),
97
- }));
98
- for (const conn of connectedClients) {
99
- console.log('Broadcasting to client', conn === ws ? 'self' : 'other');
100
- // if (conn !== ws) {
101
- conn.send(broadcastMessage);
102
- // }
76
+ // TODO check whether we could use the Durable Object storage for this to speed up the lookup
77
+ const latestEvent = yield* Effect.promise(() => this.storage.getLatestEvent());
78
+ const expectedParentId = latestEvent?.id ?? EventId.ROOT.global;
79
+ let i = 0;
80
+ for (const mutationEventEncoded of decodedMessage.batch) {
81
+ if (mutationEventEncoded.parentId !== expectedParentId + i) {
82
+ const err = WSMessage.Error.make({
83
+ message: `Invalid parent id. Received ${mutationEventEncoded.parentId} but expected ${expectedParentId}`,
84
+ requestId,
85
+ });
86
+ yield* Effect.fail(err).pipe(Effect.ignoreLogged);
87
+ ws.send(encodeOutgoingMessage(err));
88
+ return;
103
89
  }
90
+ // TODO handle clientId unique conflict
91
+ const createdAt = new Date().toISOString();
92
+ // NOTE we're currently not blocking on this to allow broadcasting right away
93
+ const storePromise = this.storage.appendEvent(mutationEventEncoded, createdAt);
94
+ ws.send(encodeOutgoingMessage(WSMessage.PushAck.make({ mutationId: mutationEventEncoded.id, requestId })));
95
+ // console.debug(`Broadcasting mutation event to ${this.subscribedWebSockets.size} clients`)
96
+ const connectedClients = this.ctx.getWebSockets();
97
+ if (connectedClients.length > 0) {
98
+ const broadcastMessage = encodeOutgoingMessage(
99
+ // TODO refactor to batch api
100
+ WSMessage.PushBroadcast.make({
101
+ mutationEventEncoded,
102
+ metadata: Option.some({ createdAt }),
103
+ }));
104
+ for (const conn of connectedClients) {
105
+ console.log('Broadcasting to client', conn === ws ? 'self' : 'other');
106
+ // if (conn !== ws) {
107
+ conn.send(broadcastMessage);
108
+ // }
109
+ }
110
+ }
111
+ yield* Effect.promise(() => storePromise);
112
+ i++;
104
113
  }
105
- yield* Effect.promise(() => storePromise);
106
- i++;
114
+ break;
107
115
  }
108
- break;
109
- }
110
- case 'WSMessage.AdminResetRoomReq': {
111
- if (decodedMessage.adminSecret !== this.env.ADMIN_SECRET) {
112
- ws.send(encodeOutgoingMessage(WSMessage.Error.make({ message: 'Invalid admin secret', requestId })));
113
- return;
116
+ case 'WSMessage.AdminResetRoomReq': {
117
+ if (decodedMessage.adminSecret !== this.env.ADMIN_SECRET) {
118
+ ws.send(encodeOutgoingMessage(WSMessage.Error.make({ message: 'Invalid admin secret', requestId })));
119
+ return;
120
+ }
121
+ yield* Effect.promise(() => this.storage.resetRoom());
122
+ ws.send(encodeOutgoingMessage(WSMessage.AdminResetRoomRes.make({ requestId })));
123
+ break;
114
124
  }
115
- yield* Effect.promise(() => this.storage.resetRoom());
116
- ws.send(encodeOutgoingMessage(WSMessage.AdminResetRoomRes.make({ requestId })));
117
- break;
118
- }
119
- case 'WSMessage.AdminInfoReq': {
120
- if (decodedMessage.adminSecret !== this.env.ADMIN_SECRET) {
121
- ws.send(encodeOutgoingMessage(WSMessage.Error.make({ message: 'Invalid admin secret', requestId })));
122
- return;
125
+ case 'WSMessage.AdminInfoReq': {
126
+ if (decodedMessage.adminSecret !== this.env.ADMIN_SECRET) {
127
+ ws.send(encodeOutgoingMessage(WSMessage.Error.make({ message: 'Invalid admin secret', requestId })));
128
+ return;
129
+ }
130
+ ws.send(encodeOutgoingMessage(WSMessage.AdminInfoRes.make({ requestId, info: { durableObjectId: this.ctx.id.toString() } })));
131
+ break;
132
+ }
133
+ default: {
134
+ console.error('unsupported message', decodedMessage);
135
+ return shouldNeverHappen();
123
136
  }
124
- ws.send(encodeOutgoingMessage(WSMessage.AdminInfoRes.make({ requestId, info: { durableObjectId: this.ctx.id.toString() } })));
125
- break;
126
- }
127
- default: {
128
- console.error('unsupported message', decodedMessage);
129
- return shouldNeverHappen();
130
137
  }
131
138
  }
132
- }
133
- catch (error) {
134
- ws.send(encodeOutgoingMessage(WSMessage.Error.make({ message: error.message, requestId })));
135
- }
136
- }).pipe(Effect.withSpan('@livestore/sync-cf:durable-object:webSocketMessage'), Effect.tapCauseLogPretty, Logger.withMinimumLogLevel(LogLevel.Debug), Effect.provide(Logger.pretty), Effect.runPromise);
137
- webSocketClose = async (ws, code, _reason, _wasClean) => {
138
- // If the client closes the connection, the runtime will invoke the webSocketClose() handler.
139
- ws.close(code, 'Durable Object is closing WebSocket');
139
+ catch (error) {
140
+ ws.send(encodeOutgoingMessage(WSMessage.Error.make({ message: error.message, requestId })));
141
+ }
142
+ }).pipe(Effect.withSpan('@livestore/sync-cf:durable-object:webSocketMessage'), Effect.tapCauseLogPretty, Logger.withMinimumLogLevel(LogLevel.Debug), Effect.provide(Logger.pretty), Effect.runPromise);
143
+ webSocketClose = async (ws, code, _reason, _wasClean) => {
144
+ // If the client closes the connection, the runtime will invoke the webSocketClose() handler.
145
+ ws.close(code, 'Durable Object is closing WebSocket');
146
+ };
140
147
  };
141
- }
148
+ };
142
149
  const makeStorage = (ctx, env, dbName) => {
143
150
  const getLatestEvent = async () => {
144
151
  const rawEvents = await env.DB.prepare(`SELECT * FROM ${dbName} ORDER BY id DESC LIMIT 1`).all();
@@ -1 +1 @@
1
- {"version":3,"file":"durable-object.js","sourceRoot":"","sources":["../../src/cf-worker/durable-object.ts"],"names":[],"mappings":"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"}
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":""}
@@ -1,67 +1,33 @@
1
1
  /// <reference no-default-lib="true"/>
2
2
  /// <reference lib="esnext" />
3
- export * from './durable-object.js';
4
- // const handleRequest = (request: Request, env: Env) =>
5
- // HttpServer.router.empty.pipe(
6
- // HttpServer.router.get(
7
- // '/websocket',
8
- // Effect.gen(function* () {
9
- // // This example will refer to the same Durable Object instance,
10
- // // since the name "foo" is hardcoded.
11
- // const id = env.WEBSOCKET_SERVER.idFromName('foo')
12
- // const durableObject = env.WEBSOCKET_SERVER.get(id)
13
- // HttpServer.
14
- // // Expect to receive a WebSocket Upgrade request.
15
- // // If there is one, accept the request and return a WebSocket Response.
16
- // const headerRes = yield* HttpServer.request
17
- // .schemaHeaders(
18
- // Schema.Struct({
19
- // Upgrade: Schema.Literal('websocket'),
20
- // }),
21
- // )
22
- // .pipe(Effect.either)
23
- // if (headerRes._tag === 'Left') {
24
- // // return new Response('Durable Object expected Upgrade: websocket', { status: 426 })
25
- // return yield* HttpServer.response.text('Durable Object expected Upgrade: websocket', { status: 426 })
26
- // }
27
- // HttpServer.response.empty
28
- // return yield* Effect.promise(() => durableObject.fetch(request))
29
- // }),
30
- // ),
31
- // HttpServer.router.catchAll((e) => {
32
- // console.log(e)
33
- // return HttpServer.response.empty({ status: 400 })
34
- // }),
35
- // (_) => HttpServer.app.toWebHandler(_)(request),
36
- // // request
37
- // )
38
- // Worker
39
- export default {
40
- fetch: async (request, env, _ctx) => {
41
- const url = new URL(request.url);
42
- const searchParams = url.searchParams;
43
- const roomId = searchParams.get('room');
44
- if (roomId === null) {
45
- return new Response('Room ID is required', { status: 400 });
46
- }
47
- // This example will refer to the same Durable Object instance,
48
- // since the name "foo" is hardcoded.
49
- const id = env.WEBSOCKET_SERVER.idFromName(roomId);
50
- const durableObject = env.WEBSOCKET_SERVER.get(id);
51
- if (url.pathname.endsWith('/websocket')) {
52
- const upgradeHeader = request.headers.get('Upgrade');
53
- if (!upgradeHeader || upgradeHeader !== 'websocket') {
54
- return new Response('Durable Object expected Upgrade: websocket', { status: 426 });
55
- }
56
- return durableObject.fetch(request);
57
- }
58
- return new Response(null, {
59
- status: 400,
60
- statusText: 'Bad Request',
61
- headers: {
62
- 'Content-Type': 'text/plain',
63
- },
64
- });
65
- },
66
- };
3
+ export {};
4
+ // export * from './durable-object.js'
5
+ // export default {
6
+ // fetch: async (request: Request, env: Env, _ctx: ExecutionContext): Promise<Response> => {
7
+ // const url = new URL(request.url)
8
+ // const searchParams = url.searchParams
9
+ // const roomId = searchParams.get('room')
10
+ // if (roomId === null) {
11
+ // return new Response('Room ID is required', { status: 400 })
12
+ // }
13
+ // // This example will refer to the same Durable Object instance,
14
+ // // since the name "foo" is hardcoded.
15
+ // const id = env.WEBSOCKET_SERVER.idFromName(roomId)
16
+ // const durableObject = env.WEBSOCKET_SERVER.get(id)
17
+ // if (url.pathname.endsWith('/websocket')) {
18
+ // const upgradeHeader = request.headers.get('Upgrade')
19
+ // if (!upgradeHeader || upgradeHeader !== 'websocket') {
20
+ // return new Response('Durable Object expected Upgrade: websocket', { status: 426 })
21
+ // }
22
+ // return durableObject.fetch(request)
23
+ // }
24
+ // return new Response(null, {
25
+ // status: 400,
26
+ // statusText: 'Bad Request',
27
+ // headers: {
28
+ // 'Content-Type': 'text/plain',
29
+ // },
30
+ // })
31
+ // },
32
+ // }
67
33
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cf-worker/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,8BAA8B;AAO9B,cAAc,qBAAqB,CAAA;AAEnC,wDAAwD;AACxD,kCAAkC;AAClC,6BAA6B;AAC7B,sBAAsB;AACtB,kCAAkC;AAClC,0EAA0E;AAC1E,gDAAgD;AAChD,4DAA4D;AAC5D,6DAA6D;AAE7D,sBAAsB;AAEtB,4DAA4D;AAC5D,kFAAkF;AAClF,sDAAsD;AACtD,4BAA4B;AAC5B,8BAA8B;AAC9B,sDAAsD;AACtD,kBAAkB;AAClB,cAAc;AACd,iCAAiC;AAEjC,2CAA2C;AAC3C,kGAAkG;AAClG,kHAAkH;AAClH,YAAY;AAEZ,oCAAoC;AAEpC,2EAA2E;AAC3E,YAAY;AACZ,SAAS;AACT,0CAA0C;AAC1C,uBAAuB;AACvB,0DAA0D;AAC1D,UAAU;AACV,sDAAsD;AACtD,iBAAiB;AACjB,MAAM;AAEN,SAAS;AACT,eAAe;IACb,KAAK,EAAE,KAAK,EAAE,OAAgB,EAAE,GAAQ,EAAE,IAAsB,EAAqB,EAAE;QACrF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAChC,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,CAAA;QACrC,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAEvC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,OAAO,IAAI,QAAQ,CAAC,qBAAqB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;QAC7D,CAAC;QAED,+DAA+D;QAC/D,qCAAqC;QACrC,MAAM,EAAE,GAAG,GAAG,CAAC,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;QAClD,MAAM,aAAa,GAAG,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAElD,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACxC,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YACpD,IAAI,CAAC,aAAa,IAAI,aAAa,KAAK,WAAW,EAAE,CAAC;gBACpD,OAAO,IAAI,QAAQ,CAAC,4CAA4C,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;YACpF,CAAC;YAED,OAAO,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACrC,CAAC;QAED,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;YACxB,MAAM,EAAE,GAAG;YACX,UAAU,EAAE,aAAa;YACzB,OAAO,EAAE;gBACP,cAAc,EAAE,YAAY;aAC7B;SACF,CAAC,CAAA;IACJ,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cf-worker/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,8BAA8B;;AAI9B,sCAAsC;AAEtC,mBAAmB;AACnB,8FAA8F;AAC9F,uCAAuC;AACvC,4CAA4C;AAC5C,8CAA8C;AAE9C,6BAA6B;AAC7B,oEAAoE;AACpE,QAAQ;AAER,sEAAsE;AACtE,4CAA4C;AAC5C,yDAAyD;AACzD,yDAAyD;AAEzD,iDAAiD;AACjD,6DAA6D;AAC7D,+DAA+D;AAC/D,6FAA6F;AAC7F,UAAU;AAEV,4CAA4C;AAC5C,QAAQ;AAER,kCAAkC;AAClC,qBAAqB;AACrB,mCAAmC;AACnC,mBAAmB;AACnB,wCAAwC;AACxC,WAAW;AACX,SAAS;AACT,OAAO;AACP,IAAI"}
@@ -0,0 +1,6 @@
1
+ import type { Env } from './durable-object.js';
2
+ export type CFWorker = {
3
+ fetch: (request: Request, env: Env, ctx: ExecutionContext) => Promise<Response>;
4
+ };
5
+ export declare const makeWorker: () => CFWorker;
6
+ //# sourceMappingURL=make-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"make-worker.d.ts","sourceRoot":"","sources":["../../src/cf-worker/make-worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AAE9C,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,gBAAgB,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;CAChF,CAAA;AAED,eAAO,MAAM,UAAU,QAAO,QAkC7B,CAAA"}
@@ -0,0 +1,31 @@
1
+ export const makeWorker = () => {
2
+ return {
3
+ fetch: async (request, env, _ctx) => {
4
+ const url = new URL(request.url);
5
+ const searchParams = url.searchParams;
6
+ const roomId = searchParams.get('room');
7
+ if (roomId === null) {
8
+ return new Response('Room ID is required', { status: 400 });
9
+ }
10
+ // This example will refer to the same Durable Object instance,
11
+ // since the name "foo" is hardcoded.
12
+ const id = env.WEBSOCKET_SERVER.idFromName(roomId);
13
+ const durableObject = env.WEBSOCKET_SERVER.get(id);
14
+ if (url.pathname.endsWith('/websocket')) {
15
+ const upgradeHeader = request.headers.get('Upgrade');
16
+ if (!upgradeHeader || upgradeHeader !== 'websocket') {
17
+ return new Response('Durable Object expected Upgrade: websocket', { status: 426 });
18
+ }
19
+ return durableObject.fetch(request);
20
+ }
21
+ return new Response(null, {
22
+ status: 400,
23
+ statusText: 'Bad Request',
24
+ headers: {
25
+ 'Content-Type': 'text/plain',
26
+ },
27
+ });
28
+ },
29
+ };
30
+ };
31
+ //# sourceMappingURL=make-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"make-worker.js","sourceRoot":"","sources":["../../src/cf-worker/make-worker.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,UAAU,GAAG,GAAa,EAAE;IACvC,OAAO;QACL,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YAClC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YAChC,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,CAAA;YACrC,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YAEvC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,OAAO,IAAI,QAAQ,CAAC,qBAAqB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;YAC7D,CAAC;YAED,+DAA+D;YAC/D,qCAAqC;YACrC,MAAM,EAAE,GAAG,GAAG,CAAC,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;YAClD,MAAM,aAAa,GAAG,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAElD,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBACxC,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;gBACpD,IAAI,CAAC,aAAa,IAAI,aAAa,KAAK,WAAW,EAAE,CAAC;oBACpD,OAAO,IAAI,QAAQ,CAAC,4CAA4C,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;gBACpF,CAAC;gBAED,OAAO,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YACrC,CAAC;YAED,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;gBACxB,MAAM,EAAE,GAAG;gBACX,UAAU,EAAE,aAAa;gBACzB,OAAO,EAAE;oBACP,cAAc,EAAE,YAAY;iBAC7B;aACF,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ export * from './durable-object.js';
2
+ export * from './worker.js';
3
+ //# sourceMappingURL=mod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/cf-worker/mod.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,aAAa,CAAA"}
@@ -0,0 +1,3 @@
1
+ export * from './durable-object.js';
2
+ export * from './worker.js';
3
+ //# sourceMappingURL=mod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/cf-worker/mod.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,aAAa,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cf-worker/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/cf-worker/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import type { Env } from './durable-object.js';
2
+ export type CFWorker = {
3
+ fetch: (request: Request, env: Env, ctx: ExecutionContext) => Promise<Response>;
4
+ };
5
+ export declare const makeWorker: () => CFWorker;
6
+ //# sourceMappingURL=worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/cf-worker/worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AAE9C,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,gBAAgB,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;CAChF,CAAA;AAED,eAAO,MAAM,UAAU,QAAO,QAkC7B,CAAA"}
@@ -0,0 +1,31 @@
1
+ export const makeWorker = () => {
2
+ return {
3
+ fetch: async (request, env, _ctx) => {
4
+ const url = new URL(request.url);
5
+ const searchParams = url.searchParams;
6
+ const roomId = searchParams.get('room');
7
+ if (roomId === null) {
8
+ return new Response('Room ID is required', { status: 400 });
9
+ }
10
+ // This example will refer to the same Durable Object instance,
11
+ // since the name "foo" is hardcoded.
12
+ const id = env.WEBSOCKET_SERVER.idFromName(roomId);
13
+ const durableObject = env.WEBSOCKET_SERVER.get(id);
14
+ if (url.pathname.endsWith('/websocket')) {
15
+ const upgradeHeader = request.headers.get('Upgrade');
16
+ if (!upgradeHeader || upgradeHeader !== 'websocket') {
17
+ return new Response('Durable Object expected Upgrade: websocket', { status: 426 });
18
+ }
19
+ return durableObject.fetch(request);
20
+ }
21
+ return new Response(null, {
22
+ status: 400,
23
+ statusText: 'Bad Request',
24
+ headers: {
25
+ 'Content-Type': 'text/plain',
26
+ },
27
+ });
28
+ },
29
+ };
30
+ };
31
+ //# sourceMappingURL=worker.js.map