@verdant-web/cloudflare 0.1.2 → 0.1.4
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/dist/esm/api.d.ts +1 -1
- package/dist/esm/api.js +3 -4
- package/dist/esm/api.js.map +1 -1
- package/dist/esm/doLibrary.d.ts +4 -4
- package/dist/esm/doLibrary.js +64 -40
- package/dist/esm/doLibrary.js.map +1 -1
- package/package.json +2 -2
- package/src/api.ts +3 -10
- package/src/doLibrary.ts +67 -48
package/dist/esm/api.d.ts
CHANGED
package/dist/esm/api.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { errorHandler, tokenMiddleware, TokenVerifier, } from '@verdant-web/server/internals';
|
|
2
2
|
import { Hono } from 'hono';
|
|
3
|
-
import {
|
|
3
|
+
import { routePath } from 'hono/route';
|
|
4
4
|
/**
|
|
5
5
|
* Creates a Hono app configured to serve Verdant library traffic.
|
|
6
6
|
* This app 'router' should be mounted onto another Verdant app
|
|
@@ -22,7 +22,7 @@ export function createVerdantWorkerApp(config) {
|
|
|
22
22
|
});
|
|
23
23
|
return tokenMiddleware(tokenVerifier)(ctx, next);
|
|
24
24
|
})
|
|
25
|
-
.all((ctx) => {
|
|
25
|
+
.all('*', (ctx) => {
|
|
26
26
|
if (ctx.req.method === 'OPTIONS') {
|
|
27
27
|
// preflight request, np
|
|
28
28
|
return ctx.newResponse(null, { status: 204 });
|
|
@@ -31,11 +31,10 @@ export function createVerdantWorkerApp(config) {
|
|
|
31
31
|
const id = ctx.env[config.durableObjectBindingName].idFromName(info.libraryId);
|
|
32
32
|
const obj = ctx.env[config.durableObjectBindingName].get(id);
|
|
33
33
|
// remove the base path so the DO sees the correct routing
|
|
34
|
-
const path =
|
|
34
|
+
const path = routePath(ctx).replace('/*', '');
|
|
35
35
|
const thisUrl = new URL(ctx.req.url);
|
|
36
36
|
thisUrl.pathname = thisUrl.pathname.replace(path, '') || '/';
|
|
37
37
|
const modifiedReq = new Request(thisUrl.toString(), ctx.req.raw);
|
|
38
|
-
console.log(`[verdant worker] routing to DO ${info.libraryId}:`, ctx.req.method, ctx.req.url, path, modifiedReq.url);
|
|
39
38
|
return obj.fetch(modifiedReq);
|
|
40
39
|
});
|
|
41
40
|
return app;
|
package/dist/esm/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,YAAY,EACZ,eAAe,EACf,aAAa,GACb,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,YAAY,EACZ,eAAe,EACf,aAAa,GACb,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAOvC;;;;;;;;;GASG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAA2B;IACjE,2DAA2D;IAC3D,8BAA8B;IAC9B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAqC;SACvD,OAAO,CAAC,YAAY,CAAC;SACrB,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QAClB,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC;YACvC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,sBAAsB,CAAC;SAC9C,CAAC,CAAC;QACH,OAAO,eAAe,CAAC,aAAa,CAAC,CAAC,GAAU,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC,CAAC;SACD,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE;QACjB,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAClC,wBAAwB;YACxB,OAAO,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAClC,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,UAAU,CAC7D,IAAI,CAAC,SAAS,CACd,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7D,0DAA0D;QAC1D,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC;QAC7D,MAAM,WAAW,GAAY,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1E,OAAO,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEJ,OAAO,GAAG,CAAC;AACZ,CAAC"}
|
package/dist/esm/doLibrary.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { FileStorage,
|
|
1
|
+
import { EventSubscriber } from '@verdant-web/common';
|
|
2
|
+
import { FileStorage, UserProfiles } from '@verdant-web/server';
|
|
3
3
|
import { ClientConnectionManager, Library, LibraryEvents } from '@verdant-web/server/internals';
|
|
4
4
|
export interface DurableObjectLibraryConfig {
|
|
5
5
|
tokenSecret: string;
|
|
@@ -25,7 +25,6 @@ export declare class DurableObjectLibrary {
|
|
|
25
25
|
webSocketMessage: (ws: WebSocket, message: string | ArrayBuffer) => void | Promise<void>;
|
|
26
26
|
webSocketClose: (ws: WebSocket, code: number, reason: string, wasClean: boolean) => void | Promise<void>;
|
|
27
27
|
webSocketError: (ws: WebSocket, error: unknown) => void | Promise<void>;
|
|
28
|
-
handleMessage: (key: string, info: TokenInfo, message: ClientMessage) => Promise<void>;
|
|
29
28
|
getDocumentSnapshot: (collection: string, id: string) => Promise<{} | null>;
|
|
30
29
|
getFileInfo: (fileId: string) => Promise<{
|
|
31
30
|
libraryId: string;
|
|
@@ -34,7 +33,8 @@ export declare class DurableObjectLibrary {
|
|
|
34
33
|
type: string;
|
|
35
34
|
url: string | null;
|
|
36
35
|
} | null>;
|
|
37
|
-
evict: () => Promise<
|
|
36
|
+
evict: () => Promise<boolean>;
|
|
38
37
|
forceTruant: (replicaId: string) => Promise<void>;
|
|
39
38
|
getInfo: () => Promise<import("@verdant-web/server").LibraryInfo | null>;
|
|
39
|
+
getIsInitialized: () => boolean;
|
|
40
40
|
}
|
package/dist/esm/doLibrary.js
CHANGED
|
@@ -9,7 +9,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
9
9
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
10
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
11
|
};
|
|
12
|
-
var _DurableObjectLibrary_app, _DurableObjectLibrary_socketInfoCache, _DurableObjectLibrary_initialized, _DurableObjectLibrary_config, _DurableObjectLibrary_noop, _DurableObjectLibrary_restore, _DurableObjectLibrary_getSocketInfo;
|
|
12
|
+
var _DurableObjectLibrary_app, _DurableObjectLibrary_socketInfoCache, _DurableObjectLibrary_initializePromise, _DurableObjectLibrary_initialized, _DurableObjectLibrary_config, _DurableObjectLibrary_noop, _DurableObjectLibrary_restore, _DurableObjectLibrary_getSocketInfo;
|
|
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';
|
|
@@ -19,42 +19,51 @@ export class DurableObjectLibrary {
|
|
|
19
19
|
this.ctx = ctx;
|
|
20
20
|
_DurableObjectLibrary_app.set(this, void 0);
|
|
21
21
|
_DurableObjectLibrary_socketInfoCache.set(this, new WeakMap());
|
|
22
|
+
_DurableObjectLibrary_initializePromise.set(this, null);
|
|
22
23
|
_DurableObjectLibrary_initialized.set(this, false);
|
|
23
24
|
_DurableObjectLibrary_config.set(this, void 0);
|
|
24
25
|
this.events = new EventSubscriber();
|
|
25
26
|
_DurableObjectLibrary_noop.set(this, () => { });
|
|
26
27
|
this.initialize = async (libraryId) => {
|
|
27
|
-
var _a, _b, _c, _d;
|
|
28
28
|
if (__classPrivateFieldGet(this, _DurableObjectLibrary_initialized, "f")) {
|
|
29
29
|
return;
|
|
30
30
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
throw new VerdantError(VerdantError.Code.InvalidRequest, undefined, 'Library ID does not match existing storage');
|
|
31
|
+
if (__classPrivateFieldGet(this, _DurableObjectLibrary_initializePromise, "f")) {
|
|
32
|
+
return __classPrivateFieldGet(this, _DurableObjectLibrary_initializePromise, "f");
|
|
34
33
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
:
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
34
|
+
__classPrivateFieldSet(this, _DurableObjectLibrary_initializePromise, (async () => {
|
|
35
|
+
var _a, _b, _c, _d;
|
|
36
|
+
const storedLibraryId = await this.ctx.storage.get('libraryId');
|
|
37
|
+
if (storedLibraryId && storedLibraryId !== libraryId) {
|
|
38
|
+
throw new VerdantError(VerdantError.Code.InvalidRequest, undefined, 'Library ID does not match existing storage');
|
|
39
|
+
}
|
|
40
|
+
this.ctx.storage.put('libraryId', libraryId);
|
|
41
|
+
const db = createDurableObjectSqliteExecutor(this.ctx.storage, {
|
|
42
|
+
log: this.log,
|
|
43
|
+
});
|
|
44
|
+
db.migrate();
|
|
45
|
+
const storage = new SqlShardStorage(db, {
|
|
46
|
+
libraryId,
|
|
47
|
+
fileDeleteExpirationDays: (_b = (_a = __classPrivateFieldGet(this, _DurableObjectLibrary_config, "f").storageOptions) === null || _a === void 0 ? void 0 : _a.fileDeleteExpirationDays) !== null && _b !== void 0 ? _b : 14,
|
|
48
|
+
replicaTruancyMinutes: (_d = (_c = __classPrivateFieldGet(this, _DurableObjectLibrary_config, "f").storageOptions) === null || _c === void 0 ? void 0 : _c.replicaTruancyTimeout) !== null && _d !== void 0 ? _d : 14 * 24 * 60,
|
|
49
|
+
});
|
|
50
|
+
this.library = new Library({
|
|
51
|
+
id: libraryId,
|
|
52
|
+
storage,
|
|
53
|
+
sender: this.clientConnections,
|
|
54
|
+
events: this.events,
|
|
55
|
+
disableRebasing: __classPrivateFieldGet(this, _DurableObjectLibrary_config, "f").disableRebasing,
|
|
56
|
+
fileStorage: __classPrivateFieldGet(this, _DurableObjectLibrary_config, "f").fileStorage
|
|
57
|
+
? new FileStorageLibraryDelegate(libraryId, __classPrivateFieldGet(this, _DurableObjectLibrary_config, "f").fileStorage)
|
|
58
|
+
: undefined,
|
|
59
|
+
log: this.log,
|
|
60
|
+
presence: this.clientConnections.presence,
|
|
61
|
+
});
|
|
62
|
+
__classPrivateFieldSet(this, _DurableObjectLibrary_initialized, true, "f");
|
|
63
|
+
__classPrivateFieldSet(this, _DurableObjectLibrary_initializePromise, null, "f");
|
|
64
|
+
this.log('info', 'Library initialized', { libraryId: this.library.id });
|
|
65
|
+
})(), "f");
|
|
66
|
+
await __classPrivateFieldGet(this, _DurableObjectLibrary_initializePromise, "f");
|
|
58
67
|
};
|
|
59
68
|
_DurableObjectLibrary_restore.set(this, async () => {
|
|
60
69
|
if (__classPrivateFieldGet(this, _DurableObjectLibrary_initialized, "f")) {
|
|
@@ -64,6 +73,9 @@ export class DurableObjectLibrary {
|
|
|
64
73
|
if (storedLibraryId) {
|
|
65
74
|
await this.initialize(storedLibraryId);
|
|
66
75
|
}
|
|
76
|
+
else {
|
|
77
|
+
this.log('error', 'A Verdant Durable Object Library was accessed before being initialized. Before using a Verdant Library DO, you must either call .initialize(libraryId) or receive a valid client request to seed the library.');
|
|
78
|
+
}
|
|
67
79
|
});
|
|
68
80
|
this.fetch = async (request) => {
|
|
69
81
|
return __classPrivateFieldGet(this, _DurableObjectLibrary_app, "f").fetch(request);
|
|
@@ -100,35 +112,48 @@ export class DurableObjectLibrary {
|
|
|
100
112
|
this.clientConnections.remove(key);
|
|
101
113
|
__classPrivateFieldGet(this, _DurableObjectLibrary_socketInfoCache, "f").delete(ws);
|
|
102
114
|
};
|
|
103
|
-
this.handleMessage = async (key, info, message) => {
|
|
104
|
-
await __classPrivateFieldGet(this, _DurableObjectLibrary_restore, "f").call(this);
|
|
105
|
-
return this.library.handleMessage(message, key, info);
|
|
106
|
-
};
|
|
107
115
|
// public library API
|
|
108
116
|
this.getDocumentSnapshot = async (collection, id) => {
|
|
109
117
|
await __classPrivateFieldGet(this, _DurableObjectLibrary_restore, "f").call(this);
|
|
118
|
+
if (!this.library)
|
|
119
|
+
return null;
|
|
110
120
|
return this.library.getDocumentSnapshot(createOid(collection, id));
|
|
111
121
|
};
|
|
112
122
|
this.getFileInfo = async (fileId) => {
|
|
113
123
|
await __classPrivateFieldGet(this, _DurableObjectLibrary_restore, "f").call(this);
|
|
124
|
+
if (!this.library)
|
|
125
|
+
return null;
|
|
114
126
|
return this.library.getFileInfo(fileId);
|
|
115
127
|
};
|
|
116
128
|
this.evict = async () => {
|
|
117
129
|
var _a;
|
|
118
|
-
await __classPrivateFieldGet(this, _DurableObjectLibrary_restore, "f").call(this);
|
|
119
130
|
await this.clientConnections.disconnectAll();
|
|
131
|
+
await this.ctx
|
|
132
|
+
.getWebSockets()
|
|
133
|
+
.forEach((ws) => ws.close(1001, 'Server reset'));
|
|
134
|
+
await __classPrivateFieldGet(this, _DurableObjectLibrary_restore, "f").call(this);
|
|
135
|
+
if (!this.library)
|
|
136
|
+
return false;
|
|
120
137
|
await ((_a = this.library) === null || _a === void 0 ? void 0 : _a.destroy());
|
|
121
138
|
await this.ctx.storage.deleteAll();
|
|
122
139
|
__classPrivateFieldSet(this, _DurableObjectLibrary_initialized, false, "f");
|
|
140
|
+
return true;
|
|
123
141
|
};
|
|
124
142
|
this.forceTruant = async (replicaId) => {
|
|
143
|
+
var _a;
|
|
125
144
|
await __classPrivateFieldGet(this, _DurableObjectLibrary_restore, "f").call(this);
|
|
126
|
-
return this.library.forceTruant(replicaId);
|
|
145
|
+
return (_a = this.library) === null || _a === void 0 ? void 0 : _a.forceTruant(replicaId);
|
|
127
146
|
};
|
|
128
147
|
this.getInfo = async () => {
|
|
129
148
|
await __classPrivateFieldGet(this, _DurableObjectLibrary_restore, "f").call(this);
|
|
149
|
+
if (!this.library)
|
|
150
|
+
return null;
|
|
130
151
|
return this.library.getInfo();
|
|
131
152
|
};
|
|
153
|
+
// helpers
|
|
154
|
+
this.getIsInitialized = () => {
|
|
155
|
+
return !!this.library;
|
|
156
|
+
};
|
|
132
157
|
__classPrivateFieldSet(this, _DurableObjectLibrary_config, verdant, "f");
|
|
133
158
|
this.clientConnections = new ClientConnectionManager({
|
|
134
159
|
profiles: new UserProfileLoader(__classPrivateFieldGet(this, _DurableObjectLibrary_config, "f").profiles),
|
|
@@ -142,10 +167,6 @@ export class DurableObjectLibrary {
|
|
|
142
167
|
});
|
|
143
168
|
__classPrivateFieldSet(this, _DurableObjectLibrary_app, new Hono()
|
|
144
169
|
.onError(errorHandler)
|
|
145
|
-
.use(async (ctx, next) => {
|
|
146
|
-
console.log(`[verdant object]`, ctx.req.url);
|
|
147
|
-
await next();
|
|
148
|
-
})
|
|
149
170
|
.use(tokenMiddleware(new TokenVerifier({ secret: verdant.tokenSecret })))
|
|
150
171
|
.use(async (ctx, next) => {
|
|
151
172
|
// only after authorization, migrate the database
|
|
@@ -231,8 +252,11 @@ export class DurableObjectLibrary {
|
|
|
231
252
|
})));
|
|
232
253
|
}
|
|
233
254
|
get log() {
|
|
234
|
-
|
|
255
|
+
if (__classPrivateFieldGet(this, _DurableObjectLibrary_config, "f").log) {
|
|
256
|
+
return (level, ...args) => { var _a; return __classPrivateFieldGet(this, _DurableObjectLibrary_config, "f").log(level, (_a = this.library) === null || _a === void 0 ? void 0 : _a.id, ...args); };
|
|
257
|
+
}
|
|
258
|
+
return __classPrivateFieldGet(this, _DurableObjectLibrary_noop, "f");
|
|
235
259
|
}
|
|
236
260
|
}
|
|
237
|
-
_DurableObjectLibrary_app = new WeakMap(), _DurableObjectLibrary_socketInfoCache = new WeakMap(), _DurableObjectLibrary_initialized = new WeakMap(), _DurableObjectLibrary_config = new WeakMap(), _DurableObjectLibrary_noop = new WeakMap(), _DurableObjectLibrary_restore = new WeakMap(), _DurableObjectLibrary_getSocketInfo = new WeakMap();
|
|
261
|
+
_DurableObjectLibrary_app = new WeakMap(), _DurableObjectLibrary_socketInfoCache = new WeakMap(), _DurableObjectLibrary_initializePromise = new WeakMap(), _DurableObjectLibrary_initialized = new WeakMap(), _DurableObjectLibrary_config = new WeakMap(), _DurableObjectLibrary_noop = new WeakMap(), _DurableObjectLibrary_restore = new WeakMap(), _DurableObjectLibrary_getSocketInfo = new WeakMap();
|
|
238
262
|
//# sourceMappingURL=doLibrary.js.map
|
|
@@ -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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@verdant-web/cloudflare",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
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.0.
|
|
25
|
+
"@verdant-web/server": "4.0.2",
|
|
26
26
|
"@verdant-web/common": "3.0.0"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
package/src/api.ts
CHANGED
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
TokenVerifier,
|
|
5
5
|
} from '@verdant-web/server/internals';
|
|
6
6
|
import { Hono } from 'hono';
|
|
7
|
-
import {
|
|
7
|
+
import { routePath } from 'hono/route';
|
|
8
8
|
|
|
9
9
|
export interface VerdantWorkerConfig {
|
|
10
10
|
durableObjectBindingName: string;
|
|
@@ -32,7 +32,7 @@ export function createVerdantWorkerApp(config: VerdantWorkerConfig) {
|
|
|
32
32
|
});
|
|
33
33
|
return tokenMiddleware(tokenVerifier)(ctx as any, next);
|
|
34
34
|
})
|
|
35
|
-
.all((ctx) => {
|
|
35
|
+
.all('*', (ctx) => {
|
|
36
36
|
if (ctx.req.method === 'OPTIONS') {
|
|
37
37
|
// preflight request, np
|
|
38
38
|
return ctx.newResponse(null, { status: 204 });
|
|
@@ -44,17 +44,10 @@ export function createVerdantWorkerApp(config: VerdantWorkerConfig) {
|
|
|
44
44
|
);
|
|
45
45
|
const obj = ctx.env[config.durableObjectBindingName].get(id);
|
|
46
46
|
// remove the base path so the DO sees the correct routing
|
|
47
|
-
const path =
|
|
47
|
+
const path = routePath(ctx).replace('/*', '');
|
|
48
48
|
const thisUrl = new URL(ctx.req.url);
|
|
49
49
|
thisUrl.pathname = thisUrl.pathname.replace(path, '') || '/';
|
|
50
50
|
const modifiedReq: Request = new Request(thisUrl.toString(), ctx.req.raw);
|
|
51
|
-
console.log(
|
|
52
|
-
`[verdant worker] routing to DO ${info.libraryId}:`,
|
|
53
|
-
ctx.req.method,
|
|
54
|
-
ctx.req.url,
|
|
55
|
-
path,
|
|
56
|
-
modifiedReq.url,
|
|
57
|
-
);
|
|
58
51
|
return obj.fetch(modifiedReq);
|
|
59
52
|
});
|
|
60
53
|
|
package/src/doLibrary.ts
CHANGED
|
@@ -44,6 +44,7 @@ export interface DurableObjectLibraryConfig {
|
|
|
44
44
|
export class DurableObjectLibrary {
|
|
45
45
|
#app: Hono<any>;
|
|
46
46
|
#socketInfoCache: WeakMap<WebSocket, SocketMeta> = new WeakMap();
|
|
47
|
+
#initializePromise: Promise<void> | null = null;
|
|
47
48
|
#initialized = false;
|
|
48
49
|
#config: DurableObjectLibraryConfig;
|
|
49
50
|
|
|
@@ -72,10 +73,6 @@ export class DurableObjectLibrary {
|
|
|
72
73
|
|
|
73
74
|
this.#app = new Hono()
|
|
74
75
|
.onError(errorHandler)
|
|
75
|
-
.use(async (ctx, next) => {
|
|
76
|
-
console.log(`[verdant object]`, ctx.req.url);
|
|
77
|
-
await next();
|
|
78
|
-
})
|
|
79
76
|
.use(tokenMiddleware(new TokenVerifier({ secret: verdant.tokenSecret })))
|
|
80
77
|
.use(async (ctx, next) => {
|
|
81
78
|
// only after authorization, migrate the database
|
|
@@ -212,46 +209,59 @@ export class DurableObjectLibrary {
|
|
|
212
209
|
|
|
213
210
|
#noop = () => {};
|
|
214
211
|
get log() {
|
|
215
|
-
|
|
212
|
+
if (this.#config.log) {
|
|
213
|
+
return (level: string, ...args: any[]) =>
|
|
214
|
+
this.#config.log!(level, this.library?.id, ...args);
|
|
215
|
+
}
|
|
216
|
+
return this.#noop;
|
|
216
217
|
}
|
|
217
218
|
|
|
218
219
|
initialize = async (libraryId: string) => {
|
|
219
220
|
if (this.#initialized) {
|
|
220
221
|
return;
|
|
221
222
|
}
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
throw new VerdantError(
|
|
225
|
-
VerdantError.Code.InvalidRequest,
|
|
226
|
-
undefined,
|
|
227
|
-
'Library ID does not match existing storage',
|
|
228
|
-
);
|
|
223
|
+
if (this.#initializePromise) {
|
|
224
|
+
return this.#initializePromise;
|
|
229
225
|
}
|
|
230
|
-
|
|
231
|
-
this.#
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
storage,
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
226
|
+
|
|
227
|
+
this.#initializePromise = (async () => {
|
|
228
|
+
const storedLibraryId = await this.ctx.storage.get<string>('libraryId');
|
|
229
|
+
if (storedLibraryId && storedLibraryId !== libraryId) {
|
|
230
|
+
throw new VerdantError(
|
|
231
|
+
VerdantError.Code.InvalidRequest,
|
|
232
|
+
undefined,
|
|
233
|
+
'Library ID does not match existing storage',
|
|
234
|
+
);
|
|
235
|
+
}
|
|
236
|
+
this.ctx.storage.put('libraryId', libraryId);
|
|
237
|
+
const db = createDurableObjectSqliteExecutor(this.ctx.storage, {
|
|
238
|
+
log: this.log,
|
|
239
|
+
});
|
|
240
|
+
db.migrate();
|
|
241
|
+
const storage = new SqlShardStorage(db, {
|
|
242
|
+
libraryId,
|
|
243
|
+
fileDeleteExpirationDays:
|
|
244
|
+
this.#config.storageOptions?.fileDeleteExpirationDays ?? 14,
|
|
245
|
+
replicaTruancyMinutes:
|
|
246
|
+
this.#config.storageOptions?.replicaTruancyTimeout ?? 14 * 24 * 60,
|
|
247
|
+
});
|
|
248
|
+
this.library = new Library({
|
|
249
|
+
id: libraryId,
|
|
250
|
+
storage,
|
|
251
|
+
sender: this.clientConnections,
|
|
252
|
+
events: this.events,
|
|
253
|
+
disableRebasing: this.#config.disableRebasing,
|
|
254
|
+
fileStorage: this.#config.fileStorage
|
|
255
|
+
? new FileStorageLibraryDelegate(libraryId, this.#config.fileStorage)
|
|
256
|
+
: undefined,
|
|
257
|
+
log: this.log,
|
|
258
|
+
presence: this.clientConnections.presence,
|
|
259
|
+
});
|
|
260
|
+
this.#initialized = true;
|
|
261
|
+
this.#initializePromise = null;
|
|
262
|
+
this.log('info', 'Library initialized', { libraryId: this.library.id });
|
|
263
|
+
})();
|
|
264
|
+
await this.#initializePromise;
|
|
255
265
|
};
|
|
256
266
|
#restore = async () => {
|
|
257
267
|
if (this.#initialized) {
|
|
@@ -260,6 +270,11 @@ export class DurableObjectLibrary {
|
|
|
260
270
|
const storedLibraryId = await this.ctx.storage.get<string>('libraryId');
|
|
261
271
|
if (storedLibraryId) {
|
|
262
272
|
await this.initialize(storedLibraryId);
|
|
273
|
+
} else {
|
|
274
|
+
this.log(
|
|
275
|
+
'error',
|
|
276
|
+
'A Verdant Durable Object Library was accessed before being initialized. Before using a Verdant Library DO, you must either call .initialize(libraryId) or receive a valid client request to seed the library.',
|
|
277
|
+
);
|
|
263
278
|
}
|
|
264
279
|
};
|
|
265
280
|
|
|
@@ -315,39 +330,43 @@ export class DurableObjectLibrary {
|
|
|
315
330
|
this.#socketInfoCache.delete(ws);
|
|
316
331
|
};
|
|
317
332
|
|
|
318
|
-
handleMessage = async (
|
|
319
|
-
key: string,
|
|
320
|
-
info: TokenInfo,
|
|
321
|
-
message: ClientMessage,
|
|
322
|
-
) => {
|
|
323
|
-
await this.#restore();
|
|
324
|
-
return this.library.handleMessage(message, key, info);
|
|
325
|
-
};
|
|
326
|
-
|
|
327
333
|
// public library API
|
|
328
334
|
getDocumentSnapshot = async (collection: string, id: string) => {
|
|
329
335
|
await this.#restore();
|
|
336
|
+
if (!this.library) return null;
|
|
330
337
|
return this.library.getDocumentSnapshot(
|
|
331
338
|
createOid(collection, id),
|
|
332
339
|
) as Promise<{} | null>;
|
|
333
340
|
};
|
|
334
341
|
getFileInfo = async (fileId: string) => {
|
|
335
342
|
await this.#restore();
|
|
343
|
+
if (!this.library) return null;
|
|
336
344
|
return this.library.getFileInfo(fileId);
|
|
337
345
|
};
|
|
338
346
|
evict = async () => {
|
|
339
|
-
await this.#restore();
|
|
340
347
|
await this.clientConnections.disconnectAll();
|
|
348
|
+
await this.ctx
|
|
349
|
+
.getWebSockets()
|
|
350
|
+
.forEach((ws) => ws.close(1001, 'Server reset'));
|
|
351
|
+
await this.#restore();
|
|
352
|
+
if (!this.library) return false;
|
|
341
353
|
await this.library?.destroy();
|
|
342
354
|
await this.ctx.storage.deleteAll();
|
|
343
355
|
this.#initialized = false;
|
|
356
|
+
return true;
|
|
344
357
|
};
|
|
345
358
|
forceTruant = async (replicaId: string) => {
|
|
346
359
|
await this.#restore();
|
|
347
|
-
return this.library
|
|
360
|
+
return this.library?.forceTruant(replicaId);
|
|
348
361
|
};
|
|
349
362
|
getInfo = async () => {
|
|
350
363
|
await this.#restore();
|
|
364
|
+
if (!this.library) return null;
|
|
351
365
|
return this.library.getInfo();
|
|
352
366
|
};
|
|
367
|
+
|
|
368
|
+
// helpers
|
|
369
|
+
getIsInitialized = () => {
|
|
370
|
+
return !!this.library;
|
|
371
|
+
};
|
|
353
372
|
}
|