@vex-chat/spire 1.0.1 → 1.0.2
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/README.md +12 -11
- package/dist/ClientManager.js +1 -2
- package/dist/ClientManager.js.map +1 -1
- package/dist/Database.d.ts +24 -1
- package/dist/Database.js +201 -64
- package/dist/Database.js.map +1 -1
- package/dist/Spire.js +81 -8
- package/dist/Spire.js.map +1 -1
- package/dist/server/index.js +15 -2
- package/dist/server/index.js.map +1 -1
- package/dist/server/rateLimit.d.ts +10 -0
- package/dist/server/rateLimit.js +51 -0
- package/dist/server/rateLimit.js.map +1 -1
- package/dist/server/user.js +7 -3
- package/dist/server/user.js.map +1 -1
- package/package.json +12 -5
- package/src/ClientManager.ts +1 -2
- package/src/Database.ts +225 -68
- package/src/Spire.ts +85 -11
- package/src/server/index.ts +16 -2
- package/src/server/rateLimit.ts +37 -3
- package/src/server/user.ts +7 -3
- package/dist/__tests__/Database.spec.d.ts +0 -1
- package/dist/__tests__/Database.spec.js +0 -122
- package/dist/__tests__/Database.spec.js.map +0 -1
package/README.md
CHANGED
|
@@ -58,20 +58,21 @@ Spire reads configuration from environment variables. **Docker Compose:** put th
|
|
|
58
58
|
|
|
59
59
|
### Required
|
|
60
60
|
|
|
61
|
-
| Variable | Description
|
|
62
|
-
| ------------ |
|
|
63
|
-
| `SPK` | Server private key, hex-encoded. Generate with `npm run gen-spk` (prints `SPK` and `JWT_SECRET` lines). Used for server identity signing (NaCl).
|
|
64
|
-
| `JWT_SECRET` | Hex or string used as the **HMAC secret for JWTs** — **required** and must be **separate from `SPK`**. `npm run gen-spk` emits a dedicated value; do not reuse `SPK` here.
|
|
65
|
-
| `DB_TYPE` | `
|
|
61
|
+
| Variable | Description |
|
|
62
|
+
| ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
63
|
+
| `SPK` | Server private key, hex-encoded. Generate with `npm run gen-spk` (prints `SPK` and `JWT_SECRET` lines). Used for server identity signing (NaCl). |
|
|
64
|
+
| `JWT_SECRET` | Hex or string used as the **HMAC secret for JWTs** — **required** and must be **separate from `SPK`**. `npm run gen-spk` emits a dedicated value; do not reuse `SPK` here. |
|
|
65
|
+
| `DB_TYPE` | `sqlite3` or `sqlite3mem`. All values use **SQLite** via `better-sqlite3` (file or `:memory:`). |
|
|
66
66
|
|
|
67
67
|
### Optional
|
|
68
68
|
|
|
69
|
-
| Variable | Default | Description
|
|
70
|
-
| -------------- | --------- |
|
|
71
|
-
| `API_PORT` | `16777` | Port for the REST API and WebSocket server (see `Spire` default in code if unset).
|
|
72
|
-
| `NODE_ENV` | _(unset)_ | Set to `production` to disable interactive `/docs` / `/async-docs`. If unset or any other value, doc viewers are mounted. `helmet()` runs in all modes.
|
|
73
|
-
| `CORS_ORIGINS` | _(empty)_ | Comma-separated allowed `Origin` values
|
|
74
|
-
| `
|
|
69
|
+
| Variable | Default | Description |
|
|
70
|
+
| -------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
71
|
+
| `API_PORT` | `16777` | Port for the REST API and WebSocket server (see `Spire` default in code if unset). |
|
|
72
|
+
| `NODE_ENV` | _(unset)_ | Set to `production` to disable interactive `/docs` / `/async-docs`. If unset or any other value, doc viewers are mounted. `helmet()` runs in all modes. |
|
|
73
|
+
| `CORS_ORIGINS` | _(empty)_ | Comma-separated allowed `Origin` values. If set, only those origins may use credentialed browser requests. If unset, Spire **reflects the request `Origin`** so self-hosted Spire and arbitrary app origins (Tauri, localhost, etc.) work without configuration — appropriate for bearer-token APIs; set an allowlist if you need to restrict which sites may call your instance from users' browsers. |
|
|
74
|
+
| `DEV_API_KEY` | _(empty)_ | When set, requests that send header `x-dev-api-key` with the same value (constant-time compare) **skip in-process rate limiters**. The same gate enables **`GET /status/process`** (404 without a valid key): a small JSON snapshot of the Spire Node process (PID, uptime, `memoryUsage`, cumulative `resourceUsage`, WebSocket client count). Dev / load-testing only — never set in production. |
|
|
75
|
+
| `CANARY` | _(unset)_ | |
|
|
75
76
|
|
|
76
77
|
### Sample `.env`
|
|
77
78
|
|
package/dist/ClientManager.js
CHANGED
|
@@ -191,8 +191,7 @@ export class ClientManager extends EventEmitter {
|
|
|
191
191
|
this.send(p);
|
|
192
192
|
}
|
|
193
193
|
async pingLoop() {
|
|
194
|
-
|
|
195
|
-
while (true) {
|
|
194
|
+
while (!this.failed) {
|
|
196
195
|
this.ping();
|
|
197
196
|
await sleep(5000);
|
|
198
197
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClientManager.js","sourceRoot":"","sources":["../src/ClientManager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ClientManager.js","sourceRoot":"","sources":["../src/ClientManager.ts"],"names":[],"mappings":"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"}
|
package/dist/Database.d.ts
CHANGED
|
@@ -7,7 +7,30 @@ export interface InternalUserRecord extends UserRecord {
|
|
|
7
7
|
}
|
|
8
8
|
export declare class Database extends EventEmitter {
|
|
9
9
|
private db;
|
|
10
|
+
/** Underlying better-sqlite3 handle (file or :memory:). */
|
|
11
|
+
private readonly rawSqlite;
|
|
12
|
+
/**
|
|
13
|
+
* In-process cache for {@link retrieveUserDeviceList} when queried for a
|
|
14
|
+
* single owner. Libvex calls GET /user/:id/devices on every outgoing
|
|
15
|
+
* `forward()`; stress runs otherwise hammer SQLite with identical reads.
|
|
16
|
+
* Cleared on device create/delete and when the DB is closed.
|
|
17
|
+
*/
|
|
18
|
+
private readonly userDeviceListCache;
|
|
19
|
+
/**
|
|
20
|
+
* Short TTL cache for {@link retrieveEmojiList} (key = server id, stored as
|
|
21
|
+
* `emojis.owner`). The noise harness fires `emoji.retrieveList` as a
|
|
22
|
+
* follow-up on ~1/25 successful ops, so this path can contend on SQLite
|
|
23
|
+
* before heavier surfaces. Invalidated on emoji create/delete.
|
|
24
|
+
*/
|
|
25
|
+
private readonly emojiListByServerCache;
|
|
26
|
+
private static readonly USER_DEVICE_LIST_CACHE_TTL_MS;
|
|
27
|
+
private static readonly EMOJI_LIST_CACHE_TTL_MS;
|
|
10
28
|
constructor(options?: SpireOptions);
|
|
29
|
+
/**
|
|
30
|
+
* Dev-only snapshot of SQLite files + pragmas (same process as Spire).
|
|
31
|
+
* Not for production callers.
|
|
32
|
+
*/
|
|
33
|
+
getDevSqliteMonitor(): Record<string, unknown>;
|
|
11
34
|
close(): Promise<void>;
|
|
12
35
|
createChannel(name: string, serverID: string): Promise<Channel>;
|
|
13
36
|
createDevice(owner: string, payload: DevicePayload): Promise<Device>;
|
|
@@ -46,7 +69,7 @@ export declare class Database extends EventEmitter {
|
|
|
46
69
|
retrieveChannels(serverID: string): Promise<Channel[]>;
|
|
47
70
|
retrieveDevice(deviceID: string): Promise<Device | null>;
|
|
48
71
|
retrieveEmoji(emojiID: string): Promise<Emoji | null>;
|
|
49
|
-
retrieveEmojiList(
|
|
72
|
+
retrieveEmojiList(serverID: string): Promise<Emoji[]>;
|
|
50
73
|
retrieveFile(fileID: string): Promise<FileSQL | null>;
|
|
51
74
|
retrieveGroupMembers(channelID: string): Promise<UserRecord[]>;
|
|
52
75
|
retrieveInvite(inviteID: string): Promise<Invite | null>;
|
package/dist/Database.js
CHANGED
|
@@ -8,6 +8,7 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
|
|
|
8
8
|
};
|
|
9
9
|
import { EventEmitter } from "events";
|
|
10
10
|
import { pbkdf2Sync } from "node:crypto";
|
|
11
|
+
import { statSync } from "node:fs";
|
|
11
12
|
import * as fs from "node:fs/promises";
|
|
12
13
|
import path from "node:path";
|
|
13
14
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
@@ -84,6 +85,24 @@ const pubkeyRegex = /[0-9a-f]{64}/;
|
|
|
84
85
|
const PBKDF2_ITERATIONS = 1000;
|
|
85
86
|
export class Database extends EventEmitter {
|
|
86
87
|
db;
|
|
88
|
+
/** Underlying better-sqlite3 handle (file or :memory:). */
|
|
89
|
+
rawSqlite;
|
|
90
|
+
/**
|
|
91
|
+
* In-process cache for {@link retrieveUserDeviceList} when queried for a
|
|
92
|
+
* single owner. Libvex calls GET /user/:id/devices on every outgoing
|
|
93
|
+
* `forward()`; stress runs otherwise hammer SQLite with identical reads.
|
|
94
|
+
* Cleared on device create/delete and when the DB is closed.
|
|
95
|
+
*/
|
|
96
|
+
userDeviceListCache = new Map();
|
|
97
|
+
/**
|
|
98
|
+
* Short TTL cache for {@link retrieveEmojiList} (key = server id, stored as
|
|
99
|
+
* `emojis.owner`). The noise harness fires `emoji.retrieveList` as a
|
|
100
|
+
* follow-up on ~1/25 successful ops, so this path can contend on SQLite
|
|
101
|
+
* before heavier surfaces. Invalidated on emoji create/delete.
|
|
102
|
+
*/
|
|
103
|
+
emojiListByServerCache = new Map();
|
|
104
|
+
static USER_DEVICE_LIST_CACHE_TTL_MS = 10_000;
|
|
105
|
+
static EMOJI_LIST_CACHE_TTL_MS = 10_000;
|
|
87
106
|
constructor(options) {
|
|
88
107
|
super();
|
|
89
108
|
const dbType = options?.dbType || "sqlite3";
|
|
@@ -100,19 +119,78 @@ export class Database extends EventEmitter {
|
|
|
100
119
|
filename = "spire.sqlite";
|
|
101
120
|
break;
|
|
102
121
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
122
|
+
this.rawSqlite = new BetterSqlite3(filename);
|
|
123
|
+
this.rawSqlite.pragma("journal_mode = WAL");
|
|
124
|
+
this.rawSqlite.pragma("synchronous = NORMAL");
|
|
125
|
+
this.rawSqlite.pragma("busy_timeout = 5000");
|
|
126
|
+
this.rawSqlite.pragma("cache_size = -64000");
|
|
127
|
+
this.rawSqlite.pragma("temp_store = memory");
|
|
128
|
+
this.rawSqlite.pragma("foreign_keys = ON");
|
|
110
129
|
this.db = new Kysely({
|
|
111
|
-
dialect: new SqliteDialect({ database:
|
|
130
|
+
dialect: new SqliteDialect({ database: this.rawSqlite }),
|
|
112
131
|
});
|
|
113
132
|
void this.init();
|
|
114
133
|
}
|
|
134
|
+
/**
|
|
135
|
+
* Dev-only snapshot of SQLite files + pragmas (same process as Spire).
|
|
136
|
+
* Not for production callers.
|
|
137
|
+
*/
|
|
138
|
+
getDevSqliteMonitor() {
|
|
139
|
+
const openedAs = this.rawSqlite.name;
|
|
140
|
+
const absPath = openedAs === ":memory:"
|
|
141
|
+
? ":memory:"
|
|
142
|
+
: path.isAbsolute(openedAs)
|
|
143
|
+
? openedAs
|
|
144
|
+
: path.resolve(process.cwd(), openedAs);
|
|
145
|
+
const journalMode = this.rawSqlite.pragma("journal_mode", {
|
|
146
|
+
simple: true,
|
|
147
|
+
});
|
|
148
|
+
const synchronous = this.rawSqlite.pragma("synchronous", {
|
|
149
|
+
simple: true,
|
|
150
|
+
});
|
|
151
|
+
const busyTimeout = this.rawSqlite.pragma("busy_timeout", {
|
|
152
|
+
simple: true,
|
|
153
|
+
});
|
|
154
|
+
const cacheSize = this.rawSqlite.pragma("cache_size", { simple: true });
|
|
155
|
+
const pageCount = this.rawSqlite.pragma("page_count", { simple: true });
|
|
156
|
+
const pageSize = this.rawSqlite.pragma("page_size", { simple: true });
|
|
157
|
+
const freelistCount = this.rawSqlite.pragma("freelist_count", {
|
|
158
|
+
simple: true,
|
|
159
|
+
});
|
|
160
|
+
const out = {
|
|
161
|
+
absPath,
|
|
162
|
+
busyTimeout,
|
|
163
|
+
cacheSize,
|
|
164
|
+
freelistCount,
|
|
165
|
+
journalMode,
|
|
166
|
+
openedAs,
|
|
167
|
+
pageCount,
|
|
168
|
+
pageSize,
|
|
169
|
+
synchronous,
|
|
170
|
+
};
|
|
171
|
+
if (openedAs !== ":memory:") {
|
|
172
|
+
const filePaths = {
|
|
173
|
+
main: absPath,
|
|
174
|
+
shm: `${absPath}-shm`,
|
|
175
|
+
wal: `${absPath}-wal`,
|
|
176
|
+
};
|
|
177
|
+
out["filePaths"] = filePaths;
|
|
178
|
+
const sizes = {};
|
|
179
|
+
for (const [label, fp] of Object.entries(filePaths)) {
|
|
180
|
+
try {
|
|
181
|
+
sizes[label] = statSync(fp).size;
|
|
182
|
+
}
|
|
183
|
+
catch {
|
|
184
|
+
sizes[label] = 0;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
out["fileBytes"] = sizes;
|
|
188
|
+
}
|
|
189
|
+
return out;
|
|
190
|
+
}
|
|
115
191
|
async close() {
|
|
192
|
+
this.userDeviceListCache.clear();
|
|
193
|
+
this.emojiListByServerCache.clear();
|
|
116
194
|
await this.db.destroy();
|
|
117
195
|
}
|
|
118
196
|
async createChannel(name, serverID) {
|
|
@@ -134,6 +212,7 @@ export class Database extends EventEmitter {
|
|
|
134
212
|
signKey: payload.signKey,
|
|
135
213
|
};
|
|
136
214
|
await this.db.insertInto("devices").values(device).execute();
|
|
215
|
+
this.userDeviceListCache.delete(owner);
|
|
137
216
|
const medPreKeys = {
|
|
138
217
|
deviceID: device.deviceID,
|
|
139
218
|
index: payload.preKeyIndex,
|
|
@@ -147,6 +226,7 @@ export class Database extends EventEmitter {
|
|
|
147
226
|
}
|
|
148
227
|
async createEmoji(emoji) {
|
|
149
228
|
await this.db.insertInto("emojis").values(emoji).execute();
|
|
229
|
+
this.emojiListByServerCache.delete(emoji.owner);
|
|
150
230
|
}
|
|
151
231
|
async createFile(file) {
|
|
152
232
|
await this.db.insertInto("files").values(file).execute();
|
|
@@ -162,27 +242,29 @@ export class Database extends EventEmitter {
|
|
|
162
242
|
return invite;
|
|
163
243
|
}
|
|
164
244
|
async createPermission(userID, resourceType, resourceID, powerLevel) {
|
|
165
|
-
|
|
166
|
-
//
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
245
|
+
// Atomic check-then-insert inside a transaction so two concurrent
|
|
246
|
+
// callers cannot both find "no existing" and insert duplicates.
|
|
247
|
+
return this.db.transaction().execute(async (trx) => {
|
|
248
|
+
const checkPermission = await trx
|
|
249
|
+
.selectFrom("permissions")
|
|
250
|
+
.selectAll()
|
|
251
|
+
.where("userID", "=", userID)
|
|
252
|
+
.where("resourceID", "=", resourceID)
|
|
253
|
+
.execute();
|
|
254
|
+
const existing = checkPermission[0];
|
|
255
|
+
if (existing) {
|
|
256
|
+
return existing;
|
|
257
|
+
}
|
|
258
|
+
const permission = {
|
|
259
|
+
permissionID: crypto.randomUUID(),
|
|
260
|
+
powerLevel,
|
|
261
|
+
resourceID,
|
|
262
|
+
resourceType,
|
|
263
|
+
userID,
|
|
264
|
+
};
|
|
265
|
+
await trx.insertInto("permissions").values(permission).execute();
|
|
266
|
+
return permission;
|
|
267
|
+
});
|
|
186
268
|
}
|
|
187
269
|
async createServer(name, ownerID) {
|
|
188
270
|
// create the server
|
|
@@ -241,6 +323,11 @@ export class Database extends EventEmitter {
|
|
|
241
323
|
.execute();
|
|
242
324
|
}
|
|
243
325
|
async deleteDevice(deviceID) {
|
|
326
|
+
const ownerRow = await this.db
|
|
327
|
+
.selectFrom("devices")
|
|
328
|
+
.select("owner")
|
|
329
|
+
.where("deviceID", "=", deviceID)
|
|
330
|
+
.executeTakeFirst();
|
|
244
331
|
await this.db
|
|
245
332
|
.deleteFrom("preKeys")
|
|
246
333
|
.where("deviceID", "=", deviceID)
|
|
@@ -254,12 +341,19 @@ export class Database extends EventEmitter {
|
|
|
254
341
|
.set({ deleted: 1 })
|
|
255
342
|
.where("deviceID", "=", deviceID)
|
|
256
343
|
.execute();
|
|
344
|
+
if (ownerRow?.owner) {
|
|
345
|
+
this.userDeviceListCache.delete(ownerRow.owner);
|
|
346
|
+
}
|
|
257
347
|
}
|
|
258
348
|
async deleteEmoji(emojiID) {
|
|
349
|
+
const existing = await this.retrieveEmoji(emojiID);
|
|
259
350
|
await this.db
|
|
260
351
|
.deleteFrom("emojis")
|
|
261
352
|
.where("emojiID", "=", emojiID)
|
|
262
353
|
.execute();
|
|
354
|
+
if (existing) {
|
|
355
|
+
this.emojiListByServerCache.delete(existing.owner);
|
|
356
|
+
}
|
|
263
357
|
}
|
|
264
358
|
async deleteInvite(inviteID) {
|
|
265
359
|
await this.db
|
|
@@ -315,30 +409,32 @@ export class Database extends EventEmitter {
|
|
|
315
409
|
return keyBundle;
|
|
316
410
|
}
|
|
317
411
|
async getOTK(deviceID) {
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
412
|
+
// Atomic select-then-delete inside a transaction so two concurrent
|
|
413
|
+
// callers cannot dispense the same one-time key.
|
|
414
|
+
return this.db.transaction().execute(async (trx) => {
|
|
415
|
+
const rows = await trx
|
|
416
|
+
.selectFrom("oneTimeKeys")
|
|
417
|
+
.selectAll()
|
|
418
|
+
.where("deviceID", "=", deviceID)
|
|
419
|
+
.orderBy("index")
|
|
420
|
+
.limit(1)
|
|
421
|
+
.execute();
|
|
422
|
+
const otkInfo = rows[0];
|
|
423
|
+
if (!otkInfo) {
|
|
424
|
+
return null;
|
|
425
|
+
}
|
|
426
|
+
await trx
|
|
427
|
+
.deleteFrom("oneTimeKeys")
|
|
428
|
+
.where("deviceID", "=", deviceID)
|
|
429
|
+
.where("index", "=", otkInfo.index)
|
|
430
|
+
.execute();
|
|
431
|
+
return {
|
|
432
|
+
deviceID: otkInfo.deviceID,
|
|
433
|
+
index: otkInfo.index,
|
|
434
|
+
publicKey: XUtils.decodeHex(otkInfo.publicKey),
|
|
435
|
+
signature: XUtils.decodeHex(otkInfo.signature),
|
|
436
|
+
};
|
|
437
|
+
});
|
|
342
438
|
}
|
|
343
439
|
async getOTKCount(deviceID) {
|
|
344
440
|
const result = await this.db
|
|
@@ -491,12 +587,22 @@ export class Database extends EventEmitter {
|
|
|
491
587
|
.execute();
|
|
492
588
|
return rows[0] ?? null;
|
|
493
589
|
}
|
|
494
|
-
async retrieveEmojiList(
|
|
495
|
-
|
|
590
|
+
async retrieveEmojiList(serverID) {
|
|
591
|
+
const now = Date.now();
|
|
592
|
+
const hit = this.emojiListByServerCache.get(serverID);
|
|
593
|
+
if (hit && hit.until > now) {
|
|
594
|
+
return hit.rows.map((r) => ({ ...r }));
|
|
595
|
+
}
|
|
596
|
+
const rows = await this.db
|
|
496
597
|
.selectFrom("emojis")
|
|
497
598
|
.selectAll()
|
|
498
|
-
.where("owner", "=",
|
|
599
|
+
.where("owner", "=", serverID)
|
|
499
600
|
.execute();
|
|
601
|
+
this.emojiListByServerCache.set(serverID, {
|
|
602
|
+
rows: rows.map((r) => ({ ...r })),
|
|
603
|
+
until: now + Database.EMOJI_LIST_CACHE_TTL_MS,
|
|
604
|
+
});
|
|
605
|
+
return rows.map((r) => ({ ...r }));
|
|
500
606
|
}
|
|
501
607
|
async retrieveFile(fileID) {
|
|
502
608
|
const file = await this.db
|
|
@@ -608,14 +714,25 @@ export class Database extends EventEmitter {
|
|
|
608
714
|
.selectAll()
|
|
609
715
|
.where("serverID", "=", serverID)
|
|
610
716
|
.execute();
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
717
|
+
const nowMs = Date.now();
|
|
718
|
+
const expiredIds = [];
|
|
719
|
+
const valid = [];
|
|
720
|
+
for (const row of rows) {
|
|
721
|
+
const expMs = new Date(row.expiration).getTime();
|
|
722
|
+
if (!Number.isFinite(expMs) || expMs <= nowMs) {
|
|
723
|
+
expiredIds.push(row.inviteID);
|
|
724
|
+
continue;
|
|
616
725
|
}
|
|
617
|
-
|
|
618
|
-
}
|
|
726
|
+
valid.push(row);
|
|
727
|
+
}
|
|
728
|
+
if (expiredIds.length > 0) {
|
|
729
|
+
await this.db
|
|
730
|
+
.deleteFrom("invites")
|
|
731
|
+
.where("serverID", "=", serverID)
|
|
732
|
+
.where("inviteID", "in", expiredIds)
|
|
733
|
+
.execute();
|
|
734
|
+
}
|
|
735
|
+
return valid;
|
|
619
736
|
}
|
|
620
737
|
async retrieveServers(userID) {
|
|
621
738
|
const serverPerms = await this.retrievePermissions(userID, "server");
|
|
@@ -651,13 +768,33 @@ export class Database extends EventEmitter {
|
|
|
651
768
|
return row ? toUserRecord(row) : null;
|
|
652
769
|
}
|
|
653
770
|
async retrieveUserDeviceList(userIDs) {
|
|
771
|
+
const now = Date.now();
|
|
772
|
+
if (userIDs.length === 1) {
|
|
773
|
+
const owner = userIDs[0];
|
|
774
|
+
if (typeof owner === "string") {
|
|
775
|
+
const hit = this.userDeviceListCache.get(owner);
|
|
776
|
+
if (hit && hit.until > now) {
|
|
777
|
+
return hit.devices.map((d) => ({ ...d }));
|
|
778
|
+
}
|
|
779
|
+
}
|
|
780
|
+
}
|
|
654
781
|
const rows = await this.db
|
|
655
782
|
.selectFrom("devices")
|
|
656
783
|
.selectAll()
|
|
657
784
|
.where("owner", "in", userIDs)
|
|
658
785
|
.where("deleted", "=", 0)
|
|
659
786
|
.execute();
|
|
660
|
-
|
|
787
|
+
const devices = rows.map(toDevice);
|
|
788
|
+
if (userIDs.length === 1) {
|
|
789
|
+
const owner = userIDs[0];
|
|
790
|
+
if (typeof owner === "string") {
|
|
791
|
+
this.userDeviceListCache.set(owner, {
|
|
792
|
+
devices: devices.map((d) => ({ ...d })),
|
|
793
|
+
until: now + Database.USER_DEVICE_LIST_CACHE_TTL_MS,
|
|
794
|
+
});
|
|
795
|
+
}
|
|
796
|
+
}
|
|
797
|
+
return devices;
|
|
661
798
|
}
|
|
662
799
|
async retrieveUsers() {
|
|
663
800
|
const rows = await this.db.selectFrom("users").selectAll().execute();
|
package/dist/Database.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Database.js","sourceRoot":"","sources":["../src/Database.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Database.js","sourceRoot":"","sources":["../src/Database.ts"],"names":[],"mappings":"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"}
|