@w3ux/observables-connect 0.9.12 → 0.9.13
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/util.d.ts +2 -2
- package/accounts/util.js +2 -2
- package/accounts/util.js.map +1 -1
- package/consts.d.ts +2 -3
- package/consts.js +1 -2
- package/consts.js.map +1 -1
- package/extensions/connect.js +3 -3
- package/extensions/connect.js.map +1 -1
- package/package.json +1 -1
package/accounts/util.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type { ExtensionAccount,
|
|
1
|
+
import type { ExtensionAccount, ImportedAccount, ProcessExtensionAccountsResult } from '@w3ux/types';
|
|
2
2
|
interface Config {
|
|
3
3
|
source: string;
|
|
4
4
|
ss58: number;
|
|
5
5
|
network: string;
|
|
6
6
|
}
|
|
7
|
-
export declare const processExtensionAccounts: (config: Config, currentAccounts: ExtensionAccount[], signer: unknown, accounts: ExtensionAccount[]) =>
|
|
7
|
+
export declare const processExtensionAccounts: (config: Config, currentAccounts: ExtensionAccount[], signer: unknown, accounts: ExtensionAccount[]) => ProcessExtensionAccountsResult;
|
|
8
8
|
export declare const formatExtensionAccounts: (accounts: ExtensionAccount[], ss58: number) => ExtensionAccount[];
|
|
9
9
|
export declare const getInExternalAccounts: (accounts: ImportedAccount[], network: string) => import("@w3ux/types").ExternalAccount[];
|
|
10
10
|
export {};
|
package/accounts/util.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { formatAccountSs58, isValidAddress } from '@w3ux/utils';
|
|
2
|
-
import {
|
|
2
|
+
import { defaultProcessExtensionResult } from '../consts';
|
|
3
3
|
import { getActiveAccountLocal, getLocalExternalAccounts } from './local';
|
|
4
4
|
export const processExtensionAccounts = (config, currentAccounts, signer, accounts) => {
|
|
5
5
|
const { source, ss58, network } = config;
|
|
6
6
|
if (!accounts.length) {
|
|
7
|
-
return
|
|
7
|
+
return defaultProcessExtensionResult;
|
|
8
8
|
}
|
|
9
9
|
accounts = formatExtensionAccounts(accounts, ss58);
|
|
10
10
|
const inExternal = getInExternalAccounts(accounts, network);
|
package/accounts/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/accounts/util.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC/D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"sources":["../src/accounts/util.ts"],"names":[],"mappings":"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","file":"util.js","sourcesContent":["/* @license Copyright 2024 w3ux authors & contributors\nSPDX-License-Identifier: GPL-3.0-only */\n\nimport type {\n ExtensionAccount,\n ImportedAccount,\n ProcessExtensionAccountsResult,\n} from '@w3ux/types'\nimport { formatAccountSs58, isValidAddress } from '@w3ux/utils'\nimport { defaultProcessExtensionResult } from '../consts'\nimport { getActiveAccountLocal, getLocalExternalAccounts } from './local'\n\n// Gets accounts to be imported and commits them to state\n\ninterface Config {\n source: string\n ss58: number\n network: string\n}\nexport const processExtensionAccounts = (\n config: Config,\n currentAccounts: ExtensionAccount[],\n signer: unknown,\n accounts: ExtensionAccount[]\n): ProcessExtensionAccountsResult => {\n const { source, ss58, network } = config\n if (!accounts.length) {\n return defaultProcessExtensionResult\n }\n\n // Get valid accounts from extension\n accounts = formatExtensionAccounts(accounts, ss58)\n\n // Remove accounts from local external accounts if present\n const inExternal = getInExternalAccounts(accounts, network)\n\n // Find any accounts that have been removed from this extension\n const removedAccounts = currentAccounts\n .filter((j) => j.source === source)\n .filter((j) => !accounts.find((i) => i.address === j.address))\n\n // Check whether active account is present in forgotten accounts\n const removedActiveAccount =\n removedAccounts.find(\n ({ address }) => address === getActiveAccountLocal(network, ss58)\n )?.address || null\n\n // Remove accounts that have already been added to `currentAccounts` via another extension\n accounts = accounts.filter(\n ({ address }) =>\n !currentAccounts.find(\n (j) => j.address === address && j.source !== 'external'\n )\n )\n\n // Format accounts properties\n accounts = accounts.map(({ address, name }) => ({\n address,\n name,\n source,\n signer,\n }))\n\n return {\n newAccounts: accounts,\n meta: {\n accountsToRemove: [...inExternal, ...removedAccounts],\n removedActiveAccount,\n },\n }\n}\n\n// Formats accounts to correct ss58 and removes invalid accounts\nexport const formatExtensionAccounts = (\n accounts: ExtensionAccount[],\n ss58: number\n) => {\n accounts = accounts\n // Remove accounts that do not contain correctly formatted addresses\n .filter(({ address }) => isValidAddress(address))\n // Reformat addresses to ensure default ss58 format\n .map((account) => {\n const formattedAddress = formatAccountSs58(account.address, ss58)\n if (!formattedAddress) {\n return null\n }\n account.address = formattedAddress\n return account\n })\n // Remove null entries resulting from invalid formatted addresses\n .filter((account) => account !== null)\n\n return accounts\n}\n\n// Gets accounts that exist in local external accounts\nexport const getInExternalAccounts = (\n accounts: ImportedAccount[],\n network: string\n) => {\n const localExternalAccounts = getLocalExternalAccounts(network)\n return (\n localExternalAccounts.filter(\n (a) => (accounts || []).find((b) => b.address === a.address) !== undefined\n ) || []\n )\n}\n"]}
|
package/consts.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare const
|
|
3
|
-
export declare const DefaultSS58 = 0;
|
|
1
|
+
import type { ProcessExtensionAccountsResult } from '@w3ux/types';
|
|
2
|
+
export declare const defaultProcessExtensionResult: ProcessExtensionAccountsResult;
|
|
4
3
|
export declare const ActiveExtensionsKey = "active_extensions";
|
package/consts.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
export const
|
|
1
|
+
export const defaultProcessExtensionResult = {
|
|
2
2
|
newAccounts: [],
|
|
3
3
|
meta: {
|
|
4
4
|
accountsToRemove: [],
|
|
5
5
|
removedActiveAccount: null,
|
|
6
6
|
},
|
|
7
7
|
};
|
|
8
|
-
export const DefaultSS58 = 0;
|
|
9
8
|
export const ActiveExtensionsKey = 'active_extensions';
|
|
10
9
|
|
|
11
10
|
//# sourceMappingURL=consts.js.map
|
package/consts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/consts.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"sources":["../src/consts.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,6BAA6B,GAAmC;IAC3E,WAAW,EAAE,EAAE;IACf,IAAI,EAAE;QACJ,gBAAgB,EAAE,EAAE;QACpB,oBAAoB,EAAE,IAAI;KAC3B;CACF,CAAA;AAGD,MAAM,CAAC,MAAM,mBAAmB,GAAG,mBAAmB,CAAA","file":"consts.js","sourcesContent":["/* @license Copyright 2024 w3ux authors & contributors\nSPDX-License-Identifier: GPL-3.0-only */\n\nimport type { ProcessExtensionAccountsResult } from '@w3ux/types'\n\nexport const defaultProcessExtensionResult: ProcessExtensionAccountsResult = {\n newAccounts: [],\n meta: {\n accountsToRemove: [],\n removedActiveAccount: null,\n },\n}\n\n// Local storage active extensions key\nexport const ActiveExtensionsKey = 'active_extensions'\n"]}
|
package/extensions/connect.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { enableExtensions } from '
|
|
2
|
-
import { addExtensionToLocal, getActiveExtensionsLocal, removeExtensionFromLocal, } from '
|
|
3
|
-
import { _extensionsStatus, _initialisedExtensions
|
|
1
|
+
import { enableExtensions } from './enable';
|
|
2
|
+
import { addExtensionToLocal, getActiveExtensionsLocal, removeExtensionFromLocal, } from './local';
|
|
3
|
+
import { _extensionsStatus, _initialisedExtensions } from './observables';
|
|
4
4
|
export const connectExtensions = async (dappName, ids) => {
|
|
5
5
|
const extensionIds = ids || getActiveExtensionsLocal();
|
|
6
6
|
if (!extensionIds.length) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/extensions/connect.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"sources":["../src/extensions/connect.ts"],"names":[],"mappings":"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","file":"connect.js","sourcesContent":["/* @license Copyright 2024 w3ux authors & contributors\nSPDX-License-Identifier: GPL-3.0-only */\n\nimport type { ExtensionEnableResults } from '@w3ux/types'\nimport { enableExtensions } from './enable'\nimport {\n addExtensionToLocal,\n getActiveExtensionsLocal,\n removeExtensionFromLocal,\n} from './local'\nimport { _extensionsStatus, _initialisedExtensions } from './observables'\n\n// Connects to previously connected extensions, or to a specific set of extensions\nexport const connectExtensions = async (\n dappName: string,\n ids?: string[]\n): Promise<{ connected: ExtensionEnableResults }> => {\n const extensionIds = ids || getActiveExtensionsLocal()\n if (!extensionIds.length) {\n return {\n connected: new Map(),\n }\n }\n\n // Get extensions and enable them\n const enableResults = await enableExtensions(extensionIds, dappName)\n\n // Determine which extensions are connected and which have errors\n const [connected, withError] = [\n filterConnectedExtensions(enableResults),\n filterFailedExtensions(enableResults),\n ]\n\n // Manage local storage depending on connection status\n Array.from(connected.keys()).forEach((id) => addExtensionToLocal(id))\n Array.from(withError.keys()).forEach((id) => removeExtensionFromLocal(id))\n\n // Handle new extension statuses\n const newStatus = { ..._extensionsStatus.getValue() }\n Array.from(connected.keys()).forEach((id) => {\n newStatus[id] = 'connected'\n })\n Array.from(withError.entries()).forEach(([id, { error }]) => {\n if (error.startsWith('Error')) {\n // Extension not found - remove from state\n if (error.substring(0, 17) === 'NotInstalledError') {\n delete newStatus[id]\n } else {\n // Assume extension not authenticated\n newStatus[id] = 'not_authenticated'\n }\n }\n })\n\n // Record initialised extensions\n const newInitialised = { ..._initialisedExtensions.getValue() }\n extensionIds.forEach((id) => {\n if (!newInitialised.includes(id)) {\n newInitialised.push(id)\n }\n })\n\n // Commit updates to observables\n _extensionsStatus.next(newStatus)\n _initialisedExtensions.next(newInitialised)\n\n return { connected }\n}\n\n// Filter successfully connected extensions\nconst filterConnectedExtensions = (\n extensions: ExtensionEnableResults\n): ExtensionEnableResults =>\n new Map(\n Array.from(extensions.entries()).filter(([, state]) => state.connected)\n )\n\n// Filter extensions that failed to connect\nconst filterFailedExtensions = (\n extensions: ExtensionEnableResults\n): ExtensionEnableResults =>\n new Map(\n Array.from(extensions.entries()).filter(([, state]) => !state.connected)\n )\n"]}
|