@livestore/sync-cf 0.0.58-dev.6 → 0.0.58-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.
- package/.wrangler/state/v3/d1/miniflare-D1DatabaseObject/8ee300993f9a2c909aede59646369fa0cc28d25304b9b9af94f54d4543ad60f4.sqlite +0 -0
- package/.wrangler/state/v3/do/websocket-server-WebSocketServer/037646d8e1e6ad005a1f4ff1c53fd716bec6a458a8b35ebffd9d5b78ec4ea8a3.sqlite +0 -0
- package/.wrangler/state/v3/do/websocket-server-WebSocketServer/1471dd2fd02c2d9eb229fcf3cad5fd330cd295bfdee44481714d91b883756b11.sqlite +0 -0
- package/.wrangler/state/v3/do/websocket-server-WebSocketServer/23a5a193673cd4aa1f412953ff8ee7cf6169b146127a42e9b84ce79993672b0a.sqlite +0 -0
- package/.wrangler/state/v3/do/websocket-server-WebSocketServer/31569057f8ec82f1d479956671fe58b9f0f4e32a64a68c3ba9c3cb6744f74b3d.sqlite +0 -0
- package/.wrangler/state/v3/do/websocket-server-WebSocketServer/354c1d4fbf3d44a1e359b6595b4e7f2e0c320e607cad72290b0f842246dea4c3.sqlite +0 -0
- package/.wrangler/state/v3/do/websocket-server-WebSocketServer/472d06f3610154b855a10d98212ec0ae8aa4022def5c932134cafe07ddca6cc4.sqlite +0 -0
- package/.wrangler/state/v3/do/websocket-server-WebSocketServer/472d06f3610154b855a10d98212ec0ae8aa4022def5c932134cafe07ddca6cc4.sqlite-shm +0 -0
- package/.wrangler/state/v3/do/websocket-server-WebSocketServer/472d06f3610154b855a10d98212ec0ae8aa4022def5c932134cafe07ddca6cc4.sqlite-wal +0 -0
- package/.wrangler/state/v3/do/websocket-server-WebSocketServer/56fc052bba96d75e557bb09c4826387d0d3500ab0eb8de9e9b7379b795277338.sqlite +0 -0
- package/.wrangler/state/v3/do/websocket-server-WebSocketServer/70a851401fda75ce3a534dacc3f979fceaff8234430fc6333f22112519388493.sqlite +0 -0
- package/.wrangler/state/v3/do/websocket-server-WebSocketServer/82afe32c9f3dfe706e088859636f9137e1824b12206e1c0870eef31abcb77d2e.sqlite +0 -0
- package/.wrangler/state/v3/do/websocket-server-WebSocketServer/83b7880fabbc105109963ee7d1b9b8560b31a560b6b06cf2c326f4f1eca6e80f.sqlite +0 -0
- package/.wrangler/state/v3/do/websocket-server-WebSocketServer/985f28c526c3fe0133b72007b09233c1a827ae9a588ca5cff0e740f2f5da7dd3.sqlite +0 -0
- package/.wrangler/state/v3/do/websocket-server-WebSocketServer/a0f452412c79c524292ab9f6895e09605492f5980d8ad6cfc34c0fb88ee6d1cd.sqlite +0 -0
- package/.wrangler/state/v3/do/websocket-server-WebSocketServer/a58eeee7c3798f238d9446895cd2d0f140b06589dcdf9a777ed79131eb83ea5b.sqlite +0 -0
- package/.wrangler/state/v3/do/websocket-server-WebSocketServer/baf2225931d572afb47e60d5e189ae58b9764ea0a8a501e0ac202a35c2b35084.sqlite +0 -0
- package/.wrangler/state/v3/do/websocket-server-WebSocketServer/c27c5b00d9c92102951df7d882fb0b9c9f1a9466e0752265b255041c6c3dc739.sqlite +0 -0
- package/.wrangler/state/v3/do/websocket-server-WebSocketServer/c4aa0e61dcd784604bee52282348e0538ab69ec76e1652322bbccd539d9ff3ee.sqlite +0 -0
- package/.wrangler/state/v3/do/websocket-server-WebSocketServer/d2245ee36dd16e1f76180d89bd2503f0d4808a5986a58b8677f9a365a793acc6.sqlite +0 -0
- package/.wrangler/state/v3/do/websocket-server-WebSocketServer/d87433156774c933da83e962eba16107cf02ade2f133d7205963558fe47db3ff.sqlite +0 -0
- package/.wrangler/tmp/dev-33iU4b/index.js +42167 -0
- package/.wrangler/tmp/dev-33iU4b/index.js.map +8 -0
- package/.wrangler/tmp/dev-rI63Kk/index.js +42165 -0
- package/.wrangler/tmp/dev-rI63Kk/index.js.map +8 -0
- package/.wrangler/tmp/dev-txPodK/index.js +42118 -0
- package/.wrangler/tmp/dev-txPodK/index.js.map +8 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/cf-worker/durable-object.d.ts +15 -5
- package/dist/cf-worker/durable-object.d.ts.map +1 -1
- package/dist/cf-worker/durable-object.js +100 -68
- package/dist/cf-worker/durable-object.js.map +1 -1
- package/dist/common/ws-message-types.d.ts +238 -50
- package/dist/common/ws-message-types.d.ts.map +1 -1
- package/dist/common/ws-message-types.js +4 -4
- package/dist/common/ws-message-types.js.map +1 -1
- package/dist/sync-impl/ws-impl.d.ts.map +1 -1
- package/dist/sync-impl/ws-impl.js +16 -13
- package/dist/sync-impl/ws-impl.js.map +1 -1
- package/package.json +5 -5
- package/src/cf-worker/durable-object.ts +123 -80
- package/src/common/ws-message-types.ts +15 -5
- package/src/sync-impl/ws-impl.ts +31 -20
- package/tsconfig.json +1 -0
|
@@ -9,12 +9,19 @@ export interface Env {
|
|
|
9
9
|
type WebSocketClient = WebSocket;
|
|
10
10
|
export declare const mutationLogTable: DbSchema.TableDef<DbSchema.SqliteDsl.TableDefinition<"__unused", {
|
|
11
11
|
id: {
|
|
12
|
-
columnType: "
|
|
13
|
-
schema: Schema.Schema<
|
|
12
|
+
columnType: "integer";
|
|
13
|
+
schema: Schema.Schema<number, number, never>;
|
|
14
14
|
default: import("effect/Option").None<never>;
|
|
15
15
|
nullable: false;
|
|
16
16
|
primaryKey: true;
|
|
17
17
|
};
|
|
18
|
+
parentId: {
|
|
19
|
+
columnType: "integer";
|
|
20
|
+
schema: Schema.Schema<number, number, never>;
|
|
21
|
+
default: import("effect/Option").None<never>;
|
|
22
|
+
nullable: false;
|
|
23
|
+
primaryKey: false;
|
|
24
|
+
};
|
|
18
25
|
mutation: {
|
|
19
26
|
columnType: "text";
|
|
20
27
|
schema: Schema.Schema<string, string, never>;
|
|
@@ -35,18 +42,21 @@ export declare const mutationLogTable: DbSchema.TableDef<DbSchema.SqliteDsl.Tabl
|
|
|
35
42
|
deriveMutations: never;
|
|
36
43
|
isSingleColumn: false;
|
|
37
44
|
}, Schema.Schema<{
|
|
38
|
-
readonly id:
|
|
45
|
+
readonly id: number;
|
|
46
|
+
readonly parentId: number;
|
|
39
47
|
readonly mutation: string;
|
|
40
48
|
readonly args: any;
|
|
41
49
|
}, {
|
|
42
|
-
readonly id:
|
|
50
|
+
readonly id: number;
|
|
51
|
+
readonly parentId: number;
|
|
43
52
|
readonly mutation: string;
|
|
44
53
|
readonly args: string;
|
|
45
54
|
}, never>>;
|
|
46
55
|
export declare class WebSocketServer extends DurableObject<Env> {
|
|
47
56
|
dbName: string;
|
|
48
57
|
storage: {
|
|
49
|
-
|
|
58
|
+
getLatestEvent: () => Promise<MutationEvent.Any | undefined>;
|
|
59
|
+
getEvents: (cursor: number | undefined) => Promise<ReadonlyArray<MutationEvent.Any>>;
|
|
50
60
|
appendEvent: (event: MutationEvent.Any) => Promise<void>;
|
|
51
61
|
resetRoom: () => Promise<void>;
|
|
52
62
|
};
|
|
@@ -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,
|
|
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,16 +1,17 @@
|
|
|
1
1
|
import { makeColumnSpec } from '@livestore/common';
|
|
2
|
-
import { DbSchema } from '@livestore/common/schema';
|
|
2
|
+
import { DbSchema, mutationEventSchemaAny } from '@livestore/common/schema';
|
|
3
3
|
import { shouldNeverHappen } from '@livestore/utils';
|
|
4
4
|
import { Effect, Schema } from '@livestore/utils/effect';
|
|
5
5
|
import { DurableObject } from 'cloudflare:workers';
|
|
6
6
|
import { WSMessage } from '../common/index.js';
|
|
7
|
-
const
|
|
8
|
-
const
|
|
7
|
+
const encodeOutgoingMessage = Schema.encodeSync(Schema.parseJson(WSMessage.BackendToClientMessage));
|
|
8
|
+
const encodeIncomingMessage = Schema.encodeSync(Schema.parseJson(WSMessage.ClientToBackendMessage));
|
|
9
|
+
const decodeIncomingMessage = Schema.decodeUnknownEither(Schema.parseJson(WSMessage.ClientToBackendMessage));
|
|
9
10
|
export const mutationLogTable = DbSchema.table('__unused', {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
mutation: DbSchema.text({
|
|
13
|
-
args: DbSchema.text({
|
|
11
|
+
id: DbSchema.integer({ primaryKey: true }),
|
|
12
|
+
parentId: DbSchema.integer({}),
|
|
13
|
+
mutation: DbSchema.text({}),
|
|
14
|
+
args: DbSchema.text({ schema: Schema.parseJson(Schema.Any) }),
|
|
14
15
|
});
|
|
15
16
|
// Durable Object
|
|
16
17
|
export class WebSocketServer extends DurableObject {
|
|
@@ -23,7 +24,7 @@ export class WebSocketServer extends DurableObject {
|
|
|
23
24
|
const { 0: client, 1: server } = new WebSocketPair();
|
|
24
25
|
// See https://developers.cloudflare.com/durable-objects/examples/websocket-hibernation-server
|
|
25
26
|
this.ctx.acceptWebSocket(server);
|
|
26
|
-
this.ctx.setWebSocketAutoResponse(new WebSocketRequestResponsePair(
|
|
27
|
+
this.ctx.setWebSocketAutoResponse(new WebSocketRequestResponsePair(encodeIncomingMessage(WSMessage.Ping.make({ requestId: 'ping' })), encodeOutgoingMessage(WSMessage.Pong.make({ requestId: 'ping' }))));
|
|
27
28
|
const colSpec = makeColumnSpec(mutationLogTable.sqliteDef.ast);
|
|
28
29
|
this.env.DB.exec(`CREATE TABLE IF NOT EXISTS ${this.dbName} (${colSpec}) strict`);
|
|
29
30
|
return new Response(null, {
|
|
@@ -32,77 +33,92 @@ export class WebSocketServer extends DurableObject {
|
|
|
32
33
|
});
|
|
33
34
|
}).pipe(Effect.tapCauseLogPretty, Effect.runPromise);
|
|
34
35
|
webSocketMessage = async (ws, message) => {
|
|
35
|
-
const decodedMessageRes =
|
|
36
|
+
const decodedMessageRes = decodeIncomingMessage(message);
|
|
36
37
|
if (decodedMessageRes._tag === 'Left') {
|
|
37
38
|
console.error('Invalid message received', decodedMessageRes.left);
|
|
38
39
|
return;
|
|
39
40
|
}
|
|
40
41
|
const decodedMessage = decodedMessageRes.right;
|
|
41
42
|
const requestId = decodedMessage.requestId;
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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;
|
|
58
|
+
}
|
|
55
59
|
}
|
|
60
|
+
break;
|
|
56
61
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}));
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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 ?? { global: 0, local: 0 };
|
|
66
|
+
if (decodedMessage.mutationEventEncoded.parentId !== expectedParentId) {
|
|
67
|
+
ws.send(encodeOutgoingMessage(WSMessage.Error.make({
|
|
68
|
+
message: `Invalid parent id. Received ${decodedMessage.mutationEventEncoded.parentId} but expected ${expectedParentId}`,
|
|
69
|
+
requestId,
|
|
70
|
+
})));
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
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) {
|
|
77
89
|
conn.send(broadcastMessage);
|
|
90
|
+
// }
|
|
78
91
|
}
|
|
79
92
|
}
|
|
93
|
+
await storePromise;
|
|
94
|
+
break;
|
|
80
95
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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;
|
|
100
|
+
}
|
|
101
|
+
await this.storage.resetRoom();
|
|
102
|
+
ws.send(encodeOutgoingMessage(WSMessage.AdminResetRoomRes.make({ requestId })));
|
|
103
|
+
break;
|
|
88
104
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
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;
|
|
109
|
+
}
|
|
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();
|
|
97
116
|
}
|
|
98
|
-
ws.send(encodeMessage(WSMessage.AdminInfoRes.make({ requestId, info: { durableObjectId: this.ctx.id.toString() } })));
|
|
99
|
-
break;
|
|
100
|
-
}
|
|
101
|
-
default: {
|
|
102
|
-
console.error('unsupported message', decodedMessage);
|
|
103
|
-
return shouldNeverHappen();
|
|
104
117
|
}
|
|
105
118
|
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
ws.send(encodeOutgoingMessage(WSMessage.Error.make({ message: error.message, requestId })));
|
|
121
|
+
}
|
|
106
122
|
};
|
|
107
123
|
webSocketClose = async (ws, code, _reason, _wasClean) => {
|
|
108
124
|
// If the client closes the connection, the runtime will invoke the webSocketClose() handler.
|
|
@@ -110,23 +126,39 @@ export class WebSocketServer extends DurableObject {
|
|
|
110
126
|
};
|
|
111
127
|
}
|
|
112
128
|
const makeStorage = (ctx, env, dbName) => {
|
|
129
|
+
const getLatestEvent = async () => {
|
|
130
|
+
const rawEvents = await env.DB.prepare(`SELECT * FROM ${dbName} ORDER BY id DESC LIMIT 1`).all();
|
|
131
|
+
if (rawEvents.error) {
|
|
132
|
+
throw new Error(rawEvents.error);
|
|
133
|
+
}
|
|
134
|
+
const events = Schema.decodeUnknownSync(Schema.Array(mutationLogTable.schema))(rawEvents.results).map((e) => ({
|
|
135
|
+
...e,
|
|
136
|
+
id: { global: e.id, local: 0 },
|
|
137
|
+
parentId: { global: e.parentId, local: 0 },
|
|
138
|
+
}));
|
|
139
|
+
return events[0];
|
|
140
|
+
};
|
|
113
141
|
const getEvents = async (cursor) => {
|
|
114
|
-
const whereClause = cursor ? `WHERE id >
|
|
142
|
+
const whereClause = cursor ? `WHERE id > ${cursor}` : '';
|
|
115
143
|
// TODO handle case where `cursor` was not found
|
|
116
144
|
const rawEvents = await env.DB.prepare(`SELECT * FROM ${dbName} ${whereClause} ORDER BY id ASC`).all();
|
|
117
145
|
if (rawEvents.error) {
|
|
118
146
|
throw new Error(rawEvents.error);
|
|
119
147
|
}
|
|
120
|
-
const events = Schema.decodeUnknownSync(Schema.Array(mutationLogTable.schema))(rawEvents.results)
|
|
148
|
+
const events = Schema.decodeUnknownSync(Schema.Array(mutationLogTable.schema))(rawEvents.results).map((e) => ({
|
|
149
|
+
...e,
|
|
150
|
+
id: { global: e.id, local: 0 },
|
|
151
|
+
parentId: { global: e.parentId, local: 0 },
|
|
152
|
+
}));
|
|
121
153
|
return events;
|
|
122
154
|
};
|
|
123
155
|
const appendEvent = async (event) => {
|
|
124
|
-
const sql = `INSERT INTO ${dbName} (id, args, mutation) VALUES (?, ?, ?)`;
|
|
125
|
-
await env.DB.prepare(sql).bind(event.id, JSON.stringify(event.args), event.mutation).run();
|
|
156
|
+
const sql = `INSERT INTO ${dbName} (id, parentId, args, mutation) VALUES (?, ?, ?, ?)`;
|
|
157
|
+
await env.DB.prepare(sql).bind(event.id, event.parentId, JSON.stringify(event.args), event.mutation).run();
|
|
126
158
|
};
|
|
127
159
|
const resetRoom = async () => {
|
|
128
160
|
await ctx.storage.deleteAll();
|
|
129
161
|
};
|
|
130
|
-
return { getEvents, appendEvent, resetRoom };
|
|
162
|
+
return { getLatestEvent, getEvents, appendEvent, resetRoom };
|
|
131
163
|
};
|
|
132
164
|
//# 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,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,QAAQ,EAAsB,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"durable-object.js","sourceRoot":"","sources":["../../src/cf-worker/durable-object.ts"],"names":[],"mappings":"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"}
|