@routstr/sdk 0.2.4 → 0.2.5
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 +9 -0
- package/dist/client/index.d.mts +21 -8
- package/dist/client/index.d.ts +21 -8
- package/dist/client/index.js +1379 -54
- package/dist/client/index.js.map +1 -1
- package/dist/client/index.mjs +1379 -55
- package/dist/client/index.mjs.map +1 -1
- package/dist/discovery/index.d.mts +2 -2
- package/dist/discovery/index.d.ts +2 -2
- package/dist/discovery/index.js +1 -4
- package/dist/discovery/index.js.map +1 -1
- package/dist/discovery/index.mjs +1 -4
- package/dist/discovery/index.mjs.map +1 -1
- package/dist/index.d.mts +15 -19
- package/dist/index.d.ts +15 -19
- package/dist/index.js +2671 -1872
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2666 -1873
- package/dist/index.mjs.map +1 -1
- package/dist/{interfaces-DGdP8fQp.d.mts → interfaces-BWJJTCXO.d.mts} +1 -1
- package/dist/{interfaces-CC0LT9p9.d.ts → interfaces-BxDEka72.d.ts} +1 -1
- package/dist/{interfaces-B85Wx7ni.d.mts → interfaces-C6Dr6hKy.d.mts} +1 -1
- package/dist/{interfaces-BVNyAmKu.d.ts → interfaces-CluftN4z.d.ts} +1 -1
- package/dist/storage/index.d.mts +56 -34
- package/dist/storage/index.d.ts +56 -34
- package/dist/storage/index.js +500 -51
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/index.mjs +497 -52
- package/dist/storage/index.mjs.map +1 -1
- package/dist/{types-BlHjmWRK.d.mts → types-BYj_8c5c.d.mts} +3 -0
- package/dist/{types-BlHjmWRK.d.ts → types-BYj_8c5c.d.ts} +3 -0
- package/dist/wallet/index.d.mts +9 -5
- package/dist/wallet/index.d.ts +9 -5
- package/dist/wallet/index.js +27 -7
- package/dist/wallet/index.js.map +1 -1
- package/dist/wallet/index.mjs +27 -7
- package/dist/wallet/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/storage/index.mjs
CHANGED
|
@@ -298,8 +298,439 @@ var SDK_STORAGE_KEYS = {
|
|
|
298
298
|
CLIENT_IDS: "client_ids"
|
|
299
299
|
};
|
|
300
300
|
|
|
301
|
-
// storage/
|
|
301
|
+
// storage/usageTracking/indexedDB.ts
|
|
302
|
+
var DEFAULT_DB_NAME = "routstr-sdk";
|
|
303
|
+
var DEFAULT_STORE_NAME = "usage_tracking";
|
|
304
|
+
var MIGRATION_MARKER_KEY = "usage_tracking_migration_v1";
|
|
305
|
+
var isBrowser2 = typeof indexedDB !== "undefined";
|
|
302
306
|
var normalizeBaseUrl = (baseUrl) => baseUrl.endsWith("/") ? baseUrl : `${baseUrl}/`;
|
|
307
|
+
var openDatabase2 = (dbName, storeName) => {
|
|
308
|
+
if (!isBrowser2) {
|
|
309
|
+
return Promise.reject(new Error("IndexedDB is not available"));
|
|
310
|
+
}
|
|
311
|
+
return new Promise((resolve, reject) => {
|
|
312
|
+
const request = indexedDB.open(dbName, 1);
|
|
313
|
+
request.onupgradeneeded = () => {
|
|
314
|
+
const db = request.result;
|
|
315
|
+
if (!db.objectStoreNames.contains(storeName)) {
|
|
316
|
+
const store = db.createObjectStore(storeName, { keyPath: "id" });
|
|
317
|
+
store.createIndex("timestamp", "timestamp", { unique: false });
|
|
318
|
+
store.createIndex("modelId", "modelId", { unique: false });
|
|
319
|
+
store.createIndex("baseUrl", "baseUrl", { unique: false });
|
|
320
|
+
store.createIndex("sessionId", "sessionId", { unique: false });
|
|
321
|
+
store.createIndex("client", "client", { unique: false });
|
|
322
|
+
}
|
|
323
|
+
};
|
|
324
|
+
request.onsuccess = () => resolve(request.result);
|
|
325
|
+
request.onerror = () => reject(request.error);
|
|
326
|
+
});
|
|
327
|
+
};
|
|
328
|
+
var matchesFilters = (entry, options = {}) => {
|
|
329
|
+
if (typeof options.before === "number" && entry.timestamp >= options.before) {
|
|
330
|
+
return false;
|
|
331
|
+
}
|
|
332
|
+
if (typeof options.after === "number" && entry.timestamp <= options.after) {
|
|
333
|
+
return false;
|
|
334
|
+
}
|
|
335
|
+
if (options.modelId && entry.modelId !== options.modelId) {
|
|
336
|
+
return false;
|
|
337
|
+
}
|
|
338
|
+
if (options.baseUrl && normalizeBaseUrl(entry.baseUrl) !== normalizeBaseUrl(options.baseUrl)) {
|
|
339
|
+
return false;
|
|
340
|
+
}
|
|
341
|
+
if (options.sessionId && entry.sessionId !== options.sessionId) {
|
|
342
|
+
return false;
|
|
343
|
+
}
|
|
344
|
+
if (options.client && entry.client !== options.client) {
|
|
345
|
+
return false;
|
|
346
|
+
}
|
|
347
|
+
return true;
|
|
348
|
+
};
|
|
349
|
+
var createIndexedDBUsageTrackingDriver = (options = {}) => {
|
|
350
|
+
const dbName = options.dbName || DEFAULT_DB_NAME;
|
|
351
|
+
const storeName = options.storeName || DEFAULT_STORE_NAME;
|
|
352
|
+
const legacyStorageDriver = options.legacyStorageDriver;
|
|
353
|
+
let dbPromise = null;
|
|
354
|
+
let migrationPromise = null;
|
|
355
|
+
const getDb = () => {
|
|
356
|
+
if (!dbPromise) {
|
|
357
|
+
dbPromise = openDatabase2(dbName, storeName);
|
|
358
|
+
}
|
|
359
|
+
return dbPromise;
|
|
360
|
+
};
|
|
361
|
+
const putMany = async (entries) => {
|
|
362
|
+
if (entries.length === 0) return;
|
|
363
|
+
const db = await getDb();
|
|
364
|
+
await new Promise((resolve, reject) => {
|
|
365
|
+
const tx = db.transaction(storeName, "readwrite");
|
|
366
|
+
const store = tx.objectStore(storeName);
|
|
367
|
+
for (const entry of entries) {
|
|
368
|
+
store.put({ ...entry, baseUrl: normalizeBaseUrl(entry.baseUrl) });
|
|
369
|
+
}
|
|
370
|
+
tx.oncomplete = () => resolve();
|
|
371
|
+
tx.onerror = () => reject(tx.error);
|
|
372
|
+
});
|
|
373
|
+
};
|
|
374
|
+
const ensureMigrated = async () => {
|
|
375
|
+
if (!legacyStorageDriver) return;
|
|
376
|
+
if (!migrationPromise) {
|
|
377
|
+
migrationPromise = (async () => {
|
|
378
|
+
const migrated = await legacyStorageDriver.getItem(
|
|
379
|
+
MIGRATION_MARKER_KEY,
|
|
380
|
+
false
|
|
381
|
+
);
|
|
382
|
+
if (migrated) return;
|
|
383
|
+
const legacyEntries = await legacyStorageDriver.getItem(
|
|
384
|
+
SDK_STORAGE_KEYS.USAGE_TRACKING,
|
|
385
|
+
[]
|
|
386
|
+
);
|
|
387
|
+
if (legacyEntries.length > 0) {
|
|
388
|
+
await putMany(legacyEntries);
|
|
389
|
+
await legacyStorageDriver.removeItem(SDK_STORAGE_KEYS.USAGE_TRACKING);
|
|
390
|
+
}
|
|
391
|
+
await legacyStorageDriver.setItem(MIGRATION_MARKER_KEY, true);
|
|
392
|
+
})();
|
|
393
|
+
}
|
|
394
|
+
await migrationPromise;
|
|
395
|
+
};
|
|
396
|
+
return {
|
|
397
|
+
async migrate() {
|
|
398
|
+
await ensureMigrated();
|
|
399
|
+
},
|
|
400
|
+
async append(entry) {
|
|
401
|
+
await ensureMigrated();
|
|
402
|
+
await putMany([entry]);
|
|
403
|
+
},
|
|
404
|
+
async appendMany(entries) {
|
|
405
|
+
await ensureMigrated();
|
|
406
|
+
await putMany(entries);
|
|
407
|
+
},
|
|
408
|
+
async list(options2 = {}) {
|
|
409
|
+
await ensureMigrated();
|
|
410
|
+
const db = await getDb();
|
|
411
|
+
return new Promise((resolve, reject) => {
|
|
412
|
+
const tx = db.transaction(storeName, "readonly");
|
|
413
|
+
const store = tx.objectStore(storeName);
|
|
414
|
+
const index = store.index("timestamp");
|
|
415
|
+
const direction = "prev";
|
|
416
|
+
const request = index.openCursor(null, direction);
|
|
417
|
+
const results = [];
|
|
418
|
+
const limit = options2.limit;
|
|
419
|
+
request.onsuccess = () => {
|
|
420
|
+
const cursor = request.result;
|
|
421
|
+
if (!cursor) {
|
|
422
|
+
resolve(results);
|
|
423
|
+
return;
|
|
424
|
+
}
|
|
425
|
+
const value = cursor.value;
|
|
426
|
+
if (matchesFilters(value, options2)) {
|
|
427
|
+
results.push(value);
|
|
428
|
+
if (typeof limit === "number" && results.length >= limit) {
|
|
429
|
+
resolve(results);
|
|
430
|
+
return;
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
cursor.continue();
|
|
434
|
+
};
|
|
435
|
+
request.onerror = () => reject(request.error);
|
|
436
|
+
});
|
|
437
|
+
},
|
|
438
|
+
async count(options2 = {}) {
|
|
439
|
+
const results = await this.list(options2);
|
|
440
|
+
return results.length;
|
|
441
|
+
},
|
|
442
|
+
async deleteOlderThan(timestamp) {
|
|
443
|
+
await ensureMigrated();
|
|
444
|
+
const db = await getDb();
|
|
445
|
+
return new Promise((resolve, reject) => {
|
|
446
|
+
const tx = db.transaction(storeName, "readwrite");
|
|
447
|
+
const store = tx.objectStore(storeName);
|
|
448
|
+
const index = store.index("timestamp");
|
|
449
|
+
const range = IDBKeyRange.upperBound(timestamp, true);
|
|
450
|
+
const request = index.openCursor(range);
|
|
451
|
+
let deleted = 0;
|
|
452
|
+
request.onsuccess = () => {
|
|
453
|
+
const cursor = request.result;
|
|
454
|
+
if (!cursor) {
|
|
455
|
+
resolve(deleted);
|
|
456
|
+
return;
|
|
457
|
+
}
|
|
458
|
+
deleted += 1;
|
|
459
|
+
cursor.delete();
|
|
460
|
+
cursor.continue();
|
|
461
|
+
};
|
|
462
|
+
request.onerror = () => reject(request.error);
|
|
463
|
+
});
|
|
464
|
+
},
|
|
465
|
+
async clear() {
|
|
466
|
+
await ensureMigrated();
|
|
467
|
+
const db = await getDb();
|
|
468
|
+
await new Promise((resolve, reject) => {
|
|
469
|
+
const tx = db.transaction(storeName, "readwrite");
|
|
470
|
+
tx.objectStore(storeName).clear();
|
|
471
|
+
tx.oncomplete = () => resolve();
|
|
472
|
+
tx.onerror = () => reject(tx.error);
|
|
473
|
+
});
|
|
474
|
+
}
|
|
475
|
+
};
|
|
476
|
+
};
|
|
477
|
+
|
|
478
|
+
// storage/usageTracking/sqlite.ts
|
|
479
|
+
var MIGRATION_MARKER_KEY2 = "usage_tracking_migration_v1";
|
|
480
|
+
var normalizeBaseUrl2 = (baseUrl) => baseUrl.endsWith("/") ? baseUrl : `${baseUrl}/`;
|
|
481
|
+
var isBun2 = () => {
|
|
482
|
+
return typeof process.versions.bun !== "undefined";
|
|
483
|
+
};
|
|
484
|
+
var createDatabase2 = (dbPath) => {
|
|
485
|
+
if (isBun2()) {
|
|
486
|
+
throw new Error(
|
|
487
|
+
"SQLite driver not supported in Bun. Use createMemoryDriver() instead."
|
|
488
|
+
);
|
|
489
|
+
}
|
|
490
|
+
let Database = null;
|
|
491
|
+
try {
|
|
492
|
+
Database = __require("better-sqlite3");
|
|
493
|
+
} catch (error) {
|
|
494
|
+
throw new Error(
|
|
495
|
+
`better-sqlite3 is required for sqlite usage tracking. Install it to use sqlite storage. (${error})`
|
|
496
|
+
);
|
|
497
|
+
}
|
|
498
|
+
return new Database(dbPath);
|
|
499
|
+
};
|
|
500
|
+
var buildWhereClause = (options = {}) => {
|
|
501
|
+
const clauses = [];
|
|
502
|
+
const params = [];
|
|
503
|
+
if (typeof options.before === "number") {
|
|
504
|
+
clauses.push("timestamp < ?");
|
|
505
|
+
params.push(options.before);
|
|
506
|
+
}
|
|
507
|
+
if (typeof options.after === "number") {
|
|
508
|
+
clauses.push("timestamp > ?");
|
|
509
|
+
params.push(options.after);
|
|
510
|
+
}
|
|
511
|
+
if (options.modelId) {
|
|
512
|
+
clauses.push("model_id = ?");
|
|
513
|
+
params.push(options.modelId);
|
|
514
|
+
}
|
|
515
|
+
if (options.baseUrl) {
|
|
516
|
+
clauses.push("base_url = ?");
|
|
517
|
+
params.push(normalizeBaseUrl2(options.baseUrl));
|
|
518
|
+
}
|
|
519
|
+
if (options.sessionId) {
|
|
520
|
+
clauses.push("session_id = ?");
|
|
521
|
+
params.push(options.sessionId);
|
|
522
|
+
}
|
|
523
|
+
if (options.client) {
|
|
524
|
+
clauses.push("client = ?");
|
|
525
|
+
params.push(options.client);
|
|
526
|
+
}
|
|
527
|
+
return {
|
|
528
|
+
sql: clauses.length > 0 ? `WHERE ${clauses.join(" AND ")}` : "",
|
|
529
|
+
params
|
|
530
|
+
};
|
|
531
|
+
};
|
|
532
|
+
var createSqliteUsageTrackingDriver = (options = {}) => {
|
|
533
|
+
const dbPath = options.dbPath || "routstr.sqlite";
|
|
534
|
+
const tableName = options.tableName || "usage_tracking";
|
|
535
|
+
const db = createDatabase2(dbPath);
|
|
536
|
+
const legacyStorageDriver = options.legacyStorageDriver;
|
|
537
|
+
db.exec(`
|
|
538
|
+
CREATE TABLE IF NOT EXISTS ${tableName} (
|
|
539
|
+
id TEXT PRIMARY KEY,
|
|
540
|
+
timestamp INTEGER NOT NULL,
|
|
541
|
+
model_id TEXT NOT NULL,
|
|
542
|
+
base_url TEXT NOT NULL,
|
|
543
|
+
request_id TEXT NOT NULL,
|
|
544
|
+
cost REAL NOT NULL,
|
|
545
|
+
sats_cost REAL NOT NULL,
|
|
546
|
+
prompt_tokens INTEGER NOT NULL,
|
|
547
|
+
completion_tokens INTEGER NOT NULL,
|
|
548
|
+
total_tokens INTEGER NOT NULL,
|
|
549
|
+
client TEXT,
|
|
550
|
+
session_id TEXT,
|
|
551
|
+
tags TEXT
|
|
552
|
+
);
|
|
553
|
+
CREATE INDEX IF NOT EXISTS idx_${tableName}_timestamp ON ${tableName}(timestamp);
|
|
554
|
+
CREATE INDEX IF NOT EXISTS idx_${tableName}_model_id ON ${tableName}(model_id);
|
|
555
|
+
CREATE INDEX IF NOT EXISTS idx_${tableName}_base_url ON ${tableName}(base_url);
|
|
556
|
+
CREATE INDEX IF NOT EXISTS idx_${tableName}_session_id ON ${tableName}(session_id);
|
|
557
|
+
CREATE INDEX IF NOT EXISTS idx_${tableName}_client ON ${tableName}(client);
|
|
558
|
+
`);
|
|
559
|
+
const insertStmt = db.prepare(`
|
|
560
|
+
INSERT OR REPLACE INTO ${tableName} (
|
|
561
|
+
id, timestamp, model_id, base_url, request_id,
|
|
562
|
+
cost, sats_cost, prompt_tokens, completion_tokens, total_tokens,
|
|
563
|
+
client, session_id, tags
|
|
564
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
565
|
+
`);
|
|
566
|
+
let migrationComplete = false;
|
|
567
|
+
const appendOne = (entry) => {
|
|
568
|
+
insertStmt.run(
|
|
569
|
+
entry.id,
|
|
570
|
+
entry.timestamp,
|
|
571
|
+
entry.modelId,
|
|
572
|
+
normalizeBaseUrl2(entry.baseUrl),
|
|
573
|
+
entry.requestId,
|
|
574
|
+
entry.cost,
|
|
575
|
+
entry.satsCost,
|
|
576
|
+
entry.promptTokens,
|
|
577
|
+
entry.completionTokens,
|
|
578
|
+
entry.totalTokens,
|
|
579
|
+
entry.client ?? null,
|
|
580
|
+
entry.sessionId ?? null,
|
|
581
|
+
JSON.stringify(entry.tags ?? [])
|
|
582
|
+
);
|
|
583
|
+
};
|
|
584
|
+
const ensureMigrated = async () => {
|
|
585
|
+
if (!legacyStorageDriver || migrationComplete) return;
|
|
586
|
+
const migrated = await legacyStorageDriver.getItem(
|
|
587
|
+
MIGRATION_MARKER_KEY2,
|
|
588
|
+
false
|
|
589
|
+
);
|
|
590
|
+
if (migrated) {
|
|
591
|
+
migrationComplete = true;
|
|
592
|
+
return;
|
|
593
|
+
}
|
|
594
|
+
const legacyEntries = await legacyStorageDriver.getItem(
|
|
595
|
+
SDK_STORAGE_KEYS.USAGE_TRACKING,
|
|
596
|
+
[]
|
|
597
|
+
);
|
|
598
|
+
for (const entry of legacyEntries) {
|
|
599
|
+
appendOne(entry);
|
|
600
|
+
}
|
|
601
|
+
if (legacyEntries.length > 0) {
|
|
602
|
+
await legacyStorageDriver.removeItem(SDK_STORAGE_KEYS.USAGE_TRACKING);
|
|
603
|
+
}
|
|
604
|
+
await legacyStorageDriver.setItem(MIGRATION_MARKER_KEY2, true);
|
|
605
|
+
migrationComplete = true;
|
|
606
|
+
};
|
|
607
|
+
const mapRow = (row) => ({
|
|
608
|
+
id: row.id,
|
|
609
|
+
timestamp: row.timestamp,
|
|
610
|
+
modelId: row.model_id,
|
|
611
|
+
baseUrl: row.base_url,
|
|
612
|
+
requestId: row.request_id,
|
|
613
|
+
cost: row.cost,
|
|
614
|
+
satsCost: row.sats_cost,
|
|
615
|
+
promptTokens: row.prompt_tokens,
|
|
616
|
+
completionTokens: row.completion_tokens,
|
|
617
|
+
totalTokens: row.total_tokens,
|
|
618
|
+
client: row.client ?? void 0,
|
|
619
|
+
sessionId: row.session_id ?? void 0,
|
|
620
|
+
tags: typeof row.tags === "string" ? JSON.parse(row.tags) : void 0
|
|
621
|
+
});
|
|
622
|
+
return {
|
|
623
|
+
async migrate() {
|
|
624
|
+
await ensureMigrated();
|
|
625
|
+
},
|
|
626
|
+
async append(entry) {
|
|
627
|
+
await ensureMigrated();
|
|
628
|
+
appendOne(entry);
|
|
629
|
+
},
|
|
630
|
+
async appendMany(entries) {
|
|
631
|
+
await ensureMigrated();
|
|
632
|
+
for (const entry of entries) {
|
|
633
|
+
appendOne(entry);
|
|
634
|
+
}
|
|
635
|
+
},
|
|
636
|
+
async list(options2 = {}) {
|
|
637
|
+
await ensureMigrated();
|
|
638
|
+
const { sql, params } = buildWhereClause(options2);
|
|
639
|
+
const limitSql = typeof options2.limit === "number" ? " LIMIT ?" : "";
|
|
640
|
+
const stmt = db.prepare(
|
|
641
|
+
`SELECT * FROM ${tableName} ${sql} ORDER BY timestamp DESC${limitSql}`
|
|
642
|
+
);
|
|
643
|
+
const rows = stmt.all(
|
|
644
|
+
...typeof options2.limit === "number" ? [...params, options2.limit] : params
|
|
645
|
+
);
|
|
646
|
+
return rows.map(mapRow);
|
|
647
|
+
},
|
|
648
|
+
async count(options2 = {}) {
|
|
649
|
+
await ensureMigrated();
|
|
650
|
+
const { sql, params } = buildWhereClause(options2);
|
|
651
|
+
const stmt = db.prepare(`SELECT COUNT(*) as count FROM ${tableName} ${sql}`);
|
|
652
|
+
const row = stmt.get(...params);
|
|
653
|
+
return Number(row?.count ?? 0);
|
|
654
|
+
},
|
|
655
|
+
async deleteOlderThan(timestamp) {
|
|
656
|
+
await ensureMigrated();
|
|
657
|
+
const stmt = db.prepare(`DELETE FROM ${tableName} WHERE timestamp < ?`);
|
|
658
|
+
const result = stmt.run(timestamp);
|
|
659
|
+
return result.changes;
|
|
660
|
+
},
|
|
661
|
+
async clear() {
|
|
662
|
+
await ensureMigrated();
|
|
663
|
+
db.prepare(`DELETE FROM ${tableName}`).run();
|
|
664
|
+
}
|
|
665
|
+
};
|
|
666
|
+
};
|
|
667
|
+
|
|
668
|
+
// storage/usageTracking/memory.ts
|
|
669
|
+
var normalizeBaseUrl3 = (baseUrl) => baseUrl.endsWith("/") ? baseUrl : `${baseUrl}/`;
|
|
670
|
+
var matchesFilters2 = (entry, options = {}) => {
|
|
671
|
+
if (typeof options.before === "number" && entry.timestamp >= options.before) {
|
|
672
|
+
return false;
|
|
673
|
+
}
|
|
674
|
+
if (typeof options.after === "number" && entry.timestamp <= options.after) {
|
|
675
|
+
return false;
|
|
676
|
+
}
|
|
677
|
+
if (options.modelId && entry.modelId !== options.modelId) {
|
|
678
|
+
return false;
|
|
679
|
+
}
|
|
680
|
+
if (options.baseUrl && normalizeBaseUrl3(entry.baseUrl) !== normalizeBaseUrl3(options.baseUrl)) {
|
|
681
|
+
return false;
|
|
682
|
+
}
|
|
683
|
+
if (options.sessionId && entry.sessionId !== options.sessionId) {
|
|
684
|
+
return false;
|
|
685
|
+
}
|
|
686
|
+
if (options.client && entry.client !== options.client) {
|
|
687
|
+
return false;
|
|
688
|
+
}
|
|
689
|
+
return true;
|
|
690
|
+
};
|
|
691
|
+
var createMemoryUsageTrackingDriver = (seed = []) => {
|
|
692
|
+
const store = /* @__PURE__ */ new Map();
|
|
693
|
+
for (const entry of seed) {
|
|
694
|
+
store.set(entry.id, { ...entry, baseUrl: normalizeBaseUrl3(entry.baseUrl) });
|
|
695
|
+
}
|
|
696
|
+
return {
|
|
697
|
+
async migrate() {
|
|
698
|
+
return;
|
|
699
|
+
},
|
|
700
|
+
async append(entry) {
|
|
701
|
+
store.set(entry.id, { ...entry, baseUrl: normalizeBaseUrl3(entry.baseUrl) });
|
|
702
|
+
},
|
|
703
|
+
async appendMany(entries) {
|
|
704
|
+
for (const entry of entries) {
|
|
705
|
+
store.set(entry.id, { ...entry, baseUrl: normalizeBaseUrl3(entry.baseUrl) });
|
|
706
|
+
}
|
|
707
|
+
},
|
|
708
|
+
async list(options = {}) {
|
|
709
|
+
const entries = [...store.values()].filter((entry) => matchesFilters2(entry, options)).sort((a, b) => b.timestamp - a.timestamp);
|
|
710
|
+
if (typeof options.limit === "number") {
|
|
711
|
+
return entries.slice(0, options.limit);
|
|
712
|
+
}
|
|
713
|
+
return entries;
|
|
714
|
+
},
|
|
715
|
+
async count(options = {}) {
|
|
716
|
+
return (await this.list(options)).length;
|
|
717
|
+
},
|
|
718
|
+
async deleteOlderThan(timestamp) {
|
|
719
|
+
let deleted = 0;
|
|
720
|
+
for (const [id, entry] of store.entries()) {
|
|
721
|
+
if (entry.timestamp < timestamp) {
|
|
722
|
+
store.delete(id);
|
|
723
|
+
deleted += 1;
|
|
724
|
+
}
|
|
725
|
+
}
|
|
726
|
+
return deleted;
|
|
727
|
+
},
|
|
728
|
+
async clear() {
|
|
729
|
+
store.clear();
|
|
730
|
+
}
|
|
731
|
+
};
|
|
732
|
+
};
|
|
733
|
+
var normalizeBaseUrl4 = (baseUrl) => baseUrl.endsWith("/") ? baseUrl : `${baseUrl}/`;
|
|
303
734
|
var getCashuTokenBalance = (token) => {
|
|
304
735
|
try {
|
|
305
736
|
const decoded = getDecodedToken(token);
|
|
@@ -328,12 +759,11 @@ var createEmptyStore = (driver) => createStore((set, get) => ({
|
|
|
328
759
|
routstr21Models: [],
|
|
329
760
|
lastRoutstr21ModelsUpdate: null,
|
|
330
761
|
cachedReceiveTokens: [],
|
|
331
|
-
usageTracking: [],
|
|
332
762
|
clientIds: [],
|
|
333
763
|
setModelsFromAllProviders: (value) => {
|
|
334
764
|
const normalized = {};
|
|
335
765
|
for (const [baseUrl, models] of Object.entries(value)) {
|
|
336
|
-
normalized[
|
|
766
|
+
normalized[normalizeBaseUrl4(baseUrl)] = models;
|
|
337
767
|
}
|
|
338
768
|
void driver.setItem(
|
|
339
769
|
SDK_STORAGE_KEYS.MODELS_FROM_ALL_PROVIDERS,
|
|
@@ -346,7 +776,7 @@ var createEmptyStore = (driver) => createStore((set, get) => ({
|
|
|
346
776
|
set({ lastUsedModel: value });
|
|
347
777
|
},
|
|
348
778
|
setBaseUrlsList: (value) => {
|
|
349
|
-
const normalized = value.map((url) =>
|
|
779
|
+
const normalized = value.map((url) => normalizeBaseUrl4(url));
|
|
350
780
|
void driver.setItem(SDK_STORAGE_KEYS.BASE_URLS_LIST, normalized);
|
|
351
781
|
set({ baseUrlsList: normalized });
|
|
352
782
|
},
|
|
@@ -355,14 +785,14 @@ var createEmptyStore = (driver) => createStore((set, get) => ({
|
|
|
355
785
|
set({ lastBaseUrlsUpdate: value });
|
|
356
786
|
},
|
|
357
787
|
setDisabledProviders: (value) => {
|
|
358
|
-
const normalized = value.map((url) =>
|
|
788
|
+
const normalized = value.map((url) => normalizeBaseUrl4(url));
|
|
359
789
|
void driver.setItem(SDK_STORAGE_KEYS.DISABLED_PROVIDERS, normalized);
|
|
360
790
|
set({ disabledProviders: normalized });
|
|
361
791
|
},
|
|
362
792
|
setMintsFromAllProviders: (value) => {
|
|
363
793
|
const normalized = {};
|
|
364
794
|
for (const [baseUrl, mints] of Object.entries(value)) {
|
|
365
|
-
normalized[
|
|
795
|
+
normalized[normalizeBaseUrl4(baseUrl)] = mints.map(
|
|
366
796
|
(mint) => mint.endsWith("/") ? mint.slice(0, -1) : mint
|
|
367
797
|
);
|
|
368
798
|
}
|
|
@@ -375,7 +805,7 @@ var createEmptyStore = (driver) => createStore((set, get) => ({
|
|
|
375
805
|
setInfoFromAllProviders: (value) => {
|
|
376
806
|
const normalized = {};
|
|
377
807
|
for (const [baseUrl, info] of Object.entries(value)) {
|
|
378
|
-
normalized[
|
|
808
|
+
normalized[normalizeBaseUrl4(baseUrl)] = info;
|
|
379
809
|
}
|
|
380
810
|
void driver.setItem(SDK_STORAGE_KEYS.INFO_FROM_ALL_PROVIDERS, normalized);
|
|
381
811
|
set({ infoFromAllProviders: normalized });
|
|
@@ -383,7 +813,7 @@ var createEmptyStore = (driver) => createStore((set, get) => ({
|
|
|
383
813
|
setLastModelsUpdate: (value) => {
|
|
384
814
|
const normalized = {};
|
|
385
815
|
for (const [baseUrl, timestamp] of Object.entries(value)) {
|
|
386
|
-
normalized[
|
|
816
|
+
normalized[normalizeBaseUrl4(baseUrl)] = timestamp;
|
|
387
817
|
}
|
|
388
818
|
void driver.setItem(SDK_STORAGE_KEYS.LAST_MODELS_UPDATE, normalized);
|
|
389
819
|
set({ lastModelsUpdate: normalized });
|
|
@@ -393,7 +823,7 @@ var createEmptyStore = (driver) => createStore((set, get) => ({
|
|
|
393
823
|
const updates = typeof value === "function" ? value(state.cachedTokens) : value;
|
|
394
824
|
const normalized = updates.map((entry) => ({
|
|
395
825
|
...entry,
|
|
396
|
-
baseUrl:
|
|
826
|
+
baseUrl: normalizeBaseUrl4(entry.baseUrl),
|
|
397
827
|
balance: typeof entry.balance === "number" ? entry.balance : getCashuTokenBalance(entry.token),
|
|
398
828
|
lastUsed: entry.lastUsed ?? null
|
|
399
829
|
}));
|
|
@@ -406,7 +836,7 @@ var createEmptyStore = (driver) => createStore((set, get) => ({
|
|
|
406
836
|
const updates = typeof value === "function" ? value(state.apiKeys) : value;
|
|
407
837
|
const normalized = updates.map((entry) => ({
|
|
408
838
|
...entry,
|
|
409
|
-
baseUrl:
|
|
839
|
+
baseUrl: normalizeBaseUrl4(entry.baseUrl),
|
|
410
840
|
balance: entry.balance ?? 0,
|
|
411
841
|
lastUsed: entry.lastUsed ?? null
|
|
412
842
|
}));
|
|
@@ -418,7 +848,7 @@ var createEmptyStore = (driver) => createStore((set, get) => ({
|
|
|
418
848
|
set((state) => {
|
|
419
849
|
const updates = typeof value === "function" ? value(state.childKeys) : value;
|
|
420
850
|
const normalized = updates.map((entry) => ({
|
|
421
|
-
parentBaseUrl:
|
|
851
|
+
parentBaseUrl: normalizeBaseUrl4(entry.parentBaseUrl),
|
|
422
852
|
childKey: entry.childKey,
|
|
423
853
|
balance: entry.balance ?? 0,
|
|
424
854
|
balanceLimit: entry.balanceLimit,
|
|
@@ -447,10 +877,6 @@ var createEmptyStore = (driver) => createStore((set, get) => ({
|
|
|
447
877
|
void driver.setItem(SDK_STORAGE_KEYS.CACHED_RECEIVE_TOKENS, normalized);
|
|
448
878
|
set({ cachedReceiveTokens: normalized });
|
|
449
879
|
},
|
|
450
|
-
setUsageTracking: (value) => {
|
|
451
|
-
void driver.setItem(SDK_STORAGE_KEYS.USAGE_TRACKING, value);
|
|
452
|
-
set({ usageTracking: value });
|
|
453
|
-
},
|
|
454
880
|
setClientIds: (value) => {
|
|
455
881
|
set((state) => {
|
|
456
882
|
const updates = typeof value === "function" ? value(state.clientIds) : value;
|
|
@@ -480,7 +906,6 @@ var hydrateStoreFromDriver = async (store, driver) => {
|
|
|
480
906
|
rawRoutstr21Models,
|
|
481
907
|
rawLastRoutstr21ModelsUpdate,
|
|
482
908
|
rawCachedReceiveTokens,
|
|
483
|
-
rawUsageTracking,
|
|
484
909
|
rawClientIds
|
|
485
910
|
] = await Promise.all([
|
|
486
911
|
driver.getItem(
|
|
@@ -512,51 +937,50 @@ var hydrateStoreFromDriver = async (store, driver) => {
|
|
|
512
937
|
null
|
|
513
938
|
),
|
|
514
939
|
driver.getItem(SDK_STORAGE_KEYS.CACHED_RECEIVE_TOKENS, []),
|
|
515
|
-
driver.getItem(SDK_STORAGE_KEYS.USAGE_TRACKING, []),
|
|
516
940
|
driver.getItem(SDK_STORAGE_KEYS.CLIENT_IDS, [])
|
|
517
941
|
]);
|
|
518
942
|
const modelsFromAllProviders = Object.fromEntries(
|
|
519
943
|
Object.entries(rawModels).map(([baseUrl, models]) => [
|
|
520
|
-
|
|
944
|
+
normalizeBaseUrl4(baseUrl),
|
|
521
945
|
models
|
|
522
946
|
])
|
|
523
947
|
);
|
|
524
|
-
const baseUrlsList = rawBaseUrls.map((url) =>
|
|
948
|
+
const baseUrlsList = rawBaseUrls.map((url) => normalizeBaseUrl4(url));
|
|
525
949
|
const disabledProviders = rawDisabledProviders.map(
|
|
526
|
-
(url) =>
|
|
950
|
+
(url) => normalizeBaseUrl4(url)
|
|
527
951
|
);
|
|
528
952
|
const mintsFromAllProviders = Object.fromEntries(
|
|
529
953
|
Object.entries(rawMints).map(([baseUrl, mints]) => [
|
|
530
|
-
|
|
954
|
+
normalizeBaseUrl4(baseUrl),
|
|
531
955
|
mints.map((mint) => mint.endsWith("/") ? mint.slice(0, -1) : mint)
|
|
532
956
|
])
|
|
533
957
|
);
|
|
534
958
|
const infoFromAllProviders = Object.fromEntries(
|
|
535
959
|
Object.entries(rawInfo).map(([baseUrl, info]) => [
|
|
536
|
-
|
|
960
|
+
normalizeBaseUrl4(baseUrl),
|
|
537
961
|
info
|
|
538
962
|
])
|
|
539
963
|
);
|
|
540
964
|
const lastModelsUpdate = Object.fromEntries(
|
|
541
965
|
Object.entries(rawLastModelsUpdate).map(([baseUrl, timestamp]) => [
|
|
542
|
-
|
|
966
|
+
normalizeBaseUrl4(baseUrl),
|
|
543
967
|
timestamp
|
|
544
968
|
])
|
|
545
969
|
);
|
|
546
970
|
const cachedTokens = rawCachedTokens.map((entry) => ({
|
|
547
971
|
...entry,
|
|
548
|
-
baseUrl:
|
|
972
|
+
baseUrl: normalizeBaseUrl4(entry.baseUrl),
|
|
549
973
|
balance: typeof entry.balance === "number" ? entry.balance : getCashuTokenBalance(entry.token),
|
|
550
974
|
lastUsed: entry.lastUsed ?? null
|
|
551
975
|
}));
|
|
552
976
|
const apiKeys = rawApiKeys.map((entry) => ({
|
|
553
977
|
...entry,
|
|
554
|
-
baseUrl:
|
|
978
|
+
baseUrl: normalizeBaseUrl4(entry.baseUrl),
|
|
555
979
|
balance: entry.balance ?? 0,
|
|
556
980
|
lastUsed: entry.lastUsed ?? null
|
|
557
981
|
}));
|
|
558
982
|
const childKeys = rawChildKeys.map((entry) => ({
|
|
559
|
-
parentBaseUrl:
|
|
983
|
+
parentBaseUrl: normalizeBaseUrl4(entry.parentBaseUrl),
|
|
560
984
|
childKey: entry.childKey,
|
|
561
985
|
balance: entry.balance ?? 0,
|
|
562
986
|
balanceLimit: entry.balanceLimit,
|
|
@@ -571,7 +995,6 @@ var hydrateStoreFromDriver = async (store, driver) => {
|
|
|
571
995
|
unit: entry.unit || "sat",
|
|
572
996
|
createdAt: entry.createdAt ?? Date.now()
|
|
573
997
|
}));
|
|
574
|
-
const usageTracking = rawUsageTracking;
|
|
575
998
|
const clientIds = rawClientIds.map((entry) => ({
|
|
576
999
|
...entry,
|
|
577
1000
|
createdAt: entry.createdAt ?? Date.now(),
|
|
@@ -592,7 +1015,6 @@ var hydrateStoreFromDriver = async (store, driver) => {
|
|
|
592
1015
|
routstr21Models,
|
|
593
1016
|
lastRoutstr21ModelsUpdate,
|
|
594
1017
|
cachedReceiveTokens,
|
|
595
|
-
usageTracking,
|
|
596
1018
|
clientIds
|
|
597
1019
|
});
|
|
598
1020
|
};
|
|
@@ -613,12 +1035,12 @@ var createDiscoveryAdapterFromStore = (store) => ({
|
|
|
613
1035
|
getCachedProviderInfo: () => store.getState().infoFromAllProviders,
|
|
614
1036
|
setCachedProviderInfo: (info) => store.getState().setInfoFromAllProviders(info),
|
|
615
1037
|
getProviderLastUpdate: (baseUrl) => {
|
|
616
|
-
const normalized =
|
|
1038
|
+
const normalized = normalizeBaseUrl4(baseUrl);
|
|
617
1039
|
const timestamps = store.getState().lastModelsUpdate;
|
|
618
1040
|
return timestamps[normalized] || null;
|
|
619
1041
|
},
|
|
620
1042
|
setProviderLastUpdate: (baseUrl, timestamp) => {
|
|
621
|
-
const normalized =
|
|
1043
|
+
const normalized = normalizeBaseUrl4(baseUrl);
|
|
622
1044
|
const timestamps = { ...store.getState().lastModelsUpdate };
|
|
623
1045
|
timestamps[normalized] = timestamp;
|
|
624
1046
|
store.getState().setLastModelsUpdate(timestamps);
|
|
@@ -637,7 +1059,7 @@ var createDiscoveryAdapterFromStore = (store) => ({
|
|
|
637
1059
|
});
|
|
638
1060
|
var createStorageAdapterFromStore = (store) => ({
|
|
639
1061
|
getToken: (baseUrl) => {
|
|
640
|
-
const normalized =
|
|
1062
|
+
const normalized = normalizeBaseUrl4(baseUrl);
|
|
641
1063
|
const entry = store.getState().cachedTokens.find((token) => token.baseUrl === normalized);
|
|
642
1064
|
if (!entry) return null;
|
|
643
1065
|
const next = store.getState().cachedTokens.map(
|
|
@@ -647,7 +1069,7 @@ var createStorageAdapterFromStore = (store) => ({
|
|
|
647
1069
|
return entry.token;
|
|
648
1070
|
},
|
|
649
1071
|
setToken: (baseUrl, token) => {
|
|
650
|
-
const normalized =
|
|
1072
|
+
const normalized = normalizeBaseUrl4(baseUrl);
|
|
651
1073
|
const tokens = store.getState().cachedTokens;
|
|
652
1074
|
const balance = getCashuTokenBalance(token);
|
|
653
1075
|
const existingIndex = tokens.findIndex(
|
|
@@ -666,12 +1088,12 @@ var createStorageAdapterFromStore = (store) => ({
|
|
|
666
1088
|
store.getState().setCachedTokens(next);
|
|
667
1089
|
},
|
|
668
1090
|
removeToken: (baseUrl) => {
|
|
669
|
-
const normalized =
|
|
1091
|
+
const normalized = normalizeBaseUrl4(baseUrl);
|
|
670
1092
|
const next = store.getState().cachedTokens.filter((entry) => entry.baseUrl !== normalized);
|
|
671
1093
|
store.getState().setCachedTokens(next);
|
|
672
1094
|
},
|
|
673
1095
|
updateTokenBalance: (baseUrl, balance) => {
|
|
674
|
-
const normalized =
|
|
1096
|
+
const normalized = normalizeBaseUrl4(baseUrl);
|
|
675
1097
|
const tokens = store.getState().cachedTokens;
|
|
676
1098
|
const next = tokens.map(
|
|
677
1099
|
(entry) => entry.baseUrl === normalized ? { ...entry, balance } : entry
|
|
@@ -701,18 +1123,18 @@ var createStorageAdapterFromStore = (store) => ({
|
|
|
701
1123
|
return Object.entries(distributionMap).map(([baseUrl, amt]) => ({ baseUrl, amount: amt })).sort((a, b) => b.amount - a.amount);
|
|
702
1124
|
},
|
|
703
1125
|
saveProviderInfo: (baseUrl, info) => {
|
|
704
|
-
const normalized =
|
|
1126
|
+
const normalized = normalizeBaseUrl4(baseUrl);
|
|
705
1127
|
const next = { ...store.getState().infoFromAllProviders };
|
|
706
1128
|
next[normalized] = info;
|
|
707
1129
|
store.getState().setInfoFromAllProviders(next);
|
|
708
1130
|
},
|
|
709
1131
|
getProviderInfo: (baseUrl) => {
|
|
710
|
-
const normalized =
|
|
1132
|
+
const normalized = normalizeBaseUrl4(baseUrl);
|
|
711
1133
|
return store.getState().infoFromAllProviders[normalized] || null;
|
|
712
1134
|
},
|
|
713
1135
|
// ========== API Keys (for apikeys mode) ==========
|
|
714
1136
|
getApiKey: (baseUrl) => {
|
|
715
|
-
const normalized =
|
|
1137
|
+
const normalized = normalizeBaseUrl4(baseUrl);
|
|
716
1138
|
const entry = store.getState().apiKeys.find((key) => key.baseUrl === normalized);
|
|
717
1139
|
if (!entry) return null;
|
|
718
1140
|
const next = store.getState().apiKeys.map(
|
|
@@ -722,7 +1144,7 @@ var createStorageAdapterFromStore = (store) => ({
|
|
|
722
1144
|
return entry;
|
|
723
1145
|
},
|
|
724
1146
|
setApiKey: (baseUrl, key) => {
|
|
725
|
-
const normalized =
|
|
1147
|
+
const normalized = normalizeBaseUrl4(baseUrl);
|
|
726
1148
|
const keys = store.getState().apiKeys;
|
|
727
1149
|
const existingIndex = keys.findIndex(
|
|
728
1150
|
(entry) => entry.baseUrl === normalized
|
|
@@ -740,7 +1162,7 @@ var createStorageAdapterFromStore = (store) => ({
|
|
|
740
1162
|
store.getState().setApiKeys(next);
|
|
741
1163
|
},
|
|
742
1164
|
updateApiKeyBalance: (baseUrl, balance) => {
|
|
743
|
-
const normalized =
|
|
1165
|
+
const normalized = normalizeBaseUrl4(baseUrl);
|
|
744
1166
|
const keys = store.getState().apiKeys;
|
|
745
1167
|
const next = keys.map(
|
|
746
1168
|
(entry) => entry.baseUrl === normalized ? { ...entry, balance } : entry
|
|
@@ -748,7 +1170,7 @@ var createStorageAdapterFromStore = (store) => ({
|
|
|
748
1170
|
store.getState().setApiKeys(next);
|
|
749
1171
|
},
|
|
750
1172
|
removeApiKey: (baseUrl) => {
|
|
751
|
-
const normalized =
|
|
1173
|
+
const normalized = normalizeBaseUrl4(baseUrl);
|
|
752
1174
|
const next = store.getState().apiKeys.filter((entry) => entry.baseUrl !== normalized);
|
|
753
1175
|
store.getState().setApiKeys(next);
|
|
754
1176
|
},
|
|
@@ -762,7 +1184,7 @@ var createStorageAdapterFromStore = (store) => ({
|
|
|
762
1184
|
},
|
|
763
1185
|
// ========== Child Keys ==========
|
|
764
1186
|
getChildKey: (parentBaseUrl) => {
|
|
765
|
-
const normalized =
|
|
1187
|
+
const normalized = normalizeBaseUrl4(parentBaseUrl);
|
|
766
1188
|
const entry = store.getState().childKeys.find((key) => key.parentBaseUrl === normalized);
|
|
767
1189
|
if (!entry) return null;
|
|
768
1190
|
return {
|
|
@@ -775,7 +1197,7 @@ var createStorageAdapterFromStore = (store) => ({
|
|
|
775
1197
|
};
|
|
776
1198
|
},
|
|
777
1199
|
setChildKey: (parentBaseUrl, childKey, balance, validityDate, balanceLimit) => {
|
|
778
|
-
const normalized =
|
|
1200
|
+
const normalized = normalizeBaseUrl4(parentBaseUrl);
|
|
779
1201
|
const keys = store.getState().childKeys;
|
|
780
1202
|
const existingIndex = keys.findIndex(
|
|
781
1203
|
(entry) => entry.parentBaseUrl === normalized
|
|
@@ -806,7 +1228,7 @@ var createStorageAdapterFromStore = (store) => ({
|
|
|
806
1228
|
}
|
|
807
1229
|
},
|
|
808
1230
|
updateChildKeyBalance: (parentBaseUrl, balance) => {
|
|
809
|
-
const normalized =
|
|
1231
|
+
const normalized = normalizeBaseUrl4(parentBaseUrl);
|
|
810
1232
|
const keys = store.getState().childKeys;
|
|
811
1233
|
const next = keys.map(
|
|
812
1234
|
(entry) => entry.parentBaseUrl === normalized ? { ...entry, balance } : entry
|
|
@@ -814,7 +1236,7 @@ var createStorageAdapterFromStore = (store) => ({
|
|
|
814
1236
|
store.getState().setChildKeys(next);
|
|
815
1237
|
},
|
|
816
1238
|
removeChildKey: (parentBaseUrl) => {
|
|
817
|
-
const normalized =
|
|
1239
|
+
const normalized = normalizeBaseUrl4(parentBaseUrl);
|
|
818
1240
|
const next = store.getState().childKeys.filter((entry) => entry.parentBaseUrl !== normalized);
|
|
819
1241
|
store.getState().setChildKeys(next);
|
|
820
1242
|
},
|
|
@@ -837,16 +1259,16 @@ var createStorageAdapterFromStore = (store) => ({
|
|
|
837
1259
|
});
|
|
838
1260
|
var createProviderRegistryFromStore = (store) => ({
|
|
839
1261
|
getModelsForProvider: (baseUrl) => {
|
|
840
|
-
const normalized =
|
|
1262
|
+
const normalized = normalizeBaseUrl4(baseUrl);
|
|
841
1263
|
return store.getState().modelsFromAllProviders[normalized] || [];
|
|
842
1264
|
},
|
|
843
1265
|
getDisabledProviders: () => store.getState().disabledProviders,
|
|
844
1266
|
getProviderMints: (baseUrl) => {
|
|
845
|
-
const normalized =
|
|
1267
|
+
const normalized = normalizeBaseUrl4(baseUrl);
|
|
846
1268
|
return store.getState().mintsFromAllProviders[normalized] || [];
|
|
847
1269
|
},
|
|
848
1270
|
getProviderInfo: async (baseUrl) => {
|
|
849
|
-
const normalized =
|
|
1271
|
+
const normalized = normalizeBaseUrl4(baseUrl);
|
|
850
1272
|
const cached = store.getState().infoFromAllProviders[normalized];
|
|
851
1273
|
if (cached) return cached;
|
|
852
1274
|
try {
|
|
@@ -868,7 +1290,7 @@ var createProviderRegistryFromStore = (store) => ({
|
|
|
868
1290
|
});
|
|
869
1291
|
|
|
870
1292
|
// storage/index.ts
|
|
871
|
-
var
|
|
1293
|
+
var isBrowser3 = () => {
|
|
872
1294
|
try {
|
|
873
1295
|
return typeof window !== "undefined" && typeof window.localStorage !== "undefined";
|
|
874
1296
|
} catch {
|
|
@@ -883,16 +1305,16 @@ var isNode = () => {
|
|
|
883
1305
|
}
|
|
884
1306
|
};
|
|
885
1307
|
var defaultDriver = null;
|
|
886
|
-
var
|
|
1308
|
+
var isBun3 = () => {
|
|
887
1309
|
return typeof process.versions.bun !== "undefined";
|
|
888
1310
|
};
|
|
889
1311
|
var getDefaultSdkDriver = () => {
|
|
890
1312
|
if (defaultDriver) return defaultDriver;
|
|
891
|
-
if (
|
|
1313
|
+
if (isBrowser3()) {
|
|
892
1314
|
defaultDriver = localStorageDriver;
|
|
893
1315
|
return defaultDriver;
|
|
894
1316
|
}
|
|
895
|
-
if (
|
|
1317
|
+
if (isBun3()) {
|
|
896
1318
|
defaultDriver = createMemoryDriver();
|
|
897
1319
|
return defaultDriver;
|
|
898
1320
|
}
|
|
@@ -904,16 +1326,39 @@ var getDefaultSdkDriver = () => {
|
|
|
904
1326
|
return defaultDriver;
|
|
905
1327
|
};
|
|
906
1328
|
var defaultStore = null;
|
|
1329
|
+
var defaultUsageTrackingDriver = null;
|
|
907
1330
|
var getDefaultSdkStore = () => {
|
|
908
1331
|
if (!defaultStore) {
|
|
909
1332
|
defaultStore = createSdkStore({ driver: getDefaultSdkDriver() });
|
|
910
1333
|
}
|
|
911
1334
|
return defaultStore.hydrate.then(() => defaultStore.store);
|
|
912
1335
|
};
|
|
1336
|
+
var getDefaultUsageTrackingDriver = () => {
|
|
1337
|
+
if (defaultUsageTrackingDriver) return defaultUsageTrackingDriver;
|
|
1338
|
+
const storageDriver = getDefaultSdkDriver();
|
|
1339
|
+
if (isBrowser3()) {
|
|
1340
|
+
defaultUsageTrackingDriver = createIndexedDBUsageTrackingDriver({
|
|
1341
|
+
legacyStorageDriver: storageDriver
|
|
1342
|
+
});
|
|
1343
|
+
return defaultUsageTrackingDriver;
|
|
1344
|
+
}
|
|
1345
|
+
if (isBun3()) {
|
|
1346
|
+
defaultUsageTrackingDriver = createMemoryUsageTrackingDriver();
|
|
1347
|
+
return defaultUsageTrackingDriver;
|
|
1348
|
+
}
|
|
1349
|
+
if (isNode()) {
|
|
1350
|
+
defaultUsageTrackingDriver = createSqliteUsageTrackingDriver({
|
|
1351
|
+
legacyStorageDriver: storageDriver
|
|
1352
|
+
});
|
|
1353
|
+
return defaultUsageTrackingDriver;
|
|
1354
|
+
}
|
|
1355
|
+
defaultUsageTrackingDriver = createMemoryUsageTrackingDriver();
|
|
1356
|
+
return defaultUsageTrackingDriver;
|
|
1357
|
+
};
|
|
913
1358
|
var getDefaultDiscoveryAdapter = async () => createDiscoveryAdapterFromStore(await getDefaultSdkStore());
|
|
914
1359
|
var getDefaultStorageAdapter = async () => createStorageAdapterFromStore(await getDefaultSdkStore());
|
|
915
1360
|
var getDefaultProviderRegistry = async () => createProviderRegistryFromStore(await getDefaultSdkStore());
|
|
916
1361
|
|
|
917
|
-
export { SDK_STORAGE_KEYS, createDiscoveryAdapterFromStore, createIndexedDBDriver, createMemoryDriver, createProviderRegistryFromStore, createSdkStore, createSqliteDriver, createStorageAdapterFromStore, getDefaultDiscoveryAdapter, getDefaultProviderRegistry, getDefaultSdkDriver, getDefaultSdkStore, getDefaultStorageAdapter, localStorageDriver };
|
|
1362
|
+
export { SDK_STORAGE_KEYS, createDiscoveryAdapterFromStore, createIndexedDBDriver, createIndexedDBUsageTrackingDriver, createMemoryDriver, createMemoryUsageTrackingDriver, createProviderRegistryFromStore, createSdkStore, createSqliteDriver, createSqliteUsageTrackingDriver, createStorageAdapterFromStore, getDefaultDiscoveryAdapter, getDefaultProviderRegistry, getDefaultSdkDriver, getDefaultSdkStore, getDefaultStorageAdapter, getDefaultUsageTrackingDriver, localStorageDriver };
|
|
918
1363
|
//# sourceMappingURL=index.mjs.map
|
|
919
1364
|
//# sourceMappingURL=index.mjs.map
|