@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.
- package/accounts/index.cjs +167 -0
- package/accounts/index.d.cts +20 -0
- package/accounts/index.d.ts +20 -3
- package/accounts/index.js +132 -5
- package/extensions/index.cjs +394 -0
- package/extensions/index.d.cts +15 -0
- package/extensions/index.d.ts +15 -5
- package/extensions/index.js +351 -7
- package/index.cjs +155 -0
- package/index.d.cts +32 -0
- package/index.d.ts +32 -4
- package/index.js +104 -6
- package/package.json +14 -5
- package/accounts/get.d.ts +0 -2
- package/accounts/get.js +0 -34
- package/accounts/get.js.map +0 -1
- package/accounts/index.js.map +0 -1
- package/accounts/unsubs.d.ts +0 -3
- package/accounts/unsubs.js +0 -13
- package/accounts/unsubs.js.map +0 -1
- package/accounts/util.d.ts +0 -12
- package/accounts/util.js +0 -53
- package/accounts/util.js.map +0 -1
- package/consts.d.ts +0 -4
- package/consts.js +0 -10
- package/consts.js.map +0 -1
- package/extensions/connect.d.ts +0 -1
- package/extensions/connect.js +0 -39
- package/extensions/connect.js.map +0 -1
- package/extensions/discover.d.ts +0 -1
- package/extensions/discover.js +0 -47
- package/extensions/discover.js.map +0 -1
- package/extensions/enable.d.ts +0 -2
- package/extensions/enable.js +0 -42
- package/extensions/enable.js.map +0 -1
- package/extensions/index.js.map +0 -1
- package/extensions/init.d.ts +0 -4
- package/extensions/init.js +0 -46
- package/extensions/init.js.map +0 -1
- package/extensions/reconnect.d.ts +0 -1
- package/extensions/reconnect.js +0 -30
- package/extensions/reconnect.js.map +0 -1
- package/index.js.map +0 -1
- package/local.d.ts +0 -6
- package/local.js +0 -25
- package/local.js.map +0 -1
- package/observables.d.ts +0 -6
- package/observables.js +0 -11
- package/observables.js.map +0 -1
- package/subjects.d.ts +0 -8
- package/subjects.js +0 -12
- package/subjects.js.map +0 -1
- package/types.d.ts +0 -6
- package/types.js +0 -5
- package/types.js.map +0 -1
- package/util.d.ts +0 -10
- package/util.js +0 -27
- 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 };
|
package/accounts/index.d.ts
CHANGED
|
@@ -1,3 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
export * from './util';
|
|
1
|
+
// src/accounts/util.ts
|
|
2
|
+
import { formatAccountSs58, isValidAddress } from "@w3ux/utils";
|
|
4
3
|
|
|
5
|
-
|
|
4
|
+
// src/consts.ts
|
|
5
|
+
var DefaultProcessExtensionResult = {
|
|
6
|
+
newAccounts: [],
|
|
7
|
+
removedAccounts: []
|
|
8
|
+
};
|
|
9
|
+
var HardwareAccountsKey = "hardware_accounts";
|
|
6
10
|
|
|
7
|
-
|
|
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 */
|