@multiplatform.one/web3 7.23.1 → 7.24.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 +150 -11
- package/dist/cjs/clients/evm.cjs +299 -11
- package/dist/cjs/clients/evm.native.js +500 -12
- package/dist/cjs/clients/evm.native.js.map +1 -1
- package/dist/cjs/clients/index.cjs +5 -0
- package/dist/cjs/clients/index.native.js +5 -0
- package/dist/cjs/clients/index.native.js.map +1 -1
- package/dist/cjs/clients/solana.cjs +39 -21
- package/dist/cjs/clients/solana.native.js +48 -23
- package/dist/cjs/clients/solana.native.js.map +1 -1
- package/dist/cjs/connectkit/GpgProvider.cjs +44 -0
- package/dist/cjs/connectkit/GpgProvider.native.js +51 -0
- package/dist/cjs/connectkit/GpgProvider.native.js.map +1 -0
- package/dist/cjs/connectkit/adapters/BitcoinAdapter.cjs +5 -14
- package/dist/cjs/connectkit/adapters/BitcoinAdapter.native.js +5 -15
- package/dist/cjs/connectkit/adapters/BitcoinAdapter.native.js.map +1 -1
- package/dist/cjs/connectkit/adapters/EthereumAdapter.cjs +6 -15
- package/dist/cjs/connectkit/adapters/EthereumAdapter.native.js +7 -16
- package/dist/cjs/connectkit/adapters/EthereumAdapter.native.js.map +1 -1
- package/dist/cjs/connectkit/adapters/SolanaAdapter.cjs +5 -14
- package/dist/cjs/connectkit/adapters/SolanaAdapter.native.js +5 -15
- package/dist/cjs/connectkit/adapters/SolanaAdapter.native.js.map +1 -1
- package/dist/cjs/connectkit/adapters/SuiAdapter.cjs +5 -14
- package/dist/cjs/connectkit/adapters/SuiAdapter.native.js +5 -15
- package/dist/cjs/connectkit/adapters/SuiAdapter.native.js.map +1 -1
- package/dist/cjs/connectkit/connectors/createWalletMessage.cjs +2 -2
- package/dist/cjs/connectkit/connectors/createWalletMessage.native.js +2 -2
- package/dist/cjs/connectkit/connectors/createWalletMessage.native.js.map +1 -1
- package/dist/cjs/connectkit/index.cjs +4 -3
- package/dist/cjs/connectkit/index.native.js +4 -3
- package/dist/cjs/connectkit/index.native.js.map +1 -1
- package/dist/cjs/connectkit/siwe/SIWEContext.native.js.map +1 -1
- package/dist/cjs/connectkit/siwe/SIWEProvider.cjs +18 -3
- package/dist/cjs/connectkit/siwe/SIWEProvider.native.js +18 -3
- package/dist/cjs/connectkit/siwe/SIWEProvider.native.js.map +1 -1
- package/dist/cjs/index.cjs +1 -0
- package/dist/cjs/index.native.js +1 -0
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/keycloak/KeycloakWalletLogin.cjs +255 -0
- package/dist/cjs/keycloak/KeycloakWalletLogin.native.js +33 -0
- package/dist/cjs/keycloak/KeycloakWalletLogin.native.js.map +1 -0
- package/dist/cjs/keycloak/browserFlow.cjs +83 -0
- package/dist/cjs/keycloak/browserFlow.native.js +90 -0
- package/dist/cjs/keycloak/browserFlow.native.js.map +1 -0
- package/dist/cjs/keycloak/device.cjs +36 -0
- package/dist/cjs/keycloak/device.native.js +45 -0
- package/dist/cjs/keycloak/device.native.js.map +1 -0
- package/dist/cjs/keycloak/directGrant.cjs +189 -0
- package/dist/cjs/keycloak/directGrant.native.js +233 -0
- package/dist/cjs/keycloak/directGrant.native.js.map +1 -0
- package/dist/cjs/keycloak/iife.cjs +4 -0
- package/dist/cjs/keycloak/iife.native.js +7 -0
- package/dist/cjs/keycloak/iife.native.js.map +1 -0
- package/dist/cjs/keycloak/index.cjs +53 -0
- package/dist/cjs/keycloak/index.native.js +56 -0
- package/dist/cjs/keycloak/index.native.js.map +1 -0
- package/dist/cjs/keycloak/keycloakWallet.cjs +214 -0
- package/dist/cjs/keycloak/keycloakWallet.native.js +285 -0
- package/dist/cjs/keycloak/keycloakWallet.native.js.map +1 -0
- package/dist/cjs/keycloak/mount.cjs +53 -0
- package/dist/cjs/keycloak/mount.native.js +33 -0
- package/dist/cjs/keycloak/mount.native.js.map +1 -0
- package/dist/cjs/keycloak/registerWallet.cjs +74 -0
- package/dist/cjs/keycloak/registerWallet.native.js +81 -0
- package/dist/cjs/keycloak/registerWallet.native.js.map +1 -0
- package/dist/cjs/keycloak/types.cjs +46 -0
- package/dist/cjs/keycloak/types.native.js +179 -0
- package/dist/cjs/keycloak/types.native.js.map +1 -0
- package/dist/cjs/keycloak/useDirectLogin.cjs +57 -0
- package/dist/cjs/keycloak/useDirectLogin.native.js +77 -0
- package/dist/cjs/keycloak/useDirectLogin.native.js.map +1 -0
- package/dist/cjs/keycloak/useWalletLogin.cjs +97 -0
- package/dist/cjs/keycloak/useWalletLogin.native.js +33 -0
- package/dist/cjs/keycloak/useWalletLogin.native.js.map +1 -0
- package/dist/cjs/message/buildWalletMessage.cjs +113 -0
- package/dist/cjs/message/buildWalletMessage.native.js +121 -0
- package/dist/cjs/message/buildWalletMessage.native.js.map +1 -0
- package/dist/cjs/message/index.cjs +29 -0
- package/dist/cjs/message/index.native.js +32 -0
- package/dist/cjs/message/index.native.js.map +1 -0
- package/dist/cjs/providers/WalletProvider.cjs +8 -2
- package/dist/cjs/siws/message.cjs +5 -16
- package/dist/cjs/siws/message.native.js +6 -16
- package/dist/cjs/siws/message.native.js.map +1 -1
- package/dist/cjs/solana.native.js.map +1 -1
- package/dist/esm/clients/evm.mjs +295 -12
- package/dist/esm/clients/evm.mjs.map +1 -1
- package/dist/esm/clients/evm.native.js +496 -13
- package/dist/esm/clients/evm.native.js.map +1 -1
- package/dist/esm/clients/index.mjs +2 -2
- package/dist/esm/clients/index.mjs.map +1 -1
- package/dist/esm/clients/index.native.js +2 -2
- package/dist/esm/clients/index.native.js.map +1 -1
- package/dist/esm/clients/solana.mjs +39 -21
- package/dist/esm/clients/solana.mjs.map +1 -1
- package/dist/esm/clients/solana.native.js +48 -23
- package/dist/esm/clients/solana.native.js.map +1 -1
- package/dist/esm/connectkit/GpgProvider.mjs +19 -0
- package/dist/esm/connectkit/GpgProvider.mjs.map +1 -0
- package/dist/esm/connectkit/GpgProvider.native.js +23 -0
- package/dist/esm/connectkit/GpgProvider.native.js.map +1 -0
- package/dist/esm/connectkit/adapters/BitcoinAdapter.mjs +5 -14
- package/dist/esm/connectkit/adapters/BitcoinAdapter.mjs.map +1 -1
- package/dist/esm/connectkit/adapters/BitcoinAdapter.native.js +5 -15
- package/dist/esm/connectkit/adapters/BitcoinAdapter.native.js.map +1 -1
- package/dist/esm/connectkit/adapters/EthereumAdapter.mjs +6 -15
- package/dist/esm/connectkit/adapters/EthereumAdapter.mjs.map +1 -1
- package/dist/esm/connectkit/adapters/EthereumAdapter.native.js +7 -16
- package/dist/esm/connectkit/adapters/EthereumAdapter.native.js.map +1 -1
- package/dist/esm/connectkit/adapters/SolanaAdapter.mjs +5 -14
- package/dist/esm/connectkit/adapters/SolanaAdapter.mjs.map +1 -1
- package/dist/esm/connectkit/adapters/SolanaAdapter.native.js +5 -15
- package/dist/esm/connectkit/adapters/SolanaAdapter.native.js.map +1 -1
- package/dist/esm/connectkit/adapters/SuiAdapter.mjs +5 -14
- package/dist/esm/connectkit/adapters/SuiAdapter.mjs.map +1 -1
- package/dist/esm/connectkit/adapters/SuiAdapter.native.js +5 -15
- package/dist/esm/connectkit/adapters/SuiAdapter.native.js.map +1 -1
- package/dist/esm/connectkit/connectors/createWalletMessage.mjs +1 -1
- package/dist/esm/connectkit/connectors/createWalletMessage.native.js +1 -1
- package/dist/esm/connectkit/index.mjs +3 -2
- package/dist/esm/connectkit/index.mjs.map +1 -1
- package/dist/esm/connectkit/index.native.js +3 -2
- package/dist/esm/connectkit/index.native.js.map +1 -1
- package/dist/esm/connectkit/siwe/SIWEContext.mjs.map +1 -1
- package/dist/esm/connectkit/siwe/SIWEContext.native.js.map +1 -1
- package/dist/esm/connectkit/siwe/SIWEProvider.mjs +19 -4
- package/dist/esm/connectkit/siwe/SIWEProvider.mjs.map +1 -1
- package/dist/esm/connectkit/siwe/SIWEProvider.native.js +19 -4
- package/dist/esm/connectkit/siwe/SIWEProvider.native.js.map +1 -1
- package/dist/esm/index.mjs +1 -0
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +1 -0
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/keycloak/KeycloakWalletLogin.mjs +218 -0
- package/dist/esm/keycloak/KeycloakWalletLogin.mjs.map +1 -0
- package/dist/esm/keycloak/KeycloakWalletLogin.native.js +5 -0
- package/dist/esm/keycloak/KeycloakWalletLogin.native.js.map +1 -0
- package/dist/esm/keycloak/browserFlow.mjs +58 -0
- package/dist/esm/keycloak/browserFlow.mjs.map +1 -0
- package/dist/esm/keycloak/browserFlow.native.js +62 -0
- package/dist/esm/keycloak/browserFlow.native.js.map +1 -0
- package/dist/esm/keycloak/device.mjs +10 -0
- package/dist/esm/keycloak/device.mjs.map +1 -0
- package/dist/esm/keycloak/device.native.js +16 -0
- package/dist/esm/keycloak/device.native.js.map +1 -0
- package/dist/esm/keycloak/directGrant.mjs +164 -0
- package/dist/esm/keycloak/directGrant.mjs.map +1 -0
- package/dist/esm/keycloak/directGrant.native.js +205 -0
- package/dist/esm/keycloak/directGrant.native.js.map +1 -0
- package/dist/esm/keycloak/iife.mjs +5 -0
- package/dist/esm/keycloak/iife.mjs.map +1 -0
- package/dist/esm/keycloak/iife.native.js +5 -0
- package/dist/esm/keycloak/iife.native.js.map +1 -0
- package/dist/esm/keycloak/index.mjs +13 -0
- package/dist/esm/keycloak/index.mjs.map +1 -0
- package/dist/esm/keycloak/index.native.js +13 -0
- package/dist/esm/keycloak/index.native.js.map +1 -0
- package/dist/esm/keycloak/keycloakWallet.mjs +186 -0
- package/dist/esm/keycloak/keycloakWallet.mjs.map +1 -0
- package/dist/esm/keycloak/keycloakWallet.native.js +254 -0
- package/dist/esm/keycloak/keycloakWallet.native.js.map +1 -0
- package/dist/esm/keycloak/mount.mjs +28 -0
- package/dist/esm/keycloak/mount.mjs.map +1 -0
- package/dist/esm/keycloak/mount.native.js +5 -0
- package/dist/esm/keycloak/mount.native.js.map +1 -0
- package/dist/esm/keycloak/registerWallet.mjs +49 -0
- package/dist/esm/keycloak/registerWallet.mjs.map +1 -0
- package/dist/esm/keycloak/registerWallet.native.js +53 -0
- package/dist/esm/keycloak/registerWallet.native.js.map +1 -0
- package/dist/esm/keycloak/types.mjs +20 -0
- package/dist/esm/keycloak/types.mjs.map +1 -0
- package/dist/esm/keycloak/types.native.js +150 -0
- package/dist/esm/keycloak/types.native.js.map +1 -0
- package/dist/esm/keycloak/useDirectLogin.mjs +32 -0
- package/dist/esm/keycloak/useDirectLogin.mjs.map +1 -0
- package/dist/esm/keycloak/useDirectLogin.native.js +49 -0
- package/dist/esm/keycloak/useDirectLogin.native.js.map +1 -0
- package/dist/esm/keycloak/useWalletLogin.mjs +72 -0
- package/dist/esm/keycloak/useWalletLogin.mjs.map +1 -0
- package/dist/esm/keycloak/useWalletLogin.native.js +5 -0
- package/dist/esm/keycloak/useWalletLogin.native.js.map +1 -0
- package/dist/esm/message/buildWalletMessage.mjs +87 -0
- package/dist/esm/message/buildWalletMessage.mjs.map +1 -0
- package/dist/esm/message/buildWalletMessage.native.js +92 -0
- package/dist/esm/message/buildWalletMessage.native.js.map +1 -0
- package/dist/esm/message/index.mjs +3 -0
- package/dist/esm/message/index.mjs.map +1 -0
- package/dist/esm/message/index.native.js +3 -0
- package/dist/esm/message/index.native.js.map +1 -0
- package/dist/esm/providers/WalletProvider.mjs +9 -3
- package/dist/esm/providers/WalletProvider.mjs.map +1 -1
- package/dist/esm/siws/message.mjs +5 -16
- package/dist/esm/siws/message.mjs.map +1 -1
- package/dist/esm/siws/message.native.js +6 -16
- package/dist/esm/siws/message.native.js.map +1 -1
- package/dist/esm/solana.mjs.map +1 -1
- package/dist/esm/solana.native.js.map +1 -1
- package/dist/jsx/clients/evm.mjs +295 -12
- package/dist/jsx/clients/evm.mjs.map +1 -1
- package/dist/jsx/clients/evm.native.js +500 -12
- package/dist/jsx/clients/evm.native.js.map +1 -1
- package/dist/jsx/clients/index.mjs +2 -2
- package/dist/jsx/clients/index.mjs.map +1 -1
- package/dist/jsx/clients/index.native.js +5 -0
- package/dist/jsx/clients/index.native.js.map +1 -1
- package/dist/jsx/clients/solana.mjs +39 -21
- package/dist/jsx/clients/solana.mjs.map +1 -1
- package/dist/jsx/clients/solana.native.js +48 -23
- package/dist/jsx/clients/solana.native.js.map +1 -1
- package/dist/jsx/connectkit/GpgProvider.mjs +19 -0
- package/dist/jsx/connectkit/GpgProvider.mjs.map +1 -0
- package/dist/jsx/connectkit/GpgProvider.native.js +51 -0
- package/dist/jsx/connectkit/GpgProvider.native.js.map +1 -0
- package/dist/jsx/connectkit/adapters/BitcoinAdapter.mjs +5 -14
- package/dist/jsx/connectkit/adapters/BitcoinAdapter.mjs.map +1 -1
- package/dist/jsx/connectkit/adapters/BitcoinAdapter.native.js +5 -15
- package/dist/jsx/connectkit/adapters/BitcoinAdapter.native.js.map +1 -1
- package/dist/jsx/connectkit/adapters/EthereumAdapter.mjs +6 -15
- package/dist/jsx/connectkit/adapters/EthereumAdapter.mjs.map +1 -1
- package/dist/jsx/connectkit/adapters/EthereumAdapter.native.js +7 -16
- package/dist/jsx/connectkit/adapters/EthereumAdapter.native.js.map +1 -1
- package/dist/jsx/connectkit/adapters/SolanaAdapter.mjs +5 -14
- package/dist/jsx/connectkit/adapters/SolanaAdapter.mjs.map +1 -1
- package/dist/jsx/connectkit/adapters/SolanaAdapter.native.js +5 -15
- package/dist/jsx/connectkit/adapters/SolanaAdapter.native.js.map +1 -1
- package/dist/jsx/connectkit/adapters/SuiAdapter.mjs +5 -14
- package/dist/jsx/connectkit/adapters/SuiAdapter.mjs.map +1 -1
- package/dist/jsx/connectkit/adapters/SuiAdapter.native.js +5 -15
- package/dist/jsx/connectkit/adapters/SuiAdapter.native.js.map +1 -1
- package/dist/jsx/connectkit/connectors/createWalletMessage.mjs +1 -1
- package/dist/jsx/connectkit/connectors/createWalletMessage.native.js +2 -2
- package/dist/jsx/connectkit/index.mjs +3 -2
- package/dist/jsx/connectkit/index.mjs.map +1 -1
- package/dist/jsx/connectkit/index.native.js +4 -3
- package/dist/jsx/connectkit/index.native.js.map +1 -1
- package/dist/jsx/connectkit/siwe/SIWEContext.mjs.map +1 -1
- package/dist/jsx/connectkit/siwe/SIWEContext.native.js.map +1 -1
- package/dist/jsx/connectkit/siwe/SIWEProvider.mjs +19 -4
- package/dist/jsx/connectkit/siwe/SIWEProvider.mjs.map +1 -1
- package/dist/jsx/connectkit/siwe/SIWEProvider.native.js +18 -3
- package/dist/jsx/connectkit/siwe/SIWEProvider.native.js.map +1 -1
- package/dist/jsx/index.js +1 -0
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +1 -0
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js +1 -0
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/keycloak/KeycloakWalletLogin.mjs +218 -0
- package/dist/jsx/keycloak/KeycloakWalletLogin.mjs.map +1 -0
- package/dist/jsx/keycloak/KeycloakWalletLogin.native.js +33 -0
- package/dist/jsx/keycloak/KeycloakWalletLogin.native.js.map +1 -0
- package/dist/jsx/keycloak/browserFlow.mjs +58 -0
- package/dist/jsx/keycloak/browserFlow.mjs.map +1 -0
- package/dist/jsx/keycloak/browserFlow.native.js +90 -0
- package/dist/jsx/keycloak/browserFlow.native.js.map +1 -0
- package/dist/jsx/keycloak/device.mjs +10 -0
- package/dist/jsx/keycloak/device.mjs.map +1 -0
- package/dist/jsx/keycloak/device.native.js +45 -0
- package/dist/jsx/keycloak/device.native.js.map +1 -0
- package/dist/jsx/keycloak/directGrant.mjs +164 -0
- package/dist/jsx/keycloak/directGrant.mjs.map +1 -0
- package/dist/jsx/keycloak/directGrant.native.js +233 -0
- package/dist/jsx/keycloak/directGrant.native.js.map +1 -0
- package/dist/jsx/keycloak/iife.mjs +5 -0
- package/dist/jsx/keycloak/iife.mjs.map +1 -0
- package/dist/jsx/keycloak/iife.native.js +7 -0
- package/dist/jsx/keycloak/iife.native.js.map +1 -0
- package/dist/jsx/keycloak/index.mjs +13 -0
- package/dist/jsx/keycloak/index.mjs.map +1 -0
- package/dist/jsx/keycloak/index.native.js +56 -0
- package/dist/jsx/keycloak/index.native.js.map +1 -0
- package/dist/jsx/keycloak/keycloakWallet.mjs +186 -0
- package/dist/jsx/keycloak/keycloakWallet.mjs.map +1 -0
- package/dist/jsx/keycloak/keycloakWallet.native.js +285 -0
- package/dist/jsx/keycloak/keycloakWallet.native.js.map +1 -0
- package/dist/jsx/keycloak/mount.mjs +28 -0
- package/dist/jsx/keycloak/mount.mjs.map +1 -0
- package/dist/jsx/keycloak/mount.native.js +33 -0
- package/dist/jsx/keycloak/mount.native.js.map +1 -0
- package/dist/jsx/keycloak/registerWallet.mjs +49 -0
- package/dist/jsx/keycloak/registerWallet.mjs.map +1 -0
- package/dist/jsx/keycloak/registerWallet.native.js +81 -0
- package/dist/jsx/keycloak/registerWallet.native.js.map +1 -0
- package/dist/jsx/keycloak/types.mjs +20 -0
- package/dist/jsx/keycloak/types.mjs.map +1 -0
- package/dist/jsx/keycloak/types.native.js +179 -0
- package/dist/jsx/keycloak/types.native.js.map +1 -0
- package/dist/jsx/keycloak/useDirectLogin.mjs +32 -0
- package/dist/jsx/keycloak/useDirectLogin.mjs.map +1 -0
- package/dist/jsx/keycloak/useDirectLogin.native.js +77 -0
- package/dist/jsx/keycloak/useDirectLogin.native.js.map +1 -0
- package/dist/jsx/keycloak/useWalletLogin.mjs +72 -0
- package/dist/jsx/keycloak/useWalletLogin.mjs.map +1 -0
- package/dist/jsx/keycloak/useWalletLogin.native.js +33 -0
- package/dist/jsx/keycloak/useWalletLogin.native.js.map +1 -0
- package/dist/jsx/message/buildWalletMessage.mjs +87 -0
- package/dist/jsx/message/buildWalletMessage.mjs.map +1 -0
- package/dist/jsx/message/buildWalletMessage.native.js +121 -0
- package/dist/jsx/message/buildWalletMessage.native.js.map +1 -0
- package/dist/jsx/message/index.mjs +3 -0
- package/dist/jsx/message/index.mjs.map +1 -0
- package/dist/jsx/message/index.native.js +32 -0
- package/dist/jsx/message/index.native.js.map +1 -0
- package/dist/jsx/providers/WalletProvider.mjs +9 -3
- package/dist/jsx/providers/WalletProvider.mjs.map +1 -1
- package/dist/jsx/siws/message.mjs +5 -16
- package/dist/jsx/siws/message.mjs.map +1 -1
- package/dist/jsx/siws/message.native.js +6 -16
- package/dist/jsx/siws/message.native.js.map +1 -1
- package/dist/jsx/solana.mjs.map +1 -1
- package/dist/jsx/solana.native.js.map +1 -1
- package/dist/keycloak/login.iife.js +3604 -0
- package/package.json +27 -8
- package/src/clients/evm.spec.ts +644 -10
- package/src/clients/evm.ts +498 -10
- package/src/clients/index.ts +8 -0
- package/src/clients/solana.spec.ts +116 -0
- package/src/clients/solana.ts +51 -31
- package/src/connectkit/GpgProvider.tsx +16 -0
- package/src/connectkit/adapters/BitcoinAdapter.ts +5 -16
- package/src/connectkit/adapters/EthereumAdapter.ts +6 -17
- package/src/connectkit/adapters/SolanaAdapter.ts +5 -16
- package/src/connectkit/adapters/SuiAdapter.ts +5 -16
- package/src/connectkit/connectors/createWalletMessage.ts +1 -1
- package/src/connectkit/index.ts +2 -6
- package/src/connectkit/openConnector/modal.spec.tsx +1 -1
- package/src/connectkit/siwe/SIWEContext.tsx +6 -2
- package/src/connectkit/siwe/SIWEProvider.tsx +22 -5
- package/src/index.ts +3 -0
- package/src/keycloak/KeycloakWalletLogin.native.tsx +7 -0
- package/src/keycloak/KeycloakWalletLogin.spec.tsx +168 -0
- package/src/keycloak/KeycloakWalletLogin.tsx +251 -0
- package/src/keycloak/browserFlow.spec.ts +108 -0
- package/src/keycloak/browserFlow.ts +84 -0
- package/src/keycloak/device.ts +17 -0
- package/src/keycloak/directGrant.spec.ts +331 -0
- package/src/keycloak/directGrant.ts +214 -0
- package/src/keycloak/iife.ts +3 -0
- package/src/keycloak/index.ts +44 -0
- package/src/keycloak/keycloakWallet.spec.ts +216 -0
- package/src/keycloak/keycloakWallet.ts +275 -0
- package/src/keycloak/mount.native.ts +11 -0
- package/src/keycloak/mount.tsx +45 -0
- package/src/keycloak/nonceReset.spec.tsx +205 -0
- package/src/keycloak/registerWallet.spec.ts +88 -0
- package/src/keycloak/registerWallet.ts +59 -0
- package/src/keycloak/types.ts +66 -0
- package/src/keycloak/useDirectLogin.spec.tsx +112 -0
- package/src/keycloak/useDirectLogin.ts +74 -0
- package/src/keycloak/useWalletLogin.native.ts +7 -0
- package/src/keycloak/useWalletLogin.ts +99 -0
- package/src/message/buildWalletMessage.spec.ts +291 -0
- package/src/message/buildWalletMessage.ts +150 -0
- package/src/message/index.ts +8 -0
- package/src/providers/WalletProvider.tsx +15 -2
- package/src/siws/message.ts +3 -22
- package/src/solana.ts +1 -0
- package/types/clients/evm.d.ts +144 -2
- package/types/clients/evm.d.ts.map +1 -1
- package/types/clients/index.d.ts +1 -1
- package/types/clients/index.d.ts.map +1 -1
- package/types/clients/solana.d.ts +14 -5
- package/types/clients/solana.d.ts.map +1 -1
- package/types/connectkit/GpgProvider.d.ts +10 -0
- package/types/connectkit/GpgProvider.d.ts.map +1 -0
- package/types/connectkit/adapters/BitcoinAdapter.d.ts.map +1 -1
- package/types/connectkit/adapters/EthereumAdapter.d.ts.map +1 -1
- package/types/connectkit/adapters/SolanaAdapter.d.ts.map +1 -1
- package/types/connectkit/adapters/SuiAdapter.d.ts.map +1 -1
- package/types/connectkit/connectors/createWalletMessage.d.ts +1 -1
- package/types/connectkit/connectors/createWalletMessage.d.ts.map +1 -1
- package/types/connectkit/index.d.ts +3 -2
- package/types/connectkit/index.d.ts.map +1 -1
- package/types/connectkit/siwe/SIWEContext.d.ts +2 -1
- package/types/connectkit/siwe/SIWEContext.d.ts.map +1 -1
- package/types/connectkit/siwe/SIWEProvider.d.ts.map +1 -1
- package/types/index.d.ts +1 -0
- package/types/index.d.ts.map +1 -1
- package/types/keycloak/KeycloakWalletLogin.d.ts +45 -0
- package/types/keycloak/KeycloakWalletLogin.d.ts.map +1 -0
- package/types/keycloak/KeycloakWalletLogin.native.d.ts +4 -0
- package/types/keycloak/KeycloakWalletLogin.native.d.ts.map +1 -0
- package/types/keycloak/browserFlow.d.ts +27 -0
- package/types/keycloak/browserFlow.d.ts.map +1 -0
- package/types/keycloak/device.d.ts +14 -0
- package/types/keycloak/device.d.ts.map +1 -0
- package/types/keycloak/directGrant.d.ts +43 -0
- package/types/keycloak/directGrant.d.ts.map +1 -0
- package/types/keycloak/iife.d.ts +2 -0
- package/types/keycloak/iife.d.ts.map +1 -0
- package/types/keycloak/index.d.ts +12 -0
- package/types/keycloak/index.d.ts.map +1 -0
- package/types/keycloak/keycloakWallet.d.ts +120 -0
- package/types/keycloak/keycloakWallet.d.ts.map +1 -0
- package/types/keycloak/mount.d.ts +16 -0
- package/types/keycloak/mount.d.ts.map +1 -0
- package/types/keycloak/mount.native.d.ts +5 -0
- package/types/keycloak/mount.native.d.ts.map +1 -0
- package/types/keycloak/registerWallet.d.ts +22 -0
- package/types/keycloak/registerWallet.d.ts.map +1 -0
- package/types/keycloak/types.d.ts +50 -0
- package/types/keycloak/types.d.ts.map +1 -0
- package/types/keycloak/useDirectLogin.d.ts +29 -0
- package/types/keycloak/useDirectLogin.d.ts.map +1 -0
- package/types/keycloak/useWalletLogin.d.ts +26 -0
- package/types/keycloak/useWalletLogin.d.ts.map +1 -0
- package/types/keycloak/useWalletLogin.native.d.ts +4 -0
- package/types/keycloak/useWalletLogin.native.d.ts.map +1 -0
- package/types/message/buildWalletMessage.d.ts +46 -0
- package/types/message/buildWalletMessage.d.ts.map +1 -0
- package/types/message/index.d.ts +2 -0
- package/types/message/index.d.ts.map +1 -0
- package/types/providers/WalletProvider.d.ts +8 -1
- package/types/providers/WalletProvider.d.ts.map +1 -1
- package/types/siws/message.d.ts.map +1 -1
- package/types/solana.d.ts +1 -1
- package/types/solana.d.ts.map +1 -1
- package/dist/cjs/connectkit/adapters/messages.cjs +0 -73
- package/dist/cjs/connectkit/adapters/messages.native.js +0 -79
- package/dist/cjs/connectkit/adapters/messages.native.js.map +0 -1
- package/dist/esm/connectkit/adapters/messages.mjs +0 -48
- package/dist/esm/connectkit/adapters/messages.mjs.map +0 -1
- package/dist/esm/connectkit/adapters/messages.native.js +0 -51
- package/dist/esm/connectkit/adapters/messages.native.js.map +0 -1
- package/dist/jsx/connectkit/adapters/messages.mjs +0 -48
- package/dist/jsx/connectkit/adapters/messages.mjs.map +0 -1
- package/dist/jsx/connectkit/adapters/messages.native.js +0 -79
- package/dist/jsx/connectkit/adapters/messages.native.js.map +0 -1
- package/src/connectkit/adapters/messages.ts +0 -84
- package/types/connectkit/adapters/messages.d.ts +0 -16
- package/types/connectkit/adapters/messages.d.ts.map +0 -1
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { sha256 } from "viem";
|
|
2
|
+
import { bytesToBase64 } from "../bridge/base64.mjs";
|
|
3
|
+
import { createWalletMessage } from "../connectkit/connectors/createWalletMessage.mjs";
|
|
4
|
+
import { buildWalletMessage } from "../message/index.mjs";
|
|
5
|
+
import { browserFlow } from "./browserFlow.mjs";
|
|
6
|
+
import { createDirectGrant } from "./directGrant.mjs";
|
|
7
|
+
import { createWalletRegistration } from "./registerWallet.mjs";
|
|
8
|
+
import { KeycloakWalletError } from "./types.mjs";
|
|
9
|
+
const sessionCookie = /(KEYCLOAK_SESSION_[A-Z]+)=([^;,\s]+)/;
|
|
10
|
+
function readSessionCookie(res) {
|
|
11
|
+
const headers = res.headers;
|
|
12
|
+
const values = headers.getSetCookie?.() ?? [headers.get("set-cookie") ?? ""];
|
|
13
|
+
for (const value of values) {
|
|
14
|
+
const match = value.match(sessionCookie);
|
|
15
|
+
if (match) return `${match[1]}=${match[2]}`;
|
|
16
|
+
}
|
|
17
|
+
return void 0;
|
|
18
|
+
}
|
|
19
|
+
const base64Url = bytes => bytesToBase64(bytes).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
|
|
20
|
+
function randomBase64Url(size) {
|
|
21
|
+
const crypto = globalThis.crypto;
|
|
22
|
+
if (!crypto?.getRandomValues) {
|
|
23
|
+
throw new Error("browserLoginUrl needs crypto.getRandomValues (react-native-get-random-values on Hermes)");
|
|
24
|
+
}
|
|
25
|
+
return base64Url(crypto.getRandomValues(new Uint8Array(size)));
|
|
26
|
+
}
|
|
27
|
+
function pkceChallenge(codeVerifier) {
|
|
28
|
+
return base64Url(sha256(new TextEncoder().encode(codeVerifier), "bytes"));
|
|
29
|
+
}
|
|
30
|
+
function toCredentials(args) {
|
|
31
|
+
return {
|
|
32
|
+
username: args.signature,
|
|
33
|
+
password: bytesToBase64(new TextEncoder().encode(args.message)),
|
|
34
|
+
message: args.message
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function keycloakWallet(options) {
|
|
38
|
+
const baseUrl = options.baseUrl.replace(/\/+$/, "");
|
|
39
|
+
const resource = options.resource ?? "siww";
|
|
40
|
+
const realmUrl = `${baseUrl}/realms/${encodeURIComponent(options.realm)}`;
|
|
41
|
+
const resourceUrl = `${realmUrl}/${resource}`;
|
|
42
|
+
const tokenUrl = `${realmUrl}/protocol/openid-connect/token`;
|
|
43
|
+
const fetchImpl = options.fetch ?? ((input, init) => globalThis.fetch(input, init));
|
|
44
|
+
let cookie;
|
|
45
|
+
let nonce;
|
|
46
|
+
const nonceListeners = /* @__PURE__ */new Set();
|
|
47
|
+
const request = (url, init = {}) => {
|
|
48
|
+
const headers = new Headers(init.headers);
|
|
49
|
+
if (cookie && !headers.has("cookie")) headers.set("cookie", cookie);
|
|
50
|
+
return fetchImpl(url, {
|
|
51
|
+
credentials: "include",
|
|
52
|
+
...init,
|
|
53
|
+
headers
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
const fetchNonce = async () => {
|
|
57
|
+
const res = await request(`${resourceUrl}/nonce`);
|
|
58
|
+
if (!res.ok) {
|
|
59
|
+
throw new KeycloakWalletError(`Keycloak nonce request failed (${res.status})`, res.status);
|
|
60
|
+
}
|
|
61
|
+
cookie = readSessionCookie(res) ?? cookie;
|
|
62
|
+
const value = (await res.text()).trim();
|
|
63
|
+
if (!value) throw new KeycloakWalletError("Keycloak returned an empty nonce", res.status);
|
|
64
|
+
return value;
|
|
65
|
+
};
|
|
66
|
+
const kc = {
|
|
67
|
+
baseUrl,
|
|
68
|
+
realm: options.realm,
|
|
69
|
+
resource,
|
|
70
|
+
realmUrl,
|
|
71
|
+
resourceUrl,
|
|
72
|
+
tokenUrl,
|
|
73
|
+
request,
|
|
74
|
+
getNonce() {
|
|
75
|
+
if (!nonce) {
|
|
76
|
+
const pending = fetchNonce();
|
|
77
|
+
nonce = pending;
|
|
78
|
+
pending.catch(() => {
|
|
79
|
+
if (nonce === pending) nonce = void 0;
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
return nonce;
|
|
83
|
+
},
|
|
84
|
+
resetNonce() {
|
|
85
|
+
nonce = void 0;
|
|
86
|
+
for (const listener of nonceListeners) listener();
|
|
87
|
+
},
|
|
88
|
+
subscribeNonceReset(listener) {
|
|
89
|
+
nonceListeners.add(listener);
|
|
90
|
+
return () => {
|
|
91
|
+
nonceListeners.delete(listener);
|
|
92
|
+
};
|
|
93
|
+
},
|
|
94
|
+
createMessage({
|
|
95
|
+
nonce: value,
|
|
96
|
+
address,
|
|
97
|
+
chainId
|
|
98
|
+
}) {
|
|
99
|
+
return createWalletMessage({
|
|
100
|
+
address,
|
|
101
|
+
chainId,
|
|
102
|
+
nonce: value,
|
|
103
|
+
domain: options.domain,
|
|
104
|
+
uri: options.uri
|
|
105
|
+
});
|
|
106
|
+
},
|
|
107
|
+
gpgMessage({
|
|
108
|
+
nonce: value
|
|
109
|
+
}) {
|
|
110
|
+
return buildWalletMessage("gpg", {
|
|
111
|
+
nonce: value,
|
|
112
|
+
domain: options.domain,
|
|
113
|
+
uri: options.uri
|
|
114
|
+
});
|
|
115
|
+
},
|
|
116
|
+
siweConfig(onSign) {
|
|
117
|
+
return {
|
|
118
|
+
getNonce: () => kc.getNonce(),
|
|
119
|
+
createMessage: ({
|
|
120
|
+
nonce: value,
|
|
121
|
+
address,
|
|
122
|
+
chainId
|
|
123
|
+
}) => kc.createMessage({
|
|
124
|
+
nonce: value,
|
|
125
|
+
address,
|
|
126
|
+
chainId
|
|
127
|
+
}),
|
|
128
|
+
onSign,
|
|
129
|
+
subscribeNonceReset: kc.subscribeNonceReset,
|
|
130
|
+
verifyMessage: async () => true,
|
|
131
|
+
getSession: async () => null,
|
|
132
|
+
signOut: async () => true
|
|
133
|
+
};
|
|
134
|
+
},
|
|
135
|
+
gpgConfig(onSign) {
|
|
136
|
+
return {
|
|
137
|
+
getNonce: () => kc.getNonce(),
|
|
138
|
+
buildMessage: args => kc.gpgMessage(args),
|
|
139
|
+
onSign,
|
|
140
|
+
subscribeNonceReset: kc.subscribeNonceReset
|
|
141
|
+
};
|
|
142
|
+
},
|
|
143
|
+
browserFlow(opts) {
|
|
144
|
+
return browserFlow(opts);
|
|
145
|
+
},
|
|
146
|
+
directGrant(opts) {
|
|
147
|
+
return createDirectGrant(kc, opts);
|
|
148
|
+
},
|
|
149
|
+
browserLoginUrl({
|
|
150
|
+
clientId,
|
|
151
|
+
redirectUri,
|
|
152
|
+
scope
|
|
153
|
+
}) {
|
|
154
|
+
const state = randomBase64Url(16);
|
|
155
|
+
const codeVerifier = randomBase64Url(32);
|
|
156
|
+
const params = new URLSearchParams({
|
|
157
|
+
client_id: clientId,
|
|
158
|
+
redirect_uri: redirectUri,
|
|
159
|
+
response_type: "code",
|
|
160
|
+
scope: Array.isArray(scope) ? scope.join(" ") : scope ?? "openid",
|
|
161
|
+
state,
|
|
162
|
+
code_challenge: pkceChallenge(codeVerifier),
|
|
163
|
+
code_challenge_method: "S256"
|
|
164
|
+
});
|
|
165
|
+
return {
|
|
166
|
+
url: `${realmUrl}/protocol/openid-connect/auth?${params}`,
|
|
167
|
+
state,
|
|
168
|
+
codeVerifier
|
|
169
|
+
};
|
|
170
|
+
},
|
|
171
|
+
registerWallet(opts) {
|
|
172
|
+
return createWalletRegistration(kc, opts);
|
|
173
|
+
}
|
|
174
|
+
};
|
|
175
|
+
return kc;
|
|
176
|
+
}
|
|
177
|
+
function deriveKeycloakFromLocation(location = globalThis.location) {
|
|
178
|
+
const match = location?.pathname.match(/^(.*)\/realms\/([^/]+)\//);
|
|
179
|
+
if (!location || !match) return void 0;
|
|
180
|
+
return {
|
|
181
|
+
baseUrl: location.origin + match[1],
|
|
182
|
+
realm: decodeURIComponent(match[2])
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
export { deriveKeycloakFromLocation, keycloakWallet, pkceChallenge, toCredentials };
|
|
186
|
+
//# sourceMappingURL=keycloakWallet.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["sha256","bytesToBase64","createWalletMessage","buildWalletMessage","browserFlow","createDirectGrant","createWalletRegistration","KeycloakWalletError","sessionCookie","readSessionCookie","res","headers","values","getSetCookie","get","value","match","base64Url","bytes","replace","randomBase64Url","size","crypto","globalThis","getRandomValues","Error","Uint8Array","pkceChallenge","codeVerifier","TextEncoder","encode","toCredentials","args","username","signature","password","message","keycloakWallet","options","baseUrl","resource","realmUrl","encodeURIComponent","realm","resourceUrl","tokenUrl","fetchImpl","fetch","input","init","cookie","nonce","nonceListeners","Set","request","url","Headers","has","set","credentials","fetchNonce","ok","status","text","trim","kc","getNonce","pending","catch","resetNonce","listener","subscribeNonceReset","add","delete","createMessage","address","chainId","domain","uri","gpgMessage","siweConfig","onSign","verifyMessage","getSession","signOut","gpgConfig","buildMessage","opts","directGrant","browserLoginUrl","clientId","redirectUri","scope","state","params","URLSearchParams","client_id","redirect_uri","response_type","Array","isArray","join","code_challenge","code_challenge_method","registerWallet","deriveKeycloakFromLocation","location","pathname","origin","decodeURIComponent"],"sources":["../../../src/keycloak/keycloakWallet.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,285 @@
|
|
|
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 keycloakWallet_exports = {};
|
|
26
|
+
__export(keycloakWallet_exports, {
|
|
27
|
+
deriveKeycloakFromLocation: () => deriveKeycloakFromLocation,
|
|
28
|
+
keycloakWallet: () => keycloakWallet,
|
|
29
|
+
pkceChallenge: () => pkceChallenge,
|
|
30
|
+
toCredentials: () => toCredentials
|
|
31
|
+
});
|
|
32
|
+
module.exports = __toCommonJS(keycloakWallet_exports);
|
|
33
|
+
var import_viem = require("viem");
|
|
34
|
+
var import_base64 = require("../bridge/base64.native.js");
|
|
35
|
+
var import_createWalletMessage = require("../connectkit/connectors/createWalletMessage.native.js");
|
|
36
|
+
var import_message = require("../message/index.native.js");
|
|
37
|
+
var import_browserFlow = require("./browserFlow.native.js");
|
|
38
|
+
var import_directGrant = require("./directGrant.native.js");
|
|
39
|
+
var import_registerWallet = require("./registerWallet.native.js");
|
|
40
|
+
var import_types = require("./types.native.js");
|
|
41
|
+
var sessionCookie = /(KEYCLOAK_SESSION_[A-Z]+)=([^;,\s]+)/;
|
|
42
|
+
function readSessionCookie(res) {
|
|
43
|
+
var _ref, _headers_get;
|
|
44
|
+
var _headers_getSetCookie;
|
|
45
|
+
var headers = res.headers;
|
|
46
|
+
var values = (_ref = (_headers_getSetCookie = headers.getSetCookie) === null || _headers_getSetCookie === void 0 ? void 0 : _headers_getSetCookie.call(headers)) !== null && _ref !== void 0 ? _ref : [(_headers_get = headers.get("set-cookie")) !== null && _headers_get !== void 0 ? _headers_get : ""];
|
|
47
|
+
var _iteratorNormalCompletion = true,
|
|
48
|
+
_didIteratorError = false,
|
|
49
|
+
_iteratorError = void 0;
|
|
50
|
+
try {
|
|
51
|
+
for (var _iterator = values[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
52
|
+
var value = _step.value;
|
|
53
|
+
var match = value.match(sessionCookie);
|
|
54
|
+
if (match) return `${match[1]}=${match[2]}`;
|
|
55
|
+
}
|
|
56
|
+
} catch (err) {
|
|
57
|
+
_didIteratorError = true;
|
|
58
|
+
_iteratorError = err;
|
|
59
|
+
} finally {
|
|
60
|
+
try {
|
|
61
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
62
|
+
_iterator.return();
|
|
63
|
+
}
|
|
64
|
+
} finally {
|
|
65
|
+
if (_didIteratorError) {
|
|
66
|
+
throw _iteratorError;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return void 0;
|
|
71
|
+
}
|
|
72
|
+
var base64Url = function base64Url2(bytes) {
|
|
73
|
+
return (0, import_base64.bytesToBase64)(bytes).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
|
|
74
|
+
};
|
|
75
|
+
function randomBase64Url(size) {
|
|
76
|
+
var crypto = globalThis.crypto;
|
|
77
|
+
if (!(crypto === null || crypto === void 0 ? void 0 : crypto.getRandomValues)) {
|
|
78
|
+
throw new Error("browserLoginUrl needs crypto.getRandomValues (react-native-get-random-values on Hermes)");
|
|
79
|
+
}
|
|
80
|
+
return base64Url(crypto.getRandomValues(new Uint8Array(size)));
|
|
81
|
+
}
|
|
82
|
+
function pkceChallenge(codeVerifier) {
|
|
83
|
+
return base64Url((0, import_viem.sha256)(new TextEncoder().encode(codeVerifier), "bytes"));
|
|
84
|
+
}
|
|
85
|
+
function toCredentials(args) {
|
|
86
|
+
return {
|
|
87
|
+
username: args.signature,
|
|
88
|
+
password: (0, import_base64.bytesToBase64)(new TextEncoder().encode(args.message)),
|
|
89
|
+
message: args.message
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
function keycloakWallet(options) {
|
|
93
|
+
var _options_resource, _options_fetch;
|
|
94
|
+
var baseUrl = options.baseUrl.replace(/\/+$/, "");
|
|
95
|
+
var resource = (_options_resource = options.resource) !== null && _options_resource !== void 0 ? _options_resource : "siww";
|
|
96
|
+
var realmUrl = `${baseUrl}/realms/${encodeURIComponent(options.realm)}`;
|
|
97
|
+
var resourceUrl = `${realmUrl}/${resource}`;
|
|
98
|
+
var tokenUrl = `${realmUrl}/protocol/openid-connect/token`;
|
|
99
|
+
var fetchImpl = (_options_fetch = options.fetch) !== null && _options_fetch !== void 0 ? _options_fetch : function (input, init) {
|
|
100
|
+
return globalThis.fetch(input, init);
|
|
101
|
+
};
|
|
102
|
+
var cookie;
|
|
103
|
+
var nonce;
|
|
104
|
+
var nonceListeners = /* @__PURE__ */new Set();
|
|
105
|
+
var request = function request2(url) {
|
|
106
|
+
var init = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
|
|
107
|
+
var headers = new Headers(init.headers);
|
|
108
|
+
if (cookie && !headers.has("cookie")) headers.set("cookie", cookie);
|
|
109
|
+
return fetchImpl(url, {
|
|
110
|
+
credentials: "include",
|
|
111
|
+
...init,
|
|
112
|
+
headers
|
|
113
|
+
});
|
|
114
|
+
};
|
|
115
|
+
var fetchNonce = async function fetchNonce2() {
|
|
116
|
+
var _readSessionCookie;
|
|
117
|
+
var res = await request(`${resourceUrl}/nonce`);
|
|
118
|
+
if (!res.ok) {
|
|
119
|
+
throw new import_types.KeycloakWalletError(`Keycloak nonce request failed (${res.status})`, res.status);
|
|
120
|
+
}
|
|
121
|
+
cookie = (_readSessionCookie = readSessionCookie(res)) !== null && _readSessionCookie !== void 0 ? _readSessionCookie : cookie;
|
|
122
|
+
var value = (await res.text()).trim();
|
|
123
|
+
if (!value) throw new import_types.KeycloakWalletError("Keycloak returned an empty nonce", res.status);
|
|
124
|
+
return value;
|
|
125
|
+
};
|
|
126
|
+
var kc = {
|
|
127
|
+
baseUrl,
|
|
128
|
+
realm: options.realm,
|
|
129
|
+
resource,
|
|
130
|
+
realmUrl,
|
|
131
|
+
resourceUrl,
|
|
132
|
+
tokenUrl,
|
|
133
|
+
request,
|
|
134
|
+
getNonce() {
|
|
135
|
+
if (!nonce) {
|
|
136
|
+
var pending = fetchNonce();
|
|
137
|
+
nonce = pending;
|
|
138
|
+
pending.catch(function () {
|
|
139
|
+
if (nonce === pending) nonce = void 0;
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
return nonce;
|
|
143
|
+
},
|
|
144
|
+
resetNonce() {
|
|
145
|
+
nonce = void 0;
|
|
146
|
+
var _iteratorNormalCompletion = true,
|
|
147
|
+
_didIteratorError = false,
|
|
148
|
+
_iteratorError = void 0;
|
|
149
|
+
try {
|
|
150
|
+
for (var _iterator = nonceListeners[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
151
|
+
var listener = _step.value;
|
|
152
|
+
listener();
|
|
153
|
+
}
|
|
154
|
+
} catch (err) {
|
|
155
|
+
_didIteratorError = true;
|
|
156
|
+
_iteratorError = err;
|
|
157
|
+
} finally {
|
|
158
|
+
try {
|
|
159
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
160
|
+
_iterator.return();
|
|
161
|
+
}
|
|
162
|
+
} finally {
|
|
163
|
+
if (_didIteratorError) {
|
|
164
|
+
throw _iteratorError;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
},
|
|
169
|
+
subscribeNonceReset(listener) {
|
|
170
|
+
nonceListeners.add(listener);
|
|
171
|
+
return function () {
|
|
172
|
+
nonceListeners.delete(listener);
|
|
173
|
+
};
|
|
174
|
+
},
|
|
175
|
+
createMessage(param) {
|
|
176
|
+
var {
|
|
177
|
+
nonce: value,
|
|
178
|
+
address,
|
|
179
|
+
chainId
|
|
180
|
+
} = param;
|
|
181
|
+
return (0, import_createWalletMessage.createWalletMessage)({
|
|
182
|
+
address,
|
|
183
|
+
chainId,
|
|
184
|
+
nonce: value,
|
|
185
|
+
domain: options.domain,
|
|
186
|
+
uri: options.uri
|
|
187
|
+
});
|
|
188
|
+
},
|
|
189
|
+
gpgMessage(param) {
|
|
190
|
+
var {
|
|
191
|
+
nonce: value
|
|
192
|
+
} = param;
|
|
193
|
+
return (0, import_message.buildWalletMessage)("gpg", {
|
|
194
|
+
nonce: value,
|
|
195
|
+
domain: options.domain,
|
|
196
|
+
uri: options.uri
|
|
197
|
+
});
|
|
198
|
+
},
|
|
199
|
+
siweConfig(onSign) {
|
|
200
|
+
return {
|
|
201
|
+
getNonce: function getNonce() {
|
|
202
|
+
return kc.getNonce();
|
|
203
|
+
},
|
|
204
|
+
createMessage: function createMessage(param) {
|
|
205
|
+
var {
|
|
206
|
+
nonce: value,
|
|
207
|
+
address,
|
|
208
|
+
chainId
|
|
209
|
+
} = param;
|
|
210
|
+
return kc.createMessage({
|
|
211
|
+
nonce: value,
|
|
212
|
+
address,
|
|
213
|
+
chainId
|
|
214
|
+
});
|
|
215
|
+
},
|
|
216
|
+
onSign,
|
|
217
|
+
subscribeNonceReset: kc.subscribeNonceReset,
|
|
218
|
+
verifyMessage: async function verifyMessage() {
|
|
219
|
+
return true;
|
|
220
|
+
},
|
|
221
|
+
getSession: async function getSession() {
|
|
222
|
+
return null;
|
|
223
|
+
},
|
|
224
|
+
signOut: async function signOut() {
|
|
225
|
+
return true;
|
|
226
|
+
}
|
|
227
|
+
};
|
|
228
|
+
},
|
|
229
|
+
gpgConfig(onSign) {
|
|
230
|
+
return {
|
|
231
|
+
getNonce: function getNonce() {
|
|
232
|
+
return kc.getNonce();
|
|
233
|
+
},
|
|
234
|
+
buildMessage: function buildMessage(args) {
|
|
235
|
+
return kc.gpgMessage(args);
|
|
236
|
+
},
|
|
237
|
+
onSign,
|
|
238
|
+
subscribeNonceReset: kc.subscribeNonceReset
|
|
239
|
+
};
|
|
240
|
+
},
|
|
241
|
+
browserFlow(opts) {
|
|
242
|
+
return (0, import_browserFlow.browserFlow)(opts);
|
|
243
|
+
},
|
|
244
|
+
directGrant(opts) {
|
|
245
|
+
return (0, import_directGrant.createDirectGrant)(kc, opts);
|
|
246
|
+
},
|
|
247
|
+
browserLoginUrl(param) {
|
|
248
|
+
var {
|
|
249
|
+
clientId,
|
|
250
|
+
redirectUri,
|
|
251
|
+
scope
|
|
252
|
+
} = param;
|
|
253
|
+
var state = randomBase64Url(16);
|
|
254
|
+
var codeVerifier = randomBase64Url(32);
|
|
255
|
+
var params = new URLSearchParams({
|
|
256
|
+
client_id: clientId,
|
|
257
|
+
redirect_uri: redirectUri,
|
|
258
|
+
response_type: "code",
|
|
259
|
+
scope: Array.isArray(scope) ? scope.join(" ") : scope !== null && scope !== void 0 ? scope : "openid",
|
|
260
|
+
state,
|
|
261
|
+
code_challenge: pkceChallenge(codeVerifier),
|
|
262
|
+
code_challenge_method: "S256"
|
|
263
|
+
});
|
|
264
|
+
return {
|
|
265
|
+
url: `${realmUrl}/protocol/openid-connect/auth?${params}`,
|
|
266
|
+
state,
|
|
267
|
+
codeVerifier
|
|
268
|
+
};
|
|
269
|
+
},
|
|
270
|
+
registerWallet(opts) {
|
|
271
|
+
return (0, import_registerWallet.createWalletRegistration)(kc, opts);
|
|
272
|
+
}
|
|
273
|
+
};
|
|
274
|
+
return kc;
|
|
275
|
+
}
|
|
276
|
+
function deriveKeycloakFromLocation() {
|
|
277
|
+
var location = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : globalThis.location;
|
|
278
|
+
var match = location === null || location === void 0 ? void 0 : location.pathname.match(/^(.*)\/realms\/([^/]+)\//);
|
|
279
|
+
if (!location || !match) return void 0;
|
|
280
|
+
return {
|
|
281
|
+
baseUrl: location.origin + match[1],
|
|
282
|
+
realm: decodeURIComponent(match[2])
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
//# sourceMappingURL=keycloakWallet.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","keycloakWallet_exports","deriveKeycloakFromLocation","keycloakWallet","pkceChallenge","toCredentials","module","exports","import_viem","require","import_base64","import_createWalletMessage","import_message","import_browserFlow","import_directGrant","import_registerWallet","import_types","sessionCookie","readSessionCookie","res","_ref","_headers_get","_headers_getSetCookie","headers","values","getSetCookie","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","match","err","return","base64Url","base64Url2","bytes","bytesToBase64","replace","randomBase64Url","size","crypto","globalThis","getRandomValues","Error","Uint8Array","codeVerifier","sha256","TextEncoder","encode","args","username","signature","password","message","options","_options_resource","_options_fetch","baseUrl","resource","realmUrl","encodeURIComponent","realm","resourceUrl","tokenUrl","fetchImpl","fetch","input","init","cookie","nonce","nonceListeners","Set","request","request2","url","arguments","length","Headers","has","set","credentials","fetchNonce","fetchNonce2","_readSessionCookie","ok","KeycloakWalletError","status","text","trim","kc","getNonce","pending","catch","resetNonce","listener"],"sources":["../../../src/keycloak/keycloakWallet.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { createRoot } from "react-dom/client";
|
|
2
|
+
import { KeycloakWalletLogin, createKeycloakWalletConfig } from "./KeycloakWalletLogin.mjs";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
const mounted = /* @__PURE__ */new WeakMap();
|
|
5
|
+
function mount(target, opts = {}) {
|
|
6
|
+
const el = typeof target === "string" ? document.querySelector(target) : target;
|
|
7
|
+
if (!el) throw new Error(`MpoKeycloakWallet.mount: nothing matches ${String(target)}`);
|
|
8
|
+
const existing = mounted.get(el);
|
|
9
|
+
if (existing) return existing;
|
|
10
|
+
const config = opts.wagmiConfig ?? createKeycloakWalletConfig(opts);
|
|
11
|
+
const root = createRoot(el);
|
|
12
|
+
root.render(/* @__PURE__ */jsx(KeycloakWalletLogin, {
|
|
13
|
+
...opts,
|
|
14
|
+
wagmiConfig: config
|
|
15
|
+
}));
|
|
16
|
+
const handle = {
|
|
17
|
+
config,
|
|
18
|
+
unmount() {
|
|
19
|
+
if (mounted.get(el) !== handle) return;
|
|
20
|
+
mounted.delete(el);
|
|
21
|
+
root.unmount();
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
mounted.set(el, handle);
|
|
25
|
+
return handle;
|
|
26
|
+
}
|
|
27
|
+
export { mount };
|
|
28
|
+
//# sourceMappingURL=mount.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createRoot","KeycloakWalletLogin","createKeycloakWalletConfig","jsx","mounted","WeakMap","mount","target","opts","el","document","querySelector","Error","String","existing","get","config","wagmiConfig","root","render","handle","unmount","delete","set"],"sources":["../../../src/keycloak/mount.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,UAAA,QAAkB;AAE3B,SACEC,mBAAA,EAEAC,0BAAA,QACK;AA2BO,SAAAC,GAAA;AAnBd,MAAMC,OAAA,GAAU,mBAAIC,OAAA,CAA6C;AAS1D,SAASC,MACdC,MAAA,EACAC,IAAA,GAAiC,CAAC,GACN;EAC5B,MAAMC,EAAA,GAAK,OAAOF,MAAA,KAAW,WAAWG,QAAA,CAASC,aAAA,CAAcJ,MAAM,IAAIA,MAAA;EACzE,IAAI,CAACE,EAAA,EAAI,MAAM,IAAIG,KAAA,CAAM,4CAA4CC,MAAA,CAAON,MAAM,CAAC,EAAE;EACrF,MAAMO,QAAA,GAAWV,OAAA,CAAQW,GAAA,CAAIN,EAAE;EAC/B,IAAIK,QAAA,EAAU,OAAOA,QAAA;EACrB,MAAME,MAAA,GAASR,IAAA,CAAKS,WAAA,IAAef,0BAAA,CAA2BM,IAAI;EAClE,MAAMU,IAAA,GAAOlB,UAAA,CAAWS,EAAE;EAC1BS,IAAA,CAAKC,MAAA,CAAO,eAAAhB,GAAA,CAACF,mBAAA;IAAqB,GAAGO,IAAA;IAAMS,WAAA,EAAaD;EAAA,CAAQ,CAAE;EAClE,MAAMI,MAAA,GAAqC;IACzCJ,MAAA;IACAK,QAAA,EAAU;MACR,IAAIjB,OAAA,CAAQW,GAAA,CAAIN,EAAE,MAAMW,MAAA,EAAQ;MAChChB,OAAA,CAAQkB,MAAA,CAAOb,EAAE;MACjBS,IAAA,CAAKG,OAAA,CAAQ;IACf;EACF;EACAjB,OAAA,CAAQmB,GAAA,CAAId,EAAA,EAAIW,MAAM;EACtB,OAAOA,MAAA;AACT","ignoreList":[]}
|
|
@@ -0,0 +1,33 @@
|
|
|
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 mount_native_exports = {};
|
|
26
|
+
__export(mount_native_exports, {
|
|
27
|
+
mount: () => mount
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(mount_native_exports);
|
|
30
|
+
function mount(_target, _opts) {
|
|
31
|
+
throw new Error("MpoKeycloakWallet.mount is web only");
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=mount.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["mount_native_exports","__export","mount","module","exports","__toCommonJS","_target","_opts","Error"],"sources":["../../../src/keycloak/mount.native.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,oBAAA;AAAAC,QAAA,CAAAD,oBAAA;EAAAE,KAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAC,YAAA,CAAAL,oBAAA;AAAO,SAASE,MAAMI,OAAA,EAASC,KAAA,EAAO;EAClC,MAAM,IAAIC,KAAA,CAAM,qCAAqC;AACzD","ignoreList":[]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { KeycloakWalletError } from "./types.mjs";
|
|
2
|
+
function createWalletRegistration(kc, opts) {
|
|
3
|
+
const registration = {
|
|
4
|
+
async register({
|
|
5
|
+
message,
|
|
6
|
+
signature
|
|
7
|
+
}) {
|
|
8
|
+
const accessToken = typeof opts.accessToken === "function" ? await opts.accessToken() : opts.accessToken;
|
|
9
|
+
if (!accessToken) throw new Error("registerWallet needs a signed-in user's access token");
|
|
10
|
+
try {
|
|
11
|
+
const res = await kc.request(`${kc.resourceUrl}/register`, {
|
|
12
|
+
method: "POST",
|
|
13
|
+
headers: {
|
|
14
|
+
authorization: `Bearer ${accessToken}`,
|
|
15
|
+
"content-type": "application/json"
|
|
16
|
+
},
|
|
17
|
+
body: JSON.stringify({
|
|
18
|
+
message,
|
|
19
|
+
signature
|
|
20
|
+
})
|
|
21
|
+
});
|
|
22
|
+
const data = await res.json().catch(() => ({}));
|
|
23
|
+
if (!res.ok) {
|
|
24
|
+
throw new KeycloakWalletError(data.message || `Keycloak wallet register failed (${res.status})`, res.status, {
|
|
25
|
+
error: data.message
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
registered: Boolean(data.registered)
|
|
30
|
+
};
|
|
31
|
+
} finally {
|
|
32
|
+
kc.resetNonce();
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
onSign: async ({
|
|
36
|
+
username,
|
|
37
|
+
message
|
|
38
|
+
}) => {
|
|
39
|
+
await registration.register({
|
|
40
|
+
message,
|
|
41
|
+
signature: username
|
|
42
|
+
});
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
return registration;
|
|
47
|
+
}
|
|
48
|
+
export { createWalletRegistration };
|
|
49
|
+
//# sourceMappingURL=registerWallet.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["KeycloakWalletError","createWalletRegistration","kc","opts","registration","register","message","signature","accessToken","Error","res","request","resourceUrl","method","headers","authorization","body","JSON","stringify","data","json","catch","ok","status","error","registered","Boolean","resetNonce","onSign","username"],"sources":["../../../src/keycloak/registerWallet.ts"],"sourcesContent":[null],"mappings":"AACA,SAASA,mBAAA,QAAwC;AAiB1C,SAASC,yBACdC,EAAA,EACAC,IAAA,EACoB;EACpB,MAAMC,YAAA,GAAmC;IACvC,MAAMC,SAAS;MAAEC,OAAA;MAASC;IAAU,GAAG;MACrC,MAAMC,WAAA,GACJ,OAAOL,IAAA,CAAKK,WAAA,KAAgB,aAAa,MAAML,IAAA,CAAKK,WAAA,CAAY,IAAIL,IAAA,CAAKK,WAAA;MAC3E,IAAI,CAACA,WAAA,EAAa,MAAM,IAAIC,KAAA,CAAM,sDAAsD;MACxF,IAAI;QACF,MAAMC,GAAA,GAAM,MAAMR,EAAA,CAAGS,OAAA,CAAQ,GAAGT,EAAA,CAAGU,WAAW,aAAa;UACzDC,MAAA,EAAQ;UACRC,OAAA,EAAS;YACPC,aAAA,EAAe,UAAUP,WAAW;YACpC,gBAAgB;UAClB;UACAQ,IAAA,EAAMC,IAAA,CAAKC,SAAA,CAAU;YAAEZ,OAAA;YAASC;UAAU,CAAC;QAC7C,CAAC;QACD,MAAMY,IAAA,GAAQ,MAAMT,GAAA,CAAIU,IAAA,CAAK,EAAEC,KAAA,CAAM,OAAO,CAAC,EAAE;QAI/C,IAAI,CAACX,GAAA,CAAIY,EAAA,EAAI;UACX,MAAM,IAAItB,mBAAA,CACRmB,IAAA,CAAKb,OAAA,IAAW,oCAAoCI,GAAA,CAAIa,MAAM,KAC9Db,GAAA,CAAIa,MAAA,EACJ;YAAEC,KAAA,EAAOL,IAAA,CAAKb;UAAQ,CACxB;QACF;QACA,OAAO;UAAEmB,UAAA,EAAYC,OAAA,CAAQP,IAAA,CAAKM,UAAU;QAAE;MAChD,UAAE;QACAvB,EAAA,CAAGyB,UAAA,CAAW;MAChB;IACF;IACAC,MAAA,EAAQ,MAAAA,CAAO;MAAEC,QAAA;MAAUvB;IAAQ,MAAM;MACvC,MAAMF,YAAA,CAAaC,QAAA,CAAS;QAAEC,OAAA;QAASC,SAAA,EAAWsB;MAAS,CAAC;MAC5D,OAAO;IACT;EACF;EACA,OAAOzB,YAAA;AACT","ignoreList":[]}
|