rise-wallet 0.1.4-beta.1 → 0.2.28

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 (486) hide show
  1. package/README.md +64 -34
  2. package/dist/cli/Dialog.d.ts +34 -0
  3. package/dist/cli/Dialog.js +60 -0
  4. package/dist/cli/Dialog.js.map +1 -0
  5. package/dist/cli/Messenger.d.ts +7 -0
  6. package/dist/cli/Messenger.js +123 -0
  7. package/dist/cli/Messenger.js.map +1 -0
  8. package/dist/cli/bin/commands-D7N5ucUu.js +50 -0
  9. package/dist/cli/bin/index.js +9 -0
  10. package/dist/cli/index.d.ts +2 -0
  11. package/dist/cli/index.js +3 -0
  12. package/dist/cli/index.js.map +1 -0
  13. package/dist/cli/internal/http.d.ts +6 -0
  14. package/dist/cli/internal/http.js +17 -0
  15. package/dist/cli/internal/http.js.map +1 -0
  16. package/dist/cli/tsdown.config.d.ts +2 -0
  17. package/dist/cli/tsdown.config.js +28 -0
  18. package/dist/cli/tsdown.config.js.map +1 -0
  19. package/dist/core/Chains.d.ts +210 -0
  20. package/dist/core/Chains.js +20 -0
  21. package/dist/core/Chains.js.map +1 -0
  22. package/dist/core/Dialog.d.ts +307 -0
  23. package/dist/core/Dialog.js +809 -0
  24. package/dist/core/Dialog.js.map +1 -0
  25. package/dist/core/Messenger.d.ts +164 -0
  26. package/dist/core/Messenger.js +207 -0
  27. package/dist/core/Messenger.js.map +1 -0
  28. package/dist/core/Mode.d.ts +4 -0
  29. package/dist/core/Mode.js +5 -0
  30. package/dist/core/Mode.js.map +1 -0
  31. package/dist/core/Porto.d.ts +1608 -0
  32. package/dist/core/Porto.js +105 -0
  33. package/dist/core/Porto.js.map +1 -0
  34. package/dist/core/RpcSchema.d.ts +81 -0
  35. package/dist/core/RpcSchema.js +2 -0
  36. package/dist/core/RpcSchema.js.map +1 -0
  37. package/dist/core/Storage.d.ts +14 -0
  38. package/dist/core/Storage.js +109 -0
  39. package/dist/core/Storage.js.map +1 -0
  40. package/dist/core/Transport.d.ts +22 -0
  41. package/dist/core/Transport.js +37 -0
  42. package/dist/core/Transport.js.map +1 -0
  43. package/dist/core/internal/_generated/chains.d.ts +1 -0
  44. package/dist/core/internal/_generated/chains.js +3 -0
  45. package/dist/core/internal/_generated/chains.js.map +1 -0
  46. package/dist/core/internal/_generated/contracts/IthacaAccount.d.ts +1120 -0
  47. package/dist/core/internal/_generated/contracts/IthacaAccount.js +1453 -0
  48. package/dist/core/internal/_generated/contracts/IthacaAccount.js.map +1 -0
  49. package/dist/core/internal/call.d.ts +163 -0
  50. package/dist/core/internal/call.js +115 -0
  51. package/dist/core/internal/call.js.map +1 -0
  52. package/dist/core/internal/erc8010.d.ts +17 -0
  53. package/dist/core/internal/erc8010.js +29 -0
  54. package/dist/core/internal/erc8010.js.map +1 -0
  55. package/dist/core/internal/intersectionObserver.d.ts +1 -0
  56. package/dist/core/internal/intersectionObserver.js +5 -0
  57. package/dist/core/internal/intersectionObserver.js.map +1 -0
  58. package/dist/core/internal/logger.d.ts +21 -0
  59. package/dist/core/internal/logger.js +24 -0
  60. package/dist/core/internal/logger.js.map +1 -0
  61. package/dist/core/internal/mode.d.ts +344 -0
  62. package/dist/core/internal/mode.js +110 -0
  63. package/dist/core/internal/mode.js.map +1 -0
  64. package/dist/core/internal/modes/dialog.d.ts +799 -0
  65. package/dist/core/internal/modes/dialog.js +760 -0
  66. package/dist/core/internal/modes/dialog.js.map +1 -0
  67. package/dist/core/internal/modes/reactNative.d.ts +1401 -0
  68. package/dist/core/internal/modes/reactNative.js +19 -0
  69. package/dist/core/internal/modes/reactNative.js.map +1 -0
  70. package/dist/core/internal/modes/relay.d.ts +684 -0
  71. package/dist/core/internal/modes/relay.js +708 -0
  72. package/dist/core/internal/modes/relay.js.map +1 -0
  73. package/dist/core/internal/permissions.d.ts +59 -0
  74. package/dist/core/internal/permissions.js +30 -0
  75. package/dist/core/internal/permissions.js.map +1 -0
  76. package/dist/core/internal/permissionsRequest.d.ts +71 -0
  77. package/dist/core/internal/permissionsRequest.js +58 -0
  78. package/dist/core/internal/permissionsRequest.js.map +1 -0
  79. package/dist/core/internal/porto.d.ts +13 -0
  80. package/dist/core/internal/porto.js +2 -0
  81. package/dist/core/internal/porto.js.map +1 -0
  82. package/dist/core/internal/promise.d.ts +8 -0
  83. package/dist/core/internal/promise.js +11 -0
  84. package/dist/core/internal/promise.js.map +1 -0
  85. package/dist/core/internal/provider.d.ts +29 -0
  86. package/dist/core/internal/provider.js +941 -0
  87. package/dist/core/internal/provider.js.map +1 -0
  88. package/dist/core/internal/relay/rpcSchema.d.ts +75 -0
  89. package/dist/core/internal/relay/rpcSchema.js +7 -0
  90. package/dist/core/internal/relay/rpcSchema.js.map +1 -0
  91. package/dist/core/internal/relay/schema/capabilities.d.ts +164 -0
  92. package/dist/core/internal/relay/schema/capabilities.js +112 -0
  93. package/dist/core/internal/relay/schema/capabilities.js.map +1 -0
  94. package/dist/core/internal/relay/schema/intent.d.ts +167 -0
  95. package/dist/core/internal/relay/schema/intent.js +170 -0
  96. package/dist/core/internal/relay/schema/intent.js.map +1 -0
  97. package/dist/core/internal/relay/schema/key.d.ts +43 -0
  98. package/dist/core/internal/relay/schema/key.js +30 -0
  99. package/dist/core/internal/relay/schema/key.js.map +1 -0
  100. package/dist/core/internal/relay/schema/permission.d.ts +39 -0
  101. package/dist/core/internal/relay/schema/permission.js +29 -0
  102. package/dist/core/internal/relay/schema/permission.js.map +1 -0
  103. package/dist/core/internal/relay/schema/preCall.d.ts +62 -0
  104. package/dist/core/internal/relay/schema/preCall.js +36 -0
  105. package/dist/core/internal/relay/schema/preCall.js.map +1 -0
  106. package/dist/core/internal/relay/schema/quotes.d.ts +369 -0
  107. package/dist/core/internal/relay/schema/quotes.js +89 -0
  108. package/dist/core/internal/relay/schema/quotes.js.map +1 -0
  109. package/dist/core/internal/relay/schema/rpc.d.ts +1528 -0
  110. package/dist/core/internal/relay/schema/rpc.js +638 -0
  111. package/dist/core/internal/relay/schema/rpc.js.map +1 -0
  112. package/dist/core/internal/relay/schema/token.d.ts +13 -0
  113. package/dist/core/internal/relay/schema/token.js +13 -0
  114. package/dist/core/internal/relay/schema/token.js.map +1 -0
  115. package/dist/core/internal/requiredFunds.d.ts +18 -0
  116. package/dist/core/internal/requiredFunds.js +25 -0
  117. package/dist/core/internal/requiredFunds.js.map +1 -0
  118. package/dist/core/internal/schema/capabilities.d.ts +313 -0
  119. package/dist/core/internal/schema/capabilities.js +133 -0
  120. package/dist/core/internal/schema/capabilities.js.map +1 -0
  121. package/dist/core/internal/schema/key.d.ts +164 -0
  122. package/dist/core/internal/schema/key.js +75 -0
  123. package/dist/core/internal/schema/key.js.map +1 -0
  124. package/dist/core/internal/schema/permissions.d.ts +102 -0
  125. package/dist/core/internal/schema/permissions.js +28 -0
  126. package/dist/core/internal/schema/permissions.js.map +1 -0
  127. package/dist/core/internal/schema/request.d.ts +937 -0
  128. package/dist/core/internal/schema/request.js +57 -0
  129. package/dist/core/internal/schema/request.js.map +1 -0
  130. package/dist/core/internal/schema/rpc.d.ts +3314 -0
  131. package/dist/core/internal/schema/rpc.js +599 -0
  132. package/dist/core/internal/schema/rpc.js.map +1 -0
  133. package/dist/core/internal/schema/token.d.ts +1 -0
  134. package/dist/core/internal/schema/token.js +2 -0
  135. package/dist/core/internal/schema/token.js.map +1 -0
  136. package/dist/core/internal/schema/utils.d.ts +18 -0
  137. package/dist/core/internal/schema/utils.js +213 -0
  138. package/dist/core/internal/schema/utils.js.map +1 -0
  139. package/dist/core/internal/siwe.d.ts +32 -0
  140. package/dist/core/internal/siwe.js +92 -0
  141. package/dist/core/internal/siwe.js.map +1 -0
  142. package/dist/core/internal/store.d.ts +2 -0
  143. package/dist/core/internal/store.js +9 -0
  144. package/dist/core/internal/store.js.map +1 -0
  145. package/dist/core/internal/tokens.d.ts +57 -0
  146. package/dist/core/internal/tokens.js +69 -0
  147. package/dist/core/internal/tokens.js.map +1 -0
  148. package/dist/core/internal/types.d.ts +298 -0
  149. package/dist/core/internal/types.js +2 -0
  150. package/dist/core/internal/types.js.map +1 -0
  151. package/dist/core/internal/urlString.d.ts +1 -0
  152. package/dist/core/internal/urlString.js +8 -0
  153. package/dist/core/internal/urlString.js.map +1 -0
  154. package/dist/core/internal/userAgent.d.ts +10 -0
  155. package/dist/core/internal/userAgent.js +19 -0
  156. package/dist/core/internal/userAgent.js.map +1 -0
  157. package/dist/core/internal/utils.d.ts +24 -0
  158. package/dist/core/internal/utils.js +62 -0
  159. package/dist/core/internal/utils.js.map +1 -0
  160. package/dist/core/react-native/Porto.d.ts +1480 -0
  161. package/dist/core/react-native/Porto.js +17 -0
  162. package/dist/core/react-native/Porto.js.map +1 -0
  163. package/dist/core/react-native/configure.d.ts +9 -0
  164. package/dist/core/react-native/configure.js +24 -0
  165. package/dist/core/react-native/configure.js.map +1 -0
  166. package/dist/core/react-native/environment.d.ts +26 -0
  167. package/dist/core/react-native/environment.js +13 -0
  168. package/dist/core/react-native/environment.js.map +1 -0
  169. package/dist/core/react-native/index.d.ts +4 -0
  170. package/dist/core/react-native/index.js +5 -0
  171. package/dist/core/react-native/index.js.map +1 -0
  172. package/dist/core/react-native/utils.d.ts +1 -0
  173. package/dist/core/react-native/utils.js +12 -0
  174. package/dist/core/react-native/utils.js.map +1 -0
  175. package/dist/index.d.ts +16 -2
  176. package/dist/index.js +15 -2
  177. package/dist/index.js.map +1 -0
  178. package/dist/internal/index.d.ts +3 -0
  179. package/dist/internal/index.js +4 -0
  180. package/dist/internal/index.js.map +1 -0
  181. package/dist/react-native/crypto.d.ts +1 -0
  182. package/dist/react-native/crypto.js +12 -0
  183. package/dist/react-native/crypto.js.map +1 -0
  184. package/dist/react-native/index.d.ts +7 -0
  185. package/dist/react-native/index.js +12 -0
  186. package/dist/react-native/index.js.map +1 -0
  187. package/dist/react-native/register.d.ts +2 -0
  188. package/dist/react-native/register.js +15 -0
  189. package/dist/react-native/register.js.map +1 -0
  190. package/dist/register/index.d.ts +14 -0
  191. package/dist/register/index.js +2 -0
  192. package/dist/register/index.js.map +1 -0
  193. package/dist/remote/Actions.d.ts +33 -0
  194. package/dist/remote/Actions.js +76 -0
  195. package/dist/remote/Actions.js.map +1 -0
  196. package/dist/remote/Events.d.ts +46 -0
  197. package/dist/remote/Events.js +132 -0
  198. package/dist/remote/Events.js.map +1 -0
  199. package/dist/remote/Hooks.d.ts +3800 -0
  200. package/dist/remote/Hooks.js +106 -0
  201. package/dist/remote/Hooks.js.map +1 -0
  202. package/dist/remote/Porto.d.ts +857 -0
  203. package/dist/remote/Porto.js +66 -0
  204. package/dist/remote/Porto.js.map +1 -0
  205. package/dist/remote/index.d.ts +4 -0
  206. package/dist/remote/index.js +5 -0
  207. package/dist/remote/index.js.map +1 -0
  208. package/dist/remote/internal/methodPolicies.d.ts +96 -0
  209. package/dist/remote/internal/methodPolicies.js +102 -0
  210. package/dist/remote/internal/methodPolicies.js.map +1 -0
  211. package/dist/server/Route.d.ts +87 -0
  212. package/dist/server/Route.js +189 -0
  213. package/dist/server/Route.js.map +1 -0
  214. package/dist/server/Router.d.ts +23 -0
  215. package/dist/server/Router.js +29 -0
  216. package/dist/server/Router.js.map +1 -0
  217. package/dist/server/index.d.ts +2 -0
  218. package/dist/server/index.js +3 -0
  219. package/dist/server/index.js.map +1 -0
  220. package/dist/server/internal/merchantSchema.d.ts +64 -0
  221. package/dist/server/internal/merchantSchema.js +7 -0
  222. package/dist/server/internal/merchantSchema.js.map +1 -0
  223. package/dist/server/internal/requestListener.d.ts +123 -0
  224. package/dist/server/internal/requestListener.js +172 -0
  225. package/dist/server/internal/requestListener.js.map +1 -0
  226. package/dist/theme/Theme.d.ts +121 -0
  227. package/dist/theme/Theme.js +18 -0
  228. package/dist/theme/Theme.js.map +1 -0
  229. package/dist/theme/index.d.ts +2 -0
  230. package/dist/theme/index.js +2 -0
  231. package/dist/theme/index.js.map +1 -0
  232. package/dist/trusted-hosts.d.ts +1 -0
  233. package/dist/trusted-hosts.js +41 -0
  234. package/dist/trusted-hosts.js.map +1 -0
  235. package/dist/viem/Account.d.ts +110 -0
  236. package/dist/viem/Account.js +132 -0
  237. package/dist/viem/Account.js.map +1 -0
  238. package/dist/viem/AccountActions.d.ts +10 -0
  239. package/dist/viem/AccountActions.js +14 -0
  240. package/dist/viem/AccountActions.js.map +1 -0
  241. package/dist/viem/CapabilitiesSchema.d.ts +14 -0
  242. package/dist/viem/CapabilitiesSchema.js +2 -0
  243. package/dist/viem/CapabilitiesSchema.js.map +1 -0
  244. package/dist/viem/ContractActions.d.ts +208 -0
  245. package/dist/viem/ContractActions.js +350 -0
  246. package/dist/viem/ContractActions.js.map +1 -0
  247. package/dist/viem/Key.d.ts +1155 -0
  248. package/dist/viem/Key.js +924 -0
  249. package/dist/viem/Key.js.map +1 -0
  250. package/dist/viem/RelayActions.d.ts +435 -0
  251. package/dist/viem/RelayActions.js +385 -0
  252. package/dist/viem/RelayActions.js.map +1 -0
  253. package/dist/viem/RelayClient.d.ts +26 -0
  254. package/dist/viem/RelayClient.js +44 -0
  255. package/dist/viem/RelayClient.js.map +1 -0
  256. package/dist/viem/RpcSchema.d.ts +22 -0
  257. package/dist/viem/RpcSchema.js +2 -0
  258. package/dist/viem/RpcSchema.js.map +1 -0
  259. package/dist/viem/WalletActions.d.ts +86 -0
  260. package/dist/viem/WalletActions.js +220 -0
  261. package/dist/viem/WalletActions.js.map +1 -0
  262. package/dist/viem/WalletClient.d.ts +20 -0
  263. package/dist/viem/WalletClient.js +23 -0
  264. package/dist/viem/WalletClient.js.map +1 -0
  265. package/dist/viem/index.d.ts +13 -0
  266. package/dist/viem/index.js +12 -0
  267. package/dist/viem/index.js.map +1 -0
  268. package/dist/viem/internal/relayActions.d.ts +364 -0
  269. package/dist/viem/internal/relayActions.js +783 -0
  270. package/dist/viem/internal/relayActions.js.map +1 -0
  271. package/dist/viem/internal/utils.d.ts +15 -0
  272. package/dist/viem/internal/utils.js +2 -0
  273. package/dist/viem/internal/utils.js.map +1 -0
  274. package/dist/wagmi/Actions.d.ts +1 -0
  275. package/dist/wagmi/Actions.js +2 -0
  276. package/dist/wagmi/Actions.js.map +1 -0
  277. package/dist/wagmi/Connector.d.ts +26 -0
  278. package/dist/wagmi/Connector.js +238 -0
  279. package/dist/wagmi/Connector.js.map +1 -0
  280. package/dist/wagmi/Hooks.d.ts +1 -0
  281. package/dist/wagmi/Hooks.js +2 -0
  282. package/dist/wagmi/Hooks.js.map +1 -0
  283. package/dist/wagmi/Query.d.ts +1 -0
  284. package/dist/wagmi/Query.js +2 -0
  285. package/dist/wagmi/Query.js.map +1 -0
  286. package/dist/wagmi/index.d.ts +4 -0
  287. package/dist/wagmi/index.js +5 -0
  288. package/dist/wagmi/index.js.map +1 -0
  289. package/dist/wagmi/internal/core.d.ts +83 -0
  290. package/dist/wagmi/internal/core.js +229 -0
  291. package/dist/wagmi/internal/core.js.map +1 -0
  292. package/dist/wagmi/internal/query.d.ts +32 -0
  293. package/dist/wagmi/internal/query.js +23 -0
  294. package/dist/wagmi/internal/query.js.map +1 -0
  295. package/dist/wagmi/internal/react.d.ts +90 -0
  296. package/dist/wagmi/internal/react.js +256 -0
  297. package/dist/wagmi/internal/react.js.map +1 -0
  298. package/dist/wagmi/internal/types.d.ts +10 -0
  299. package/dist/wagmi/internal/types.js +2 -0
  300. package/dist/wagmi/internal/types.js.map +1 -0
  301. package/dist/wagmi/internal/utils.d.ts +1 -0
  302. package/dist/wagmi/internal/utils.js +18 -0
  303. package/dist/wagmi/internal/utils.js.map +1 -0
  304. package/package.json +286 -34
  305. package/src/cli/Dialog.ts +75 -0
  306. package/src/cli/Messenger.ts +148 -0
  307. package/src/cli/bin/index.ts +37 -0
  308. package/src/cli/bin/tsconfig.json +8 -0
  309. package/src/cli/index.ts +2 -0
  310. package/src/cli/internal/commands.ts +212 -0
  311. package/src/cli/internal/context.ts +56 -0
  312. package/src/cli/internal/http.ts +28 -0
  313. package/src/cli/internal/utils.ts +28 -0
  314. package/src/cli/tsdown.config.ts +37 -0
  315. package/src/core/Chains.ts +25 -0
  316. package/src/core/Dialog.ts +1059 -0
  317. package/src/core/Messenger.ts +394 -0
  318. package/src/core/Mode.ts +4 -0
  319. package/src/core/Porto.ts +287 -0
  320. package/src/core/RpcSchema.ts +124 -0
  321. package/src/core/Storage.ts +122 -0
  322. package/src/core/Transport.ts +45 -0
  323. package/src/core/internal/_generated/chains.ts +2 -0
  324. package/src/core/internal/_generated/contracts/EIP7702Proxy.ts +25 -0
  325. package/src/core/internal/_generated/contracts/Escrow.ts +330 -0
  326. package/src/core/internal/_generated/contracts/ExperimentERC20.ts +569 -0
  327. package/src/core/internal/_generated/contracts/ExperimentERC721.ts +588 -0
  328. package/src/core/internal/_generated/contracts/GuardedExecutor.ts +623 -0
  329. package/src/core/internal/_generated/contracts/ICallChecker.ts +34 -0
  330. package/src/core/internal/_generated/contracts/ICommon.ts +4 -0
  331. package/src/core/internal/_generated/contracts/IEscrow.ts +114 -0
  332. package/src/core/internal/_generated/contracts/IFunder.ts +80 -0
  333. package/src/core/internal/_generated/contracts/IFunderV4.ts +45 -0
  334. package/src/core/internal/_generated/contracts/IIthacaAccount.ts +107 -0
  335. package/src/core/internal/_generated/contracts/IOAppCore.ts +142 -0
  336. package/src/core/internal/_generated/contracts/IOAppMsgInspector.ts +45 -0
  337. package/src/core/internal/_generated/contracts/IOAppReceiver.ts +161 -0
  338. package/src/core/internal/_generated/contracts/IOrchestrator.ts +95 -0
  339. package/src/core/internal/_generated/contracts/ISettler.ts +52 -0
  340. package/src/core/internal/_generated/contracts/ISigner.ts +34 -0
  341. package/src/core/internal/_generated/contracts/IthacaAccount.ts +1454 -0
  342. package/src/core/internal/_generated/contracts/IthacaAccountNew.ts +1454 -0
  343. package/src/core/internal/_generated/contracts/IthacaAccountOld.ts +1454 -0
  344. package/src/core/internal/_generated/contracts/LayerZeroSettler.ts +811 -0
  345. package/src/core/internal/_generated/contracts/LibNonce.ts +15 -0
  346. package/src/core/internal/_generated/contracts/LibTStack.ts +4 -0
  347. package/src/core/internal/_generated/contracts/MultiSigSigner.ts +203 -0
  348. package/src/core/internal/_generated/contracts/OApp.ts +412 -0
  349. package/src/core/internal/_generated/contracts/OAppCore.ts +229 -0
  350. package/src/core/internal/_generated/contracts/OAppReceiver.ts +396 -0
  351. package/src/core/internal/_generated/contracts/OAppSender.ts +245 -0
  352. package/src/core/internal/_generated/contracts/Orchestrator.ts +390 -0
  353. package/src/core/internal/_generated/contracts/SimpleFunder.ts +534 -0
  354. package/src/core/internal/_generated/contracts/SimpleSettler.ts +360 -0
  355. package/src/core/internal/_generated/contracts/Simulator.ts +170 -0
  356. package/src/core/internal/_generated/contracts/TokenTransferLib.ts +4 -0
  357. package/src/core/internal/_snapshots/provider.browser.test.ts.snap +119 -0
  358. package/src/core/internal/_snapshots/provider.test.ts.snap +1103 -0
  359. package/src/core/internal/call.test.ts +116 -0
  360. package/src/core/internal/call.ts +245 -0
  361. package/src/core/internal/erc8010.test.ts +74 -0
  362. package/src/core/internal/erc8010.ts +44 -0
  363. package/src/core/internal/intersectionObserver.ts +5 -0
  364. package/src/core/internal/logger.ts +42 -0
  365. package/src/core/internal/mode.ts +498 -0
  366. package/src/core/internal/modes/dialog.ts +1051 -0
  367. package/src/core/internal/modes/reactNative.ts +29 -0
  368. package/src/core/internal/modes/relay.ts +893 -0
  369. package/src/core/internal/permissions.ts +43 -0
  370. package/src/core/internal/permissionsRequest.ts +88 -0
  371. package/src/core/internal/porto.ts +16 -0
  372. package/src/core/internal/promise.ts +19 -0
  373. package/src/core/internal/provider.browser.test.ts +311 -0
  374. package/src/core/internal/provider.test.ts +3552 -0
  375. package/src/core/internal/provider.ts +1277 -0
  376. package/src/core/internal/relay/rpcSchema.ts +101 -0
  377. package/src/core/internal/relay/schema/capabilities.test.ts +663 -0
  378. package/src/core/internal/relay/schema/capabilities.ts +156 -0
  379. package/src/core/internal/relay/schema/intent.test.ts +433 -0
  380. package/src/core/internal/relay/schema/intent.ts +174 -0
  381. package/src/core/internal/relay/schema/key.test.ts +424 -0
  382. package/src/core/internal/relay/schema/key.ts +34 -0
  383. package/src/core/internal/relay/schema/permission.test.ts +499 -0
  384. package/src/core/internal/relay/schema/permission.ts +34 -0
  385. package/src/core/internal/relay/schema/preCall.ts +39 -0
  386. package/src/core/internal/relay/schema/quotes.test.ts +901 -0
  387. package/src/core/internal/relay/schema/quotes.ts +98 -0
  388. package/src/core/internal/relay/schema/rpc.ts +822 -0
  389. package/src/core/internal/relay/schema/token.ts +16 -0
  390. package/src/core/internal/requiredFunds.test.ts +141 -0
  391. package/src/core/internal/requiredFunds.ts +45 -0
  392. package/src/core/internal/schema/capabilities.test.ts +1334 -0
  393. package/src/core/internal/schema/capabilities.ts +162 -0
  394. package/src/core/internal/schema/key.test.ts +570 -0
  395. package/src/core/internal/schema/key.ts +98 -0
  396. package/src/core/internal/schema/permissions.test.ts +948 -0
  397. package/src/core/internal/schema/permissions.ts +31 -0
  398. package/src/core/internal/schema/request.bench.ts +35 -0
  399. package/src/core/internal/schema/request.ts +90 -0
  400. package/src/core/internal/schema/rpc.ts +821 -0
  401. package/src/core/internal/schema/token.ts +1 -0
  402. package/src/core/internal/schema/utils.test.ts +572 -0
  403. package/src/core/internal/schema/utils.ts +236 -0
  404. package/src/core/internal/siwe.test.ts +473 -0
  405. package/src/core/internal/siwe.ts +144 -0
  406. package/src/core/internal/store.ts +9 -0
  407. package/src/core/internal/tokens.test.ts +317 -0
  408. package/src/core/internal/tokens.ts +125 -0
  409. package/src/core/internal/types.ts +448 -0
  410. package/src/core/internal/urlString.ts +5 -0
  411. package/src/core/internal/userAgent.ts +35 -0
  412. package/src/core/internal/utils.test.ts +35 -0
  413. package/src/core/internal/utils.ts +67 -0
  414. package/src/core/react-native/Porto.ts +22 -0
  415. package/src/core/react-native/configure.ts +31 -0
  416. package/src/core/react-native/environment.ts +43 -0
  417. package/src/core/react-native/index.ts +4 -0
  418. package/src/core/react-native/utils.ts +18 -0
  419. package/src/index.ts +17 -0
  420. package/src/internal/index.ts +3 -0
  421. package/src/react-native/crypto.ts +19 -0
  422. package/src/react-native/index.ts +15 -0
  423. package/src/react-native/register.ts +24 -0
  424. package/src/register/index.ts +17 -0
  425. package/src/remote/Actions.ts +115 -0
  426. package/src/remote/Events.ts +193 -0
  427. package/src/remote/Hooks.ts +194 -0
  428. package/src/remote/Porto.ts +144 -0
  429. package/src/remote/index.ts +4 -0
  430. package/src/remote/internal/methodPolicies.ts +124 -0
  431. package/src/server/Route.test.ts +347 -0
  432. package/src/server/Route.ts +259 -0
  433. package/src/server/Router.test.ts +32 -0
  434. package/src/server/Router.ts +59 -0
  435. package/src/server/index.ts +2 -0
  436. package/src/server/internal/merchantSchema.ts +11 -0
  437. package/src/server/internal/requestListener.ts +284 -0
  438. package/src/theme/Theme.ts +163 -0
  439. package/src/theme/index.ts +2 -0
  440. package/src/trusted-hosts.ts +40 -0
  441. package/src/tsconfig.build.tsbuildinfo +1 -0
  442. package/src/tsconfig.json +15 -0
  443. package/src/viem/Account.test.ts +270 -0
  444. package/src/viem/Account.ts +278 -0
  445. package/src/viem/AccountActions.test.ts +3 -0
  446. package/src/viem/AccountActions.ts +30 -0
  447. package/src/viem/CapabilitiesSchema.ts +18 -0
  448. package/src/viem/ContractActions.test.ts +980 -0
  449. package/src/viem/ContractActions.ts +624 -0
  450. package/src/viem/Key.test.ts +1420 -0
  451. package/src/viem/Key.ts +1318 -0
  452. package/src/viem/RelayActions.test.ts +1730 -0
  453. package/src/viem/RelayActions.ts +1082 -0
  454. package/src/viem/RelayClient.test.ts +127 -0
  455. package/src/viem/RelayClient.ts +87 -0
  456. package/src/viem/RpcSchema.ts +27 -0
  457. package/src/viem/WalletActions.test.ts +646 -0
  458. package/src/viem/WalletActions.ts +476 -0
  459. package/src/viem/WalletClient.test.ts +36 -0
  460. package/src/viem/WalletClient.ts +74 -0
  461. package/src/viem/index.ts +13 -0
  462. package/src/viem/internal/relayActions.test.ts +1296 -0
  463. package/src/viem/internal/relayActions.ts +1222 -0
  464. package/src/viem/internal/utils.ts +27 -0
  465. package/src/wagmi/Actions.ts +13 -0
  466. package/src/wagmi/Connector.ts +304 -0
  467. package/src/wagmi/Hooks.ts +14 -0
  468. package/src/wagmi/Query.ts +5 -0
  469. package/src/wagmi/index.ts +4 -0
  470. package/src/wagmi/internal/core.test.ts +12 -0
  471. package/src/wagmi/internal/core.ts +468 -0
  472. package/src/wagmi/internal/query.ts +52 -0
  473. package/src/wagmi/internal/react.test.ts +12 -0
  474. package/src/wagmi/internal/react.ts +705 -0
  475. package/src/wagmi/internal/types.ts +21 -0
  476. package/src/wagmi/internal/utils.ts +25 -0
  477. package/dist/chain.cjs +0 -17
  478. package/dist/chain.d.cts +0 -41
  479. package/dist/chain.d.ts +0 -41
  480. package/dist/chain.js +0 -13
  481. package/dist/config.cjs +0 -19
  482. package/dist/config.d.cts +0 -3
  483. package/dist/config.d.ts +0 -3
  484. package/dist/config.js +0 -16
  485. package/dist/index.cjs +0 -18
  486. package/dist/index.d.cts +0 -2
@@ -0,0 +1,17 @@
1
+ import * as Mode from "../Mode.js";
2
+ import * as Porto from "../Porto.js";
3
+ export const defaultConfig = {
4
+ ...Porto.defaultConfig,
5
+ mode: Mode.reactNative(),
6
+ };
7
+ /**
8
+ * Instantiates a Porto instance with React Native mode.
9
+ */
10
+ export function create(parameters = {}) {
11
+ return Porto.create({
12
+ ...parameters,
13
+ mode: parameters.mode ?? defaultConfig.mode,
14
+ });
15
+ }
16
+ export { Porto };
17
+ //# sourceMappingURL=Porto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Porto.js","sourceRoot":"","sources":["../../../src/core/react-native/Porto.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,mBAAkB;AAClC,OAAO,KAAK,KAAK,oBAAmB;AAEpC,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,GAAG,KAAK,CAAC,aAAa;IACtB,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;CACgB,CAAA;AAE1C;;GAEG;AACH,MAAM,UAAU,MAAM,CACpB,aAAqD,EAAE;IAEvD,OAAO,KAAK,CAAC,MAAM,CAAC;QAClB,GAAG,UAAU;QACb,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,aAAa,CAAC,IAAI;KAC5C,CAAC,CAAA;AACJ,CAAC;AAED,OAAO,EAAE,KAAK,EAAE,CAAA"}
@@ -0,0 +1,9 @@
1
+ import * as AuthSession from 'expo-auth-session';
2
+ import * as WebBrowser from 'expo-web-browser';
3
+ import { type ReactNativeEnvironment } from "./environment.js";
4
+ export declare function configureReactNativeEnvironment(): ReactNativeEnvironment | {
5
+ dismissAuthSession(): void;
6
+ makeRedirectUri: typeof AuthSession.makeRedirectUri;
7
+ maybeCompleteAuthSession: typeof WebBrowser.maybeCompleteAuthSession;
8
+ openAuthSessionAsync: typeof WebBrowser.openAuthSessionAsync;
9
+ };
@@ -0,0 +1,24 @@
1
+ import * as AuthSession from 'expo-auth-session';
2
+ import * as WebBrowser from 'expo-web-browser';
3
+ import { Platform } from 'react-native';
4
+ import { isEnvironmentConfigured, reactNative, } from "./environment.js";
5
+ import { isReactNative } from "./utils.js";
6
+ export function configureReactNativeEnvironment() {
7
+ if (isEnvironmentConfigured())
8
+ return reactNative.environment;
9
+ WebBrowser.maybeCompleteAuthSession();
10
+ const environment = {
11
+ dismissAuthSession() {
12
+ if (Platform.OS !== 'android')
13
+ WebBrowser.dismissAuthSession();
14
+ },
15
+ makeRedirectUri: AuthSession.makeRedirectUri,
16
+ maybeCompleteAuthSession: WebBrowser.maybeCompleteAuthSession,
17
+ openAuthSessionAsync: WebBrowser.openAuthSessionAsync,
18
+ };
19
+ reactNative.environment = environment;
20
+ return environment;
21
+ }
22
+ if (isReactNative() && !isEnvironmentConfigured())
23
+ configureReactNativeEnvironment();
24
+ //# sourceMappingURL=configure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configure.js","sourceRoot":"","sources":["../../../src/core/react-native/configure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAEvC,OAAO,EACL,uBAAuB,EAEvB,WAAW,GACZ,yBAAwB;AACzB,OAAO,EAAE,aAAa,EAAE,mBAAkB;AAE1C,MAAM,UAAU,+BAA+B;IAC7C,IAAI,uBAAuB,EAAE;QAAE,OAAO,WAAW,CAAC,WAAW,CAAA;IAE7D,UAAU,CAAC,wBAAwB,EAAE,CAAA;IAErC,MAAM,WAAW,GAAG;QAClB,kBAAkB;YAChB,IAAI,QAAQ,CAAC,EAAE,KAAK,SAAS;gBAAE,UAAU,CAAC,kBAAkB,EAAE,CAAA;QAChE,CAAC;QACD,eAAe,EAAE,WAAW,CAAC,eAAe;QAC5C,wBAAwB,EAAE,UAAU,CAAC,wBAAwB;QAC7D,oBAAoB,EAAE,UAAU,CAAC,oBAAoB;KACrB,CAAA;IAElC,WAAW,CAAC,WAAW,GAAG,WAAW,CAAA;IACrC,OAAO,WAAW,CAAA;AACpB,CAAC;AAED,IAAI,aAAa,EAAE,IAAI,CAAC,uBAAuB,EAAE;IAC/C,+BAA+B,EAAE,CAAA"}
@@ -0,0 +1,26 @@
1
+ import type * as AuthSession from 'expo-auth-session';
2
+ import type * as WebBrowser from 'expo-web-browser';
3
+ export declare const isEnvironmentConfigured: () => boolean;
4
+ export declare const reactNative: {
5
+ environment: ReactNativeEnvironment;
6
+ };
7
+ export type AuthSessionOpenOptions = WebBrowser.AuthSessionOpenOptions;
8
+ export type ReactNativeEnvironment = {
9
+ redirectUri?: {
10
+ /**
11
+ * the app scheme, usually defined in `app.json` / `app.config.ts`
12
+ * run `npx uri-scheme list` to get your app's scheme
13
+ */
14
+ scheme: string;
15
+ /**
16
+ * the path to redirect to
17
+ *
18
+ * @default '/'
19
+ */
20
+ path?: string;
21
+ } | undefined;
22
+ makeRedirectUri: typeof AuthSession.makeRedirectUri;
23
+ openAuthSessionAsync: typeof WebBrowser.openAuthSessionAsync;
24
+ dismissAuthSession: typeof WebBrowser.dismissAuthSession;
25
+ maybeCompleteAuthSession?: typeof WebBrowser.maybeCompleteAuthSession;
26
+ };
@@ -0,0 +1,13 @@
1
+ let environment;
2
+ export const isEnvironmentConfigured = () => environment !== undefined;
3
+ export const reactNative = {
4
+ get environment() {
5
+ if (!environment)
6
+ throw new Error('React Native environment is not configured');
7
+ return environment;
8
+ },
9
+ set environment(env) {
10
+ environment = env;
11
+ },
12
+ };
13
+ //# sourceMappingURL=environment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.js","sourceRoot":"","sources":["../../../src/core/react-native/environment.ts"],"names":[],"mappings":"AAGA,IAAI,WAAmC,CAAA;AAEvC,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,EAAE,CAAC,WAAW,KAAK,SAAS,CAAA;AAEtE,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,IAAI,WAAW;QACb,IAAI,CAAC,WAAW;YACd,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;QAC/D,OAAO,WAAW,CAAA;IACpB,CAAC;IACD,IAAI,WAAW,CAAC,GAAG;QACjB,WAAW,GAAG,GAAG,CAAA;IACnB,CAAC;CAGF,CAAA"}
@@ -0,0 +1,4 @@
1
+ export * from "./configure.js";
2
+ export * from "./environment.js";
3
+ export * from "./Porto.js";
4
+ export * from "./utils.js";
@@ -0,0 +1,5 @@
1
+ export * from "./configure.js";
2
+ export * from "./environment.js";
3
+ export * from "./Porto.js";
4
+ export * from "./utils.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/react-native/index.ts"],"names":[],"mappings":"AAAA,+BAA8B;AAC9B,iCAAgC;AAChC,2BAA0B;AAC1B,2BAA0B"}
@@ -0,0 +1 @@
1
+ export declare function isReactNative(): boolean;
@@ -0,0 +1,12 @@
1
+ export function isReactNative() {
2
+ if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative')
3
+ return true;
4
+ if (typeof window !== 'undefined' &&
5
+ Object.hasOwn(window, 'ReactNativeWebView'))
6
+ return true;
7
+ if (typeof globalThis !== 'undefined' &&
8
+ Object.hasOwn(globalThis, 'HermesEngine'))
9
+ return true;
10
+ return false;
11
+ }
12
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/core/react-native/utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,aAAa;IAC3B,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,OAAO,KAAK,aAAa;QACzE,OAAO,IAAI,CAAA;IAEb,IACE,OAAO,MAAM,KAAK,WAAW;QAC7B,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC;QAE3C,OAAO,IAAI,CAAA;IAEb,IACE,OAAO,UAAU,KAAK,WAAW;QACjC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,cAAc,CAAC;QAEzC,OAAO,IAAI,CAAA;IAEb,OAAO,KAAK,CAAA;AACd,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,16 @@
1
- export * from "./chain.js";
2
- export * from "./config.js";
1
+ export * as Chains from "./core/Chains.js";
2
+ export * as Dialog from "./core/Dialog.js";
3
+ export {
4
+ /** @internal @deprecated export required for inference. */
5
+ from,
6
+ /** @internal @deprecated export required for inference. */
7
+ type Provider, } from "./core/internal/provider.js";
8
+ export * as Messenger from "./core/Messenger.js";
9
+ export * as Mode from "./core/Mode.js";
10
+ export * as Porto from "./core/Porto.js";
11
+ export * as RpcSchema from "./core/RpcSchema.js";
12
+ export * as Storage from "./core/Storage.js";
13
+ export * as Transport from "./core/Transport.js";
14
+ export * as Account from "./viem/Account.js";
15
+ export * as Key from "./viem/Key.js";
16
+ export * as RelayActions from "./viem/RelayActions.js";
package/dist/index.js CHANGED
@@ -1,2 +1,15 @@
1
- export * from "./chain.js";
2
- export * from "./config.js";
1
+ export * as Chains from "./core/Chains.js";
2
+ export * as Dialog from "./core/Dialog.js";
3
+ export {
4
+ /** @internal @deprecated export required for inference. */
5
+ from, } from "./core/internal/provider.js";
6
+ export * as Messenger from "./core/Messenger.js";
7
+ export * as Mode from "./core/Mode.js";
8
+ export * as Porto from "./core/Porto.js";
9
+ export * as RpcSchema from "./core/RpcSchema.js";
10
+ export * as Storage from "./core/Storage.js";
11
+ export * as Transport from "./core/Transport.js";
12
+ export * as Account from "./viem/Account.js";
13
+ export * as Key from "./viem/Key.js";
14
+ export * as RelayActions from "./viem/RelayActions.js";
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,yBAAwB;AAC1C,OAAO,KAAK,MAAM,yBAAwB;AAC1C,OAAO;AACL,2DAA2D;AAC3D,IAAI,GAGL,oCAAmC;AACpC,OAAO,KAAK,SAAS,4BAA2B;AAChD,OAAO,KAAK,IAAI,uBAAsB;AACtC,OAAO,KAAK,KAAK,wBAAuB;AACxC,OAAO,KAAK,SAAS,4BAA2B;AAChD,OAAO,KAAK,OAAO,0BAAyB;AAC5C,OAAO,KAAK,SAAS,4BAA2B;AAChD,OAAO,KAAK,OAAO,0BAAyB;AAC5C,OAAO,KAAK,GAAG,sBAAqB;AACpC,OAAO,KAAK,YAAY,+BAA8B"}
@@ -0,0 +1,3 @@
1
+ export * as z from 'zod/mini';
2
+ export * as Call from "../core/internal/call.js";
3
+ export * as TrustedHosts from "../trusted-hosts.js";
@@ -0,0 +1,4 @@
1
+ export * as z from 'zod/mini';
2
+ export * as Call from "../core/internal/call.js";
3
+ export * as TrustedHosts from "../trusted-hosts.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/internal/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,UAAU,CAAA;AAC7B,OAAO,KAAK,IAAI,iCAAgC;AAChD,OAAO,KAAK,YAAY,4BAA2B"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,12 @@
1
+ import * as ExpoCrypto from 'expo-crypto';
2
+ import { Platform } from 'react-native';
3
+ if (Platform.OS !== 'web')
4
+ Object.defineProperty(globalThis, 'crypto', {
5
+ enumerable: true,
6
+ value: {
7
+ digest: (algorithm, message) => ExpoCrypto.digest(algorithm, message),
8
+ getRandomValues: (array) => ExpoCrypto.getRandomValues(array),
9
+ randomUUID: () => ExpoCrypto.randomUUID(),
10
+ },
11
+ });
12
+ //# sourceMappingURL=crypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/react-native/crypto.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAEvC,IAAI,QAAQ,CAAC,EAAE,KAAK,KAAK;IACvB,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,QAAQ,EAAE;QAC1C,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE;YACL,MAAM,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC;YACrE,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC;YAC7D,UAAU,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE;SAQ1C;KACF,CAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * React Native entrypoint
3
+ * @see https://reactnative.dev/docs/platform-specific-code#native-specific-extensions-ie-sharing-code-with-nodejs-and-web
4
+ **/
5
+ export * as Mode from "../core/Mode.js";
6
+ export * from "../core/react-native/index.js";
7
+ export * as Porto from "../core/react-native/Porto.js";
@@ -0,0 +1,12 @@
1
+ import { isEnvironmentConfigured, isReactNative, } from "../core/react-native/index.js";
2
+ import { configure } from "./register.js";
3
+ if (isReactNative() && !isEnvironmentConfigured())
4
+ configure();
5
+ /**
6
+ * React Native entrypoint
7
+ * @see https://reactnative.dev/docs/platform-specific-code#native-specific-extensions-ie-sharing-code-with-nodejs-and-web
8
+ **/
9
+ export * as Mode from "../core/Mode.js";
10
+ export * from "../core/react-native/index.js";
11
+ export * as Porto from "../core/react-native/Porto.js";
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react-native/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,aAAa,GACd,sCAAqC;AACtC,OAAO,EAAE,SAAS,EAAE,sBAAqB;AAEzC,IAAI,aAAa,EAAE,IAAI,CAAC,uBAAuB,EAAE;IAAE,SAAS,EAAE,CAAA;AAE9D;;;IAGI;AACJ,OAAO,KAAK,IAAI,wBAAuB;AACvC,8CAA6C;AAC7C,OAAO,KAAK,KAAK,sCAAqC"}
@@ -0,0 +1,2 @@
1
+ import "./crypto.js";
2
+ export declare const configure: () => undefined;
@@ -0,0 +1,15 @@
1
+ import "./crypto.js";
2
+ import { isEnvironmentConfigured, isReactNative, } from "../core/react-native/index.js";
3
+ export const configure = () => void import("../core/react-native/configure.js")
4
+ .then(({ configureReactNativeEnvironment }) => configureReactNativeEnvironment())
5
+ .catch((error) => {
6
+ console.error([
7
+ '[porto:react-native] React Native environment not configured',
8
+ 'You need to import the configuration entrypoint at the top of your app',
9
+ "import 'porto/react-native/configure'",
10
+ 'then import `Porto` and the rest',
11
+ ].join('\n'), error);
12
+ });
13
+ if (isReactNative() && !isEnvironmentConfigured())
14
+ configure();
15
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/react-native/register.ts"],"names":[],"mappings":"AAAA,qBAAoB;AACpB,OAAO,EACL,uBAAuB,EACvB,aAAa,GACd,sCAAqC;AAEtC,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,EAAE,CAC5B,KAAK,MAAM,qCAAqC;KAC7C,IAAI,CAAC,CAAC,EAAE,+BAA+B,EAAE,EAAE,EAAE,CAC5C,+BAA+B,EAAE,CAClC;KACA,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACf,OAAO,CAAC,KAAK,CACX;QACE,8DAA8D;QAC9D,wEAAwE;QACxE,uCAAuC;QACvC,kCAAkC;KACnC,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,KAAK,CACN,CAAA;AACH,CAAC,CAAC,CAAA;AAEN,IAAI,aAAa,EAAE,IAAI,CAAC,uBAAuB,EAAE;IAAE,SAAS,EAAE,CAAA"}
@@ -0,0 +1,14 @@
1
+ import type { ValueOf } from 'viem';
2
+ import type * as Rpc from "../core/internal/schema/rpc.js";
3
+ declare module 'viem' {
4
+ interface Register {
5
+ CapabilitiesSchema: {
6
+ getCapabilities: {
7
+ ReturnType: ValueOf<Rpc.wallet_getCapabilities.Response_encoded>;
8
+ };
9
+ sendCalls: {
10
+ Request: Rpc.wallet_sendCalls.Capabilities_encoded;
11
+ };
12
+ };
13
+ }
14
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/register/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,33 @@
1
+ import * as Provider from 'ox/Provider';
2
+ import * as RpcResponse from 'ox/RpcResponse';
3
+ import type * as Porto from "../core/Porto.js";
4
+ import type * as Remote from "./Porto.js";
5
+ /**
6
+ * Action to reject an RPC request.
7
+ *
8
+ * @param porto - Porto instance.
9
+ * @param request - Request to reject.
10
+ * @param error - Error to reject with.
11
+ */
12
+ export declare function reject(porto: Pick<Remote.Porto<any>, 'messenger'>, request: Porto.QueuedRequest['request'], error?: Provider.ProviderRpcError | RpcResponse.BaseError | undefined): Promise<void>;
13
+ /**
14
+ * Action to reject all RPC requests.
15
+ *
16
+ * @param porto - Porto instance.
17
+ * @param error - Error to reject with.
18
+ */
19
+ export declare function rejectAll(porto: Pick<Remote.Porto<any>, 'messenger' | '_internal'>, error?: Provider.ProviderRpcError | RpcResponse.BaseError | undefined): Promise<void>;
20
+ /**
21
+ * Action to respond to an RPC request.
22
+ *
23
+ * @param porto - Porto instance.
24
+ * @param request - Request to respond to.
25
+ */
26
+ export declare function respond<result>(porto: Pick<Remote.Porto<any>, 'messenger' | 'provider'>, request: Porto.QueuedRequest['request'], options?: {
27
+ error?: RpcResponse.ErrorObject | undefined;
28
+ onError?: (error: RpcResponse.BaseError) => undefined | {
29
+ cancelResponse: boolean;
30
+ };
31
+ result?: result | undefined;
32
+ selector?: (result: result) => unknown;
33
+ }): Promise<unknown>;
@@ -0,0 +1,76 @@
1
+ import * as Provider from 'ox/Provider';
2
+ import * as RpcResponse from 'ox/RpcResponse';
3
+ /**
4
+ * Action to reject an RPC request.
5
+ *
6
+ * @param porto - Porto instance.
7
+ * @param request - Request to reject.
8
+ * @param error - Error to reject with.
9
+ */
10
+ export async function reject(porto, request, error) {
11
+ const error_ = error ?? new Provider.UserRejectedRequestError();
12
+ const { messenger } = porto;
13
+ messenger.send('rpc-response', Object.assign(RpcResponse.from({
14
+ error: {
15
+ code: error_.code,
16
+ message: error_.message,
17
+ },
18
+ id: request.id,
19
+ jsonrpc: '2.0',
20
+ }), {
21
+ _request: request,
22
+ }));
23
+ }
24
+ /**
25
+ * Action to reject all RPC requests.
26
+ *
27
+ * @param porto - Porto instance.
28
+ * @param error - Error to reject with.
29
+ */
30
+ export async function rejectAll(porto, error) {
31
+ const { _internal } = porto;
32
+ const requests = _internal.remoteStore.getState().requests;
33
+ for (const request of requests)
34
+ await reject(porto, request.request, error);
35
+ }
36
+ /**
37
+ * Action to respond to an RPC request.
38
+ *
39
+ * @param porto - Porto instance.
40
+ * @param request - Request to respond to.
41
+ */
42
+ export async function respond(porto, request, options) {
43
+ const { messenger, provider } = porto;
44
+ const { error, selector } = options ?? {};
45
+ const shared = {
46
+ id: request.id,
47
+ jsonrpc: '2.0',
48
+ };
49
+ if (error) {
50
+ messenger.send('rpc-response', Object.assign(RpcResponse.from({ ...shared, error, status: 'error' }), {
51
+ _request: request,
52
+ }));
53
+ return;
54
+ }
55
+ try {
56
+ let result = options?.result ?? (await provider.request(request));
57
+ if (selector)
58
+ result = selector(result);
59
+ messenger.send('rpc-response', Object.assign(RpcResponse.from({ ...shared, result }), {
60
+ _request: request,
61
+ }));
62
+ return result;
63
+ }
64
+ catch (e) {
65
+ const error = e;
66
+ if (options?.onError?.(error)?.cancelResponse === true)
67
+ // If the onError callback sets cancelResponse to true,
68
+ // we do not send a response.
69
+ return;
70
+ messenger.send('rpc-response', Object.assign(RpcResponse.from({ ...shared, error, status: 'error' }), {
71
+ _request: request,
72
+ }));
73
+ throw error;
74
+ }
75
+ }
76
+ //# sourceMappingURL=Actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Actions.js","sourceRoot":"","sources":["../../src/remote/Actions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import type * as Address from 'ox/Address';
2
+ import type * as Hex from 'ox/Hex';
3
+ import type { Payload } from "../core/Messenger.js";
4
+ import type * as Remote from "./Porto.js";
5
+ /**
6
+ * Event listener which is triggered when a request is ready
7
+ * to be handled by the dialog.
8
+ *
9
+ * @param porto - Porto instance.
10
+ * @param cb - Callback function.
11
+ * @returns Unsubscribe function.
12
+ */
13
+ export declare function onDialogRequest(porto: Pick<Remote.Porto<any>, '_internal' | 'methodPolicies' | 'messenger' | 'provider'>, cb: (payload: onDialogRequest.Payload) => void): () => void;
14
+ export declare namespace onDialogRequest {
15
+ type Payload = {
16
+ account?: {
17
+ address: Address.Address;
18
+ key?: {
19
+ credentialId?: string | undefined;
20
+ publicKey: Hex.Hex;
21
+ } | undefined;
22
+ } | undefined;
23
+ request: Remote.RemoteState['requests'][number]['request'] | null;
24
+ origin: string;
25
+ };
26
+ }
27
+ /**
28
+ * Event listener which is triggered when the remote context receives
29
+ * an initialization message from the parent context.
30
+ *
31
+ * @param porto - Porto instance.
32
+ * @param cb - Callback function.
33
+ * @returns Unsubscribe function.
34
+ */
35
+ export declare function onInitialized(porto: Pick<Remote.Porto<any>, 'messenger'>, cb: (payload: Extract<Payload<'__internal'>, {
36
+ type: 'init';
37
+ }>, event: MessageEvent) => void): () => void;
38
+ /**
39
+ * Event listener which is triggered when the remote context receives
40
+ * an RPC request from the parent context.
41
+ *
42
+ * @param porto - Porto instance.
43
+ * @param cb - Callback function.
44
+ * @returns Unsubscribe function.
45
+ */
46
+ export declare function onRequests(porto: Pick<Remote.Porto<any>, '_internal' | 'messenger'>, cb: (payload: Remote.RemoteState['requests'], event: MessageEvent) => void): () => void;
@@ -0,0 +1,132 @@
1
+ import * as Provider from 'ox/Provider';
2
+ import * as z from 'zod/mini';
3
+ import * as Rpc from "../core/internal/schema/rpc.js";
4
+ import * as Actions from "./Actions.js";
5
+ const trustedOrigins = ['id.porto.sh', 'localhost:5174', 'localhost:5173'];
6
+ /**
7
+ * Event listener which is triggered when a request is ready
8
+ * to be handled by the dialog.
9
+ *
10
+ * @param porto - Porto instance.
11
+ * @param cb - Callback function.
12
+ * @returns Unsubscribe function.
13
+ */
14
+ export function onDialogRequest(porto, cb) {
15
+ return onRequests(porto, (requests, event) => {
16
+ let account;
17
+ let request_dialog;
18
+ let requireConnection;
19
+ // Process the pending requests, as well as finding the first request
20
+ // that requires the dialog.
21
+ for (const r of requests) {
22
+ const { request } = r ?? {};
23
+ // If this request doesn't have a JSON-RPC request, skip it.
24
+ if (!request)
25
+ continue;
26
+ // If this request is a wallet_connect request, we need to make sure
27
+ // the provided chain ids are supported by the dialog.
28
+ if (request.method === 'wallet_connect') {
29
+ const params = z.decode(Rpc.wallet_connect.Parameters, request.params?.[0]);
30
+ // Extract chainIds that the app has requested.
31
+ const chainIds_app = params?.chainIds;
32
+ if (chainIds_app?.[0]) {
33
+ const chainIds = porto._internal.store.getState().chainIds;
34
+ // Find the first app chain that is supported by the dialog.
35
+ const chainId = chainIds_app.find((chainId) => chainIds.includes(chainId));
36
+ // If the requested chain is not supported, respond with an error.
37
+ if (!chainId) {
38
+ Actions.respond(porto, request, {
39
+ error: new Provider.UnsupportedChainIdError(),
40
+ }).catch(() => { });
41
+ continue;
42
+ }
43
+ // Update the dialog chainIds so that the app chain is the "active" chain.
44
+ porto._internal.store.setState((x) => ({
45
+ ...x,
46
+ chainIds: [chainId, ...x.chainIds.filter((x) => x !== chainId)],
47
+ }));
48
+ }
49
+ }
50
+ // Extract the method policy for this request. Method policies are
51
+ // used to determine if the request should be headless (bypassed), or
52
+ // if it is supported by the dialog.
53
+ const policy = porto.methodPolicies?.find((policy) => policy.method === request.method);
54
+ const shouldBypass = (() => {
55
+ if (!request)
56
+ return false;
57
+ const rule = policy?.modes?.headless;
58
+ if (rule) {
59
+ if (typeof rule === 'object' &&
60
+ rule.sameOrigin &&
61
+ event.origin !== window.location.origin)
62
+ return false;
63
+ return true;
64
+ }
65
+ return false;
66
+ })();
67
+ if (shouldBypass) {
68
+ Actions.respond(porto, request).catch(() => { });
69
+ continue;
70
+ }
71
+ const rule = policy?.modes?.dialog;
72
+ const shouldDialog = (() => {
73
+ if (!rule)
74
+ return true;
75
+ if (typeof rule === 'object' &&
76
+ rule.sameOrigin &&
77
+ event.origin !== window.location.origin)
78
+ return trustedOrigins.some((origin) => event.origin.endsWith(origin));
79
+ return rule;
80
+ })();
81
+ if (!shouldDialog) {
82
+ Actions.respond(porto, request, {
83
+ error: new Provider.UnsupportedMethodError(),
84
+ }).catch(() => { });
85
+ continue;
86
+ }
87
+ // If this requests requires a specific account, set it.
88
+ account ??= r.account;
89
+ // If this request requires an account connection, set it.
90
+ requireConnection ??= policy?.requireConnection ?? true;
91
+ // At this point, we know that this request should be handled by the dialog.
92
+ request_dialog ??= request;
93
+ }
94
+ cb({
95
+ account: requireConnection ? account : undefined,
96
+ origin: event.origin,
97
+ request: request_dialog ?? null,
98
+ });
99
+ });
100
+ }
101
+ /**
102
+ * Event listener which is triggered when the remote context receives
103
+ * an initialization message from the parent context.
104
+ *
105
+ * @param porto - Porto instance.
106
+ * @param cb - Callback function.
107
+ * @returns Unsubscribe function.
108
+ */
109
+ export function onInitialized(porto, cb) {
110
+ const { messenger } = porto;
111
+ return messenger.on('__internal', (payload, event) => {
112
+ if (payload.type === 'init')
113
+ cb(payload, event);
114
+ });
115
+ }
116
+ /**
117
+ * Event listener which is triggered when the remote context receives
118
+ * an RPC request from the parent context.
119
+ *
120
+ * @param porto - Porto instance.
121
+ * @param cb - Callback function.
122
+ * @returns Unsubscribe function.
123
+ */
124
+ export function onRequests(porto, cb) {
125
+ const { messenger, _internal } = porto;
126
+ return messenger.on('rpc-requests', (payload, event) => {
127
+ const requests = payload;
128
+ _internal.remoteStore.setState({ requests });
129
+ cb(requests, event);
130
+ });
131
+ }
132
+ //# sourceMappingURL=Events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Events.js","sourceRoot":"","sources":["../../src/remote/Events.ts"],"names":[],"mappings":"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"}