@vex-chat/spire 1.0.0 → 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.
Files changed (66) hide show
  1. package/README.md +38 -38
  2. package/dist/ClientManager.d.ts +1 -3
  3. package/dist/ClientManager.js +7 -50
  4. package/dist/ClientManager.js.map +1 -1
  5. package/dist/Database.d.ts +49 -6
  6. package/dist/Database.js +255 -80
  7. package/dist/Database.js.map +1 -1
  8. package/dist/Spire.d.ts +0 -3
  9. package/dist/Spire.js +116 -81
  10. package/dist/Spire.js.map +1 -1
  11. package/dist/db/schema.d.ts +1 -0
  12. package/dist/migrations/2026-04-14_argon2id-password-hashing.d.ts +3 -0
  13. package/dist/migrations/2026-04-14_argon2id-password-hashing.js +12 -0
  14. package/dist/migrations/2026-04-14_argon2id-password-hashing.js.map +1 -0
  15. package/dist/run.js +0 -1
  16. package/dist/run.js.map +1 -1
  17. package/dist/server/avatar.d.ts +1 -3
  18. package/dist/server/avatar.js +7 -11
  19. package/dist/server/avatar.js.map +1 -1
  20. package/dist/server/errors.d.ts +3 -6
  21. package/dist/server/errors.js +2 -28
  22. package/dist/server/errors.js.map +1 -1
  23. package/dist/server/file.d.ts +1 -2
  24. package/dist/server/file.js +5 -7
  25. package/dist/server/file.js.map +1 -1
  26. package/dist/server/index.d.ts +1 -2
  27. package/dist/server/index.js +35 -33
  28. package/dist/server/index.js.map +1 -1
  29. package/dist/server/invite.d.ts +1 -2
  30. package/dist/server/invite.js +1 -1
  31. package/dist/server/invite.js.map +1 -1
  32. package/dist/server/rateLimit.d.ts +13 -3
  33. package/dist/server/rateLimit.js +57 -6
  34. package/dist/server/rateLimit.js.map +1 -1
  35. package/dist/server/user.d.ts +1 -2
  36. package/dist/server/user.js +10 -8
  37. package/dist/server/user.js.map +1 -1
  38. package/dist/utils/jwtSecret.d.ts +3 -3
  39. package/dist/utils/jwtSecret.js +5 -6
  40. package/dist/utils/jwtSecret.js.map +1 -1
  41. package/dist/utils/loadEnv.js +1 -1
  42. package/dist/utils/loadEnv.js.map +1 -1
  43. package/package.json +17 -8
  44. package/src/ClientManager.ts +7 -60
  45. package/src/Database.ts +308 -89
  46. package/src/Spire.ts +122 -119
  47. package/src/__tests__/Database.spec.ts +0 -17
  48. package/src/db/schema.ts +1 -0
  49. package/src/migrations/2026-04-14_argon2id-password-hashing.ts +18 -0
  50. package/src/run.ts +0 -1
  51. package/src/server/avatar.ts +7 -14
  52. package/src/server/errors.ts +3 -32
  53. package/src/server/file.ts +5 -10
  54. package/src/server/index.ts +37 -37
  55. package/src/server/invite.ts +0 -2
  56. package/src/server/rateLimit.ts +43 -9
  57. package/src/server/user.ts +9 -9
  58. package/src/utils/jwtSecret.ts +5 -6
  59. package/src/utils/loadEnv.ts +1 -1
  60. package/dist/__tests__/Database.spec.d.ts +0 -1
  61. package/dist/__tests__/Database.spec.js +0 -136
  62. package/dist/__tests__/Database.spec.js.map +0 -1
  63. package/dist/utils/createLogger.d.ts +0 -5
  64. package/dist/utils/createLogger.js +0 -35
  65. package/dist/utils/createLogger.js.map +0 -1
  66. package/src/utils/createLogger.ts +0 -47
package/dist/Database.js CHANGED
@@ -8,11 +8,13 @@ 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";
14
- import { xMakeNonce, XUtils } from "@vex-chat/crypto";
15
+ import { XUtils } from "@vex-chat/crypto";
15
16
  import { MailType } from "@vex-chat/types";
17
+ import argon2 from "argon2";
16
18
  /**
17
19
  * Narrow a plain integer from the `mailType` SQL column to the
18
20
  * `MailType` union (0 = initial, 1 = subsequent). Throws if the
@@ -30,7 +32,6 @@ function parseMailType(n) {
30
32
  import BetterSqlite3 from "better-sqlite3";
31
33
  import { Kysely, Migrator, sql, SqliteDialect } from "kysely";
32
34
  import { stringify as uuidStringify, validate as uuidValidate } from "uuid";
33
- import { createLogger } from "./utils/createLogger.js";
34
35
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
35
36
  const migrationFolder = path.join(__dirname, "migrations");
36
37
  /**
@@ -80,16 +81,30 @@ function isMigration(mod) {
80
81
  typeof mod.up === "function");
81
82
  }
82
83
  const pubkeyRegex = /[0-9a-f]{64}/;
83
- export const ITERATIONS = 1000;
84
- // ── Row-to-interface converters ─────────────────────────────────────────
85
- // SQLite stores booleans as integers and dates as strings, but the
86
- // @vex-chat/types interfaces expect boolean / Date.
84
+ /** Legacy iteration count kept only for verifying old PBKDF2 hashes. */
85
+ const PBKDF2_ITERATIONS = 1000;
87
86
  export class Database extends EventEmitter {
88
87
  db;
89
- log;
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;
90
106
  constructor(options) {
91
107
  super();
92
- this.log = createLogger("spire-db", options?.logLevel || "error");
93
108
  const dbType = options?.dbType || "sqlite3";
94
109
  let filename;
95
110
  switch (dbType) {
@@ -104,20 +119,78 @@ export class Database extends EventEmitter {
104
119
  filename = "spire.sqlite";
105
120
  break;
106
121
  }
107
- const sqliteDb = new BetterSqlite3(filename);
108
- sqliteDb.pragma("journal_mode = WAL");
109
- sqliteDb.pragma("synchronous = NORMAL");
110
- sqliteDb.pragma("busy_timeout = 5000");
111
- sqliteDb.pragma("cache_size = -64000");
112
- sqliteDb.pragma("temp_store = memory");
113
- sqliteDb.pragma("foreign_keys = ON");
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");
114
129
  this.db = new Kysely({
115
- dialect: new SqliteDialect({ database: sqliteDb }),
130
+ dialect: new SqliteDialect({ database: this.rawSqlite }),
116
131
  });
117
132
  void this.init();
118
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
+ }
119
191
  async close() {
120
- this.log.info("Closing database.");
192
+ this.userDeviceListCache.clear();
193
+ this.emojiListByServerCache.clear();
121
194
  await this.db.destroy();
122
195
  }
123
196
  async createChannel(name, serverID) {
@@ -139,6 +212,7 @@ export class Database extends EventEmitter {
139
212
  signKey: payload.signKey,
140
213
  };
141
214
  await this.db.insertInto("devices").values(device).execute();
215
+ this.userDeviceListCache.delete(owner);
142
216
  const medPreKeys = {
143
217
  deviceID: device.deviceID,
144
218
  index: payload.preKeyIndex,
@@ -152,6 +226,7 @@ export class Database extends EventEmitter {
152
226
  }
153
227
  async createEmoji(emoji) {
154
228
  await this.db.insertInto("emojis").values(emoji).execute();
229
+ this.emojiListByServerCache.delete(emoji.owner);
155
230
  }
156
231
  async createFile(file) {
157
232
  await this.db.insertInto("files").values(file).execute();
@@ -167,27 +242,29 @@ export class Database extends EventEmitter {
167
242
  return invite;
168
243
  }
169
244
  async createPermission(userID, resourceType, resourceID, powerLevel) {
170
- const permissionID = crypto.randomUUID();
171
- // check if it already exists
172
- const checkPermission = await this.db
173
- .selectFrom("permissions")
174
- .selectAll()
175
- .where("userID", "=", userID)
176
- .where("resourceID", "=", resourceID)
177
- .execute();
178
- const existing = checkPermission[0];
179
- if (existing) {
180
- return existing;
181
- }
182
- const permission = {
183
- permissionID,
184
- powerLevel,
185
- resourceID,
186
- resourceType,
187
- userID,
188
- };
189
- await this.db.insertInto("permissions").values(permission).execute();
190
- return permission;
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
+ });
191
268
  }
192
269
  async createServer(name, ownerID) {
193
270
  // create the server
@@ -211,12 +288,11 @@ export class Database extends EventEmitter {
211
288
  }
212
289
  async createUser(regKey, regPayload) {
213
290
  try {
214
- const salt = xMakeNonce();
215
- const passwordHash = hashPassword(regPayload.password, salt);
291
+ const passwordHash = await hashPasswordArgon2(regPayload.password);
216
292
  const user = {
217
293
  lastSeen: new Date().toISOString(),
218
- passwordHash: passwordHash.toString("hex"),
219
- passwordSalt: XUtils.encodeHex(salt),
294
+ passwordHash,
295
+ passwordSalt: "",
220
296
  userID: uuidStringify(regKey),
221
297
  username: regPayload.username,
222
298
  };
@@ -224,6 +300,7 @@ export class Database extends EventEmitter {
224
300
  .insertInto("users")
225
301
  .values({
226
302
  ...user,
303
+ hashAlgo: "argon2id",
227
304
  lastSeen: user.lastSeen,
228
305
  })
229
306
  .execute();
@@ -246,6 +323,11 @@ export class Database extends EventEmitter {
246
323
  .execute();
247
324
  }
248
325
  async deleteDevice(deviceID) {
326
+ const ownerRow = await this.db
327
+ .selectFrom("devices")
328
+ .select("owner")
329
+ .where("deviceID", "=", deviceID)
330
+ .executeTakeFirst();
249
331
  await this.db
250
332
  .deleteFrom("preKeys")
251
333
  .where("deviceID", "=", deviceID)
@@ -259,12 +341,19 @@ export class Database extends EventEmitter {
259
341
  .set({ deleted: 1 })
260
342
  .where("deviceID", "=", deviceID)
261
343
  .execute();
344
+ if (ownerRow?.owner) {
345
+ this.userDeviceListCache.delete(ownerRow.owner);
346
+ }
262
347
  }
263
348
  async deleteEmoji(emojiID) {
349
+ const existing = await this.retrieveEmoji(emojiID);
264
350
  await this.db
265
351
  .deleteFrom("emojis")
266
352
  .where("emojiID", "=", emojiID)
267
353
  .execute();
354
+ if (existing) {
355
+ this.emojiListByServerCache.delete(existing.owner);
356
+ }
268
357
  }
269
358
  async deleteInvite(inviteID) {
270
359
  await this.db
@@ -320,30 +409,32 @@ export class Database extends EventEmitter {
320
409
  return keyBundle;
321
410
  }
322
411
  async getOTK(deviceID) {
323
- const rows = await this.db
324
- .selectFrom("oneTimeKeys")
325
- .selectAll()
326
- .where("deviceID", "=", deviceID)
327
- .orderBy("index")
328
- .limit(1)
329
- .execute();
330
- const otkInfo = rows[0];
331
- if (!otkInfo) {
332
- return null;
333
- }
334
- const otk = {
335
- deviceID: otkInfo.deviceID,
336
- index: otkInfo.index,
337
- publicKey: XUtils.decodeHex(otkInfo.publicKey),
338
- signature: XUtils.decodeHex(otkInfo.signature),
339
- };
340
- // delete the otk
341
- await this.db
342
- .deleteFrom("oneTimeKeys")
343
- .where("deviceID", "=", deviceID)
344
- .where("index", "=", otk.index)
345
- .execute();
346
- return otk;
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
+ });
347
438
  }
348
439
  async getOTKCount(deviceID) {
349
440
  const result = await this.db
@@ -401,8 +492,8 @@ export class Database extends EventEmitter {
401
492
  await sql `select 1 as ok`.execute(this.db);
402
493
  return true;
403
494
  }
404
- catch (err) {
405
- this.log.warn("Database health check failed: " + String(err));
495
+ catch (_err) {
496
+ // debugger: health check failed
406
497
  return false;
407
498
  }
408
499
  }
@@ -420,6 +511,17 @@ export class Database extends EventEmitter {
420
511
  .where("userID", "=", user.userID)
421
512
  .execute();
422
513
  }
514
+ async rehashPassword(userID, newHash) {
515
+ await this.db
516
+ .updateTable("users")
517
+ .set({
518
+ hashAlgo: "argon2id",
519
+ passwordHash: newHash,
520
+ passwordSalt: "",
521
+ })
522
+ .where("userID", "=", userID)
523
+ .execute();
524
+ }
423
525
  /**
424
526
  * Retrives a list of users that should be notified when a specific resourceID
425
527
  * experiences changes.
@@ -485,12 +587,22 @@ export class Database extends EventEmitter {
485
587
  .execute();
486
588
  return rows[0] ?? null;
487
589
  }
488
- async retrieveEmojiList(userID) {
489
- return this.db
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
490
597
  .selectFrom("emojis")
491
598
  .selectAll()
492
- .where("owner", "=", userID)
599
+ .where("owner", "=", serverID)
493
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 }));
494
606
  }
495
607
  async retrieveFile(fileID) {
496
608
  const file = await this.db
@@ -602,14 +714,25 @@ export class Database extends EventEmitter {
602
714
  .selectAll()
603
715
  .where("serverID", "=", serverID)
604
716
  .execute();
605
- return rows.filter((invite) => {
606
- const valid = new Date(Date.now()).getTime() <
607
- new Date(invite.expiration).getTime();
608
- if (!valid) {
609
- void this.deleteInvite(invite.inviteID);
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;
610
725
  }
611
- return valid;
612
- });
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;
613
736
  }
614
737
  async retrieveServers(userID) {
615
738
  const serverPerms = await this.retrievePermissions(userID, "server");
@@ -645,13 +768,33 @@ export class Database extends EventEmitter {
645
768
  return row ? toUserRecord(row) : null;
646
769
  }
647
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
+ }
648
781
  const rows = await this.db
649
782
  .selectFrom("devices")
650
783
  .selectAll()
651
784
  .where("owner", "in", userIDs)
652
785
  .where("deleted", "=", 0)
653
786
  .execute();
654
- return rows.map(toDevice);
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;
655
798
  }
656
799
  async retrieveUsers() {
657
800
  const rows = await this.db.selectFrom("users").selectAll().execute();
@@ -708,6 +851,39 @@ export class Database extends EventEmitter {
708
851
  this.emit("ready");
709
852
  }
710
853
  }
854
+ /**
855
+ * Hash a password with Argon2id (new default).
856
+ * Returns the encoded hash string which embeds salt, params, and digest.
857
+ */
858
+ export async function hashPasswordArgon2(password) {
859
+ return argon2.hash(password, {
860
+ memoryCost: 65536,
861
+ parallelism: 4,
862
+ timeCost: 3,
863
+ type: argon2.argon2id,
864
+ });
865
+ }
866
+ /**
867
+ * Verify a password against either Argon2id or legacy PBKDF2 storage.
868
+ * Returns `{ valid, needsRehash }` — callers should rehash on success
869
+ * when `needsRehash` is true.
870
+ */
871
+ export async function verifyPassword(password, stored) {
872
+ if (stored.hashAlgo === "argon2id") {
873
+ const valid = await argon2.verify(stored.passwordHash, password);
874
+ return { needsRehash: false, valid };
875
+ }
876
+ // Legacy PBKDF2 path
877
+ const salt = XUtils.decodeHex(stored.passwordSalt);
878
+ const computed = pbkdf2Sync(password, salt, PBKDF2_ITERATIONS, 32, "sha512");
879
+ const storedBuf = XUtils.decodeHex(stored.passwordHash);
880
+ if (computed.length !== storedBuf.length) {
881
+ return { needsRehash: false, valid: false };
882
+ }
883
+ const { timingSafeEqual } = await import("node:crypto");
884
+ const valid = timingSafeEqual(computed, storedBuf);
885
+ return { needsRehash: valid, valid };
886
+ }
711
887
  function toDevice(row) {
712
888
  return { ...row, deleted: Boolean(row.deleted) };
713
889
  }
@@ -730,5 +906,4 @@ function toServer(row) {
730
906
  function toUserRecord(row) {
731
907
  return { ...row };
732
908
  }
733
- export const hashPassword = (password, salt) => pbkdf2Sync(password, salt, ITERATIONS, 32, "sha512");
734
909
  //# sourceMappingURL=Database.js.map
@@ -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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"}
package/dist/Spire.d.ts CHANGED
@@ -5,7 +5,6 @@ export declare const DEVICE_AUTH_JWT_EXPIRY = "1h";
5
5
  export interface SpireOptions {
6
6
  apiPort?: number;
7
7
  dbType?: "mysql" | "sqlite3" | "sqlite3mem" | "sqlite";
8
- logLevel?: "debug" | "error" | "http" | "info" | "silly" | "verbose" | "warn";
9
8
  }
10
9
  export declare class Spire extends EventEmitter {
11
10
  private actionTokens;
@@ -15,8 +14,6 @@ export declare class Spire extends EventEmitter {
15
14
  private db;
16
15
  private dbReady;
17
16
  private deviceChallenges;
18
- private log;
19
- private options;
20
17
  private queuedRequestIncrements;
21
18
  private requestsTotal;
22
19
  private requestsTotalLoaded;