@routstr/sdk 0.1.7 → 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 +140 -44
- package/dist/client/index.js.map +1 -1
- package/dist/client/index.mjs +140 -44
- 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 +4 -2
- package/dist/index.d.ts +4 -2
- package/dist/index.js +344 -178
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +344 -178
- package/dist/index.mjs.map +1 -1
- package/dist/storage/index.d.mts +52 -1
- package/dist/storage/index.d.ts +52 -1
- package/dist/storage/index.js +192 -131
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/index.mjs +192 -131
- package/dist/storage/index.mjs.map +1 -1
- package/dist/wallet/index.d.mts +7 -1
- package/dist/wallet/index.d.ts +7 -1
- package/dist/wallet/index.js +110 -41
- package/dist/wallet/index.js.map +1 -1
- package/dist/wallet/index.mjs +110 -41
- package/dist/wallet/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/storage/index.d.mts
CHANGED
|
@@ -45,6 +45,29 @@ interface SdkStorageState {
|
|
|
45
45
|
unit: "sat" | "msat";
|
|
46
46
|
createdAt: number;
|
|
47
47
|
}>;
|
|
48
|
+
usageTracking: Array<{
|
|
49
|
+
id: string;
|
|
50
|
+
timestamp: number;
|
|
51
|
+
modelId: string;
|
|
52
|
+
baseUrl: string;
|
|
53
|
+
requestId: string;
|
|
54
|
+
cost: number;
|
|
55
|
+
satsCost: number;
|
|
56
|
+
promptTokens: number;
|
|
57
|
+
completionTokens: number;
|
|
58
|
+
totalTokens: number;
|
|
59
|
+
client?: string;
|
|
60
|
+
sessionId?: string;
|
|
61
|
+
tags?: string[];
|
|
62
|
+
}>;
|
|
63
|
+
clientIds: Array<{
|
|
64
|
+
clientId: string;
|
|
65
|
+
name: string;
|
|
66
|
+
apiKey: string;
|
|
67
|
+
baseUrl: string;
|
|
68
|
+
createdAt: number;
|
|
69
|
+
lastUsed?: number | null;
|
|
70
|
+
}>;
|
|
48
71
|
}
|
|
49
72
|
|
|
50
73
|
declare const localStorageDriver: StorageDriver;
|
|
@@ -103,10 +126,36 @@ interface SdkStorageStore extends SdkStorageState {
|
|
|
103
126
|
unit: "sat" | "msat";
|
|
104
127
|
createdAt?: number;
|
|
105
128
|
}>) => void;
|
|
129
|
+
setUsageTracking: (value: Array<{
|
|
130
|
+
id: string;
|
|
131
|
+
timestamp: number;
|
|
132
|
+
modelId: string;
|
|
133
|
+
baseUrl: string;
|
|
134
|
+
requestId: string;
|
|
135
|
+
cost: number;
|
|
136
|
+
satsCost: number;
|
|
137
|
+
promptTokens: number;
|
|
138
|
+
completionTokens: number;
|
|
139
|
+
totalTokens: number;
|
|
140
|
+
client?: string;
|
|
141
|
+
sessionId?: string;
|
|
142
|
+
tags?: string[];
|
|
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;
|
|
106
152
|
}
|
|
107
153
|
/** Store type returned after async initialization */
|
|
108
154
|
type SdkStore = StoreApi<SdkStorageStore>;
|
|
109
|
-
declare const createSdkStore: ({ driver, }: SdkStoreOptions) =>
|
|
155
|
+
declare const createSdkStore: ({ driver, }: SdkStoreOptions) => {
|
|
156
|
+
store: SdkStore;
|
|
157
|
+
hydrate: Promise<void>;
|
|
158
|
+
};
|
|
110
159
|
declare const createDiscoveryAdapterFromStore: (store: SdkStore) => DiscoveryAdapter;
|
|
111
160
|
declare const createStorageAdapterFromStore: (store: SdkStore) => StorageAdapter;
|
|
112
161
|
declare const createProviderRegistryFromStore: (store: SdkStore) => ProviderRegistry;
|
|
@@ -126,6 +175,8 @@ declare const SDK_STORAGE_KEYS: {
|
|
|
126
175
|
readonly ROUTSTR21_MODELS: "routstr21Models";
|
|
127
176
|
readonly LAST_ROUTSTR21_MODELS_UPDATE: "lastRoutstr21ModelsUpdate";
|
|
128
177
|
readonly CACHED_RECEIVE_TOKENS: "cached_receive_tokens";
|
|
178
|
+
readonly USAGE_TRACKING: "usage_tracking";
|
|
179
|
+
readonly CLIENT_IDS: "client_ids";
|
|
129
180
|
};
|
|
130
181
|
|
|
131
182
|
declare const getDefaultSdkDriver: () => StorageDriver;
|
package/dist/storage/index.d.ts
CHANGED
|
@@ -45,6 +45,29 @@ interface SdkStorageState {
|
|
|
45
45
|
unit: "sat" | "msat";
|
|
46
46
|
createdAt: number;
|
|
47
47
|
}>;
|
|
48
|
+
usageTracking: Array<{
|
|
49
|
+
id: string;
|
|
50
|
+
timestamp: number;
|
|
51
|
+
modelId: string;
|
|
52
|
+
baseUrl: string;
|
|
53
|
+
requestId: string;
|
|
54
|
+
cost: number;
|
|
55
|
+
satsCost: number;
|
|
56
|
+
promptTokens: number;
|
|
57
|
+
completionTokens: number;
|
|
58
|
+
totalTokens: number;
|
|
59
|
+
client?: string;
|
|
60
|
+
sessionId?: string;
|
|
61
|
+
tags?: string[];
|
|
62
|
+
}>;
|
|
63
|
+
clientIds: Array<{
|
|
64
|
+
clientId: string;
|
|
65
|
+
name: string;
|
|
66
|
+
apiKey: string;
|
|
67
|
+
baseUrl: string;
|
|
68
|
+
createdAt: number;
|
|
69
|
+
lastUsed?: number | null;
|
|
70
|
+
}>;
|
|
48
71
|
}
|
|
49
72
|
|
|
50
73
|
declare const localStorageDriver: StorageDriver;
|
|
@@ -103,10 +126,36 @@ interface SdkStorageStore extends SdkStorageState {
|
|
|
103
126
|
unit: "sat" | "msat";
|
|
104
127
|
createdAt?: number;
|
|
105
128
|
}>) => void;
|
|
129
|
+
setUsageTracking: (value: Array<{
|
|
130
|
+
id: string;
|
|
131
|
+
timestamp: number;
|
|
132
|
+
modelId: string;
|
|
133
|
+
baseUrl: string;
|
|
134
|
+
requestId: string;
|
|
135
|
+
cost: number;
|
|
136
|
+
satsCost: number;
|
|
137
|
+
promptTokens: number;
|
|
138
|
+
completionTokens: number;
|
|
139
|
+
totalTokens: number;
|
|
140
|
+
client?: string;
|
|
141
|
+
sessionId?: string;
|
|
142
|
+
tags?: string[];
|
|
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;
|
|
106
152
|
}
|
|
107
153
|
/** Store type returned after async initialization */
|
|
108
154
|
type SdkStore = StoreApi<SdkStorageStore>;
|
|
109
|
-
declare const createSdkStore: ({ driver, }: SdkStoreOptions) =>
|
|
155
|
+
declare const createSdkStore: ({ driver, }: SdkStoreOptions) => {
|
|
156
|
+
store: SdkStore;
|
|
157
|
+
hydrate: Promise<void>;
|
|
158
|
+
};
|
|
110
159
|
declare const createDiscoveryAdapterFromStore: (store: SdkStore) => DiscoveryAdapter;
|
|
111
160
|
declare const createStorageAdapterFromStore: (store: SdkStore) => StorageAdapter;
|
|
112
161
|
declare const createProviderRegistryFromStore: (store: SdkStore) => ProviderRegistry;
|
|
@@ -126,6 +175,8 @@ declare const SDK_STORAGE_KEYS: {
|
|
|
126
175
|
readonly ROUTSTR21_MODELS: "routstr21Models";
|
|
127
176
|
readonly LAST_ROUTSTR21_MODELS_UPDATE: "lastRoutstr21ModelsUpdate";
|
|
128
177
|
readonly CACHED_RECEIVE_TOKENS: "cached_receive_tokens";
|
|
178
|
+
readonly USAGE_TRACKING: "usage_tracking";
|
|
179
|
+
readonly CLIENT_IDS: "client_ids";
|
|
129
180
|
};
|
|
130
181
|
|
|
131
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 = () => {
|
|
@@ -291,7 +295,9 @@ var SDK_STORAGE_KEYS = {
|
|
|
291
295
|
CHILD_KEYS: "child_keys",
|
|
292
296
|
ROUTSTR21_MODELS: "routstr21Models",
|
|
293
297
|
LAST_ROUTSTR21_MODELS_UPDATE: "lastRoutstr21ModelsUpdate",
|
|
294
|
-
CACHED_RECEIVE_TOKENS: "cached_receive_tokens"
|
|
298
|
+
CACHED_RECEIVE_TOKENS: "cached_receive_tokens",
|
|
299
|
+
USAGE_TRACKING: "usage_tracking",
|
|
300
|
+
CLIENT_IDS: "client_ids"
|
|
295
301
|
};
|
|
296
302
|
|
|
297
303
|
// storage/store.ts
|
|
@@ -309,9 +315,159 @@ var getCashuTokenBalance = (token) => {
|
|
|
309
315
|
return 0;
|
|
310
316
|
}
|
|
311
317
|
};
|
|
312
|
-
var
|
|
313
|
-
|
|
314
|
-
|
|
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) => {
|
|
315
471
|
const [
|
|
316
472
|
rawModels,
|
|
317
473
|
lastUsedModel,
|
|
@@ -326,7 +482,9 @@ var createSdkStore = async ({
|
|
|
326
482
|
rawChildKeys,
|
|
327
483
|
rawRoutstr21Models,
|
|
328
484
|
rawLastRoutstr21ModelsUpdate,
|
|
329
|
-
rawCachedReceiveTokens
|
|
485
|
+
rawCachedReceiveTokens,
|
|
486
|
+
rawUsageTracking,
|
|
487
|
+
rawClientIds
|
|
330
488
|
] = await Promise.all([
|
|
331
489
|
driver.getItem(
|
|
332
490
|
SDK_STORAGE_KEYS.MODELS_FROM_ALL_PROVIDERS,
|
|
@@ -356,7 +514,9 @@ var createSdkStore = async ({
|
|
|
356
514
|
SDK_STORAGE_KEYS.LAST_ROUTSTR21_MODELS_UPDATE,
|
|
357
515
|
null
|
|
358
516
|
),
|
|
359
|
-
driver.getItem(SDK_STORAGE_KEYS.CACHED_RECEIVE_TOKENS, [])
|
|
517
|
+
driver.getItem(SDK_STORAGE_KEYS.CACHED_RECEIVE_TOKENS, []),
|
|
518
|
+
driver.getItem(SDK_STORAGE_KEYS.USAGE_TRACKING, []),
|
|
519
|
+
driver.getItem(SDK_STORAGE_KEYS.CLIENT_IDS, [])
|
|
360
520
|
]);
|
|
361
521
|
const modelsFromAllProviders = Object.fromEntries(
|
|
362
522
|
Object.entries(rawModels).map(([baseUrl, models]) => [
|
|
@@ -414,7 +574,14 @@ var createSdkStore = async ({
|
|
|
414
574
|
unit: entry.unit || "sat",
|
|
415
575
|
createdAt: entry.createdAt ?? Date.now()
|
|
416
576
|
}));
|
|
417
|
-
|
|
577
|
+
const usageTracking = rawUsageTracking;
|
|
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({
|
|
418
585
|
modelsFromAllProviders,
|
|
419
586
|
lastUsedModel,
|
|
420
587
|
baseUrlsList,
|
|
@@ -429,124 +596,18 @@ var createSdkStore = async ({
|
|
|
429
596
|
routstr21Models,
|
|
430
597
|
lastRoutstr21ModelsUpdate,
|
|
431
598
|
cachedReceiveTokens,
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
void driver.setItem(SDK_STORAGE_KEYS.LAST_USED_MODEL, value);
|
|
445
|
-
set({ lastUsedModel: value });
|
|
446
|
-
},
|
|
447
|
-
setBaseUrlsList: (value) => {
|
|
448
|
-
const normalized = value.map((url) => normalizeBaseUrl(url));
|
|
449
|
-
void driver.setItem(SDK_STORAGE_KEYS.BASE_URLS_LIST, normalized);
|
|
450
|
-
set({ baseUrlsList: normalized });
|
|
451
|
-
},
|
|
452
|
-
setBaseUrlsLastUpdate: (value) => {
|
|
453
|
-
void driver.setItem(SDK_STORAGE_KEYS.LAST_BASE_URLS_UPDATE, value);
|
|
454
|
-
set({ lastBaseUrlsUpdate: value });
|
|
455
|
-
},
|
|
456
|
-
setDisabledProviders: (value) => {
|
|
457
|
-
const normalized = value.map((url) => normalizeBaseUrl(url));
|
|
458
|
-
void driver.setItem(SDK_STORAGE_KEYS.DISABLED_PROVIDERS, normalized);
|
|
459
|
-
set({ disabledProviders: normalized });
|
|
460
|
-
},
|
|
461
|
-
setMintsFromAllProviders: (value) => {
|
|
462
|
-
const normalized = {};
|
|
463
|
-
for (const [baseUrl, mints] of Object.entries(value)) {
|
|
464
|
-
normalized[normalizeBaseUrl(baseUrl)] = mints.map(
|
|
465
|
-
(mint) => mint.endsWith("/") ? mint.slice(0, -1) : mint
|
|
466
|
-
);
|
|
467
|
-
}
|
|
468
|
-
void driver.setItem(
|
|
469
|
-
SDK_STORAGE_KEYS.MINTS_FROM_ALL_PROVIDERS,
|
|
470
|
-
normalized
|
|
471
|
-
);
|
|
472
|
-
set({ mintsFromAllProviders: normalized });
|
|
473
|
-
},
|
|
474
|
-
setInfoFromAllProviders: (value) => {
|
|
475
|
-
const normalized = {};
|
|
476
|
-
for (const [baseUrl, info] of Object.entries(value)) {
|
|
477
|
-
normalized[normalizeBaseUrl(baseUrl)] = info;
|
|
478
|
-
}
|
|
479
|
-
void driver.setItem(SDK_STORAGE_KEYS.INFO_FROM_ALL_PROVIDERS, normalized);
|
|
480
|
-
set({ infoFromAllProviders: normalized });
|
|
481
|
-
},
|
|
482
|
-
setLastModelsUpdate: (value) => {
|
|
483
|
-
const normalized = {};
|
|
484
|
-
for (const [baseUrl, timestamp] of Object.entries(value)) {
|
|
485
|
-
normalized[normalizeBaseUrl(baseUrl)] = timestamp;
|
|
486
|
-
}
|
|
487
|
-
void driver.setItem(SDK_STORAGE_KEYS.LAST_MODELS_UPDATE, normalized);
|
|
488
|
-
set({ lastModelsUpdate: normalized });
|
|
489
|
-
},
|
|
490
|
-
setCachedTokens: (value) => {
|
|
491
|
-
set((state) => {
|
|
492
|
-
const updates = typeof value === "function" ? value(state.cachedTokens) : value;
|
|
493
|
-
const normalized = updates.map((entry) => ({
|
|
494
|
-
...entry,
|
|
495
|
-
baseUrl: normalizeBaseUrl(entry.baseUrl),
|
|
496
|
-
balance: typeof entry.balance === "number" ? entry.balance : getCashuTokenBalance(entry.token),
|
|
497
|
-
lastUsed: entry.lastUsed ?? null
|
|
498
|
-
}));
|
|
499
|
-
void driver.setItem(SDK_STORAGE_KEYS.LOCAL_CASHU_TOKENS, normalized);
|
|
500
|
-
return { cachedTokens: normalized };
|
|
501
|
-
});
|
|
502
|
-
},
|
|
503
|
-
setApiKeys: (value) => {
|
|
504
|
-
set((state) => {
|
|
505
|
-
const updates = typeof value === "function" ? value(state.apiKeys) : value;
|
|
506
|
-
const normalized = updates.map((entry) => ({
|
|
507
|
-
...entry,
|
|
508
|
-
baseUrl: normalizeBaseUrl(entry.baseUrl),
|
|
509
|
-
balance: entry.balance ?? 0,
|
|
510
|
-
lastUsed: entry.lastUsed ?? null
|
|
511
|
-
}));
|
|
512
|
-
void driver.setItem(SDK_STORAGE_KEYS.API_KEYS, normalized);
|
|
513
|
-
return { apiKeys: normalized };
|
|
514
|
-
});
|
|
515
|
-
},
|
|
516
|
-
setChildKeys: (value) => {
|
|
517
|
-
set((state) => {
|
|
518
|
-
const updates = typeof value === "function" ? value(state.childKeys) : value;
|
|
519
|
-
const normalized = updates.map((entry) => ({
|
|
520
|
-
parentBaseUrl: normalizeBaseUrl(entry.parentBaseUrl),
|
|
521
|
-
childKey: entry.childKey,
|
|
522
|
-
balance: entry.balance ?? 0,
|
|
523
|
-
balanceLimit: entry.balanceLimit,
|
|
524
|
-
validityDate: entry.validityDate,
|
|
525
|
-
createdAt: entry.createdAt ?? Date.now()
|
|
526
|
-
}));
|
|
527
|
-
void driver.setItem(SDK_STORAGE_KEYS.CHILD_KEYS, normalized);
|
|
528
|
-
return { childKeys: normalized };
|
|
529
|
-
});
|
|
530
|
-
},
|
|
531
|
-
setRoutstr21Models: (value) => {
|
|
532
|
-
void driver.setItem(SDK_STORAGE_KEYS.ROUTSTR21_MODELS, value);
|
|
533
|
-
set({ routstr21Models: value });
|
|
534
|
-
},
|
|
535
|
-
setRoutstr21ModelsLastUpdate: (value) => {
|
|
536
|
-
void driver.setItem(SDK_STORAGE_KEYS.LAST_ROUTSTR21_MODELS_UPDATE, value);
|
|
537
|
-
set({ lastRoutstr21ModelsUpdate: value });
|
|
538
|
-
},
|
|
539
|
-
setCachedReceiveTokens: (value) => {
|
|
540
|
-
const normalized = value.map((entry) => ({
|
|
541
|
-
token: entry.token,
|
|
542
|
-
amount: entry.amount,
|
|
543
|
-
unit: entry.unit || "sat",
|
|
544
|
-
createdAt: entry.createdAt ?? Date.now()
|
|
545
|
-
}));
|
|
546
|
-
void driver.setItem(SDK_STORAGE_KEYS.CACHED_RECEIVE_TOKENS, normalized);
|
|
547
|
-
set({ cachedReceiveTokens: normalized });
|
|
548
|
-
}
|
|
549
|
-
}));
|
|
599
|
+
usageTracking,
|
|
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
|
+
};
|
|
550
611
|
};
|
|
551
612
|
var createDiscoveryAdapterFromStore = (store) => ({
|
|
552
613
|
getCachedModels: () => store.getState().modelsFromAllProviders,
|
|
@@ -811,7 +872,7 @@ var createProviderRegistryFromStore = (store) => ({
|
|
|
811
872
|
});
|
|
812
873
|
|
|
813
874
|
// storage/index.ts
|
|
814
|
-
var
|
|
875
|
+
var isBrowser2 = () => {
|
|
815
876
|
try {
|
|
816
877
|
return typeof window !== "undefined" && typeof window.localStorage !== "undefined";
|
|
817
878
|
} catch {
|
|
@@ -831,7 +892,7 @@ var isBun2 = () => {
|
|
|
831
892
|
};
|
|
832
893
|
var getDefaultSdkDriver = () => {
|
|
833
894
|
if (defaultDriver) return defaultDriver;
|
|
834
|
-
if (
|
|
895
|
+
if (isBrowser2()) {
|
|
835
896
|
defaultDriver = localStorageDriver;
|
|
836
897
|
return defaultDriver;
|
|
837
898
|
}
|
|
@@ -846,12 +907,12 @@ var getDefaultSdkDriver = () => {
|
|
|
846
907
|
defaultDriver = createMemoryDriver();
|
|
847
908
|
return defaultDriver;
|
|
848
909
|
};
|
|
849
|
-
var
|
|
910
|
+
var defaultStore = null;
|
|
850
911
|
var getDefaultSdkStore = () => {
|
|
851
|
-
if (!
|
|
852
|
-
|
|
912
|
+
if (!defaultStore) {
|
|
913
|
+
defaultStore = createSdkStore({ driver: getDefaultSdkDriver() });
|
|
853
914
|
}
|
|
854
|
-
return
|
|
915
|
+
return defaultStore.hydrate.then(() => defaultStore.store);
|
|
855
916
|
};
|
|
856
917
|
var getDefaultDiscoveryAdapter = async () => createDiscoveryAdapterFromStore(await getDefaultSdkStore());
|
|
857
918
|
var getDefaultStorageAdapter = async () => createStorageAdapterFromStore(await getDefaultSdkStore());
|