@w3ux/observables-connect 0.9.25 → 0.9.26
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.d.ts +1 -0
- package/accounts/index.js +1 -0
- package/accounts/index.js.map +1 -1
- package/accounts/observables.d.ts +2 -2
- package/accounts/observables.js +2 -2
- package/accounts/observables.js.map +1 -1
- package/accounts/reconnect.d.ts +1 -0
- package/accounts/reconnect.js +28 -0
- package/accounts/reconnect.js.map +1 -0
- package/accounts/state.d.ts +3 -0
- package/accounts/state.js +5 -1
- package/accounts/state.js.map +1 -1
- package/extensions/connect.js.map +1 -1
- package/package.json +1 -1
package/accounts/index.d.ts
CHANGED
package/accounts/index.js
CHANGED
package/accounts/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/accounts/index.ts"],"names":[],"mappings":"AAGA,cAAc,OAAO,CAAA;AACrB,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAC7B,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA","file":"index.js","sourcesContent":["/* @license Copyright 2024 w3ux authors & contributors\nSPDX-License-Identifier: GPL-3.0-only */\n\nexport * from './get'\nexport * from './local'\nexport * from './observables'\nexport * from './state'\nexport * from './util'\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/accounts/index.ts"],"names":[],"mappings":"AAGA,cAAc,OAAO,CAAA;AACrB,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA","file":"index.js","sourcesContent":["/* @license Copyright 2024 w3ux authors & contributors\nSPDX-License-Identifier: GPL-3.0-only */\n\nexport * from './get'\nexport * from './local'\nexport * from './observables'\nexport * from './reconnect'\nexport * from './state'\nexport * from './util'\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ImportedAccount, Sync } from '@w3ux/types';
|
|
2
2
|
import { BehaviorSubject } from 'rxjs';
|
|
3
|
-
export declare const
|
|
4
|
-
export declare const
|
|
3
|
+
export declare const _reconnectSync: BehaviorSubject<Sync>;
|
|
4
|
+
export declare const reconnectSync$: import("rxjs").Observable<Sync>;
|
|
5
5
|
export declare const _accounts: BehaviorSubject<ImportedAccount[]>;
|
|
6
6
|
export declare const accounts$: import("rxjs").Observable<ImportedAccount[]>;
|
package/accounts/observables.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BehaviorSubject } from 'rxjs';
|
|
2
|
-
export const
|
|
3
|
-
export const
|
|
2
|
+
export const _reconnectSync = new BehaviorSubject('unsynced');
|
|
3
|
+
export const reconnectSync$ = _reconnectSync.asObservable();
|
|
4
4
|
export const _accounts = new BehaviorSubject([]);
|
|
5
5
|
export const accounts$ = _accounts.asObservable();
|
|
6
6
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/accounts/observables.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,MAAM,CAAA;AAGtC,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"sources":["../src/accounts/observables.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,MAAM,CAAA;AAGtC,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,eAAe,CAAO,UAAU,CAAC,CAAA;AACnE,MAAM,CAAC,MAAM,cAAc,GAAG,cAAc,CAAC,YAAY,EAAE,CAAA;AAG3D,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,eAAe,CAAoB,EAAE,CAAC,CAAA;AACnE,MAAM,CAAC,MAAM,SAAS,GAAG,SAAS,CAAC,YAAY,EAAE,CAAA","file":"observables.js","sourcesContent":["/* @license Copyright 2024 w3ux authors & contributors\nSPDX-License-Identifier: GPL-3.0-only */\n\nimport type { ImportedAccount, Sync } from '@w3ux/types'\nimport { BehaviorSubject } from 'rxjs'\n\n// Sync status of reconnecting to previously enabled extensions\nexport const _reconnectSync = new BehaviorSubject<Sync>('unsynced')\nexport const reconnectSync$ = _reconnectSync.asObservable()\n\n// Imported extension accounts\nexport const _accounts = new BehaviorSubject<ImportedAccount[]>([])\nexport const accounts$ = _accounts.asObservable()\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const reconnectExtensions: (dappName: string, ss58: number) => Promise<void>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { connectExtensions, getActiveExtensionsLocal } from '../extensions';
|
|
2
|
+
import { addUnsub, getAccountsFromExtensions, processExtensionAccounts, setReconnectSync, updateAccounts, } from './index';
|
|
3
|
+
export const reconnectExtensions = async (dappName, ss58) => {
|
|
4
|
+
setReconnectSync('syncing');
|
|
5
|
+
const { connected } = await connectExtensions(dappName, getActiveExtensionsLocal());
|
|
6
|
+
if (connected.size > 0) {
|
|
7
|
+
updateAccounts({
|
|
8
|
+
add: await getAccountsFromExtensions(connected, ss58),
|
|
9
|
+
remove: [],
|
|
10
|
+
});
|
|
11
|
+
for (const [id, { extension }] of Array.from(connected.entries())) {
|
|
12
|
+
if (typeof extension.accounts.subscribe === 'function') {
|
|
13
|
+
const unsub = extension.accounts.subscribe((accounts) => {
|
|
14
|
+
processExtensionAccounts({
|
|
15
|
+
source: id,
|
|
16
|
+
ss58,
|
|
17
|
+
}, extension.signer, accounts);
|
|
18
|
+
});
|
|
19
|
+
addUnsub(id, unsub);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
setReconnectSync('synced');
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=reconnect.js.map
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=reconnect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/accounts/reconnect.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAA;AAC3E,OAAO,EACL,QAAQ,EACR,yBAAyB,EACzB,wBAAwB,EACxB,gBAAgB,EAChB,cAAc,GACf,MAAM,SAAS,CAAA;AAEhB,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,QAAgB,EAAE,IAAY,EAAE,EAAE;IAC1E,gBAAgB,CAAC,SAAS,CAAC,CAAA;IAC3B,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,iBAAiB,CAC3C,QAAQ,EACR,wBAAwB,EAAE,CAC3B,CAAA;IACD,IAAI,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAEvB,cAAc,CAAC;YACb,GAAG,EAAE,MAAM,yBAAyB,CAAC,SAAS,EAAE,IAAI,CAAC;YACrD,MAAM,EAAE,EAAE;SACX,CAAC,CAAA;QAGF,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YAClE,IAAI,OAAO,SAAS,CAAC,QAAQ,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;gBACvD,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,EAAE;oBACtD,wBAAwB,CACtB;wBACE,MAAM,EAAE,EAAE;wBACV,IAAI;qBACL,EACD,SAAS,CAAC,MAAM,EAChB,QAAQ,CACT,CAAA;gBACH,CAAC,CAAC,CAAA;gBACF,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IACD,gBAAgB,CAAC,QAAQ,CAAC,CAAA;AAC5B,CAAC,CAAA","file":"reconnect.js","sourcesContent":["/* @license Copyright 2024 w3ux authors & contributors\nSPDX-License-Identifier: GPL-3.0-only */\n\nimport { connectExtensions, getActiveExtensionsLocal } from '../extensions'\nimport {\n addUnsub,\n getAccountsFromExtensions,\n processExtensionAccounts,\n setReconnectSync,\n updateAccounts,\n} from './index'\n\nexport const reconnectExtensions = async (dappName: string, ss58: number) => {\n setReconnectSync('syncing')\n const { connected } = await connectExtensions(\n dappName,\n getActiveExtensionsLocal()\n )\n if (connected.size > 0) {\n // Perform initial account state update\n updateAccounts({\n add: await getAccountsFromExtensions(connected, ss58),\n remove: [],\n })\n\n // If availahle, subscribe to accounts for each connected extension\n for (const [id, { extension }] of Array.from(connected.entries())) {\n if (typeof extension.accounts.subscribe === 'function') {\n const unsub = extension.accounts.subscribe((accounts) => {\n processExtensionAccounts(\n {\n source: id,\n ss58,\n },\n extension.signer,\n accounts\n )\n })\n addUnsub(id, unsub)\n }\n }\n }\n setReconnectSync('synced')\n}\n"]}
|
package/accounts/state.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
import type { Sync } from '@w3ux/types';
|
|
1
2
|
export declare const unsubs: Record<string, () => void>;
|
|
2
3
|
export declare const addUnsub: (id: string, unsub: () => void) => void;
|
|
3
4
|
export declare const unsubAll: () => void;
|
|
4
5
|
export declare const resetAccounts: () => void;
|
|
6
|
+
export declare const getReconnectSync: () => Sync;
|
|
7
|
+
export declare const setReconnectSync: (sync: Sync) => void;
|
package/accounts/state.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _accounts } from './observables';
|
|
1
|
+
import { _accounts, _reconnectSync } from './observables';
|
|
2
2
|
export const unsubs = {};
|
|
3
3
|
export const addUnsub = (id, unsub) => {
|
|
4
4
|
unsubs[id] = unsub;
|
|
@@ -11,6 +11,10 @@ export const unsubAll = () => {
|
|
|
11
11
|
export const resetAccounts = () => {
|
|
12
12
|
_accounts.next([]);
|
|
13
13
|
};
|
|
14
|
+
export const getReconnectSync = () => _reconnectSync.getValue();
|
|
15
|
+
export const setReconnectSync = (sync) => {
|
|
16
|
+
_reconnectSync.next(sync);
|
|
17
|
+
};
|
|
14
18
|
|
|
15
19
|
//# sourceMappingURL=state.js.map
|
|
16
20
|
|
package/accounts/state.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/accounts/state.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/accounts/state.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAEzD,MAAM,CAAC,MAAM,MAAM,GAA+B,EAAE,CAAA;AAGpD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EAAU,EAAE,KAAiB,EAAE,EAAE;IACxD,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,CAAA;AACpB,CAAC,CAAA;AAGD,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,EAAE;IAC3B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACtC,KAAK,EAAE,CAAA;IACT,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAGD,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,EAAE;IAChC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AACpB,CAAC,CAAA;AAGD,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAA;AAG/D,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAU,EAAE,EAAE;IAC7C,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC3B,CAAC,CAAA","file":"state.js","sourcesContent":["/* @license Copyright 2024 w3ux authors & contributors\nSPDX-License-Identifier: GPL-3.0-only */\n\nimport type { Sync } from '@w3ux/types'\nimport { _accounts, _reconnectSync } from './observables'\n\nexport const unsubs: Record<string, () => void> = {}\n\n// Add an extension id to unsub state\nexport const addUnsub = (id: string, unsub: () => void) => {\n unsubs[id] = unsub\n}\n\n// Unsubscribe to all unsubs\nexport const unsubAll = () => {\n Object.values(unsubs).forEach((unsub) => {\n unsub()\n })\n}\n\n// Reset accounts\nexport const resetAccounts = () => {\n _accounts.next([])\n}\n\n// Get previously enabled extension reconnect sync status\nexport const getReconnectSync = () => _reconnectSync.getValue()\n\n// Set previously enabled extension reconnect sync status\nexport const setReconnectSync = (sync: Sync) => {\n _reconnectSync.next(sync)\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/extensions/connect.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAC3C,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AACvE,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAGzE,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EACpC,QAAgB,EAChB,YAAsB,EAC0B,EAAE;IAClD,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;QACzB,OAAO;YACL,SAAS,EAAE,IAAI,GAAG,EAAE;SACrB,CAAA;IACH,CAAC;
|
|
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 { addExtensionToLocal, removeExtensionFromLocal } 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 extensionIds: string[]\n): Promise<{ connected: ExtensionEnableResults }> => {\n if (!extensionIds.length) {\n return {\n connected: new Map(),\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"]}
|