@w3ux/observables-connect 0.9.44 → 0.10.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.
Files changed (58) hide show
  1. package/accounts/index.cjs +167 -0
  2. package/accounts/index.d.cts +20 -0
  3. package/accounts/index.d.ts +20 -3
  4. package/accounts/index.js +132 -5
  5. package/extensions/index.cjs +394 -0
  6. package/extensions/index.d.cts +15 -0
  7. package/extensions/index.d.ts +15 -5
  8. package/extensions/index.js +351 -7
  9. package/index.cjs +155 -0
  10. package/index.d.cts +32 -0
  11. package/index.d.ts +32 -4
  12. package/index.js +104 -6
  13. package/package.json +14 -5
  14. package/accounts/get.d.ts +0 -2
  15. package/accounts/get.js +0 -34
  16. package/accounts/get.js.map +0 -1
  17. package/accounts/index.js.map +0 -1
  18. package/accounts/unsubs.d.ts +0 -3
  19. package/accounts/unsubs.js +0 -13
  20. package/accounts/unsubs.js.map +0 -1
  21. package/accounts/util.d.ts +0 -12
  22. package/accounts/util.js +0 -53
  23. package/accounts/util.js.map +0 -1
  24. package/consts.d.ts +0 -4
  25. package/consts.js +0 -10
  26. package/consts.js.map +0 -1
  27. package/extensions/connect.d.ts +0 -1
  28. package/extensions/connect.js +0 -39
  29. package/extensions/connect.js.map +0 -1
  30. package/extensions/discover.d.ts +0 -1
  31. package/extensions/discover.js +0 -47
  32. package/extensions/discover.js.map +0 -1
  33. package/extensions/enable.d.ts +0 -2
  34. package/extensions/enable.js +0 -42
  35. package/extensions/enable.js.map +0 -1
  36. package/extensions/index.js.map +0 -1
  37. package/extensions/init.d.ts +0 -4
  38. package/extensions/init.js +0 -46
  39. package/extensions/init.js.map +0 -1
  40. package/extensions/reconnect.d.ts +0 -1
  41. package/extensions/reconnect.js +0 -30
  42. package/extensions/reconnect.js.map +0 -1
  43. package/index.js.map +0 -1
  44. package/local.d.ts +0 -6
  45. package/local.js +0 -25
  46. package/local.js.map +0 -1
  47. package/observables.d.ts +0 -6
  48. package/observables.js +0 -11
  49. package/observables.js.map +0 -1
  50. package/subjects.d.ts +0 -8
  51. package/subjects.js +0 -12
  52. package/subjects.js.map +0 -1
  53. package/types.d.ts +0 -6
  54. package/types.js +0 -5
  55. package/types.js.map +0 -1
  56. package/util.d.ts +0 -10
  57. package/util.js +0 -27
  58. package/util.js.map +0 -1
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/accounts/index.ts
21
+ var accounts_exports = {};
22
+ __export(accounts_exports, {
23
+ addUnsub: () => addUnsub,
24
+ formatExtensionAccounts: () => formatExtensionAccounts,
25
+ getAccountsFromExtensions: () => getAccountsFromExtensions,
26
+ processExtensionAccounts: () => processExtensionAccounts,
27
+ unsubAll: () => unsubAll,
28
+ unsubs: () => unsubs,
29
+ updateAccounts: () => updateAccounts
30
+ });
31
+ module.exports = __toCommonJS(accounts_exports);
32
+
33
+ // src/accounts/util.ts
34
+ var import_utils2 = require("@w3ux/utils");
35
+
36
+ // src/consts.ts
37
+ var DefaultProcessExtensionResult = {
38
+ newAccounts: [],
39
+ removedAccounts: []
40
+ };
41
+ var HardwareAccountsKey = "hardware_accounts";
42
+
43
+ // src/subjects.ts
44
+ var import_rxjs = require("rxjs");
45
+
46
+ // src/local.ts
47
+ var import_utils = require("@w3ux/utils");
48
+ var getHardwareAccountsLocal = () => {
49
+ const accounts = (0, import_utils.localStorageOrDefault)(
50
+ HardwareAccountsKey,
51
+ [],
52
+ true
53
+ );
54
+ return accounts;
55
+ };
56
+
57
+ // src/subjects.ts
58
+ var _extensionsStatus = new import_rxjs.BehaviorSubject({});
59
+ var _gettingExtensions = new import_rxjs.BehaviorSubject(true);
60
+ var _initialisedExtensions = new import_rxjs.BehaviorSubject([]);
61
+ var _reconnectSync = new import_rxjs.BehaviorSubject("unsynced");
62
+ var _extensionAccounts = new import_rxjs.BehaviorSubject([]);
63
+ var _hardwareAccounts = new import_rxjs.BehaviorSubject(
64
+ getHardwareAccountsLocal()
65
+ );
66
+
67
+ // src/accounts/util.ts
68
+ var processExtensionAccounts = (config, signer, newAccounts) => {
69
+ const { source, ss58 } = config;
70
+ if (!newAccounts.length) {
71
+ return DefaultProcessExtensionResult;
72
+ }
73
+ newAccounts = formatExtensionAccounts(newAccounts, ss58);
74
+ const removedAccounts = _extensionAccounts.getValue().filter((j) => j.source === source).filter((j) => !newAccounts.find((i) => i.address === j.address));
75
+ newAccounts = newAccounts.filter(
76
+ ({ address }) => !_extensionAccounts.getValue().find((j) => j.address === address)
77
+ );
78
+ newAccounts = newAccounts.map(({ address, name }) => ({
79
+ address,
80
+ name,
81
+ source,
82
+ signer
83
+ }));
84
+ updateAccounts({
85
+ add: newAccounts,
86
+ remove: removedAccounts
87
+ });
88
+ return {
89
+ newAccounts,
90
+ removedAccounts: [...removedAccounts]
91
+ };
92
+ };
93
+ var formatExtensionAccounts = (accounts, ss58) => {
94
+ accounts = accounts.filter(({ address }) => (0, import_utils2.isValidAddress)(address)).map((account) => {
95
+ const formattedAddress = (0, import_utils2.formatAccountSs58)(account.address, ss58);
96
+ if (!formattedAddress) {
97
+ return null;
98
+ }
99
+ account.address = formattedAddress;
100
+ return account;
101
+ }).filter((account) => account !== null);
102
+ return accounts;
103
+ };
104
+ var updateAccounts = ({
105
+ add,
106
+ remove
107
+ }) => {
108
+ const newAccounts = [..._extensionAccounts.getValue()].concat(add).filter((a) => remove.find((s) => s.address === a.address) === void 0);
109
+ _extensionAccounts.next(newAccounts);
110
+ };
111
+
112
+ // src/accounts/get.ts
113
+ var getAccountsFromExtensions = async (extensions, ss58) => {
114
+ try {
115
+ const results = await Promise.allSettled(
116
+ Array.from(extensions.values()).map(
117
+ ({ extension }) => extension.accounts.get()
118
+ )
119
+ );
120
+ const allAccounts = [];
121
+ const extensionEntries = Array.from(extensions.entries());
122
+ for (let i = 0; i < results.length; i++) {
123
+ const result = results[i];
124
+ const source = extensionEntries[i][0];
125
+ const signer = extensionEntries[i][1].extension.signer;
126
+ if (result.status === "fulfilled" && signer) {
127
+ const { value } = result;
128
+ const accounts = formatExtensionAccounts(value, ss58).filter(
129
+ ({ address }) => !allAccounts.find((a) => address === a.address)
130
+ ).map(({ address, name }) => ({
131
+ address,
132
+ name,
133
+ source,
134
+ signer
135
+ }));
136
+ allAccounts.push(...accounts);
137
+ }
138
+ }
139
+ return allAccounts;
140
+ } catch (e) {
141
+ console.error("Error during account formatting: ", e);
142
+ return [];
143
+ }
144
+ };
145
+
146
+ // src/accounts/unsubs.ts
147
+ var unsubs = {};
148
+ var addUnsub = (id, unsub) => {
149
+ unsubs[id] = unsub;
150
+ };
151
+ var unsubAll = () => {
152
+ Object.values(unsubs).forEach((unsub) => {
153
+ unsub();
154
+ });
155
+ };
156
+ // Annotate the CommonJS export names for ESM import in node:
157
+ 0 && (module.exports = {
158
+ addUnsub,
159
+ formatExtensionAccounts,
160
+ getAccountsFromExtensions,
161
+ processExtensionAccounts,
162
+ unsubAll,
163
+ unsubs,
164
+ updateAccounts
165
+ });
166
+ /* @license Copyright 2024 w3ux authors & contributors
167
+ SPDX-License-Identifier: GPL-3.0-only */
@@ -0,0 +1,20 @@
1
+ import { ExtensionEnableResults, ExtensionAccount, ProcessExtensionAccountsResult } from '@w3ux/types';
2
+
3
+ declare const getAccountsFromExtensions: (extensions: ExtensionEnableResults, ss58: number) => Promise<ExtensionAccount[]>;
4
+
5
+ declare const unsubs: Record<string, () => void>;
6
+ declare const addUnsub: (id: string, unsub: () => void) => void;
7
+ declare const unsubAll: () => void;
8
+
9
+ interface Config {
10
+ source: string;
11
+ ss58: number;
12
+ }
13
+ declare const processExtensionAccounts: (config: Config, signer: unknown, newAccounts: ExtensionAccount[]) => ProcessExtensionAccountsResult;
14
+ declare const formatExtensionAccounts: (accounts: ExtensionAccount[], ss58: number) => ExtensionAccount[];
15
+ declare const updateAccounts: ({ add, remove, }: {
16
+ add: ExtensionAccount[];
17
+ remove: ExtensionAccount[];
18
+ }) => void;
19
+
20
+ export { addUnsub, formatExtensionAccounts, getAccountsFromExtensions, processExtensionAccounts, unsubAll, unsubs, updateAccounts };
@@ -1,3 +1,20 @@
1
- export * from './get';
2
- export * from './unsubs';
3
- export * from './util';
1
+ import { ExtensionEnableResults, ExtensionAccount, ProcessExtensionAccountsResult } from '@w3ux/types';
2
+
3
+ declare const getAccountsFromExtensions: (extensions: ExtensionEnableResults, ss58: number) => Promise<ExtensionAccount[]>;
4
+
5
+ declare const unsubs: Record<string, () => void>;
6
+ declare const addUnsub: (id: string, unsub: () => void) => void;
7
+ declare const unsubAll: () => void;
8
+
9
+ interface Config {
10
+ source: string;
11
+ ss58: number;
12
+ }
13
+ declare const processExtensionAccounts: (config: Config, signer: unknown, newAccounts: ExtensionAccount[]) => ProcessExtensionAccountsResult;
14
+ declare const formatExtensionAccounts: (accounts: ExtensionAccount[], ss58: number) => ExtensionAccount[];
15
+ declare const updateAccounts: ({ add, remove, }: {
16
+ add: ExtensionAccount[];
17
+ remove: ExtensionAccount[];
18
+ }) => void;
19
+
20
+ export { addUnsub, formatExtensionAccounts, getAccountsFromExtensions, processExtensionAccounts, unsubAll, unsubs, updateAccounts };
package/accounts/index.js CHANGED
@@ -1,7 +1,134 @@
1
- export * from './get';
2
- export * from './unsubs';
3
- export * from './util';
1
+ // src/accounts/util.ts
2
+ import { formatAccountSs58, isValidAddress } from "@w3ux/utils";
4
3
 
5
- //# sourceMappingURL=index.js.map
4
+ // src/consts.ts
5
+ var DefaultProcessExtensionResult = {
6
+ newAccounts: [],
7
+ removedAccounts: []
8
+ };
9
+ var HardwareAccountsKey = "hardware_accounts";
6
10
 
7
- //# sourceMappingURL=index.js.map
11
+ // src/subjects.ts
12
+ import { BehaviorSubject } from "rxjs";
13
+
14
+ // src/local.ts
15
+ import { localStorageOrDefault } from "@w3ux/utils";
16
+ var getHardwareAccountsLocal = () => {
17
+ const accounts = localStorageOrDefault(
18
+ HardwareAccountsKey,
19
+ [],
20
+ true
21
+ );
22
+ return accounts;
23
+ };
24
+
25
+ // src/subjects.ts
26
+ var _extensionsStatus = new BehaviorSubject({});
27
+ var _gettingExtensions = new BehaviorSubject(true);
28
+ var _initialisedExtensions = new BehaviorSubject([]);
29
+ var _reconnectSync = new BehaviorSubject("unsynced");
30
+ var _extensionAccounts = new BehaviorSubject([]);
31
+ var _hardwareAccounts = new BehaviorSubject(
32
+ getHardwareAccountsLocal()
33
+ );
34
+
35
+ // src/accounts/util.ts
36
+ var processExtensionAccounts = (config, signer, newAccounts) => {
37
+ const { source, ss58 } = config;
38
+ if (!newAccounts.length) {
39
+ return DefaultProcessExtensionResult;
40
+ }
41
+ newAccounts = formatExtensionAccounts(newAccounts, ss58);
42
+ const removedAccounts = _extensionAccounts.getValue().filter((j) => j.source === source).filter((j) => !newAccounts.find((i) => i.address === j.address));
43
+ newAccounts = newAccounts.filter(
44
+ ({ address }) => !_extensionAccounts.getValue().find((j) => j.address === address)
45
+ );
46
+ newAccounts = newAccounts.map(({ address, name }) => ({
47
+ address,
48
+ name,
49
+ source,
50
+ signer
51
+ }));
52
+ updateAccounts({
53
+ add: newAccounts,
54
+ remove: removedAccounts
55
+ });
56
+ return {
57
+ newAccounts,
58
+ removedAccounts: [...removedAccounts]
59
+ };
60
+ };
61
+ var formatExtensionAccounts = (accounts, ss58) => {
62
+ accounts = accounts.filter(({ address }) => isValidAddress(address)).map((account) => {
63
+ const formattedAddress = formatAccountSs58(account.address, ss58);
64
+ if (!formattedAddress) {
65
+ return null;
66
+ }
67
+ account.address = formattedAddress;
68
+ return account;
69
+ }).filter((account) => account !== null);
70
+ return accounts;
71
+ };
72
+ var updateAccounts = ({
73
+ add,
74
+ remove
75
+ }) => {
76
+ const newAccounts = [..._extensionAccounts.getValue()].concat(add).filter((a) => remove.find((s) => s.address === a.address) === void 0);
77
+ _extensionAccounts.next(newAccounts);
78
+ };
79
+
80
+ // src/accounts/get.ts
81
+ var getAccountsFromExtensions = async (extensions, ss58) => {
82
+ try {
83
+ const results = await Promise.allSettled(
84
+ Array.from(extensions.values()).map(
85
+ ({ extension }) => extension.accounts.get()
86
+ )
87
+ );
88
+ const allAccounts = [];
89
+ const extensionEntries = Array.from(extensions.entries());
90
+ for (let i = 0; i < results.length; i++) {
91
+ const result = results[i];
92
+ const source = extensionEntries[i][0];
93
+ const signer = extensionEntries[i][1].extension.signer;
94
+ if (result.status === "fulfilled" && signer) {
95
+ const { value } = result;
96
+ const accounts = formatExtensionAccounts(value, ss58).filter(
97
+ ({ address }) => !allAccounts.find((a) => address === a.address)
98
+ ).map(({ address, name }) => ({
99
+ address,
100
+ name,
101
+ source,
102
+ signer
103
+ }));
104
+ allAccounts.push(...accounts);
105
+ }
106
+ }
107
+ return allAccounts;
108
+ } catch (e) {
109
+ console.error("Error during account formatting: ", e);
110
+ return [];
111
+ }
112
+ };
113
+
114
+ // src/accounts/unsubs.ts
115
+ var unsubs = {};
116
+ var addUnsub = (id, unsub) => {
117
+ unsubs[id] = unsub;
118
+ };
119
+ var unsubAll = () => {
120
+ Object.values(unsubs).forEach((unsub) => {
121
+ unsub();
122
+ });
123
+ };
124
+ export {
125
+ addUnsub,
126
+ formatExtensionAccounts,
127
+ getAccountsFromExtensions,
128
+ processExtensionAccounts,
129
+ unsubAll,
130
+ unsubs,
131
+ updateAccounts
132
+ };
133
+ /* @license Copyright 2024 w3ux authors & contributors
134
+ SPDX-License-Identifier: GPL-3.0-only */