@multiplatform.one/web3 7.24.0 → 7.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (363) hide show
  1. package/README.md +33 -0
  2. package/dist/cjs/bridge/AuthBridge.cjs +124 -0
  3. package/dist/cjs/bridge/AuthBridge.native.js +186 -0
  4. package/dist/cjs/bridge/AuthBridge.native.js.map +1 -0
  5. package/dist/cjs/bridge/BridgeClient.cjs +12 -9
  6. package/dist/cjs/bridge/BridgeClient.native.js +17 -12
  7. package/dist/cjs/bridge/BridgeClient.native.js.map +1 -1
  8. package/dist/cjs/bridge/BridgeHost.cjs +11 -3
  9. package/dist/cjs/bridge/BridgeHost.native.js +11 -3
  10. package/dist/cjs/bridge/BridgeHost.native.js.map +1 -1
  11. package/dist/cjs/bridge/GpgBridge.cjs +61 -0
  12. package/dist/cjs/bridge/GpgBridge.native.js +111 -0
  13. package/dist/cjs/bridge/GpgBridge.native.js.map +1 -0
  14. package/dist/cjs/bridge/SuiBridge.cjs +51 -0
  15. package/dist/cjs/bridge/SuiBridge.native.js +99 -0
  16. package/dist/cjs/bridge/SuiBridge.native.js.map +1 -0
  17. package/dist/cjs/bridge/authTypes.cjs +28 -0
  18. package/dist/cjs/bridge/authTypes.native.js +31 -0
  19. package/dist/cjs/bridge/authTypes.native.js.map +1 -0
  20. package/dist/cjs/bridge/core.cjs +65 -0
  21. package/dist/cjs/bridge/core.native.js +68 -0
  22. package/dist/cjs/bridge/core.native.js.map +1 -0
  23. package/dist/cjs/bridge/hosting.cjs +91 -0
  24. package/dist/cjs/bridge/hosting.native.js +117 -0
  25. package/dist/cjs/bridge/hosting.native.js.map +1 -0
  26. package/dist/cjs/bridge/index.cjs +3 -17
  27. package/dist/cjs/bridge/index.native.js +2 -16
  28. package/dist/cjs/bridge/index.native.js.map +1 -1
  29. package/dist/cjs/bridge/nativeHost.cjs +91 -0
  30. package/dist/cjs/bridge/nativeHost.native.js +118 -0
  31. package/dist/cjs/bridge/nativeHost.native.js.map +1 -0
  32. package/dist/cjs/bridge/protocol.cjs +30 -1
  33. package/dist/cjs/bridge/protocol.native.js +147 -1
  34. package/dist/cjs/bridge/protocol.native.js.map +1 -1
  35. package/dist/cjs/core/family.cjs +88 -0
  36. package/dist/cjs/core/family.native.js +115 -0
  37. package/dist/cjs/core/family.native.js.map +1 -0
  38. package/dist/cjs/core/index.cjs +41 -0
  39. package/dist/cjs/core/index.native.js +44 -0
  40. package/dist/cjs/core/index.native.js.map +1 -0
  41. package/dist/cjs/core/message.cjs +89 -0
  42. package/dist/cjs/core/message.native.js +104 -0
  43. package/dist/cjs/core/message.native.js.map +1 -0
  44. package/dist/cjs/core/names.cjs +51 -0
  45. package/dist/cjs/core/names.native.js +95 -0
  46. package/dist/cjs/core/names.native.js.map +1 -0
  47. package/dist/cjs/core/react.cjs +48 -0
  48. package/dist/cjs/core/react.native.js +52 -0
  49. package/dist/cjs/core/react.native.js.map +1 -0
  50. package/dist/cjs/core/store.cjs +450 -0
  51. package/dist/cjs/core/store.native.js +637 -0
  52. package/dist/cjs/core/store.native.js.map +1 -0
  53. package/dist/cjs/core/types.cjs +18 -0
  54. package/dist/cjs/core/types.native.js +21 -0
  55. package/dist/cjs/core/types.native.js.map +1 -0
  56. package/dist/cjs/index.cjs +3 -1
  57. package/dist/cjs/index.native.js +2 -0
  58. package/dist/cjs/index.native.js.map +1 -1
  59. package/dist/cjs/providers/WalletProvider.cjs +2 -0
  60. package/dist/cjs/providers/WalletProvider.native.js +123 -90
  61. package/dist/cjs/providers/WalletProvider.native.js.map +1 -1
  62. package/dist/cjs/providers/index.cjs +1 -0
  63. package/dist/cjs/providers/index.native.js +1 -0
  64. package/dist/cjs/providers/index.native.js.map +1 -1
  65. package/dist/cjs/providers/native/deepLink.cjs +40 -23
  66. package/dist/cjs/providers/native/deepLink.native.js +43 -25
  67. package/dist/cjs/providers/native/deepLink.native.js.map +1 -1
  68. package/dist/cjs/providers/native/inject.cjs +2 -4
  69. package/dist/cjs/providers/native/inject.native.js +2 -4
  70. package/dist/cjs/providers/native/inject.native.js.map +1 -1
  71. package/dist/cjs/providers/walletBridge.cjs +35 -0
  72. package/dist/cjs/providers/walletBridge.native.js +38 -0
  73. package/dist/cjs/providers/walletBridge.native.js.map +1 -0
  74. package/dist/cjs/providers/walletConfig.native.js.map +1 -1
  75. package/dist/esm/bridge/AuthBridge.mjs +99 -0
  76. package/dist/esm/bridge/AuthBridge.mjs.map +1 -0
  77. package/dist/esm/bridge/AuthBridge.native.js +158 -0
  78. package/dist/esm/bridge/AuthBridge.native.js.map +1 -0
  79. package/dist/esm/bridge/BridgeClient.mjs +13 -10
  80. package/dist/esm/bridge/BridgeClient.mjs.map +1 -1
  81. package/dist/esm/bridge/BridgeClient.native.js +18 -13
  82. package/dist/esm/bridge/BridgeClient.native.js.map +1 -1
  83. package/dist/esm/bridge/BridgeHost.mjs +12 -4
  84. package/dist/esm/bridge/BridgeHost.mjs.map +1 -1
  85. package/dist/esm/bridge/BridgeHost.native.js +12 -4
  86. package/dist/esm/bridge/BridgeHost.native.js.map +1 -1
  87. package/dist/esm/bridge/GpgBridge.mjs +36 -0
  88. package/dist/esm/bridge/GpgBridge.mjs.map +1 -0
  89. package/dist/esm/bridge/GpgBridge.native.js +83 -0
  90. package/dist/esm/bridge/GpgBridge.native.js.map +1 -0
  91. package/dist/esm/bridge/SuiBridge.mjs +26 -0
  92. package/dist/esm/bridge/SuiBridge.mjs.map +1 -0
  93. package/dist/esm/bridge/SuiBridge.native.js +71 -0
  94. package/dist/esm/bridge/SuiBridge.native.js.map +1 -0
  95. package/dist/esm/bridge/authTypes.mjs +3 -0
  96. package/dist/esm/bridge/authTypes.mjs.map +1 -0
  97. package/dist/esm/bridge/authTypes.native.js +3 -0
  98. package/dist/esm/bridge/authTypes.native.js.map +1 -0
  99. package/dist/esm/bridge/core.mjs +17 -0
  100. package/dist/esm/bridge/core.mjs.map +1 -0
  101. package/dist/esm/bridge/core.native.js +17 -0
  102. package/dist/esm/bridge/core.native.js.map +1 -0
  103. package/dist/esm/bridge/hosting.mjs +62 -0
  104. package/dist/esm/bridge/hosting.mjs.map +1 -0
  105. package/dist/esm/bridge/hosting.native.js +85 -0
  106. package/dist/esm/bridge/hosting.native.js.map +1 -0
  107. package/dist/esm/bridge/index.mjs +2 -9
  108. package/dist/esm/bridge/index.mjs.map +1 -1
  109. package/dist/esm/bridge/index.native.js +2 -9
  110. package/dist/esm/bridge/index.native.js.map +1 -1
  111. package/dist/esm/bridge/nativeHost.mjs +65 -0
  112. package/dist/esm/bridge/nativeHost.mjs.map +1 -0
  113. package/dist/esm/bridge/nativeHost.native.js +89 -0
  114. package/dist/esm/bridge/nativeHost.native.js.map +1 -0
  115. package/dist/esm/bridge/protocol.mjs +28 -2
  116. package/dist/esm/bridge/protocol.mjs.map +1 -1
  117. package/dist/esm/bridge/protocol.native.js +145 -2
  118. package/dist/esm/bridge/protocol.native.js.map +1 -1
  119. package/dist/esm/core/family.mjs +62 -0
  120. package/dist/esm/core/family.mjs.map +1 -0
  121. package/dist/esm/core/family.native.js +86 -0
  122. package/dist/esm/core/family.native.js.map +1 -0
  123. package/dist/esm/core/index.mjs +7 -0
  124. package/dist/esm/core/index.mjs.map +1 -0
  125. package/dist/esm/core/index.native.js +7 -0
  126. package/dist/esm/core/index.native.js.map +1 -0
  127. package/dist/esm/core/message.mjs +63 -0
  128. package/dist/esm/core/message.mjs.map +1 -0
  129. package/dist/esm/core/message.native.js +75 -0
  130. package/dist/esm/core/message.native.js.map +1 -0
  131. package/dist/esm/core/names.mjs +25 -0
  132. package/dist/esm/core/names.mjs.map +1 -0
  133. package/dist/esm/core/names.native.js +66 -0
  134. package/dist/esm/core/names.native.js.map +1 -0
  135. package/dist/esm/core/react.mjs +21 -0
  136. package/dist/esm/core/react.mjs.map +1 -0
  137. package/dist/esm/core/react.native.js +22 -0
  138. package/dist/esm/core/react.native.js.map +1 -0
  139. package/dist/esm/core/store.mjs +424 -0
  140. package/dist/esm/core/store.mjs.map +1 -0
  141. package/dist/esm/core/store.native.js +608 -0
  142. package/dist/esm/core/store.native.js.map +1 -0
  143. package/dist/esm/core/types.mjs +2 -0
  144. package/dist/esm/core/types.mjs.map +1 -0
  145. package/dist/esm/core/types.native.js +2 -0
  146. package/dist/esm/core/types.native.js.map +1 -0
  147. package/dist/esm/index.mjs +3 -2
  148. package/dist/esm/index.mjs.map +1 -1
  149. package/dist/esm/index.native.js +3 -2
  150. package/dist/esm/index.native.js.map +1 -1
  151. package/dist/esm/providers/WalletProvider.mjs +2 -1
  152. package/dist/esm/providers/WalletProvider.mjs.map +1 -1
  153. package/dist/esm/providers/WalletProvider.native.js +125 -93
  154. package/dist/esm/providers/WalletProvider.native.js.map +1 -1
  155. package/dist/esm/providers/index.mjs +2 -2
  156. package/dist/esm/providers/index.mjs.map +1 -1
  157. package/dist/esm/providers/index.native.js +2 -2
  158. package/dist/esm/providers/index.native.js.map +1 -1
  159. package/dist/esm/providers/native/deepLink.mjs +36 -24
  160. package/dist/esm/providers/native/deepLink.mjs.map +1 -1
  161. package/dist/esm/providers/native/deepLink.native.js +39 -26
  162. package/dist/esm/providers/native/deepLink.native.js.map +1 -1
  163. package/dist/esm/providers/native/inject.mjs +1 -3
  164. package/dist/esm/providers/native/inject.mjs.map +1 -1
  165. package/dist/esm/providers/native/inject.native.js +1 -3
  166. package/dist/esm/providers/native/inject.native.js.map +1 -1
  167. package/dist/esm/providers/walletBridge.mjs +9 -0
  168. package/dist/esm/providers/walletBridge.mjs.map +1 -0
  169. package/dist/esm/providers/walletBridge.native.js +9 -0
  170. package/dist/esm/providers/walletBridge.native.js.map +1 -0
  171. package/dist/esm/providers/walletConfig.mjs.map +1 -1
  172. package/dist/esm/providers/walletConfig.native.js.map +1 -1
  173. package/dist/jsx/bridge/AuthBridge.mjs +99 -0
  174. package/dist/jsx/bridge/AuthBridge.mjs.map +1 -0
  175. package/dist/jsx/bridge/AuthBridge.native.js +186 -0
  176. package/dist/jsx/bridge/AuthBridge.native.js.map +1 -0
  177. package/dist/jsx/bridge/BridgeClient.mjs +13 -10
  178. package/dist/jsx/bridge/BridgeClient.mjs.map +1 -1
  179. package/dist/jsx/bridge/BridgeClient.native.js +17 -12
  180. package/dist/jsx/bridge/BridgeClient.native.js.map +1 -1
  181. package/dist/jsx/bridge/BridgeHost.mjs +12 -4
  182. package/dist/jsx/bridge/BridgeHost.mjs.map +1 -1
  183. package/dist/jsx/bridge/BridgeHost.native.js +11 -3
  184. package/dist/jsx/bridge/BridgeHost.native.js.map +1 -1
  185. package/dist/jsx/bridge/GpgBridge.mjs +36 -0
  186. package/dist/jsx/bridge/GpgBridge.mjs.map +1 -0
  187. package/dist/jsx/bridge/GpgBridge.native.js +111 -0
  188. package/dist/jsx/bridge/GpgBridge.native.js.map +1 -0
  189. package/dist/jsx/bridge/SuiBridge.mjs +26 -0
  190. package/dist/jsx/bridge/SuiBridge.mjs.map +1 -0
  191. package/dist/jsx/bridge/SuiBridge.native.js +99 -0
  192. package/dist/jsx/bridge/SuiBridge.native.js.map +1 -0
  193. package/dist/jsx/bridge/authTypes.mjs +3 -0
  194. package/dist/jsx/bridge/authTypes.mjs.map +1 -0
  195. package/dist/jsx/bridge/authTypes.native.js +31 -0
  196. package/dist/jsx/bridge/authTypes.native.js.map +1 -0
  197. package/dist/jsx/bridge/core.mjs +17 -0
  198. package/dist/jsx/bridge/core.mjs.map +1 -0
  199. package/dist/jsx/bridge/core.native.js +68 -0
  200. package/dist/jsx/bridge/core.native.js.map +1 -0
  201. package/dist/jsx/bridge/hosting.mjs +62 -0
  202. package/dist/jsx/bridge/hosting.mjs.map +1 -0
  203. package/dist/jsx/bridge/hosting.native.js +117 -0
  204. package/dist/jsx/bridge/hosting.native.js.map +1 -0
  205. package/dist/jsx/bridge/index.mjs +2 -9
  206. package/dist/jsx/bridge/index.mjs.map +1 -1
  207. package/dist/jsx/bridge/index.native.js +2 -16
  208. package/dist/jsx/bridge/index.native.js.map +1 -1
  209. package/dist/jsx/bridge/nativeHost.mjs +65 -0
  210. package/dist/jsx/bridge/nativeHost.mjs.map +1 -0
  211. package/dist/jsx/bridge/nativeHost.native.js +118 -0
  212. package/dist/jsx/bridge/nativeHost.native.js.map +1 -0
  213. package/dist/jsx/bridge/protocol.mjs +28 -2
  214. package/dist/jsx/bridge/protocol.mjs.map +1 -1
  215. package/dist/jsx/bridge/protocol.native.js +147 -1
  216. package/dist/jsx/bridge/protocol.native.js.map +1 -1
  217. package/dist/jsx/core/family.mjs +62 -0
  218. package/dist/jsx/core/family.mjs.map +1 -0
  219. package/dist/jsx/core/family.native.js +115 -0
  220. package/dist/jsx/core/family.native.js.map +1 -0
  221. package/dist/jsx/core/index.mjs +7 -0
  222. package/dist/jsx/core/index.mjs.map +1 -0
  223. package/dist/jsx/core/index.native.js +44 -0
  224. package/dist/jsx/core/index.native.js.map +1 -0
  225. package/dist/jsx/core/message.mjs +63 -0
  226. package/dist/jsx/core/message.mjs.map +1 -0
  227. package/dist/jsx/core/message.native.js +104 -0
  228. package/dist/jsx/core/message.native.js.map +1 -0
  229. package/dist/jsx/core/names.mjs +25 -0
  230. package/dist/jsx/core/names.mjs.map +1 -0
  231. package/dist/jsx/core/names.native.js +95 -0
  232. package/dist/jsx/core/names.native.js.map +1 -0
  233. package/dist/jsx/core/react.mjs +21 -0
  234. package/dist/jsx/core/react.mjs.map +1 -0
  235. package/dist/jsx/core/react.native.js +52 -0
  236. package/dist/jsx/core/react.native.js.map +1 -0
  237. package/dist/jsx/core/store.mjs +424 -0
  238. package/dist/jsx/core/store.mjs.map +1 -0
  239. package/dist/jsx/core/store.native.js +637 -0
  240. package/dist/jsx/core/store.native.js.map +1 -0
  241. package/dist/jsx/core/types.mjs +2 -0
  242. package/dist/jsx/core/types.mjs.map +1 -0
  243. package/dist/jsx/core/types.native.js +21 -0
  244. package/dist/jsx/core/types.native.js.map +1 -0
  245. package/dist/jsx/index.js +3 -2
  246. package/dist/jsx/index.js.map +1 -1
  247. package/dist/jsx/index.mjs +3 -2
  248. package/dist/jsx/index.mjs.map +1 -1
  249. package/dist/jsx/index.native.js +2 -0
  250. package/dist/jsx/index.native.js.map +1 -1
  251. package/dist/jsx/providers/WalletProvider.mjs +2 -1
  252. package/dist/jsx/providers/WalletProvider.mjs.map +1 -1
  253. package/dist/jsx/providers/WalletProvider.native.js +123 -90
  254. package/dist/jsx/providers/WalletProvider.native.js.map +1 -1
  255. package/dist/jsx/providers/index.mjs +2 -2
  256. package/dist/jsx/providers/index.mjs.map +1 -1
  257. package/dist/jsx/providers/index.native.js +1 -0
  258. package/dist/jsx/providers/index.native.js.map +1 -1
  259. package/dist/jsx/providers/native/deepLink.mjs +36 -24
  260. package/dist/jsx/providers/native/deepLink.mjs.map +1 -1
  261. package/dist/jsx/providers/native/deepLink.native.js +43 -25
  262. package/dist/jsx/providers/native/deepLink.native.js.map +1 -1
  263. package/dist/jsx/providers/native/inject.mjs +1 -3
  264. package/dist/jsx/providers/native/inject.mjs.map +1 -1
  265. package/dist/jsx/providers/native/inject.native.js +2 -4
  266. package/dist/jsx/providers/native/inject.native.js.map +1 -1
  267. package/dist/jsx/providers/walletBridge.mjs +9 -0
  268. package/dist/jsx/providers/walletBridge.mjs.map +1 -0
  269. package/dist/jsx/providers/walletBridge.native.js +38 -0
  270. package/dist/jsx/providers/walletBridge.native.js.map +1 -0
  271. package/dist/jsx/providers/walletConfig.mjs.map +1 -1
  272. package/dist/jsx/providers/walletConfig.native.js.map +1 -1
  273. package/docs/bridge-protocol.md +485 -0
  274. package/package.json +14 -6
  275. package/src/bridge/AuthBridge.ts +146 -0
  276. package/src/bridge/BridgeClient.spec.ts +12 -0
  277. package/src/bridge/BridgeClient.ts +15 -10
  278. package/src/bridge/BridgeHost.spec.ts +20 -4
  279. package/src/bridge/BridgeHost.ts +16 -5
  280. package/src/bridge/GpgBridge.ts +49 -0
  281. package/src/bridge/SuiBridge.ts +34 -0
  282. package/src/bridge/authTypes.ts +76 -0
  283. package/src/bridge/core.ts +42 -0
  284. package/src/bridge/hosting.spec.ts +98 -0
  285. package/src/bridge/hosting.ts +99 -0
  286. package/src/bridge/index.ts +1 -8
  287. package/src/bridge/nativeHost.spec.ts +165 -0
  288. package/src/bridge/nativeHost.ts +120 -0
  289. package/src/bridge/protocol.spec.ts +24 -1
  290. package/src/bridge/protocol.ts +44 -1
  291. package/src/core/family.spec.ts +117 -0
  292. package/src/core/family.ts +103 -0
  293. package/src/core/imports.spec.ts +82 -0
  294. package/src/core/index.ts +47 -0
  295. package/src/core/message.spec.ts +178 -0
  296. package/src/core/message.ts +119 -0
  297. package/src/core/names.ts +29 -0
  298. package/src/core/react.spec.tsx +75 -0
  299. package/src/core/react.ts +34 -0
  300. package/src/core/store.spec.ts +890 -0
  301. package/src/core/store.ts +558 -0
  302. package/src/core/types.ts +96 -0
  303. package/src/index.ts +6 -0
  304. package/src/providers/WalletProvider.native.tsx +139 -85
  305. package/src/providers/WalletProvider.tsx +1 -1
  306. package/src/providers/index.ts +2 -0
  307. package/src/providers/native/deepLink.spec.ts +73 -1
  308. package/src/providers/native/deepLink.ts +76 -28
  309. package/src/providers/native/inject.ts +1 -9
  310. package/src/providers/walletBridge.ts +24 -0
  311. package/src/providers/walletConfig.ts +15 -1
  312. package/types/bridge/AuthBridge.d.ts +58 -0
  313. package/types/bridge/AuthBridge.d.ts.map +1 -0
  314. package/types/bridge/BridgeClient.d.ts +3 -1
  315. package/types/bridge/BridgeClient.d.ts.map +1 -1
  316. package/types/bridge/BridgeHost.d.ts +1 -1
  317. package/types/bridge/BridgeHost.d.ts.map +1 -1
  318. package/types/bridge/GpgBridge.d.ts +23 -0
  319. package/types/bridge/GpgBridge.d.ts.map +1 -0
  320. package/types/bridge/SuiBridge.d.ts +18 -0
  321. package/types/bridge/SuiBridge.d.ts.map +1 -0
  322. package/types/bridge/authTypes.d.ts +71 -0
  323. package/types/bridge/authTypes.d.ts.map +1 -0
  324. package/types/bridge/core.d.ts +16 -0
  325. package/types/bridge/core.d.ts.map +1 -0
  326. package/types/bridge/hosting.d.ts +34 -0
  327. package/types/bridge/hosting.d.ts.map +1 -0
  328. package/types/bridge/index.d.ts +1 -8
  329. package/types/bridge/index.d.ts.map +1 -1
  330. package/types/bridge/nativeHost.d.ts +55 -0
  331. package/types/bridge/nativeHost.d.ts.map +1 -0
  332. package/types/bridge/protocol.d.ts +34 -1
  333. package/types/bridge/protocol.d.ts.map +1 -1
  334. package/types/core/family.d.ts +44 -0
  335. package/types/core/family.d.ts.map +1 -0
  336. package/types/core/index.d.ts +7 -0
  337. package/types/core/index.d.ts.map +1 -0
  338. package/types/core/message.d.ts +44 -0
  339. package/types/core/message.d.ts.map +1 -0
  340. package/types/core/names.d.ts +7 -0
  341. package/types/core/names.d.ts.map +1 -0
  342. package/types/core/react.d.ts +14 -0
  343. package/types/core/react.d.ts.map +1 -0
  344. package/types/core/store.d.ts +64 -0
  345. package/types/core/store.d.ts.map +1 -0
  346. package/types/core/types.d.ts +88 -0
  347. package/types/core/types.d.ts.map +1 -0
  348. package/types/index.d.ts +2 -1
  349. package/types/index.d.ts.map +1 -1
  350. package/types/providers/WalletProvider.d.ts +1 -0
  351. package/types/providers/WalletProvider.d.ts.map +1 -1
  352. package/types/providers/WalletProvider.native.d.ts +2 -1
  353. package/types/providers/WalletProvider.native.d.ts.map +1 -1
  354. package/types/providers/index.d.ts +1 -1
  355. package/types/providers/index.d.ts.map +1 -1
  356. package/types/providers/native/deepLink.d.ts +29 -4
  357. package/types/providers/native/deepLink.d.ts.map +1 -1
  358. package/types/providers/native/inject.d.ts +1 -7
  359. package/types/providers/native/inject.d.ts.map +1 -1
  360. package/types/providers/walletBridge.d.ts +17 -0
  361. package/types/providers/walletBridge.d.ts.map +1 -0
  362. package/types/providers/walletConfig.d.ts +18 -1
  363. package/types/providers/walletConfig.d.ts.map +1 -1
package/README.md CHANGED
@@ -243,6 +243,39 @@ React Native builds don't need it: the native `WalletProvider` renders the
243
243
  wallet UI from `assets/webview.html`, which this package builds with the
244
244
  plugin.
245
245
 
246
+ ## Native apps: the WebView bridge
247
+
248
+ A native app does not link wallet SDKs. The native `WalletProvider` (the
249
+ `./native` entry) loads the wallet UI, `assets/webview.html`, in a WebView and
250
+ talks to it over a JSON bridge: `evm` (EIP-1193), `solana`, `sui` and `gpg`
251
+ signing, and `auth`, the Keycloak wallet sign-in. Everything runs on
252
+ `react-native-webview` and `Linking`, so stock Expo Go runs it.
253
+
254
+ Serve `webview.html` over https and set `webViewUrl` to it. The page's host
255
+ is the sign-in message's domain and the host the Keycloak nonce cookie is set
256
+ for, so it must be in the realm's `siww.allowedDomains` (SHC Keycloak) or
257
+ `wallet.allowedDomains` (mpo Keycloak), and its origin in the client's web
258
+ origins. The provider refuses any other URL; plain http is accepted only on
259
+ `localhost`, `127.0.0.1`, `[::1]` and `10.0.2.2`, in development builds.
260
+
261
+ ```tsx
262
+ import { useWalletBridge } from "@multiplatform.one/web3";
263
+
264
+ const { auth, sui, gpg } = useWalletBridge();
265
+ const outcome = await auth.signIn({
266
+ keycloak: { baseUrl: "https://account.example.com", realm: "main", clientId: "siwe-public" },
267
+ onboarding: { clientId: "wallet-onboarding", redirectUri: "myapp://auth" },
268
+ });
269
+ if (outcome.status === "signed-in") save(outcome.tokens);
270
+ // "profile-incomplete": Keycloak's own login was opened in the system browser
271
+ // to finish the profile; call signIn again once it redirects back.
272
+ ```
273
+
274
+ `@multiplatform.one/web3/bridge` is the same bridge without wagmi, for a host
275
+ that drives the page itself. Kotlin and Swift hosts implement
276
+ [docs/bridge-protocol.md](docs/bridge-protocol.md), the versioned wire
277
+ protocol.
278
+
246
279
  ## Usage
247
280
 
248
281
  ```tsx
@@ -0,0 +1,124 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all) __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ return to;
19
+ };
20
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
+ value: true
22
+ }), mod);
23
+ var AuthBridge_exports = {};
24
+ __export(AuthBridge_exports, {
25
+ AuthBridge: () => AuthBridge
26
+ });
27
+ module.exports = __toCommonJS(AuthBridge_exports);
28
+ var import_hosting = require("./hosting.cjs");
29
+ var import_protocol = require("./protocol.cjs");
30
+ class AuthBridge {
31
+ constructor(bridge, options) {
32
+ this.bridge = bridge;
33
+ this.options = options;
34
+ }
35
+ bridge;
36
+ options;
37
+ pending = null;
38
+ async signIn(params = {}, options = {}) {
39
+ const {
40
+ openOnboarding = true,
41
+ ...request
42
+ } = options;
43
+ const onboarding = params.onboarding ?? this.options.defaults?.onboarding;
44
+ const keycloak = this.keycloak(params.keycloak);
45
+ const result = await this.bridge.request("auth", "signIn", {
46
+ family: params.family ?? "eth",
47
+ keycloak,
48
+ ...(onboarding ? {
49
+ onboarding
50
+ } : {})
51
+ }, {
52
+ timeoutMs: this.options.signInTimeoutMs ?? 10 * 6e4,
53
+ ...request
54
+ });
55
+ if (result.status !== "profile-incomplete") {
56
+ this.pending = null;
57
+ return result;
58
+ }
59
+ if (!isAuthorizationUrl(result.browserLogin?.url, keycloak)) {
60
+ throw new import_protocol.BridgeRequestError(import_protocol.BridgeErrorCode.internal, "auth.signIn: the page's browser login is not the realm's authorization endpoint");
61
+ }
62
+ this.pending = result.browserLogin;
63
+ if (!openOnboarding) return {
64
+ ...result,
65
+ onboardingOpened: false
66
+ };
67
+ await this.options.openUrl(result.browserLogin.url);
68
+ return {
69
+ ...result,
70
+ onboardingOpened: true
71
+ };
72
+ }
73
+ async refresh(params = {}) {
74
+ const res = await this.bridge.request("auth", "refresh", {
75
+ keycloak: this.keycloak(params.keycloak),
76
+ ...(params.refreshToken ? {
77
+ refreshToken: params.refreshToken
78
+ } : {})
79
+ });
80
+ return res.tokens;
81
+ }
82
+ async logout(params = {}) {
83
+ await this.bridge.request("auth", "logout", {
84
+ keycloak: this.keycloak(params.keycloak),
85
+ ...(params.refreshToken ? {
86
+ refreshToken: params.refreshToken
87
+ } : {})
88
+ });
89
+ }
90
+ /** The browser login the last `profile-incomplete` answer carried, until a sign-in succeeds. */
91
+ get pendingOnboarding() {
92
+ return this.pending;
93
+ }
94
+ /**
95
+ * True when `url` is Keycloak sending the browser back from that onboarding
96
+ * (its `state` matches) with no `error`. A matching return, cancelled or
97
+ * not, ends the pending onboarding, so the same return never counts twice.
98
+ */
99
+ isOnboardingReturn(url) {
100
+ if (this.pending === null) return false;
101
+ const params = (0, import_hosting.queryParams)(url);
102
+ if (params.state !== this.pending.state) return false;
103
+ this.pending = null;
104
+ return params.error === void 0;
105
+ }
106
+ /** `tokensChanged` fires whenever the page's tokens for a realm and client change. */
107
+ onTokensChanged(handler) {
108
+ return this.bridge.on((ns, method, params) => {
109
+ if (ns === "auth" && method === "tokensChanged") handler(params);
110
+ });
111
+ }
112
+ keycloak(keycloak) {
113
+ const resolved = keycloak ?? this.options.defaults?.keycloak;
114
+ if (!resolved) {
115
+ throw new import_protocol.BridgeRequestError(import_protocol.BridgeErrorCode.invalidParams, "auth: pass keycloak { baseUrl, realm, clientId } or set it in the provider defaults");
116
+ }
117
+ return resolved;
118
+ }
119
+ }
120
+ function isAuthorizationUrl(url, keycloak) {
121
+ if (typeof url !== "string") return false;
122
+ const realmUrl = `${keycloak.baseUrl.replace(/\/+$/, "")}/realms/${encodeURIComponent(keycloak.realm)}`;
123
+ return url.startsWith(`${realmUrl}/protocol/openid-connect/auth?`);
124
+ }
@@ -0,0 +1,186 @@
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 AuthBridge_exports = {};
26
+ __export(AuthBridge_exports, {
27
+ AuthBridge: () => AuthBridge
28
+ });
29
+ module.exports = __toCommonJS(AuthBridge_exports);
30
+ var import_hosting = require("./hosting.native.js");
31
+ var import_protocol = require("./protocol.native.js");
32
+ function _class_call_check(instance, Constructor) {
33
+ if (!(instance instanceof Constructor)) {
34
+ throw new TypeError("Cannot call a class as a function");
35
+ }
36
+ }
37
+ function _defineProperties(target, props) {
38
+ for (var i = 0; i < props.length; i++) {
39
+ var descriptor = props[i];
40
+ descriptor.enumerable = descriptor.enumerable || false;
41
+ descriptor.configurable = true;
42
+ if ("value" in descriptor) descriptor.writable = true;
43
+ Object.defineProperty(target, descriptor.key, descriptor);
44
+ }
45
+ }
46
+ function _create_class(Constructor, protoProps, staticProps) {
47
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
48
+ if (staticProps) _defineProperties(Constructor, staticProps);
49
+ return Constructor;
50
+ }
51
+ function _define_property(obj, key, value) {
52
+ if (key in obj) {
53
+ Object.defineProperty(obj, key, {
54
+ value,
55
+ enumerable: true,
56
+ configurable: true,
57
+ writable: true
58
+ });
59
+ } else {
60
+ obj[key] = value;
61
+ }
62
+ return obj;
63
+ }
64
+ var AuthBridge = /* @__PURE__ */function () {
65
+ "use strict";
66
+
67
+ function AuthBridge2(bridge, options) {
68
+ _class_call_check(this, AuthBridge2);
69
+ _define_property(this, "bridge", void 0);
70
+ _define_property(this, "options", void 0);
71
+ _define_property(this, "pending", void 0);
72
+ this.bridge = bridge;
73
+ this.options = options;
74
+ this.pending = null;
75
+ }
76
+ _create_class(AuthBridge2, [{
77
+ key: "signIn",
78
+ value: async function signIn() {
79
+ var params = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {},
80
+ options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
81
+ var _params_onboarding, _params_family, _this_options_signInTimeoutMs;
82
+ var _this_options_defaults, _result_browserLogin;
83
+ var {
84
+ openOnboarding = true,
85
+ ...request
86
+ } = options;
87
+ var onboarding = (_params_onboarding = params.onboarding) !== null && _params_onboarding !== void 0 ? _params_onboarding : (_this_options_defaults = this.options.defaults) === null || _this_options_defaults === void 0 ? void 0 : _this_options_defaults.onboarding;
88
+ var keycloak = this.keycloak(params.keycloak);
89
+ var result = await this.bridge.request("auth", "signIn", {
90
+ family: (_params_family = params.family) !== null && _params_family !== void 0 ? _params_family : "eth",
91
+ keycloak,
92
+ ...(onboarding ? {
93
+ onboarding
94
+ } : {})
95
+ }, {
96
+ timeoutMs: (_this_options_signInTimeoutMs = this.options.signInTimeoutMs) !== null && _this_options_signInTimeoutMs !== void 0 ? _this_options_signInTimeoutMs : 10 * 6e4,
97
+ ...request
98
+ });
99
+ if (result.status !== "profile-incomplete") {
100
+ this.pending = null;
101
+ return result;
102
+ }
103
+ if (!isAuthorizationUrl((_result_browserLogin = result.browserLogin) === null || _result_browserLogin === void 0 ? void 0 : _result_browserLogin.url, keycloak)) {
104
+ throw new import_protocol.BridgeRequestError(import_protocol.BridgeErrorCode.internal, "auth.signIn: the page's browser login is not the realm's authorization endpoint");
105
+ }
106
+ this.pending = result.browserLogin;
107
+ if (!openOnboarding) return {
108
+ ...result,
109
+ onboardingOpened: false
110
+ };
111
+ await this.options.openUrl(result.browserLogin.url);
112
+ return {
113
+ ...result,
114
+ onboardingOpened: true
115
+ };
116
+ }
117
+ }, {
118
+ key: "refresh",
119
+ value: async function refresh() {
120
+ var params = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
121
+ var res = await this.bridge.request("auth", "refresh", {
122
+ keycloak: this.keycloak(params.keycloak),
123
+ ...(params.refreshToken ? {
124
+ refreshToken: params.refreshToken
125
+ } : {})
126
+ });
127
+ return res.tokens;
128
+ }
129
+ }, {
130
+ key: "logout",
131
+ value: async function logout() {
132
+ var params = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
133
+ await this.bridge.request("auth", "logout", {
134
+ keycloak: this.keycloak(params.keycloak),
135
+ ...(params.refreshToken ? {
136
+ refreshToken: params.refreshToken
137
+ } : {})
138
+ });
139
+ }
140
+ }, {
141
+ key: "pendingOnboarding",
142
+ get: (/** The browser login the last `profile-incomplete` answer carried, until a sign-in succeeds. */
143
+ function get() {
144
+ return this.pending;
145
+ })
146
+ }, {
147
+ /**
148
+ * True when `url` is Keycloak sending the browser back from that onboarding
149
+ * (its `state` matches) with no `error`. A matching return, cancelled or
150
+ * not, ends the pending onboarding, so the same return never counts twice.
151
+ */
152
+ key: "isOnboardingReturn",
153
+ value: function isOnboardingReturn(url) {
154
+ if (this.pending === null) return false;
155
+ var params = (0, import_hosting.queryParams)(url);
156
+ if (params.state !== this.pending.state) return false;
157
+ this.pending = null;
158
+ return params.error === void 0;
159
+ }
160
+ }, {
161
+ /** `tokensChanged` fires whenever the page's tokens for a realm and client change. */
162
+ key: "onTokensChanged",
163
+ value: function onTokensChanged(handler) {
164
+ return this.bridge.on(function (ns, method, params) {
165
+ if (ns === "auth" && method === "tokensChanged") handler(params);
166
+ });
167
+ }
168
+ }, {
169
+ key: "keycloak",
170
+ value: function keycloak(keycloak) {
171
+ var _this_options_defaults;
172
+ var resolved = keycloak !== null && keycloak !== void 0 ? keycloak : (_this_options_defaults = this.options.defaults) === null || _this_options_defaults === void 0 ? void 0 : _this_options_defaults.keycloak;
173
+ if (!resolved) {
174
+ throw new import_protocol.BridgeRequestError(import_protocol.BridgeErrorCode.invalidParams, "auth: pass keycloak { baseUrl, realm, clientId } or set it in the provider defaults");
175
+ }
176
+ return resolved;
177
+ }
178
+ }]);
179
+ return AuthBridge2;
180
+ }();
181
+ function isAuthorizationUrl(url, keycloak) {
182
+ if (typeof url !== "string") return false;
183
+ var realmUrl = `${keycloak.baseUrl.replace(/\/+$/, "")}/realms/${encodeURIComponent(keycloak.realm)}`;
184
+ return url.startsWith(`${realmUrl}/protocol/openid-connect/auth?`);
185
+ }
186
+ //# sourceMappingURL=AuthBridge.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","AuthBridge_exports","__export","AuthBridge","module","exports","import_hosting","require","import_protocol","_class_call_check","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_create_class","protoProps","staticProps","prototype","_define_property","obj","AuthBridge2","bridge","options","pending","signIn","params","arguments","_params_onboarding","_params_family","_this_options_signInTimeoutMs","_this_options_defaults","_result_browserLogin","openOnboarding","request","onboarding","defaults","keycloak","result","family","timeoutMs","signInTimeoutMs","status","isAuthorizationUrl","browserLogin","url","BridgeRequestError","BridgeErrorCode","internal","onboardingOpened","openUrl","refresh","res"],"sources":["../../../src/bridge/AuthBridge.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -80,15 +80,20 @@ class BridgeClient {
80
80
  this.listeners.delete(handler);
81
81
  };
82
82
  }
83
- /** Reject all in-flight requests — call on WebView reload/crash. */
83
+ /** Fail every request in flight and keep the client usable: the page they went to is gone. */
84
+ rejectPending(reason) {
85
+ const pending = Array.from(this.pending.values());
86
+ this.pending.clear();
87
+ for (const p of pending) {
88
+ p.cleanup();
89
+ p.reject(reason);
90
+ }
91
+ }
92
+ /** Reject all in-flight requests and stop listening. */
84
93
  dispose() {
85
94
  this.disposed = true;
86
95
  this.unsubscribe();
87
- for (const [, p] of this.pending) {
88
- p.cleanup();
89
- p.reject(new Error("Bridge disposed"));
90
- }
91
- this.pending.clear();
96
+ this.rejectPending(new Error("Bridge disposed"));
92
97
  this.listeners.clear();
93
98
  }
94
99
  settle(id, reject, error) {
@@ -115,7 +120,5 @@ class BridgeClient {
115
120
  };
116
121
  }
117
122
  function toError(e) {
118
- const err = new Error(e.message);
119
- err.code = e.code;
120
- return err;
123
+ return new import_protocol.BridgeRequestError(e.code, e.message, e.data);
121
124
  }
@@ -173,19 +173,19 @@ var BridgeClient = /* @__PURE__ */function () {
173
173
  };
174
174
  }
175
175
  }, {
176
- /** Reject all in-flight requests — call on WebView reload/crash. */
177
- key: "dispose",
178
- value: function dispose() {
179
- this.disposed = true;
180
- this.unsubscribe();
176
+ /** Fail every request in flight and keep the client usable: the page they went to is gone. */
177
+ key: "rejectPending",
178
+ value: function rejectPending(reason) {
179
+ var pending = Array.from(this.pending.values());
180
+ this.pending.clear();
181
181
  var _iteratorNormalCompletion = true,
182
182
  _didIteratorError = false,
183
183
  _iteratorError = void 0;
184
184
  try {
185
- for (var _iterator = this.pending[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
186
- var [, p] = _step.value;
185
+ for (var _iterator = pending[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
186
+ var p = _step.value;
187
187
  p.cleanup();
188
- p.reject(new Error("Bridge disposed"));
188
+ p.reject(reason);
189
189
  }
190
190
  } catch (err) {
191
191
  _didIteratorError = true;
@@ -201,7 +201,14 @@ var BridgeClient = /* @__PURE__ */function () {
201
201
  }
202
202
  }
203
203
  }
204
- this.pending.clear();
204
+ }
205
+ }, {
206
+ /** Reject all in-flight requests and stop listening. */
207
+ key: "dispose",
208
+ value: function dispose() {
209
+ this.disposed = true;
210
+ this.unsubscribe();
211
+ this.rejectPending(new Error("Bridge disposed"));
205
212
  this.listeners.clear();
206
213
  }
207
214
  }, {
@@ -217,8 +224,6 @@ var BridgeClient = /* @__PURE__ */function () {
217
224
  return BridgeClient2;
218
225
  }();
219
226
  function toError(e) {
220
- var err = new Error(e.message);
221
- err.code = e.code;
222
- return err;
227
+ return new import_protocol.BridgeRequestError(e.code, e.message, e.data);
223
228
  }
224
229
  //# sourceMappingURL=BridgeClient.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","BridgeClient_exports","__export","BridgeClient","module","exports","import_protocol","require","_class_call_check","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_create_class","protoProps","staticProps","prototype","_define_property","obj","DEFAULT_TIMEOUT_MS","BridgeClient2","transport","_this","opts","arguments","pending","Map","listeners","Set","disposed","onMessage","message","isBridgeMessage","kind","id","p","get","delete","cleanup","error","reject","toError","resolve","result","method","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Array","from","Symbol","iterator","_step","next","done","l","ns","params","err","return"],"sources":["../../../src/bridge/BridgeClient.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,oBAAA;AAAAC,QAAA,CAAAD,oBAAA;EAAAE,YAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAT,YAMO,CAAAK,oBAAA;AAkBP,IAAAK,eAAM,GAAAC,OAAqB;AAEpB,SAAMC,iBAAaA,CAAAC,QAAA,EAAAC,WAAA;EAMxB,MAAAD,QACmB,YACAC,WACjB;IAFiB,UAAAC,SAAA;EACA;AAEjB;AAAqD,SACvDC,kBAAAC,MAAA,EAAAC,KAAA;EAJmB,SAAAC,CAAA,MAAAA,CAAA,GAAAD,KAAA,CAAAE,MAAA,EAAAD,CAAA;IACA,IAAAE,UAAA,GAAAH,KAAA,CAAAC,CAAA;IAPFE,UAAU,CAAAC,UAAA,GAAAD,UAAyB,CAAAC,UAAA;IACnCD,UAAY,CAAAE,YAAA,OAAI;IAChB,eAAAF,UAAA,EAAAA,UAAA,CAAAG,QAAA;IACTC,MAAA,CAAAC,cAAW,CAAAT,MAAA,EAAAI,UAAA,CAAAM,GAAA,EAAAN,UAAA;EASnB;AAME;AACA,SAAAO,aAAWA,CAAAd,WAAA,EAAAe,UAAA,EAAAC,WAAa;EACxB,IAAAD,UAAM,EAAAb,iBAAoB,CAAAF,WAAa,CAAKiB,SAAK,EAAAF,UAAa;EAC9D,IAAAC,WAAW,EAAAd,iBAA2B,CAAAF,WAAW,EAAAgB,WAAA;EAC/C,OAAAhB,WAAM;AACN;AAEM,SACEkB,gBAAWA,CAAOC,GAAA,EAAIN,GAAA,EAAAvB,KAAQ,EAAI;EAA2C,IAAAuB,GAC7E,IAAAM,GAAA;IAAAR,MAEF,CAAAC,cAAA,CAAAO,GAAA,EAAAN,GAAA;MACNvB,KAAA;MACEkB,UAAI,EAAO;MACXC,YAAQ,MAAQ;MAClBC,QAAA;IACA;EACA;IACES,GAAA,CAAAN,GAAA,CAAI,GAAAvB,KAAQ;EACV;EACA,OAAA6B,GAAA;AAAA;AAEF,IAAAC,kBAAQ,GAAO;AAAiD,IAAA3B,YAClE;EACA,YAAK;;EAAsD,SAC5D4B,cAAAC,SAAA;IACH,IAAAC,KAAA;IAAA,IAAAC,IAAA,GAAAC,SAAA,CAAAnB,MAAA,QAAAmB,SAAA,iBAAAA,SAAA;IAGA3B,iBAAsC,OAAAuB,aAAA;IACpCH,gBAAe,KAAI,aAAO;IAC1BA,gBAAa;IACXA,gBAAK,CAAU,eAAc;IAC/BA,gBAAA;IACFA,gBAAA;IAAAA,gBAAA;IAGAA,gBAAgB;IACd,KAAKI,SAAA,GAAWA,SAAA;IAChB,KAAKE,IAAA,GAAAA,IAAA;IACL,KAAAE,OAAY,GAAG,eAAU,IAASC,GAAA;IAChC,IAAE,CAAAC,SAAQ,sBAAAC,GAAA;IACV,IAAE,CAAAC,QAAO,GAAI,KAAM;IACrB,KAAAC,SAAA,aAAAC,OAAA;MACA,IAAK,KAAApC,eAAc,CAAAqC,eAAA,EAAAD,OAAA;MACnB,IAAKA,OAAA,CAAAE,IAAU,KAAM;QACvB,KAAAF,OAAA,CAAAG,EAAA;QAEQ,IAAOC,CAAY,GAAAb,KAA4B,CAAAG,OAAoB,CAAAW,GAAA,CAAAL,OAAA,CAAAG,EAAA;QACzE,IAAM,CAAAC,CAAI;QACNb,KAAI,CAAAG,OAAA,CAAAY,MAAA,CAAAN,OAAA,CAAAG,EAAA;QACRC,CAAK,CAAAG,OAAQ;QACX,IAAAP,OAAQ,CAAAQ,KAAA,EAAAJ,CAAA,CAAAK,MAAA,CAAAC,OAAA,CAAAV,OAAA,CAAAQ,KAAA,QACHJ,CAAA,CAAAO,OAAK,CAAAX,OAAA,CAAAY,MAAA;QACd;MAEiB;MACf,IAAIZ,OAAC,CAAAE,IAAA,gBAAAF,OAAA,CAAgBa,MAAA,EAAO;QACxB,IAAAC,yBAAwB;UAAAC,iBAAA;UAAAC,cAAA;QAC1B,IAAK;UACL,KAAM,IAAIC,SAAK,GAAQC,KAAI,CAAAC,IAAQ,CAAA5B,KAAE,CAAAK,SAAA,EAAAwB,MAAA,CAAAC,QAAA,KAAAC,KAAA,IAAAR,yBAAA,IAAAQ,KAAA,GAAAL,SAAA,CAAAM,IAAA,IAAAC,IAAA,GAAAV,yBAAA;YAChC,IAAGW,CAAA,GAAAH,KAAA,CAAAhE,KAAA;YACHmE,CAAA,CAAAzB,OAAQ,CAAA0B,EAAA,EAAO1B,OAAA,CAAQa,MAAE,EAAAb,OAAA,CAAA2B,MAAA;UAC5B;QACF,EAAI,OAAAC,GAAQ;UACPb,iBAAU,GAAQ;UACvBC,cAAA,GAAAY,GAAA;QACF;UACI;YAEF,KAAWd,yBAAqB,IAAAG,SAAc,CAAAY,MAAQ,IAAI,MAAQ;cACpEZ,SAAA,CAAAY,MAAA;YAEF;UACF;YAES,IAAAd,iBAA+B;cAC1B,MAAIC,cAAe;YAC3B;UACG;QACT","ignoreList":[]}
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","BridgeClient_exports","__export","BridgeClient","module","exports","import_protocol","require","_class_call_check","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_create_class","protoProps","staticProps","prototype","_define_property","obj","DEFAULT_TIMEOUT_MS","BridgeClient2","transport","_this","opts","arguments","pending","Map","listeners","Set","disposed","onMessage","message","isBridgeMessage","kind","id","p","get","delete","cleanup","error","reject","toError","resolve","result","method","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Array","from","Symbol","iterator","_step","next","done","l","ns","params","err","return","unsubscribe","subscribe"],"sources":["../../../src/bridge/BridgeClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -46,12 +46,18 @@ class BridgeHost {
46
46
  params
47
47
  });
48
48
  }
49
- /** Tell native the host is initialized. */
49
+ /** Tell native the host is initialized, which protocol it speaks and what it serves. */
50
50
  ready() {
51
+ const namespaces = Array.from(/* @__PURE__ */new Set([...this.handlers.keys(), "sys"]));
52
+ const params = {
53
+ protocol: import_protocol.BRIDGE_PROTOCOL_VERSION,
54
+ namespaces
55
+ };
51
56
  this.transport.post({
52
57
  ns: "sys",
53
58
  kind: "event",
54
- method: "ready"
59
+ method: "ready",
60
+ params
55
61
  });
56
62
  }
57
63
  dispose() {
@@ -88,10 +94,12 @@ class BridgeHost {
88
94
  function toBridgeError(e) {
89
95
  if (e && typeof e === "object") {
90
96
  const o = e;
91
- return {
97
+ const error = {
92
98
  code: typeof o.code === "number" ? o.code : -32e3,
93
99
  message: typeof o.message === "string" ? o.message : String(e)
94
100
  };
101
+ if (o.data !== void 0) error.data = o.data;
102
+ return error;
95
103
  }
96
104
  return {
97
105
  code: -32e3,
@@ -119,13 +119,19 @@ var BridgeHost = /* @__PURE__ */function () {
119
119
  });
120
120
  }
121
121
  }, {
122
- /** Tell native the host is initialized. */
122
+ /** Tell native the host is initialized, which protocol it speaks and what it serves. */
123
123
  key: "ready",
124
124
  value: function ready() {
125
+ var namespaces = Array.from(/* @__PURE__ */new Set([...this.handlers.keys(), "sys"]));
126
+ var params = {
127
+ protocol: import_protocol.BRIDGE_PROTOCOL_VERSION,
128
+ namespaces
129
+ };
125
130
  this.transport.post({
126
131
  ns: "sys",
127
132
  kind: "event",
128
- method: "ready"
133
+ method: "ready",
134
+ params
129
135
  });
130
136
  }
131
137
  }, {
@@ -151,10 +157,12 @@ var BridgeHost = /* @__PURE__ */function () {
151
157
  function toBridgeError(e) {
152
158
  if (e && (typeof e === "undefined" ? "undefined" : _type_of(e)) === "object") {
153
159
  var o = e;
154
- return {
160
+ var error = {
155
161
  code: typeof o.code === "number" ? o.code : -32e3,
156
162
  message: typeof o.message === "string" ? o.message : String(e)
157
163
  };
164
+ if (o.data !== void 0) error.data = o.data;
165
+ return error;
158
166
  }
159
167
  return {
160
168
  code: -32e3,
@@ -1 +1 @@
1
- {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","BridgeHost_exports","__export","BridgeHost","module","exports","import_protocol","require","_class_call_check","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_create_class","protoProps","staticProps","prototype","_define_property","obj","_type_of","Symbol","constructor","BridgeHost2","transport","_this","handlers","Map"],"sources":["../../../src/bridge/BridgeHost.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,kBAAA;AAAAC,QAAA,CAAAD,kBAAA;EAAAE,UAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAT,YAAsF,CAAAK,kBAAA;AAgB/E,IAAAK,eAAiB,GAAAC,OAAA;AAAA,SAItBC,iBAAmDA,CAAAC,QAAA,EAAAC,WAAA;EAAtB,MAAAD,QAAA,YAAAC,WAAA;IAC3B,MAAK,IAAAC,SAAc,oCAAkC;EACvD;AAAA;AAF6B,SAHZC,iBAAWA,CAAAC,MAAI,EAAAC,KAA+B;EAC9C,SAAAC,CAAA,MAAAA,CAAA,GAAAD,KAAA,CAAAE,MAAA,EAAAD,CAAA;IAMjB,IAAAE,UAAwB,GAAAH,KAA+B,CAAAC,CAAA;IACrDE,UAAK,CAAAC,UAAa,GAAID,UAAO,CAAAC,UAAA;IAC/BD,UAAA,CAAAE,YAAA;IAAA,eAAAF,UAAA,EAAAA,UAAA,CAAAG,QAAA;IAGAC,MAAK,CAAeC,cAAgB,CAAAT,MAAwB,EAAAI,UAAA,CAAAM,GAAA,EAAAN,UAAA;EAC1D;AAAyD;AAC3D,SAAAO,cAAAd,WAAA,EAAAe,UAAA,EAAAC,WAAA;EAGA,IAAAD,UAAc,EAAAb,iBAAA,CAAAF,WAAA,CAAAiB,SAAA,EAAAF,UAAA;EACZ,IAAAC,WAAK,EAAUd,iBAAW,CAAOF,WAAM,EAAAgB,WAAiB;EAC1D,OAAAhB,WAAA;AAAA;AAGE,SAAKkB,gBAAYA,CAAAC,GAAA,EAAAN,GAAA,EAAAvB,KAAA;EACjB,IAAAuB,GAAK,IAAAM,GAAA,EAAS;IAChBR,MAAA,CAAAC,cAAA,CAAAO,GAAA,EAAAN,GAAA;MAEiBvB,KAAA;MACfkB,UAAK;MACHC,YAAA;MACFC,QAAQ,EAAI;IACZ;EACA,OAAK;IACHS,GAAA,CAAAN,GAAK,IAAAvB,KAAM;EACX;EAAA,OACF6B,GAAA;AACA;AAGwE,SAC1EC,SAAAD,GAAA;EAEQ,uBAAmD;;EACzD,OAAKA,GAAA,WAAUE,MAAO,KAAQ,WAAM,IAAOF,GAAA,CAAAG,WAAe,KAAAD,MAAA,qBAAAF,GAAA;AAAA;AAE9D,IAAA1B,UAAA;EAEA,YAAS;;EACP,SAAS8B,WAAOA,CAAAC,SAAM,EAAU;IAC9B,IAAAC,KAAM,GAAI;IACV3B,iBAAO,OAAAyB,WAAA;IAAAL,gBACQ,CAAE,iBAAS,OAAa;IAAOA,gBACnC,KAAS,YAAY;IAChCA,gBAAA;IACFA,gBAAA;IACA,KAAOM,SAAQ,GAAAA,SAAQ;IACzB,KAAAE,QAAA,sBAAAC,GAAA","ignoreList":[]}
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","BridgeHost_exports","__export","BridgeHost","module","exports","import_protocol","require","_class_call_check","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_create_class","protoProps","staticProps","prototype","_define_property","obj","_type_of","Symbol","constructor","BridgeHost2","transport","_this","handlers","Map","onMessage","message","isBridgeMessage","kind","id","method","ns","handler","get"],"sources":["../../../src/bridge/BridgeHost.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,kBAAA;AAAAC,QAAA,CAAAD,kBAAA;EAAAE,UAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAT,YAOO,CAAAK,kBAAA;AAgBA,IAAAK,eAAiB,GAAAC,OAAA;AAAA,SAItBC,iBAAmDA,CAAAC,QAAA,EAAAC,WAAA;EAAtB,MAAAD,QAAA,YAAAC,WAAA;IAC3B,MAAK,IAAAC,SAAc,oCAAkC;EACvD;AAAA;AAF6B,SAHZC,iBAAWA,CAAAC,MAAI,EAAAC,KAA+B;EAC9C,SAAAC,CAAA,MAAAA,CAAA,GAAAD,KAAA,CAAAE,MAAA,EAAAD,CAAA;IAMjB,IAAAE,UAAwB,GAAAH,KAA+B,CAAAC,CAAA;IACrDE,UAAK,CAAAC,UAAa,GAAID,UAAO,CAAAC,UAAA;IAC/BD,UAAA,CAAAE,YAAA;IAAA,eAAAF,UAAA,EAAAA,UAAA,CAAAG,QAAA;IAGAC,MAAK,CAAeC,cAAgB,CAAAT,MAAwB,EAAAI,UAAA,CAAAM,GAAA,EAAAN,UAAA;EAC1D;AAAyD;AAC3D,SAAAO,cAAAd,WAAA,EAAAe,UAAA,EAAAC,WAAA;EAGA,IAAAD,UAAc,EAAAb,iBAAA,CAAAF,WAAA,CAAAiB,SAAA,EAAAF,UAAA;EACZ,IAAAC,WAAM,EAAAd,iBAAwB,CAAAF,WAAA,EAAAgB,WAAoB,CAAG;EACrD,OAAAhB,WAA4B;AAC5B;AAAyE,SAC3EkB,iBAAAC,GAAA,EAAAN,GAAA,EAAAvB,KAAA;EAEA,IAAAuB,GAAA,IAAgBM,GAAA;IACdR,MAAK,CAAAC,cAAY,CAAAO,GAAA,EAAAN,GAAA;MACjBvB,KAAK;MACPkB,UAAA;MAEiBC,YAAa;MAC5BC,QAAK;IACH;EACF;IACAS,GAAA,CAAAN,GAAM,IAAAvB,KAAU;EAChB;EACE,OAAA6B,GAAK;AACL;AAAA,SACFC,SAAAD,GAAA;EACA,uBACG;;EAGL,OAAAA,GAAA,WAAAE,MAAA,oBAAAF,GAAA,CAAAG,WAAA,KAAAD,MAAA,qBAAAF,GAAA;AAAA;AAGE,IAAA1B,UAAK,kBAAyB,YAAM;EACtC;;EACF,SAAA8B,YAAAC,SAAA;IAEA,IAAAC,KAAS;IACP3B,iBAAgB,KAAM,EAAAyB,WAAU;IAC9BL,gBAAU;IACVA,gBAA2B;IAAAA,gBACZ,CAAE,mBAAS,EAAW,KAAE;IAAOA,gBACnC,KAAS,aAAY,SAAW;IAC3C,KAAAM,SAAA,GAAAA,SAAA;IACA,IAAI,CAAAE,QAAE,GAAS,eAAiB,IAAOC,GAAE;IACzC,KAAAC,SAAO,aAAAC,OAAA;MACT,SAAAjC,eAAA,CAAAkC,eAAA,EAAAD,OAAA,KAAAA,OAAA,CAAAE,IAAA,eAAAF,OAAA,CAAAG,EAAA,KAAAH,OAAA,CAAAI,MAAA;MACA,IAAO;QAAED,EAAA;QAAAE,EAAM;QAAAD;MAAQ,IAAAJ,OAAS;MAClC,IAAAM,OAAA,GAAAV,KAAA,CAAAC,QAAA,CAAAU,GAAA,CAAAF,EAAA","ignoreList":[]}
@@ -0,0 +1,61 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all) __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ return to;
19
+ };
20
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
+ value: true
22
+ }), mod);
23
+ var GpgBridge_exports = {};
24
+ __export(GpgBridge_exports, {
25
+ GpgBridge: () => GpgBridge
26
+ });
27
+ module.exports = __toCommonJS(GpgBridge_exports);
28
+ const GPG_TIMEOUT_MS = 15 * 6e4;
29
+ class GpgBridge {
30
+ constructor(bridge) {
31
+ this.bridge = bridge;
32
+ }
33
+ bridge;
34
+ /** Resolves with the armored signature followed by the armored public key. */
35
+ async signMessage(message, options = {}) {
36
+ const res = await this.bridge.request("gpg", "signMessage", {
37
+ message
38
+ }, {
39
+ timeoutMs: GPG_TIMEOUT_MS,
40
+ ...options
41
+ });
42
+ return res.signature;
43
+ }
44
+ /** Hand pasted terminal output to the pending request. Rejects when it does not cover its message. */
45
+ async submit(signature) {
46
+ await this.bridge.request("gpg", "submit", {
47
+ signature
48
+ });
49
+ }
50
+ async cancel() {
51
+ await this.bridge.request("gpg", "cancel");
52
+ }
53
+ /** Called with the pending request whenever one is parked, and with null when it settles. */
54
+ onPendingChanged(handler) {
55
+ return this.bridge.on((ns, method, params) => {
56
+ if (ns === "gpg" && method === "pendingChanged") {
57
+ handler(params?.request ?? null);
58
+ }
59
+ });
60
+ }
61
+ }