@meshwhisper/node 0.1.0 → 0.1.1

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/index.js CHANGED
@@ -21,12 +21,18 @@
21
21
  // The webhook is responsible for sending the actual APNs/FCM notification.
22
22
  // The Node only sends a silent wake signal — no message content is included.
23
23
  //
24
+ // Persistence:
25
+ // Data is stored in a SQLite database (default: ./meshwhisper.db).
26
+ // Set DB_PATH to change the location. For Docker, mount a volume at /data
27
+ // and set DB_PATH=/data/meshwhisper.db so data survives container restarts.
28
+ //
24
29
  // Self-hosted: one Docker container, one VPS, everything included.
25
30
  // Foundation-hosted: same binary, run by the Foundation as public infra.
26
31
  // ============================================================
27
32
  import * as http from 'node:http';
28
33
  import * as https from 'node:https';
29
34
  import { WebSocketServer, WebSocket } from 'ws';
35
+ import Database from 'better-sqlite3';
30
36
  // ============================================================
31
37
  // Configuration
32
38
  // ============================================================
@@ -38,6 +44,7 @@ const MEDIA_TTL_HOURS = parseInt(process.env.MEDIA_TTL_HOURS ?? String(7 * 24),
38
44
  const MAX_MEDIA_SIZE = parseInt(process.env.MAX_MEDIA_SIZE ?? String(50 * 1024 * 1024), 10); // 50 MB
39
45
  const PRUNE_INTERVAL_MS = 5 * 60 * 1000; // prune expired blobs every 5 minutes
40
46
  const PUSH_WEBHOOK_URL = process.env.PUSH_WEBHOOK_URL ?? null;
47
+ const DB_PATH = process.env.DB_PATH ?? './meshwhisper.db';
41
48
  // Rate limiting (per IP, sliding window)
42
49
  const RATE_WINDOW_MS = 60_000; // 1 minute window
43
50
  const RATE_LIMIT_MEDIA = parseInt(process.env.RATE_LIMIT_MEDIA ?? '20', 10); // uploads/min
@@ -47,6 +54,75 @@ const RATE_LIMIT_DIR = parseInt(process.env.RATE_LIMIT_DIR ?? '60', 10); // regi
47
54
  * Example: BASE_URL=https://msg.myapp.com
48
55
  * If unset, the URL is inferred from the Host header (works for local dev). */
49
56
  const BASE_URL = (process.env.BASE_URL ?? '').replace(/\/$/, '');
57
+ // ============================================================
58
+ // SQLite database setup
59
+ // ============================================================
60
+ const db = new Database(DB_PATH);
61
+ // Enable WAL mode for better concurrent read performance
62
+ db.pragma('journal_mode = WAL');
63
+ db.pragma('foreign_keys = ON');
64
+ db.exec(`
65
+ CREATE TABLE IF NOT EXISTS blobs (
66
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
67
+ dest_hash TEXT NOT NULL,
68
+ data BLOB NOT NULL,
69
+ received_at INTEGER NOT NULL
70
+ );
71
+ CREATE INDEX IF NOT EXISTS blobs_dest_hash ON blobs (dest_hash);
72
+
73
+ CREATE TABLE IF NOT EXISTS push_registrations (
74
+ dest_hash TEXT PRIMARY KEY,
75
+ token TEXT NOT NULL,
76
+ platform TEXT NOT NULL,
77
+ topic TEXT,
78
+ push_subscription TEXT
79
+ );
80
+
81
+ CREATE TABLE IF NOT EXISTS prekey_bundles (
82
+ key TEXT PRIMARY KEY,
83
+ bundle TEXT NOT NULL
84
+ );
85
+
86
+ CREATE TABLE IF NOT EXISTS media (
87
+ id TEXT PRIMARY KEY,
88
+ data BLOB NOT NULL,
89
+ stored_at INTEGER NOT NULL
90
+ );
91
+ `);
92
+ // Prepared statements
93
+ const stmts = {
94
+ // blobs
95
+ insertBlob: db.prepare('INSERT INTO blobs (dest_hash, data, received_at) VALUES (?, ?, ?)'),
96
+ countBlobsForHash: db.prepare('SELECT COUNT(*) AS cnt FROM blobs WHERE dest_hash = ?'),
97
+ oldestBlobIdForHash: db.prepare('SELECT id FROM blobs WHERE dest_hash = ? ORDER BY id ASC LIMIT 1'),
98
+ deleteBlob: db.prepare('DELETE FROM blobs WHERE id = ?'),
99
+ pullBlobs: db.prepare('SELECT id, data FROM blobs WHERE dest_hash = ? ORDER BY id ASC'),
100
+ deleteBlobsByHash: db.prepare('DELETE FROM blobs WHERE dest_hash = ?'),
101
+ pruneBlobs: db.prepare('DELETE FROM blobs WHERE received_at < ?'),
102
+ countBlobs: db.prepare('SELECT COUNT(*) AS cnt FROM blobs'),
103
+ // push registrations
104
+ upsertPush: db.prepare(`INSERT INTO push_registrations (dest_hash, token, platform, topic, push_subscription)
105
+ VALUES (?, ?, ?, ?, ?)
106
+ ON CONFLICT(dest_hash) DO UPDATE SET
107
+ token = excluded.token,
108
+ platform = excluded.platform,
109
+ topic = excluded.topic,
110
+ push_subscription = excluded.push_subscription`),
111
+ getPush: db.prepare('SELECT token, platform, topic, push_subscription FROM push_registrations WHERE dest_hash = ?'),
112
+ deletePush: db.prepare('DELETE FROM push_registrations WHERE dest_hash = ?'),
113
+ countPush: db.prepare('SELECT COUNT(*) AS cnt FROM push_registrations'),
114
+ // prekey bundles
115
+ upsertPrekey: db.prepare(`INSERT INTO prekey_bundles (key, bundle) VALUES (?, ?)
116
+ ON CONFLICT(key) DO UPDATE SET bundle = excluded.bundle`),
117
+ getPrekey: db.prepare('SELECT bundle FROM prekey_bundles WHERE key = ?'),
118
+ countPrekeys: db.prepare('SELECT COUNT(*) AS cnt FROM prekey_bundles'),
119
+ // media
120
+ insertMedia: db.prepare('INSERT INTO media (id, data, stored_at) VALUES (?, ?, ?)'),
121
+ getMedia: db.prepare('SELECT data, stored_at FROM media WHERE id = ?'),
122
+ deleteMedia: db.prepare('DELETE FROM media WHERE id = ?'),
123
+ pruneMedia: db.prepare('DELETE FROM media WHERE stored_at < ?'),
124
+ countMedia: db.prepare('SELECT COUNT(*) AS cnt FROM media'),
125
+ };
50
126
  const rateLimitState = new Map();
51
127
  /** Returns true if the request is within limits, false if it should be rejected. */
52
128
  function checkRateLimit(ip, bucket, maxPerWindow) {
@@ -69,7 +145,6 @@ function getClientIp(req) {
69
145
  return forwarded.split(',')[0].trim();
70
146
  return req.socket.remoteAddress ?? 'unknown';
71
147
  }
72
- // Prune stale rate limit entries alongside blobs
73
148
  function pruneRateLimitState() {
74
149
  const cutoff = Date.now() - RATE_WINDOW_MS;
75
150
  for (const [key, entry] of rateLimitState.entries()) {
@@ -98,53 +173,45 @@ function readDestHash(buf) {
98
173
  const bytes = buf.subarray(DEST_HASH_OFFSET, DEST_HASH_OFFSET + DEST_HASH_LENGTH);
99
174
  return Buffer.from(bytes).toString('hex');
100
175
  }
101
- /** Map from destHash (hex) → list of queued blobs. */
102
- const blobStore = new Map();
176
+ // ============================================================
177
+ // Blob store SQLite-backed, TTL-based
178
+ // ============================================================
103
179
  function storeBlob(destHash, data) {
104
- let queue = blobStore.get(destHash);
105
- if (!queue) {
106
- queue = [];
107
- blobStore.set(destHash, queue);
180
+ // Enforce per-hash cap: drop oldest if full
181
+ const row = stmts.countBlobsForHash.get(destHash);
182
+ if (row.cnt >= MAX_BLOBS_PER_HASH) {
183
+ const oldest = stmts.oldestBlobIdForHash.get(destHash);
184
+ if (oldest)
185
+ stmts.deleteBlob.run(oldest.id);
108
186
  }
109
- if (queue.length >= MAX_BLOBS_PER_HASH) {
110
- queue.shift(); // drop oldest when full
111
- }
112
- queue.push({ data, receivedAt: Date.now() });
187
+ stmts.insertBlob.run(destHash, Buffer.from(data), Date.now());
113
188
  }
114
189
  function pullBlobs(destHash) {
115
- const queue = blobStore.get(destHash);
116
- if (!queue || queue.length === 0)
190
+ const rows = stmts.pullBlobs.all(destHash);
191
+ if (rows.length === 0)
117
192
  return [];
118
- blobStore.delete(destHash);
119
- return queue.map((b) => b.data);
193
+ stmts.deleteBlobsByHash.run(destHash);
194
+ return rows.map((r) => new Uint8Array(r.data));
120
195
  }
121
196
  function pruneExpiredBlobs() {
122
197
  const cutoff = Date.now() - BLOB_TTL_HOURS * 60 * 60 * 1000;
123
- for (const [hash, queue] of blobStore.entries()) {
124
- const fresh = queue.filter((b) => b.receivedAt > cutoff);
125
- if (fresh.length === 0) {
126
- blobStore.delete(hash);
127
- // Also expire the push token for this dest hash — if no blobs have
128
- // arrived within the blob TTL window, the device has likely rotated
129
- // its dest hashes and the token is stale.
130
- pushTokens.delete(hash);
131
- }
132
- else {
133
- blobStore.set(hash, fresh);
134
- }
135
- }
198
+ stmts.pruneBlobs.run(cutoff);
136
199
  }
137
- /** Map from destHash (hex) → push registration for offline wake signals. */
138
- const pushTokens = new Map();
139
200
  function registerPushTokens(destHashes, reg) {
140
201
  for (const hash of destHashes) {
141
- pushTokens.set(hash, reg);
202
+ stmts.upsertPush.run(hash, reg.token, reg.platform, reg.topic ?? null, reg.pushSubscription ?? null);
142
203
  }
143
204
  }
144
- function deregisterPushTokens(destHashes) {
145
- for (const hash of destHashes) {
146
- pushTokens.delete(hash);
147
- }
205
+ function getPushRegistration(destHash) {
206
+ const row = stmts.getPush.get(destHash);
207
+ if (!row)
208
+ return null;
209
+ return {
210
+ token: row.token,
211
+ platform: row.platform,
212
+ ...(row.topic ? { topic: row.topic } : {}),
213
+ ...(row.push_subscription ? { pushSubscription: row.push_subscription } : {}),
214
+ };
148
215
  }
149
216
  /**
150
217
  * Fire-and-forget POST to the configured push webhook.
@@ -180,21 +247,21 @@ function notifyPush(destHash, reg) {
180
247
  }
181
248
  }
182
249
  // ============================================================
183
- // Prekey directory — in-memory, namespace-scoped
250
+ // Prekey directory — SQLite-backed, namespace-scoped
184
251
  // ============================================================
185
- /** Map from `${namespace}:${publicKeyHex}` → serialized bundle (base64). */
186
- const prekeyDirectory = new Map();
187
252
  function directoryKey(namespace, publicKey) {
188
253
  return `${namespace}:${publicKey}`;
189
254
  }
190
255
  function registerPrekey(namespace, publicKey, bundle) {
191
- prekeyDirectory.set(directoryKey(namespace, publicKey), bundle);
256
+ stmts.upsertPrekey.run(directoryKey(namespace, publicKey), bundle);
192
257
  }
193
258
  function lookupPrekey(namespace, publicKey) {
194
- return prekeyDirectory.get(directoryKey(namespace, publicKey)) ?? null;
259
+ const row = stmts.getPrekey.get(directoryKey(namespace, publicKey));
260
+ return row?.bundle ?? null;
195
261
  }
196
- /** Map from random media ID (hex) → encrypted media blob. */
197
- const mediaStore = new Map();
262
+ // ============================================================
263
+ // Media store SQLite-backed, TTL-based encrypted blob storage
264
+ // ============================================================
198
265
  function generateMediaId() {
199
266
  const bytes = new Uint8Array(16);
200
267
  globalThis.crypto.getRandomValues(bytes);
@@ -203,36 +270,33 @@ function generateMediaId() {
203
270
  function storeMedia(data) {
204
271
  const id = generateMediaId();
205
272
  const storedAt = Date.now();
206
- mediaStore.set(id, { data, storedAt });
273
+ stmts.insertMedia.run(id, data, storedAt);
207
274
  return { id, expiresAt: storedAt + MEDIA_TTL_HOURS * 60 * 60 * 1000 };
208
275
  }
209
276
  function fetchMedia(id) {
210
- const entry = mediaStore.get(id);
211
- if (!entry)
277
+ const row = stmts.getMedia.get(id);
278
+ if (!row)
212
279
  return null;
213
- const expiresAt = entry.storedAt + MEDIA_TTL_HOURS * 60 * 60 * 1000;
280
+ const expiresAt = row.stored_at + MEDIA_TTL_HOURS * 60 * 60 * 1000;
214
281
  if (Date.now() > expiresAt) {
215
- mediaStore.delete(id);
282
+ stmts.deleteMedia.run(id);
216
283
  return null;
217
284
  }
218
- return entry.data;
285
+ return row.data;
219
286
  }
220
287
  function pruneExpiredMedia() {
221
288
  const cutoff = Date.now() - MEDIA_TTL_HOURS * 60 * 60 * 1000;
222
- for (const [id, entry] of mediaStore.entries()) {
223
- if (entry.storedAt < cutoff)
224
- mediaStore.delete(id);
225
- }
289
+ stmts.pruneMedia.run(cutoff);
226
290
  }
227
291
  // ============================================================
228
292
  // Connected clients — map from destHash (hex) → WebSocket
293
+ // (connection state is ephemeral by nature, always in-memory)
229
294
  // ============================================================
230
295
  /** A client may register multiple dest hashes (current + previous epoch). */
231
296
  const clientsByHash = new Map();
232
297
  /** Reverse map so we can clean up on disconnect. */
233
298
  const hashesPerClient = new Map();
234
299
  function registerClient(ws, destHashes) {
235
- // Remove any previous registrations for this socket
236
300
  const existing = hashesPerClient.get(ws);
237
301
  if (existing) {
238
302
  for (const h of existing)
@@ -250,9 +314,8 @@ function deregisterClient(ws) {
250
314
  if (hashes) {
251
315
  for (const h of hashes)
252
316
  clientsByHash.delete(h);
253
- // Push tokens are intentionally kept after disconnect — they are needed
254
- // to wake the device when it is offline. They expire naturally alongside
255
- // the blobs in the prune cycle.
317
+ // Push registrations are intentionally kept after disconnect — they are
318
+ // needed to wake the device when it is offline.
256
319
  hashesPerClient.delete(ws);
257
320
  }
258
321
  }
@@ -284,7 +347,7 @@ function handleRelayPacket(data, sender) {
284
347
  // Recipient offline (or same socket) — store for later delivery
285
348
  storeBlob(destHash, data);
286
349
  // Wake the recipient via push if they have a registered token
287
- const pushReg = pushTokens.get(destHash);
350
+ const pushReg = getPushRegistration(destHash);
288
351
  if (pushReg)
289
352
  notifyPush(destHash, pushReg);
290
353
  }
@@ -308,23 +371,20 @@ function handleWebSocketConnection(ws) {
308
371
  if (msg.type === 'hello' && Array.isArray(msg.destHashes)) {
309
372
  const hashes = msg.destHashes.filter((h) => typeof h === 'string' && /^[0-9a-f]{16}$/.test(h));
310
373
  registerClient(ws, hashes);
311
- // Register push token/subscription if provided
312
374
  if (msg.pushPlatform === 'webpush' && typeof msg.pushSubscription === 'string') {
313
- const reg = {
314
- token: msg.pushSubscription, // subscription JSON stored in token field
375
+ registerPushTokens(hashes, {
376
+ token: msg.pushSubscription,
315
377
  platform: 'webpush',
316
378
  pushSubscription: msg.pushSubscription,
317
- };
318
- registerPushTokens(hashes, reg);
379
+ });
319
380
  }
320
381
  else if (typeof msg.pushToken === 'string' && msg.pushToken &&
321
382
  (msg.pushPlatform === 'apns' || msg.pushPlatform === 'fcm')) {
322
- const reg = {
383
+ registerPushTokens(hashes, {
323
384
  token: msg.pushToken,
324
385
  platform: msg.pushPlatform,
325
386
  ...(typeof msg.pushTopic === 'string' && msg.pushTopic ? { topic: msg.pushTopic } : {}),
326
- };
327
- registerPushTokens(hashes, reg);
387
+ });
328
388
  }
329
389
  deliverQueuedBlobs(ws, hashes);
330
390
  return;
@@ -340,12 +400,8 @@ function handleWebSocketConnection(ws) {
340
400
  // Not JSON or malformed — ignore
341
401
  }
342
402
  });
343
- ws.on('close', () => {
344
- deregisterClient(ws);
345
- });
346
- ws.on('error', () => {
347
- deregisterClient(ws);
348
- });
403
+ ws.on('close', () => deregisterClient(ws));
404
+ ws.on('error', () => deregisterClient(ws));
349
405
  }
350
406
  // ============================================================
351
407
  // HTTP handler — health check and prekey directory
@@ -385,10 +441,10 @@ async function handleHttp(req, res) {
385
441
  sendJson(res, 200, {
386
442
  status: 'ok',
387
443
  clients: clientsByHash.size,
388
- storedBlobs: [...blobStore.values()].reduce((n, q) => n + q.length, 0),
389
- prekeyEntries: prekeyDirectory.size,
390
- pushRegistrations: pushTokens.size,
391
- mediaEntries: mediaStore.size,
444
+ storedBlobs: stmts.countBlobs.get().cnt,
445
+ prekeyEntries: stmts.countPrekeys.get().cnt,
446
+ pushRegistrations: stmts.countPush.get().cnt,
447
+ mediaEntries: stmts.countMedia.get().cnt,
392
448
  });
393
449
  return;
394
450
  }
@@ -519,13 +575,14 @@ const pruneInterval = setInterval(() => {
519
575
  pruneExpiredMedia();
520
576
  pruneRateLimitState();
521
577
  }, PRUNE_INTERVAL_MS);
522
- pruneInterval.unref(); // don't keep process alive for pruning alone
578
+ pruneInterval.unref();
523
579
  httpServer.listen(PORT, () => {
524
580
  console.log(`MeshWhisper Node listening on port ${PORT}`);
525
581
  console.log(` Relay: ws://localhost:${PORT}`);
526
582
  console.log(` Directory: http://localhost:${PORT}/directory`);
527
583
  console.log(` Media: http://localhost:${PORT}/media`);
528
584
  console.log(` Health: http://localhost:${PORT}/health`);
585
+ console.log(` Database: ${DB_PATH}`);
529
586
  console.log(` Blob TTL: ${BLOB_TTL_HOURS}h`);
530
587
  console.log(` Media TTL: ${MEDIA_TTL_HOURS}h (max ${MAX_MEDIA_SIZE / (1024 * 1024)}MB per file)`);
531
588
  console.log(` Base URL: ${BASE_URL || '(inferred from Host header — set BASE_URL in production)'}`);
@@ -539,8 +596,14 @@ function shutdown() {
539
596
  clearInterval(pruneInterval);
540
597
  wss.clients.forEach((ws) => ws.close(1001, 'Node shutting down'));
541
598
  wss.close();
542
- httpServer.close(() => process.exit(0));
543
- setTimeout(() => process.exit(1), 3000).unref();
599
+ httpServer.close(() => {
600
+ db.close();
601
+ process.exit(0);
602
+ });
603
+ setTimeout(() => {
604
+ db.close();
605
+ process.exit(1);
606
+ }, 3000).unref();
544
607
  }
545
608
  process.on('SIGINT', shutdown);
546
609
  process.on('SIGTERM', shutdown);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,14 +1,18 @@
1
1
  {
2
2
  "name": "@meshwhisper/node",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "MeshWhisper Node — relay, push forwarding, media storage, and prekey directory in a single binary",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "bin": {
8
8
  "meshwhisper-node": "dist/index.js"
9
9
  },
10
- "files": ["dist"],
11
- "publishConfig": { "access": "public" },
10
+ "files": [
11
+ "dist"
12
+ ],
13
+ "publishConfig": {
14
+ "access": "public"
15
+ },
12
16
  "scripts": {
13
17
  "prepublishOnly": "npm run build",
14
18
  "build": "tsc",
@@ -16,9 +20,11 @@
16
20
  "dev": "tsx src/index.ts"
17
21
  },
18
22
  "dependencies": {
23
+ "better-sqlite3": "^12.8.0",
19
24
  "ws": "^8.18.0"
20
25
  },
21
26
  "devDependencies": {
27
+ "@types/better-sqlite3": "^7.6.13",
22
28
  "@types/node": "^22.0.0",
23
29
  "@types/ws": "^8.5.0",
24
30
  "tsx": "^4.21.0",