@pezkuwi/ui-keyring 3.16.6 → 3.16.8

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.
Files changed (178) hide show
  1. package/package.json +321 -7
  2. package/build/Base.js +0 -109
  3. package/build/Keyring.js +0 -304
  4. package/build/README.md +0 -136
  5. package/build/bundle.js +0 -4
  6. package/build/cjs/Base.d.ts +0 -30
  7. package/build/cjs/Base.js +0 -113
  8. package/build/cjs/Keyring.d.ts +0 -49
  9. package/build/cjs/Keyring.js +0 -308
  10. package/build/cjs/bundle.d.ts +0 -4
  11. package/build/cjs/bundle.js +0 -8
  12. package/build/cjs/defaults.js +0 -28
  13. package/build/cjs/index.js +0 -7
  14. package/build/cjs/observable/accounts.js +0 -6
  15. package/build/cjs/observable/addresses.js +0 -6
  16. package/build/cjs/observable/contracts.js +0 -6
  17. package/build/cjs/observable/env.js +0 -12
  18. package/build/cjs/observable/genericSubject.js +0 -47
  19. package/build/cjs/observable/index.js +0 -16
  20. package/build/cjs/observable/types.js +0 -2
  21. package/build/cjs/options/index.js +0 -116
  22. package/build/cjs/options/item.js +0 -16
  23. package/build/cjs/options/types.js +0 -2
  24. package/build/cjs/packageInfo.js +0 -4
  25. package/build/cjs/stores/Browser.js +0 -24
  26. package/build/cjs/stores/File.js +0 -72
  27. package/build/cjs/stores/index.js +0 -7
  28. package/build/cjs/types.js +0 -2
  29. package/build/defaults.d.ts +0 -6
  30. package/build/defaults.js +0 -22
  31. package/build/index.d.ts +0 -4
  32. package/build/index.js +0 -4
  33. package/build/observable/accounts.d.ts +0 -1
  34. package/build/observable/accounts.js +0 -3
  35. package/build/observable/addresses.d.ts +0 -1
  36. package/build/observable/addresses.js +0 -3
  37. package/build/observable/contracts.d.ts +0 -1
  38. package/build/observable/contracts.js +0 -3
  39. package/build/observable/env.d.ts +0 -6
  40. package/build/observable/env.js +0 -9
  41. package/build/observable/genericSubject.d.ts +0 -2
  42. package/build/observable/genericSubject.js +0 -44
  43. package/build/observable/index.d.ts +0 -8
  44. package/build/observable/index.js +0 -13
  45. package/build/observable/types.d.ts +0 -15
  46. package/build/observable/types.js +0 -1
  47. package/build/options/index.d.ts +0 -15
  48. package/build/options/index.js +0 -112
  49. package/build/options/item.d.ts +0 -2
  50. package/build/options/item.js +0 -13
  51. package/build/options/types.d.ts +0 -15
  52. package/build/options/types.js +0 -1
  53. package/build/package.json +0 -355
  54. package/build/packageDetect.d.ts +0 -1
  55. package/build/packageDetect.js +0 -4
  56. package/build/packageInfo.d.ts +0 -6
  57. package/build/packageInfo.js +0 -1
  58. package/build/stores/Browser.d.ts +0 -7
  59. package/build/stores/Browser.js +0 -19
  60. package/build/stores/File.d.ts +0 -12
  61. package/build/stores/File.js +0 -67
  62. package/build/stores/index.d.ts +0 -2
  63. package/build/stores/index.js +0 -2
  64. package/build/types.d.ts +0 -78
  65. package/build/types.js +0 -1
  66. package/build-tsc-cjs/packageDetect.js +0 -6
  67. package/src/Base.ts +0 -156
  68. package/src/Keyring.ts +0 -420
  69. package/src/bundle.ts +0 -10
  70. package/src/defaults.ts +0 -34
  71. package/src/index.ts +0 -10
  72. package/src/json.d.ts +0 -11
  73. package/src/observable/accounts.ts +0 -7
  74. package/src/observable/addresses.ts +0 -7
  75. package/src/observable/contracts.ts +0 -7
  76. package/src/observable/env.ts +0 -15
  77. package/src/observable/genericSubject.ts +0 -66
  78. package/src/observable/index.ts +0 -28
  79. package/src/observable/types.ts +0 -21
  80. package/src/options/index.ts +0 -150
  81. package/src/options/item.ts +0 -22
  82. package/src/options/types.ts +0 -23
  83. package/src/packageDetect.ts +0 -12
  84. package/src/packageInfo.ts +0 -6
  85. package/src/stores/Browser.ts +0 -28
  86. package/src/stores/File.ts +0 -94
  87. package/src/stores/index.ts +0 -5
  88. package/src/types.ts +0 -91
  89. package/tsconfig.build.json +0 -14
  90. package/tsconfig.build.tsbuildinfo +0 -1
  91. package/tsconfig.spec.json +0 -16
  92. /package/{build-tsc/Base.d.ts → Base.d.ts} +0 -0
  93. /package/{build-tsc-esm/Base.js → Base.js} +0 -0
  94. /package/{build-tsc/Keyring.d.ts → Keyring.d.ts} +0 -0
  95. /package/{build-tsc-esm/Keyring.js → Keyring.js} +0 -0
  96. /package/{build/LICENSE → LICENSE} +0 -0
  97. /package/{build/bundle-pezkuwi-ui-keyring.js → bundle-pezkuwi-ui-keyring.js} +0 -0
  98. /package/{build-tsc/bundle.d.ts → bundle.d.ts} +0 -0
  99. /package/{build-tsc-esm/bundle.js → bundle.js} +0 -0
  100. /package/{build → cjs}/Base.d.ts +0 -0
  101. /package/{build-tsc-cjs → cjs}/Base.js +0 -0
  102. /package/{build → cjs}/Keyring.d.ts +0 -0
  103. /package/{build-tsc-cjs → cjs}/Keyring.js +0 -0
  104. /package/{build → cjs}/bundle.d.ts +0 -0
  105. /package/{build-tsc-cjs → cjs}/bundle.js +0 -0
  106. /package/{build-tsc → cjs}/defaults.d.ts +0 -0
  107. /package/{build-tsc-cjs → cjs}/defaults.js +0 -0
  108. /package/{build-tsc → cjs}/index.d.ts +0 -0
  109. /package/{build-tsc-cjs → cjs}/index.js +0 -0
  110. /package/{build-tsc → cjs}/observable/accounts.d.ts +0 -0
  111. /package/{build-tsc-cjs → cjs}/observable/accounts.js +0 -0
  112. /package/{build-tsc → cjs}/observable/addresses.d.ts +0 -0
  113. /package/{build-tsc-cjs → cjs}/observable/addresses.js +0 -0
  114. /package/{build-tsc → cjs}/observable/contracts.d.ts +0 -0
  115. /package/{build-tsc-cjs → cjs}/observable/contracts.js +0 -0
  116. /package/{build-tsc → cjs}/observable/env.d.ts +0 -0
  117. /package/{build-tsc-cjs → cjs}/observable/env.js +0 -0
  118. /package/{build-tsc → cjs}/observable/genericSubject.d.ts +0 -0
  119. /package/{build-tsc-cjs → cjs}/observable/genericSubject.js +0 -0
  120. /package/{build-tsc → cjs}/observable/index.d.ts +0 -0
  121. /package/{build-tsc-cjs → cjs}/observable/index.js +0 -0
  122. /package/{build-tsc → cjs}/observable/types.d.ts +0 -0
  123. /package/{build-tsc-cjs → cjs}/observable/types.js +0 -0
  124. /package/{build-tsc → cjs}/options/index.d.ts +0 -0
  125. /package/{build-tsc-cjs → cjs}/options/index.js +0 -0
  126. /package/{build-tsc → cjs}/options/item.d.ts +0 -0
  127. /package/{build-tsc-cjs → cjs}/options/item.js +0 -0
  128. /package/{build-tsc → cjs}/options/types.d.ts +0 -0
  129. /package/{build-tsc-cjs → cjs}/options/types.js +0 -0
  130. /package/{build/cjs → cjs}/package.json +0 -0
  131. /package/{build-tsc → cjs}/packageDetect.d.ts +0 -0
  132. /package/{build/cjs → cjs}/packageDetect.js +0 -0
  133. /package/{build-tsc → cjs}/packageInfo.d.ts +0 -0
  134. /package/{build-tsc-cjs → cjs}/packageInfo.js +0 -0
  135. /package/{build-tsc → cjs}/stores/Browser.d.ts +0 -0
  136. /package/{build-tsc-cjs → cjs}/stores/Browser.js +0 -0
  137. /package/{build-tsc → cjs}/stores/File.d.ts +0 -0
  138. /package/{build-tsc-cjs → cjs}/stores/File.js +0 -0
  139. /package/{build-tsc → cjs}/stores/index.d.ts +0 -0
  140. /package/{build-tsc-cjs → cjs}/stores/index.js +0 -0
  141. /package/{build-tsc → cjs}/types.d.ts +0 -0
  142. /package/{build-tsc-cjs → cjs}/types.js +0 -0
  143. /package/{build/cjs/defaults.d.ts → defaults.d.ts} +0 -0
  144. /package/{build-tsc-esm/defaults.js → defaults.js} +0 -0
  145. /package/{build/cjs/index.d.ts → index.d.ts} +0 -0
  146. /package/{build-tsc-esm/index.js → index.js} +0 -0
  147. /package/{build/cjs/observable → observable}/accounts.d.ts +0 -0
  148. /package/{build-tsc-esm/observable → observable}/accounts.js +0 -0
  149. /package/{build/cjs/observable → observable}/addresses.d.ts +0 -0
  150. /package/{build-tsc-esm/observable → observable}/addresses.js +0 -0
  151. /package/{build/cjs/observable → observable}/contracts.d.ts +0 -0
  152. /package/{build-tsc-esm/observable → observable}/contracts.js +0 -0
  153. /package/{build/cjs/observable → observable}/env.d.ts +0 -0
  154. /package/{build-tsc-esm/observable → observable}/env.js +0 -0
  155. /package/{build/cjs/observable → observable}/genericSubject.d.ts +0 -0
  156. /package/{build-tsc-esm/observable → observable}/genericSubject.js +0 -0
  157. /package/{build/cjs/observable → observable}/index.d.ts +0 -0
  158. /package/{build-tsc-esm/observable → observable}/index.js +0 -0
  159. /package/{build/cjs/observable → observable}/types.d.ts +0 -0
  160. /package/{build-tsc-esm/observable → observable}/types.js +0 -0
  161. /package/{build/cjs/options → options}/index.d.ts +0 -0
  162. /package/{build-tsc-esm/options → options}/index.js +0 -0
  163. /package/{build/cjs/options → options}/item.d.ts +0 -0
  164. /package/{build-tsc-esm/options → options}/item.js +0 -0
  165. /package/{build/cjs/options → options}/types.d.ts +0 -0
  166. /package/{build-tsc-esm/options → options}/types.js +0 -0
  167. /package/{build/cjs/packageDetect.d.ts → packageDetect.d.ts} +0 -0
  168. /package/{build-tsc-esm/packageDetect.js → packageDetect.js} +0 -0
  169. /package/{build/cjs/packageInfo.d.ts → packageInfo.d.ts} +0 -0
  170. /package/{build-tsc-esm/packageInfo.js → packageInfo.js} +0 -0
  171. /package/{build/cjs/stores → stores}/Browser.d.ts +0 -0
  172. /package/{build-tsc-esm/stores → stores}/Browser.js +0 -0
  173. /package/{build/cjs/stores → stores}/File.d.ts +0 -0
  174. /package/{build-tsc-esm/stores → stores}/File.js +0 -0
  175. /package/{build/cjs/stores → stores}/index.d.ts +0 -0
  176. /package/{build-tsc-esm/stores → stores}/index.js +0 -0
  177. /package/{build/cjs/types.d.ts → types.d.ts} +0 -0
  178. /package/{build-tsc-esm/types.js → types.js} +0 -0
@@ -1,308 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Keyring = void 0;
4
- const keyring_1 = require("@pezkuwi/keyring");
5
- const ui_settings_1 = require("@pezkuwi/ui-settings");
6
- const util_1 = require("@pezkuwi/util");
7
- const util_crypto_1 = require("@pezkuwi/util-crypto");
8
- const env_js_1 = require("./observable/env.js");
9
- const index_js_1 = require("./options/index.js");
10
- const Base_js_1 = require("./Base.js");
11
- const defaults_js_1 = require("./defaults.js");
12
- const RECENT_EXPIRY = 24 * 60 * 60;
13
- class Keyring extends Base_js_1.Base {
14
- keyringOption = new index_js_1.KeyringOption();
15
- #stores = {
16
- account: () => this.accounts,
17
- address: () => this.addresses,
18
- contract: () => this.contracts
19
- };
20
- addExternal(address, meta = {}) {
21
- const pair = this.keyring.addFromAddress(address, (0, util_1.objectSpread)({}, meta, { isExternal: true }), null, meta?.type);
22
- return {
23
- json: this.saveAccount(pair),
24
- pair
25
- };
26
- }
27
- addHardware(address, hardwareType, meta = {}) {
28
- return this.addExternal(address, (0, util_1.objectSpread)({}, meta, { hardwareType, isHardware: true }));
29
- }
30
- addMultisig(addresses, threshold, meta = {}) {
31
- let address = (0, util_crypto_1.createKeyMulti)(addresses, threshold);
32
- // For Ethereum chains, the first 20 bytes of the hash indicates the actual address
33
- // Testcases via creation and on-chain events:
34
- // - input: 0x7a1671a0224c8927b08f978027d586ab6868de0d31bb5bc956b625ced2ab18c4
35
- // - output: 0x7a1671a0224c8927b08f978027d586ab6868de0d
36
- if (this.isEthereum) {
37
- address = address.slice(0, 20);
38
- }
39
- // we could use `sortAddresses`, but rather use internal encode/decode so we are 100%
40
- const who = (0, util_1.u8aSorted)(addresses.map((who) => this.decodeAddress(who))).map((who) => this.encodeAddress(who));
41
- return this.addExternal(address, (0, util_1.objectSpread)({}, meta, { isMultisig: true, threshold: (0, util_1.bnToBn)(threshold).toNumber(), who }));
42
- }
43
- addPair(pair, password) {
44
- this.keyring.addPair(pair);
45
- return {
46
- json: this.saveAccount(pair, password),
47
- pair
48
- };
49
- }
50
- addUri(suri, password, meta = {}, type) {
51
- const pair = this.keyring.addFromUri(suri, meta, type);
52
- return {
53
- json: this.saveAccount(pair, password),
54
- pair
55
- };
56
- }
57
- backupAccount(pair, password) {
58
- if (!pair.isLocked) {
59
- pair.lock();
60
- }
61
- pair.decodePkcs8(password);
62
- return pair.toJson(password);
63
- }
64
- async backupAccounts(addresses, password) {
65
- const accountPromises = addresses.map((address) => {
66
- return new Promise((resolve) => {
67
- this._store.get((0, defaults_js_1.accountKey)(address), resolve);
68
- });
69
- });
70
- const accounts = await Promise.all(accountPromises);
71
- return (0, util_1.objectSpread)({}, (0, util_crypto_1.jsonEncrypt)((0, util_1.stringToU8a)(JSON.stringify(accounts)), ['batch-pkcs8'], password), {
72
- accounts: accounts.map((account) => ({
73
- address: account.address,
74
- meta: account.meta
75
- }))
76
- });
77
- }
78
- createFromJson(json, meta = {}) {
79
- return this.keyring.createFromJson((0, util_1.objectSpread)({}, json, {
80
- meta: (0, util_1.objectSpread)({}, json.meta, meta)
81
- }));
82
- }
83
- createFromUri(suri, meta = {}, type) {
84
- return this.keyring.createFromUri(suri, meta, type);
85
- }
86
- encryptAccount(pair, password) {
87
- const json = pair.toJson(password);
88
- json.meta.whenEdited = Date.now();
89
- this.keyring.addFromJson(json);
90
- this.accounts.add(this._store, pair.address, json, pair.type);
91
- }
92
- forgetAccount(address) {
93
- this.keyring.removePair(address);
94
- this.accounts.remove(this._store, address);
95
- }
96
- forgetAddress(address) {
97
- this.addresses.remove(this._store, address);
98
- }
99
- forgetContract(address) {
100
- this.contracts.remove(this._store, address);
101
- }
102
- getAccount(address) {
103
- return this.getAddress(address, 'account');
104
- }
105
- getAccounts() {
106
- const available = this.accounts.subject.getValue();
107
- return Object
108
- .keys(available)
109
- .map((address) => this.getAddress(address, 'account'))
110
- .filter((account) => !!account &&
111
- (env_js_1.env.isDevelopment() ||
112
- account.meta.isTesting !== true));
113
- }
114
- getAddress(_address, type = null) {
115
- const address = (0, util_1.isString)(_address)
116
- ? _address
117
- : this.encodeAddress(_address);
118
- const publicKey = this.decodeAddress(address);
119
- const stores = type
120
- ? [this.#stores[type]]
121
- : Object.values(this.#stores);
122
- const info = stores.reduce((lastInfo, store) => (store().subject.getValue()[address] || lastInfo), undefined);
123
- return info && {
124
- address,
125
- meta: info.json.meta,
126
- publicKey
127
- };
128
- }
129
- getAddresses() {
130
- const available = this.addresses.subject.getValue();
131
- return Object
132
- .keys(available)
133
- .map((address) => this.getAddress(address))
134
- .filter((account) => !!account);
135
- }
136
- getContract(address) {
137
- return this.getAddress(address, 'contract');
138
- }
139
- getContracts() {
140
- const available = this.contracts.subject.getValue();
141
- return Object
142
- .entries(available)
143
- .filter(([, { json: { meta: { contract } } }]) => !!contract && contract.genesisHash === this.genesisHash)
144
- .map(([address]) => this.getContract(address))
145
- .filter((account) => !!account);
146
- }
147
- rewriteKey(json, key, hexAddr, creator) {
148
- if (hexAddr.startsWith('0x')) {
149
- return;
150
- }
151
- this._store.remove(key);
152
- this._store.set(creator(hexAddr), json);
153
- }
154
- loadAccount(json, key) {
155
- if (!json.meta.isTesting && json.encoded) {
156
- const pair = this.keyring.addFromJson(json, true);
157
- this.accounts.add(this._store, pair.address, json, pair.type);
158
- }
159
- const [, hexAddr] = key.split(':');
160
- this.rewriteKey(json, key, hexAddr.trim(), defaults_js_1.accountKey);
161
- }
162
- loadAddress(json, key) {
163
- const { isRecent, whenCreated = 0 } = json.meta;
164
- if (isRecent && (Date.now() - whenCreated) > RECENT_EXPIRY) {
165
- this._store.remove(key);
166
- return;
167
- }
168
- // We assume anything hex that is not 32bytes (64 + 2 bytes hex) is an Ethereum-like address
169
- // (this caters for both H160 addresses as well as full or compressed publicKeys) - in the case
170
- // of both ecdsa and ethereum, we keep it as-is
171
- const address = (0, util_1.isHex)(json.address) && json.address.length !== 66
172
- ? json.address
173
- : this.encodeAddress((0, util_1.isHex)(json.address)
174
- ? (0, util_1.hexToU8a)(json.address)
175
- // FIXME Just for the transition period (ignoreChecksum)
176
- : this.decodeAddress(json.address, true));
177
- const [, hexAddr] = key.split(':');
178
- this.addresses.add(this._store, address, json);
179
- this.rewriteKey(json, key, hexAddr, defaults_js_1.addressKey);
180
- }
181
- loadContract(json, key) {
182
- const address = this.encodeAddress(this.decodeAddress(json.address));
183
- const [, hexAddr] = key.split(':');
184
- // move genesisHash to top-level (TODO Remove from contracts section?)
185
- json.meta.genesisHash = json.meta.genesisHash || (json.meta.contract?.genesisHash);
186
- this.contracts.add(this._store, address, json);
187
- this.rewriteKey(json, key, hexAddr, defaults_js_1.contractKey);
188
- }
189
- loadInjected(address, meta, type) {
190
- const json = {
191
- address,
192
- meta: (0, util_1.objectSpread)({}, meta, { isInjected: true })
193
- };
194
- const pair = this.keyring.addFromAddress(address, json.meta, null, type);
195
- this.accounts.add(this._store, pair.address, json, pair.type);
196
- }
197
- allowGenesis(json) {
198
- if (json?.meta && this.genesisHash) {
199
- const hashes = Object.values(ui_settings_1.chains).find((hashes) => hashes.includes(this.genesisHash || '')) || [this.genesisHash];
200
- if (json.meta.genesisHash) {
201
- return hashes.includes(json.meta.genesisHash) || this.genesisHashes.includes(json.meta.genesisHash);
202
- }
203
- else if (json.meta.contract) {
204
- return hashes.includes(json.meta.contract.genesisHash);
205
- }
206
- }
207
- return true;
208
- }
209
- loadAll(options, injected = []) {
210
- super.initKeyring(options);
211
- this._store.all((key, json) => {
212
- if (!(0, util_1.isFunction)(options.filter) || options.filter(json)) {
213
- try {
214
- if (this.allowGenesis(json)) {
215
- if (defaults_js_1.accountRegex.test(key)) {
216
- this.loadAccount(json, key);
217
- }
218
- else if (defaults_js_1.addressRegex.test(key)) {
219
- this.loadAddress(json, key);
220
- }
221
- else if (defaults_js_1.contractRegex.test(key)) {
222
- this.loadContract(json, key);
223
- }
224
- }
225
- }
226
- catch {
227
- console.warn(`Keyring: Unable to load ${key}:${(0, util_1.stringify)(json)}`);
228
- }
229
- }
230
- });
231
- injected.forEach((account) => {
232
- if (this.allowGenesis(account)) {
233
- try {
234
- this.loadInjected(account.address, account.meta, account.type);
235
- }
236
- catch {
237
- console.warn(`Keyring: Unable to inject ${(0, util_1.stringify)(account)}`);
238
- }
239
- }
240
- });
241
- this.keyringOption.init(this);
242
- }
243
- restoreAccount(json, password) {
244
- const cryptoType = Array.isArray(json.encoding.content) ? json.encoding.content[1] : 'ed25519';
245
- const encType = Array.isArray(json.encoding.type) ? json.encoding.type : [json.encoding.type];
246
- const pair = (0, keyring_1.createPair)({ toSS58: this.encodeAddress, type: cryptoType }, { publicKey: this.decodeAddress(json.address, true) }, json.meta, (0, util_1.isHex)(json.encoded) ? (0, util_1.hexToU8a)(json.encoded) : (0, util_crypto_1.base64Decode)(json.encoded), encType);
247
- // unlock, save account and then lock (locking cleans secretKey, so needs to be last)
248
- pair.decodePkcs8(password);
249
- this.addPair(pair, password);
250
- pair.lock();
251
- return pair;
252
- }
253
- restoreAccounts(json, password) {
254
- const accounts = JSON.parse((0, util_1.u8aToString)((0, util_crypto_1.jsonDecrypt)(json, password)));
255
- accounts.forEach((account) => {
256
- this.loadAccount(account, (0, defaults_js_1.accountKey)(account.address));
257
- });
258
- }
259
- saveAccount(pair, password) {
260
- this.addTimestamp(pair);
261
- const json = pair.toJson(password);
262
- this.keyring.addFromJson(json);
263
- this.accounts.add(this._store, pair.address, json, pair.type);
264
- return json;
265
- }
266
- saveAccountMeta(pair, meta) {
267
- const address = pair.address;
268
- this._store.get((0, defaults_js_1.accountKey)(address), (json) => {
269
- pair.setMeta(meta);
270
- json.meta = pair.meta;
271
- this.accounts.add(this._store, address, json, pair.type);
272
- });
273
- }
274
- saveAddress(address, meta, type = 'address') {
275
- const available = this.addresses.subject.getValue();
276
- const json = available[address]?.json || {
277
- address,
278
- meta: {
279
- isRecent: undefined,
280
- whenCreated: Date.now()
281
- }
282
- };
283
- Object.keys(meta).forEach((key) => {
284
- json.meta[key] = meta[key];
285
- });
286
- delete json.meta.isRecent;
287
- this.#stores[type]().add(this._store, address, json);
288
- return json;
289
- }
290
- saveContract(address, meta) {
291
- return this.saveAddress(address, meta, 'contract');
292
- }
293
- saveRecent(address) {
294
- const available = this.addresses.subject.getValue();
295
- if (!available[address]) {
296
- this.addresses.add(this._store, address, {
297
- address,
298
- meta: {
299
- genesisHash: this.genesisHash,
300
- isRecent: true,
301
- whenCreated: Date.now()
302
- }
303
- });
304
- }
305
- return this.addresses.subject.getValue()[address];
306
- }
307
- }
308
- exports.Keyring = Keyring;
@@ -1,4 +0,0 @@
1
- import { Keyring } from './Keyring.js';
2
- export { packageInfo } from './packageInfo.js';
3
- export declare const keyring: Keyring;
4
- export { Keyring };
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Keyring = exports.keyring = exports.packageInfo = void 0;
4
- const Keyring_js_1 = require("./Keyring.js");
5
- Object.defineProperty(exports, "Keyring", { enumerable: true, get: function () { return Keyring_js_1.Keyring; } });
6
- var packageInfo_js_1 = require("./packageInfo.js");
7
- Object.defineProperty(exports, "packageInfo", { enumerable: true, get: function () { return packageInfo_js_1.packageInfo; } });
8
- exports.keyring = new Keyring_js_1.Keyring();
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.contractRegex = exports.addressRegex = exports.accountRegex = void 0;
4
- exports.accountKey = accountKey;
5
- exports.addressKey = addressKey;
6
- exports.contractKey = contractKey;
7
- const keyring_1 = require("@pezkuwi/keyring");
8
- const util_1 = require("@pezkuwi/util");
9
- const ACCOUNT_PREFIX = 'account:';
10
- const ADDRESS_PREFIX = 'address:';
11
- const CONTRACT_PREFIX = 'contract:';
12
- function toHex(address) {
13
- return (0, util_1.u8aToHex)(
14
- // When saving pre-checksum changes, ensure that we can decode
15
- (0, keyring_1.decodeAddress)(address, true));
16
- }
17
- function accountKey(address) {
18
- return `${ACCOUNT_PREFIX}${toHex(address)}`;
19
- }
20
- function addressKey(address) {
21
- return `${ADDRESS_PREFIX}${toHex(address)}`;
22
- }
23
- function contractKey(address) {
24
- return `${CONTRACT_PREFIX}${toHex(address)}`;
25
- }
26
- exports.accountRegex = new RegExp(`^${ACCOUNT_PREFIX}0x[0-9a-f]*`, '');
27
- exports.addressRegex = new RegExp(`^${ADDRESS_PREFIX}0x[0-9a-f]*`, '');
28
- exports.contractRegex = new RegExp(`^${CONTRACT_PREFIX}0x[0-9a-f]*`, '');
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- require("./packageDetect.js");
5
- const bundle_js_1 = require("./bundle.js");
6
- tslib_1.__exportStar(require("./bundle.js"), exports);
7
- exports.default = bundle_js_1.keyring;
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.accounts = void 0;
4
- const defaults_js_1 = require("../defaults.js");
5
- const genericSubject_js_1 = require("./genericSubject.js");
6
- exports.accounts = (0, genericSubject_js_1.genericSubject)(defaults_js_1.accountKey, true);
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.addresses = void 0;
4
- const defaults_js_1 = require("../defaults.js");
5
- const genericSubject_js_1 = require("./genericSubject.js");
6
- exports.addresses = (0, genericSubject_js_1.genericSubject)(defaults_js_1.addressKey);
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.contracts = void 0;
4
- const defaults_js_1 = require("../defaults.js");
5
- const genericSubject_js_1 = require("./genericSubject.js");
6
- exports.contracts = (0, genericSubject_js_1.genericSubject)(defaults_js_1.contractKey);
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.env = void 0;
4
- const rxjs_1 = require("rxjs");
5
- const subject = new rxjs_1.BehaviorSubject(false);
6
- exports.env = {
7
- isDevelopment: () => subject.getValue(),
8
- set: (isDevelopment) => {
9
- subject.next(isDevelopment);
10
- },
11
- subject
12
- };
@@ -1,47 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.genericSubject = genericSubject;
4
- const rxjs_1 = require("rxjs");
5
- const util_1 = require("@pezkuwi/util");
6
- const item_js_1 = require("../options/item.js");
7
- const env_js_1 = require("./env.js");
8
- function callNext(current, subject, withTest) {
9
- const isDevMode = env_js_1.env.isDevelopment();
10
- const filtered = {};
11
- Object.keys(current).forEach((key) => {
12
- const { json: { meta: { isTesting = false } = {} } = {} } = current[key];
13
- if (!withTest || isDevMode || isTesting !== true) {
14
- filtered[key] = current[key];
15
- }
16
- });
17
- subject.next(filtered);
18
- }
19
- function genericSubject(keyCreator, withTest = false) {
20
- let current = {};
21
- const subject = new rxjs_1.BehaviorSubject({});
22
- const next = () => callNext(current, subject, withTest);
23
- env_js_1.env.subject.subscribe(next);
24
- return {
25
- add: (store, address, json, type) => {
26
- current = (0, util_1.objectCopy)(current);
27
- current[address] = {
28
- json: (0, util_1.objectSpread)({}, json, { address }),
29
- option: (0, item_js_1.createOptionItem)(address, json.meta.name),
30
- type
31
- };
32
- // we do not store dev or injected accounts (external/transient)
33
- if (!json.meta.isInjected && (!json.meta.isTesting || env_js_1.env.isDevelopment())) {
34
- store.set(keyCreator(address), json);
35
- }
36
- next();
37
- return current[address];
38
- },
39
- remove: (store, address) => {
40
- current = (0, util_1.objectCopy)(current);
41
- delete current[address];
42
- store.remove(keyCreator(address));
43
- next();
44
- },
45
- subject
46
- };
47
- }
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.obervableAll = void 0;
4
- const rxjs_1 = require("rxjs");
5
- const accounts_js_1 = require("./accounts.js");
6
- const addresses_js_1 = require("./addresses.js");
7
- const contracts_js_1 = require("./contracts.js");
8
- exports.obervableAll = (0, rxjs_1.combineLatest)([
9
- accounts_js_1.accounts.subject,
10
- addresses_js_1.addresses.subject,
11
- contracts_js_1.contracts.subject
12
- ]).pipe((0, rxjs_1.map)(([accounts, addresses, contracts]) => ({
13
- accounts,
14
- addresses,
15
- contracts
16
- })));
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,116 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.KeyringOption = void 0;
4
- const rxjs_1 = require("rxjs");
5
- const index_js_1 = require("../observable/index.js");
6
- let hasCalledInitOptions = false;
7
- const sortByName = (a, b) => {
8
- const valueA = a.option.name;
9
- const valueB = b.option.name;
10
- return valueA.localeCompare(valueB);
11
- };
12
- const sortByCreated = (a, b) => {
13
- const valueA = a.json.meta.whenCreated || 0;
14
- const valueB = b.json.meta.whenCreated || 0;
15
- if (valueA < valueB) {
16
- return 1;
17
- }
18
- if (valueA > valueB) {
19
- return -1;
20
- }
21
- return 0;
22
- };
23
- class KeyringOption {
24
- #allSub = null;
25
- optionsSubject = new rxjs_1.BehaviorSubject(this.emptyOptions());
26
- createOptionHeader(name) {
27
- return {
28
- key: `header-${name.toLowerCase()}`,
29
- name,
30
- value: null
31
- };
32
- }
33
- init(keyring) {
34
- if (hasCalledInitOptions) {
35
- throw new Error('Unable to initialise options more than once');
36
- }
37
- this.#allSub = index_js_1.obervableAll.subscribe(() => {
38
- const opts = this.emptyOptions();
39
- this.addAccounts(keyring, opts);
40
- this.addAddresses(keyring, opts);
41
- this.addContracts(keyring, opts);
42
- opts.address = this.linkItems({ Addresses: opts.address, Recent: opts.recent });
43
- opts.account = this.linkItems({ Accounts: opts.account, Development: opts.testing });
44
- opts.contract = this.linkItems({ Contracts: opts.contract });
45
- opts.all = [].concat(opts.account, opts.address);
46
- opts.allPlus = [].concat(opts.account, opts.address, opts.contract);
47
- this.optionsSubject.next(opts);
48
- });
49
- hasCalledInitOptions = true;
50
- }
51
- clear() {
52
- if (this.#allSub) {
53
- this.#allSub.unsubscribe();
54
- }
55
- }
56
- linkItems(items) {
57
- return Object.keys(items).reduce((result, header) => {
58
- const options = items[header];
59
- return result.concat(options.length
60
- ? [this.createOptionHeader(header)]
61
- : [], options);
62
- }, []);
63
- }
64
- addAccounts(keyring, options) {
65
- const available = keyring.accounts.subject.getValue();
66
- Object
67
- .values(available)
68
- .sort(sortByName)
69
- .forEach(({ json: { meta: { isTesting = false } }, option }) => {
70
- if (!isTesting) {
71
- options.account.push(option);
72
- }
73
- else {
74
- options.testing.push(option);
75
- }
76
- });
77
- }
78
- addAddresses(keyring, options) {
79
- const available = keyring.addresses.subject.getValue();
80
- Object
81
- .values(available)
82
- .filter(({ json }) => !!json.meta.isRecent)
83
- .sort(sortByCreated)
84
- .forEach(({ option }) => {
85
- options.recent.push(option);
86
- });
87
- Object
88
- .values(available)
89
- .filter(({ json }) => !json.meta.isRecent)
90
- .sort(sortByName)
91
- .forEach(({ option }) => {
92
- options.address.push(option);
93
- });
94
- }
95
- addContracts(keyring, options) {
96
- const available = keyring.contracts.subject.getValue();
97
- Object
98
- .values(available)
99
- .sort(sortByName)
100
- .forEach(({ option }) => {
101
- options.contract.push(option);
102
- });
103
- }
104
- emptyOptions() {
105
- return {
106
- account: [],
107
- address: [],
108
- all: [],
109
- allPlus: [],
110
- contract: [],
111
- recent: [],
112
- testing: []
113
- };
114
- }
115
- }
116
- exports.KeyringOption = KeyringOption;
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createOptionItem = createOptionItem;
4
- const util_1 = require("@pezkuwi/util");
5
- function createOptionItem(address, _name) {
6
- const name = (0, util_1.isUndefined)(_name)
7
- ? ((address.length > 15)
8
- ? `${address.slice(0, 6)}…${address.slice(-6)}`
9
- : address)
10
- : _name;
11
- return {
12
- key: address,
13
- name,
14
- value: address
15
- };
16
- }
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,4 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.packageInfo = void 0;
4
- exports.packageInfo = { name: '@pezkuwi/ui-keyring', path: typeof __dirname === 'string' ? __dirname : 'auto', type: 'cjs', version: '3.16.6' };
@@ -1,24 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BrowserStore = void 0;
4
- const tslib_1 = require("tslib");
5
- const store_1 = tslib_1.__importDefault(require("store"));
6
- class BrowserStore {
7
- all(fn) {
8
- store_1.default.each((value, key) => {
9
- fn(key, value);
10
- });
11
- }
12
- get(key, fn) {
13
- fn(store_1.default.get(key));
14
- }
15
- remove(key, fn) {
16
- store_1.default.remove(key);
17
- fn && fn();
18
- }
19
- set(key, value, fn) {
20
- store_1.default.set(key, value);
21
- fn && fn();
22
- }
23
- }
24
- exports.BrowserStore = BrowserStore;