@multiplatform.one/web3 7.24.0 → 7.26.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/README.md +33 -0
- package/dist/cjs/bridge/AuthBridge.cjs +124 -0
- package/dist/cjs/bridge/AuthBridge.native.js +186 -0
- package/dist/cjs/bridge/AuthBridge.native.js.map +1 -0
- package/dist/cjs/bridge/BridgeClient.cjs +12 -9
- package/dist/cjs/bridge/BridgeClient.native.js +17 -12
- package/dist/cjs/bridge/BridgeClient.native.js.map +1 -1
- package/dist/cjs/bridge/BridgeHost.cjs +11 -3
- package/dist/cjs/bridge/BridgeHost.native.js +11 -3
- package/dist/cjs/bridge/BridgeHost.native.js.map +1 -1
- package/dist/cjs/bridge/GpgBridge.cjs +61 -0
- package/dist/cjs/bridge/GpgBridge.native.js +111 -0
- package/dist/cjs/bridge/GpgBridge.native.js.map +1 -0
- package/dist/cjs/bridge/SuiBridge.cjs +51 -0
- package/dist/cjs/bridge/SuiBridge.native.js +99 -0
- package/dist/cjs/bridge/SuiBridge.native.js.map +1 -0
- package/dist/cjs/bridge/authTypes.cjs +28 -0
- package/dist/cjs/bridge/authTypes.native.js +31 -0
- package/dist/cjs/bridge/authTypes.native.js.map +1 -0
- package/dist/cjs/bridge/core.cjs +65 -0
- package/dist/cjs/bridge/core.native.js +68 -0
- package/dist/cjs/bridge/core.native.js.map +1 -0
- package/dist/cjs/bridge/hosting.cjs +91 -0
- package/dist/cjs/bridge/hosting.native.js +117 -0
- package/dist/cjs/bridge/hosting.native.js.map +1 -0
- package/dist/cjs/bridge/index.cjs +3 -17
- package/dist/cjs/bridge/index.native.js +2 -16
- package/dist/cjs/bridge/index.native.js.map +1 -1
- package/dist/cjs/bridge/nativeHost.cjs +91 -0
- package/dist/cjs/bridge/nativeHost.native.js +118 -0
- package/dist/cjs/bridge/nativeHost.native.js.map +1 -0
- package/dist/cjs/bridge/protocol.cjs +30 -1
- package/dist/cjs/bridge/protocol.native.js +147 -1
- package/dist/cjs/bridge/protocol.native.js.map +1 -1
- package/dist/cjs/core/family.cjs +88 -0
- package/dist/cjs/core/family.native.js +115 -0
- package/dist/cjs/core/family.native.js.map +1 -0
- package/dist/cjs/core/index.cjs +41 -0
- package/dist/cjs/core/index.native.js +44 -0
- package/dist/cjs/core/index.native.js.map +1 -0
- package/dist/cjs/core/message.cjs +89 -0
- package/dist/cjs/core/message.native.js +104 -0
- package/dist/cjs/core/message.native.js.map +1 -0
- package/dist/cjs/core/names.cjs +51 -0
- package/dist/cjs/core/names.native.js +95 -0
- package/dist/cjs/core/names.native.js.map +1 -0
- package/dist/cjs/core/react.cjs +48 -0
- package/dist/cjs/core/react.native.js +52 -0
- package/dist/cjs/core/react.native.js.map +1 -0
- package/dist/cjs/core/store.cjs +450 -0
- package/dist/cjs/core/store.native.js +637 -0
- package/dist/cjs/core/store.native.js.map +1 -0
- package/dist/cjs/core/types.cjs +18 -0
- package/dist/cjs/core/types.native.js +21 -0
- package/dist/cjs/core/types.native.js.map +1 -0
- package/dist/cjs/index.cjs +3 -1
- package/dist/cjs/index.native.js +2 -0
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/providers/WalletProvider.cjs +2 -0
- package/dist/cjs/providers/WalletProvider.native.js +123 -90
- package/dist/cjs/providers/WalletProvider.native.js.map +1 -1
- package/dist/cjs/providers/index.cjs +1 -0
- package/dist/cjs/providers/index.native.js +1 -0
- package/dist/cjs/providers/index.native.js.map +1 -1
- package/dist/cjs/providers/native/deepLink.cjs +40 -23
- package/dist/cjs/providers/native/deepLink.native.js +43 -25
- package/dist/cjs/providers/native/deepLink.native.js.map +1 -1
- package/dist/cjs/providers/native/inject.cjs +2 -4
- package/dist/cjs/providers/native/inject.native.js +2 -4
- package/dist/cjs/providers/native/inject.native.js.map +1 -1
- package/dist/cjs/providers/walletBridge.cjs +35 -0
- package/dist/cjs/providers/walletBridge.native.js +38 -0
- package/dist/cjs/providers/walletBridge.native.js.map +1 -0
- package/dist/cjs/providers/walletConfig.native.js.map +1 -1
- package/dist/esm/bridge/AuthBridge.mjs +99 -0
- package/dist/esm/bridge/AuthBridge.mjs.map +1 -0
- package/dist/esm/bridge/AuthBridge.native.js +158 -0
- package/dist/esm/bridge/AuthBridge.native.js.map +1 -0
- package/dist/esm/bridge/BridgeClient.mjs +13 -10
- package/dist/esm/bridge/BridgeClient.mjs.map +1 -1
- package/dist/esm/bridge/BridgeClient.native.js +18 -13
- package/dist/esm/bridge/BridgeClient.native.js.map +1 -1
- package/dist/esm/bridge/BridgeHost.mjs +12 -4
- package/dist/esm/bridge/BridgeHost.mjs.map +1 -1
- package/dist/esm/bridge/BridgeHost.native.js +12 -4
- package/dist/esm/bridge/BridgeHost.native.js.map +1 -1
- package/dist/esm/bridge/GpgBridge.mjs +36 -0
- package/dist/esm/bridge/GpgBridge.mjs.map +1 -0
- package/dist/esm/bridge/GpgBridge.native.js +83 -0
- package/dist/esm/bridge/GpgBridge.native.js.map +1 -0
- package/dist/esm/bridge/SuiBridge.mjs +26 -0
- package/dist/esm/bridge/SuiBridge.mjs.map +1 -0
- package/dist/esm/bridge/SuiBridge.native.js +71 -0
- package/dist/esm/bridge/SuiBridge.native.js.map +1 -0
- package/dist/esm/bridge/authTypes.mjs +3 -0
- package/dist/esm/bridge/authTypes.mjs.map +1 -0
- package/dist/esm/bridge/authTypes.native.js +3 -0
- package/dist/esm/bridge/authTypes.native.js.map +1 -0
- package/dist/esm/bridge/core.mjs +17 -0
- package/dist/esm/bridge/core.mjs.map +1 -0
- package/dist/esm/bridge/core.native.js +17 -0
- package/dist/esm/bridge/core.native.js.map +1 -0
- package/dist/esm/bridge/hosting.mjs +62 -0
- package/dist/esm/bridge/hosting.mjs.map +1 -0
- package/dist/esm/bridge/hosting.native.js +85 -0
- package/dist/esm/bridge/hosting.native.js.map +1 -0
- package/dist/esm/bridge/index.mjs +2 -9
- package/dist/esm/bridge/index.mjs.map +1 -1
- package/dist/esm/bridge/index.native.js +2 -9
- package/dist/esm/bridge/index.native.js.map +1 -1
- package/dist/esm/bridge/nativeHost.mjs +65 -0
- package/dist/esm/bridge/nativeHost.mjs.map +1 -0
- package/dist/esm/bridge/nativeHost.native.js +89 -0
- package/dist/esm/bridge/nativeHost.native.js.map +1 -0
- package/dist/esm/bridge/protocol.mjs +28 -2
- package/dist/esm/bridge/protocol.mjs.map +1 -1
- package/dist/esm/bridge/protocol.native.js +145 -2
- package/dist/esm/bridge/protocol.native.js.map +1 -1
- package/dist/esm/core/family.mjs +62 -0
- package/dist/esm/core/family.mjs.map +1 -0
- package/dist/esm/core/family.native.js +86 -0
- package/dist/esm/core/family.native.js.map +1 -0
- package/dist/esm/core/index.mjs +7 -0
- package/dist/esm/core/index.mjs.map +1 -0
- package/dist/esm/core/index.native.js +7 -0
- package/dist/esm/core/index.native.js.map +1 -0
- package/dist/esm/core/message.mjs +63 -0
- package/dist/esm/core/message.mjs.map +1 -0
- package/dist/esm/core/message.native.js +75 -0
- package/dist/esm/core/message.native.js.map +1 -0
- package/dist/esm/core/names.mjs +25 -0
- package/dist/esm/core/names.mjs.map +1 -0
- package/dist/esm/core/names.native.js +66 -0
- package/dist/esm/core/names.native.js.map +1 -0
- package/dist/esm/core/react.mjs +21 -0
- package/dist/esm/core/react.mjs.map +1 -0
- package/dist/esm/core/react.native.js +22 -0
- package/dist/esm/core/react.native.js.map +1 -0
- package/dist/esm/core/store.mjs +424 -0
- package/dist/esm/core/store.mjs.map +1 -0
- package/dist/esm/core/store.native.js +608 -0
- package/dist/esm/core/store.native.js.map +1 -0
- package/dist/esm/core/types.mjs +2 -0
- package/dist/esm/core/types.mjs.map +1 -0
- package/dist/esm/core/types.native.js +2 -0
- package/dist/esm/core/types.native.js.map +1 -0
- package/dist/esm/index.mjs +3 -2
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +3 -2
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/providers/WalletProvider.mjs +2 -1
- package/dist/esm/providers/WalletProvider.mjs.map +1 -1
- package/dist/esm/providers/WalletProvider.native.js +125 -93
- package/dist/esm/providers/WalletProvider.native.js.map +1 -1
- package/dist/esm/providers/index.mjs +2 -2
- package/dist/esm/providers/index.mjs.map +1 -1
- package/dist/esm/providers/index.native.js +2 -2
- package/dist/esm/providers/index.native.js.map +1 -1
- package/dist/esm/providers/native/deepLink.mjs +36 -24
- package/dist/esm/providers/native/deepLink.mjs.map +1 -1
- package/dist/esm/providers/native/deepLink.native.js +39 -26
- package/dist/esm/providers/native/deepLink.native.js.map +1 -1
- package/dist/esm/providers/native/inject.mjs +1 -3
- package/dist/esm/providers/native/inject.mjs.map +1 -1
- package/dist/esm/providers/native/inject.native.js +1 -3
- package/dist/esm/providers/native/inject.native.js.map +1 -1
- package/dist/esm/providers/walletBridge.mjs +9 -0
- package/dist/esm/providers/walletBridge.mjs.map +1 -0
- package/dist/esm/providers/walletBridge.native.js +9 -0
- package/dist/esm/providers/walletBridge.native.js.map +1 -0
- package/dist/esm/providers/walletConfig.mjs.map +1 -1
- package/dist/esm/providers/walletConfig.native.js.map +1 -1
- package/dist/jsx/bridge/AuthBridge.mjs +99 -0
- package/dist/jsx/bridge/AuthBridge.mjs.map +1 -0
- package/dist/jsx/bridge/AuthBridge.native.js +186 -0
- package/dist/jsx/bridge/AuthBridge.native.js.map +1 -0
- package/dist/jsx/bridge/BridgeClient.mjs +13 -10
- package/dist/jsx/bridge/BridgeClient.mjs.map +1 -1
- package/dist/jsx/bridge/BridgeClient.native.js +17 -12
- package/dist/jsx/bridge/BridgeClient.native.js.map +1 -1
- package/dist/jsx/bridge/BridgeHost.mjs +12 -4
- package/dist/jsx/bridge/BridgeHost.mjs.map +1 -1
- package/dist/jsx/bridge/BridgeHost.native.js +11 -3
- package/dist/jsx/bridge/BridgeHost.native.js.map +1 -1
- package/dist/jsx/bridge/GpgBridge.mjs +36 -0
- package/dist/jsx/bridge/GpgBridge.mjs.map +1 -0
- package/dist/jsx/bridge/GpgBridge.native.js +111 -0
- package/dist/jsx/bridge/GpgBridge.native.js.map +1 -0
- package/dist/jsx/bridge/SuiBridge.mjs +26 -0
- package/dist/jsx/bridge/SuiBridge.mjs.map +1 -0
- package/dist/jsx/bridge/SuiBridge.native.js +99 -0
- package/dist/jsx/bridge/SuiBridge.native.js.map +1 -0
- package/dist/jsx/bridge/authTypes.mjs +3 -0
- package/dist/jsx/bridge/authTypes.mjs.map +1 -0
- package/dist/jsx/bridge/authTypes.native.js +31 -0
- package/dist/jsx/bridge/authTypes.native.js.map +1 -0
- package/dist/jsx/bridge/core.mjs +17 -0
- package/dist/jsx/bridge/core.mjs.map +1 -0
- package/dist/jsx/bridge/core.native.js +68 -0
- package/dist/jsx/bridge/core.native.js.map +1 -0
- package/dist/jsx/bridge/hosting.mjs +62 -0
- package/dist/jsx/bridge/hosting.mjs.map +1 -0
- package/dist/jsx/bridge/hosting.native.js +117 -0
- package/dist/jsx/bridge/hosting.native.js.map +1 -0
- package/dist/jsx/bridge/index.mjs +2 -9
- package/dist/jsx/bridge/index.mjs.map +1 -1
- package/dist/jsx/bridge/index.native.js +2 -16
- package/dist/jsx/bridge/index.native.js.map +1 -1
- package/dist/jsx/bridge/nativeHost.mjs +65 -0
- package/dist/jsx/bridge/nativeHost.mjs.map +1 -0
- package/dist/jsx/bridge/nativeHost.native.js +118 -0
- package/dist/jsx/bridge/nativeHost.native.js.map +1 -0
- package/dist/jsx/bridge/protocol.mjs +28 -2
- package/dist/jsx/bridge/protocol.mjs.map +1 -1
- package/dist/jsx/bridge/protocol.native.js +147 -1
- package/dist/jsx/bridge/protocol.native.js.map +1 -1
- package/dist/jsx/core/family.mjs +62 -0
- package/dist/jsx/core/family.mjs.map +1 -0
- package/dist/jsx/core/family.native.js +115 -0
- package/dist/jsx/core/family.native.js.map +1 -0
- package/dist/jsx/core/index.mjs +7 -0
- package/dist/jsx/core/index.mjs.map +1 -0
- package/dist/jsx/core/index.native.js +44 -0
- package/dist/jsx/core/index.native.js.map +1 -0
- package/dist/jsx/core/message.mjs +63 -0
- package/dist/jsx/core/message.mjs.map +1 -0
- package/dist/jsx/core/message.native.js +104 -0
- package/dist/jsx/core/message.native.js.map +1 -0
- package/dist/jsx/core/names.mjs +25 -0
- package/dist/jsx/core/names.mjs.map +1 -0
- package/dist/jsx/core/names.native.js +95 -0
- package/dist/jsx/core/names.native.js.map +1 -0
- package/dist/jsx/core/react.mjs +21 -0
- package/dist/jsx/core/react.mjs.map +1 -0
- package/dist/jsx/core/react.native.js +52 -0
- package/dist/jsx/core/react.native.js.map +1 -0
- package/dist/jsx/core/store.mjs +424 -0
- package/dist/jsx/core/store.mjs.map +1 -0
- package/dist/jsx/core/store.native.js +637 -0
- package/dist/jsx/core/store.native.js.map +1 -0
- package/dist/jsx/core/types.mjs +2 -0
- package/dist/jsx/core/types.mjs.map +1 -0
- package/dist/jsx/core/types.native.js +21 -0
- package/dist/jsx/core/types.native.js.map +1 -0
- package/dist/jsx/index.js +3 -2
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +3 -2
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js +2 -0
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/providers/WalletProvider.mjs +2 -1
- package/dist/jsx/providers/WalletProvider.mjs.map +1 -1
- package/dist/jsx/providers/WalletProvider.native.js +123 -90
- package/dist/jsx/providers/WalletProvider.native.js.map +1 -1
- package/dist/jsx/providers/index.mjs +2 -2
- package/dist/jsx/providers/index.mjs.map +1 -1
- package/dist/jsx/providers/index.native.js +1 -0
- package/dist/jsx/providers/index.native.js.map +1 -1
- package/dist/jsx/providers/native/deepLink.mjs +36 -24
- package/dist/jsx/providers/native/deepLink.mjs.map +1 -1
- package/dist/jsx/providers/native/deepLink.native.js +43 -25
- package/dist/jsx/providers/native/deepLink.native.js.map +1 -1
- package/dist/jsx/providers/native/inject.mjs +1 -3
- package/dist/jsx/providers/native/inject.mjs.map +1 -1
- package/dist/jsx/providers/native/inject.native.js +2 -4
- package/dist/jsx/providers/native/inject.native.js.map +1 -1
- package/dist/jsx/providers/walletBridge.mjs +9 -0
- package/dist/jsx/providers/walletBridge.mjs.map +1 -0
- package/dist/jsx/providers/walletBridge.native.js +38 -0
- package/dist/jsx/providers/walletBridge.native.js.map +1 -0
- package/dist/jsx/providers/walletConfig.mjs.map +1 -1
- package/dist/jsx/providers/walletConfig.native.js.map +1 -1
- package/docs/bridge-protocol.md +485 -0
- package/package.json +14 -6
- package/src/bridge/AuthBridge.ts +146 -0
- package/src/bridge/BridgeClient.spec.ts +12 -0
- package/src/bridge/BridgeClient.ts +15 -10
- package/src/bridge/BridgeHost.spec.ts +20 -4
- package/src/bridge/BridgeHost.ts +16 -5
- package/src/bridge/GpgBridge.ts +49 -0
- package/src/bridge/SuiBridge.ts +34 -0
- package/src/bridge/authTypes.ts +76 -0
- package/src/bridge/core.ts +42 -0
- package/src/bridge/hosting.spec.ts +98 -0
- package/src/bridge/hosting.ts +99 -0
- package/src/bridge/index.ts +1 -8
- package/src/bridge/nativeHost.spec.ts +165 -0
- package/src/bridge/nativeHost.ts +120 -0
- package/src/bridge/protocol.spec.ts +24 -1
- package/src/bridge/protocol.ts +44 -1
- package/src/core/family.spec.ts +117 -0
- package/src/core/family.ts +103 -0
- package/src/core/imports.spec.ts +82 -0
- package/src/core/index.ts +47 -0
- package/src/core/message.spec.ts +178 -0
- package/src/core/message.ts +119 -0
- package/src/core/names.ts +29 -0
- package/src/core/react.spec.tsx +75 -0
- package/src/core/react.ts +34 -0
- package/src/core/store.spec.ts +890 -0
- package/src/core/store.ts +558 -0
- package/src/core/types.ts +96 -0
- package/src/index.ts +6 -0
- package/src/providers/WalletProvider.native.tsx +139 -85
- package/src/providers/WalletProvider.tsx +1 -1
- package/src/providers/index.ts +2 -0
- package/src/providers/native/deepLink.spec.ts +73 -1
- package/src/providers/native/deepLink.ts +76 -28
- package/src/providers/native/inject.ts +1 -9
- package/src/providers/walletBridge.ts +24 -0
- package/src/providers/walletConfig.ts +15 -1
- package/types/bridge/AuthBridge.d.ts +58 -0
- package/types/bridge/AuthBridge.d.ts.map +1 -0
- package/types/bridge/BridgeClient.d.ts +3 -1
- package/types/bridge/BridgeClient.d.ts.map +1 -1
- package/types/bridge/BridgeHost.d.ts +1 -1
- package/types/bridge/BridgeHost.d.ts.map +1 -1
- package/types/bridge/GpgBridge.d.ts +23 -0
- package/types/bridge/GpgBridge.d.ts.map +1 -0
- package/types/bridge/SuiBridge.d.ts +18 -0
- package/types/bridge/SuiBridge.d.ts.map +1 -0
- package/types/bridge/authTypes.d.ts +71 -0
- package/types/bridge/authTypes.d.ts.map +1 -0
- package/types/bridge/core.d.ts +16 -0
- package/types/bridge/core.d.ts.map +1 -0
- package/types/bridge/hosting.d.ts +34 -0
- package/types/bridge/hosting.d.ts.map +1 -0
- package/types/bridge/index.d.ts +1 -8
- package/types/bridge/index.d.ts.map +1 -1
- package/types/bridge/nativeHost.d.ts +55 -0
- package/types/bridge/nativeHost.d.ts.map +1 -0
- package/types/bridge/protocol.d.ts +34 -1
- package/types/bridge/protocol.d.ts.map +1 -1
- package/types/core/family.d.ts +44 -0
- package/types/core/family.d.ts.map +1 -0
- package/types/core/index.d.ts +7 -0
- package/types/core/index.d.ts.map +1 -0
- package/types/core/message.d.ts +44 -0
- package/types/core/message.d.ts.map +1 -0
- package/types/core/names.d.ts +7 -0
- package/types/core/names.d.ts.map +1 -0
- package/types/core/react.d.ts +14 -0
- package/types/core/react.d.ts.map +1 -0
- package/types/core/store.d.ts +64 -0
- package/types/core/store.d.ts.map +1 -0
- package/types/core/types.d.ts +88 -0
- package/types/core/types.d.ts.map +1 -0
- package/types/index.d.ts +2 -1
- package/types/index.d.ts.map +1 -1
- package/types/providers/WalletProvider.d.ts +1 -0
- package/types/providers/WalletProvider.d.ts.map +1 -1
- package/types/providers/WalletProvider.native.d.ts +2 -1
- package/types/providers/WalletProvider.native.d.ts.map +1 -1
- package/types/providers/index.d.ts +1 -1
- package/types/providers/index.d.ts.map +1 -1
- package/types/providers/native/deepLink.d.ts +29 -4
- package/types/providers/native/deepLink.d.ts.map +1 -1
- package/types/providers/native/inject.d.ts +1 -7
- package/types/providers/native/inject.d.ts.map +1 -1
- package/types/providers/walletBridge.d.ts +17 -0
- package/types/providers/walletBridge.d.ts.map +1 -0
- package/types/providers/walletConfig.d.ts +18 -1
- package/types/providers/walletConfig.d.ts.map +1 -1
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all) __defProp(target, name, {
|
|
7
|
+
get: all[name],
|
|
8
|
+
enumerable: true
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
14
|
+
get: () => from[key],
|
|
15
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
21
|
+
value: true
|
|
22
|
+
}), mod);
|
|
23
|
+
var react_exports = {};
|
|
24
|
+
__export(react_exports, {
|
|
25
|
+
ConnectionProvider: () => ConnectionProvider,
|
|
26
|
+
useConnection: () => useConnection,
|
|
27
|
+
useConnectionStore: () => useConnectionStore
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(react_exports);
|
|
30
|
+
var import_react = require("react");
|
|
31
|
+
const ConnectionStoreContext = (0, import_react.createContext)(null);
|
|
32
|
+
function ConnectionProvider({
|
|
33
|
+
store,
|
|
34
|
+
children
|
|
35
|
+
}) {
|
|
36
|
+
return (0, import_react.createElement)(ConnectionStoreContext.Provider, {
|
|
37
|
+
value: store
|
|
38
|
+
}, children);
|
|
39
|
+
}
|
|
40
|
+
function useConnectionStore() {
|
|
41
|
+
const store = (0, import_react.useContext)(ConnectionStoreContext);
|
|
42
|
+
if (!store) throw new Error("useConnectionStore needs a ConnectionProvider above it");
|
|
43
|
+
return store;
|
|
44
|
+
}
|
|
45
|
+
function useConnection() {
|
|
46
|
+
const store = useConnectionStore();
|
|
47
|
+
return (0, import_react.useSyncExternalStore)(store.subscribe, store.getState, store.getState);
|
|
48
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all) __defProp(target, name, {
|
|
9
|
+
get: all[name],
|
|
10
|
+
enumerable: true
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
16
|
+
get: () => from[key],
|
|
17
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
22
|
+
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
23
|
+
value: true
|
|
24
|
+
}), mod);
|
|
25
|
+
var react_exports = {};
|
|
26
|
+
__export(react_exports, {
|
|
27
|
+
ConnectionProvider: () => ConnectionProvider,
|
|
28
|
+
useConnection: () => useConnection,
|
|
29
|
+
useConnectionStore: () => useConnectionStore
|
|
30
|
+
});
|
|
31
|
+
module.exports = __toCommonJS(react_exports);
|
|
32
|
+
var import_react = require("react");
|
|
33
|
+
var ConnectionStoreContext = (0, import_react.createContext)(null);
|
|
34
|
+
function ConnectionProvider(param) {
|
|
35
|
+
var {
|
|
36
|
+
store,
|
|
37
|
+
children
|
|
38
|
+
} = param;
|
|
39
|
+
return (0, import_react.createElement)(ConnectionStoreContext.Provider, {
|
|
40
|
+
value: store
|
|
41
|
+
}, children);
|
|
42
|
+
}
|
|
43
|
+
function useConnectionStore() {
|
|
44
|
+
var store = (0, import_react.useContext)(ConnectionStoreContext);
|
|
45
|
+
if (!store) throw new Error("useConnectionStore needs a ConnectionProvider above it");
|
|
46
|
+
return store;
|
|
47
|
+
}
|
|
48
|
+
function useConnection() {
|
|
49
|
+
var store = useConnectionStore();
|
|
50
|
+
return (0, import_react.useSyncExternalStore)(store.subscribe, store.getState, store.getState);
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=react.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","react_exports","__export","ConnectionProvider","useConnection","useConnectionStore","module","exports","import_react","require","ConnectionStoreContext","createContext","param","store","children","createElement","Provider","useContext","Error"],"sources":["../../../src/core/react.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,aAAA;AAAAC,QAAA,CAAAD,aAAA;EAAAE,kBAAA,EAAAA,CAAA,KAAAA,kBAAA;EAAAC,aAAA,EAAAA,CAAA,KAAAA,aAAA;EAAAC,kBAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAX,YAMO,CAAAK,aAAA;AAIP,IAAAO,YAAM,GAAAC,OAAA,SAAyB;AAQxB,IAAAC,sBAAS,GAAmB,CAAE,GAAAF,YAAO,CAASG,aAA4B;AAC/E,SAAAR,kBAAOA,CAAAS,KAAA;EACT;IAAAC,KAAA;IAAAC;EAAA,IAAAF,KAAA;EAGO,OAAS,IAAAJ,YAAA,CAAAO,aAAsC,EAAAL,sBAAA,CAAAM,QAAA;IACpDhB,KAAM,EAAAa;EACN,GAAAC,QAAY;AACZ;AACF,SAAAT,mBAAA;EAGO,IAAAQ,KAAS,OAAAL,YAAiC,CAAAS,UAAA,EAAAP,sBAAA;EAC/C,KAAAG,KAAM,QAAQ,IAAAK,KAAA,yDAAmB;EACjC,OAAAL,KAAO;AACT","ignoreList":[]}
|
|
@@ -0,0 +1,450 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all) __defProp(target, name, {
|
|
7
|
+
get: all[name],
|
|
8
|
+
enumerable: true
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
14
|
+
get: () => from[key],
|
|
15
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
21
|
+
value: true
|
|
22
|
+
}), mod);
|
|
23
|
+
var store_exports = {};
|
|
24
|
+
__export(store_exports, {
|
|
25
|
+
createConnectionStore: () => createConnectionStore,
|
|
26
|
+
defaultConnectionStorageKey: () => defaultConnectionStorageKey
|
|
27
|
+
});
|
|
28
|
+
module.exports = __toCommonJS(store_exports);
|
|
29
|
+
var import_family = require("./family.cjs");
|
|
30
|
+
const defaultConnectionStorageKey = "mpo.web3.connection";
|
|
31
|
+
const disconnected = Object.freeze({
|
|
32
|
+
status: "disconnected",
|
|
33
|
+
family: null,
|
|
34
|
+
connector: null,
|
|
35
|
+
address: null,
|
|
36
|
+
chainId: null,
|
|
37
|
+
client: null
|
|
38
|
+
});
|
|
39
|
+
const superseded = () => new Error("wallet connect superseded");
|
|
40
|
+
function browserStorage() {
|
|
41
|
+
try {
|
|
42
|
+
const storage = globalThis.localStorage;
|
|
43
|
+
return storage && typeof storage.getItem === "function" ? storage : null;
|
|
44
|
+
} catch {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function parseSaved(raw) {
|
|
49
|
+
if (!raw) return null;
|
|
50
|
+
try {
|
|
51
|
+
const value = JSON.parse(raw);
|
|
52
|
+
return typeof value?.family === "string" && typeof value.connectorId === "string" ? {
|
|
53
|
+
family: value.family,
|
|
54
|
+
connectorId: value.connectorId
|
|
55
|
+
} : null;
|
|
56
|
+
} catch {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
const sameConnector = (a, b) => a.id === b.id && a.name === b.name && a.icon === b.icon && a.installed === b.installed;
|
|
61
|
+
const holdersByDriver = /* @__PURE__ */new WeakMap();
|
|
62
|
+
function createConnectionStore(options) {
|
|
63
|
+
const registry = Array.isArray(options.families) ? (0, import_family.createFamilyRegistry)(options.families) : options.families;
|
|
64
|
+
const storage = options.storage === void 0 ? browserStorage() : options.storage;
|
|
65
|
+
const key = options.storageKey ?? defaultConnectionStorageKey;
|
|
66
|
+
const requestedClose = options.closeTimeout ?? 1e4;
|
|
67
|
+
const closeTimeout = Number.isNaN(requestedClose) ? 1e4 : Math.max(0, requestedClose);
|
|
68
|
+
const drivers = /* @__PURE__ */new Map();
|
|
69
|
+
const holders = /* @__PURE__ */new Map();
|
|
70
|
+
const listeners = /* @__PURE__ */new Set();
|
|
71
|
+
const connectorListeners = /* @__PURE__ */new Set();
|
|
72
|
+
const connectorWatches = /* @__PURE__ */new Map();
|
|
73
|
+
const closing = /* @__PURE__ */new Map();
|
|
74
|
+
const inflight = /* @__PURE__ */new Map();
|
|
75
|
+
let state = disconnected;
|
|
76
|
+
let active = null;
|
|
77
|
+
let pending = null;
|
|
78
|
+
let operation = 0;
|
|
79
|
+
let clientRequest = 0;
|
|
80
|
+
let restoring = null;
|
|
81
|
+
let connectorSnapshot = Object.freeze([]);
|
|
82
|
+
let destroyed = false;
|
|
83
|
+
let keptAtDestroy = [];
|
|
84
|
+
const set = next => {
|
|
85
|
+
state = next;
|
|
86
|
+
for (const listener of listeners) listener();
|
|
87
|
+
};
|
|
88
|
+
const watchConnectors = driver => {
|
|
89
|
+
if (connectorListeners.size === 0 || connectorWatches.has(driver) || !driver.watchConnectors) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
connectorWatches.set(driver, driver.watchConnectors(() => {
|
|
93
|
+
for (const listener of connectorListeners) listener();
|
|
94
|
+
}));
|
|
95
|
+
};
|
|
96
|
+
const unwatchConnectors = () => {
|
|
97
|
+
for (const unwatch of connectorWatches.values()) unwatch();
|
|
98
|
+
connectorWatches.clear();
|
|
99
|
+
};
|
|
100
|
+
const hold = driver => {
|
|
101
|
+
if (destroyed || holders.has(driver)) return;
|
|
102
|
+
const held = () => [active, pending].flatMap(entry => entry?.driver === driver ? [entry.connectorId] : []);
|
|
103
|
+
holders.set(driver, held);
|
|
104
|
+
let all = holdersByDriver.get(driver);
|
|
105
|
+
if (!all) {
|
|
106
|
+
all = /* @__PURE__ */new Set();
|
|
107
|
+
holdersByDriver.set(driver, all);
|
|
108
|
+
}
|
|
109
|
+
all.add(held);
|
|
110
|
+
};
|
|
111
|
+
const driverFor = family => {
|
|
112
|
+
if (family.connectionless || !family.driver) {
|
|
113
|
+
throw new Error(`wallet family ${family.id} is connectionless; it signs without connecting`);
|
|
114
|
+
}
|
|
115
|
+
let driver = drivers.get(family.id);
|
|
116
|
+
if (!driver) {
|
|
117
|
+
driver = family.driver();
|
|
118
|
+
drivers.set(family.id, driver);
|
|
119
|
+
hold(driver);
|
|
120
|
+
}
|
|
121
|
+
watchConnectors(driver);
|
|
122
|
+
return driver;
|
|
123
|
+
};
|
|
124
|
+
const heldElsewhere = driver => [...(holdersByDriver.get(driver) ?? [])].filter(held => held !== holders.get(driver)).flatMap(held => held());
|
|
125
|
+
const connectorFor = (driver, id) => driver.connectors().find(connector => connector.id === id) ?? {
|
|
126
|
+
id,
|
|
127
|
+
name: id
|
|
128
|
+
};
|
|
129
|
+
const save = async value => {
|
|
130
|
+
if (!storage) return;
|
|
131
|
+
try {
|
|
132
|
+
if (value) await storage.setItem(key, JSON.stringify(value));else await storage.removeItem(key);
|
|
133
|
+
} catch {}
|
|
134
|
+
};
|
|
135
|
+
const load = async () => {
|
|
136
|
+
if (!storage) return null;
|
|
137
|
+
try {
|
|
138
|
+
return parseSaved(await storage.getItem(key));
|
|
139
|
+
} catch {
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
const closeDriver = (driver, connectorId) => {
|
|
144
|
+
const previous = closing.get(driver);
|
|
145
|
+
const run = (async () => {
|
|
146
|
+
await previous;
|
|
147
|
+
let timer;
|
|
148
|
+
const closed = (async () => driver.disconnect(connectorId))().catch(() => {});
|
|
149
|
+
if (closeTimeout === Number.POSITIVE_INFINITY) await closed;else {
|
|
150
|
+
await Promise.race([closed, new Promise(resolve => {
|
|
151
|
+
timer = setTimeout(resolve, Math.min(closeTimeout, 2147483647));
|
|
152
|
+
})]);
|
|
153
|
+
clearTimeout(timer);
|
|
154
|
+
}
|
|
155
|
+
})();
|
|
156
|
+
closing.set(driver, run);
|
|
157
|
+
void run.then(() => {
|
|
158
|
+
if (closing.get(driver) === run) closing.delete(driver);
|
|
159
|
+
});
|
|
160
|
+
return run;
|
|
161
|
+
};
|
|
162
|
+
const release = () => {
|
|
163
|
+
active?.unsubscribe();
|
|
164
|
+
active = null;
|
|
165
|
+
clientRequest++;
|
|
166
|
+
};
|
|
167
|
+
const closeActive = async () => {
|
|
168
|
+
const previous = active;
|
|
169
|
+
release();
|
|
170
|
+
if (previous) await closeDriver(previous.driver);
|
|
171
|
+
};
|
|
172
|
+
const settleStale = async (driver, connectorId, account) => {
|
|
173
|
+
if (!account) return;
|
|
174
|
+
const inUse = [...(destroyed ? keptAtDestroy : [active, pending]).filter(entry => entry?.driver === driver).map(entry => entry?.connectorId), ...heldElsewhere(driver)];
|
|
175
|
+
if (inUse.includes(connectorId)) return;
|
|
176
|
+
if (inUse.length === 0 && !destroyed) await closeDriver(driver);else await closeDriver(driver, connectorId);
|
|
177
|
+
};
|
|
178
|
+
const closeOrphan = async (driver, connectorId) => {
|
|
179
|
+
const left = driver.getState();
|
|
180
|
+
if (!left.account) return;
|
|
181
|
+
if (destroyed) {
|
|
182
|
+
if (left.connectorId === connectorId) {
|
|
183
|
+
await settleStale(driver, connectorId, left.account);
|
|
184
|
+
}
|
|
185
|
+
} else if (left.connectorId !== null) {
|
|
186
|
+
await settleStale(driver, left.connectorId, left.account);
|
|
187
|
+
} else if (![active, pending].some(entry => entry?.driver === driver) && heldElsewhere(driver).length === 0) {
|
|
188
|
+
await closeDriver(driver);
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
const track = (driver, connectorId) => {
|
|
192
|
+
let counts = inflight.get(driver);
|
|
193
|
+
if (!counts) {
|
|
194
|
+
counts = /* @__PURE__ */new Map();
|
|
195
|
+
inflight.set(driver, counts);
|
|
196
|
+
}
|
|
197
|
+
counts.set(connectorId, (counts.get(connectorId) ?? 0) + 1);
|
|
198
|
+
return () => {
|
|
199
|
+
const left = (counts.get(connectorId) ?? 1) - 1;
|
|
200
|
+
if (left > 0) counts.set(connectorId, left);else counts.delete(connectorId);
|
|
201
|
+
};
|
|
202
|
+
};
|
|
203
|
+
const clientFor = (driver, driverState) => {
|
|
204
|
+
const request = ++clientRequest;
|
|
205
|
+
let result;
|
|
206
|
+
try {
|
|
207
|
+
result = driver.client?.(driverState) ?? null;
|
|
208
|
+
} catch {
|
|
209
|
+
return null;
|
|
210
|
+
}
|
|
211
|
+
if (result === null || typeof result.then !== "function") {
|
|
212
|
+
return result;
|
|
213
|
+
}
|
|
214
|
+
result.then(client => {
|
|
215
|
+
if (request === clientRequest && active?.driver === driver && client) {
|
|
216
|
+
set(Object.freeze({
|
|
217
|
+
...state,
|
|
218
|
+
client
|
|
219
|
+
}));
|
|
220
|
+
}
|
|
221
|
+
}, () => {});
|
|
222
|
+
return null;
|
|
223
|
+
};
|
|
224
|
+
const activate = (family, driver, connector, account) => {
|
|
225
|
+
release();
|
|
226
|
+
const onChange = () => {
|
|
227
|
+
if (active?.driver !== driver) return;
|
|
228
|
+
const driverState = driver.getState();
|
|
229
|
+
if (!driverState.account) {
|
|
230
|
+
if (driverState.status === "connecting" || driverState.status === "reconnecting") return;
|
|
231
|
+
release();
|
|
232
|
+
operation++;
|
|
233
|
+
set(disconnected);
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
const connectorId = driverState.connectorId ?? active.connectorId;
|
|
237
|
+
if (connectorId !== active.connectorId && inflight.get(driver)?.get(connectorId)) return;
|
|
238
|
+
const chainId = driverState.account.chainId ?? null;
|
|
239
|
+
if (connectorId === state.connector?.id && driverState.account.address === state.address && chainId === state.chainId) {
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
const nextConnector = connectorId === state.connector?.id && state.connector ? state.connector : connectorFor(driver, connectorId);
|
|
243
|
+
if (connectorId !== active.connectorId) {
|
|
244
|
+
active.connectorId = connectorId;
|
|
245
|
+
void save({
|
|
246
|
+
family: family.id,
|
|
247
|
+
connectorId
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
set(Object.freeze({
|
|
251
|
+
status: "connected",
|
|
252
|
+
family: family.id,
|
|
253
|
+
connector: nextConnector,
|
|
254
|
+
address: driverState.account.address,
|
|
255
|
+
chainId,
|
|
256
|
+
client: clientFor(driver, {
|
|
257
|
+
...driverState,
|
|
258
|
+
connectorId
|
|
259
|
+
})
|
|
260
|
+
}));
|
|
261
|
+
};
|
|
262
|
+
active = {
|
|
263
|
+
driver,
|
|
264
|
+
connectorId: connector.id,
|
|
265
|
+
unsubscribe: driver.subscribe(onChange)
|
|
266
|
+
};
|
|
267
|
+
set(Object.freeze({
|
|
268
|
+
status: "connected",
|
|
269
|
+
family: family.id,
|
|
270
|
+
connector,
|
|
271
|
+
address: account.address,
|
|
272
|
+
chainId: account.chainId ?? null,
|
|
273
|
+
client: clientFor(driver, {
|
|
274
|
+
status: "connected",
|
|
275
|
+
connectorId: connector.id,
|
|
276
|
+
account
|
|
277
|
+
})
|
|
278
|
+
}));
|
|
279
|
+
};
|
|
280
|
+
return {
|
|
281
|
+
registry,
|
|
282
|
+
getState: () => state,
|
|
283
|
+
subscribe(listener) {
|
|
284
|
+
listeners.add(listener);
|
|
285
|
+
return () => {
|
|
286
|
+
listeners.delete(listener);
|
|
287
|
+
};
|
|
288
|
+
},
|
|
289
|
+
connectors() {
|
|
290
|
+
const next = [];
|
|
291
|
+
for (const family of registry.families) {
|
|
292
|
+
if (family.connectionless) continue;
|
|
293
|
+
for (const connector of driverFor(family).connectors()) {
|
|
294
|
+
next.push({
|
|
295
|
+
family: family.id,
|
|
296
|
+
connector
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
const unchanged = next.length === connectorSnapshot.length && next.every((entry, index) => {
|
|
301
|
+
const previous = connectorSnapshot[index];
|
|
302
|
+
return previous !== void 0 && entry.family === previous.family && sameConnector(entry.connector, previous.connector);
|
|
303
|
+
});
|
|
304
|
+
if (!unchanged) connectorSnapshot = Object.freeze(next.map(entry => Object.freeze(entry)));
|
|
305
|
+
return connectorSnapshot;
|
|
306
|
+
},
|
|
307
|
+
subscribeConnectors(listener) {
|
|
308
|
+
connectorListeners.add(listener);
|
|
309
|
+
for (const family of registry.families) if (!family.connectionless) driverFor(family);
|
|
310
|
+
return () => {
|
|
311
|
+
connectorListeners.delete(listener);
|
|
312
|
+
if (connectorListeners.size === 0) unwatchConnectors();
|
|
313
|
+
};
|
|
314
|
+
},
|
|
315
|
+
async connect(familyName, connectorId, connectOptions) {
|
|
316
|
+
if (destroyed) throw new Error("this connection store was destroyed");
|
|
317
|
+
const family = registry.require(familyName);
|
|
318
|
+
const driver = driverFor(family);
|
|
319
|
+
const connector = connectorFor(driver, connectorId);
|
|
320
|
+
const current = ++operation;
|
|
321
|
+
restoring = null;
|
|
322
|
+
pending = {
|
|
323
|
+
driver,
|
|
324
|
+
connectorId
|
|
325
|
+
};
|
|
326
|
+
const closingActive = closeActive();
|
|
327
|
+
set(Object.freeze({
|
|
328
|
+
...disconnected,
|
|
329
|
+
status: "connecting",
|
|
330
|
+
family: family.id,
|
|
331
|
+
connector
|
|
332
|
+
}));
|
|
333
|
+
await closingActive;
|
|
334
|
+
if (current === operation) await save(null);
|
|
335
|
+
await closing.get(driver);
|
|
336
|
+
const untrack = track(driver, connectorId);
|
|
337
|
+
let account;
|
|
338
|
+
let asked = false;
|
|
339
|
+
try {
|
|
340
|
+
try {
|
|
341
|
+
if (current !== operation) throw superseded();
|
|
342
|
+
asked = true;
|
|
343
|
+
account = await driver.connect(connectorId, connectOptions);
|
|
344
|
+
} catch (error) {
|
|
345
|
+
if (current === operation) {
|
|
346
|
+
pending = null;
|
|
347
|
+
set(disconnected);
|
|
348
|
+
}
|
|
349
|
+
if (asked || !destroyed) await closeOrphan(driver, connectorId);
|
|
350
|
+
throw error;
|
|
351
|
+
}
|
|
352
|
+
if (current !== operation) {
|
|
353
|
+
await settleStale(driver, connectorId, account);
|
|
354
|
+
throw superseded();
|
|
355
|
+
}
|
|
356
|
+
} finally {
|
|
357
|
+
untrack();
|
|
358
|
+
}
|
|
359
|
+
pending = null;
|
|
360
|
+
activate(family, driver, connector, account);
|
|
361
|
+
await save({
|
|
362
|
+
family: family.id,
|
|
363
|
+
connectorId
|
|
364
|
+
});
|
|
365
|
+
return state;
|
|
366
|
+
},
|
|
367
|
+
async disconnect() {
|
|
368
|
+
operation++;
|
|
369
|
+
restoring = null;
|
|
370
|
+
pending = null;
|
|
371
|
+
const closingActive = closeActive();
|
|
372
|
+
set(disconnected);
|
|
373
|
+
await save(null);
|
|
374
|
+
await closingActive;
|
|
375
|
+
},
|
|
376
|
+
reconnect() {
|
|
377
|
+
if (restoring) return restoring;
|
|
378
|
+
if (destroyed || state.status !== "disconnected") return Promise.resolve(state);
|
|
379
|
+
const current = ++operation;
|
|
380
|
+
const attempt = (async () => {
|
|
381
|
+
const saved = await load();
|
|
382
|
+
if (current !== operation || !saved) return state;
|
|
383
|
+
const family = registry.get(saved.family);
|
|
384
|
+
if (!family || family.connectionless || !family.driver) return state;
|
|
385
|
+
const driver = driverFor(family);
|
|
386
|
+
const connector = connectorFor(driver, saved.connectorId);
|
|
387
|
+
pending = {
|
|
388
|
+
driver,
|
|
389
|
+
connectorId: saved.connectorId
|
|
390
|
+
};
|
|
391
|
+
set(Object.freeze({
|
|
392
|
+
...disconnected,
|
|
393
|
+
status: "reconnecting",
|
|
394
|
+
family: family.id,
|
|
395
|
+
connector
|
|
396
|
+
}));
|
|
397
|
+
await closing.get(driver);
|
|
398
|
+
const untrack = track(driver, saved.connectorId);
|
|
399
|
+
let account;
|
|
400
|
+
try {
|
|
401
|
+
try {
|
|
402
|
+
if (current !== operation) return state;
|
|
403
|
+
account = await driver.reconnect(saved.connectorId);
|
|
404
|
+
} catch {
|
|
405
|
+
if (current === operation) {
|
|
406
|
+
pending = null;
|
|
407
|
+
set(disconnected);
|
|
408
|
+
}
|
|
409
|
+
await closeOrphan(driver, saved.connectorId);
|
|
410
|
+
return state;
|
|
411
|
+
}
|
|
412
|
+
if (current !== operation) {
|
|
413
|
+
await settleStale(driver, saved.connectorId, account);
|
|
414
|
+
return state;
|
|
415
|
+
}
|
|
416
|
+
} finally {
|
|
417
|
+
untrack();
|
|
418
|
+
}
|
|
419
|
+
pending = null;
|
|
420
|
+
if (!account) {
|
|
421
|
+
set(disconnected);
|
|
422
|
+
await save(null);
|
|
423
|
+
await closeOrphan(driver, saved.connectorId);
|
|
424
|
+
return state;
|
|
425
|
+
}
|
|
426
|
+
activate(family, driver, connector, account);
|
|
427
|
+
return state;
|
|
428
|
+
})();
|
|
429
|
+
restoring = attempt;
|
|
430
|
+
const settled = () => {
|
|
431
|
+
if (restoring === attempt) restoring = null;
|
|
432
|
+
};
|
|
433
|
+
void attempt.then(settled, settled);
|
|
434
|
+
return attempt;
|
|
435
|
+
},
|
|
436
|
+
destroy() {
|
|
437
|
+
if (destroyed) return;
|
|
438
|
+
destroyed = true;
|
|
439
|
+
keptAtDestroy = [active, pending];
|
|
440
|
+
for (const [driver, held] of holders) holdersByDriver.get(driver)?.delete(held);
|
|
441
|
+
operation++;
|
|
442
|
+
restoring = null;
|
|
443
|
+
pending = null;
|
|
444
|
+
release();
|
|
445
|
+
unwatchConnectors();
|
|
446
|
+
connectorListeners.clear();
|
|
447
|
+
listeners.clear();
|
|
448
|
+
}
|
|
449
|
+
};
|
|
450
|
+
}
|