@verdant-web/cloudflare 0.3.1 → 0.4.0

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.
@@ -12,6 +12,7 @@ export interface DurableObjectLibraryConfig {
12
12
  replicaTruancyTimeout?: number;
13
13
  };
14
14
  EXPERIMENTAL_autoHeartbeatResponses?: boolean;
15
+ presenceStorageKey?: string;
15
16
  }
16
17
  export declare class DurableObjectLibrary {
17
18
  #private;
@@ -23,7 +24,7 @@ export declare class DurableObjectLibrary {
23
24
  get log(): (level: string, ...args: any[]) => void;
24
25
  initialize: (libraryId: string) => Promise<void>;
25
26
  fetch: (request: Request) => Promise<Response>;
26
- webSocketMessage: (ws: WebSocket, message: string | ArrayBuffer) => Promise<void | Promise<void>>;
27
+ webSocketMessage: (ws: WebSocket, message: string | ArrayBuffer) => Promise<void>;
27
28
  webSocketClose: (ws: WebSocket, code: number, reason: string, wasClean: boolean) => void | Promise<void>;
28
29
  webSocketError: (ws: WebSocket, error: unknown) => void | Promise<void>;
29
30
  getDocumentSnapshot: (collection: string, id: string) => Promise<{} | null>;
@@ -13,6 +13,7 @@ var _DurableObjectLibrary_app, _DurableObjectLibrary_socketInfoCache, _DurableOb
13
13
  import { createOid, EventSubscriber, VerdantError, } from '@verdant-web/common';
14
14
  import { ClientConnectionManager, errorHandler, FileStorageLibraryDelegate, Library, SqlShardStorage, tokenMiddleware, TokenVerifier, UserProfileLoader, } from '@verdant-web/server/internals';
15
15
  import { Hono } from 'hono';
16
+ import { DurableObjectPresenceStorage } from './doPresence.js';
16
17
  import { createDurableObjectSqliteExecutor } from './sql.js';
17
18
  export class DurableObjectLibrary {
18
19
  constructor(ctx, verdant) {
@@ -50,14 +51,13 @@ export class DurableObjectLibrary {
50
51
  this.library = new Library({
51
52
  id: libraryId,
52
53
  storage,
53
- sender: this.clientConnections,
54
54
  events: this.events,
55
55
  disableRebasing: __classPrivateFieldGet(this, _DurableObjectLibrary_config, "f").disableRebasing,
56
56
  fileStorage: __classPrivateFieldGet(this, _DurableObjectLibrary_config, "f").fileStorage
57
57
  ? new FileStorageLibraryDelegate(libraryId, __classPrivateFieldGet(this, _DurableObjectLibrary_config, "f").fileStorage)
58
58
  : undefined,
59
59
  log: this.log,
60
- presence: this.clientConnections.presence,
60
+ clientConnections: this.clientConnections,
61
61
  });
62
62
  __classPrivateFieldSet(this, _DurableObjectLibrary_initialized, true, "f");
63
63
  __classPrivateFieldSet(this, _DurableObjectLibrary_initializePromise, null, "f");
@@ -158,6 +158,10 @@ export class DurableObjectLibrary {
158
158
  __classPrivateFieldSet(this, _DurableObjectLibrary_config, verdant, "f");
159
159
  this.clientConnections = new ClientConnectionManager({
160
160
  profiles: new UserProfileLoader(__classPrivateFieldGet(this, _DurableObjectLibrary_config, "f").profiles),
161
+ presenceStorage: new DurableObjectPresenceStorage(this.ctx, {
162
+ log: __classPrivateFieldGet(this, _DurableObjectLibrary_config, "f").log,
163
+ storageKey: __classPrivateFieldGet(this, _DurableObjectLibrary_config, "f").presenceStorageKey,
164
+ }),
161
165
  });
162
166
  ctx.getWebSockets().forEach((ws) => {
163
167
  // restore socket info after hibernation
@@ -1 +1 @@
1
- {"version":3,"file":"doLibrary.js","sourceRoot":"","sources":["../../src/doLibrary.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doLibrary.js","sourceRoot":"","sources":["../../src/doLibrary.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { UserInfo, UserInfoUpdate } from '@verdant-web/common';
2
+ import { Logger, PresenceStorage, PresenceStorageItem } from '@verdant-web/server/internals';
3
+ export declare class DurableObjectPresenceStorage implements PresenceStorage {
4
+ private ctx;
5
+ private key;
6
+ private log;
7
+ constructor(ctx: DurableObjectState, { storageKey, log, }?: {
8
+ storageKey?: string;
9
+ log?: Logger;
10
+ });
11
+ private getMap;
12
+ set: (userId: string, userInfo: UserInfoUpdate, profile: any, expiresAt: number) => Promise<PresenceStorageItem>;
13
+ get: (userId: string, time: number) => Promise<PresenceStorageItem | undefined>;
14
+ all: () => Promise<Record<string, UserInfo<any, any>>>;
15
+ clear: () => Promise<void>;
16
+ remove: (userId: string) => Promise<void>;
17
+ setExpiresAt: (userId: string, expiresAt: number) => Promise<void>;
18
+ }
@@ -0,0 +1,59 @@
1
+ import { initialInternalPresence, } from '@verdant-web/common';
2
+ export class DurableObjectPresenceStorage {
3
+ constructor(ctx, { storageKey = 'presence-storage', log, } = {}) {
4
+ this.ctx = ctx;
5
+ this.getMap = async () => {
6
+ var _a, _b, _c;
7
+ const map = (_a = (await this.ctx.storage.get(this.key))) !== null && _a !== void 0 ? _a : {};
8
+ (_b = this.log) === null || _b === void 0 ? void 0 : _b.call(this, 'debug', 'Presence map loaded:', map);
9
+ // clear entries that have expired
10
+ const now = Date.now();
11
+ for (const [userId, item] of Object.entries(map)) {
12
+ if (item.expiresAt <= now) {
13
+ delete map[userId];
14
+ (_c = this.log) === null || _c === void 0 ? void 0 : _c.call(this, 'debug', `Presence for user ${userId} has expired and was removed.`);
15
+ }
16
+ }
17
+ return map;
18
+ };
19
+ this.set = async (userId, userInfo, profile, expiresAt) => {
20
+ const map = await this.getMap();
21
+ const existing = map[userId];
22
+ const newValue = existing
23
+ ? Object.assign(Object.assign(Object.assign({}, existing), userInfo), { expiresAt, profile }) : Object.assign(Object.assign({}, userInfo), { expiresAt,
24
+ profile, internal: userInfo.internal || initialInternalPresence });
25
+ await this.ctx.storage.put(this.key, Object.assign(Object.assign({}, map), { [userId]: newValue }));
26
+ return newValue;
27
+ };
28
+ this.get = async (userId, time) => {
29
+ const map = await this.getMap();
30
+ const value = map[userId];
31
+ if (value && value.expiresAt > time) {
32
+ return value;
33
+ }
34
+ return undefined;
35
+ };
36
+ this.all = () => {
37
+ return this.getMap();
38
+ };
39
+ this.clear = async () => {
40
+ await this.ctx.storage.delete(this.key);
41
+ };
42
+ this.remove = async (userId) => {
43
+ const map = await this.getMap();
44
+ delete map[userId];
45
+ await this.ctx.storage.put(this.key, map);
46
+ };
47
+ this.setExpiresAt = async (userId, expiresAt) => {
48
+ const map = await this.getMap();
49
+ const existing = map[userId];
50
+ if (existing) {
51
+ map[userId] = Object.assign(Object.assign({}, existing), { expiresAt });
52
+ await this.ctx.storage.put(this.key, map);
53
+ }
54
+ };
55
+ this.key = storageKey;
56
+ this.log = log;
57
+ }
58
+ }
59
+ //# sourceMappingURL=doPresence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doPresence.js","sourceRoot":"","sources":["../../src/doPresence.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@verdant-web/cloudflare",
3
- "version": "0.3.1",
3
+ "version": "0.4.0",
4
4
  "access": "public",
5
5
  "type": "module",
6
6
  "exports": {
@@ -22,7 +22,7 @@
22
22
  "@hono/node-server": "^1.13.8"
23
23
  },
24
24
  "dependencies": {
25
- "@verdant-web/server": "4.1.1",
25
+ "@verdant-web/server": "4.2.0",
26
26
  "@verdant-web/common": "3.1.0"
27
27
  },
28
28
  "devDependencies": {
package/src/doLibrary.ts CHANGED
@@ -22,6 +22,7 @@ import {
22
22
  UserProfileLoader,
23
23
  } from '@verdant-web/server/internals';
24
24
  import { Hono } from 'hono';
25
+ import { DurableObjectPresenceStorage } from './doPresence.js';
25
26
  import { createDurableObjectSqliteExecutor } from './sql.js';
26
27
 
27
28
  interface SocketMeta {
@@ -40,6 +41,7 @@ export interface DurableObjectLibraryConfig {
40
41
  replicaTruancyTimeout?: number;
41
42
  };
42
43
  EXPERIMENTAL_autoHeartbeatResponses?: boolean;
44
+ presenceStorageKey?: string;
43
45
  }
44
46
 
45
47
  export class DurableObjectLibrary {
@@ -62,6 +64,10 @@ export class DurableObjectLibrary {
62
64
 
63
65
  this.clientConnections = new ClientConnectionManager({
64
66
  profiles: new UserProfileLoader(this.#config.profiles),
67
+ presenceStorage: new DurableObjectPresenceStorage(this.ctx, {
68
+ log: this.#config.log,
69
+ storageKey: this.#config.presenceStorageKey,
70
+ }),
65
71
  });
66
72
 
67
73
  ctx.getWebSockets().forEach((ws) => {
@@ -254,14 +260,13 @@ export class DurableObjectLibrary {
254
260
  this.library = new Library({
255
261
  id: libraryId,
256
262
  storage,
257
- sender: this.clientConnections,
258
263
  events: this.events,
259
264
  disableRebasing: this.#config.disableRebasing,
260
265
  fileStorage: this.#config.fileStorage
261
266
  ? new FileStorageLibraryDelegate(libraryId, this.#config.fileStorage)
262
267
  : undefined,
263
268
  log: this.log,
264
- presence: this.clientConnections.presence,
269
+ clientConnections: this.clientConnections,
265
270
  });
266
271
  this.#initialized = true;
267
272
  this.#initializePromise = null;
@@ -304,7 +309,7 @@ export class DurableObjectLibrary {
304
309
  webSocketMessage = async (
305
310
  ws: WebSocket,
306
311
  message: string | ArrayBuffer,
307
- ): Promise<void | Promise<void>> => {
312
+ ): Promise<void> => {
308
313
  const { tokenInfo, key } = this.#getSocketInfo(ws);
309
314
  const msg = JSON.parse(message.toString()) as ClientMessage | null;
310
315
  if (!msg) {
@@ -0,0 +1,109 @@
1
+ import {
2
+ initialInternalPresence,
3
+ UserInfo,
4
+ UserInfoUpdate,
5
+ } from '@verdant-web/common';
6
+ import {
7
+ Logger,
8
+ PresenceStorage,
9
+ PresenceStorageItem,
10
+ } from '@verdant-web/server/internals';
11
+
12
+ export class DurableObjectPresenceStorage implements PresenceStorage {
13
+ private key;
14
+ private log;
15
+
16
+ constructor(
17
+ private ctx: DurableObjectState,
18
+ {
19
+ storageKey = 'presence-storage',
20
+ log,
21
+ }: {
22
+ storageKey?: string;
23
+ log?: Logger;
24
+ } = {},
25
+ ) {
26
+ this.key = storageKey;
27
+ this.log = log;
28
+ }
29
+
30
+ private getMap = async (): Promise<Record<string, PresenceStorageItem>> => {
31
+ const map: Record<string, PresenceStorageItem> | null =
32
+ (await this.ctx.storage.get(this.key)) ?? {};
33
+ this.log?.('debug', 'Presence map loaded:', map);
34
+ // clear entries that have expired
35
+ const now = Date.now();
36
+ for (const [userId, item] of Object.entries(map)) {
37
+ if (item.expiresAt <= now) {
38
+ delete map[userId];
39
+ this.log?.(
40
+ 'debug',
41
+ `Presence for user ${userId} has expired and was removed.`,
42
+ );
43
+ }
44
+ }
45
+ return map;
46
+ };
47
+
48
+ set = async (
49
+ userId: string,
50
+ userInfo: UserInfoUpdate,
51
+ profile: any,
52
+ expiresAt: number,
53
+ ) => {
54
+ const map = await this.getMap();
55
+ const existing = map[userId];
56
+ const newValue: PresenceStorageItem = existing
57
+ ? { ...existing, ...userInfo, expiresAt, profile }
58
+ : {
59
+ ...userInfo,
60
+ expiresAt,
61
+ profile,
62
+ internal: userInfo.internal || initialInternalPresence,
63
+ };
64
+
65
+ await this.ctx.storage.put(this.key, {
66
+ ...map,
67
+ [userId]: newValue,
68
+ });
69
+ return newValue;
70
+ };
71
+
72
+ get = async (userId: string, time: number) => {
73
+ const map = await this.getMap();
74
+ const value = map[userId];
75
+ if (value && value.expiresAt > time) {
76
+ return value;
77
+ }
78
+ return undefined;
79
+ };
80
+
81
+ all: () => Promise<Record<string, UserInfo<any, any>>> = () => {
82
+ return this.getMap();
83
+ };
84
+
85
+ clear = async () => {
86
+ await this.ctx.storage.delete(this.key);
87
+ };
88
+
89
+ remove = async (userId: string) => {
90
+ const map = await this.getMap();
91
+ delete map[userId];
92
+ await this.ctx.storage.put(this.key, map);
93
+ };
94
+
95
+ setExpiresAt: (userId: string, expiresAt: number) => Promise<void> = async (
96
+ userId,
97
+ expiresAt,
98
+ ) => {
99
+ const map = await this.getMap();
100
+ const existing = map[userId];
101
+ if (existing) {
102
+ map[userId] = {
103
+ ...existing,
104
+ expiresAt,
105
+ };
106
+ await this.ctx.storage.put(this.key, map);
107
+ }
108
+ };
109
+ }