mppx 0.8.17 → 0.8.18

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 (914) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/README.md +15 -0
  3. package/dist/Challenge.js +21 -4
  4. package/dist/bin.js +3 -3
  5. package/dist/cli/THIRD-PARTY-LICENSES.txt +328 -0
  6. package/dist/cli/cli.js +253 -1505
  7. package/dist/cli/plugins/index.js +19 -5
  8. package/dist/cli/plugins/tempo.js +7 -3
  9. package/dist/cli/sessions/Manager.js +7 -4
  10. package/dist/cli/sessions/request.d.ts +2 -0
  11. package/dist/cli/sessions/request.js +18 -0
  12. package/dist/cli/sessions/store.js +28 -14
  13. package/dist/discovery/Discovery.js +2 -1
  14. package/dist/evm/client/Charge.js +8 -0
  15. package/dist/server/core.d.ts +9 -0
  16. package/dist/server/core.js +9 -0
  17. package/dist/stripe/server/Charge.js +2 -4
  18. package/dist/stripe/server/Methods.d.ts +2 -2
  19. package/dist/stripe/server/Methods.js +17 -11
  20. package/dist/stripe/server/internal/html.gen.d.ts +1 -1
  21. package/dist/stripe/server/internal/html.gen.js +1 -1
  22. package/dist/stripe/server/spt.d.ts +8 -0
  23. package/dist/stripe/server/spt.js +8 -0
  24. package/dist/tempo/Methods.d.ts +13 -0
  25. package/dist/tempo/Methods.js +14 -3
  26. package/dist/tempo/client/Charge.d.ts +3 -0
  27. package/dist/tempo/client/Charge.js +31 -9
  28. package/dist/tempo/client/Methods.d.ts +13 -0
  29. package/dist/tempo/internal/defaults.d.ts +11 -0
  30. package/dist/tempo/internal/defaults.js +11 -0
  31. package/dist/tempo/internal/machine-token-charge.d.ts +51 -0
  32. package/dist/tempo/internal/machine-token-charge.js +113 -0
  33. package/dist/tempo/internal/machine-token-session.d.ts +88 -0
  34. package/dist/tempo/internal/machine-token-session.js +173 -0
  35. package/dist/tempo/internal/signature-envelope.d.ts +14 -0
  36. package/dist/tempo/internal/signature-envelope.js +28 -0
  37. package/dist/tempo/legacy/client/ChannelOps.d.ts +2 -2
  38. package/dist/tempo/legacy/client/ChannelOps.js +11 -5
  39. package/dist/tempo/legacy/client/Session.d.ts +13 -1
  40. package/dist/tempo/legacy/client/Session.js +3 -3
  41. package/dist/tempo/legacy/client/SessionManager.d.ts +3 -1
  42. package/dist/tempo/legacy/client/SessionManager.js +2 -0
  43. package/dist/tempo/server/Charge.d.ts +3 -0
  44. package/dist/tempo/server/Charge.js +58 -17
  45. package/dist/tempo/server/Methods.d.ts +21 -4
  46. package/dist/tempo/server/Methods.js +8 -4
  47. package/dist/tempo/server/internal/html.gen.d.ts +1 -1
  48. package/dist/tempo/server/internal/html.gen.js +1 -1
  49. package/dist/tempo/session/client/ChannelOps.d.ts +18 -3
  50. package/dist/tempo/session/client/ChannelOps.js +35 -6
  51. package/dist/tempo/session/client/ChannelStore.d.ts +0 -5
  52. package/dist/tempo/session/client/ChannelStore.js +2 -2
  53. package/dist/tempo/session/client/CredentialState.d.ts +17 -2
  54. package/dist/tempo/session/client/CredentialState.js +77 -76
  55. package/dist/tempo/session/client/Runtime.d.ts +4 -2
  56. package/dist/tempo/session/client/Runtime.js +21 -5
  57. package/dist/tempo/session/client/Session.d.ts +15 -3
  58. package/dist/tempo/session/client/Session.js +186 -63
  59. package/dist/tempo/session/client/SessionManager.d.ts +3 -1
  60. package/dist/tempo/session/client/SessionManager.js +35 -11
  61. package/dist/tempo/session/client/Transports.d.ts +2 -0
  62. package/dist/tempo/session/client/Transports.js +12 -2
  63. package/dist/tempo/session/precompile/Chain.d.ts +10 -2
  64. package/dist/tempo/session/precompile/Chain.js +50 -10
  65. package/dist/tempo/session/precompile/Protocol.d.ts +15 -0
  66. package/dist/tempo/session/precompile/Protocol.js +7 -0
  67. package/dist/tempo/session/precompile/Voucher.d.ts +3 -1
  68. package/dist/tempo/session/precompile/Voucher.js +6 -12
  69. package/dist/tempo/session/server/ChannelStore.d.ts +6 -0
  70. package/dist/tempo/session/server/ChannelStore.js +11 -4
  71. package/dist/tempo/session/server/CredentialVerification.d.ts +11 -9
  72. package/dist/tempo/session/server/CredentialVerification.js +185 -109
  73. package/dist/tempo/session/server/MeteredStream.d.ts +1 -1
  74. package/dist/tempo/session/server/MeteredStream.js +5 -4
  75. package/dist/tempo/session/server/RequestState.d.ts +19 -0
  76. package/dist/tempo/session/server/RequestState.js +61 -15
  77. package/dist/tempo/session/server/Session.d.ts +14 -2
  78. package/dist/tempo/session/server/Session.js +37 -6
  79. package/dist/tempo/session/server/Settlement.d.ts +11 -4
  80. package/dist/tempo/session/server/Settlement.js +53 -21
  81. package/dist/x402/client/Exact.d.ts +8 -0
  82. package/dist/x402/client/Exact.js +40 -10
  83. package/dist/x402/server/EvmCharge.d.ts +22 -0
  84. package/dist/x402/server/EvmCharge.js +23 -1
  85. package/package.json +15 -37
  86. package/dist/BodyDigest.d.ts.map +0 -1
  87. package/dist/BodyDigest.js.map +0 -1
  88. package/dist/Challenge.d.ts.map +0 -1
  89. package/dist/Challenge.js.map +0 -1
  90. package/dist/Constants.d.ts.map +0 -1
  91. package/dist/Constants.js.map +0 -1
  92. package/dist/Credential.d.ts.map +0 -1
  93. package/dist/Credential.js.map +0 -1
  94. package/dist/Errors.d.ts.map +0 -1
  95. package/dist/Errors.js.map +0 -1
  96. package/dist/Expires.d.ts.map +0 -1
  97. package/dist/Expires.js.map +0 -1
  98. package/dist/Html.d.ts.map +0 -1
  99. package/dist/Html.js.map +0 -1
  100. package/dist/Mcp.d.ts.map +0 -1
  101. package/dist/Mcp.js.map +0 -1
  102. package/dist/Method.d.ts.map +0 -1
  103. package/dist/Method.js.map +0 -1
  104. package/dist/PaymentRequest.d.ts.map +0 -1
  105. package/dist/PaymentRequest.js.map +0 -1
  106. package/dist/Receipt.d.ts.map +0 -1
  107. package/dist/Receipt.js.map +0 -1
  108. package/dist/Store.d.ts.map +0 -1
  109. package/dist/Store.js.map +0 -1
  110. package/dist/attestation/Client.d.ts.map +0 -1
  111. package/dist/attestation/Client.js.map +0 -1
  112. package/dist/attestation/Constants.d.ts.map +0 -1
  113. package/dist/attestation/Constants.js.map +0 -1
  114. package/dist/attestation/Server.d.ts.map +0 -1
  115. package/dist/attestation/Server.js.map +0 -1
  116. package/dist/attestation/Types.d.ts.map +0 -1
  117. package/dist/attestation/Types.js.map +0 -1
  118. package/dist/attestation/index.d.ts.map +0 -1
  119. package/dist/attestation/index.js.map +0 -1
  120. package/dist/attestation/internal/HttpMessageSignature.d.ts.map +0 -1
  121. package/dist/attestation/internal/HttpMessageSignature.js.map +0 -1
  122. package/dist/attestation/internal/SigningContext.d.ts.map +0 -1
  123. package/dist/attestation/internal/SigningContext.js.map +0 -1
  124. package/dist/bin.d.ts.map +0 -1
  125. package/dist/bin.js.map +0 -1
  126. package/dist/cli/account.d.ts.map +0 -1
  127. package/dist/cli/account.js.map +0 -1
  128. package/dist/cli/cli.d.ts.map +0 -1
  129. package/dist/cli/cli.js.map +0 -1
  130. package/dist/cli/config.d.ts.map +0 -1
  131. package/dist/cli/config.js.map +0 -1
  132. package/dist/cli/internal.d.ts.map +0 -1
  133. package/dist/cli/internal.js.map +0 -1
  134. package/dist/cli/plugins/evm.d.ts.map +0 -1
  135. package/dist/cli/plugins/evm.js.map +0 -1
  136. package/dist/cli/plugins/index.d.ts.map +0 -1
  137. package/dist/cli/plugins/index.js.map +0 -1
  138. package/dist/cli/plugins/plugin.d.ts.map +0 -1
  139. package/dist/cli/plugins/plugin.js.map +0 -1
  140. package/dist/cli/plugins/stripe.d.ts.map +0 -1
  141. package/dist/cli/plugins/stripe.js.map +0 -1
  142. package/dist/cli/plugins/tempo.d.ts.map +0 -1
  143. package/dist/cli/plugins/tempo.js.map +0 -1
  144. package/dist/cli/sessions/Manager.d.ts.map +0 -1
  145. package/dist/cli/sessions/Manager.js.map +0 -1
  146. package/dist/cli/sessions/commands.d.ts.map +0 -1
  147. package/dist/cli/sessions/commands.js.map +0 -1
  148. package/dist/cli/sessions/request.d.ts.map +0 -1
  149. package/dist/cli/sessions/request.js.map +0 -1
  150. package/dist/cli/sessions/store.d.ts.map +0 -1
  151. package/dist/cli/sessions/store.js.map +0 -1
  152. package/dist/cli/utils.d.ts.map +0 -1
  153. package/dist/cli/utils.js.map +0 -1
  154. package/dist/cli/validate/challenge.d.ts.map +0 -1
  155. package/dist/cli/validate/challenge.js.map +0 -1
  156. package/dist/cli/validate/discovery.d.ts.map +0 -1
  157. package/dist/cli/validate/discovery.js.map +0 -1
  158. package/dist/cli/validate/helpers.d.ts.map +0 -1
  159. package/dist/cli/validate/helpers.js.map +0 -1
  160. package/dist/cli/validate/index.d.ts.map +0 -1
  161. package/dist/cli/validate/index.js.map +0 -1
  162. package/dist/cli/validate/messages.d.ts.map +0 -1
  163. package/dist/cli/validate/messages.js.map +0 -1
  164. package/dist/cli/validate/payment.d.ts.map +0 -1
  165. package/dist/cli/validate/payment.js.map +0 -1
  166. package/dist/client/Methods.d.ts.map +0 -1
  167. package/dist/client/Methods.js.map +0 -1
  168. package/dist/client/Mppx.d.ts.map +0 -1
  169. package/dist/client/Mppx.js.map +0 -1
  170. package/dist/client/Transport.d.ts.map +0 -1
  171. package/dist/client/Transport.js.map +0 -1
  172. package/dist/client/index.d.ts.map +0 -1
  173. package/dist/client/index.js.map +0 -1
  174. package/dist/client/internal/Fetch.d.ts.map +0 -1
  175. package/dist/client/internal/Fetch.js.map +0 -1
  176. package/dist/client/internal/MethodChallenge.d.ts.map +0 -1
  177. package/dist/client/internal/MethodChallenge.js.map +0 -1
  178. package/dist/client/internal/MethodResponse.d.ts.map +0 -1
  179. package/dist/client/internal/MethodResponse.js.map +0 -1
  180. package/dist/client/internal/protocols/Mcp.d.ts.map +0 -1
  181. package/dist/client/internal/protocols/Mcp.js.map +0 -1
  182. package/dist/client/internal/protocols/Mpp.d.ts.map +0 -1
  183. package/dist/client/internal/protocols/Mpp.js.map +0 -1
  184. package/dist/client/internal/protocols/Protocol.d.ts.map +0 -1
  185. package/dist/client/internal/protocols/Protocol.js.map +0 -1
  186. package/dist/client/internal/protocols/Shared.d.ts.map +0 -1
  187. package/dist/client/internal/protocols/Shared.js.map +0 -1
  188. package/dist/client/internal/protocols/X402.d.ts.map +0 -1
  189. package/dist/client/internal/protocols/X402.js.map +0 -1
  190. package/dist/client/node.d.ts.map +0 -1
  191. package/dist/client/node.js.map +0 -1
  192. package/dist/discovery/Discovery.d.ts.map +0 -1
  193. package/dist/discovery/Discovery.js.map +0 -1
  194. package/dist/discovery/OpenApi.d.ts.map +0 -1
  195. package/dist/discovery/OpenApi.js.map +0 -1
  196. package/dist/discovery/Validate.d.ts.map +0 -1
  197. package/dist/discovery/Validate.js.map +0 -1
  198. package/dist/discovery/index.d.ts.map +0 -1
  199. package/dist/discovery/index.js.map +0 -1
  200. package/dist/discovery/internal/Metadata.d.ts.map +0 -1
  201. package/dist/discovery/internal/Metadata.js.map +0 -1
  202. package/dist/evm/Assets.d.ts.map +0 -1
  203. package/dist/evm/Assets.js.map +0 -1
  204. package/dist/evm/Chains.d.ts.map +0 -1
  205. package/dist/evm/Chains.js.map +0 -1
  206. package/dist/evm/Methods.d.ts.map +0 -1
  207. package/dist/evm/Methods.js.map +0 -1
  208. package/dist/evm/Types.d.ts.map +0 -1
  209. package/dist/evm/Types.js.map +0 -1
  210. package/dist/evm/client/Charge.d.ts.map +0 -1
  211. package/dist/evm/client/Charge.js.map +0 -1
  212. package/dist/evm/client/Methods.d.ts.map +0 -1
  213. package/dist/evm/client/Methods.js.map +0 -1
  214. package/dist/evm/client/index.d.ts.map +0 -1
  215. package/dist/evm/client/index.js.map +0 -1
  216. package/dist/evm/index.d.ts.map +0 -1
  217. package/dist/evm/index.js.map +0 -1
  218. package/dist/evm/server/Charge.d.ts.map +0 -1
  219. package/dist/evm/server/Charge.js.map +0 -1
  220. package/dist/evm/server/Methods.d.ts.map +0 -1
  221. package/dist/evm/server/Methods.js.map +0 -1
  222. package/dist/evm/server/index.d.ts.map +0 -1
  223. package/dist/evm/server/index.js.map +0 -1
  224. package/dist/index.d.ts.map +0 -1
  225. package/dist/index.js.map +0 -1
  226. package/dist/internal/AcceptPayment.d.ts.map +0 -1
  227. package/dist/internal/AcceptPayment.js.map +0 -1
  228. package/dist/internal/HeaderCodec.d.ts.map +0 -1
  229. package/dist/internal/HeaderCodec.js.map +0 -1
  230. package/dist/internal/constantTimeEqual.d.ts.map +0 -1
  231. package/dist/internal/constantTimeEqual.js.map +0 -1
  232. package/dist/internal/env.d.ts.map +0 -1
  233. package/dist/internal/env.js.map +0 -1
  234. package/dist/internal/types.d.ts.map +0 -1
  235. package/dist/internal/types.js.map +0 -1
  236. package/dist/mcp/client/McpClient.d.ts.map +0 -1
  237. package/dist/mcp/client/McpClient.js.map +0 -1
  238. package/dist/mcp/client/index.d.ts.map +0 -1
  239. package/dist/mcp/client/index.js.map +0 -1
  240. package/dist/mcp/server/Transport.d.ts.map +0 -1
  241. package/dist/mcp/server/Transport.js.map +0 -1
  242. package/dist/mcp/server/index.d.ts.map +0 -1
  243. package/dist/mcp/server/index.js.map +0 -1
  244. package/dist/middlewares/elysia.d.ts.map +0 -1
  245. package/dist/middlewares/elysia.js.map +0 -1
  246. package/dist/middlewares/express.d.ts.map +0 -1
  247. package/dist/middlewares/express.js.map +0 -1
  248. package/dist/middlewares/hono.d.ts.map +0 -1
  249. package/dist/middlewares/hono.js.map +0 -1
  250. package/dist/middlewares/internal/mppx.d.ts.map +0 -1
  251. package/dist/middlewares/internal/mppx.js.map +0 -1
  252. package/dist/middlewares/nextjs.d.ts.map +0 -1
  253. package/dist/middlewares/nextjs.js.map +0 -1
  254. package/dist/proxy/Proxy.d.ts.map +0 -1
  255. package/dist/proxy/Proxy.js.map +0 -1
  256. package/dist/proxy/Service.d.ts.map +0 -1
  257. package/dist/proxy/Service.js.map +0 -1
  258. package/dist/proxy/index.d.ts.map +0 -1
  259. package/dist/proxy/index.js.map +0 -1
  260. package/dist/proxy/internal/Headers.d.ts.map +0 -1
  261. package/dist/proxy/internal/Headers.js.map +0 -1
  262. package/dist/proxy/internal/Route.d.ts.map +0 -1
  263. package/dist/proxy/internal/Route.js.map +0 -1
  264. package/dist/proxy/services/anthropic.d.ts.map +0 -1
  265. package/dist/proxy/services/anthropic.js.map +0 -1
  266. package/dist/proxy/services/openai.d.ts.map +0 -1
  267. package/dist/proxy/services/openai.js.map +0 -1
  268. package/dist/proxy/services/stripe.d.ts.map +0 -1
  269. package/dist/proxy/services/stripe.js.map +0 -1
  270. package/dist/server/Methods.d.ts.map +0 -1
  271. package/dist/server/Methods.js.map +0 -1
  272. package/dist/server/Mppx.d.ts.map +0 -1
  273. package/dist/server/Mppx.js.map +0 -1
  274. package/dist/server/NodeListener.d.ts.map +0 -1
  275. package/dist/server/NodeListener.js.map +0 -1
  276. package/dist/server/Request.d.ts.map +0 -1
  277. package/dist/server/Request.js.map +0 -1
  278. package/dist/server/Response.d.ts.map +0 -1
  279. package/dist/server/Response.js.map +0 -1
  280. package/dist/server/Transport.d.ts.map +0 -1
  281. package/dist/server/Transport.js.map +0 -1
  282. package/dist/server/index.d.ts.map +0 -1
  283. package/dist/server/index.js.map +0 -1
  284. package/dist/server/internal/html/compose.main.gen.d.ts.map +0 -1
  285. package/dist/server/internal/html/compose.main.gen.js.map +0 -1
  286. package/dist/server/internal/html/config.d.ts.map +0 -1
  287. package/dist/server/internal/html/config.js.map +0 -1
  288. package/dist/server/internal/html/constants.d.ts.map +0 -1
  289. package/dist/server/internal/html/constants.js.map +0 -1
  290. package/dist/server/internal/html/serviceWorker.client.d.ts.map +0 -1
  291. package/dist/server/internal/html/serviceWorker.client.js.map +0 -1
  292. package/dist/server/internal/html/serviceWorker.gen.d.ts.map +0 -1
  293. package/dist/server/internal/html/serviceWorker.gen.js.map +0 -1
  294. package/dist/server/internal/scope.d.ts.map +0 -1
  295. package/dist/server/internal/scope.js.map +0 -1
  296. package/dist/stripe/Methods.d.ts.map +0 -1
  297. package/dist/stripe/Methods.js.map +0 -1
  298. package/dist/stripe/client/Charge.d.ts.map +0 -1
  299. package/dist/stripe/client/Charge.js.map +0 -1
  300. package/dist/stripe/client/Methods.d.ts.map +0 -1
  301. package/dist/stripe/client/Methods.js.map +0 -1
  302. package/dist/stripe/client/index.d.ts.map +0 -1
  303. package/dist/stripe/client/index.js.map +0 -1
  304. package/dist/stripe/index.d.ts.map +0 -1
  305. package/dist/stripe/index.js.map +0 -1
  306. package/dist/stripe/internal/constants.d.ts.map +0 -1
  307. package/dist/stripe/internal/constants.js.map +0 -1
  308. package/dist/stripe/internal/types.d.ts.map +0 -1
  309. package/dist/stripe/internal/types.js.map +0 -1
  310. package/dist/stripe/server/Charge.d.ts.map +0 -1
  311. package/dist/stripe/server/Charge.js.map +0 -1
  312. package/dist/stripe/server/Methods.d.ts.map +0 -1
  313. package/dist/stripe/server/Methods.js.map +0 -1
  314. package/dist/stripe/server/index.d.ts.map +0 -1
  315. package/dist/stripe/server/index.js.map +0 -1
  316. package/dist/stripe/server/internal/deposit-address.d.ts.map +0 -1
  317. package/dist/stripe/server/internal/deposit-address.js.map +0 -1
  318. package/dist/stripe/server/internal/html/types.d.ts.map +0 -1
  319. package/dist/stripe/server/internal/html/types.js.map +0 -1
  320. package/dist/stripe/server/internal/html.gen.d.ts.map +0 -1
  321. package/dist/stripe/server/internal/html.gen.js.map +0 -1
  322. package/dist/stripe/server/internal/record-payment.d.ts.map +0 -1
  323. package/dist/stripe/server/internal/record-payment.js.map +0 -1
  324. package/dist/stripe/server/internal/request.d.ts.map +0 -1
  325. package/dist/stripe/server/internal/request.js.map +0 -1
  326. package/dist/tap/Constants.d.ts.map +0 -1
  327. package/dist/tap/Constants.js.map +0 -1
  328. package/dist/tap/Types.d.ts.map +0 -1
  329. package/dist/tap/Types.js.map +0 -1
  330. package/dist/tap/client/index.d.ts.map +0 -1
  331. package/dist/tap/client/index.js.map +0 -1
  332. package/dist/tap/index.d.ts.map +0 -1
  333. package/dist/tap/index.js.map +0 -1
  334. package/dist/tap/server/index.d.ts.map +0 -1
  335. package/dist/tap/server/index.js.map +0 -1
  336. package/dist/tempo/Attribution.d.ts.map +0 -1
  337. package/dist/tempo/Attribution.js.map +0 -1
  338. package/dist/tempo/Methods.d.ts.map +0 -1
  339. package/dist/tempo/Methods.js.map +0 -1
  340. package/dist/tempo/Proof.d.ts.map +0 -1
  341. package/dist/tempo/Proof.js.map +0 -1
  342. package/dist/tempo/client/Charge.d.ts.map +0 -1
  343. package/dist/tempo/client/Charge.js.map +0 -1
  344. package/dist/tempo/client/Methods.d.ts.map +0 -1
  345. package/dist/tempo/client/Methods.js.map +0 -1
  346. package/dist/tempo/client/ResolveAccount.d.ts.map +0 -1
  347. package/dist/tempo/client/ResolveAccount.js.map +0 -1
  348. package/dist/tempo/client/Subscription.d.ts.map +0 -1
  349. package/dist/tempo/client/Subscription.js.map +0 -1
  350. package/dist/tempo/client/index.d.ts.map +0 -1
  351. package/dist/tempo/client/index.js.map +0 -1
  352. package/dist/tempo/index.d.ts.map +0 -1
  353. package/dist/tempo/index.js.map +0 -1
  354. package/dist/tempo/internal/account.d.ts.map +0 -1
  355. package/dist/tempo/internal/account.js.map +0 -1
  356. package/dist/tempo/internal/address.d.ts.map +0 -1
  357. package/dist/tempo/internal/address.js.map +0 -1
  358. package/dist/tempo/internal/auto-swap.d.ts.map +0 -1
  359. package/dist/tempo/internal/auto-swap.js.map +0 -1
  360. package/dist/tempo/internal/charge.d.ts.map +0 -1
  361. package/dist/tempo/internal/charge.js.map +0 -1
  362. package/dist/tempo/internal/defaults.d.ts.map +0 -1
  363. package/dist/tempo/internal/defaults.js.map +0 -1
  364. package/dist/tempo/internal/fee-payer.d.ts.map +0 -1
  365. package/dist/tempo/internal/fee-payer.js.map +0 -1
  366. package/dist/tempo/internal/fee-token.d.ts.map +0 -1
  367. package/dist/tempo/internal/fee-token.js.map +0 -1
  368. package/dist/tempo/internal/proof.d.ts.map +0 -1
  369. package/dist/tempo/internal/proof.js.map +0 -1
  370. package/dist/tempo/internal/selectors.d.ts.map +0 -1
  371. package/dist/tempo/internal/selectors.js.map +0 -1
  372. package/dist/tempo/internal/types.d.ts.map +0 -1
  373. package/dist/tempo/internal/types.js.map +0 -1
  374. package/dist/tempo/legacy/client/ChannelOps.d.ts.map +0 -1
  375. package/dist/tempo/legacy/client/ChannelOps.js.map +0 -1
  376. package/dist/tempo/legacy/client/Session.d.ts.map +0 -1
  377. package/dist/tempo/legacy/client/Session.js.map +0 -1
  378. package/dist/tempo/legacy/client/SessionManager.d.ts.map +0 -1
  379. package/dist/tempo/legacy/client/SessionManager.js.map +0 -1
  380. package/dist/tempo/legacy/client/index.d.ts.map +0 -1
  381. package/dist/tempo/legacy/client/index.js.map +0 -1
  382. package/dist/tempo/legacy/index.d.ts.map +0 -1
  383. package/dist/tempo/legacy/index.js.map +0 -1
  384. package/dist/tempo/legacy/session/Chain.d.ts.map +0 -1
  385. package/dist/tempo/legacy/session/Chain.js.map +0 -1
  386. package/dist/tempo/legacy/session/Channel.d.ts.map +0 -1
  387. package/dist/tempo/legacy/session/Channel.js.map +0 -1
  388. package/dist/tempo/legacy/session/Types.d.ts.map +0 -1
  389. package/dist/tempo/legacy/session/Types.js.map +0 -1
  390. package/dist/tempo/legacy/session/Voucher.d.ts.map +0 -1
  391. package/dist/tempo/legacy/session/Voucher.js.map +0 -1
  392. package/dist/tempo/legacy/session/escrow.abi.d.ts.map +0 -1
  393. package/dist/tempo/legacy/session/escrow.abi.js.map +0 -1
  394. package/dist/tempo/legacy/session/index.d.ts.map +0 -1
  395. package/dist/tempo/legacy/session/index.js.map +0 -1
  396. package/dist/tempo/server/Charge.d.ts.map +0 -1
  397. package/dist/tempo/server/Charge.js.map +0 -1
  398. package/dist/tempo/server/Methods.d.ts.map +0 -1
  399. package/dist/tempo/server/Methods.js.map +0 -1
  400. package/dist/tempo/server/Relay.d.ts.map +0 -1
  401. package/dist/tempo/server/Relay.js.map +0 -1
  402. package/dist/tempo/server/SponsorBudget.d.ts.map +0 -1
  403. package/dist/tempo/server/SponsorBudget.js.map +0 -1
  404. package/dist/tempo/server/Subscription.d.ts.map +0 -1
  405. package/dist/tempo/server/Subscription.js.map +0 -1
  406. package/dist/tempo/server/index.d.ts.map +0 -1
  407. package/dist/tempo/server/index.js.map +0 -1
  408. package/dist/tempo/server/internal/html.gen.d.ts.map +0 -1
  409. package/dist/tempo/server/internal/html.gen.js.map +0 -1
  410. package/dist/tempo/server/internal/request-body.d.ts.map +0 -1
  411. package/dist/tempo/server/internal/request-body.js.map +0 -1
  412. package/dist/tempo/server/internal/transport.d.ts.map +0 -1
  413. package/dist/tempo/server/internal/transport.js.map +0 -1
  414. package/dist/tempo/session/Snapshot.d.ts.map +0 -1
  415. package/dist/tempo/session/Snapshot.js.map +0 -1
  416. package/dist/tempo/session/client/ChannelOps.d.ts.map +0 -1
  417. package/dist/tempo/session/client/ChannelOps.js.map +0 -1
  418. package/dist/tempo/session/client/ChannelStore.d.ts.map +0 -1
  419. package/dist/tempo/session/client/ChannelStore.js.map +0 -1
  420. package/dist/tempo/session/client/CredentialState.d.ts.map +0 -1
  421. package/dist/tempo/session/client/CredentialState.js.map +0 -1
  422. package/dist/tempo/session/client/ReceiptCoordinator.d.ts.map +0 -1
  423. package/dist/tempo/session/client/ReceiptCoordinator.js.map +0 -1
  424. package/dist/tempo/session/client/Runtime.d.ts.map +0 -1
  425. package/dist/tempo/session/client/Runtime.js.map +0 -1
  426. package/dist/tempo/session/client/Session.d.ts.map +0 -1
  427. package/dist/tempo/session/client/Session.js.map +0 -1
  428. package/dist/tempo/session/client/SessionManager.d.ts.map +0 -1
  429. package/dist/tempo/session/client/SessionManager.js.map +0 -1
  430. package/dist/tempo/session/client/Transports.d.ts.map +0 -1
  431. package/dist/tempo/session/client/Transports.js.map +0 -1
  432. package/dist/tempo/session/client/index.d.ts.map +0 -1
  433. package/dist/tempo/session/client/index.js.map +0 -1
  434. package/dist/tempo/session/client/internal/SessionManager.d.ts.map +0 -1
  435. package/dist/tempo/session/client/internal/SessionManager.js.map +0 -1
  436. package/dist/tempo/session/index.d.ts.map +0 -1
  437. package/dist/tempo/session/index.js.map +0 -1
  438. package/dist/tempo/session/precompile/Chain.d.ts.map +0 -1
  439. package/dist/tempo/session/precompile/Chain.js.map +0 -1
  440. package/dist/tempo/session/precompile/Channel.d.ts.map +0 -1
  441. package/dist/tempo/session/precompile/Channel.js.map +0 -1
  442. package/dist/tempo/session/precompile/Protocol.d.ts.map +0 -1
  443. package/dist/tempo/session/precompile/Protocol.js.map +0 -1
  444. package/dist/tempo/session/precompile/Voucher.d.ts.map +0 -1
  445. package/dist/tempo/session/precompile/Voucher.js.map +0 -1
  446. package/dist/tempo/session/precompile/escrow.abi.d.ts.map +0 -1
  447. package/dist/tempo/session/precompile/escrow.abi.js.map +0 -1
  448. package/dist/tempo/session/precompile/index.d.ts.map +0 -1
  449. package/dist/tempo/session/precompile/index.js.map +0 -1
  450. package/dist/tempo/session/server/ChannelOps.d.ts.map +0 -1
  451. package/dist/tempo/session/server/ChannelOps.js.map +0 -1
  452. package/dist/tempo/session/server/ChannelStore.d.ts.map +0 -1
  453. package/dist/tempo/session/server/ChannelStore.js.map +0 -1
  454. package/dist/tempo/session/server/CredentialVerification.d.ts.map +0 -1
  455. package/dist/tempo/session/server/CredentialVerification.js.map +0 -1
  456. package/dist/tempo/session/server/MeteredStream.d.ts.map +0 -1
  457. package/dist/tempo/session/server/MeteredStream.js.map +0 -1
  458. package/dist/tempo/session/server/RequestState.d.ts.map +0 -1
  459. package/dist/tempo/session/server/RequestState.js.map +0 -1
  460. package/dist/tempo/session/server/Session.d.ts.map +0 -1
  461. package/dist/tempo/session/server/Session.js.map +0 -1
  462. package/dist/tempo/session/server/Settlement.d.ts.map +0 -1
  463. package/dist/tempo/session/server/Settlement.js.map +0 -1
  464. package/dist/tempo/session/server/Sse.d.ts.map +0 -1
  465. package/dist/tempo/session/server/Sse.js.map +0 -1
  466. package/dist/tempo/session/server/Transports.d.ts.map +0 -1
  467. package/dist/tempo/session/server/Transports.js.map +0 -1
  468. package/dist/tempo/session/server/Ws.d.ts.map +0 -1
  469. package/dist/tempo/session/server/Ws.js.map +0 -1
  470. package/dist/tempo/session/server/index.d.ts.map +0 -1
  471. package/dist/tempo/session/server/index.js.map +0 -1
  472. package/dist/tempo/subscription/KeyAuthorization.d.ts.map +0 -1
  473. package/dist/tempo/subscription/KeyAuthorization.js.map +0 -1
  474. package/dist/tempo/subscription/Receipt.d.ts.map +0 -1
  475. package/dist/tempo/subscription/Receipt.js.map +0 -1
  476. package/dist/tempo/subscription/Store.d.ts.map +0 -1
  477. package/dist/tempo/subscription/Store.js.map +0 -1
  478. package/dist/tempo/subscription/Types.d.ts.map +0 -1
  479. package/dist/tempo/subscription/Types.js.map +0 -1
  480. package/dist/tempo/subscription/index.d.ts.map +0 -1
  481. package/dist/tempo/subscription/index.js.map +0 -1
  482. package/dist/validation/core.d.ts.map +0 -1
  483. package/dist/validation/core.js.map +0 -1
  484. package/dist/validation/index.d.ts.map +0 -1
  485. package/dist/validation/index.js.map +0 -1
  486. package/dist/viem/Account.d.ts.map +0 -1
  487. package/dist/viem/Account.js.map +0 -1
  488. package/dist/viem/Client.d.ts.map +0 -1
  489. package/dist/viem/Client.js.map +0 -1
  490. package/dist/web-bot-auth/Constants.d.ts.map +0 -1
  491. package/dist/web-bot-auth/Constants.js.map +0 -1
  492. package/dist/web-bot-auth/Types.d.ts.map +0 -1
  493. package/dist/web-bot-auth/Types.js.map +0 -1
  494. package/dist/web-bot-auth/client/index.d.ts.map +0 -1
  495. package/dist/web-bot-auth/client/index.js.map +0 -1
  496. package/dist/web-bot-auth/index.d.ts.map +0 -1
  497. package/dist/web-bot-auth/index.js.map +0 -1
  498. package/dist/web-bot-auth/internal/JwkThumbprint.d.ts.map +0 -1
  499. package/dist/web-bot-auth/internal/JwkThumbprint.js.map +0 -1
  500. package/dist/web-bot-auth/internal/SignatureAgent.d.ts.map +0 -1
  501. package/dist/web-bot-auth/internal/SignatureAgent.js.map +0 -1
  502. package/dist/web-bot-auth/server/index.d.ts.map +0 -1
  503. package/dist/web-bot-auth/server/index.js.map +0 -1
  504. package/dist/x402/Assets.d.ts.map +0 -1
  505. package/dist/x402/Assets.js.map +0 -1
  506. package/dist/x402/Header.d.ts.map +0 -1
  507. package/dist/x402/Header.js.map +0 -1
  508. package/dist/x402/Types.d.ts.map +0 -1
  509. package/dist/x402/Types.js.map +0 -1
  510. package/dist/x402/client/Exact.d.ts.map +0 -1
  511. package/dist/x402/client/Exact.js.map +0 -1
  512. package/dist/x402/index.d.ts.map +0 -1
  513. package/dist/x402/index.js.map +0 -1
  514. package/dist/x402/internal/ChallengeBrand.d.ts.map +0 -1
  515. package/dist/x402/internal/ChallengeBrand.js.map +0 -1
  516. package/dist/x402/internal/RouteBinding.d.ts.map +0 -1
  517. package/dist/x402/internal/RouteBinding.js.map +0 -1
  518. package/dist/x402/server/EvmCharge.d.ts.map +0 -1
  519. package/dist/x402/server/EvmCharge.js.map +0 -1
  520. package/dist/x402/server/Facilitator.d.ts.map +0 -1
  521. package/dist/x402/server/Facilitator.js.map +0 -1
  522. package/dist/zod.d.ts.map +0 -1
  523. package/dist/zod.js.map +0 -1
  524. package/src/BodyDigest.test.ts +0 -43
  525. package/src/BodyDigest.ts +0 -55
  526. package/src/Challenge.fuzz.test.ts +0 -154
  527. package/src/Challenge.test-d.ts +0 -82
  528. package/src/Challenge.test.ts +0 -1060
  529. package/src/Challenge.ts +0 -687
  530. package/src/Constants.ts +0 -58
  531. package/src/Credential.fuzz.test.ts +0 -62
  532. package/src/Credential.test.ts +0 -378
  533. package/src/Credential.ts +0 -217
  534. package/src/Errors.test.ts +0 -520
  535. package/src/Errors.ts +0 -448
  536. package/src/Expires.test.ts +0 -112
  537. package/src/Expires.ts +0 -59
  538. package/src/Html.ts +0 -67
  539. package/src/Mcp.ts +0 -85
  540. package/src/Method.test.ts +0 -177
  541. package/src/Method.ts +0 -631
  542. package/src/PaymentRequest.test.ts +0 -147
  543. package/src/PaymentRequest.ts +0 -108
  544. package/src/Receipt.test.ts +0 -151
  545. package/src/Receipt.ts +0 -146
  546. package/src/Store.test-d.ts +0 -211
  547. package/src/Store.test.ts +0 -407
  548. package/src/Store.ts +0 -397
  549. package/src/attestation/Attestation.integration.test.ts +0 -208
  550. package/src/attestation/Client.test.ts +0 -83
  551. package/src/attestation/Client.ts +0 -34
  552. package/src/attestation/Constants.ts +0 -15
  553. package/src/attestation/Server.test.ts +0 -60
  554. package/src/attestation/Server.ts +0 -12
  555. package/src/attestation/Types.test-d.ts +0 -54
  556. package/src/attestation/Types.ts +0 -77
  557. package/src/attestation/index.ts +0 -5
  558. package/src/attestation/internal/HttpMessageSignature.test.ts +0 -101
  559. package/src/attestation/internal/HttpMessageSignature.ts +0 -429
  560. package/src/attestation/internal/SigningContext.ts +0 -13
  561. package/src/bin.js +0 -2
  562. package/src/bin.ts +0 -4
  563. package/src/cli/account.ts +0 -269
  564. package/src/cli/cli.test.ts +0 -2221
  565. package/src/cli/cli.ts +0 -1650
  566. package/src/cli/config.test.ts +0 -89
  567. package/src/cli/config.ts +0 -50
  568. package/src/cli/internal.ts +0 -114
  569. package/src/cli/mcp.test.ts +0 -262
  570. package/src/cli/plugins/evm.ts +0 -55
  571. package/src/cli/plugins/index.ts +0 -4
  572. package/src/cli/plugins/plugin.ts +0 -84
  573. package/src/cli/plugins/stripe.ts +0 -174
  574. package/src/cli/plugins/tempo.ts +0 -1102
  575. package/src/cli/sessions/Manager.test.ts +0 -249
  576. package/src/cli/sessions/Manager.ts +0 -93
  577. package/src/cli/sessions/commands.ts +0 -444
  578. package/src/cli/sessions/request.test.ts +0 -51
  579. package/src/cli/sessions/request.ts +0 -353
  580. package/src/cli/sessions/store.test.ts +0 -581
  581. package/src/cli/sessions/store.ts +0 -940
  582. package/src/cli/utils.test.ts +0 -156
  583. package/src/cli/utils.ts +0 -394
  584. package/src/cli/validate/challenge.ts +0 -565
  585. package/src/cli/validate/discovery.test.ts +0 -435
  586. package/src/cli/validate/discovery.ts +0 -221
  587. package/src/cli/validate/helpers.ts +0 -166
  588. package/src/cli/validate/index.ts +0 -229
  589. package/src/cli/validate/messages.ts +0 -7
  590. package/src/cli/validate/payment.ts +0 -774
  591. package/src/cli/validate.test.ts +0 -843
  592. package/src/client/Methods.ts +0 -8
  593. package/src/client/Mppx.test-d.ts +0 -287
  594. package/src/client/Mppx.test.ts +0 -1065
  595. package/src/client/Mppx.ts +0 -487
  596. package/src/client/Transport.test.ts +0 -586
  597. package/src/client/Transport.ts +0 -170
  598. package/src/client/index.ts +0 -29
  599. package/src/client/internal/Fetch.browser.test.ts +0 -197
  600. package/src/client/internal/Fetch.test-d.ts +0 -109
  601. package/src/client/internal/Fetch.test.ts +0 -2336
  602. package/src/client/internal/Fetch.ts +0 -1075
  603. package/src/client/internal/MethodChallenge.ts +0 -35
  604. package/src/client/internal/MethodResponse.ts +0 -67
  605. package/src/client/internal/protocols/Mcp.test.ts +0 -220
  606. package/src/client/internal/protocols/Mcp.ts +0 -186
  607. package/src/client/internal/protocols/Mpp.ts +0 -21
  608. package/src/client/internal/protocols/Protocol.ts +0 -10
  609. package/src/client/internal/protocols/Shared.ts +0 -25
  610. package/src/client/internal/protocols/X402.ts +0 -46
  611. package/src/client/node.test.ts +0 -115
  612. package/src/client/node.ts +0 -247
  613. package/src/discovery/Discovery.test.ts +0 -214
  614. package/src/discovery/Discovery.ts +0 -105
  615. package/src/discovery/OpenApi.test.ts +0 -623
  616. package/src/discovery/OpenApi.ts +0 -192
  617. package/src/discovery/Validate.test.ts +0 -305
  618. package/src/discovery/Validate.ts +0 -77
  619. package/src/discovery/index.ts +0 -3
  620. package/src/discovery/internal/Metadata.ts +0 -51
  621. package/src/env.d.ts +0 -12
  622. package/src/evm/Assets.ts +0 -1
  623. package/src/evm/Chains.ts +0 -11
  624. package/src/evm/Methods.ts +0 -44
  625. package/src/evm/PublicInterface.test-d.ts +0 -134
  626. package/src/evm/Types.ts +0 -140
  627. package/src/evm/client/Charge.test.ts +0 -347
  628. package/src/evm/client/Charge.ts +0 -187
  629. package/src/evm/client/Methods.ts +0 -19
  630. package/src/evm/client/index.ts +0 -6
  631. package/src/evm/index.ts +0 -16
  632. package/src/evm/server/Charge.test.ts +0 -339
  633. package/src/evm/server/Charge.ts +0 -295
  634. package/src/evm/server/Methods.ts +0 -22
  635. package/src/evm/server/index.ts +0 -6
  636. package/src/index.ts +0 -14
  637. package/src/internal/AcceptPayment.test.ts +0 -347
  638. package/src/internal/AcceptPayment.ts +0 -366
  639. package/src/internal/HeaderCodec.ts +0 -36
  640. package/src/internal/changeset.test.ts +0 -106
  641. package/src/internal/constantTimeEqual.test.ts +0 -47
  642. package/src/internal/constantTimeEqual.ts +0 -10
  643. package/src/internal/env.test.ts +0 -42
  644. package/src/internal/env.ts +0 -49
  645. package/src/internal/types.test-d.ts +0 -21
  646. package/src/internal/types.ts +0 -479
  647. package/src/mcp/client/McpClient.integration.test.ts +0 -639
  648. package/src/mcp/client/McpClient.test-d.ts +0 -144
  649. package/src/mcp/client/McpClient.test.ts +0 -463
  650. package/src/mcp/client/McpClient.ts +0 -307
  651. package/src/mcp/client/McpClient.unit.test.ts +0 -135
  652. package/src/mcp/client/index.ts +0 -2
  653. package/src/mcp/server/Transport.test.ts +0 -191
  654. package/src/mcp/server/Transport.ts +0 -111
  655. package/src/mcp/server/index.ts +0 -1
  656. package/src/middlewares/elysia.test.ts +0 -285
  657. package/src/middlewares/elysia.ts +0 -116
  658. package/src/middlewares/express.test.ts +0 -361
  659. package/src/middlewares/express.ts +0 -140
  660. package/src/middlewares/hono.test.ts +0 -473
  661. package/src/middlewares/hono.ts +0 -153
  662. package/src/middlewares/internal/mppx.test.ts +0 -177
  663. package/src/middlewares/internal/mppx.ts +0 -67
  664. package/src/middlewares/nextjs.test.ts +0 -359
  665. package/src/middlewares/nextjs.ts +0 -107
  666. package/src/proxy/Proxy.test.ts +0 -1038
  667. package/src/proxy/Proxy.ts +0 -483
  668. package/src/proxy/Proxy.upstreamError.test.ts +0 -364
  669. package/src/proxy/Service.test.ts +0 -252
  670. package/src/proxy/Service.ts +0 -280
  671. package/src/proxy/index.ts +0 -6
  672. package/src/proxy/internal/Headers.test.ts +0 -139
  673. package/src/proxy/internal/Headers.ts +0 -66
  674. package/src/proxy/internal/Route.test.ts +0 -217
  675. package/src/proxy/internal/Route.ts +0 -64
  676. package/src/proxy/services/anthropic.test.ts +0 -132
  677. package/src/proxy/services/anthropic.ts +0 -53
  678. package/src/proxy/services/hooks.test-d.ts +0 -14
  679. package/src/proxy/services/hooks.test.ts +0 -44
  680. package/src/proxy/services/openai.test.ts +0 -157
  681. package/src/proxy/services/openai.ts +0 -60
  682. package/src/proxy/services/stripe.test.ts +0 -175
  683. package/src/proxy/services/stripe.ts +0 -59
  684. package/src/server/Methods.test-d.ts +0 -88
  685. package/src/server/Methods.test.ts +0 -69
  686. package/src/server/Methods.ts +0 -3
  687. package/src/server/Mppx.authorize.test.ts +0 -210
  688. package/src/server/Mppx.test-d.ts +0 -494
  689. package/src/server/Mppx.test.ts +0 -6711
  690. package/src/server/Mppx.ts +0 -2919
  691. package/src/server/NodeListener.test.ts +0 -293
  692. package/src/server/NodeListener.ts +0 -45
  693. package/src/server/Request.test.ts +0 -255
  694. package/src/server/Request.ts +0 -155
  695. package/src/server/Response.test.ts +0 -32
  696. package/src/server/Response.ts +0 -45
  697. package/src/server/Transport.test.ts +0 -598
  698. package/src/server/Transport.ts +0 -320
  699. package/src/server/index.ts +0 -9
  700. package/src/server/internal/html/compose.main.gen.ts +0 -2
  701. package/src/server/internal/html/compose.main.ts +0 -88
  702. package/src/server/internal/html/config.ts +0 -672
  703. package/src/server/internal/html/constants.ts +0 -28
  704. package/src/server/internal/html/serviceWorker.client.ts +0 -28
  705. package/src/server/internal/html/serviceWorker.gen.ts +0 -2
  706. package/src/server/internal/html/serviceWorker.ts +0 -27
  707. package/src/server/internal/html/tsconfig.compose.json +0 -8
  708. package/src/server/internal/html/tsconfig.worker.client.json +0 -8
  709. package/src/server/internal/html/tsconfig.worker.json +0 -8
  710. package/src/server/internal/scope.ts +0 -43
  711. package/src/stripe/Charge.integration.test.ts +0 -329
  712. package/src/stripe/Methods.test.ts +0 -62
  713. package/src/stripe/Methods.ts +0 -44
  714. package/src/stripe/client/Charge.test.ts +0 -205
  715. package/src/stripe/client/Charge.ts +0 -132
  716. package/src/stripe/client/Methods.ts +0 -37
  717. package/src/stripe/client/index.ts +0 -2
  718. package/src/stripe/index.ts +0 -1
  719. package/src/stripe/internal/constants.ts +0 -7
  720. package/src/stripe/internal/types.ts +0 -47
  721. package/src/stripe/server/Charge.test-d.ts +0 -81
  722. package/src/stripe/server/Charge.test.ts +0 -700
  723. package/src/stripe/server/Charge.ts +0 -487
  724. package/src/stripe/server/Methods.test-d.ts +0 -157
  725. package/src/stripe/server/Methods.test.ts +0 -403
  726. package/src/stripe/server/Methods.ts +0 -441
  727. package/src/stripe/server/index.ts +0 -2
  728. package/src/stripe/server/internal/deposit-address.ts +0 -57
  729. package/src/stripe/server/internal/html/main.ts +0 -165
  730. package/src/stripe/server/internal/html/node_modules/.bin/mppx +0 -22
  731. package/src/stripe/server/internal/html/node_modules/.bin/mppx.src +0 -22
  732. package/src/stripe/server/internal/html/package.json +0 -9
  733. package/src/stripe/server/internal/html/stripe-js-pure.d.ts +0 -7
  734. package/src/stripe/server/internal/html/tsconfig.json +0 -8
  735. package/src/stripe/server/internal/html/types.ts +0 -5
  736. package/src/stripe/server/internal/html.gen.ts +0 -2
  737. package/src/stripe/server/internal/record-payment.ts +0 -66
  738. package/src/stripe/server/internal/request.ts +0 -49
  739. package/src/tap/Constants.ts +0 -32
  740. package/src/tap/Tap.test.ts +0 -125
  741. package/src/tap/Types.ts +0 -11
  742. package/src/tap/client/index.ts +0 -54
  743. package/src/tap/index.ts +0 -4
  744. package/src/tap/server/index.ts +0 -48
  745. package/src/tempo/AccessKeyAuthorization.test.ts +0 -141
  746. package/src/tempo/Attribution.test.ts +0 -294
  747. package/src/tempo/Attribution.ts +0 -185
  748. package/src/tempo/Methods.test.ts +0 -425
  749. package/src/tempo/Methods.ts +0 -367
  750. package/src/tempo/Proof.conformance.test.ts +0 -146
  751. package/src/tempo/Proof.test-d.ts +0 -32
  752. package/src/tempo/Proof.test.ts +0 -40
  753. package/src/tempo/Proof.ts +0 -69
  754. package/src/tempo/PublicExports.test-d.ts +0 -130
  755. package/src/tempo/Subscription.integration.test.ts +0 -591
  756. package/src/tempo/client/Charge.test.ts +0 -501
  757. package/src/tempo/client/Charge.ts +0 -271
  758. package/src/tempo/client/Methods.ts +0 -45
  759. package/src/tempo/client/ResolveAccount.ts +0 -46
  760. package/src/tempo/client/Subscription.test.ts +0 -180
  761. package/src/tempo/client/Subscription.ts +0 -156
  762. package/src/tempo/client/index.ts +0 -17
  763. package/src/tempo/index.ts +0 -5
  764. package/src/tempo/internal/account.ts +0 -56
  765. package/src/tempo/internal/address.test.ts +0 -42
  766. package/src/tempo/internal/address.ts +0 -6
  767. package/src/tempo/internal/auto-swap.test.ts +0 -198
  768. package/src/tempo/internal/auto-swap.ts +0 -145
  769. package/src/tempo/internal/charge.test.ts +0 -66
  770. package/src/tempo/internal/charge.ts +0 -43
  771. package/src/tempo/internal/defaults.test.ts +0 -95
  772. package/src/tempo/internal/defaults.ts +0 -53
  773. package/src/tempo/internal/fee-payer.test.ts +0 -1177
  774. package/src/tempo/internal/fee-payer.ts +0 -808
  775. package/src/tempo/internal/fee-token.test.ts +0 -165
  776. package/src/tempo/internal/fee-token.ts +0 -72
  777. package/src/tempo/internal/proof.test.ts +0 -97
  778. package/src/tempo/internal/proof.ts +0 -87
  779. package/src/tempo/internal/selectors.ts +0 -10
  780. package/src/tempo/internal/types.ts +0 -19
  781. package/src/tempo/legacy/AccessKeyAuthorization.test.ts +0 -162
  782. package/src/tempo/legacy/README.md +0 -9
  783. package/src/tempo/legacy/client/ChannelOps.test.ts +0 -379
  784. package/src/tempo/legacy/client/ChannelOps.ts +0 -271
  785. package/src/tempo/legacy/client/Session.test.ts +0 -800
  786. package/src/tempo/legacy/client/Session.ts +0 -397
  787. package/src/tempo/legacy/client/SessionManager.test.ts +0 -468
  788. package/src/tempo/legacy/client/SessionManager.ts +0 -909
  789. package/src/tempo/legacy/client/index.ts +0 -6
  790. package/src/tempo/legacy/index.ts +0 -4
  791. package/src/tempo/legacy/session/Chain.test.ts +0 -1349
  792. package/src/tempo/legacy/session/Chain.ts +0 -830
  793. package/src/tempo/legacy/session/Channel.test.ts +0 -109
  794. package/src/tempo/legacy/session/Channel.ts +0 -51
  795. package/src/tempo/legacy/session/Types.ts +0 -91
  796. package/src/tempo/legacy/session/Voucher.test.ts +0 -410
  797. package/src/tempo/legacy/session/Voucher.ts +0 -183
  798. package/src/tempo/legacy/session/escrow.abi.ts +0 -760
  799. package/src/tempo/legacy/session/index.ts +0 -8
  800. package/src/tempo/server/AtomicStore.test-d.ts +0 -63
  801. package/src/tempo/server/Charge.test.ts +0 -6056
  802. package/src/tempo/server/Charge.ts +0 -1379
  803. package/src/tempo/server/Methods.ts +0 -86
  804. package/src/tempo/server/Relay.test.ts +0 -677
  805. package/src/tempo/server/Relay.ts +0 -297
  806. package/src/tempo/server/SponsorBudget.test.ts +0 -154
  807. package/src/tempo/server/SponsorBudget.ts +0 -219
  808. package/src/tempo/server/Sse.test.ts +0 -321
  809. package/src/tempo/server/Subscription.test.ts +0 -1944
  810. package/src/tempo/server/Subscription.ts +0 -1336
  811. package/src/tempo/server/index.ts +0 -12
  812. package/src/tempo/server/internal/html/main.ts +0 -115
  813. package/src/tempo/server/internal/html/node_modules/.bin/mppx +0 -22
  814. package/src/tempo/server/internal/html/node_modules/.bin/mppx.src +0 -22
  815. package/src/tempo/server/internal/html/package.json +0 -10
  816. package/src/tempo/server/internal/html/tsconfig.json +0 -8
  817. package/src/tempo/server/internal/html.gen.ts +0 -2
  818. package/src/tempo/server/internal/request-body.test.ts +0 -210
  819. package/src/tempo/server/internal/request-body.ts +0 -61
  820. package/src/tempo/server/internal/transport.test.ts +0 -922
  821. package/src/tempo/server/internal/transport.ts +0 -322
  822. package/src/tempo/session/README.md +0 -320
  823. package/src/tempo/session/Snapshot.test.ts +0 -41
  824. package/src/tempo/session/Snapshot.ts +0 -95
  825. package/src/tempo/session/client/ChannelOps.test.ts +0 -218
  826. package/src/tempo/session/client/ChannelOps.ts +0 -348
  827. package/src/tempo/session/client/ChannelStore.ts +0 -111
  828. package/src/tempo/session/client/CredentialState.test.ts +0 -789
  829. package/src/tempo/session/client/CredentialState.ts +0 -942
  830. package/src/tempo/session/client/ReceiptCoordinator.ts +0 -95
  831. package/src/tempo/session/client/Runtime.test.ts +0 -1104
  832. package/src/tempo/session/client/Runtime.ts +0 -1008
  833. package/src/tempo/session/client/Session.test.ts +0 -1355
  834. package/src/tempo/session/client/Session.ts +0 -420
  835. package/src/tempo/session/client/SessionManager.test.ts +0 -1899
  836. package/src/tempo/session/client/SessionManager.ts +0 -996
  837. package/src/tempo/session/client/Transports.test.ts +0 -1141
  838. package/src/tempo/session/client/Transports.ts +0 -1534
  839. package/src/tempo/session/client/index.ts +0 -40
  840. package/src/tempo/session/client/internal/SessionManager.ts +0 -36
  841. package/src/tempo/session/index.ts +0 -7
  842. package/src/tempo/session/precompile/Chain.integration.test.ts +0 -339
  843. package/src/tempo/session/precompile/Chain.test.ts +0 -1641
  844. package/src/tempo/session/precompile/Chain.ts +0 -1269
  845. package/src/tempo/session/precompile/Channel.test.ts +0 -147
  846. package/src/tempo/session/precompile/Channel.ts +0 -108
  847. package/src/tempo/session/precompile/Protocol.test.ts +0 -358
  848. package/src/tempo/session/precompile/Protocol.ts +0 -520
  849. package/src/tempo/session/precompile/Voucher.test.ts +0 -354
  850. package/src/tempo/session/precompile/Voucher.ts +0 -162
  851. package/src/tempo/session/precompile/escrow.abi.ts +0 -226
  852. package/src/tempo/session/precompile/index.ts +0 -33
  853. package/src/tempo/session/server/ChannelOps.test.ts +0 -129
  854. package/src/tempo/session/server/ChannelOps.ts +0 -157
  855. package/src/tempo/session/server/ChannelStore.test.ts +0 -1093
  856. package/src/tempo/session/server/ChannelStore.ts +0 -856
  857. package/src/tempo/session/server/CredentialVerification.test.ts +0 -299
  858. package/src/tempo/session/server/CredentialVerification.ts +0 -1087
  859. package/src/tempo/session/server/MeteredStream.ts +0 -99
  860. package/src/tempo/session/server/RequestState.test.ts +0 -574
  861. package/src/tempo/session/server/RequestState.ts +0 -507
  862. package/src/tempo/session/server/Session.integration.test.ts +0 -449
  863. package/src/tempo/session/server/Session.test.ts +0 -4247
  864. package/src/tempo/session/server/Session.ts +0 -669
  865. package/src/tempo/session/server/Settlement.test.ts +0 -345
  866. package/src/tempo/session/server/Settlement.ts +0 -527
  867. package/src/tempo/session/server/Sse.fuzz.test.ts +0 -138
  868. package/src/tempo/session/server/Sse.test.ts +0 -634
  869. package/src/tempo/session/server/Sse.ts +0 -261
  870. package/src/tempo/session/server/Transports.test.ts +0 -346
  871. package/src/tempo/session/server/Transports.ts +0 -256
  872. package/src/tempo/session/server/Ws.test.ts +0 -765
  873. package/src/tempo/session/server/Ws.ts +0 -391
  874. package/src/tempo/session/server/index.ts +0 -12
  875. package/src/tempo/subscription/KeyAuthorization.test.ts +0 -282
  876. package/src/tempo/subscription/KeyAuthorization.ts +0 -396
  877. package/src/tempo/subscription/Receipt.ts +0 -28
  878. package/src/tempo/subscription/Store.test.ts +0 -609
  879. package/src/tempo/subscription/Store.ts +0 -449
  880. package/src/tempo/subscription/Types.ts +0 -68
  881. package/src/tempo/subscription/index.ts +0 -23
  882. package/src/tsconfig.json +0 -10
  883. package/src/validation/core.ts +0 -386
  884. package/src/validation/index.ts +0 -11
  885. package/src/viem/Account.test.ts +0 -72
  886. package/src/viem/Account.ts +0 -30
  887. package/src/viem/Client.test.ts +0 -366
  888. package/src/viem/Client.ts +0 -93
  889. package/src/web-bot-auth/Constants.ts +0 -24
  890. package/src/web-bot-auth/Types.ts +0 -9
  891. package/src/web-bot-auth/WebBotAuth.test.ts +0 -182
  892. package/src/web-bot-auth/client/index.ts +0 -84
  893. package/src/web-bot-auth/index.ts +0 -6
  894. package/src/web-bot-auth/internal/JwkThumbprint.ts +0 -21
  895. package/src/web-bot-auth/internal/SignatureAgent.ts +0 -18
  896. package/src/web-bot-auth/server/index.ts +0 -113
  897. package/src/x402/Assets.test.ts +0 -253
  898. package/src/x402/Assets.ts +0 -221
  899. package/src/x402/Exact.e2e.test.ts +0 -488
  900. package/src/x402/Exact.localnet.test.ts +0 -475
  901. package/src/x402/Header.test.ts +0 -73
  902. package/src/x402/Header.ts +0 -79
  903. package/src/x402/PublicInterface.test-d.ts +0 -39
  904. package/src/x402/Types.ts +0 -248
  905. package/src/x402/client/Exact.test.ts +0 -309
  906. package/src/x402/client/Exact.ts +0 -186
  907. package/src/x402/index.ts +0 -6
  908. package/src/x402/internal/ChallengeBrand.ts +0 -14
  909. package/src/x402/internal/RouteBinding.ts +0 -18
  910. package/src/x402/server/EvmCharge.ts +0 -410
  911. package/src/x402/server/Facilitator.test.ts +0 -111
  912. package/src/x402/server/Facilitator.ts +0 -56
  913. package/src/zod.test.ts +0 -169
  914. package/src/zod.ts +0 -71
@@ -1,1075 +0,0 @@
1
- import * as Challenge from '../../Challenge.js'
2
- import * as Constants from '../../Constants.js'
3
- import * as Expires from '../../Expires.js'
4
- import * as AcceptPayment from '../../internal/AcceptPayment.js'
5
- import type { MaybePromise } from '../../internal/types.js'
6
- import type * as Method from '../../Method.js'
7
- import type * as z from '../../zod.js'
8
- import * as Transport from '../Transport.js'
9
- import * as MethodChallenge from './MethodChallenge.js'
10
- import * as MethodResponse from './MethodResponse.js'
11
-
12
- // We tag wrappers with a global symbol so we can recognize wrappers created by mppx,
13
- // even across multiple module instances/bundles. This lets restore() avoid clobbering
14
- // an unrelated fetch installed by user code or another library.
15
- const MPPX_FETCH_WRAPPER = Symbol.for('mppx.fetch.wrapper')
16
- const defaultMaxPaymentRetries = 3
17
-
18
- type WrappedFetch = typeof globalThis.fetch & {
19
- [MPPX_FETCH_WRAPPER]?: typeof globalThis.fetch
20
- }
21
-
22
- /** Credential state retained between payment retries until its method settles it. */
23
- type PreparedCredential = {
24
- /** Method-owned preparation and settlement hooks. */
25
- attempt: MethodResponse.Attempt
26
- /** Serialized challenge used to recognize the same retry. */
27
- key?: string | undefined
28
- /** Method that prepared the credential. */
29
- method: Method.AnyClient
30
- /** Memoized credential reused for the same retry. */
31
- promise: Promise<string>
32
- }
33
-
34
- let originalFetch: typeof globalThis.fetch | undefined
35
- const eventObserverChecks = new WeakMap<object, (name: keyof ClientEventMap) => boolean>()
36
-
37
- async function settleAttempt(
38
- prepared: PreparedCredential | undefined,
39
- outcome: MethodResponse.AttemptOutcome,
40
- ): Promise<boolean> {
41
- const settle = prepared?.attempt.settle
42
- if (!settle) return outcome.status !== 'pending'
43
- prepared.attempt.settle = undefined
44
- const settled = await settle(outcome)
45
- if (!settled) prepared.attempt.settle = settle
46
- return settled
47
- }
48
-
49
- export type ClientEventMap<
50
- methods extends readonly Method.AnyClient[] = readonly Method.AnyClient[],
51
- response = Response,
52
- > = {
53
- 'challenge.received': ChallengeReceivedPayload<methods, response>
54
- 'credential.created': CredentialCreatedPayload<methods, response>
55
- 'payment.failed': PaymentFailedPayload<methods, response>
56
- 'payment.response': PaymentResponsePayload<methods, response>
57
- }
58
-
59
- export type ClientEventName<
60
- methods extends readonly Method.AnyClient[] = readonly Method.AnyClient[],
61
- response = Response,
62
- > = keyof ClientEventMap<methods, response> | '*'
63
-
64
- export type ClientEventEnvelope<
65
- methods extends readonly Method.AnyClient[] = readonly Method.AnyClient[],
66
- response = Response,
67
- > = {
68
- [name in keyof ClientEventMap<methods, response>]: Readonly<{
69
- name: name
70
- payload: ClientEventMap<methods, response>[name]
71
- }>
72
- }[keyof ClientEventMap<methods, response>]
73
-
74
- export type ClientEventPayload<
75
- methods extends readonly Method.AnyClient[] = readonly Method.AnyClient[],
76
- name extends ClientEventName<methods> = ClientEventName<methods>,
77
- response = Response,
78
- > = name extends '*'
79
- ? ClientEventEnvelope<methods, response>
80
- : name extends keyof ClientEventMap<methods, response>
81
- ? ClientEventMap<methods, response>[name]
82
- : never
83
-
84
- export type ClientEventResult<
85
- methods extends readonly Method.AnyClient[],
86
- name extends ClientEventName<methods> = ClientEventName<methods>,
87
- _response = Response,
88
- > = name extends 'challenge.received' ? string | undefined : void
89
-
90
- export type ClientEventHandler<
91
- methods extends readonly Method.AnyClient[] = readonly Method.AnyClient[],
92
- name extends ClientEventName<methods> = ClientEventName<methods>,
93
- response = Response,
94
- > = (
95
- payload: ClientEventPayload<methods, name, response>,
96
- ) => MaybePromise<ClientEventResult<methods, name, response>>
97
-
98
- export type Unsubscribe = () => void
99
-
100
- export type ChallengeReceivedPayload<
101
- methods extends readonly Method.AnyClient[] = readonly Method.AnyClient[],
102
- response = Response,
103
- > = Readonly<{
104
- challenge: Challenge.Challenge
105
- challenges: readonly Challenge.Challenge[]
106
- createCredential: (context?: AnyContextFor<methods>) => Promise<string>
107
- init?: from.RequestInit<methods> | undefined
108
- input?: RequestInfo | URL | undefined
109
- method: methods[number]
110
- response: response
111
- }>
112
-
113
- export type CredentialCreatedPayload<
114
- methods extends readonly Method.AnyClient[] = readonly Method.AnyClient[],
115
- response = Response,
116
- > = Readonly<{
117
- challenge: Challenge.Challenge
118
- credential: string
119
- init?: from.RequestInit<methods> | undefined
120
- input?: RequestInfo | URL | undefined
121
- method: methods[number]
122
- response?: response | undefined
123
- }>
124
-
125
- export type PaymentResponsePayload<
126
- methods extends readonly Method.AnyClient[] = readonly Method.AnyClient[],
127
- response = Response,
128
- > = Readonly<{
129
- challenge: Challenge.Challenge
130
- credential: string
131
- init?: from.RequestInit<methods> | undefined
132
- input?: RequestInfo | URL | undefined
133
- method: methods[number]
134
- response: response
135
- }>
136
-
137
- export type PaymentFailedPayload<
138
- methods extends readonly Method.AnyClient[] = readonly Method.AnyClient[],
139
- response = Response,
140
- > = Readonly<{
141
- challenge?: Challenge.Challenge | undefined
142
- challenges?: readonly Challenge.Challenge[] | undefined
143
- error: unknown
144
- init?: from.RequestInit<methods> | undefined
145
- input?: RequestInfo | URL | undefined
146
- method?: methods[number] | undefined
147
- response?: response | undefined
148
- }>
149
-
150
- export type ClientEventDispatcher<
151
- methods extends readonly Method.AnyClient[] = readonly Method.AnyClient[],
152
- response = Response,
153
- > = {
154
- emit<name extends Exclude<ClientEventName<methods, response>, '*'>>(
155
- name: name,
156
- payload: ClientEventMap<methods, response>[name],
157
- ): Promise<ClientEventResult<methods, name, response>>
158
- on<name extends ClientEventName<methods, response>>(
159
- name: name,
160
- handler: ClientEventHandler<methods, name, response>,
161
- ): Unsubscribe
162
- }
163
-
164
- /**
165
- * Creates a fetch wrapper that automatically handles 402 Payment Required responses.
166
- *
167
- * @example
168
- * ```ts
169
- * import { Fetch, tempo } from 'mppx/client'
170
- * import { privateKeyToAccount } from 'viem/accounts'
171
- *
172
- * const fetch = Fetch.from({
173
- * methods: [
174
- * tempo({
175
- * account: privateKeyToAccount('0x...'),
176
- * }),
177
- * ],
178
- * })
179
- *
180
- * // Use the wrapped fetch — handles 402 automatically
181
- * const res = await fetch('https://api.example.com/resource')
182
- * ```
183
- *
184
- */
185
- export function from<const methods extends readonly Method.AnyClient[]>(
186
- config: from.Config<methods>,
187
- ): from.Fetch<methods> {
188
- const {
189
- acceptPayment,
190
- acceptPaymentPolicy = 'always',
191
- fetch = globalThis.fetch,
192
- maxPaymentRetries = defaultMaxPaymentRetries,
193
- methods,
194
- onChallenge,
195
- orderChallenges,
196
- transport = Transport.http(),
197
- } = config
198
- const events = config.eventDispatcher ?? createEventDispatcher()
199
- const resolvedAcceptPayment = acceptPayment ?? AcceptPayment.resolve(methods)
200
- // Always operate on the true underlying fetch to avoid wrapper-on-wrapper stacking,
201
- // which can duplicate retries and make restore semantics fragile.
202
- const baseFetch = unwrapFetch(fetch)
203
-
204
- const request = async (
205
- input: RequestInfo | URL,
206
- init: from.RequestInit<methods> | undefined,
207
- canRefetch: boolean,
208
- ): Promise<Response> => {
209
- const callerHeaders = getCallerHeaders(input, init?.headers)
210
- const hasExplicitAcceptPayment = callerHeaders.has(Constants.Headers.acceptPayment)
211
- const paymentPreferences = resolvePaymentPreferences(callerHeaders, resolvedAcceptPayment)
212
- const capturedBody = captureRequestBody(input, init, callerHeaders)
213
- const initialRequest = prepareInitialRequest(
214
- input,
215
- init,
216
- callerHeaders,
217
- paymentPreferences.header,
218
- hasExplicitAcceptPayment,
219
- acceptPaymentPolicy,
220
- )
221
- let response = await baseFetch(cloneRequestInput(initialRequest.input), initialRequest.init)
222
- const transportRequest = withCapturedBody(initialRequest.init, await capturedBody)
223
-
224
- if (!(await transport.isPaymentRequired(response, transportRequest as never))) return response
225
-
226
- // Only extract context for payment handling after confirming 402.
227
- const context = (init as Record<string, unknown> | undefined)?.context
228
- const {
229
- context: _,
230
- orderChallenges: requestOrderChallenges,
231
- ...fetchInit
232
- } = (transportRequest ?? {}) as Record<string, unknown>
233
-
234
- let challenge: Challenge.Challenge | undefined
235
- let challenges: readonly Challenge.Challenge[] | undefined
236
- let mi: methods[number] | undefined
237
- let preparedCredential: PreparedCredential | undefined
238
-
239
- try {
240
- for (let retry = 0; retry < maxPaymentRetries; retry++) {
241
- challenges = await transport.getChallenges(response, transportRequest as never)
242
-
243
- const candidates = AcceptPayment.selectChallengeCandidates(
244
- challenges,
245
- methods,
246
- paymentPreferences.entries,
247
- )
248
- const orderedCandidates = await resolveChallengeOrder(
249
- candidates,
250
- (requestOrderChallenges as AcceptPayment.OrderChallenges<methods> | undefined) ??
251
- orderChallenges,
252
- )
253
- const selected = orderedCandidates[0]
254
- if (!selected) {
255
- await settleAttempt(preparedCredential, {
256
- challenges,
257
- response,
258
- status: 'rejected',
259
- })
260
- // A post-payment 402 with no actionable challenge (e.g. rejected credential)
261
- // is the server's final answer, not a new challenge round.
262
- if (retry > 0) return response
263
- throw new Error(
264
- `No method found for challenges: ${challenges.map((c) => `${c.method}.${c.intent}`).join(', ')}. Available: ${methods.map((m) => `${m.name}.${m.intent}`).join(', ')}`,
265
- )
266
- }
267
-
268
- const selectedChallenge = selected.challenge
269
- challenge = selectedChallenge
270
- mi = selected.method
271
- if (challenge.expires) Expires.assert(challenge.expires, challenge.id)
272
-
273
- const paymentInput = resolvePaymentRetryInput(
274
- response,
275
- initialRequest.input,
276
- initialRequest.input,
277
- )
278
- const previousCredential = preparedCredential
279
- const key = Challenge.serialize(selectedChallenge)
280
- const sameAttempt =
281
- previousCredential?.method === selected.method && previousCredential?.key === key
282
- let canReusePrevious = false
283
- if (previousCredential) {
284
- const settled = await settleAttempt(previousCredential, {
285
- challenges,
286
- response,
287
- status: sameAttempt ? 'pending' : 'rejected',
288
- })
289
- canReusePrevious = sameAttempt && !settled
290
- }
291
- preparedCredential = canReusePrevious ? previousCredential : undefined
292
- const createCredential = memoizeCreateCredential(
293
- async (overrideContext?: AnyContextFor<methods>) => {
294
- if (overrideContext === undefined && canReusePrevious && previousCredential) {
295
- return previousCredential.promise
296
- }
297
- if (canReusePrevious && previousCredential) {
298
- await settleAttempt(previousCredential, { status: 'rejected' })
299
- preparedCredential = undefined
300
- }
301
-
302
- const credentialContext = overrideContext ?? context
303
- if (!MethodChallenge.has(selected.method))
304
- return resolveCredential(selectedChallenge, selected.method, credentialContext)
305
- const attempt: MethodResponse.Attempt = {
306
- prepare: () =>
307
- MethodChallenge.handle(selected.method, {
308
- challenge: selectedChallenge,
309
- context: credentialContext,
310
- fetch: baseFetch,
311
- input: paymentInput,
312
- }),
313
- }
314
- const promise = attempt
315
- .prepare()
316
- .then(() =>
317
- resolveCredential(selectedChallenge, selected.method, credentialContext, attempt),
318
- )
319
- preparedCredential = {
320
- attempt,
321
- key: overrideContext === undefined ? key : undefined,
322
- method: selected.method,
323
- promise,
324
- }
325
- return promise
326
- },
327
- )
328
- const eventCredential = await events.emit(
329
- 'challenge.received',
330
- createChallengeReceivedPayload({
331
- challenge: selectedChallenge,
332
- challenges,
333
- createCredential,
334
- init,
335
- input,
336
- method: selected.method,
337
- response,
338
- }),
339
- )
340
- const onChallengeCredential =
341
- eventCredential ??
342
- (onChallenge
343
- ? await onChallenge(challenge, {
344
- createCredential,
345
- })
346
- : undefined)
347
- const credential = onChallengeCredential ?? (await createCredential())
348
- const prepared = preparedCredential
349
- if (prepared && (await prepared.promise.catch(() => undefined)) !== credential) {
350
- await settleAttempt(prepared, { status: 'rejected' })
351
- preparedCredential = undefined
352
- }
353
- validateCredentialHeaderValue(credential)
354
- await events.emit(
355
- 'credential.created',
356
- createCredentialCreatedPayload({
357
- challenge: selectedChallenge,
358
- credential,
359
- init,
360
- input,
361
- method: selected.method,
362
- response,
363
- }),
364
- )
365
-
366
- response = await baseFetch(
367
- paymentInput,
368
- transport.setCredential(
369
- {
370
- ...fetchInit,
371
- headers: initialRequest.headers,
372
- },
373
- credential,
374
- { challenge: selectedChallenge },
375
- ),
376
- )
377
- const paymentRequired = await transport.isPaymentRequired(
378
- response,
379
- transportRequest as never,
380
- )
381
- if (!paymentRequired) {
382
- await settleAttempt(prepared, {
383
- response,
384
- status: response.ok ? 'accepted' : 'rejected',
385
- })
386
- preparedCredential = undefined
387
- }
388
- // Cloning an unobserved stream would tee and buffer it indefinitely.
389
- if (response.ok && hasEventObservers(events, 'payment.response'))
390
- await events.emit(
391
- 'payment.response',
392
- createPaymentResponsePayload({
393
- challenge: selectedChallenge,
394
- credential,
395
- init,
396
- input,
397
- method: selected.method,
398
- response,
399
- }),
400
- )
401
- if (!paymentRequired) {
402
- if (!response.ok) return response
403
- return MethodResponse.handle(selected.method, {
404
- challenge: selectedChallenge,
405
- credential,
406
- fetch: baseFetch,
407
- headers: initialRequest.headers,
408
- input: paymentInput,
409
- ...(canRefetch
410
- ? {
411
- refetch: () => request(cloneRequestInput(initialRequest.input), init, false),
412
- }
413
- : {}),
414
- response,
415
- signal: resolveRequestSignal(input, init),
416
- })
417
- }
418
- }
419
- challenges = undefined
420
- try {
421
- challenges = await transport.getChallenges(response, transportRequest as never)
422
- } catch {}
423
- await settleAttempt(preparedCredential, {
424
- challenges,
425
- response,
426
- status: 'rejected',
427
- })
428
- return response
429
- } catch (error) {
430
- await settleAttempt(preparedCredential, {
431
- challenges,
432
- response,
433
- status: 'rejected',
434
- })
435
- await events.emit(
436
- 'payment.failed',
437
- createPaymentFailedPayload({
438
- challenge,
439
- challenges,
440
- error,
441
- init,
442
- input,
443
- method: mi,
444
- response,
445
- }),
446
- )
447
- throw error
448
- }
449
- }
450
- const wrappedFetch = (input: RequestInfo | URL, init?: from.RequestInit<methods>) =>
451
- request(input, init, true)
452
-
453
- // Record the wrapped target so future polyfill() / restore() calls can detect origin
454
- // and safely unwrap only mppx-installed wrappers.
455
- ;(wrappedFetch as WrappedFetch)[MPPX_FETCH_WRAPPER] = baseFetch
456
- return wrappedFetch as from.Fetch<methods>
457
- }
458
-
459
- /** Union of all context types from all methods that have context schemas. */
460
- type AnyContextFor<methods extends readonly Method.AnyClient[]> = {
461
- [K in keyof methods]: NonNullable<methods[K]['context']> extends infer ctx
462
- ? ctx extends z.ZodMiniType
463
- ? z.input<ctx>
464
- : undefined
465
- : undefined
466
- }[number]
467
-
468
- export declare namespace from {
469
- type Config<methods extends readonly Method.AnyClient[] = readonly Method.AnyClient[]> = {
470
- /** Resolved `Accept-Payment` header and selection preferences. */
471
- acceptPayment?: AcceptPayment.Resolved<methods> | undefined
472
- /** Controls when `Accept-Payment` is injected. @default 'always' */
473
- acceptPaymentPolicy?:
474
- | 'always'
475
- | 'same-origin'
476
- | 'never'
477
- | { origins: readonly string[] }
478
- | undefined
479
- /** Custom fetch function to wrap. Defaults to `globalThis.fetch`. */
480
- fetch?: typeof globalThis.fetch
481
- /** Advanced shared event dispatcher. `challenge.received` handlers run before `onChallenge`; the first non-empty credential returned by a handler skips `onChallenge`. */
482
- eventDispatcher?: ClientEventDispatcher<methods, any> | undefined
483
- /** Maximum number of payment challenge retries after the initial response. @default 3 */
484
- maxPaymentRetries?: number | undefined
485
- /** Array of methods to use. */
486
- methods: methods
487
- /** Called when a 402 challenge is received and no event handler supplies a credential. */
488
- onChallenge?:
489
- | ((
490
- challenge: Challenge.Challenge,
491
- helpers: {
492
- createCredential: (context?: AnyContextFor<methods>) => Promise<string>
493
- },
494
- ) => Promise<string | undefined>)
495
- | undefined
496
- /** Filters and sorts supported challenges before credential creation. */
497
- orderChallenges?: AcceptPayment.OrderChallenges<methods> | undefined
498
- /** Transport to use for challenge extraction and credential attachment. */
499
- transport?: Transport.AnyTransport | undefined
500
- }
501
-
502
- type Fetch<methods extends readonly Method.AnyClient[] = readonly Method.AnyClient[]> = (
503
- input: RequestInfo | URL,
504
- init?: RequestInit<methods>,
505
- ) => Promise<Response>
506
-
507
- type RequestInit<methods extends readonly Method.AnyClient[] = readonly Method.AnyClient[]> =
508
- globalThis.RequestInit & {
509
- /** Context to pass to the method intent's createCredential. */
510
- context?: AnyContextFor<methods>
511
- /** Request-local challenge filtering and sorting. */
512
- orderChallenges?: AcceptPayment.OrderChallenges<methods> | undefined
513
- }
514
- }
515
-
516
- /**
517
- * Replaces the global `fetch` with a payment-aware wrapper.
518
- *
519
- * @example
520
- * ```ts
521
- * import { Fetch, tempo } from 'mppx/client'
522
- * import { privateKeyToAccount } from 'viem/accounts'
523
- *
524
- * Fetch.polyfill({
525
- * methods: [
526
- * tempo({
527
- * account: privateKeyToAccount('0x...'),
528
- * }),
529
- * ],
530
- * })
531
- *
532
- * // Global fetch now handles 402 automatically
533
- * const res = await fetch('https://api.example.com/resource')
534
- * ```
535
- */
536
- export function polyfill<const methods extends readonly Method.AnyClient[]>(
537
- config: polyfill.Config<methods>,
538
- ): void {
539
- // Defensive guard for runtimes/tests where fetch might be non-configurable.
540
- const descriptor = Object.getOwnPropertyDescriptor(globalThis, 'fetch')
541
- if (!descriptor || (!descriptor.writable && !descriptor.set)) {
542
- throw new Error('globalThis.fetch is not writable')
543
- }
544
-
545
- if (!originalFetch) originalFetch = globalThis.fetch
546
- globalThis.fetch = from({
547
- ...config,
548
- acceptPaymentPolicy: config.acceptPaymentPolicy ?? (isBrowser() ? 'same-origin' : 'always'),
549
- fetch: globalThis.fetch,
550
- }) as typeof globalThis.fetch
551
- }
552
-
553
- export declare namespace polyfill {
554
- type Config<methods extends readonly Method.AnyClient[] = readonly Method.AnyClient[]> =
555
- from.Config<methods>
556
- }
557
-
558
- /**
559
- * Restores the original `fetch` after calling `polyfill`.
560
- *
561
- * @example
562
- * ```ts
563
- * import { Fetch } from 'mppx/client'
564
- *
565
- * Fetch.polyfill({ methods: [...] })
566
- *
567
- * // ... use payment-aware fetch ...
568
- *
569
- * Fetch.restore()
570
- * ```
571
- */
572
- export function restore(): void {
573
- // Only restore if the current fetch is still an mppx wrapper.
574
- // If app code replaced fetch after polyfill(), we must not overwrite it.
575
- if (originalFetch && isWrappedFetch(globalThis.fetch)) {
576
- globalThis.fetch = originalFetch
577
- originalFetch = undefined
578
- }
579
- }
580
-
581
- /** @internal Normalizes headers to a plain object for spreading. */
582
- export function normalizeHeaders(headers: unknown): Record<string, string> {
583
- if (!headers) return {}
584
- if (headers instanceof Headers) {
585
- const result: Record<string, string> = {}
586
- headers.forEach((value, key) => {
587
- result[key] = value
588
- })
589
- return result
590
- }
591
- if (Array.isArray(headers)) return Object.fromEntries(headers)
592
- return headers as Record<string, string>
593
- }
594
-
595
- /**
596
- * Creates a typed client payment event dispatcher.
597
- *
598
- * `challenge.received` handlers run before `onChallenge`; the first non-empty
599
- * credential returned by a handler wins. Observation handlers are isolated, so
600
- * thrown listener errors do not stop sibling listeners or payment flow.
601
- */
602
- export function createEventDispatcher<
603
- methods extends readonly Method.AnyClient[] = readonly Method.AnyClient[],
604
- response = Response,
605
- >(): ClientEventDispatcher<methods, response> {
606
- const handlers = {
607
- '*': new Set<ClientEventHandler<methods, '*', response>>(),
608
- 'challenge.received': new Set<ClientEventHandler<methods, 'challenge.received', response>>(),
609
- 'credential.created': new Set<ClientEventHandler<methods, 'credential.created', response>>(),
610
- 'payment.failed': new Set<ClientEventHandler<methods, 'payment.failed', response>>(),
611
- 'payment.response': new Set<ClientEventHandler<methods, 'payment.response', response>>(),
612
- }
613
-
614
- const on: ClientEventDispatcher<methods, response>['on'] = (name, handler) => {
615
- switch (name) {
616
- case '*':
617
- case 'challenge.received':
618
- case 'credential.created':
619
- case 'payment.failed':
620
- case 'payment.response':
621
- handlers[name].add(handler as never)
622
- return () => handlers[name].delete(handler as never)
623
- default:
624
- throw new Error(`Unknown client event "${String(name)}".`)
625
- }
626
- }
627
-
628
- const dispatcher: ClientEventDispatcher<methods, response> = {
629
- async emit(name, payload) {
630
- switch (name) {
631
- case 'challenge.received': {
632
- let credential: string | undefined
633
- for (const handler of handlers['challenge.received']) {
634
- const value = await emitChallengeReceived(
635
- handler,
636
- payload as ChallengeReceivedPayload<methods, response>,
637
- )
638
- if (typeof value === 'string' && value.length > 0) {
639
- credential = value
640
- break
641
- }
642
- }
643
- await emitCatchall(handlers['*'], name, payload)
644
- return credential as ClientEventResult<methods, typeof name, response>
645
- }
646
- case 'credential.created':
647
- await emitObserveHandlers(handlers['credential.created'], payload)
648
- await emitCatchall(handlers['*'], name, payload)
649
- return undefined as ClientEventResult<methods, typeof name, response>
650
- case 'payment.failed':
651
- await emitObserveHandlers(handlers['payment.failed'], payload)
652
- await emitCatchall(handlers['*'], name, payload)
653
- return undefined as ClientEventResult<methods, typeof name, response>
654
- case 'payment.response':
655
- await emitObserveHandlers(handlers['payment.response'], payload)
656
- await emitCatchall(handlers['*'], name, payload)
657
- return undefined as ClientEventResult<methods, typeof name, response>
658
- }
659
- },
660
- on,
661
- }
662
- eventObserverChecks.set(
663
- dispatcher,
664
- (name) => handlers[name as keyof typeof handlers].size > 0 || handlers['*'].size > 0,
665
- )
666
- return dispatcher
667
- }
668
-
669
- function hasEventObservers(dispatcher: ClientEventDispatcher, name: keyof ClientEventMap): boolean {
670
- return eventObserverChecks.get(dispatcher)?.(name) ?? true
671
- }
672
-
673
- async function emitChallengeReceived<methods extends readonly Method.AnyClient[], response>(
674
- handler: ClientEventHandler<methods, 'challenge.received', response>,
675
- payload: ChallengeReceivedPayload<methods, response>,
676
- ): Promise<string | undefined> {
677
- try {
678
- return await handler(payload)
679
- } catch {
680
- return undefined
681
- }
682
- }
683
-
684
- async function emitObserveHandlers(
685
- handlers: ReadonlySet<(payload: never) => MaybePromise<unknown>>,
686
- payload: unknown,
687
- ): Promise<void> {
688
- for (const handler of handlers) {
689
- try {
690
- await handler(payload as never)
691
- } catch {
692
- // Client observation events must not alter payment flow.
693
- }
694
- }
695
- }
696
-
697
- async function emitCatchall<
698
- methods extends readonly Method.AnyClient[],
699
- response,
700
- name extends keyof ClientEventMap<methods, response>,
701
- >(
702
- handlers: ReadonlySet<ClientEventHandler<methods, '*', response>>,
703
- name: name,
704
- payload: ClientEventMap<methods, response>[name],
705
- ) {
706
- await emitObserveHandlers(
707
- handlers as ReadonlySet<(payload: never) => MaybePromise<unknown>>,
708
- Object.freeze({ name, payload }) as ClientEventPayload<methods, '*', response>,
709
- )
710
- }
711
-
712
- function memoizeCreateCredential<methods extends readonly Method.AnyClient[]>(
713
- createCredential: (context?: AnyContextFor<methods>) => Promise<string>,
714
- ) {
715
- let promise: Promise<string> | undefined
716
- return (context?: AnyContextFor<methods>) => {
717
- promise ??= createCredential(context)
718
- return promise
719
- }
720
- }
721
-
722
- function createChallengeReceivedPayload<
723
- methods extends readonly Method.AnyClient[],
724
- response,
725
- >(parameters: {
726
- challenge: Challenge.Challenge
727
- challenges: readonly Challenge.Challenge[]
728
- createCredential: (context?: AnyContextFor<methods>) => Promise<string>
729
- init?: from.RequestInit<methods> | undefined
730
- input?: RequestInfo | URL | undefined
731
- method: methods[number]
732
- response: response
733
- }): ChallengeReceivedPayload<methods, response> {
734
- return Object.freeze({
735
- challenge: snapshotValue(parameters.challenge),
736
- challenges: parameters.challenges.map((challenge) => snapshotValue(challenge)),
737
- createCredential: parameters.createCredential,
738
- init: snapshotInit(parameters.init),
739
- input: snapshotInput(parameters.input),
740
- method: snapshotMethod(parameters.method),
741
- response: snapshotResponse(parameters.response),
742
- }) as never
743
- }
744
-
745
- function createCredentialCreatedPayload<
746
- methods extends readonly Method.AnyClient[],
747
- response,
748
- >(parameters: {
749
- challenge: Challenge.Challenge
750
- credential: string
751
- init?: from.RequestInit<methods> | undefined
752
- input?: RequestInfo | URL | undefined
753
- method: methods[number]
754
- response?: response | undefined
755
- }): CredentialCreatedPayload<methods, response> {
756
- return Object.freeze({
757
- challenge: snapshotValue(parameters.challenge),
758
- credential: parameters.credential,
759
- init: snapshotInit(parameters.init),
760
- input: snapshotInput(parameters.input),
761
- method: snapshotMethod(parameters.method),
762
- ...(parameters.response !== undefined
763
- ? { response: snapshotResponse(parameters.response) }
764
- : {}),
765
- }) as never
766
- }
767
-
768
- function createPaymentResponsePayload<
769
- methods extends readonly Method.AnyClient[],
770
- response,
771
- >(parameters: {
772
- challenge: Challenge.Challenge
773
- credential: string
774
- init?: from.RequestInit<methods> | undefined
775
- input?: RequestInfo | URL | undefined
776
- method: methods[number]
777
- response: response
778
- }): PaymentResponsePayload<methods, response> {
779
- return Object.freeze({
780
- challenge: snapshotValue(parameters.challenge),
781
- credential: parameters.credential,
782
- init: snapshotInit(parameters.init),
783
- input: snapshotInput(parameters.input),
784
- method: snapshotMethod(parameters.method),
785
- response: snapshotResponse(parameters.response),
786
- }) as never
787
- }
788
-
789
- function createPaymentFailedPayload<
790
- methods extends readonly Method.AnyClient[],
791
- response,
792
- >(parameters: {
793
- challenge?: Challenge.Challenge | undefined
794
- challenges?: readonly Challenge.Challenge[] | undefined
795
- error: unknown
796
- init?: from.RequestInit<methods> | undefined
797
- input?: RequestInfo | URL | undefined
798
- method?: methods[number] | undefined
799
- response?: response | undefined
800
- }): PaymentFailedPayload<methods, response> {
801
- return Object.freeze({
802
- ...(parameters.challenge ? { challenge: snapshotValue(parameters.challenge) } : {}),
803
- ...(parameters.challenges
804
- ? { challenges: parameters.challenges.map((challenge) => snapshotValue(challenge)) }
805
- : {}),
806
- error: parameters.error,
807
- init: snapshotInit(parameters.init),
808
- input: snapshotInput(parameters.input),
809
- ...(parameters.method ? { method: snapshotMethod(parameters.method) } : {}),
810
- ...(parameters.response !== undefined
811
- ? { response: snapshotResponse(parameters.response) }
812
- : {}),
813
- }) as never
814
- }
815
-
816
- function snapshotInit<methods extends readonly Method.AnyClient[]>(
817
- init: from.RequestInit<methods> | undefined,
818
- ): from.RequestInit<methods> | undefined {
819
- if (!init) return undefined
820
- return freezeSnapshot({
821
- ...init,
822
- ...(init.headers ? { headers: new Headers(init.headers) } : {}),
823
- }) as from.RequestInit<methods>
824
- }
825
-
826
- function snapshotInput(input: RequestInfo | URL | undefined): RequestInfo | URL | undefined {
827
- if (input instanceof Request) {
828
- try {
829
- return input.clone()
830
- } catch {
831
- return input
832
- }
833
- }
834
- if (input instanceof URL) return new URL(input)
835
- return input
836
- }
837
-
838
- function snapshotMethod<method extends Method.AnyClient>(method: method): method {
839
- return freezeSnapshot(Object.assign({}, method)) as method
840
- }
841
-
842
- function snapshotResponse<response>(response: response): response {
843
- if (response instanceof Response) return response.clone() as response
844
- return snapshotValue(response)
845
- }
846
-
847
- function snapshotValue<value>(value: value): value {
848
- try {
849
- return deepFreeze(structuredClone(value))
850
- } catch {
851
- return freezeSnapshot(value)
852
- }
853
- }
854
-
855
- function deepFreeze<value>(value: value): value {
856
- if (!value || typeof value !== 'object' || Object.isFrozen(value)) return value
857
- Object.freeze(value)
858
- for (const child of Object.values(value as Record<string, unknown>)) deepFreeze(child)
859
- return value
860
- }
861
-
862
- function freezeSnapshot<value>(value: value): value {
863
- if (!value || typeof value !== 'object' || Object.isFrozen(value)) return value
864
- Object.freeze(value)
865
- return value
866
- }
867
-
868
- /** @internal */
869
- function prepareInitialRequest<methods extends readonly Method.AnyClient[]>(
870
- input: RequestInfo | URL,
871
- init: from.RequestInit<methods> | undefined,
872
- callerHeaders: Headers,
873
- header: string,
874
- hasExplicitAcceptPayment: boolean,
875
- policy: NonNullable<from.Config['acceptPaymentPolicy']>,
876
- ): { headers: Headers; init: from.RequestInit<methods> | undefined; input: RequestInfo | URL } {
877
- const shouldInjectAcceptPayment =
878
- Boolean(header) && !hasExplicitAcceptPayment && shouldInjectForPolicy(input, policy)
879
- if (!shouldInjectAcceptPayment) return { headers: callerHeaders, init, input }
880
-
881
- const headers = new Headers(input instanceof Request ? input.headers : undefined)
882
- callerHeaders.forEach((value, key) => {
883
- headers.set(key, value)
884
- })
885
- headers.set(Constants.Headers.acceptPayment, header)
886
-
887
- if (init) {
888
- // Preserve init identity for callers like websocket upgrade helpers that
889
- // depend on the original RequestInit object reaching the underlying fetch.
890
- ;(init as from.RequestInit<methods> & { headers?: HeadersInit }).headers = headers
891
- return {
892
- headers,
893
- init,
894
- input,
895
- }
896
- }
897
-
898
- return {
899
- headers,
900
- init: shouldInjectAcceptPayment ? ({ headers } as from.RequestInit<methods>) : undefined,
901
- input,
902
- }
903
- }
904
-
905
- function captureRequestBody<methods extends readonly Method.AnyClient[]>(
906
- input: RequestInfo | URL,
907
- init: from.RequestInit<methods> | undefined,
908
- headers: Headers,
909
- ): Promise<string | undefined> | undefined {
910
- if (!(input instanceof Request) || init?.body !== undefined || !input.body || input.bodyUsed)
911
- return undefined
912
- if (!headers.has('mcp-method')) {
913
- const accept = headers.get('accept')?.toLowerCase() ?? ''
914
- if (!accept.includes('application/json') || !accept.includes('text/event-stream'))
915
- return undefined
916
- }
917
- try {
918
- return input
919
- .clone()
920
- .text()
921
- .catch(() => undefined)
922
- } catch {
923
- return undefined
924
- }
925
- }
926
-
927
- function withCapturedBody<methods extends readonly Method.AnyClient[]>(
928
- init: from.RequestInit<methods> | undefined,
929
- body: string | undefined,
930
- ): from.RequestInit<methods> | undefined {
931
- return body === undefined ? init : ({ ...init, body } as from.RequestInit<methods>)
932
- }
933
-
934
- /** @internal */
935
- function getCallerHeaders(input: RequestInfo | URL, headers: HeadersInit | undefined): Headers {
936
- if (headers) return new Headers(headers)
937
- return new Headers(input instanceof Request ? input.headers : undefined)
938
- }
939
-
940
- /** @internal */
941
- function unwrapFetch(fetch: typeof globalThis.fetch): typeof globalThis.fetch {
942
- let current = fetch as WrappedFetch
943
- while (current[MPPX_FETCH_WRAPPER]) {
944
- current = current[MPPX_FETCH_WRAPPER] as WrappedFetch
945
- }
946
- return current as typeof globalThis.fetch
947
- }
948
-
949
- function cloneRequestInput(input: RequestInfo | URL): RequestInfo | URL {
950
- if (!(input instanceof Request) || !input.body || input.bodyUsed) return input
951
- try {
952
- return input.clone()
953
- } catch {
954
- return input
955
- }
956
- }
957
-
958
- function resolveRequestSignal(
959
- input: RequestInfo | URL,
960
- init: RequestInit | undefined,
961
- ): AbortSignal | undefined {
962
- return init?.signal ?? (input instanceof Request ? input.signal : undefined)
963
- }
964
-
965
- /** @internal */
966
- function isWrappedFetch(fetch: typeof globalThis.fetch): fetch is WrappedFetch {
967
- return Boolean((fetch as WrappedFetch)[MPPX_FETCH_WRAPPER])
968
- }
969
-
970
- /** @internal */
971
- export function validateCredentialHeaderValue(credential: string): void {
972
- if (!credential.trim()) throw new Error('Credential header value must be non-empty')
973
- if (credential.includes('\r') || credential.includes('\n')) {
974
- throw new Error('Credential header value contains illegal newline characters')
975
- }
976
- }
977
-
978
- /** @internal */
979
- async function resolveCredential(
980
- challenge: Challenge.Challenge,
981
- mi: Method.AnyClient,
982
- context: unknown,
983
- attempt?: MethodResponse.Attempt | undefined,
984
- ): Promise<string> {
985
- const parsedContext = mi.context && context !== undefined ? mi.context.parse(context) : undefined
986
- const parameters =
987
- parsedContext !== undefined ? { challenge, context: parsedContext } : { challenge }
988
- if (attempt) MethodResponse.attachAttempt(mi, parameters, attempt)
989
- return mi.createCredential(parameters as never)
990
- }
991
-
992
- function resolvePaymentPreferences<methods extends readonly Method.AnyClient[]>(
993
- headers: Headers,
994
- acceptPayment: AcceptPayment.Resolved<methods>,
995
- ): AcceptPayment.Resolved<methods> {
996
- const header = headers.get(Constants.Headers.acceptPayment)
997
- if (!header) return acceptPayment
998
-
999
- try {
1000
- return {
1001
- ...acceptPayment,
1002
- entries: AcceptPayment.parse(header),
1003
- header,
1004
- }
1005
- } catch {
1006
- // Fail open for explicit malformed headers: preserve the caller's header on
1007
- // the wire, but continue automatic challenge selection with configured
1008
- // defaults instead of throwing from the wrapper.
1009
- return acceptPayment
1010
- }
1011
- }
1012
-
1013
- async function resolveChallengeOrder<methods extends readonly Method.AnyClient[]>(
1014
- candidates: readonly AcceptPayment.ChallengeCandidate<methods[number]>[],
1015
- orderChallenges: AcceptPayment.OrderChallenges<methods> | undefined,
1016
- ): Promise<readonly AcceptPayment.ChallengeCandidate<methods[number]>[]> {
1017
- return orderChallenges ? orderChallenges(candidates) : candidates
1018
- }
1019
-
1020
- /** @internal */
1021
- function shouldInjectForPolicy(
1022
- input: RequestInfo | URL,
1023
- policy: NonNullable<from.Config['acceptPaymentPolicy']>,
1024
- ): boolean {
1025
- if (policy === 'always') return true
1026
- if (policy === 'never') return false
1027
-
1028
- const url = resolveRequestUrl(input)
1029
-
1030
- if (policy === 'same-origin') {
1031
- if (!isBrowser()) return true
1032
- return url.origin === globalThis.location.origin
1033
- }
1034
-
1035
- return policy.origins.some((origin) => matchesOrigin(url, origin))
1036
- }
1037
-
1038
- /** @internal Matches an origin pattern, supporting `*.` prefix for subdomain wildcards. */
1039
- function matchesOrigin(url: URL, pattern: string): boolean {
1040
- if (pattern.startsWith('*.')) {
1041
- const suffix = pattern.slice(1) // e.g. ".example.com"
1042
- return url.hostname.endsWith(suffix) || url.hostname === pattern.slice(2)
1043
- }
1044
- return url.origin === new URL(pattern).origin
1045
- }
1046
-
1047
- /** @internal */
1048
- function isBrowser(): boolean {
1049
- return typeof globalThis.location !== 'undefined'
1050
- }
1051
-
1052
- /** @internal */
1053
- function resolveRequestUrl(input: RequestInfo | URL): URL {
1054
- if (input instanceof URL) return input
1055
- if (input instanceof Request) return new URL(input.url)
1056
- return new URL(input, isBrowser() ? globalThis.location.href : undefined)
1057
- }
1058
-
1059
- function resolvePaymentRetryInput(
1060
- response: Response,
1061
- fallback: RequestInfo | URL,
1062
- initialInput: RequestInfo | URL,
1063
- ): RequestInfo | URL {
1064
- if (!response.url) return fallback
1065
-
1066
- const responseUrl = new URL(response.url)
1067
- const initialUrl = resolveRequestUrl(initialInput)
1068
- if (responseUrl.origin !== initialUrl.origin) {
1069
- throw new Error(
1070
- `Refusing to send payment credential across redirect from ${initialUrl.origin} to ${responseUrl.origin}`,
1071
- )
1072
- }
1073
-
1074
- return response.url
1075
- }