@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.
Files changed (431) hide show
  1. package/README.md +150 -11
  2. package/dist/cjs/clients/evm.cjs +299 -11
  3. package/dist/cjs/clients/evm.native.js +500 -12
  4. package/dist/cjs/clients/evm.native.js.map +1 -1
  5. package/dist/cjs/clients/index.cjs +5 -0
  6. package/dist/cjs/clients/index.native.js +5 -0
  7. package/dist/cjs/clients/index.native.js.map +1 -1
  8. package/dist/cjs/clients/solana.cjs +39 -21
  9. package/dist/cjs/clients/solana.native.js +48 -23
  10. package/dist/cjs/clients/solana.native.js.map +1 -1
  11. package/dist/cjs/connectkit/GpgProvider.cjs +44 -0
  12. package/dist/cjs/connectkit/GpgProvider.native.js +51 -0
  13. package/dist/cjs/connectkit/GpgProvider.native.js.map +1 -0
  14. package/dist/cjs/connectkit/adapters/BitcoinAdapter.cjs +5 -14
  15. package/dist/cjs/connectkit/adapters/BitcoinAdapter.native.js +5 -15
  16. package/dist/cjs/connectkit/adapters/BitcoinAdapter.native.js.map +1 -1
  17. package/dist/cjs/connectkit/adapters/EthereumAdapter.cjs +6 -15
  18. package/dist/cjs/connectkit/adapters/EthereumAdapter.native.js +7 -16
  19. package/dist/cjs/connectkit/adapters/EthereumAdapter.native.js.map +1 -1
  20. package/dist/cjs/connectkit/adapters/SolanaAdapter.cjs +5 -14
  21. package/dist/cjs/connectkit/adapters/SolanaAdapter.native.js +5 -15
  22. package/dist/cjs/connectkit/adapters/SolanaAdapter.native.js.map +1 -1
  23. package/dist/cjs/connectkit/adapters/SuiAdapter.cjs +5 -14
  24. package/dist/cjs/connectkit/adapters/SuiAdapter.native.js +5 -15
  25. package/dist/cjs/connectkit/adapters/SuiAdapter.native.js.map +1 -1
  26. package/dist/cjs/connectkit/connectors/createWalletMessage.cjs +2 -2
  27. package/dist/cjs/connectkit/connectors/createWalletMessage.native.js +2 -2
  28. package/dist/cjs/connectkit/connectors/createWalletMessage.native.js.map +1 -1
  29. package/dist/cjs/connectkit/index.cjs +4 -3
  30. package/dist/cjs/connectkit/index.native.js +4 -3
  31. package/dist/cjs/connectkit/index.native.js.map +1 -1
  32. package/dist/cjs/connectkit/siwe/SIWEContext.native.js.map +1 -1
  33. package/dist/cjs/connectkit/siwe/SIWEProvider.cjs +18 -3
  34. package/dist/cjs/connectkit/siwe/SIWEProvider.native.js +18 -3
  35. package/dist/cjs/connectkit/siwe/SIWEProvider.native.js.map +1 -1
  36. package/dist/cjs/index.cjs +1 -0
  37. package/dist/cjs/index.native.js +1 -0
  38. package/dist/cjs/index.native.js.map +1 -1
  39. package/dist/cjs/keycloak/KeycloakWalletLogin.cjs +255 -0
  40. package/dist/cjs/keycloak/KeycloakWalletLogin.native.js +33 -0
  41. package/dist/cjs/keycloak/KeycloakWalletLogin.native.js.map +1 -0
  42. package/dist/cjs/keycloak/browserFlow.cjs +83 -0
  43. package/dist/cjs/keycloak/browserFlow.native.js +90 -0
  44. package/dist/cjs/keycloak/browserFlow.native.js.map +1 -0
  45. package/dist/cjs/keycloak/device.cjs +36 -0
  46. package/dist/cjs/keycloak/device.native.js +45 -0
  47. package/dist/cjs/keycloak/device.native.js.map +1 -0
  48. package/dist/cjs/keycloak/directGrant.cjs +189 -0
  49. package/dist/cjs/keycloak/directGrant.native.js +233 -0
  50. package/dist/cjs/keycloak/directGrant.native.js.map +1 -0
  51. package/dist/cjs/keycloak/iife.cjs +4 -0
  52. package/dist/cjs/keycloak/iife.native.js +7 -0
  53. package/dist/cjs/keycloak/iife.native.js.map +1 -0
  54. package/dist/cjs/keycloak/index.cjs +53 -0
  55. package/dist/cjs/keycloak/index.native.js +56 -0
  56. package/dist/cjs/keycloak/index.native.js.map +1 -0
  57. package/dist/cjs/keycloak/keycloakWallet.cjs +214 -0
  58. package/dist/cjs/keycloak/keycloakWallet.native.js +285 -0
  59. package/dist/cjs/keycloak/keycloakWallet.native.js.map +1 -0
  60. package/dist/cjs/keycloak/mount.cjs +53 -0
  61. package/dist/cjs/keycloak/mount.native.js +33 -0
  62. package/dist/cjs/keycloak/mount.native.js.map +1 -0
  63. package/dist/cjs/keycloak/registerWallet.cjs +74 -0
  64. package/dist/cjs/keycloak/registerWallet.native.js +81 -0
  65. package/dist/cjs/keycloak/registerWallet.native.js.map +1 -0
  66. package/dist/cjs/keycloak/types.cjs +46 -0
  67. package/dist/cjs/keycloak/types.native.js +179 -0
  68. package/dist/cjs/keycloak/types.native.js.map +1 -0
  69. package/dist/cjs/keycloak/useDirectLogin.cjs +57 -0
  70. package/dist/cjs/keycloak/useDirectLogin.native.js +77 -0
  71. package/dist/cjs/keycloak/useDirectLogin.native.js.map +1 -0
  72. package/dist/cjs/keycloak/useWalletLogin.cjs +97 -0
  73. package/dist/cjs/keycloak/useWalletLogin.native.js +33 -0
  74. package/dist/cjs/keycloak/useWalletLogin.native.js.map +1 -0
  75. package/dist/cjs/message/buildWalletMessage.cjs +113 -0
  76. package/dist/cjs/message/buildWalletMessage.native.js +121 -0
  77. package/dist/cjs/message/buildWalletMessage.native.js.map +1 -0
  78. package/dist/cjs/message/index.cjs +29 -0
  79. package/dist/cjs/message/index.native.js +32 -0
  80. package/dist/cjs/message/index.native.js.map +1 -0
  81. package/dist/cjs/providers/WalletProvider.cjs +8 -2
  82. package/dist/cjs/siws/message.cjs +5 -16
  83. package/dist/cjs/siws/message.native.js +6 -16
  84. package/dist/cjs/siws/message.native.js.map +1 -1
  85. package/dist/cjs/solana.native.js.map +1 -1
  86. package/dist/esm/clients/evm.mjs +295 -12
  87. package/dist/esm/clients/evm.mjs.map +1 -1
  88. package/dist/esm/clients/evm.native.js +496 -13
  89. package/dist/esm/clients/evm.native.js.map +1 -1
  90. package/dist/esm/clients/index.mjs +2 -2
  91. package/dist/esm/clients/index.mjs.map +1 -1
  92. package/dist/esm/clients/index.native.js +2 -2
  93. package/dist/esm/clients/index.native.js.map +1 -1
  94. package/dist/esm/clients/solana.mjs +39 -21
  95. package/dist/esm/clients/solana.mjs.map +1 -1
  96. package/dist/esm/clients/solana.native.js +48 -23
  97. package/dist/esm/clients/solana.native.js.map +1 -1
  98. package/dist/esm/connectkit/GpgProvider.mjs +19 -0
  99. package/dist/esm/connectkit/GpgProvider.mjs.map +1 -0
  100. package/dist/esm/connectkit/GpgProvider.native.js +23 -0
  101. package/dist/esm/connectkit/GpgProvider.native.js.map +1 -0
  102. package/dist/esm/connectkit/adapters/BitcoinAdapter.mjs +5 -14
  103. package/dist/esm/connectkit/adapters/BitcoinAdapter.mjs.map +1 -1
  104. package/dist/esm/connectkit/adapters/BitcoinAdapter.native.js +5 -15
  105. package/dist/esm/connectkit/adapters/BitcoinAdapter.native.js.map +1 -1
  106. package/dist/esm/connectkit/adapters/EthereumAdapter.mjs +6 -15
  107. package/dist/esm/connectkit/adapters/EthereumAdapter.mjs.map +1 -1
  108. package/dist/esm/connectkit/adapters/EthereumAdapter.native.js +7 -16
  109. package/dist/esm/connectkit/adapters/EthereumAdapter.native.js.map +1 -1
  110. package/dist/esm/connectkit/adapters/SolanaAdapter.mjs +5 -14
  111. package/dist/esm/connectkit/adapters/SolanaAdapter.mjs.map +1 -1
  112. package/dist/esm/connectkit/adapters/SolanaAdapter.native.js +5 -15
  113. package/dist/esm/connectkit/adapters/SolanaAdapter.native.js.map +1 -1
  114. package/dist/esm/connectkit/adapters/SuiAdapter.mjs +5 -14
  115. package/dist/esm/connectkit/adapters/SuiAdapter.mjs.map +1 -1
  116. package/dist/esm/connectkit/adapters/SuiAdapter.native.js +5 -15
  117. package/dist/esm/connectkit/adapters/SuiAdapter.native.js.map +1 -1
  118. package/dist/esm/connectkit/connectors/createWalletMessage.mjs +1 -1
  119. package/dist/esm/connectkit/connectors/createWalletMessage.native.js +1 -1
  120. package/dist/esm/connectkit/index.mjs +3 -2
  121. package/dist/esm/connectkit/index.mjs.map +1 -1
  122. package/dist/esm/connectkit/index.native.js +3 -2
  123. package/dist/esm/connectkit/index.native.js.map +1 -1
  124. package/dist/esm/connectkit/siwe/SIWEContext.mjs.map +1 -1
  125. package/dist/esm/connectkit/siwe/SIWEContext.native.js.map +1 -1
  126. package/dist/esm/connectkit/siwe/SIWEProvider.mjs +19 -4
  127. package/dist/esm/connectkit/siwe/SIWEProvider.mjs.map +1 -1
  128. package/dist/esm/connectkit/siwe/SIWEProvider.native.js +19 -4
  129. package/dist/esm/connectkit/siwe/SIWEProvider.native.js.map +1 -1
  130. package/dist/esm/index.mjs +1 -0
  131. package/dist/esm/index.mjs.map +1 -1
  132. package/dist/esm/index.native.js +1 -0
  133. package/dist/esm/index.native.js.map +1 -1
  134. package/dist/esm/keycloak/KeycloakWalletLogin.mjs +218 -0
  135. package/dist/esm/keycloak/KeycloakWalletLogin.mjs.map +1 -0
  136. package/dist/esm/keycloak/KeycloakWalletLogin.native.js +5 -0
  137. package/dist/esm/keycloak/KeycloakWalletLogin.native.js.map +1 -0
  138. package/dist/esm/keycloak/browserFlow.mjs +58 -0
  139. package/dist/esm/keycloak/browserFlow.mjs.map +1 -0
  140. package/dist/esm/keycloak/browserFlow.native.js +62 -0
  141. package/dist/esm/keycloak/browserFlow.native.js.map +1 -0
  142. package/dist/esm/keycloak/device.mjs +10 -0
  143. package/dist/esm/keycloak/device.mjs.map +1 -0
  144. package/dist/esm/keycloak/device.native.js +16 -0
  145. package/dist/esm/keycloak/device.native.js.map +1 -0
  146. package/dist/esm/keycloak/directGrant.mjs +164 -0
  147. package/dist/esm/keycloak/directGrant.mjs.map +1 -0
  148. package/dist/esm/keycloak/directGrant.native.js +205 -0
  149. package/dist/esm/keycloak/directGrant.native.js.map +1 -0
  150. package/dist/esm/keycloak/iife.mjs +5 -0
  151. package/dist/esm/keycloak/iife.mjs.map +1 -0
  152. package/dist/esm/keycloak/iife.native.js +5 -0
  153. package/dist/esm/keycloak/iife.native.js.map +1 -0
  154. package/dist/esm/keycloak/index.mjs +13 -0
  155. package/dist/esm/keycloak/index.mjs.map +1 -0
  156. package/dist/esm/keycloak/index.native.js +13 -0
  157. package/dist/esm/keycloak/index.native.js.map +1 -0
  158. package/dist/esm/keycloak/keycloakWallet.mjs +186 -0
  159. package/dist/esm/keycloak/keycloakWallet.mjs.map +1 -0
  160. package/dist/esm/keycloak/keycloakWallet.native.js +254 -0
  161. package/dist/esm/keycloak/keycloakWallet.native.js.map +1 -0
  162. package/dist/esm/keycloak/mount.mjs +28 -0
  163. package/dist/esm/keycloak/mount.mjs.map +1 -0
  164. package/dist/esm/keycloak/mount.native.js +5 -0
  165. package/dist/esm/keycloak/mount.native.js.map +1 -0
  166. package/dist/esm/keycloak/registerWallet.mjs +49 -0
  167. package/dist/esm/keycloak/registerWallet.mjs.map +1 -0
  168. package/dist/esm/keycloak/registerWallet.native.js +53 -0
  169. package/dist/esm/keycloak/registerWallet.native.js.map +1 -0
  170. package/dist/esm/keycloak/types.mjs +20 -0
  171. package/dist/esm/keycloak/types.mjs.map +1 -0
  172. package/dist/esm/keycloak/types.native.js +150 -0
  173. package/dist/esm/keycloak/types.native.js.map +1 -0
  174. package/dist/esm/keycloak/useDirectLogin.mjs +32 -0
  175. package/dist/esm/keycloak/useDirectLogin.mjs.map +1 -0
  176. package/dist/esm/keycloak/useDirectLogin.native.js +49 -0
  177. package/dist/esm/keycloak/useDirectLogin.native.js.map +1 -0
  178. package/dist/esm/keycloak/useWalletLogin.mjs +72 -0
  179. package/dist/esm/keycloak/useWalletLogin.mjs.map +1 -0
  180. package/dist/esm/keycloak/useWalletLogin.native.js +5 -0
  181. package/dist/esm/keycloak/useWalletLogin.native.js.map +1 -0
  182. package/dist/esm/message/buildWalletMessage.mjs +87 -0
  183. package/dist/esm/message/buildWalletMessage.mjs.map +1 -0
  184. package/dist/esm/message/buildWalletMessage.native.js +92 -0
  185. package/dist/esm/message/buildWalletMessage.native.js.map +1 -0
  186. package/dist/esm/message/index.mjs +3 -0
  187. package/dist/esm/message/index.mjs.map +1 -0
  188. package/dist/esm/message/index.native.js +3 -0
  189. package/dist/esm/message/index.native.js.map +1 -0
  190. package/dist/esm/providers/WalletProvider.mjs +9 -3
  191. package/dist/esm/providers/WalletProvider.mjs.map +1 -1
  192. package/dist/esm/siws/message.mjs +5 -16
  193. package/dist/esm/siws/message.mjs.map +1 -1
  194. package/dist/esm/siws/message.native.js +6 -16
  195. package/dist/esm/siws/message.native.js.map +1 -1
  196. package/dist/esm/solana.mjs.map +1 -1
  197. package/dist/esm/solana.native.js.map +1 -1
  198. package/dist/jsx/clients/evm.mjs +295 -12
  199. package/dist/jsx/clients/evm.mjs.map +1 -1
  200. package/dist/jsx/clients/evm.native.js +500 -12
  201. package/dist/jsx/clients/evm.native.js.map +1 -1
  202. package/dist/jsx/clients/index.mjs +2 -2
  203. package/dist/jsx/clients/index.mjs.map +1 -1
  204. package/dist/jsx/clients/index.native.js +5 -0
  205. package/dist/jsx/clients/index.native.js.map +1 -1
  206. package/dist/jsx/clients/solana.mjs +39 -21
  207. package/dist/jsx/clients/solana.mjs.map +1 -1
  208. package/dist/jsx/clients/solana.native.js +48 -23
  209. package/dist/jsx/clients/solana.native.js.map +1 -1
  210. package/dist/jsx/connectkit/GpgProvider.mjs +19 -0
  211. package/dist/jsx/connectkit/GpgProvider.mjs.map +1 -0
  212. package/dist/jsx/connectkit/GpgProvider.native.js +51 -0
  213. package/dist/jsx/connectkit/GpgProvider.native.js.map +1 -0
  214. package/dist/jsx/connectkit/adapters/BitcoinAdapter.mjs +5 -14
  215. package/dist/jsx/connectkit/adapters/BitcoinAdapter.mjs.map +1 -1
  216. package/dist/jsx/connectkit/adapters/BitcoinAdapter.native.js +5 -15
  217. package/dist/jsx/connectkit/adapters/BitcoinAdapter.native.js.map +1 -1
  218. package/dist/jsx/connectkit/adapters/EthereumAdapter.mjs +6 -15
  219. package/dist/jsx/connectkit/adapters/EthereumAdapter.mjs.map +1 -1
  220. package/dist/jsx/connectkit/adapters/EthereumAdapter.native.js +7 -16
  221. package/dist/jsx/connectkit/adapters/EthereumAdapter.native.js.map +1 -1
  222. package/dist/jsx/connectkit/adapters/SolanaAdapter.mjs +5 -14
  223. package/dist/jsx/connectkit/adapters/SolanaAdapter.mjs.map +1 -1
  224. package/dist/jsx/connectkit/adapters/SolanaAdapter.native.js +5 -15
  225. package/dist/jsx/connectkit/adapters/SolanaAdapter.native.js.map +1 -1
  226. package/dist/jsx/connectkit/adapters/SuiAdapter.mjs +5 -14
  227. package/dist/jsx/connectkit/adapters/SuiAdapter.mjs.map +1 -1
  228. package/dist/jsx/connectkit/adapters/SuiAdapter.native.js +5 -15
  229. package/dist/jsx/connectkit/adapters/SuiAdapter.native.js.map +1 -1
  230. package/dist/jsx/connectkit/connectors/createWalletMessage.mjs +1 -1
  231. package/dist/jsx/connectkit/connectors/createWalletMessage.native.js +2 -2
  232. package/dist/jsx/connectkit/index.mjs +3 -2
  233. package/dist/jsx/connectkit/index.mjs.map +1 -1
  234. package/dist/jsx/connectkit/index.native.js +4 -3
  235. package/dist/jsx/connectkit/index.native.js.map +1 -1
  236. package/dist/jsx/connectkit/siwe/SIWEContext.mjs.map +1 -1
  237. package/dist/jsx/connectkit/siwe/SIWEContext.native.js.map +1 -1
  238. package/dist/jsx/connectkit/siwe/SIWEProvider.mjs +19 -4
  239. package/dist/jsx/connectkit/siwe/SIWEProvider.mjs.map +1 -1
  240. package/dist/jsx/connectkit/siwe/SIWEProvider.native.js +18 -3
  241. package/dist/jsx/connectkit/siwe/SIWEProvider.native.js.map +1 -1
  242. package/dist/jsx/index.js +1 -0
  243. package/dist/jsx/index.js.map +1 -1
  244. package/dist/jsx/index.mjs +1 -0
  245. package/dist/jsx/index.mjs.map +1 -1
  246. package/dist/jsx/index.native.js +1 -0
  247. package/dist/jsx/index.native.js.map +1 -1
  248. package/dist/jsx/keycloak/KeycloakWalletLogin.mjs +218 -0
  249. package/dist/jsx/keycloak/KeycloakWalletLogin.mjs.map +1 -0
  250. package/dist/jsx/keycloak/KeycloakWalletLogin.native.js +33 -0
  251. package/dist/jsx/keycloak/KeycloakWalletLogin.native.js.map +1 -0
  252. package/dist/jsx/keycloak/browserFlow.mjs +58 -0
  253. package/dist/jsx/keycloak/browserFlow.mjs.map +1 -0
  254. package/dist/jsx/keycloak/browserFlow.native.js +90 -0
  255. package/dist/jsx/keycloak/browserFlow.native.js.map +1 -0
  256. package/dist/jsx/keycloak/device.mjs +10 -0
  257. package/dist/jsx/keycloak/device.mjs.map +1 -0
  258. package/dist/jsx/keycloak/device.native.js +45 -0
  259. package/dist/jsx/keycloak/device.native.js.map +1 -0
  260. package/dist/jsx/keycloak/directGrant.mjs +164 -0
  261. package/dist/jsx/keycloak/directGrant.mjs.map +1 -0
  262. package/dist/jsx/keycloak/directGrant.native.js +233 -0
  263. package/dist/jsx/keycloak/directGrant.native.js.map +1 -0
  264. package/dist/jsx/keycloak/iife.mjs +5 -0
  265. package/dist/jsx/keycloak/iife.mjs.map +1 -0
  266. package/dist/jsx/keycloak/iife.native.js +7 -0
  267. package/dist/jsx/keycloak/iife.native.js.map +1 -0
  268. package/dist/jsx/keycloak/index.mjs +13 -0
  269. package/dist/jsx/keycloak/index.mjs.map +1 -0
  270. package/dist/jsx/keycloak/index.native.js +56 -0
  271. package/dist/jsx/keycloak/index.native.js.map +1 -0
  272. package/dist/jsx/keycloak/keycloakWallet.mjs +186 -0
  273. package/dist/jsx/keycloak/keycloakWallet.mjs.map +1 -0
  274. package/dist/jsx/keycloak/keycloakWallet.native.js +285 -0
  275. package/dist/jsx/keycloak/keycloakWallet.native.js.map +1 -0
  276. package/dist/jsx/keycloak/mount.mjs +28 -0
  277. package/dist/jsx/keycloak/mount.mjs.map +1 -0
  278. package/dist/jsx/keycloak/mount.native.js +33 -0
  279. package/dist/jsx/keycloak/mount.native.js.map +1 -0
  280. package/dist/jsx/keycloak/registerWallet.mjs +49 -0
  281. package/dist/jsx/keycloak/registerWallet.mjs.map +1 -0
  282. package/dist/jsx/keycloak/registerWallet.native.js +81 -0
  283. package/dist/jsx/keycloak/registerWallet.native.js.map +1 -0
  284. package/dist/jsx/keycloak/types.mjs +20 -0
  285. package/dist/jsx/keycloak/types.mjs.map +1 -0
  286. package/dist/jsx/keycloak/types.native.js +179 -0
  287. package/dist/jsx/keycloak/types.native.js.map +1 -0
  288. package/dist/jsx/keycloak/useDirectLogin.mjs +32 -0
  289. package/dist/jsx/keycloak/useDirectLogin.mjs.map +1 -0
  290. package/dist/jsx/keycloak/useDirectLogin.native.js +77 -0
  291. package/dist/jsx/keycloak/useDirectLogin.native.js.map +1 -0
  292. package/dist/jsx/keycloak/useWalletLogin.mjs +72 -0
  293. package/dist/jsx/keycloak/useWalletLogin.mjs.map +1 -0
  294. package/dist/jsx/keycloak/useWalletLogin.native.js +33 -0
  295. package/dist/jsx/keycloak/useWalletLogin.native.js.map +1 -0
  296. package/dist/jsx/message/buildWalletMessage.mjs +87 -0
  297. package/dist/jsx/message/buildWalletMessage.mjs.map +1 -0
  298. package/dist/jsx/message/buildWalletMessage.native.js +121 -0
  299. package/dist/jsx/message/buildWalletMessage.native.js.map +1 -0
  300. package/dist/jsx/message/index.mjs +3 -0
  301. package/dist/jsx/message/index.mjs.map +1 -0
  302. package/dist/jsx/message/index.native.js +32 -0
  303. package/dist/jsx/message/index.native.js.map +1 -0
  304. package/dist/jsx/providers/WalletProvider.mjs +9 -3
  305. package/dist/jsx/providers/WalletProvider.mjs.map +1 -1
  306. package/dist/jsx/siws/message.mjs +5 -16
  307. package/dist/jsx/siws/message.mjs.map +1 -1
  308. package/dist/jsx/siws/message.native.js +6 -16
  309. package/dist/jsx/siws/message.native.js.map +1 -1
  310. package/dist/jsx/solana.mjs.map +1 -1
  311. package/dist/jsx/solana.native.js.map +1 -1
  312. package/dist/keycloak/login.iife.js +3604 -0
  313. package/package.json +27 -8
  314. package/src/clients/evm.spec.ts +644 -10
  315. package/src/clients/evm.ts +498 -10
  316. package/src/clients/index.ts +8 -0
  317. package/src/clients/solana.spec.ts +116 -0
  318. package/src/clients/solana.ts +51 -31
  319. package/src/connectkit/GpgProvider.tsx +16 -0
  320. package/src/connectkit/adapters/BitcoinAdapter.ts +5 -16
  321. package/src/connectkit/adapters/EthereumAdapter.ts +6 -17
  322. package/src/connectkit/adapters/SolanaAdapter.ts +5 -16
  323. package/src/connectkit/adapters/SuiAdapter.ts +5 -16
  324. package/src/connectkit/connectors/createWalletMessage.ts +1 -1
  325. package/src/connectkit/index.ts +2 -6
  326. package/src/connectkit/openConnector/modal.spec.tsx +1 -1
  327. package/src/connectkit/siwe/SIWEContext.tsx +6 -2
  328. package/src/connectkit/siwe/SIWEProvider.tsx +22 -5
  329. package/src/index.ts +3 -0
  330. package/src/keycloak/KeycloakWalletLogin.native.tsx +7 -0
  331. package/src/keycloak/KeycloakWalletLogin.spec.tsx +168 -0
  332. package/src/keycloak/KeycloakWalletLogin.tsx +251 -0
  333. package/src/keycloak/browserFlow.spec.ts +108 -0
  334. package/src/keycloak/browserFlow.ts +84 -0
  335. package/src/keycloak/device.ts +17 -0
  336. package/src/keycloak/directGrant.spec.ts +331 -0
  337. package/src/keycloak/directGrant.ts +214 -0
  338. package/src/keycloak/iife.ts +3 -0
  339. package/src/keycloak/index.ts +44 -0
  340. package/src/keycloak/keycloakWallet.spec.ts +216 -0
  341. package/src/keycloak/keycloakWallet.ts +275 -0
  342. package/src/keycloak/mount.native.ts +11 -0
  343. package/src/keycloak/mount.tsx +45 -0
  344. package/src/keycloak/nonceReset.spec.tsx +205 -0
  345. package/src/keycloak/registerWallet.spec.ts +88 -0
  346. package/src/keycloak/registerWallet.ts +59 -0
  347. package/src/keycloak/types.ts +66 -0
  348. package/src/keycloak/useDirectLogin.spec.tsx +112 -0
  349. package/src/keycloak/useDirectLogin.ts +74 -0
  350. package/src/keycloak/useWalletLogin.native.ts +7 -0
  351. package/src/keycloak/useWalletLogin.ts +99 -0
  352. package/src/message/buildWalletMessage.spec.ts +291 -0
  353. package/src/message/buildWalletMessage.ts +150 -0
  354. package/src/message/index.ts +8 -0
  355. package/src/providers/WalletProvider.tsx +15 -2
  356. package/src/siws/message.ts +3 -22
  357. package/src/solana.ts +1 -0
  358. package/types/clients/evm.d.ts +144 -2
  359. package/types/clients/evm.d.ts.map +1 -1
  360. package/types/clients/index.d.ts +1 -1
  361. package/types/clients/index.d.ts.map +1 -1
  362. package/types/clients/solana.d.ts +14 -5
  363. package/types/clients/solana.d.ts.map +1 -1
  364. package/types/connectkit/GpgProvider.d.ts +10 -0
  365. package/types/connectkit/GpgProvider.d.ts.map +1 -0
  366. package/types/connectkit/adapters/BitcoinAdapter.d.ts.map +1 -1
  367. package/types/connectkit/adapters/EthereumAdapter.d.ts.map +1 -1
  368. package/types/connectkit/adapters/SolanaAdapter.d.ts.map +1 -1
  369. package/types/connectkit/adapters/SuiAdapter.d.ts.map +1 -1
  370. package/types/connectkit/connectors/createWalletMessage.d.ts +1 -1
  371. package/types/connectkit/connectors/createWalletMessage.d.ts.map +1 -1
  372. package/types/connectkit/index.d.ts +3 -2
  373. package/types/connectkit/index.d.ts.map +1 -1
  374. package/types/connectkit/siwe/SIWEContext.d.ts +2 -1
  375. package/types/connectkit/siwe/SIWEContext.d.ts.map +1 -1
  376. package/types/connectkit/siwe/SIWEProvider.d.ts.map +1 -1
  377. package/types/index.d.ts +1 -0
  378. package/types/index.d.ts.map +1 -1
  379. package/types/keycloak/KeycloakWalletLogin.d.ts +45 -0
  380. package/types/keycloak/KeycloakWalletLogin.d.ts.map +1 -0
  381. package/types/keycloak/KeycloakWalletLogin.native.d.ts +4 -0
  382. package/types/keycloak/KeycloakWalletLogin.native.d.ts.map +1 -0
  383. package/types/keycloak/browserFlow.d.ts +27 -0
  384. package/types/keycloak/browserFlow.d.ts.map +1 -0
  385. package/types/keycloak/device.d.ts +14 -0
  386. package/types/keycloak/device.d.ts.map +1 -0
  387. package/types/keycloak/directGrant.d.ts +43 -0
  388. package/types/keycloak/directGrant.d.ts.map +1 -0
  389. package/types/keycloak/iife.d.ts +2 -0
  390. package/types/keycloak/iife.d.ts.map +1 -0
  391. package/types/keycloak/index.d.ts +12 -0
  392. package/types/keycloak/index.d.ts.map +1 -0
  393. package/types/keycloak/keycloakWallet.d.ts +120 -0
  394. package/types/keycloak/keycloakWallet.d.ts.map +1 -0
  395. package/types/keycloak/mount.d.ts +16 -0
  396. package/types/keycloak/mount.d.ts.map +1 -0
  397. package/types/keycloak/mount.native.d.ts +5 -0
  398. package/types/keycloak/mount.native.d.ts.map +1 -0
  399. package/types/keycloak/registerWallet.d.ts +22 -0
  400. package/types/keycloak/registerWallet.d.ts.map +1 -0
  401. package/types/keycloak/types.d.ts +50 -0
  402. package/types/keycloak/types.d.ts.map +1 -0
  403. package/types/keycloak/useDirectLogin.d.ts +29 -0
  404. package/types/keycloak/useDirectLogin.d.ts.map +1 -0
  405. package/types/keycloak/useWalletLogin.d.ts +26 -0
  406. package/types/keycloak/useWalletLogin.d.ts.map +1 -0
  407. package/types/keycloak/useWalletLogin.native.d.ts +4 -0
  408. package/types/keycloak/useWalletLogin.native.d.ts.map +1 -0
  409. package/types/message/buildWalletMessage.d.ts +46 -0
  410. package/types/message/buildWalletMessage.d.ts.map +1 -0
  411. package/types/message/index.d.ts +2 -0
  412. package/types/message/index.d.ts.map +1 -0
  413. package/types/providers/WalletProvider.d.ts +8 -1
  414. package/types/providers/WalletProvider.d.ts.map +1 -1
  415. package/types/siws/message.d.ts.map +1 -1
  416. package/types/solana.d.ts +1 -1
  417. package/types/solana.d.ts.map +1 -1
  418. package/dist/cjs/connectkit/adapters/messages.cjs +0 -73
  419. package/dist/cjs/connectkit/adapters/messages.native.js +0 -79
  420. package/dist/cjs/connectkit/adapters/messages.native.js.map +0 -1
  421. package/dist/esm/connectkit/adapters/messages.mjs +0 -48
  422. package/dist/esm/connectkit/adapters/messages.mjs.map +0 -1
  423. package/dist/esm/connectkit/adapters/messages.native.js +0 -51
  424. package/dist/esm/connectkit/adapters/messages.native.js.map +0 -1
  425. package/dist/jsx/connectkit/adapters/messages.mjs +0 -48
  426. package/dist/jsx/connectkit/adapters/messages.mjs.map +0 -1
  427. package/dist/jsx/connectkit/adapters/messages.native.js +0 -79
  428. package/dist/jsx/connectkit/adapters/messages.native.js.map +0 -1
  429. package/src/connectkit/adapters/messages.ts +0 -84
  430. package/types/connectkit/adapters/messages.d.ts +0 -16
  431. 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":[]}