@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,218 @@
1
+ import { GpgProvider } from "@multiplatform.one/gpg";
2
+ import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
3
+ import { useMemo } from "react";
4
+ import { WagmiProvider, createConfig } from "wagmi";
5
+ import { arbitrum, mainnet, optimism, polygon } from "wagmi/chains";
6
+ import getDefaultConfig from "../connectkit/defaultConfig.mjs";
7
+ import { SIWEProvider } from "../connectkit/siwe/index.mjs";
8
+ import { StatusState } from "../connectkit/siwe/SIWEContext.mjs";
9
+ import { useWeb3Modal } from "../connectkit/useWeb3Modal.mjs";
10
+ import { ConnectKitProvider } from "../connectkit/web3Provider.mjs";
11
+ import { deriveKeycloakFromLocation, keycloakWallet } from "./keycloakWallet.mjs";
12
+ import { useWalletLogin } from "./useWalletLogin.mjs";
13
+ import { jsx, jsxs } from "react/jsx-runtime";
14
+ const defaultChains = [mainnet, polygon, optimism, arbitrum];
15
+ function createKeycloakWalletConfig({
16
+ appName = "Sign in",
17
+ appDescription = "Sign in with your wallet",
18
+ appUrl = globalThis.location?.origin ?? "",
19
+ appIcon,
20
+ chains = defaultChains
21
+ } = {}) {
22
+ return createConfig(getDefaultConfig({
23
+ appName,
24
+ appDescription,
25
+ appUrl,
26
+ appIcon,
27
+ chains,
28
+ // Aave Account signs through an app.family.co iframe, which a Keycloak
29
+ // page's default CSP (frame-src 'self') blocks.
30
+ enableAaveAccount: false
31
+ }));
32
+ }
33
+ const buttonStyle = {
34
+ display: "flex",
35
+ alignItems: "center",
36
+ justifyContent: "center",
37
+ gap: 8,
38
+ width: "100%",
39
+ padding: "10px 14px",
40
+ marginTop: 8,
41
+ fontSize: 14,
42
+ cursor: "pointer",
43
+ border: "1px solid #c4c4c4",
44
+ borderRadius: 4,
45
+ background: "#fff"
46
+ };
47
+ function KeycloakWalletLogin(props) {
48
+ const {
49
+ resource,
50
+ domain,
51
+ uri,
52
+ target = "ftl",
53
+ whenVisible = true,
54
+ appName,
55
+ appDescription,
56
+ appUrl,
57
+ appIcon,
58
+ chains,
59
+ gpg = true,
60
+ mobile,
61
+ wagmiConfig
62
+ } = props;
63
+ const page = deriveKeycloakFromLocation();
64
+ const baseUrl = props.baseUrl ?? page?.baseUrl;
65
+ const realm = props.realm ?? page?.realm;
66
+ if (!baseUrl || !realm) {
67
+ throw new Error("KeycloakWalletLogin needs baseUrl and realm off a Keycloak page");
68
+ }
69
+ const action = typeof target === "string" ? void 0 : target.action;
70
+ const kc = useMemo(() => keycloakWallet({
71
+ baseUrl,
72
+ realm,
73
+ resource,
74
+ domain,
75
+ uri
76
+ }), [baseUrl, realm, resource, domain, uri]);
77
+ const browserTarget = useMemo(() => action === void 0 ? "ftl" : {
78
+ action
79
+ }, [action]);
80
+ const onSign = useMemo(() => kc.browserFlow({
81
+ target: browserTarget,
82
+ whenVisible
83
+ }), [kc, browserTarget, whenVisible]);
84
+ const config = useMemo(() => wagmiConfig ?? createKeycloakWalletConfig({
85
+ appName,
86
+ appDescription,
87
+ appUrl,
88
+ appIcon,
89
+ chains
90
+ }), [wagmiConfig, appName, appDescription, appUrl, appIcon, chains]);
91
+ const connectKitOptions = useMemo(() => mobile ? {
92
+ mobile
93
+ } : void 0, [mobile]);
94
+ const queryClient = useMemo(() => new QueryClient({
95
+ defaultOptions: {
96
+ queries: {
97
+ refetchOnWindowFocus: false,
98
+ refetchOnReconnect: false,
99
+ staleTime: Infinity
100
+ }
101
+ }
102
+ }), []);
103
+ return /* @__PURE__ */jsx(WagmiProvider, {
104
+ config,
105
+ children: /* @__PURE__ */jsx(QueryClientProvider, {
106
+ client: queryClient,
107
+ children: /* @__PURE__ */jsx(GpgProvider, {
108
+ ...kc.gpgConfig(onSign),
109
+ enabled: gpg,
110
+ children: /* @__PURE__ */jsx(SIWEProvider, {
111
+ ...kc.siweConfig(onSign),
112
+ children: /* @__PURE__ */jsx(ConnectKitProvider, {
113
+ options: connectKitOptions,
114
+ children: /* @__PURE__ */jsx(LoginButtons, {
115
+ ...props
116
+ })
117
+ })
118
+ })
119
+ })
120
+ })
121
+ });
122
+ }
123
+ function LoginButtons({
124
+ gpg = true,
125
+ walletLabel = "Sign in with Wallet",
126
+ gpgLabel = "Sign in with GPG",
127
+ className,
128
+ buttonClassName
129
+ }) {
130
+ const {
131
+ login,
132
+ status
133
+ } = useWalletLogin();
134
+ const {
135
+ openGpg
136
+ } = useWeb3Modal();
137
+ const style = buttonClassName ? void 0 : buttonStyle;
138
+ const busy = status === StatusState.LOADING || status === StatusState.SUCCESS;
139
+ return /* @__PURE__ */jsxs("div", {
140
+ className: className ?? "mpo-keycloak-wallet-login",
141
+ children: [/* @__PURE__ */jsxs("button", {
142
+ type: "button",
143
+ id: "mpo-wallet-login",
144
+ className: buttonClassName,
145
+ style,
146
+ disabled: busy,
147
+ onClick: e => {
148
+ e.preventDefault();
149
+ void login();
150
+ },
151
+ children: [/* @__PURE__ */jsx(WalletIcon, {}), /* @__PURE__ */jsx("span", {
152
+ children: busy ? "Signing\u2026" : walletLabel
153
+ })]
154
+ }), gpg && /* @__PURE__ */jsxs("button", {
155
+ type: "button",
156
+ id: "mpo-gpg-login",
157
+ className: buttonClassName,
158
+ style,
159
+ onClick: e => {
160
+ e.preventDefault();
161
+ openGpg();
162
+ },
163
+ children: [/* @__PURE__ */jsx(GpgIcon, {}), /* @__PURE__ */jsx("span", {
164
+ children: gpgLabel
165
+ })]
166
+ })]
167
+ });
168
+ }
169
+ function WalletIcon() {
170
+ return /* @__PURE__ */jsxs("svg", {
171
+ xmlns: "http://www.w3.org/2000/svg",
172
+ width: "18",
173
+ height: "18",
174
+ viewBox: "0 0 24 24",
175
+ fill: "none",
176
+ stroke: "currentColor",
177
+ strokeWidth: "2",
178
+ strokeLinecap: "round",
179
+ strokeLinejoin: "round",
180
+ "aria-hidden": "true",
181
+ children: [/* @__PURE__ */jsx("path", {
182
+ d: "M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0-2 2v0a2 2 0 0 0 2 2h13a1 1 0 0 1 1 1v4"
183
+ }), /* @__PURE__ */jsx("path", {
184
+ d: "M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4"
185
+ }), /* @__PURE__ */jsx("rect", {
186
+ width: "7",
187
+ height: "5",
188
+ x: "14",
189
+ y: "10",
190
+ rx: "1"
191
+ })]
192
+ });
193
+ }
194
+ function GpgIcon() {
195
+ return /* @__PURE__ */jsxs("svg", {
196
+ xmlns: "http://www.w3.org/2000/svg",
197
+ width: "18",
198
+ height: "18",
199
+ viewBox: "0 0 24 24",
200
+ fill: "none",
201
+ stroke: "currentColor",
202
+ strokeWidth: "2",
203
+ strokeLinecap: "round",
204
+ strokeLinejoin: "round",
205
+ "aria-hidden": "true",
206
+ children: [/* @__PURE__ */jsx("circle", {
207
+ cx: "7.5",
208
+ cy: "15.5",
209
+ r: "5.5"
210
+ }), /* @__PURE__ */jsx("path", {
211
+ d: "m21 2-9.6 9.6"
212
+ }), /* @__PURE__ */jsx("path", {
213
+ d: "m15.5 7.5 3 3L22 7l-3-3"
214
+ })]
215
+ });
216
+ }
217
+ export { KeycloakWalletLogin, createKeycloakWalletConfig };
218
+ //# sourceMappingURL=KeycloakWalletLogin.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["GpgProvider","QueryClient","QueryClientProvider","useMemo","WagmiProvider","createConfig","arbitrum","mainnet","optimism","polygon","getDefaultConfig","SIWEProvider","StatusState","useWeb3Modal","ConnectKitProvider","deriveKeycloakFromLocation","keycloakWallet","useWalletLogin","jsx","jsxs","defaultChains","createKeycloakWalletConfig","appName","appDescription","appUrl","globalThis","location","origin","appIcon","chains","enableAaveAccount","buttonStyle","display","alignItems","justifyContent","gap","width","padding","marginTop","fontSize","cursor","border","borderRadius","background","KeycloakWalletLogin","props","resource","domain","uri","target","whenVisible","gpg","mobile","wagmiConfig","page","baseUrl","realm","Error","action","kc","browserTarget","onSign","browserFlow","config","connectKitOptions","queryClient","defaultOptions","queries","refetchOnWindowFocus","refetchOnReconnect","staleTime","Infinity","children","client","gpgConfig","enabled","siweConfig","options","LoginButtons","walletLabel","gpgLabel","className","buttonClassName","login","status","openGpg","style","busy","LOADING","SUCCESS","type","id","disabled","onClick","e","preventDefault","WalletIcon","GpgIcon","xmlns","height","viewBox","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","d","x","y","rx","cx","cy","r"],"sources":["../../../src/keycloak/KeycloakWalletLogin.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ function KeycloakWalletLogin(_props) {
2
+ throw new Error("KeycloakWalletLogin is web only; a native app signs in with useDirectLogin");
3
+ }
4
+ export { KeycloakWalletLogin };
5
+ //# sourceMappingURL=KeycloakWalletLogin.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["KeycloakWalletLogin","_props","Error"],"sources":["../../../src/keycloak/KeycloakWalletLogin.native.tsx"],"sourcesContent":[null],"mappings":"AAAO,SAASA,oBAAoBC,MAAA,EAAQ;EACxC,MAAM,IAAIC,KAAA,CAAM,4EAA4E;AAChG","ignoreList":[]}
@@ -0,0 +1,58 @@
1
+ function whenPageVisible(doc) {
2
+ if (doc.visibilityState !== "hidden") return Promise.resolve();
3
+ return new Promise(resolve => {
4
+ const onChange = () => {
5
+ if (doc.visibilityState === "hidden") return;
6
+ doc.removeEventListener("visibilitychange", onChange);
7
+ resolve();
8
+ };
9
+ doc.addEventListener("visibilitychange", onChange);
10
+ });
11
+ }
12
+ function ftlForm(doc, username, password) {
13
+ const form = doc.getElementById("kc-form-login");
14
+ const user = doc.getElementById("username");
15
+ const pass = doc.getElementById("password");
16
+ if (!form || !user || !pass) return null;
17
+ user.value = username;
18
+ pass.value = password;
19
+ return form;
20
+ }
21
+ function actionForm(doc, action, username, password) {
22
+ const form = doc.createElement("form");
23
+ form.method = "post";
24
+ form.action = action;
25
+ form.style.display = "none";
26
+ for (const [name, value] of [["username", username], ["password", password]]) {
27
+ const input = doc.createElement("input");
28
+ input.type = "hidden";
29
+ input.name = name;
30
+ input.value = value;
31
+ form.appendChild(input);
32
+ }
33
+ doc.body.appendChild(form);
34
+ return form;
35
+ }
36
+ function browserFlow(opts = {}) {
37
+ const {
38
+ target = "ftl",
39
+ whenVisible = true
40
+ } = opts;
41
+ let submitted = false;
42
+ return async ({
43
+ username,
44
+ password
45
+ }) => {
46
+ const doc = opts.document ?? globalThis.document;
47
+ if (!doc) throw new Error("browserFlow needs a DOM");
48
+ if (whenVisible) await whenPageVisible(doc);
49
+ if (submitted) return true;
50
+ const form = target === "ftl" ? ftlForm(doc, username, password) : actionForm(doc, target.action, username, password);
51
+ if (!form) return false;
52
+ submitted = true;
53
+ form.submit();
54
+ return true;
55
+ };
56
+ }
57
+ export { browserFlow };
58
+ //# sourceMappingURL=browserFlow.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["whenPageVisible","doc","visibilityState","Promise","resolve","onChange","removeEventListener","addEventListener","ftlForm","username","password","form","getElementById","user","pass","value","actionForm","action","createElement","method","style","display","name","input","type","appendChild","body","browserFlow","opts","target","whenVisible","submitted","document","globalThis","Error","submit"],"sources":["../../../src/keycloak/browserFlow.ts"],"sourcesContent":[null],"mappings":"AAmBA,SAASA,gBAAgBC,GAAA,EAA8B;EACrD,IAAIA,GAAA,CAAIC,eAAA,KAAoB,UAAU,OAAOC,OAAA,CAAQC,OAAA,CAAQ;EAC7D,OAAO,IAAID,OAAA,CAASC,OAAA,IAAY;IAC9B,MAAMC,QAAA,GAAWA,CAAA,KAAM;MACrB,IAAIJ,GAAA,CAAIC,eAAA,KAAoB,UAAU;MACtCD,GAAA,CAAIK,mBAAA,CAAoB,oBAAoBD,QAAQ;MACpDD,OAAA,CAAQ;IACV;IACAH,GAAA,CAAIM,gBAAA,CAAiB,oBAAoBF,QAAQ;EACnD,CAAC;AACH;AAEA,SAASG,QAAQP,GAAA,EAAeQ,QAAA,EAAkBC,QAAA,EAA0C;EAC1F,MAAMC,IAAA,GAAOV,GAAA,CAAIW,cAAA,CAAe,eAAe;EAC/C,MAAMC,IAAA,GAAOZ,GAAA,CAAIW,cAAA,CAAe,UAAU;EAC1C,MAAME,IAAA,GAAOb,GAAA,CAAIW,cAAA,CAAe,UAAU;EAC1C,IAAI,CAACD,IAAA,IAAQ,CAACE,IAAA,IAAQ,CAACC,IAAA,EAAM,OAAO;EACpCD,IAAA,CAAKE,KAAA,GAAQN,QAAA;EACbK,IAAA,CAAKC,KAAA,GAAQL,QAAA;EACb,OAAOC,IAAA;AACT;AAEA,SAASK,WAAWf,GAAA,EAAegB,MAAA,EAAgBR,QAAA,EAAkBC,QAAA,EAAkB;EACrF,MAAMC,IAAA,GAAOV,GAAA,CAAIiB,aAAA,CAAc,MAAM;EACrCP,IAAA,CAAKQ,MAAA,GAAS;EACdR,IAAA,CAAKM,MAAA,GAASA,MAAA;EACdN,IAAA,CAAKS,KAAA,CAAMC,OAAA,GAAU;EACrB,WAAW,CAACC,IAAA,EAAMP,KAAK,KAAK,CAC1B,CAAC,YAAYN,QAAQ,GACrB,CAAC,YAAYC,QAAQ,EACvB,EAAG;IACD,MAAMa,KAAA,GAAQtB,GAAA,CAAIiB,aAAA,CAAc,OAAO;IACvCK,KAAA,CAAMC,IAAA,GAAO;IACbD,KAAA,CAAMD,IAAA,GAAOA,IAAA;IACbC,KAAA,CAAMR,KAAA,GAAQA,KAAA;IACdJ,IAAA,CAAKc,WAAA,CAAYF,KAAK;EACxB;EACAtB,GAAA,CAAIyB,IAAA,CAAKD,WAAA,CAAYd,IAAI;EACzB,OAAOA,IAAA;AACT;AAQO,SAASgB,YAAYC,IAAA,GAA2B,CAAC,GAAW;EACjE,MAAM;IAAEC,MAAA,GAAS;IAAOC,WAAA,GAAc;EAAK,IAAIF,IAAA;EAC/C,IAAIG,SAAA,GAAY;EAChB,OAAO,OAAO;IAAEtB,QAAA;IAAUC;EAAS,MAAM;IACvC,MAAMT,GAAA,GAAM2B,IAAA,CAAKI,QAAA,IAAaC,UAAA,CAAuCD,QAAA;IACrE,IAAI,CAAC/B,GAAA,EAAK,MAAM,IAAIiC,KAAA,CAAM,yBAAyB;IACnD,IAAIJ,WAAA,EAAa,MAAM9B,eAAA,CAAgBC,GAAG;IAC1C,IAAI8B,SAAA,EAAW,OAAO;IACtB,MAAMpB,IAAA,GACJkB,MAAA,KAAW,QACPrB,OAAA,CAAQP,GAAA,EAAKQ,QAAA,EAAUC,QAAQ,IAC/BM,UAAA,CAAWf,GAAA,EAAK4B,MAAA,CAAOZ,MAAA,EAAQR,QAAA,EAAUC,QAAQ;IACvD,IAAI,CAACC,IAAA,EAAM,OAAO;IAClBoB,SAAA,GAAY;IACZpB,IAAA,CAAKwB,MAAA,CAAO;IACZ,OAAO;EACT;AACF","ignoreList":[]}
@@ -0,0 +1,62 @@
1
+ function whenPageVisible(doc) {
2
+ if (doc.visibilityState !== "hidden") return Promise.resolve();
3
+ return new Promise(function (resolve) {
4
+ var onChange = function onChange1() {
5
+ if (doc.visibilityState === "hidden") return;
6
+ doc.removeEventListener("visibilitychange", onChange);
7
+ resolve();
8
+ };
9
+ doc.addEventListener("visibilitychange", onChange);
10
+ });
11
+ }
12
+ function ftlForm(doc, username, password) {
13
+ var form = doc.getElementById("kc-form-login");
14
+ var user = doc.getElementById("username");
15
+ var pass = doc.getElementById("password");
16
+ if (!form || !user || !pass) return null;
17
+ user.value = username;
18
+ pass.value = password;
19
+ return form;
20
+ }
21
+ function actionForm(doc, action, username, password) {
22
+ var form = doc.createElement("form");
23
+ form.method = "post";
24
+ form.action = action;
25
+ form.style.display = "none";
26
+ for (var _i = 0, _iter = [["username", username], ["password", password]]; _i < _iter.length; _i++) {
27
+ var [name, value] = _iter[_i];
28
+ var input = doc.createElement("input");
29
+ input.type = "hidden";
30
+ input.name = name;
31
+ input.value = value;
32
+ form.appendChild(input);
33
+ }
34
+ doc.body.appendChild(form);
35
+ return form;
36
+ }
37
+ function browserFlow() {
38
+ var opts = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
39
+ var {
40
+ target = "ftl",
41
+ whenVisible = true
42
+ } = opts;
43
+ var submitted = false;
44
+ return async function (param) {
45
+ var {
46
+ username,
47
+ password
48
+ } = param;
49
+ var _opts_document;
50
+ var doc = (_opts_document = opts.document) !== null && _opts_document !== void 0 ? _opts_document : globalThis.document;
51
+ if (!doc) throw new Error("browserFlow needs a DOM");
52
+ if (whenVisible) await whenPageVisible(doc);
53
+ if (submitted) return true;
54
+ var form = target === "ftl" ? ftlForm(doc, username, password) : actionForm(doc, target.action, username, password);
55
+ if (!form) return false;
56
+ submitted = true;
57
+ form.submit();
58
+ return true;
59
+ };
60
+ }
61
+ export { browserFlow };
62
+ //# sourceMappingURL=browserFlow.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["whenPageVisible","doc","visibilityState","Promise","resolve","onChange","onChange1","removeEventListener","addEventListener","ftlForm","username","password","form","getElementById","user","pass","value","actionForm","action","createElement","method","style","display","_i","_iter","length","name","input","type","appendChild","body","browserFlow","opts","arguments","target","whenVisible","submitted","param","_opts_document","document","globalThis"],"sources":["../../../src/keycloak/browserFlow.ts"],"sourcesContent":[null],"mappings":"AAmBA,SAASA,gBAAgBC,GAAA,EAA8B;EACrD,IAAIA,GAAA,CAAIC,eAAA,KAAoB,UAAU,OAAOC,OAAA,CAAQC,OAAA,CAAQ;EAC7D,OAAO,IAAID,OAAA,CAAQ,UAACC,OAAY;IAC9B,IAAAC,QAAM,YAAiBC,UAAA;MACrB,IAAIL,GAAA,CAAIC,eAAA,KAAoB,UAAU;MACtCD,GAAA,CAAIM,mBAAA,CAAoB,oBAAoBF,QAAQ;MACpDD,OAAA,CAAQ;IACV;IACAH,GAAA,CAAIO,gBAAA,CAAiB,oBAAoBH,QAAQ;EACnD,CAAC;AACH;AAEA,SAASI,QAAQR,GAAA,EAAeS,QAAA,EAAkBC,QAAA,EAA0C;EAC1F,IAAAC,IAAM,GAAAX,GAAO,CAAAY,cAAI,gBAAe;EAChC,IAAAC,IAAM,GAAAb,GAAO,CAAAY,cAAI,WAAe;EAChC,IAAAE,IAAM,GAAAd,GAAO,CAAAY,cAAI,WAAe;EAChC,IAAI,CAACD,IAAA,IAAQ,CAACE,IAAA,IAAQ,CAACC,IAAA,EAAM,OAAO;EACpCD,IAAA,CAAKE,KAAA,GAAQN,QAAA;EACbK,IAAA,CAAKC,KAAA,GAAQL,QAAA;EACb,OAAOC,IAAA;AACT;AAEA,SAASK,WAAWhB,GAAA,EAAeiB,MAAA,EAAgBR,QAAA,EAAkBC,QAAA,EAAkB;EACrF,IAAAC,IAAM,GAAAX,GAAO,CAAAkB,aAAI,OAAc;EAC/BP,IAAA,CAAKQ,MAAA,GAAS;EACdR,IAAA,CAAKM,MAAA,GAASA,MAAA;EACdN,IAAA,CAAKS,KAAA,CAAMC,OAAA,GAAU;EACrB,SAAAC,EAAW,GAAC,GAAAC,KAAM,GAAK,CACrB,CACC,YACAd,QAAA,CACD,EACA,CACA,UAAM,EACNC,QAAM,CACN,CACF,EAAAY,EAAA,GAAAC,KAAA,CAAAC,MAAA,EAAAF,EAAA;IACA,IAAI,CAAAG,IAAK,EAAAV,KAAA,IAAYQ,KAAI,CAAAD,EAAA;IACzB,IAAAI,KAAO,GAAA1B,GAAA,CAAAkB,aAAA;IACTQ,KAAA,CAAAC,IAAA;IAQOD,KAAS,CAAAD,IAAA,GAAAA,IAAY;IAC1BC,KAAM,CAAEX,KAAA,GAAAA,KAAS;IACjBJ,IAAI,CAAAiB,WAAY,CAAAF,KAAA;EAChB;EACE1B,GAAA,CAAA6B,IAAM,CAAAD,WAAW,CAAAjB,IAAA;EACjB,OAAKA,IAAK;AACV;AACA,SAAImB,WAAWA,CAAA;EACf,IAAAC,IAAM,GAAAC,SACJ,CAAAR,MAAW,QACPQ,SAAQ,GAAK,UAAU,IAAAA,SACvB;EACN;IAAIC,MAAO,QAAO;IAAAC,WAAA;EAAA,IAAAH,IAAA;EAClB,IAAAI,SAAA,GAAY;EACZ,OAAK,gBAAOC,KAAA;IACZ;MAAA3B,QAAO;MAAAC;IAAA,IAAA0B,KAAA;IACT,IAAAC,cAAA;IACF,IAAArC,GAAA,IAAAqC,cAAA,GAAAN,IAAA,CAAAO,QAAA,cAAAD,cAAA,cAAAA,cAAA,GAAAE,UAAA,CAAAD,QAAA","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ const nav = () => globalThis.navigator;
2
+ function isMobileBrowser(navigator = nav()) {
3
+ if (typeof navigator?.userAgentData?.mobile === "boolean") return navigator.userAgentData.mobile;
4
+ return /Android|iPhone|iPad|iPod/i.test(navigator?.userAgent ?? "");
5
+ }
6
+ function hasUserActivation(navigator = nav()) {
7
+ return navigator?.userActivation ? navigator.userActivation.isActive : true;
8
+ }
9
+ export { hasUserActivation, isMobileBrowser };
10
+ //# sourceMappingURL=device.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["nav","globalThis","navigator","isMobileBrowser","userAgentData","mobile","test","userAgent","hasUserActivation","userActivation","isActive"],"sources":["../../../src/keycloak/device.ts"],"sourcesContent":[null],"mappings":"AAMA,MAAMA,GAAA,GAAMA,CAAA,KAAOC,UAAA,CAA6CC,SAAA;AAEzD,SAASC,gBAAgBD,SAAA,GAAuCF,GAAA,CAAI,GAAY;EACrF,IAAI,OAAOE,SAAA,EAAWE,aAAA,EAAeC,MAAA,KAAW,WAAW,OAAOH,SAAA,CAAUE,aAAA,CAAcC,MAAA;EAC1F,OAAO,4BAA4BC,IAAA,CAAKJ,SAAA,EAAWK,SAAA,IAAa,EAAE;AACpE;AAGO,SAASC,kBAAkBN,SAAA,GAAuCF,GAAA,CAAI,GAAY;EACvF,OAAOE,SAAA,EAAWO,cAAA,GAAiBP,SAAA,CAAUO,cAAA,CAAeC,QAAA,GAAW;AACzE","ignoreList":[]}
@@ -0,0 +1,16 @@
1
+ var nav = function nav2() {
2
+ return globalThis.navigator;
3
+ };
4
+ function isMobileBrowser() {
5
+ var navigator = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : nav();
6
+ var _ref;
7
+ var _navigator_userAgentData;
8
+ if (typeof (navigator === null || navigator === void 0 ? void 0 : (_navigator_userAgentData = navigator.userAgentData) === null || _navigator_userAgentData === void 0 ? void 0 : _navigator_userAgentData.mobile) === "boolean") return navigator.userAgentData.mobile;
9
+ return /Android|iPhone|iPad|iPod/i.test((_ref = navigator === null || navigator === void 0 ? void 0 : navigator.userAgent) !== null && _ref !== void 0 ? _ref : "");
10
+ }
11
+ function hasUserActivation() {
12
+ var navigator = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : nav();
13
+ return (navigator === null || navigator === void 0 ? void 0 : navigator.userActivation) ? navigator.userActivation.isActive : true;
14
+ }
15
+ export { hasUserActivation, isMobileBrowser };
16
+ //# sourceMappingURL=device.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["nav","nav2","globalThis","navigator","isMobileBrowser","arguments","length","_ref","_navigator_userAgentData","userAgentData","mobile"],"sources":["../../../src/keycloak/device.ts"],"sourcesContent":[null],"mappings":"AAMA,IAAAA,GAAM,YAAaC,KAAA;EAEZ,OAASC,UAAA,CAAAC,SAAgB;AAC9B;AACA,SAAOC,gBAAA;EACT,IAAAD,SAAA,GAAAE,SAAA,CAAAC,MAAA,QAAAD,SAAA,iBAAAA,SAAA,MAAAL,GAAA;EAGO,IAAAO,IAAS;EACd,IAAAC,wBAAkB;EACpB,YAAAL,SAAA,aAAAA,SAAA,wBAAAK,wBAAA,GAAAL,SAAA,CAAAM,aAAA,cAAAD,wBAAA,uBAAAA,wBAAA,CAAAE,MAAA,wBAAAP,SAAA,CAAAM,aAAA,CAAAC,MAAA","ignoreList":[]}
@@ -0,0 +1,164 @@
1
+ import { KeycloakWalletError, ProfileIncompleteError } from "./types.mjs";
2
+ function refreshRefused(error) {
3
+ if (!(error instanceof KeycloakWalletError)) return false;
4
+ return error.status === 401 || error.status === 400 && error.error === "invalid_grant";
5
+ }
6
+ function profileIncomplete(status, data) {
7
+ if (data.error === "resolve_required_actions") return true;
8
+ return status === 400 && data.error === "invalid_grant" && /not fully set up/i.test(data.error_description ?? "");
9
+ }
10
+ function createDirectGrant(kc, opts) {
11
+ const now = opts.now ?? Date.now;
12
+ const scope = Array.isArray(opts.scope) ? opts.scope.join(" ") : opts.scope ?? "openid";
13
+ const listeners = /* @__PURE__ */new Set();
14
+ let state = {
15
+ tokens: null,
16
+ error: null
17
+ };
18
+ let refreshing;
19
+ const setState = next => {
20
+ state = next;
21
+ for (const listener of listeners) listener(state);
22
+ };
23
+ const form = params => new URLSearchParams({
24
+ client_id: opts.clientId,
25
+ ...params,
26
+ ...(opts.clientSecret ? {
27
+ client_secret: opts.clientSecret
28
+ } : {})
29
+ }).toString();
30
+ const tokenRequest = async params => {
31
+ const res = await kc.request(kc.tokenUrl, {
32
+ method: "POST",
33
+ headers: {
34
+ "content-type": "application/x-www-form-urlencoded"
35
+ },
36
+ body: form(params)
37
+ });
38
+ const data = await res.json().catch(() => ({}));
39
+ if (!res.ok || !data.access_token) {
40
+ const Refusal = profileIncomplete(res.status, data) ? ProfileIncompleteError : KeycloakWalletError;
41
+ throw new Refusal(data.error_description || data.error || `Keycloak token request failed (${res.status})`, res.status, {
42
+ error: data.error,
43
+ errorDescription: data.error_description
44
+ });
45
+ }
46
+ const issuedAt = now();
47
+ return {
48
+ accessToken: data.access_token,
49
+ refreshToken: data.refresh_token,
50
+ idToken: data.id_token,
51
+ tokenType: data.token_type ?? "Bearer",
52
+ scope: data.scope,
53
+ expiresAt: issuedAt + (data.expires_in ?? 0) * 1e3,
54
+ refreshExpiresAt: data.refresh_expires_in ? issuedAt + data.refresh_expires_in * 1e3 : void 0
55
+ };
56
+ };
57
+ const grant = {
58
+ get state() {
59
+ return state;
60
+ },
61
+ get tokens() {
62
+ return state.tokens;
63
+ },
64
+ async login({
65
+ username,
66
+ password
67
+ }) {
68
+ try {
69
+ const tokens = await tokenRequest({
70
+ grant_type: "password",
71
+ username,
72
+ password,
73
+ scope
74
+ });
75
+ setState({
76
+ tokens,
77
+ error: null
78
+ });
79
+ return tokens;
80
+ } catch (error) {
81
+ setState({
82
+ tokens: state.tokens,
83
+ error
84
+ });
85
+ throw error;
86
+ } finally {
87
+ kc.resetNonce();
88
+ }
89
+ },
90
+ onSign: async credentials => {
91
+ await grant.login(credentials);
92
+ return true;
93
+ },
94
+ refresh(refreshToken) {
95
+ const token = refreshToken ?? state.tokens?.refreshToken;
96
+ if (!token) return Promise.reject(new Error("no refresh token"));
97
+ if (!refreshing) {
98
+ const startedWith = state.tokens;
99
+ const superseded = error => {
100
+ if (state.tokens) return state.tokens;
101
+ throw error;
102
+ };
103
+ refreshing = tokenRequest({
104
+ grant_type: "refresh_token",
105
+ refresh_token: token
106
+ }).then(tokens => {
107
+ if (state.tokens !== startedWith) {
108
+ return superseded(new Error("signed out while the refresh was in flight"));
109
+ }
110
+ setState({
111
+ tokens,
112
+ error: null
113
+ });
114
+ return tokens;
115
+ }, error => {
116
+ if (state.tokens !== startedWith) return superseded(error);
117
+ setState({
118
+ tokens: refreshRefused(error) ? null : state.tokens,
119
+ error
120
+ });
121
+ throw error;
122
+ }).finally(() => {
123
+ refreshing = void 0;
124
+ });
125
+ }
126
+ return refreshing;
127
+ },
128
+ async getAccessToken({
129
+ minValiditySeconds = 30
130
+ } = {}) {
131
+ const tokens = state.tokens;
132
+ if (!tokens) return null;
133
+ if (tokens.expiresAt - minValiditySeconds * 1e3 > now()) return tokens.accessToken;
134
+ if (!tokens.refreshToken) return null;
135
+ return (await grant.refresh()).accessToken;
136
+ },
137
+ async logout() {
138
+ const token = state.tokens?.refreshToken;
139
+ setState({
140
+ tokens: null,
141
+ error: null
142
+ });
143
+ if (!token) return;
144
+ await kc.request(`${kc.realmUrl}/protocol/openid-connect/logout`, {
145
+ method: "POST",
146
+ headers: {
147
+ "content-type": "application/x-www-form-urlencoded"
148
+ },
149
+ body: form({
150
+ refresh_token: token
151
+ })
152
+ });
153
+ },
154
+ subscribe(listener) {
155
+ listeners.add(listener);
156
+ return () => {
157
+ listeners.delete(listener);
158
+ };
159
+ }
160
+ };
161
+ return grant;
162
+ }
163
+ export { createDirectGrant };
164
+ //# sourceMappingURL=directGrant.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["KeycloakWalletError","ProfileIncompleteError","refreshRefused","error","status","profileIncomplete","data","test","error_description","createDirectGrant","kc","opts","now","Date","scope","Array","isArray","join","listeners","Set","state","tokens","refreshing","setState","next","listener","form","params","URLSearchParams","client_id","clientId","clientSecret","client_secret","toString","tokenRequest","res","request","tokenUrl","method","headers","body","json","catch","ok","access_token","Refusal","errorDescription","issuedAt","accessToken","refreshToken","refresh_token","idToken","id_token","tokenType","token_type","expiresAt","expires_in","refreshExpiresAt","refresh_expires_in","grant","login","username","password","grant_type","resetNonce","onSign","credentials","refresh","token","Promise","reject","Error","startedWith","superseded","then","finally","getAccessToken","minValiditySeconds","logout","realmUrl","subscribe","add","delete"],"sources":["../../../src/keycloak/directGrant.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}