@routstr/sdk 0.1.8 → 0.2.0
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/client/index.js +27 -4
- package/dist/client/index.js.map +1 -1
- package/dist/client/index.mjs +27 -4
- package/dist/client/index.mjs.map +1 -1
- package/dist/discovery/index.d.mts +2 -1
- package/dist/discovery/index.d.ts +2 -1
- package/dist/discovery/index.js +9 -1
- package/dist/discovery/index.js.map +1 -1
- package/dist/discovery/index.mjs +9 -1
- package/dist/discovery/index.mjs.map +1 -1
- package/dist/index.d.mts +3 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +226 -142
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +226 -142
- package/dist/index.mjs.map +1 -1
- package/dist/storage/index.d.mts +21 -1
- package/dist/storage/index.d.ts +21 -1
- package/dist/storage/index.js +187 -135
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/index.mjs +187 -135
- package/dist/storage/index.mjs.map +1 -1
- package/dist/wallet/index.js +26 -3
- package/dist/wallet/index.js.map +1 -1
- package/dist/wallet/index.mjs +26 -3
- package/dist/wallet/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/storage/index.d.mts
CHANGED
|
@@ -60,6 +60,14 @@ interface SdkStorageState {
|
|
|
60
60
|
sessionId?: string;
|
|
61
61
|
tags?: string[];
|
|
62
62
|
}>;
|
|
63
|
+
clientIds: Array<{
|
|
64
|
+
clientId: string;
|
|
65
|
+
name: string;
|
|
66
|
+
apiKey: string;
|
|
67
|
+
baseUrl: string;
|
|
68
|
+
createdAt: number;
|
|
69
|
+
lastUsed?: number | null;
|
|
70
|
+
}>;
|
|
63
71
|
}
|
|
64
72
|
|
|
65
73
|
declare const localStorageDriver: StorageDriver;
|
|
@@ -133,10 +141,21 @@ interface SdkStorageStore extends SdkStorageState {
|
|
|
133
141
|
sessionId?: string;
|
|
134
142
|
tags?: string[];
|
|
135
143
|
}>) => void;
|
|
144
|
+
setClientIds: (value: Array<{
|
|
145
|
+
clientId: string;
|
|
146
|
+
name: string;
|
|
147
|
+
apiKey: string;
|
|
148
|
+
baseUrl: string;
|
|
149
|
+
createdAt?: number;
|
|
150
|
+
lastUsed?: number | null;
|
|
151
|
+
}> | ((current: SdkStorageStore["clientIds"]) => SdkStorageStore["clientIds"])) => void;
|
|
136
152
|
}
|
|
137
153
|
/** Store type returned after async initialization */
|
|
138
154
|
type SdkStore = StoreApi<SdkStorageStore>;
|
|
139
|
-
declare const createSdkStore: ({ driver, }: SdkStoreOptions) =>
|
|
155
|
+
declare const createSdkStore: ({ driver, }: SdkStoreOptions) => {
|
|
156
|
+
store: SdkStore;
|
|
157
|
+
hydrate: Promise<void>;
|
|
158
|
+
};
|
|
140
159
|
declare const createDiscoveryAdapterFromStore: (store: SdkStore) => DiscoveryAdapter;
|
|
141
160
|
declare const createStorageAdapterFromStore: (store: SdkStore) => StorageAdapter;
|
|
142
161
|
declare const createProviderRegistryFromStore: (store: SdkStore) => ProviderRegistry;
|
|
@@ -157,6 +176,7 @@ declare const SDK_STORAGE_KEYS: {
|
|
|
157
176
|
readonly LAST_ROUTSTR21_MODELS_UPDATE: "lastRoutstr21ModelsUpdate";
|
|
158
177
|
readonly CACHED_RECEIVE_TOKENS: "cached_receive_tokens";
|
|
159
178
|
readonly USAGE_TRACKING: "usage_tracking";
|
|
179
|
+
readonly CLIENT_IDS: "client_ids";
|
|
160
180
|
};
|
|
161
181
|
|
|
162
182
|
declare const getDefaultSdkDriver: () => StorageDriver;
|
package/dist/storage/index.d.ts
CHANGED
|
@@ -60,6 +60,14 @@ interface SdkStorageState {
|
|
|
60
60
|
sessionId?: string;
|
|
61
61
|
tags?: string[];
|
|
62
62
|
}>;
|
|
63
|
+
clientIds: Array<{
|
|
64
|
+
clientId: string;
|
|
65
|
+
name: string;
|
|
66
|
+
apiKey: string;
|
|
67
|
+
baseUrl: string;
|
|
68
|
+
createdAt: number;
|
|
69
|
+
lastUsed?: number | null;
|
|
70
|
+
}>;
|
|
63
71
|
}
|
|
64
72
|
|
|
65
73
|
declare const localStorageDriver: StorageDriver;
|
|
@@ -133,10 +141,21 @@ interface SdkStorageStore extends SdkStorageState {
|
|
|
133
141
|
sessionId?: string;
|
|
134
142
|
tags?: string[];
|
|
135
143
|
}>) => void;
|
|
144
|
+
setClientIds: (value: Array<{
|
|
145
|
+
clientId: string;
|
|
146
|
+
name: string;
|
|
147
|
+
apiKey: string;
|
|
148
|
+
baseUrl: string;
|
|
149
|
+
createdAt?: number;
|
|
150
|
+
lastUsed?: number | null;
|
|
151
|
+
}> | ((current: SdkStorageStore["clientIds"]) => SdkStorageStore["clientIds"])) => void;
|
|
136
152
|
}
|
|
137
153
|
/** Store type returned after async initialization */
|
|
138
154
|
type SdkStore = StoreApi<SdkStorageStore>;
|
|
139
|
-
declare const createSdkStore: ({ driver, }: SdkStoreOptions) =>
|
|
155
|
+
declare const createSdkStore: ({ driver, }: SdkStoreOptions) => {
|
|
156
|
+
store: SdkStore;
|
|
157
|
+
hydrate: Promise<void>;
|
|
158
|
+
};
|
|
140
159
|
declare const createDiscoveryAdapterFromStore: (store: SdkStore) => DiscoveryAdapter;
|
|
141
160
|
declare const createStorageAdapterFromStore: (store: SdkStore) => StorageAdapter;
|
|
142
161
|
declare const createProviderRegistryFromStore: (store: SdkStore) => ProviderRegistry;
|
|
@@ -157,6 +176,7 @@ declare const SDK_STORAGE_KEYS: {
|
|
|
157
176
|
readonly LAST_ROUTSTR21_MODELS_UPDATE: "lastRoutstr21ModelsUpdate";
|
|
158
177
|
readonly CACHED_RECEIVE_TOKENS: "cached_receive_tokens";
|
|
159
178
|
readonly USAGE_TRACKING: "usage_tracking";
|
|
179
|
+
readonly CLIENT_IDS: "client_ids";
|
|
160
180
|
};
|
|
161
181
|
|
|
162
182
|
declare const getDefaultSdkDriver: () => StorageDriver;
|
package/dist/storage/index.js
CHANGED
|
@@ -187,7 +187,11 @@ var createSqliteDriver = (options = {}) => {
|
|
|
187
187
|
};
|
|
188
188
|
|
|
189
189
|
// storage/drivers/indexedDB.ts
|
|
190
|
+
var isBrowser = typeof indexedDB !== "undefined";
|
|
190
191
|
var openDatabase = (dbName, storeName) => {
|
|
192
|
+
if (!isBrowser) {
|
|
193
|
+
return Promise.reject(new Error("IndexedDB is not available"));
|
|
194
|
+
}
|
|
191
195
|
return new Promise((resolve, reject) => {
|
|
192
196
|
const request = indexedDB.open(dbName, 1);
|
|
193
197
|
request.onupgradeneeded = () => {
|
|
@@ -292,7 +296,8 @@ var SDK_STORAGE_KEYS = {
|
|
|
292
296
|
ROUTSTR21_MODELS: "routstr21Models",
|
|
293
297
|
LAST_ROUTSTR21_MODELS_UPDATE: "lastRoutstr21ModelsUpdate",
|
|
294
298
|
CACHED_RECEIVE_TOKENS: "cached_receive_tokens",
|
|
295
|
-
USAGE_TRACKING: "usage_tracking"
|
|
299
|
+
USAGE_TRACKING: "usage_tracking",
|
|
300
|
+
CLIENT_IDS: "client_ids"
|
|
296
301
|
};
|
|
297
302
|
|
|
298
303
|
// storage/store.ts
|
|
@@ -310,9 +315,159 @@ var getCashuTokenBalance = (token) => {
|
|
|
310
315
|
return 0;
|
|
311
316
|
}
|
|
312
317
|
};
|
|
313
|
-
var
|
|
314
|
-
|
|
315
|
-
|
|
318
|
+
var createEmptyStore = (driver) => vanilla.createStore((set, get) => ({
|
|
319
|
+
modelsFromAllProviders: {},
|
|
320
|
+
lastUsedModel: null,
|
|
321
|
+
baseUrlsList: [],
|
|
322
|
+
lastBaseUrlsUpdate: null,
|
|
323
|
+
disabledProviders: [],
|
|
324
|
+
mintsFromAllProviders: {},
|
|
325
|
+
infoFromAllProviders: {},
|
|
326
|
+
lastModelsUpdate: {},
|
|
327
|
+
cachedTokens: [],
|
|
328
|
+
apiKeys: [],
|
|
329
|
+
childKeys: [],
|
|
330
|
+
routstr21Models: [],
|
|
331
|
+
lastRoutstr21ModelsUpdate: null,
|
|
332
|
+
cachedReceiveTokens: [],
|
|
333
|
+
usageTracking: [],
|
|
334
|
+
clientIds: [],
|
|
335
|
+
setModelsFromAllProviders: (value) => {
|
|
336
|
+
const normalized = {};
|
|
337
|
+
for (const [baseUrl, models] of Object.entries(value)) {
|
|
338
|
+
normalized[normalizeBaseUrl(baseUrl)] = models;
|
|
339
|
+
}
|
|
340
|
+
void driver.setItem(
|
|
341
|
+
SDK_STORAGE_KEYS.MODELS_FROM_ALL_PROVIDERS,
|
|
342
|
+
normalized
|
|
343
|
+
);
|
|
344
|
+
set({ modelsFromAllProviders: normalized });
|
|
345
|
+
},
|
|
346
|
+
setLastUsedModel: (value) => {
|
|
347
|
+
void driver.setItem(SDK_STORAGE_KEYS.LAST_USED_MODEL, value);
|
|
348
|
+
set({ lastUsedModel: value });
|
|
349
|
+
},
|
|
350
|
+
setBaseUrlsList: (value) => {
|
|
351
|
+
const normalized = value.map((url) => normalizeBaseUrl(url));
|
|
352
|
+
void driver.setItem(SDK_STORAGE_KEYS.BASE_URLS_LIST, normalized);
|
|
353
|
+
set({ baseUrlsList: normalized });
|
|
354
|
+
},
|
|
355
|
+
setBaseUrlsLastUpdate: (value) => {
|
|
356
|
+
void driver.setItem(SDK_STORAGE_KEYS.LAST_BASE_URLS_UPDATE, value);
|
|
357
|
+
set({ lastBaseUrlsUpdate: value });
|
|
358
|
+
},
|
|
359
|
+
setDisabledProviders: (value) => {
|
|
360
|
+
const normalized = value.map((url) => normalizeBaseUrl(url));
|
|
361
|
+
void driver.setItem(SDK_STORAGE_KEYS.DISABLED_PROVIDERS, normalized);
|
|
362
|
+
set({ disabledProviders: normalized });
|
|
363
|
+
},
|
|
364
|
+
setMintsFromAllProviders: (value) => {
|
|
365
|
+
const normalized = {};
|
|
366
|
+
for (const [baseUrl, mints] of Object.entries(value)) {
|
|
367
|
+
normalized[normalizeBaseUrl(baseUrl)] = mints.map(
|
|
368
|
+
(mint) => mint.endsWith("/") ? mint.slice(0, -1) : mint
|
|
369
|
+
);
|
|
370
|
+
}
|
|
371
|
+
void driver.setItem(
|
|
372
|
+
SDK_STORAGE_KEYS.MINTS_FROM_ALL_PROVIDERS,
|
|
373
|
+
normalized
|
|
374
|
+
);
|
|
375
|
+
set({ mintsFromAllProviders: normalized });
|
|
376
|
+
},
|
|
377
|
+
setInfoFromAllProviders: (value) => {
|
|
378
|
+
const normalized = {};
|
|
379
|
+
for (const [baseUrl, info] of Object.entries(value)) {
|
|
380
|
+
normalized[normalizeBaseUrl(baseUrl)] = info;
|
|
381
|
+
}
|
|
382
|
+
void driver.setItem(SDK_STORAGE_KEYS.INFO_FROM_ALL_PROVIDERS, normalized);
|
|
383
|
+
set({ infoFromAllProviders: normalized });
|
|
384
|
+
},
|
|
385
|
+
setLastModelsUpdate: (value) => {
|
|
386
|
+
const normalized = {};
|
|
387
|
+
for (const [baseUrl, timestamp] of Object.entries(value)) {
|
|
388
|
+
normalized[normalizeBaseUrl(baseUrl)] = timestamp;
|
|
389
|
+
}
|
|
390
|
+
void driver.setItem(SDK_STORAGE_KEYS.LAST_MODELS_UPDATE, normalized);
|
|
391
|
+
set({ lastModelsUpdate: normalized });
|
|
392
|
+
},
|
|
393
|
+
setCachedTokens: (value) => {
|
|
394
|
+
set((state) => {
|
|
395
|
+
const updates = typeof value === "function" ? value(state.cachedTokens) : value;
|
|
396
|
+
const normalized = updates.map((entry) => ({
|
|
397
|
+
...entry,
|
|
398
|
+
baseUrl: normalizeBaseUrl(entry.baseUrl),
|
|
399
|
+
balance: typeof entry.balance === "number" ? entry.balance : getCashuTokenBalance(entry.token),
|
|
400
|
+
lastUsed: entry.lastUsed ?? null
|
|
401
|
+
}));
|
|
402
|
+
void driver.setItem(SDK_STORAGE_KEYS.LOCAL_CASHU_TOKENS, normalized);
|
|
403
|
+
return { cachedTokens: normalized };
|
|
404
|
+
});
|
|
405
|
+
},
|
|
406
|
+
setApiKeys: (value) => {
|
|
407
|
+
set((state) => {
|
|
408
|
+
const updates = typeof value === "function" ? value(state.apiKeys) : value;
|
|
409
|
+
const normalized = updates.map((entry) => ({
|
|
410
|
+
...entry,
|
|
411
|
+
baseUrl: normalizeBaseUrl(entry.baseUrl),
|
|
412
|
+
balance: entry.balance ?? 0,
|
|
413
|
+
lastUsed: entry.lastUsed ?? null
|
|
414
|
+
}));
|
|
415
|
+
void driver.setItem(SDK_STORAGE_KEYS.API_KEYS, normalized);
|
|
416
|
+
return { apiKeys: normalized };
|
|
417
|
+
});
|
|
418
|
+
},
|
|
419
|
+
setChildKeys: (value) => {
|
|
420
|
+
set((state) => {
|
|
421
|
+
const updates = typeof value === "function" ? value(state.childKeys) : value;
|
|
422
|
+
const normalized = updates.map((entry) => ({
|
|
423
|
+
parentBaseUrl: normalizeBaseUrl(entry.parentBaseUrl),
|
|
424
|
+
childKey: entry.childKey,
|
|
425
|
+
balance: entry.balance ?? 0,
|
|
426
|
+
balanceLimit: entry.balanceLimit,
|
|
427
|
+
validityDate: entry.validityDate,
|
|
428
|
+
createdAt: entry.createdAt ?? Date.now()
|
|
429
|
+
}));
|
|
430
|
+
void driver.setItem(SDK_STORAGE_KEYS.CHILD_KEYS, normalized);
|
|
431
|
+
return { childKeys: normalized };
|
|
432
|
+
});
|
|
433
|
+
},
|
|
434
|
+
setRoutstr21Models: (value) => {
|
|
435
|
+
void driver.setItem(SDK_STORAGE_KEYS.ROUTSTR21_MODELS, value);
|
|
436
|
+
set({ routstr21Models: value });
|
|
437
|
+
},
|
|
438
|
+
setRoutstr21ModelsLastUpdate: (value) => {
|
|
439
|
+
void driver.setItem(SDK_STORAGE_KEYS.LAST_ROUTSTR21_MODELS_UPDATE, value);
|
|
440
|
+
set({ lastRoutstr21ModelsUpdate: value });
|
|
441
|
+
},
|
|
442
|
+
setCachedReceiveTokens: (value) => {
|
|
443
|
+
const normalized = value.map((entry) => ({
|
|
444
|
+
token: entry.token,
|
|
445
|
+
amount: entry.amount,
|
|
446
|
+
unit: entry.unit || "sat",
|
|
447
|
+
createdAt: entry.createdAt ?? Date.now()
|
|
448
|
+
}));
|
|
449
|
+
void driver.setItem(SDK_STORAGE_KEYS.CACHED_RECEIVE_TOKENS, normalized);
|
|
450
|
+
set({ cachedReceiveTokens: normalized });
|
|
451
|
+
},
|
|
452
|
+
setUsageTracking: (value) => {
|
|
453
|
+
void driver.setItem(SDK_STORAGE_KEYS.USAGE_TRACKING, value);
|
|
454
|
+
set({ usageTracking: value });
|
|
455
|
+
},
|
|
456
|
+
setClientIds: (value) => {
|
|
457
|
+
set((state) => {
|
|
458
|
+
const updates = typeof value === "function" ? value(state.clientIds) : value;
|
|
459
|
+
const normalized = updates.map((entry) => ({
|
|
460
|
+
...entry,
|
|
461
|
+
baseUrl: normalizeBaseUrl(entry.baseUrl),
|
|
462
|
+
createdAt: entry.createdAt ?? Date.now(),
|
|
463
|
+
lastUsed: entry.lastUsed ?? null
|
|
464
|
+
}));
|
|
465
|
+
void driver.setItem(SDK_STORAGE_KEYS.CLIENT_IDS, normalized);
|
|
466
|
+
return { clientIds: normalized };
|
|
467
|
+
});
|
|
468
|
+
}
|
|
469
|
+
}));
|
|
470
|
+
var hydrateStoreFromDriver = async (store, driver) => {
|
|
316
471
|
const [
|
|
317
472
|
rawModels,
|
|
318
473
|
lastUsedModel,
|
|
@@ -328,7 +483,8 @@ var createSdkStore = async ({
|
|
|
328
483
|
rawRoutstr21Models,
|
|
329
484
|
rawLastRoutstr21ModelsUpdate,
|
|
330
485
|
rawCachedReceiveTokens,
|
|
331
|
-
rawUsageTracking
|
|
486
|
+
rawUsageTracking,
|
|
487
|
+
rawClientIds
|
|
332
488
|
] = await Promise.all([
|
|
333
489
|
driver.getItem(
|
|
334
490
|
SDK_STORAGE_KEYS.MODELS_FROM_ALL_PROVIDERS,
|
|
@@ -359,7 +515,8 @@ var createSdkStore = async ({
|
|
|
359
515
|
null
|
|
360
516
|
),
|
|
361
517
|
driver.getItem(SDK_STORAGE_KEYS.CACHED_RECEIVE_TOKENS, []),
|
|
362
|
-
driver.getItem(SDK_STORAGE_KEYS.USAGE_TRACKING, [])
|
|
518
|
+
driver.getItem(SDK_STORAGE_KEYS.USAGE_TRACKING, []),
|
|
519
|
+
driver.getItem(SDK_STORAGE_KEYS.CLIENT_IDS, [])
|
|
363
520
|
]);
|
|
364
521
|
const modelsFromAllProviders = Object.fromEntries(
|
|
365
522
|
Object.entries(rawModels).map(([baseUrl, models]) => [
|
|
@@ -418,7 +575,13 @@ var createSdkStore = async ({
|
|
|
418
575
|
createdAt: entry.createdAt ?? Date.now()
|
|
419
576
|
}));
|
|
420
577
|
const usageTracking = rawUsageTracking;
|
|
421
|
-
|
|
578
|
+
const clientIds = rawClientIds.map((entry) => ({
|
|
579
|
+
...entry,
|
|
580
|
+
baseUrl: normalizeBaseUrl(entry.baseUrl),
|
|
581
|
+
createdAt: entry.createdAt ?? Date.now(),
|
|
582
|
+
lastUsed: entry.lastUsed ?? null
|
|
583
|
+
}));
|
|
584
|
+
store.setState({
|
|
422
585
|
modelsFromAllProviders,
|
|
423
586
|
lastUsedModel,
|
|
424
587
|
baseUrlsList,
|
|
@@ -434,128 +597,17 @@ var createSdkStore = async ({
|
|
|
434
597
|
lastRoutstr21ModelsUpdate,
|
|
435
598
|
cachedReceiveTokens,
|
|
436
599
|
usageTracking,
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
setLastUsedModel: (value) => {
|
|
449
|
-
void driver.setItem(SDK_STORAGE_KEYS.LAST_USED_MODEL, value);
|
|
450
|
-
set({ lastUsedModel: value });
|
|
451
|
-
},
|
|
452
|
-
setBaseUrlsList: (value) => {
|
|
453
|
-
const normalized = value.map((url) => normalizeBaseUrl(url));
|
|
454
|
-
void driver.setItem(SDK_STORAGE_KEYS.BASE_URLS_LIST, normalized);
|
|
455
|
-
set({ baseUrlsList: normalized });
|
|
456
|
-
},
|
|
457
|
-
setBaseUrlsLastUpdate: (value) => {
|
|
458
|
-
void driver.setItem(SDK_STORAGE_KEYS.LAST_BASE_URLS_UPDATE, value);
|
|
459
|
-
set({ lastBaseUrlsUpdate: value });
|
|
460
|
-
},
|
|
461
|
-
setDisabledProviders: (value) => {
|
|
462
|
-
const normalized = value.map((url) => normalizeBaseUrl(url));
|
|
463
|
-
void driver.setItem(SDK_STORAGE_KEYS.DISABLED_PROVIDERS, normalized);
|
|
464
|
-
set({ disabledProviders: normalized });
|
|
465
|
-
},
|
|
466
|
-
setMintsFromAllProviders: (value) => {
|
|
467
|
-
const normalized = {};
|
|
468
|
-
for (const [baseUrl, mints] of Object.entries(value)) {
|
|
469
|
-
normalized[normalizeBaseUrl(baseUrl)] = mints.map(
|
|
470
|
-
(mint) => mint.endsWith("/") ? mint.slice(0, -1) : mint
|
|
471
|
-
);
|
|
472
|
-
}
|
|
473
|
-
void driver.setItem(
|
|
474
|
-
SDK_STORAGE_KEYS.MINTS_FROM_ALL_PROVIDERS,
|
|
475
|
-
normalized
|
|
476
|
-
);
|
|
477
|
-
set({ mintsFromAllProviders: normalized });
|
|
478
|
-
},
|
|
479
|
-
setInfoFromAllProviders: (value) => {
|
|
480
|
-
const normalized = {};
|
|
481
|
-
for (const [baseUrl, info] of Object.entries(value)) {
|
|
482
|
-
normalized[normalizeBaseUrl(baseUrl)] = info;
|
|
483
|
-
}
|
|
484
|
-
void driver.setItem(SDK_STORAGE_KEYS.INFO_FROM_ALL_PROVIDERS, normalized);
|
|
485
|
-
set({ infoFromAllProviders: normalized });
|
|
486
|
-
},
|
|
487
|
-
setLastModelsUpdate: (value) => {
|
|
488
|
-
const normalized = {};
|
|
489
|
-
for (const [baseUrl, timestamp] of Object.entries(value)) {
|
|
490
|
-
normalized[normalizeBaseUrl(baseUrl)] = timestamp;
|
|
491
|
-
}
|
|
492
|
-
void driver.setItem(SDK_STORAGE_KEYS.LAST_MODELS_UPDATE, normalized);
|
|
493
|
-
set({ lastModelsUpdate: normalized });
|
|
494
|
-
},
|
|
495
|
-
setCachedTokens: (value) => {
|
|
496
|
-
set((state) => {
|
|
497
|
-
const updates = typeof value === "function" ? value(state.cachedTokens) : value;
|
|
498
|
-
const normalized = updates.map((entry) => ({
|
|
499
|
-
...entry,
|
|
500
|
-
baseUrl: normalizeBaseUrl(entry.baseUrl),
|
|
501
|
-
balance: typeof entry.balance === "number" ? entry.balance : getCashuTokenBalance(entry.token),
|
|
502
|
-
lastUsed: entry.lastUsed ?? null
|
|
503
|
-
}));
|
|
504
|
-
void driver.setItem(SDK_STORAGE_KEYS.LOCAL_CASHU_TOKENS, normalized);
|
|
505
|
-
return { cachedTokens: normalized };
|
|
506
|
-
});
|
|
507
|
-
},
|
|
508
|
-
setApiKeys: (value) => {
|
|
509
|
-
set((state) => {
|
|
510
|
-
const updates = typeof value === "function" ? value(state.apiKeys) : value;
|
|
511
|
-
const normalized = updates.map((entry) => ({
|
|
512
|
-
...entry,
|
|
513
|
-
baseUrl: normalizeBaseUrl(entry.baseUrl),
|
|
514
|
-
balance: entry.balance ?? 0,
|
|
515
|
-
lastUsed: entry.lastUsed ?? null
|
|
516
|
-
}));
|
|
517
|
-
void driver.setItem(SDK_STORAGE_KEYS.API_KEYS, normalized);
|
|
518
|
-
return { apiKeys: normalized };
|
|
519
|
-
});
|
|
520
|
-
},
|
|
521
|
-
setChildKeys: (value) => {
|
|
522
|
-
set((state) => {
|
|
523
|
-
const updates = typeof value === "function" ? value(state.childKeys) : value;
|
|
524
|
-
const normalized = updates.map((entry) => ({
|
|
525
|
-
parentBaseUrl: normalizeBaseUrl(entry.parentBaseUrl),
|
|
526
|
-
childKey: entry.childKey,
|
|
527
|
-
balance: entry.balance ?? 0,
|
|
528
|
-
balanceLimit: entry.balanceLimit,
|
|
529
|
-
validityDate: entry.validityDate,
|
|
530
|
-
createdAt: entry.createdAt ?? Date.now()
|
|
531
|
-
}));
|
|
532
|
-
void driver.setItem(SDK_STORAGE_KEYS.CHILD_KEYS, normalized);
|
|
533
|
-
return { childKeys: normalized };
|
|
534
|
-
});
|
|
535
|
-
},
|
|
536
|
-
setRoutstr21Models: (value) => {
|
|
537
|
-
void driver.setItem(SDK_STORAGE_KEYS.ROUTSTR21_MODELS, value);
|
|
538
|
-
set({ routstr21Models: value });
|
|
539
|
-
},
|
|
540
|
-
setRoutstr21ModelsLastUpdate: (value) => {
|
|
541
|
-
void driver.setItem(SDK_STORAGE_KEYS.LAST_ROUTSTR21_MODELS_UPDATE, value);
|
|
542
|
-
set({ lastRoutstr21ModelsUpdate: value });
|
|
543
|
-
},
|
|
544
|
-
setCachedReceiveTokens: (value) => {
|
|
545
|
-
const normalized = value.map((entry) => ({
|
|
546
|
-
token: entry.token,
|
|
547
|
-
amount: entry.amount,
|
|
548
|
-
unit: entry.unit || "sat",
|
|
549
|
-
createdAt: entry.createdAt ?? Date.now()
|
|
550
|
-
}));
|
|
551
|
-
void driver.setItem(SDK_STORAGE_KEYS.CACHED_RECEIVE_TOKENS, normalized);
|
|
552
|
-
set({ cachedReceiveTokens: normalized });
|
|
553
|
-
},
|
|
554
|
-
setUsageTracking: (value) => {
|
|
555
|
-
void driver.setItem(SDK_STORAGE_KEYS.USAGE_TRACKING, value);
|
|
556
|
-
set({ usageTracking: value });
|
|
557
|
-
}
|
|
558
|
-
}));
|
|
600
|
+
clientIds
|
|
601
|
+
});
|
|
602
|
+
};
|
|
603
|
+
var createSdkStore = ({
|
|
604
|
+
driver
|
|
605
|
+
}) => {
|
|
606
|
+
const store = createEmptyStore(driver);
|
|
607
|
+
return {
|
|
608
|
+
store,
|
|
609
|
+
hydrate: hydrateStoreFromDriver(store, driver)
|
|
610
|
+
};
|
|
559
611
|
};
|
|
560
612
|
var createDiscoveryAdapterFromStore = (store) => ({
|
|
561
613
|
getCachedModels: () => store.getState().modelsFromAllProviders,
|
|
@@ -820,7 +872,7 @@ var createProviderRegistryFromStore = (store) => ({
|
|
|
820
872
|
});
|
|
821
873
|
|
|
822
874
|
// storage/index.ts
|
|
823
|
-
var
|
|
875
|
+
var isBrowser2 = () => {
|
|
824
876
|
try {
|
|
825
877
|
return typeof window !== "undefined" && typeof window.localStorage !== "undefined";
|
|
826
878
|
} catch {
|
|
@@ -840,7 +892,7 @@ var isBun2 = () => {
|
|
|
840
892
|
};
|
|
841
893
|
var getDefaultSdkDriver = () => {
|
|
842
894
|
if (defaultDriver) return defaultDriver;
|
|
843
|
-
if (
|
|
895
|
+
if (isBrowser2()) {
|
|
844
896
|
defaultDriver = localStorageDriver;
|
|
845
897
|
return defaultDriver;
|
|
846
898
|
}
|
|
@@ -855,12 +907,12 @@ var getDefaultSdkDriver = () => {
|
|
|
855
907
|
defaultDriver = createMemoryDriver();
|
|
856
908
|
return defaultDriver;
|
|
857
909
|
};
|
|
858
|
-
var
|
|
910
|
+
var defaultStore = null;
|
|
859
911
|
var getDefaultSdkStore = () => {
|
|
860
|
-
if (!
|
|
861
|
-
|
|
912
|
+
if (!defaultStore) {
|
|
913
|
+
defaultStore = createSdkStore({ driver: getDefaultSdkDriver() });
|
|
862
914
|
}
|
|
863
|
-
return
|
|
915
|
+
return defaultStore.hydrate.then(() => defaultStore.store);
|
|
864
916
|
};
|
|
865
917
|
var getDefaultDiscoveryAdapter = async () => createDiscoveryAdapterFromStore(await getDefaultSdkStore());
|
|
866
918
|
var getDefaultStorageAdapter = async () => createStorageAdapterFromStore(await getDefaultSdkStore());
|