@shadow-corp/nearconnect 1.0.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/README.md +546 -0
- package/build/InjectedWallet.d.ts +22 -0
- package/build/InjectedWallet.js +58 -0
- package/build/InjectedWallet.js.map +1 -0
- package/build/NearConnector.d.ts +151 -0
- package/build/NearConnector.js +536 -0
- package/build/NearConnector.js.map +1 -0
- package/build/ParentFrameWallet.d.ts +22 -0
- package/build/ParentFrameWallet.js +66 -0
- package/build/ParentFrameWallet.js.map +1 -0
- package/build/SandboxedWallet/code.d.ts +7 -0
- package/build/SandboxedWallet/code.js +324 -0
- package/build/SandboxedWallet/code.js.map +1 -0
- package/build/SandboxedWallet/executor.d.ts +23 -0
- package/build/SandboxedWallet/executor.js +338 -0
- package/build/SandboxedWallet/executor.js.map +1 -0
- package/build/SandboxedWallet/iframe.d.ts +18 -0
- package/build/SandboxedWallet/iframe.js +78 -0
- package/build/SandboxedWallet/iframe.js.map +1 -0
- package/build/SandboxedWallet/index.d.ts +24 -0
- package/build/SandboxedWallet/index.js +54 -0
- package/build/SandboxedWallet/index.js.map +1 -0
- package/build/actions/index.d.ts +3 -0
- package/build/actions/index.js +105 -0
- package/build/actions/index.js.map +1 -0
- package/build/actions/types.d.ts +76 -0
- package/build/actions/types.js +3 -0
- package/build/actions/types.js.map +1 -0
- package/build/connection/health.d.ts +213 -0
- package/build/connection/health.js +391 -0
- package/build/connection/health.js.map +1 -0
- package/build/connection/index.d.ts +4 -0
- package/build/connection/index.js +48 -0
- package/build/connection/index.js.map +1 -0
- package/build/connection/reconnect.d.ts +261 -0
- package/build/connection/reconnect.js +454 -0
- package/build/connection/reconnect.js.map +1 -0
- package/build/connection/retry.d.ts +187 -0
- package/build/connection/retry.js +427 -0
- package/build/connection/retry.js.map +1 -0
- package/build/connection/state.d.ts +222 -0
- package/build/connection/state.js +431 -0
- package/build/connection/state.js.map +1 -0
- package/build/errors.d.ts +177 -0
- package/build/errors.js +546 -0
- package/build/errors.js.map +1 -0
- package/build/hardware/errors.d.ts +36 -0
- package/build/hardware/errors.js +127 -0
- package/build/hardware/errors.js.map +1 -0
- package/build/hardware/index.d.ts +7 -0
- package/build/hardware/index.js +39 -0
- package/build/hardware/index.js.map +1 -0
- package/build/hardware/near-app.d.ts +95 -0
- package/build/hardware/near-app.js +291 -0
- package/build/hardware/near-app.js.map +1 -0
- package/build/hardware/transport.d.ts +94 -0
- package/build/hardware/transport.js +267 -0
- package/build/hardware/transport.js.map +1 -0
- package/build/hardware/types.d.ts +98 -0
- package/build/hardware/types.js +72 -0
- package/build/hardware/types.js.map +1 -0
- package/build/helpers/analytics.d.ts +191 -0
- package/build/helpers/analytics.js +304 -0
- package/build/helpers/analytics.js.map +1 -0
- package/build/helpers/base58.d.ts +6 -0
- package/build/helpers/base58.js +47 -0
- package/build/helpers/base58.js.map +1 -0
- package/build/helpers/events.d.ts +42 -0
- package/build/helpers/events.js +68 -0
- package/build/helpers/events.js.map +1 -0
- package/build/helpers/html.d.ts +8 -0
- package/build/helpers/html.js +30 -0
- package/build/helpers/html.js.map +1 -0
- package/build/helpers/indexdb.d.ts +14 -0
- package/build/helpers/indexdb.js +166 -0
- package/build/helpers/indexdb.js.map +1 -0
- package/build/helpers/manifest.d.ts +147 -0
- package/build/helpers/manifest.js +329 -0
- package/build/helpers/manifest.js.map +1 -0
- package/build/helpers/queue.d.ts +11 -0
- package/build/helpers/queue.js +48 -0
- package/build/helpers/queue.js.map +1 -0
- package/build/helpers/session.d.ts +119 -0
- package/build/helpers/session.js +289 -0
- package/build/helpers/session.js.map +1 -0
- package/build/helpers/simulation.d.ts +128 -0
- package/build/helpers/simulation.js +441 -0
- package/build/helpers/simulation.js.map +1 -0
- package/build/helpers/storage.d.ts +58 -0
- package/build/helpers/storage.js +190 -0
- package/build/helpers/storage.js.map +1 -0
- package/build/helpers/trust.d.ts +157 -0
- package/build/helpers/trust.js +340 -0
- package/build/helpers/trust.js.map +1 -0
- package/build/helpers/url.d.ts +1 -0
- package/build/helpers/url.js +13 -0
- package/build/helpers/url.js.map +1 -0
- package/build/helpers/uuid.d.ts +1 -0
- package/build/helpers/uuid.js +14 -0
- package/build/helpers/uuid.js.map +1 -0
- package/build/index.d.ts +21 -0
- package/build/index.js +167 -0
- package/build/index.js.map +1 -0
- package/build/popups/IframeWalletPopup.d.ts +16 -0
- package/build/popups/IframeWalletPopup.js +38 -0
- package/build/popups/IframeWalletPopup.js.map +1 -0
- package/build/popups/NearWalletsPopup.d.ts +25 -0
- package/build/popups/NearWalletsPopup.js +153 -0
- package/build/popups/NearWalletsPopup.js.map +1 -0
- package/build/popups/Popup.d.ts +22 -0
- package/build/popups/Popup.js +94 -0
- package/build/popups/Popup.js.map +1 -0
- package/build/popups/styles.d.ts +1 -0
- package/build/popups/styles.js +257 -0
- package/build/popups/styles.js.map +1 -0
- package/build/security/audit-log.d.ts +123 -0
- package/build/security/audit-log.js +268 -0
- package/build/security/audit-log.js.map +1 -0
- package/build/security/csp.d.ts +68 -0
- package/build/security/csp.js +328 -0
- package/build/security/csp.js.map +1 -0
- package/build/security/index.d.ts +10 -0
- package/build/security/index.js +42 -0
- package/build/security/index.js.map +1 -0
- package/build/security/origin-guard.d.ts +90 -0
- package/build/security/origin-guard.js +244 -0
- package/build/security/origin-guard.js.map +1 -0
- package/build/security/rate-limiter.d.ts +84 -0
- package/build/security/rate-limiter.js +212 -0
- package/build/security/rate-limiter.js.map +1 -0
- package/build/security/secure-storage.d.ts +77 -0
- package/build/security/secure-storage.js +242 -0
- package/build/security/secure-storage.js.map +1 -0
- package/build/security/transaction-guard.d.ts +71 -0
- package/build/security/transaction-guard.js +239 -0
- package/build/security/transaction-guard.js.map +1 -0
- package/build/types.d.ts +508 -0
- package/build/types.js +3 -0
- package/build/types.js.map +1 -0
- package/build/ui/AccountSwitcherModal.d.ts +53 -0
- package/build/ui/AccountSwitcherModal.js +239 -0
- package/build/ui/AccountSwitcherModal.js.map +1 -0
- package/build/ui/Modal.d.ts +84 -0
- package/build/ui/Modal.js +278 -0
- package/build/ui/Modal.js.map +1 -0
- package/build/ui/TransactionModal.d.ts +84 -0
- package/build/ui/TransactionModal.js +406 -0
- package/build/ui/TransactionModal.js.map +1 -0
- package/build/ui/WalletSelectorModal.d.ts +97 -0
- package/build/ui/WalletSelectorModal.js +481 -0
- package/build/ui/WalletSelectorModal.js.map +1 -0
- package/build/ui/icons.d.ts +19 -0
- package/build/ui/icons.js +65 -0
- package/build/ui/icons.js.map +1 -0
- package/build/ui/index.d.ts +10 -0
- package/build/ui/index.js +31 -0
- package/build/ui/index.js.map +1 -0
- package/build/ui/styles.d.ts +5 -0
- package/build/ui/styles.js +973 -0
- package/build/ui/styles.js.map +1 -0
- package/build/ui/theme.d.ts +133 -0
- package/build/ui/theme.js +204 -0
- package/build/ui/theme.js.map +1 -0
- package/build/wallets/external/index.d.ts +4 -0
- package/build/wallets/external/index.js +9 -0
- package/build/wallets/external/index.js.map +1 -0
- package/build/wallets/external/manager.d.ts +152 -0
- package/build/wallets/external/manager.js +586 -0
- package/build/wallets/external/manager.js.map +1 -0
- package/build/wallets/privileged/index.d.ts +5 -0
- package/build/wallets/privileged/index.js +12 -0
- package/build/wallets/privileged/index.js.map +1 -0
- package/build/wallets/privileged/ledger.d.ts +132 -0
- package/build/wallets/privileged/ledger.js +563 -0
- package/build/wallets/privileged/ledger.js.map +1 -0
- package/build/wallets/privileged/manager.d.ts +54 -0
- package/build/wallets/privileged/manager.js +174 -0
- package/build/wallets/privileged/manager.js.map +1 -0
- package/package.json +33 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare function escapeHtml(unsafe: string): string;
|
|
2
|
+
declare const htmlTag: unique symbol;
|
|
3
|
+
export interface HtmlString {
|
|
4
|
+
[htmlTag]: string;
|
|
5
|
+
html: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function html(strings: TemplateStringsArray, ...values: any[]): HtmlString;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.escapeHtml = escapeHtml;
|
|
4
|
+
exports.html = html;
|
|
5
|
+
function escapeHtml(unsafe) {
|
|
6
|
+
return unsafe
|
|
7
|
+
.replace(/&/g, "&")
|
|
8
|
+
.replace(/</g, "<")
|
|
9
|
+
.replace(/>/g, ">")
|
|
10
|
+
.replace(/"/g, """)
|
|
11
|
+
.replace(/'/g, "'");
|
|
12
|
+
}
|
|
13
|
+
const htmlTag = Symbol("htmlTag");
|
|
14
|
+
function html(strings, ...values) {
|
|
15
|
+
let result = strings[0];
|
|
16
|
+
for (let i = 0; i < values.length; i++) {
|
|
17
|
+
for (const value of Array.isArray(values[i]) ? values[i] : [values[i]]) {
|
|
18
|
+
const escaped = value?.[htmlTag] ? value[htmlTag] : escapeHtml(String(value ?? ""));
|
|
19
|
+
result += escaped;
|
|
20
|
+
}
|
|
21
|
+
result += strings[i + 1];
|
|
22
|
+
}
|
|
23
|
+
return Object.freeze({
|
|
24
|
+
[htmlTag]: result,
|
|
25
|
+
get html() {
|
|
26
|
+
return result;
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=html.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/helpers/html.ts"],"names":[],"mappings":";;AAAA,gCAOC;AASD,oBAkBC;AAlCD,SAAgB,UAAU,CAAC,MAAc;IACvC,OAAO,MAAM;SACV,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAOlC,SAAgB,IAAI,CAAC,OAA6B,EAAE,GAAG,MAAa;IAClE,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAExB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;YACpF,MAAM,IAAI,OAAO,CAAC;QACpB,CAAC;QAED,MAAM,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,CAAC,OAAO,CAAC,EAAE,MAAM;QACjB,IAAI,IAAI;YACN,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export default class IndexedDB {
|
|
2
|
+
dbName: string;
|
|
3
|
+
storeName: string;
|
|
4
|
+
version: number;
|
|
5
|
+
constructor(dbName: string, storeName: string);
|
|
6
|
+
getDb(): Promise<IDBDatabase>;
|
|
7
|
+
getItem<T>(key: string | number): Promise<T | null>;
|
|
8
|
+
setItem(key: string | number, value: any): Promise<void>;
|
|
9
|
+
removeItem(key: string | number): Promise<void>;
|
|
10
|
+
keys(): Promise<unknown>;
|
|
11
|
+
count(): Promise<unknown>;
|
|
12
|
+
length(): Promise<unknown>;
|
|
13
|
+
clear(): Promise<void>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
class IndexedDB {
|
|
4
|
+
dbName;
|
|
5
|
+
storeName;
|
|
6
|
+
version;
|
|
7
|
+
constructor(dbName, storeName) {
|
|
8
|
+
this.dbName = dbName;
|
|
9
|
+
this.storeName = storeName;
|
|
10
|
+
this.version = 1;
|
|
11
|
+
}
|
|
12
|
+
getDb() {
|
|
13
|
+
return new Promise((resolve, reject) => {
|
|
14
|
+
if (typeof window === "undefined" || typeof indexedDB === "undefined") {
|
|
15
|
+
reject(new Error("IndexedDB is not available (SSR environment)"));
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
const request = indexedDB.open(this.dbName, this.version);
|
|
19
|
+
request.onerror = (event) => {
|
|
20
|
+
console.error("Error opening database:", event.target.error);
|
|
21
|
+
reject(new Error("Error opening database"));
|
|
22
|
+
};
|
|
23
|
+
request.onsuccess = (event) => {
|
|
24
|
+
resolve(request.result);
|
|
25
|
+
};
|
|
26
|
+
request.onupgradeneeded = (event) => {
|
|
27
|
+
const db = request.result;
|
|
28
|
+
const existingStores = db.objectStoreNames;
|
|
29
|
+
if (!existingStores.contains(this.storeName)) {
|
|
30
|
+
db.createObjectStore(this.storeName);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
async getItem(key) {
|
|
36
|
+
const db = await this.getDb();
|
|
37
|
+
if (typeof key === "number") {
|
|
38
|
+
key = key.toString();
|
|
39
|
+
}
|
|
40
|
+
if (typeof key !== "string") {
|
|
41
|
+
throw new Error("Key must be a string");
|
|
42
|
+
}
|
|
43
|
+
return new Promise((resolve, reject) => {
|
|
44
|
+
if (!this.storeName) {
|
|
45
|
+
reject(new Error("Store name not set"));
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
const transaction = db.transaction(this.storeName, "readonly");
|
|
49
|
+
transaction.onerror = (event) => reject(transaction.error);
|
|
50
|
+
const store = transaction.objectStore(this.storeName);
|
|
51
|
+
const request = store.get(key);
|
|
52
|
+
request.onerror = (event) => reject(request.error);
|
|
53
|
+
request.onsuccess = () => {
|
|
54
|
+
resolve(request.result);
|
|
55
|
+
db.close();
|
|
56
|
+
};
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
async setItem(key, value) {
|
|
60
|
+
const db = await this.getDb();
|
|
61
|
+
if (typeof key === "number") {
|
|
62
|
+
key = key.toString();
|
|
63
|
+
}
|
|
64
|
+
if (typeof key !== "string") {
|
|
65
|
+
throw new Error("Key must be a string");
|
|
66
|
+
}
|
|
67
|
+
return new Promise((resolve, reject) => {
|
|
68
|
+
if (!this.storeName) {
|
|
69
|
+
reject(new Error("Store name not set"));
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const transaction = db.transaction(this.storeName, "readwrite");
|
|
73
|
+
transaction.onerror = (event) => reject(transaction.error);
|
|
74
|
+
const store = transaction.objectStore(this.storeName);
|
|
75
|
+
const request = store.put(value, key);
|
|
76
|
+
request.onerror = (event) => reject(request.error);
|
|
77
|
+
request.onsuccess = () => {
|
|
78
|
+
db.close();
|
|
79
|
+
resolve();
|
|
80
|
+
};
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
async removeItem(key) {
|
|
84
|
+
const db = await this.getDb();
|
|
85
|
+
if (typeof key === "number") {
|
|
86
|
+
key = key.toString();
|
|
87
|
+
}
|
|
88
|
+
if (typeof key !== "string") {
|
|
89
|
+
throw new Error("Key must be a string");
|
|
90
|
+
}
|
|
91
|
+
return new Promise((resolve, reject) => {
|
|
92
|
+
if (!this.storeName) {
|
|
93
|
+
reject(new Error("Store name not set"));
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
const transaction = db.transaction(this.storeName, "readwrite");
|
|
97
|
+
transaction.onerror = (event) => reject(transaction.error);
|
|
98
|
+
const store = transaction.objectStore(this.storeName);
|
|
99
|
+
const request = store.delete(key);
|
|
100
|
+
request.onerror = (event) => reject(request.error);
|
|
101
|
+
request.onsuccess = () => {
|
|
102
|
+
db.close();
|
|
103
|
+
resolve();
|
|
104
|
+
};
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
async keys() {
|
|
108
|
+
const db = await this.getDb();
|
|
109
|
+
return new Promise((resolve, reject) => {
|
|
110
|
+
if (!this.storeName) {
|
|
111
|
+
reject(new Error("Store name not set"));
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
const transaction = db.transaction(this.storeName, "readonly");
|
|
115
|
+
transaction.onerror = (event) => reject(transaction.error);
|
|
116
|
+
const store = transaction.objectStore(this.storeName);
|
|
117
|
+
const request = store.getAllKeys();
|
|
118
|
+
request.onerror = (event) => reject(request.error);
|
|
119
|
+
request.onsuccess = () => {
|
|
120
|
+
resolve(request.result);
|
|
121
|
+
db.close();
|
|
122
|
+
};
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
async count() {
|
|
126
|
+
const db = await this.getDb();
|
|
127
|
+
return new Promise((resolve, reject) => {
|
|
128
|
+
if (!this.storeName) {
|
|
129
|
+
reject(new Error("Store name not set"));
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
const transaction = db.transaction(this.storeName, "readonly");
|
|
133
|
+
transaction.onerror = (event) => reject(transaction.error);
|
|
134
|
+
const store = transaction.objectStore(this.storeName);
|
|
135
|
+
const request = store.count();
|
|
136
|
+
request.onerror = (event) => reject(request.error);
|
|
137
|
+
request.onsuccess = () => {
|
|
138
|
+
resolve(request.result);
|
|
139
|
+
db.close();
|
|
140
|
+
};
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
async length() {
|
|
144
|
+
return this.count();
|
|
145
|
+
}
|
|
146
|
+
async clear() {
|
|
147
|
+
const db = await this.getDb();
|
|
148
|
+
return new Promise((resolve, reject) => {
|
|
149
|
+
if (!this.storeName) {
|
|
150
|
+
reject(new Error("Store name not set"));
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
const transaction = db.transaction(this.storeName, "readwrite");
|
|
154
|
+
transaction.onerror = (event) => reject(transaction.error);
|
|
155
|
+
const store = transaction.objectStore(this.storeName);
|
|
156
|
+
const request = store.clear();
|
|
157
|
+
request.onerror = (event) => reject(request.error);
|
|
158
|
+
request.onsuccess = () => {
|
|
159
|
+
db.close();
|
|
160
|
+
resolve();
|
|
161
|
+
};
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
exports.default = IndexedDB;
|
|
166
|
+
//# sourceMappingURL=indexdb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexdb.js","sourceRoot":"","sources":["../../src/helpers/indexdb.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { WalletManifest, Network } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* Manifest source with metadata
|
|
4
|
+
*/
|
|
5
|
+
export interface ManifestSource {
|
|
6
|
+
/** Unique identifier for this source */
|
|
7
|
+
id: string;
|
|
8
|
+
/** Display name */
|
|
9
|
+
name: string;
|
|
10
|
+
/** URL to fetch manifest from */
|
|
11
|
+
url: string;
|
|
12
|
+
/** Priority (lower = higher priority) */
|
|
13
|
+
priority: number;
|
|
14
|
+
/** Whether this source is trusted */
|
|
15
|
+
trusted: boolean;
|
|
16
|
+
/** Last successful fetch timestamp */
|
|
17
|
+
lastFetched?: number;
|
|
18
|
+
/** Whether this source is enabled */
|
|
19
|
+
enabled: boolean;
|
|
20
|
+
/** Networks this source provides wallets for */
|
|
21
|
+
networks?: Network[];
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Fetched manifest with source metadata
|
|
25
|
+
*/
|
|
26
|
+
export interface FetchedManifest {
|
|
27
|
+
source: ManifestSource;
|
|
28
|
+
wallets: WalletManifest[];
|
|
29
|
+
version: string;
|
|
30
|
+
fetchedAt: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Manifest repository combining multiple sources
|
|
34
|
+
*/
|
|
35
|
+
export interface CombinedManifest {
|
|
36
|
+
wallets: WalletManifest[];
|
|
37
|
+
version: string;
|
|
38
|
+
sources: ManifestSource[];
|
|
39
|
+
lastUpdated: number;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Default manifest sources
|
|
43
|
+
*/
|
|
44
|
+
export declare const DEFAULT_MANIFEST_SOURCES: ManifestSource[];
|
|
45
|
+
/**
|
|
46
|
+
* Options for the federated manifest manager
|
|
47
|
+
*/
|
|
48
|
+
export interface FederatedManifestOptions {
|
|
49
|
+
/** Custom manifest sources */
|
|
50
|
+
sources?: ManifestSource[];
|
|
51
|
+
/** Whether to use default sources */
|
|
52
|
+
useDefaults?: boolean;
|
|
53
|
+
/** Cache duration in milliseconds (default: 5 minutes) */
|
|
54
|
+
cacheDuration?: number;
|
|
55
|
+
/** Request timeout in milliseconds (default: 10 seconds) */
|
|
56
|
+
timeout?: number;
|
|
57
|
+
/** Maximum retries per source */
|
|
58
|
+
maxRetries?: number;
|
|
59
|
+
/** Retry delay in milliseconds */
|
|
60
|
+
retryDelay?: number;
|
|
61
|
+
/** Network to filter wallets for */
|
|
62
|
+
network?: Network;
|
|
63
|
+
/** Callback when manifest is updated */
|
|
64
|
+
onUpdate?: (manifest: CombinedManifest) => void;
|
|
65
|
+
/** Callback on fetch error */
|
|
66
|
+
onError?: (source: ManifestSource, error: Error) => void;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Federated Manifest Manager
|
|
70
|
+
*
|
|
71
|
+
* Aggregates wallet manifests from multiple sources with:
|
|
72
|
+
* - Priority-based merging (higher priority sources override lower)
|
|
73
|
+
* - Caching with TTL
|
|
74
|
+
* - Automatic retries
|
|
75
|
+
* - Health tracking per source
|
|
76
|
+
*/
|
|
77
|
+
export declare class FederatedManifestManager {
|
|
78
|
+
private sources;
|
|
79
|
+
private cache;
|
|
80
|
+
private cacheDuration;
|
|
81
|
+
private timeout;
|
|
82
|
+
private maxRetries;
|
|
83
|
+
private retryDelay;
|
|
84
|
+
private network;
|
|
85
|
+
private onUpdate?;
|
|
86
|
+
private onError?;
|
|
87
|
+
constructor(options?: FederatedManifestOptions);
|
|
88
|
+
/**
|
|
89
|
+
* Add a new manifest source
|
|
90
|
+
*/
|
|
91
|
+
addSource(source: ManifestSource): void;
|
|
92
|
+
/**
|
|
93
|
+
* Remove a manifest source
|
|
94
|
+
*/
|
|
95
|
+
removeSource(sourceId: string): void;
|
|
96
|
+
/**
|
|
97
|
+
* Enable/disable a source
|
|
98
|
+
*/
|
|
99
|
+
setSourceEnabled(sourceId: string, enabled: boolean): void;
|
|
100
|
+
/**
|
|
101
|
+
* Get all sources
|
|
102
|
+
*/
|
|
103
|
+
getSources(): ManifestSource[];
|
|
104
|
+
/**
|
|
105
|
+
* Fetch manifest from a single source
|
|
106
|
+
*/
|
|
107
|
+
fetchFromSource(source: ManifestSource): Promise<FetchedManifest | null>;
|
|
108
|
+
/**
|
|
109
|
+
* Fetch and combine manifests from all enabled sources
|
|
110
|
+
*/
|
|
111
|
+
fetchAll(): Promise<CombinedManifest>;
|
|
112
|
+
/**
|
|
113
|
+
* Clear the cache
|
|
114
|
+
*/
|
|
115
|
+
clearCache(): void;
|
|
116
|
+
/**
|
|
117
|
+
* Clear cache for a specific source
|
|
118
|
+
*/
|
|
119
|
+
clearSourceCache(sourceId: string): void;
|
|
120
|
+
/**
|
|
121
|
+
* Set the network filter
|
|
122
|
+
*/
|
|
123
|
+
setNetwork(network: Network): void;
|
|
124
|
+
/**
|
|
125
|
+
* Get cache status for all sources
|
|
126
|
+
*/
|
|
127
|
+
getCacheStatus(): Record<string, {
|
|
128
|
+
cached: boolean;
|
|
129
|
+
expiresAt?: number;
|
|
130
|
+
}>;
|
|
131
|
+
/**
|
|
132
|
+
* Register a custom wallet manifest (for debug/development)
|
|
133
|
+
*/
|
|
134
|
+
registerCustomWallet(wallet: WalletManifest): void;
|
|
135
|
+
/**
|
|
136
|
+
* Remove a custom wallet
|
|
137
|
+
*/
|
|
138
|
+
removeCustomWallet(walletId: string): void;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Validate a wallet manifest
|
|
142
|
+
*/
|
|
143
|
+
export declare function validateManifest(manifest: unknown): manifest is WalletManifest;
|
|
144
|
+
/**
|
|
145
|
+
* Merge wallet manifests with conflict resolution
|
|
146
|
+
*/
|
|
147
|
+
export declare function mergeManifests(base: WalletManifest[], override: WalletManifest[], strategy?: "override" | "merge"): WalletManifest[];
|