mppx 0.8.15 → 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.
- package/CHANGELOG.md +91 -0
- package/README.md +15 -0
- package/dist/Challenge.js +61 -39
- package/dist/Constants.d.ts +17 -17
- package/dist/Errors.d.ts +3 -3
- package/dist/Method.d.ts +35 -5
- package/dist/Method.js +7 -22
- package/dist/Store.d.ts +19 -0
- package/dist/Store.js +43 -0
- package/dist/attestation/Client.d.ts +17 -0
- package/dist/attestation/Client.js +28 -0
- package/dist/attestation/Constants.d.ts +15 -0
- package/dist/attestation/Constants.js +15 -0
- package/dist/attestation/Server.d.ts +4 -0
- package/dist/attestation/Server.js +8 -0
- package/dist/attestation/Types.d.ts +76 -0
- package/dist/attestation/Types.js +2 -0
- package/dist/attestation/index.d.ts +6 -0
- package/dist/attestation/index.js +6 -0
- package/dist/attestation/internal/HttpMessageSignature.d.ts +73 -0
- package/dist/attestation/internal/HttpMessageSignature.js +320 -0
- package/dist/attestation/internal/SigningContext.d.ts +4 -0
- package/dist/attestation/internal/SigningContext.js +11 -0
- package/dist/bin.js +3 -3
- package/dist/cli/THIRD-PARTY-LICENSES.txt +328 -0
- package/dist/cli/account.d.ts +14 -14
- package/dist/cli/cli.d.ts +6 -6
- package/dist/cli/cli.js +253 -1504
- package/dist/cli/plugins/index.js +19 -5
- package/dist/cli/plugins/tempo.js +7 -3
- package/dist/cli/sessions/Manager.js +7 -4
- package/dist/cli/sessions/commands.d.ts +4 -4
- package/dist/cli/sessions/request.d.ts +2 -0
- package/dist/cli/sessions/request.js +18 -0
- package/dist/cli/sessions/store.js +28 -14
- package/dist/cli/utils.d.ts +1 -1
- package/dist/cli/validate/index.d.ts +3 -3
- package/dist/client/Mppx.d.ts +3 -0
- package/dist/client/Mppx.js +13 -5
- package/dist/client/Transport.d.ts +3 -5
- package/dist/client/Transport.js +1 -17
- package/dist/client/internal/Fetch.js +2 -6
- package/dist/discovery/Discovery.js +2 -1
- package/dist/discovery/OpenApi.d.ts +3 -5
- package/dist/discovery/OpenApi.js +13 -34
- package/dist/discovery/internal/Metadata.d.ts +20 -0
- package/dist/discovery/internal/Metadata.js +36 -0
- package/dist/evm/Methods.d.ts +11 -11
- package/dist/evm/Types.d.ts +17 -17
- package/dist/evm/client/Charge.d.ts +11 -11
- package/dist/evm/client/Charge.js +8 -0
- package/dist/evm/client/Methods.d.ts +11 -11
- package/dist/evm/server/Charge.d.ts +1 -1
- package/dist/evm/server/Charge.js +2 -0
- package/dist/evm/server/Methods.d.ts +11 -11
- package/dist/internal/HeaderCodec.d.ts +2 -2
- package/dist/internal/types.d.ts +6 -0
- package/dist/proxy/Proxy.d.ts +2 -0
- package/dist/proxy/Proxy.js +117 -9
- package/dist/proxy/Service.d.ts +36 -1
- package/dist/proxy/Service.js +9 -8
- package/dist/proxy/services/anthropic.js +1 -0
- package/dist/proxy/services/openai.js +1 -0
- package/dist/proxy/services/stripe.js +1 -0
- package/dist/server/Mppx.d.ts +75 -13
- package/dist/server/Mppx.js +201 -23
- package/dist/server/core.d.ts +9 -0
- package/dist/server/core.js +9 -0
- package/dist/server/internal/html/config.d.ts +9 -9
- package/dist/server/internal/html/constants.d.ts +17 -17
- package/dist/stripe/Methods.d.ts +10 -10
- package/dist/stripe/client/Charge.d.ts +10 -10
- package/dist/stripe/client/Methods.d.ts +10 -10
- package/dist/stripe/internal/constants.d.ts +1 -1
- package/dist/stripe/internal/constants.js +1 -1
- package/dist/stripe/internal/types.d.ts +1 -0
- package/dist/stripe/server/Charge.d.ts +11 -11
- package/dist/stripe/server/Charge.js +51 -5
- package/dist/stripe/server/Methods.d.ts +137 -48
- package/dist/stripe/server/Methods.js +265 -4
- package/dist/stripe/server/internal/deposit-address.d.ts +13 -0
- package/dist/stripe/server/internal/deposit-address.js +28 -0
- package/dist/stripe/server/internal/html.gen.d.ts +1 -1
- package/dist/stripe/server/internal/html.gen.js +1 -1
- package/dist/stripe/server/internal/record-payment.d.ts +15 -0
- package/dist/stripe/server/internal/record-payment.js +42 -0
- package/dist/stripe/server/internal/request.d.ts +25 -0
- package/dist/stripe/server/internal/request.js +29 -0
- package/dist/stripe/server/spt.d.ts +8 -0
- package/dist/stripe/server/spt.js +8 -0
- package/dist/tap/Constants.d.ts +28 -0
- package/dist/tap/Constants.js +32 -0
- package/dist/tap/Types.d.ts +11 -0
- package/dist/tap/Types.js +2 -0
- package/dist/tap/client/index.d.ts +26 -0
- package/dist/tap/client/index.js +33 -0
- package/dist/tap/index.d.ts +5 -0
- package/dist/tap/index.js +5 -0
- package/dist/tap/server/index.d.ts +20 -0
- package/dist/tap/server/index.js +36 -0
- package/dist/tempo/Attribution.d.ts +1 -1
- package/dist/tempo/Methods.d.ts +73 -60
- package/dist/tempo/Methods.js +14 -3
- package/dist/tempo/Proof.d.ts +16 -16
- package/dist/tempo/client/Charge.d.ts +22 -19
- package/dist/tempo/client/Charge.js +32 -16
- package/dist/tempo/client/Methods.d.ts +51 -38
- package/dist/tempo/client/Subscription.d.ts +23 -23
- package/dist/tempo/internal/address.d.ts +2 -1
- package/dist/tempo/internal/address.js +3 -1
- package/dist/tempo/internal/auto-swap.js +4 -19
- package/dist/tempo/internal/defaults.d.ts +17 -6
- package/dist/tempo/internal/defaults.js +11 -0
- package/dist/tempo/internal/fee-payer.d.ts +12 -12
- package/dist/tempo/internal/machine-token-charge.d.ts +51 -0
- package/dist/tempo/internal/machine-token-charge.js +113 -0
- package/dist/tempo/internal/machine-token-session.d.ts +88 -0
- package/dist/tempo/internal/machine-token-session.js +173 -0
- package/dist/tempo/internal/proof.d.ts +17 -17
- package/dist/tempo/internal/signature-envelope.d.ts +14 -0
- package/dist/tempo/internal/signature-envelope.js +28 -0
- package/dist/tempo/legacy/client/ChannelOps.d.ts +2 -2
- package/dist/tempo/legacy/client/ChannelOps.js +11 -5
- package/dist/tempo/legacy/client/Session.d.ts +33 -21
- package/dist/tempo/legacy/client/Session.js +3 -3
- package/dist/tempo/legacy/client/SessionManager.d.ts +3 -1
- package/dist/tempo/legacy/client/SessionManager.js +2 -0
- package/dist/tempo/legacy/index.d.ts +1 -3
- package/dist/tempo/legacy/index.js +1 -3
- package/dist/tempo/legacy/session/escrow.abi.d.ts +374 -374
- package/dist/tempo/server/Charge.d.ts +28 -11
- package/dist/tempo/server/Charge.js +101 -55
- package/dist/tempo/server/Methods.d.ts +58 -56
- package/dist/tempo/server/Methods.js +8 -18
- package/dist/tempo/server/Relay.d.ts +1 -1
- package/dist/tempo/server/Relay.js +2 -2
- package/dist/tempo/server/Subscription.d.ts +25 -25
- package/dist/tempo/server/Subscription.js +2 -0
- package/dist/tempo/server/index.d.ts +1 -1
- package/dist/tempo/server/index.js +1 -1
- package/dist/tempo/server/internal/html.gen.d.ts +1 -1
- package/dist/tempo/server/internal/html.gen.js +1 -1
- package/dist/tempo/server/internal/transport.d.ts +2 -0
- package/dist/tempo/server/internal/transport.js +9 -2
- package/dist/tempo/session/client/ChannelOps.d.ts +18 -3
- package/dist/tempo/session/client/ChannelOps.js +35 -6
- package/dist/tempo/session/client/ChannelStore.d.ts +0 -5
- package/dist/tempo/session/client/ChannelStore.js +2 -2
- package/dist/tempo/session/client/CredentialState.d.ts +18 -3
- package/dist/tempo/session/client/CredentialState.js +77 -76
- package/dist/tempo/session/client/Runtime.d.ts +4 -2
- package/dist/tempo/session/client/Runtime.js +21 -5
- package/dist/tempo/session/client/Session.d.ts +34 -22
- package/dist/tempo/session/client/Session.js +186 -63
- package/dist/tempo/session/client/SessionManager.d.ts +3 -1
- package/dist/tempo/session/client/SessionManager.js +35 -11
- package/dist/tempo/session/client/Transports.d.ts +2 -0
- package/dist/tempo/session/client/Transports.js +12 -2
- package/dist/tempo/session/precompile/Chain.d.ts +37 -2
- package/dist/tempo/session/precompile/Chain.js +116 -15
- package/dist/tempo/session/precompile/Protocol.d.ts +15 -0
- package/dist/tempo/session/precompile/Protocol.js +7 -0
- package/dist/tempo/session/precompile/Voucher.d.ts +7 -5
- package/dist/tempo/session/precompile/Voucher.js +6 -12
- package/dist/tempo/session/precompile/escrow.abi.d.ts +306 -306
- package/dist/tempo/session/server/ChannelStore.d.ts +15 -0
- package/dist/tempo/session/server/ChannelStore.js +27 -12
- package/dist/tempo/session/server/CredentialVerification.d.ts +39 -20
- package/dist/tempo/session/server/CredentialVerification.js +359 -89
- package/dist/tempo/session/server/MeteredStream.d.ts +4 -1
- package/dist/tempo/session/server/MeteredStream.js +8 -5
- package/dist/tempo/session/server/RequestState.d.ts +19 -0
- package/dist/tempo/session/server/RequestState.js +61 -15
- package/dist/tempo/session/server/Session.d.ts +46 -23
- package/dist/tempo/session/server/Session.js +150 -56
- package/dist/tempo/session/server/Settlement.d.ts +11 -4
- package/dist/tempo/session/server/Settlement.js +53 -21
- package/dist/tempo/session/server/Sse.d.ts +3 -1
- package/dist/tempo/session/server/Sse.js +2 -1
- package/dist/tempo/session/server/Transports.d.ts +1 -1
- package/dist/tempo/session/server/Transports.js +1 -0
- package/dist/tempo/session/server/Ws.d.ts +6 -1
- package/dist/tempo/session/server/Ws.js +1 -0
- package/dist/tempo/subscription/KeyAuthorization.d.ts +39 -39
- package/dist/web-bot-auth/Constants.d.ts +20 -0
- package/dist/web-bot-auth/Constants.js +24 -0
- package/dist/web-bot-auth/Types.d.ts +10 -0
- package/dist/web-bot-auth/Types.js +2 -0
- package/dist/web-bot-auth/client/index.d.ts +29 -0
- package/dist/web-bot-auth/client/index.js +64 -0
- package/dist/web-bot-auth/index.d.ts +7 -0
- package/dist/web-bot-auth/index.js +7 -0
- package/dist/web-bot-auth/internal/JwkThumbprint.d.ts +5 -0
- package/dist/web-bot-auth/internal/JwkThumbprint.js +20 -0
- package/dist/web-bot-auth/internal/SignatureAgent.d.ts +3 -0
- package/dist/web-bot-auth/internal/SignatureAgent.js +18 -0
- package/dist/web-bot-auth/server/index.d.ts +35 -0
- package/dist/web-bot-auth/server/index.js +88 -0
- package/dist/x402/Types.d.ts +6 -6
- package/dist/x402/client/Exact.d.ts +8 -0
- package/dist/x402/client/Exact.js +40 -10
- package/dist/x402/server/EvmCharge.d.ts +22 -0
- package/dist/x402/server/EvmCharge.js +54 -20
- package/package.json +28 -34
- package/dist/BodyDigest.d.ts.map +0 -1
- package/dist/BodyDigest.js.map +0 -1
- package/dist/Challenge.d.ts.map +0 -1
- package/dist/Challenge.js.map +0 -1
- package/dist/Constants.d.ts.map +0 -1
- package/dist/Constants.js.map +0 -1
- package/dist/Credential.d.ts.map +0 -1
- package/dist/Credential.js.map +0 -1
- package/dist/Errors.d.ts.map +0 -1
- package/dist/Errors.js.map +0 -1
- package/dist/Expires.d.ts.map +0 -1
- package/dist/Expires.js.map +0 -1
- package/dist/Html.d.ts.map +0 -1
- package/dist/Html.js.map +0 -1
- package/dist/Mcp.d.ts.map +0 -1
- package/dist/Mcp.js.map +0 -1
- package/dist/Method.d.ts.map +0 -1
- package/dist/Method.js.map +0 -1
- package/dist/PaymentRequest.d.ts.map +0 -1
- package/dist/PaymentRequest.js.map +0 -1
- package/dist/Receipt.d.ts.map +0 -1
- package/dist/Receipt.js.map +0 -1
- package/dist/Store.d.ts.map +0 -1
- package/dist/Store.js.map +0 -1
- package/dist/bin.d.ts.map +0 -1
- package/dist/bin.js.map +0 -1
- package/dist/cli/account.d.ts.map +0 -1
- package/dist/cli/account.js.map +0 -1
- package/dist/cli/cli.d.ts.map +0 -1
- package/dist/cli/cli.js.map +0 -1
- package/dist/cli/config.d.ts.map +0 -1
- package/dist/cli/config.js.map +0 -1
- package/dist/cli/internal.d.ts.map +0 -1
- package/dist/cli/internal.js.map +0 -1
- package/dist/cli/plugins/evm.d.ts.map +0 -1
- package/dist/cli/plugins/evm.js.map +0 -1
- package/dist/cli/plugins/index.d.ts.map +0 -1
- package/dist/cli/plugins/index.js.map +0 -1
- package/dist/cli/plugins/plugin.d.ts.map +0 -1
- package/dist/cli/plugins/plugin.js.map +0 -1
- package/dist/cli/plugins/stripe.d.ts.map +0 -1
- package/dist/cli/plugins/stripe.js.map +0 -1
- package/dist/cli/plugins/tempo.d.ts.map +0 -1
- package/dist/cli/plugins/tempo.js.map +0 -1
- package/dist/cli/sessions/Manager.d.ts.map +0 -1
- package/dist/cli/sessions/Manager.js.map +0 -1
- package/dist/cli/sessions/commands.d.ts.map +0 -1
- package/dist/cli/sessions/commands.js.map +0 -1
- package/dist/cli/sessions/request.d.ts.map +0 -1
- package/dist/cli/sessions/request.js.map +0 -1
- package/dist/cli/sessions/store.d.ts.map +0 -1
- package/dist/cli/sessions/store.js.map +0 -1
- package/dist/cli/utils.d.ts.map +0 -1
- package/dist/cli/utils.js.map +0 -1
- package/dist/cli/validate/challenge.d.ts.map +0 -1
- package/dist/cli/validate/challenge.js.map +0 -1
- package/dist/cli/validate/discovery.d.ts.map +0 -1
- package/dist/cli/validate/discovery.js.map +0 -1
- package/dist/cli/validate/helpers.d.ts.map +0 -1
- package/dist/cli/validate/helpers.js.map +0 -1
- package/dist/cli/validate/index.d.ts.map +0 -1
- package/dist/cli/validate/index.js.map +0 -1
- package/dist/cli/validate/messages.d.ts.map +0 -1
- package/dist/cli/validate/messages.js.map +0 -1
- package/dist/cli/validate/payment.d.ts.map +0 -1
- package/dist/cli/validate/payment.js.map +0 -1
- package/dist/client/Methods.d.ts.map +0 -1
- package/dist/client/Methods.js.map +0 -1
- package/dist/client/Mppx.d.ts.map +0 -1
- package/dist/client/Mppx.js.map +0 -1
- package/dist/client/Transport.d.ts.map +0 -1
- package/dist/client/Transport.js.map +0 -1
- package/dist/client/index.d.ts.map +0 -1
- package/dist/client/index.js.map +0 -1
- package/dist/client/internal/Fetch.d.ts.map +0 -1
- package/dist/client/internal/Fetch.js.map +0 -1
- package/dist/client/internal/MethodChallenge.d.ts.map +0 -1
- package/dist/client/internal/MethodChallenge.js.map +0 -1
- package/dist/client/internal/MethodResponse.d.ts.map +0 -1
- package/dist/client/internal/MethodResponse.js.map +0 -1
- package/dist/client/internal/protocols/Mcp.d.ts.map +0 -1
- package/dist/client/internal/protocols/Mcp.js.map +0 -1
- package/dist/client/internal/protocols/Mpp.d.ts.map +0 -1
- package/dist/client/internal/protocols/Mpp.js.map +0 -1
- package/dist/client/internal/protocols/Protocol.d.ts.map +0 -1
- package/dist/client/internal/protocols/Protocol.js.map +0 -1
- package/dist/client/internal/protocols/Shared.d.ts.map +0 -1
- package/dist/client/internal/protocols/Shared.js.map +0 -1
- package/dist/client/internal/protocols/X402.d.ts.map +0 -1
- package/dist/client/internal/protocols/X402.js.map +0 -1
- package/dist/client/node.d.ts.map +0 -1
- package/dist/client/node.js.map +0 -1
- package/dist/discovery/Discovery.d.ts.map +0 -1
- package/dist/discovery/Discovery.js.map +0 -1
- package/dist/discovery/OpenApi.d.ts.map +0 -1
- package/dist/discovery/OpenApi.js.map +0 -1
- package/dist/discovery/Validate.d.ts.map +0 -1
- package/dist/discovery/Validate.js.map +0 -1
- package/dist/discovery/index.d.ts.map +0 -1
- package/dist/discovery/index.js.map +0 -1
- package/dist/evm/Assets.d.ts.map +0 -1
- package/dist/evm/Assets.js.map +0 -1
- package/dist/evm/Chains.d.ts.map +0 -1
- package/dist/evm/Chains.js.map +0 -1
- package/dist/evm/Methods.d.ts.map +0 -1
- package/dist/evm/Methods.js.map +0 -1
- package/dist/evm/Types.d.ts.map +0 -1
- package/dist/evm/Types.js.map +0 -1
- package/dist/evm/client/Charge.d.ts.map +0 -1
- package/dist/evm/client/Charge.js.map +0 -1
- package/dist/evm/client/Methods.d.ts.map +0 -1
- package/dist/evm/client/Methods.js.map +0 -1
- package/dist/evm/client/index.d.ts.map +0 -1
- package/dist/evm/client/index.js.map +0 -1
- package/dist/evm/index.d.ts.map +0 -1
- package/dist/evm/index.js.map +0 -1
- package/dist/evm/server/Charge.d.ts.map +0 -1
- package/dist/evm/server/Charge.js.map +0 -1
- package/dist/evm/server/Methods.d.ts.map +0 -1
- package/dist/evm/server/Methods.js.map +0 -1
- package/dist/evm/server/index.d.ts.map +0 -1
- package/dist/evm/server/index.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/internal/AcceptPayment.d.ts.map +0 -1
- package/dist/internal/AcceptPayment.js.map +0 -1
- package/dist/internal/HeaderCodec.d.ts.map +0 -1
- package/dist/internal/HeaderCodec.js.map +0 -1
- package/dist/internal/constantTimeEqual.d.ts.map +0 -1
- package/dist/internal/constantTimeEqual.js.map +0 -1
- package/dist/internal/env.d.ts.map +0 -1
- package/dist/internal/env.js.map +0 -1
- package/dist/internal/types.d.ts.map +0 -1
- package/dist/internal/types.js.map +0 -1
- package/dist/mcp/client/McpClient.d.ts.map +0 -1
- package/dist/mcp/client/McpClient.js.map +0 -1
- package/dist/mcp/client/index.d.ts.map +0 -1
- package/dist/mcp/client/index.js.map +0 -1
- package/dist/mcp/server/Transport.d.ts.map +0 -1
- package/dist/mcp/server/Transport.js.map +0 -1
- package/dist/mcp/server/index.d.ts.map +0 -1
- package/dist/mcp/server/index.js.map +0 -1
- package/dist/middlewares/elysia.d.ts.map +0 -1
- package/dist/middlewares/elysia.js.map +0 -1
- package/dist/middlewares/express.d.ts.map +0 -1
- package/dist/middlewares/express.js.map +0 -1
- package/dist/middlewares/hono.d.ts.map +0 -1
- package/dist/middlewares/hono.js.map +0 -1
- package/dist/middlewares/internal/mppx.d.ts.map +0 -1
- package/dist/middlewares/internal/mppx.js.map +0 -1
- package/dist/middlewares/nextjs.d.ts.map +0 -1
- package/dist/middlewares/nextjs.js.map +0 -1
- package/dist/proxy/Proxy.d.ts.map +0 -1
- package/dist/proxy/Proxy.js.map +0 -1
- package/dist/proxy/Service.d.ts.map +0 -1
- package/dist/proxy/Service.js.map +0 -1
- package/dist/proxy/index.d.ts.map +0 -1
- package/dist/proxy/index.js.map +0 -1
- package/dist/proxy/internal/Headers.d.ts.map +0 -1
- package/dist/proxy/internal/Headers.js.map +0 -1
- package/dist/proxy/internal/Route.d.ts.map +0 -1
- package/dist/proxy/internal/Route.js.map +0 -1
- package/dist/proxy/services/anthropic.d.ts.map +0 -1
- package/dist/proxy/services/anthropic.js.map +0 -1
- package/dist/proxy/services/openai.d.ts.map +0 -1
- package/dist/proxy/services/openai.js.map +0 -1
- package/dist/proxy/services/stripe.d.ts.map +0 -1
- package/dist/proxy/services/stripe.js.map +0 -1
- package/dist/server/Methods.d.ts.map +0 -1
- package/dist/server/Methods.js.map +0 -1
- package/dist/server/Mppx.d.ts.map +0 -1
- package/dist/server/Mppx.js.map +0 -1
- package/dist/server/NodeListener.d.ts.map +0 -1
- package/dist/server/NodeListener.js.map +0 -1
- package/dist/server/Request.d.ts.map +0 -1
- package/dist/server/Request.js.map +0 -1
- package/dist/server/Response.d.ts.map +0 -1
- package/dist/server/Response.js.map +0 -1
- package/dist/server/Transport.d.ts.map +0 -1
- package/dist/server/Transport.js.map +0 -1
- package/dist/server/index.d.ts.map +0 -1
- package/dist/server/index.js.map +0 -1
- package/dist/server/internal/html/compose.main.gen.d.ts.map +0 -1
- package/dist/server/internal/html/compose.main.gen.js.map +0 -1
- package/dist/server/internal/html/config.d.ts.map +0 -1
- package/dist/server/internal/html/config.js.map +0 -1
- package/dist/server/internal/html/constants.d.ts.map +0 -1
- package/dist/server/internal/html/constants.js.map +0 -1
- package/dist/server/internal/html/serviceWorker.client.d.ts.map +0 -1
- package/dist/server/internal/html/serviceWorker.client.js.map +0 -1
- package/dist/server/internal/html/serviceWorker.gen.d.ts.map +0 -1
- package/dist/server/internal/html/serviceWorker.gen.js.map +0 -1
- package/dist/server/internal/scope.d.ts.map +0 -1
- package/dist/server/internal/scope.js.map +0 -1
- package/dist/stripe/Methods.d.ts.map +0 -1
- package/dist/stripe/Methods.js.map +0 -1
- package/dist/stripe/client/Charge.d.ts.map +0 -1
- package/dist/stripe/client/Charge.js.map +0 -1
- package/dist/stripe/client/Methods.d.ts.map +0 -1
- package/dist/stripe/client/Methods.js.map +0 -1
- package/dist/stripe/client/index.d.ts.map +0 -1
- package/dist/stripe/client/index.js.map +0 -1
- package/dist/stripe/index.d.ts.map +0 -1
- package/dist/stripe/index.js.map +0 -1
- package/dist/stripe/internal/constants.d.ts.map +0 -1
- package/dist/stripe/internal/constants.js.map +0 -1
- package/dist/stripe/internal/types.d.ts.map +0 -1
- package/dist/stripe/internal/types.js.map +0 -1
- package/dist/stripe/server/Charge.d.ts.map +0 -1
- package/dist/stripe/server/Charge.js.map +0 -1
- package/dist/stripe/server/Methods.d.ts.map +0 -1
- package/dist/stripe/server/Methods.js.map +0 -1
- package/dist/stripe/server/index.d.ts.map +0 -1
- package/dist/stripe/server/index.js.map +0 -1
- package/dist/stripe/server/internal/html/types.d.ts.map +0 -1
- package/dist/stripe/server/internal/html/types.js.map +0 -1
- package/dist/stripe/server/internal/html.gen.d.ts.map +0 -1
- package/dist/stripe/server/internal/html.gen.js.map +0 -1
- package/dist/tempo/Attribution.d.ts.map +0 -1
- package/dist/tempo/Attribution.js.map +0 -1
- package/dist/tempo/Methods.d.ts.map +0 -1
- package/dist/tempo/Methods.js.map +0 -1
- package/dist/tempo/Proof.d.ts.map +0 -1
- package/dist/tempo/Proof.js.map +0 -1
- package/dist/tempo/client/Charge.d.ts.map +0 -1
- package/dist/tempo/client/Charge.js.map +0 -1
- package/dist/tempo/client/Methods.d.ts.map +0 -1
- package/dist/tempo/client/Methods.js.map +0 -1
- package/dist/tempo/client/ResolveAccount.d.ts.map +0 -1
- package/dist/tempo/client/ResolveAccount.js.map +0 -1
- package/dist/tempo/client/Subscription.d.ts.map +0 -1
- package/dist/tempo/client/Subscription.js.map +0 -1
- package/dist/tempo/client/index.d.ts.map +0 -1
- package/dist/tempo/client/index.js.map +0 -1
- package/dist/tempo/index.d.ts.map +0 -1
- package/dist/tempo/index.js.map +0 -1
- package/dist/tempo/internal/account.d.ts.map +0 -1
- package/dist/tempo/internal/account.js.map +0 -1
- package/dist/tempo/internal/address.d.ts.map +0 -1
- package/dist/tempo/internal/address.js.map +0 -1
- package/dist/tempo/internal/auto-swap.d.ts.map +0 -1
- package/dist/tempo/internal/auto-swap.js.map +0 -1
- package/dist/tempo/internal/charge.d.ts.map +0 -1
- package/dist/tempo/internal/charge.js.map +0 -1
- package/dist/tempo/internal/defaults.d.ts.map +0 -1
- package/dist/tempo/internal/defaults.js.map +0 -1
- package/dist/tempo/internal/fee-payer.d.ts.map +0 -1
- package/dist/tempo/internal/fee-payer.js.map +0 -1
- package/dist/tempo/internal/fee-token.d.ts.map +0 -1
- package/dist/tempo/internal/fee-token.js.map +0 -1
- package/dist/tempo/internal/proof.d.ts.map +0 -1
- package/dist/tempo/internal/proof.js.map +0 -1
- package/dist/tempo/internal/selectors.d.ts.map +0 -1
- package/dist/tempo/internal/selectors.js.map +0 -1
- package/dist/tempo/internal/types.d.ts.map +0 -1
- package/dist/tempo/internal/types.js.map +0 -1
- package/dist/tempo/legacy/client/ChannelOps.d.ts.map +0 -1
- package/dist/tempo/legacy/client/ChannelOps.js.map +0 -1
- package/dist/tempo/legacy/client/Session.d.ts.map +0 -1
- package/dist/tempo/legacy/client/Session.js.map +0 -1
- package/dist/tempo/legacy/client/SessionManager.d.ts.map +0 -1
- package/dist/tempo/legacy/client/SessionManager.js.map +0 -1
- package/dist/tempo/legacy/client/index.d.ts.map +0 -1
- package/dist/tempo/legacy/client/index.js.map +0 -1
- package/dist/tempo/legacy/index.d.ts.map +0 -1
- package/dist/tempo/legacy/index.js.map +0 -1
- package/dist/tempo/legacy/server/Session.d.ts +0 -208
- package/dist/tempo/legacy/server/Session.d.ts.map +0 -1
- package/dist/tempo/legacy/server/Session.js +0 -698
- package/dist/tempo/legacy/server/Session.js.map +0 -1
- package/dist/tempo/legacy/server/index.d.ts +0 -5
- package/dist/tempo/legacy/server/index.d.ts.map +0 -1
- package/dist/tempo/legacy/server/index.js +0 -5
- package/dist/tempo/legacy/server/index.js.map +0 -1
- package/dist/tempo/legacy/session/Chain.d.ts.map +0 -1
- package/dist/tempo/legacy/session/Chain.js.map +0 -1
- package/dist/tempo/legacy/session/Channel.d.ts.map +0 -1
- package/dist/tempo/legacy/session/Channel.js.map +0 -1
- package/dist/tempo/legacy/session/ChannelStore.d.ts +0 -22
- package/dist/tempo/legacy/session/ChannelStore.d.ts.map +0 -1
- package/dist/tempo/legacy/session/ChannelStore.js +0 -6
- package/dist/tempo/legacy/session/ChannelStore.js.map +0 -1
- package/dist/tempo/legacy/session/Types.d.ts.map +0 -1
- package/dist/tempo/legacy/session/Types.js.map +0 -1
- package/dist/tempo/legacy/session/Voucher.d.ts.map +0 -1
- package/dist/tempo/legacy/session/Voucher.js.map +0 -1
- package/dist/tempo/legacy/session/escrow.abi.d.ts.map +0 -1
- package/dist/tempo/legacy/session/escrow.abi.js.map +0 -1
- package/dist/tempo/legacy/session/index.d.ts.map +0 -1
- package/dist/tempo/legacy/session/index.js.map +0 -1
- package/dist/tempo/server/Charge.d.ts.map +0 -1
- package/dist/tempo/server/Charge.js.map +0 -1
- package/dist/tempo/server/Methods.d.ts.map +0 -1
- package/dist/tempo/server/Methods.js.map +0 -1
- package/dist/tempo/server/Relay.d.ts.map +0 -1
- package/dist/tempo/server/Relay.js.map +0 -1
- package/dist/tempo/server/SponsorBudget.d.ts.map +0 -1
- package/dist/tempo/server/SponsorBudget.js.map +0 -1
- package/dist/tempo/server/Subscription.d.ts.map +0 -1
- package/dist/tempo/server/Subscription.js.map +0 -1
- package/dist/tempo/server/index.d.ts.map +0 -1
- package/dist/tempo/server/index.js.map +0 -1
- package/dist/tempo/server/internal/html.gen.d.ts.map +0 -1
- package/dist/tempo/server/internal/html.gen.js.map +0 -1
- package/dist/tempo/server/internal/request-body.d.ts.map +0 -1
- package/dist/tempo/server/internal/request-body.js.map +0 -1
- package/dist/tempo/server/internal/transport.d.ts.map +0 -1
- package/dist/tempo/server/internal/transport.js.map +0 -1
- package/dist/tempo/session/Snapshot.d.ts.map +0 -1
- package/dist/tempo/session/Snapshot.js.map +0 -1
- package/dist/tempo/session/client/ChannelOps.d.ts.map +0 -1
- package/dist/tempo/session/client/ChannelOps.js.map +0 -1
- package/dist/tempo/session/client/ChannelStore.d.ts.map +0 -1
- package/dist/tempo/session/client/ChannelStore.js.map +0 -1
- package/dist/tempo/session/client/CredentialState.d.ts.map +0 -1
- package/dist/tempo/session/client/CredentialState.js.map +0 -1
- package/dist/tempo/session/client/ReceiptCoordinator.d.ts.map +0 -1
- package/dist/tempo/session/client/ReceiptCoordinator.js.map +0 -1
- package/dist/tempo/session/client/Runtime.d.ts.map +0 -1
- package/dist/tempo/session/client/Runtime.js.map +0 -1
- package/dist/tempo/session/client/Session.d.ts.map +0 -1
- package/dist/tempo/session/client/Session.js.map +0 -1
- package/dist/tempo/session/client/SessionManager.d.ts.map +0 -1
- package/dist/tempo/session/client/SessionManager.js.map +0 -1
- package/dist/tempo/session/client/Transports.d.ts.map +0 -1
- package/dist/tempo/session/client/Transports.js.map +0 -1
- package/dist/tempo/session/client/index.d.ts.map +0 -1
- package/dist/tempo/session/client/index.js.map +0 -1
- package/dist/tempo/session/client/internal/SessionManager.d.ts.map +0 -1
- package/dist/tempo/session/client/internal/SessionManager.js.map +0 -1
- package/dist/tempo/session/index.d.ts.map +0 -1
- package/dist/tempo/session/index.js.map +0 -1
- package/dist/tempo/session/precompile/Chain.d.ts.map +0 -1
- package/dist/tempo/session/precompile/Chain.js.map +0 -1
- package/dist/tempo/session/precompile/Channel.d.ts.map +0 -1
- package/dist/tempo/session/precompile/Channel.js.map +0 -1
- package/dist/tempo/session/precompile/Protocol.d.ts.map +0 -1
- package/dist/tempo/session/precompile/Protocol.js.map +0 -1
- package/dist/tempo/session/precompile/Voucher.d.ts.map +0 -1
- package/dist/tempo/session/precompile/Voucher.js.map +0 -1
- package/dist/tempo/session/precompile/escrow.abi.d.ts.map +0 -1
- package/dist/tempo/session/precompile/escrow.abi.js.map +0 -1
- package/dist/tempo/session/precompile/index.d.ts.map +0 -1
- package/dist/tempo/session/precompile/index.js.map +0 -1
- package/dist/tempo/session/server/ChannelOps.d.ts.map +0 -1
- package/dist/tempo/session/server/ChannelOps.js.map +0 -1
- package/dist/tempo/session/server/ChannelStore.d.ts.map +0 -1
- package/dist/tempo/session/server/ChannelStore.js.map +0 -1
- package/dist/tempo/session/server/CredentialVerification.d.ts.map +0 -1
- package/dist/tempo/session/server/CredentialVerification.js.map +0 -1
- package/dist/tempo/session/server/MeteredStream.d.ts.map +0 -1
- package/dist/tempo/session/server/MeteredStream.js.map +0 -1
- package/dist/tempo/session/server/RequestState.d.ts.map +0 -1
- package/dist/tempo/session/server/RequestState.js.map +0 -1
- package/dist/tempo/session/server/Session.d.ts.map +0 -1
- package/dist/tempo/session/server/Session.js.map +0 -1
- package/dist/tempo/session/server/Settlement.d.ts.map +0 -1
- package/dist/tempo/session/server/Settlement.js.map +0 -1
- package/dist/tempo/session/server/Sse.d.ts.map +0 -1
- package/dist/tempo/session/server/Sse.js.map +0 -1
- package/dist/tempo/session/server/Transports.d.ts.map +0 -1
- package/dist/tempo/session/server/Transports.js.map +0 -1
- package/dist/tempo/session/server/Ws.d.ts.map +0 -1
- package/dist/tempo/session/server/Ws.js.map +0 -1
- package/dist/tempo/session/server/index.d.ts.map +0 -1
- package/dist/tempo/session/server/index.js.map +0 -1
- package/dist/tempo/subscription/KeyAuthorization.d.ts.map +0 -1
- package/dist/tempo/subscription/KeyAuthorization.js.map +0 -1
- package/dist/tempo/subscription/Receipt.d.ts.map +0 -1
- package/dist/tempo/subscription/Receipt.js.map +0 -1
- package/dist/tempo/subscription/Store.d.ts.map +0 -1
- package/dist/tempo/subscription/Store.js.map +0 -1
- package/dist/tempo/subscription/Types.d.ts.map +0 -1
- package/dist/tempo/subscription/Types.js.map +0 -1
- package/dist/tempo/subscription/index.d.ts.map +0 -1
- package/dist/tempo/subscription/index.js.map +0 -1
- package/dist/validation/core.d.ts.map +0 -1
- package/dist/validation/core.js.map +0 -1
- package/dist/validation/index.d.ts.map +0 -1
- package/dist/validation/index.js.map +0 -1
- package/dist/viem/Account.d.ts.map +0 -1
- package/dist/viem/Account.js.map +0 -1
- package/dist/viem/Client.d.ts.map +0 -1
- package/dist/viem/Client.js.map +0 -1
- package/dist/x402/Assets.d.ts.map +0 -1
- package/dist/x402/Assets.js.map +0 -1
- package/dist/x402/Header.d.ts.map +0 -1
- package/dist/x402/Header.js.map +0 -1
- package/dist/x402/Types.d.ts.map +0 -1
- package/dist/x402/Types.js.map +0 -1
- package/dist/x402/client/Exact.d.ts.map +0 -1
- package/dist/x402/client/Exact.js.map +0 -1
- package/dist/x402/index.d.ts.map +0 -1
- package/dist/x402/index.js.map +0 -1
- package/dist/x402/internal/ChallengeBrand.d.ts.map +0 -1
- package/dist/x402/internal/ChallengeBrand.js.map +0 -1
- package/dist/x402/internal/RouteBinding.d.ts.map +0 -1
- package/dist/x402/internal/RouteBinding.js.map +0 -1
- package/dist/x402/server/EvmCharge.d.ts.map +0 -1
- package/dist/x402/server/EvmCharge.js.map +0 -1
- package/dist/x402/server/Facilitator.d.ts.map +0 -1
- package/dist/x402/server/Facilitator.js.map +0 -1
- package/dist/zod.d.ts.map +0 -1
- package/dist/zod.js.map +0 -1
- package/src/BodyDigest.test.ts +0 -43
- package/src/BodyDigest.ts +0 -55
- package/src/Challenge.fuzz.test.ts +0 -121
- package/src/Challenge.test-d.ts +0 -82
- package/src/Challenge.test.ts +0 -995
- package/src/Challenge.ts +0 -683
- package/src/Constants.ts +0 -58
- package/src/Credential.fuzz.test.ts +0 -62
- package/src/Credential.test.ts +0 -378
- package/src/Credential.ts +0 -217
- package/src/Errors.test.ts +0 -520
- package/src/Errors.ts +0 -448
- package/src/Expires.test.ts +0 -112
- package/src/Expires.ts +0 -59
- package/src/Html.ts +0 -67
- package/src/Mcp.ts +0 -85
- package/src/Method.test.ts +0 -177
- package/src/Method.ts +0 -617
- package/src/PaymentRequest.test.ts +0 -147
- package/src/PaymentRequest.ts +0 -108
- package/src/Receipt.test.ts +0 -151
- package/src/Receipt.ts +0 -146
- package/src/Store.test-d.ts +0 -195
- package/src/Store.test.ts +0 -357
- package/src/Store.ts +0 -329
- package/src/bin.ts +0 -4
- package/src/cli/account.ts +0 -269
- package/src/cli/cli.test.ts +0 -2221
- package/src/cli/cli.ts +0 -1649
- package/src/cli/config.test.ts +0 -89
- package/src/cli/config.ts +0 -50
- package/src/cli/internal.ts +0 -114
- package/src/cli/mcp.test.ts +0 -262
- package/src/cli/plugins/evm.ts +0 -55
- package/src/cli/plugins/index.ts +0 -4
- package/src/cli/plugins/plugin.ts +0 -84
- package/src/cli/plugins/stripe.ts +0 -174
- package/src/cli/plugins/tempo.ts +0 -1102
- package/src/cli/sessions/Manager.test.ts +0 -249
- package/src/cli/sessions/Manager.ts +0 -93
- package/src/cli/sessions/commands.ts +0 -444
- package/src/cli/sessions/request.test.ts +0 -51
- package/src/cli/sessions/request.ts +0 -353
- package/src/cli/sessions/store.test.ts +0 -581
- package/src/cli/sessions/store.ts +0 -940
- package/src/cli/utils.test.ts +0 -156
- package/src/cli/utils.ts +0 -394
- package/src/cli/validate/challenge.ts +0 -565
- package/src/cli/validate/discovery.test.ts +0 -435
- package/src/cli/validate/discovery.ts +0 -221
- package/src/cli/validate/helpers.ts +0 -166
- package/src/cli/validate/index.ts +0 -229
- package/src/cli/validate/messages.ts +0 -7
- package/src/cli/validate/payment.ts +0 -774
- package/src/cli/validate.test.ts +0 -843
- package/src/client/Methods.ts +0 -8
- package/src/client/Mppx.test-d.ts +0 -270
- package/src/client/Mppx.test.ts +0 -1065
- package/src/client/Mppx.ts +0 -466
- package/src/client/Transport.test.ts +0 -619
- package/src/client/Transport.ts +0 -191
- package/src/client/index.ts +0 -29
- package/src/client/internal/Fetch.browser.test.ts +0 -197
- package/src/client/internal/Fetch.test-d.ts +0 -109
- package/src/client/internal/Fetch.test.ts +0 -2336
- package/src/client/internal/Fetch.ts +0 -1079
- package/src/client/internal/MethodChallenge.ts +0 -35
- package/src/client/internal/MethodResponse.ts +0 -67
- package/src/client/internal/protocols/Mcp.test.ts +0 -220
- package/src/client/internal/protocols/Mcp.ts +0 -186
- package/src/client/internal/protocols/Mpp.ts +0 -21
- package/src/client/internal/protocols/Protocol.ts +0 -10
- package/src/client/internal/protocols/Shared.ts +0 -25
- package/src/client/internal/protocols/X402.ts +0 -46
- package/src/client/node.test.ts +0 -115
- package/src/client/node.ts +0 -247
- package/src/discovery/Discovery.test.ts +0 -214
- package/src/discovery/Discovery.ts +0 -105
- package/src/discovery/OpenApi.test.ts +0 -453
- package/src/discovery/OpenApi.ts +0 -224
- package/src/discovery/Validate.test.ts +0 -305
- package/src/discovery/Validate.ts +0 -77
- package/src/discovery/index.ts +0 -3
- package/src/env.d.ts +0 -12
- package/src/evm/Assets.ts +0 -1
- package/src/evm/Chains.ts +0 -11
- package/src/evm/Methods.ts +0 -44
- package/src/evm/PublicInterface.test-d.ts +0 -134
- package/src/evm/Types.ts +0 -140
- package/src/evm/client/Charge.test.ts +0 -347
- package/src/evm/client/Charge.ts +0 -187
- package/src/evm/client/Methods.ts +0 -19
- package/src/evm/client/index.ts +0 -6
- package/src/evm/index.ts +0 -16
- package/src/evm/server/Charge.test.ts +0 -339
- package/src/evm/server/Charge.ts +0 -290
- package/src/evm/server/Methods.ts +0 -22
- package/src/evm/server/index.ts +0 -6
- package/src/index.ts +0 -14
- package/src/internal/AcceptPayment.test.ts +0 -343
- package/src/internal/AcceptPayment.ts +0 -366
- package/src/internal/HeaderCodec.ts +0 -36
- package/src/internal/changeset.test.ts +0 -106
- package/src/internal/constantTimeEqual.test.ts +0 -47
- package/src/internal/constantTimeEqual.ts +0 -10
- package/src/internal/env.test.ts +0 -42
- package/src/internal/env.ts +0 -49
- package/src/internal/types.test-d.ts +0 -21
- package/src/internal/types.ts +0 -470
- package/src/mcp/client/McpClient.integration.test.ts +0 -652
- package/src/mcp/client/McpClient.test-d.ts +0 -144
- package/src/mcp/client/McpClient.test.ts +0 -463
- package/src/mcp/client/McpClient.ts +0 -307
- package/src/mcp/client/McpClient.unit.test.ts +0 -135
- package/src/mcp/client/index.ts +0 -2
- package/src/mcp/server/Transport.test.ts +0 -191
- package/src/mcp/server/Transport.ts +0 -111
- package/src/mcp/server/index.ts +0 -1
- package/src/middlewares/elysia.test.ts +0 -295
- package/src/middlewares/elysia.ts +0 -116
- package/src/middlewares/express.test.ts +0 -371
- package/src/middlewares/express.ts +0 -140
- package/src/middlewares/hono.test.ts +0 -476
- package/src/middlewares/hono.ts +0 -153
- package/src/middlewares/internal/mppx.test.ts +0 -177
- package/src/middlewares/internal/mppx.ts +0 -67
- package/src/middlewares/nextjs.test.ts +0 -369
- package/src/middlewares/nextjs.ts +0 -107
- package/src/proxy/Proxy.test.ts +0 -1031
- package/src/proxy/Proxy.ts +0 -345
- package/src/proxy/Service.test.ts +0 -182
- package/src/proxy/Service.ts +0 -253
- package/src/proxy/index.ts +0 -6
- package/src/proxy/internal/Headers.test.ts +0 -139
- package/src/proxy/internal/Headers.ts +0 -66
- package/src/proxy/internal/Route.test.ts +0 -217
- package/src/proxy/internal/Route.ts +0 -64
- package/src/proxy/services/anthropic.test.ts +0 -132
- package/src/proxy/services/anthropic.ts +0 -52
- package/src/proxy/services/openai.test.ts +0 -157
- package/src/proxy/services/openai.ts +0 -59
- package/src/proxy/services/stripe.test.ts +0 -175
- package/src/proxy/services/stripe.ts +0 -58
- package/src/server/Methods.ts +0 -3
- package/src/server/Mppx.authorize.test.ts +0 -210
- package/src/server/Mppx.test-d.ts +0 -360
- package/src/server/Mppx.test.ts +0 -5813
- package/src/server/Mppx.ts +0 -2623
- package/src/server/NodeListener.test.ts +0 -293
- package/src/server/NodeListener.ts +0 -45
- package/src/server/Request.test.ts +0 -255
- package/src/server/Request.ts +0 -155
- package/src/server/Response.test.ts +0 -32
- package/src/server/Response.ts +0 -45
- package/src/server/Transport.test.ts +0 -598
- package/src/server/Transport.ts +0 -320
- package/src/server/index.ts +0 -9
- package/src/server/internal/html/compose.main.gen.ts +0 -2
- package/src/server/internal/html/compose.main.ts +0 -88
- package/src/server/internal/html/config.ts +0 -672
- package/src/server/internal/html/constants.ts +0 -28
- package/src/server/internal/html/serviceWorker.client.ts +0 -28
- package/src/server/internal/html/serviceWorker.gen.ts +0 -2
- package/src/server/internal/html/serviceWorker.ts +0 -27
- package/src/server/internal/html/tsconfig.compose.json +0 -8
- package/src/server/internal/html/tsconfig.worker.client.json +0 -8
- package/src/server/internal/html/tsconfig.worker.json +0 -8
- package/src/server/internal/scope.ts +0 -43
- package/src/stripe/Charge.integration.test.ts +0 -329
- package/src/stripe/Methods.test.ts +0 -62
- package/src/stripe/Methods.ts +0 -44
- package/src/stripe/client/Charge.test.ts +0 -205
- package/src/stripe/client/Charge.ts +0 -132
- package/src/stripe/client/Methods.ts +0 -37
- package/src/stripe/client/index.ts +0 -2
- package/src/stripe/index.ts +0 -1
- package/src/stripe/internal/constants.ts +0 -7
- package/src/stripe/internal/types.ts +0 -46
- package/src/stripe/server/Charge.test-d.ts +0 -66
- package/src/stripe/server/Charge.test.ts +0 -621
- package/src/stripe/server/Charge.ts +0 -434
- package/src/stripe/server/Methods.ts +0 -24
- package/src/stripe/server/index.ts +0 -2
- package/src/stripe/server/internal/html/main.ts +0 -165
- package/src/stripe/server/internal/html/node_modules/.bin/mppx +0 -22
- package/src/stripe/server/internal/html/node_modules/.bin/mppx.src +0 -22
- package/src/stripe/server/internal/html/package.json +0 -9
- package/src/stripe/server/internal/html/stripe-js-pure.d.ts +0 -7
- package/src/stripe/server/internal/html/tsconfig.json +0 -8
- package/src/stripe/server/internal/html/types.ts +0 -5
- package/src/stripe/server/internal/html.gen.ts +0 -2
- package/src/tempo/AccessKeyAuthorization.test.ts +0 -141
- package/src/tempo/Attribution.test.ts +0 -294
- package/src/tempo/Attribution.ts +0 -185
- package/src/tempo/Methods.test.ts +0 -425
- package/src/tempo/Methods.ts +0 -367
- package/src/tempo/Proof.conformance.test.ts +0 -146
- package/src/tempo/Proof.test-d.ts +0 -32
- package/src/tempo/Proof.test.ts +0 -40
- package/src/tempo/Proof.ts +0 -69
- package/src/tempo/PublicExports.test-d.ts +0 -130
- package/src/tempo/Subscription.integration.test.ts +0 -591
- package/src/tempo/client/Charge.test.ts +0 -501
- package/src/tempo/client/Charge.ts +0 -289
- package/src/tempo/client/Methods.ts +0 -45
- package/src/tempo/client/ResolveAccount.ts +0 -46
- package/src/tempo/client/Subscription.test.ts +0 -180
- package/src/tempo/client/Subscription.ts +0 -156
- package/src/tempo/client/index.ts +0 -17
- package/src/tempo/index.ts +0 -5
- package/src/tempo/internal/account.ts +0 -56
- package/src/tempo/internal/address.ts +0 -6
- package/src/tempo/internal/auto-swap.test.ts +0 -198
- package/src/tempo/internal/auto-swap.ts +0 -188
- package/src/tempo/internal/charge.test.ts +0 -66
- package/src/tempo/internal/charge.ts +0 -43
- package/src/tempo/internal/defaults.test.ts +0 -95
- package/src/tempo/internal/defaults.ts +0 -53
- package/src/tempo/internal/fee-payer.test.ts +0 -1177
- package/src/tempo/internal/fee-payer.ts +0 -808
- package/src/tempo/internal/fee-token.test.ts +0 -165
- package/src/tempo/internal/fee-token.ts +0 -72
- package/src/tempo/internal/proof.test.ts +0 -97
- package/src/tempo/internal/proof.ts +0 -87
- package/src/tempo/internal/selectors.ts +0 -10
- package/src/tempo/internal/types.ts +0 -19
- package/src/tempo/legacy/AccessKeyAuthorization.test.ts +0 -162
- package/src/tempo/legacy/README.md +0 -9
- package/src/tempo/legacy/client/ChannelOps.test.ts +0 -379
- package/src/tempo/legacy/client/ChannelOps.ts +0 -271
- package/src/tempo/legacy/client/Session.test.ts +0 -800
- package/src/tempo/legacy/client/Session.ts +0 -397
- package/src/tempo/legacy/client/SessionManager.test.ts +0 -468
- package/src/tempo/legacy/client/SessionManager.ts +0 -909
- package/src/tempo/legacy/client/index.ts +0 -6
- package/src/tempo/legacy/index.ts +0 -6
- package/src/tempo/legacy/server/Defaults.test-d.ts +0 -9
- package/src/tempo/legacy/server/Session.test.ts +0 -6370
- package/src/tempo/legacy/server/Session.ts +0 -1024
- package/src/tempo/legacy/server/index.ts +0 -4
- package/src/tempo/legacy/session/Chain.test.ts +0 -1349
- package/src/tempo/legacy/session/Chain.ts +0 -830
- package/src/tempo/legacy/session/Channel.test.ts +0 -109
- package/src/tempo/legacy/session/Channel.ts +0 -51
- package/src/tempo/legacy/session/ChannelStore.test.ts +0 -58
- package/src/tempo/legacy/session/ChannelStore.ts +0 -39
- package/src/tempo/legacy/session/Types.ts +0 -91
- package/src/tempo/legacy/session/Voucher.test.ts +0 -410
- package/src/tempo/legacy/session/Voucher.ts +0 -183
- package/src/tempo/legacy/session/escrow.abi.ts +0 -760
- package/src/tempo/legacy/session/index.ts +0 -8
- package/src/tempo/server/AtomicStore.test-d.ts +0 -50
- package/src/tempo/server/Charge.test.ts +0 -6121
- package/src/tempo/server/Charge.ts +0 -1351
- package/src/tempo/server/Methods.ts +0 -106
- package/src/tempo/server/Relay.test.ts +0 -677
- package/src/tempo/server/Relay.ts +0 -297
- package/src/tempo/server/SponsorBudget.test.ts +0 -154
- package/src/tempo/server/SponsorBudget.ts +0 -219
- package/src/tempo/server/Sse.test.ts +0 -321
- package/src/tempo/server/Subscription.test.ts +0 -1944
- package/src/tempo/server/Subscription.ts +0 -1333
- package/src/tempo/server/index.ts +0 -12
- package/src/tempo/server/internal/html/main.ts +0 -115
- package/src/tempo/server/internal/html/node_modules/.bin/mppx +0 -22
- package/src/tempo/server/internal/html/node_modules/.bin/mppx.src +0 -22
- package/src/tempo/server/internal/html/package.json +0 -10
- package/src/tempo/server/internal/html/tsconfig.json +0 -8
- package/src/tempo/server/internal/html.gen.ts +0 -2
- package/src/tempo/server/internal/request-body.test.ts +0 -210
- package/src/tempo/server/internal/request-body.ts +0 -61
- package/src/tempo/server/internal/transport.test.ts +0 -903
- package/src/tempo/server/internal/transport.ts +0 -310
- package/src/tempo/session/README.md +0 -208
- package/src/tempo/session/Snapshot.test.ts +0 -41
- package/src/tempo/session/Snapshot.ts +0 -95
- package/src/tempo/session/client/ChannelOps.test.ts +0 -218
- package/src/tempo/session/client/ChannelOps.ts +0 -348
- package/src/tempo/session/client/ChannelStore.ts +0 -111
- package/src/tempo/session/client/CredentialState.test.ts +0 -789
- package/src/tempo/session/client/CredentialState.ts +0 -942
- package/src/tempo/session/client/ReceiptCoordinator.ts +0 -95
- package/src/tempo/session/client/Runtime.test.ts +0 -1104
- package/src/tempo/session/client/Runtime.ts +0 -1008
- package/src/tempo/session/client/Session.test.ts +0 -1355
- package/src/tempo/session/client/Session.ts +0 -420
- package/src/tempo/session/client/SessionManager.test.ts +0 -1899
- package/src/tempo/session/client/SessionManager.ts +0 -996
- package/src/tempo/session/client/Transports.test.ts +0 -1141
- package/src/tempo/session/client/Transports.ts +0 -1534
- package/src/tempo/session/client/index.ts +0 -40
- package/src/tempo/session/client/internal/SessionManager.ts +0 -36
- package/src/tempo/session/index.ts +0 -7
- package/src/tempo/session/precompile/Chain.integration.test.ts +0 -339
- package/src/tempo/session/precompile/Chain.test.ts +0 -1641
- package/src/tempo/session/precompile/Chain.ts +0 -1149
- package/src/tempo/session/precompile/Channel.test.ts +0 -147
- package/src/tempo/session/precompile/Channel.ts +0 -108
- package/src/tempo/session/precompile/Protocol.test.ts +0 -358
- package/src/tempo/session/precompile/Protocol.ts +0 -520
- package/src/tempo/session/precompile/Voucher.test.ts +0 -354
- package/src/tempo/session/precompile/Voucher.ts +0 -162
- package/src/tempo/session/precompile/escrow.abi.ts +0 -226
- package/src/tempo/session/precompile/index.ts +0 -33
- package/src/tempo/session/server/ChannelOps.test.ts +0 -129
- package/src/tempo/session/server/ChannelOps.ts +0 -157
- package/src/tempo/session/server/ChannelStore.test.ts +0 -1093
- package/src/tempo/session/server/ChannelStore.ts +0 -835
- package/src/tempo/session/server/CredentialVerification.test.ts +0 -299
- package/src/tempo/session/server/CredentialVerification.ts +0 -775
- package/src/tempo/session/server/MeteredStream.ts +0 -95
- package/src/tempo/session/server/RequestState.test.ts +0 -574
- package/src/tempo/session/server/RequestState.ts +0 -507
- package/src/tempo/session/server/Session.integration.test.ts +0 -449
- package/src/tempo/session/server/Session.test.ts +0 -3862
- package/src/tempo/session/server/Session.ts +0 -570
- package/src/tempo/session/server/Settlement.test.ts +0 -345
- package/src/tempo/session/server/Settlement.ts +0 -527
- package/src/tempo/session/server/Sse.fuzz.test.ts +0 -138
- package/src/tempo/session/server/Sse.test.ts +0 -557
- package/src/tempo/session/server/Sse.ts +0 -254
- package/src/tempo/session/server/Transports.test.ts +0 -346
- package/src/tempo/session/server/Transports.ts +0 -255
- package/src/tempo/session/server/Ws.test.ts +0 -594
- package/src/tempo/session/server/Ws.ts +0 -385
- package/src/tempo/session/server/index.ts +0 -12
- package/src/tempo/subscription/KeyAuthorization.test.ts +0 -282
- package/src/tempo/subscription/KeyAuthorization.ts +0 -396
- package/src/tempo/subscription/Receipt.ts +0 -28
- package/src/tempo/subscription/Store.test.ts +0 -609
- package/src/tempo/subscription/Store.ts +0 -449
- package/src/tempo/subscription/Types.ts +0 -68
- package/src/tempo/subscription/index.ts +0 -23
- package/src/tsconfig.json +0 -10
- package/src/validation/core.ts +0 -386
- package/src/validation/index.ts +0 -11
- package/src/viem/Account.test.ts +0 -72
- package/src/viem/Account.ts +0 -30
- package/src/viem/Client.test.ts +0 -366
- package/src/viem/Client.ts +0 -93
- package/src/x402/Assets.test.ts +0 -253
- package/src/x402/Assets.ts +0 -221
- package/src/x402/Exact.e2e.test.ts +0 -448
- package/src/x402/Exact.localnet.test.ts +0 -475
- package/src/x402/Header.test.ts +0 -73
- package/src/x402/Header.ts +0 -79
- package/src/x402/PublicInterface.test-d.ts +0 -39
- package/src/x402/Types.ts +0 -248
- package/src/x402/client/Exact.test.ts +0 -309
- package/src/x402/client/Exact.ts +0 -186
- package/src/x402/index.ts +0 -6
- package/src/x402/internal/ChallengeBrand.ts +0 -14
- package/src/x402/internal/RouteBinding.ts +0 -18
- package/src/x402/server/EvmCharge.ts +0 -394
- package/src/x402/server/Facilitator.test.ts +0 -111
- package/src/x402/server/Facilitator.ts +0 -56
- package/src/zod.test.ts +0 -169
- package/src/zod.ts +0 -71
package/src/Challenge.ts
DELETED
|
@@ -1,683 +0,0 @@
|
|
|
1
|
-
import { Base64, Bytes, Hash } from 'ox'
|
|
2
|
-
|
|
3
|
-
import * as Constants from './Constants.js'
|
|
4
|
-
import { constantTimeEqual } from './internal/constantTimeEqual.js'
|
|
5
|
-
import type { OneOf } from './internal/types.js'
|
|
6
|
-
import type * as Method from './Method.js'
|
|
7
|
-
import * as PaymentRequest from './PaymentRequest.js'
|
|
8
|
-
import * as z from './zod.js'
|
|
9
|
-
|
|
10
|
-
const maxRequestParameterLength = 16 * 1024
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Schema for a payment challenge.
|
|
14
|
-
*
|
|
15
|
-
* @example
|
|
16
|
-
* ```ts
|
|
17
|
-
* import { Challenge } from 'mppx'
|
|
18
|
-
*
|
|
19
|
-
* const challenge = Challenge.Schema.parse(data)
|
|
20
|
-
* ```
|
|
21
|
-
*/
|
|
22
|
-
export const Schema = z.object({
|
|
23
|
-
/** Optional human-readable description of the payment. */
|
|
24
|
-
description: z.optional(z.string()),
|
|
25
|
-
/** Optional digest of the request body (format: "sha-256=base64hash"). */
|
|
26
|
-
digest: z.optional(z.string().check(z.regex(/^sha-256=/, 'Invalid digest format'))),
|
|
27
|
-
/** Optional expiration timestamp (ISO 8601). */
|
|
28
|
-
expires: z.optional(z.datetime()),
|
|
29
|
-
/** Unique challenge identifier (HMAC-bound). */
|
|
30
|
-
id: z.string().check(z.minLength(1)),
|
|
31
|
-
/** Intent type (e.g., "charge", "session"). */
|
|
32
|
-
intent: z.string(),
|
|
33
|
-
/** Payment method (e.g., "tempo", "stripe"). */
|
|
34
|
-
method: z.string(),
|
|
35
|
-
/** Optional parsed server-defined correlation data. */
|
|
36
|
-
meta: z.optional(z.record(z.string(), z.string())),
|
|
37
|
-
/** Optional server-defined correlation data. Raw base64url string; clients MUST NOT modify. */
|
|
38
|
-
opaque: z.optional(z.string()),
|
|
39
|
-
/** Server realm (e.g., hostname). */
|
|
40
|
-
realm: z.string(),
|
|
41
|
-
/** Method-specific request data. */
|
|
42
|
-
request: z.record(z.string(), z.unknown()),
|
|
43
|
-
})
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* A parsed payment challenge from a `WWW-Authenticate` header.
|
|
47
|
-
*
|
|
48
|
-
* @example
|
|
49
|
-
* ```ts
|
|
50
|
-
* import { Challenge } from 'mppx'
|
|
51
|
-
*
|
|
52
|
-
* const challenge: Challenge.Challenge = {
|
|
53
|
-
* id: 'abc123',
|
|
54
|
-
* realm: 'api.example.com',
|
|
55
|
-
* method: 'tempo',
|
|
56
|
-
* intent: 'charge',
|
|
57
|
-
* request: { amount: '1000000', currency: '0x...', recipient: '0x...' },
|
|
58
|
-
* }
|
|
59
|
-
* ```
|
|
60
|
-
*/
|
|
61
|
-
export type Challenge<
|
|
62
|
-
request = Record<string, unknown>,
|
|
63
|
-
intent extends string = string,
|
|
64
|
-
method extends string = string,
|
|
65
|
-
> = Omit<z.infer<typeof Schema>, 'intent' | 'method' | 'request'> & {
|
|
66
|
-
intent: intent
|
|
67
|
-
method: method
|
|
68
|
-
request: request
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* Extracts a union of challenge types from an array of methods.
|
|
73
|
-
*/
|
|
74
|
-
export type FromMethods<methods extends readonly Method.Method[]> = {
|
|
75
|
-
[method in keyof methods]: Challenge<
|
|
76
|
-
z.output<methods[method]['schema']['request']>,
|
|
77
|
-
methods[method]['intent'],
|
|
78
|
-
methods[method]['name']
|
|
79
|
-
>
|
|
80
|
-
}[number]
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* Creates a challenge from the given parameters.
|
|
84
|
-
*
|
|
85
|
-
* If `secretKey` option is provided, the challenge ID is computed as HMAC-SHA256
|
|
86
|
-
* over the canonical challenge ID input
|
|
87
|
-
* (`realm|method|intent|request|expires|digest|opaque`),
|
|
88
|
-
* cryptographically binding the ID to its contents.
|
|
89
|
-
*
|
|
90
|
-
* @param parameters - Challenge parameters.
|
|
91
|
-
* @param options - Optional settings including secretKey for HMAC-bound ID.
|
|
92
|
-
* @returns A challenge.
|
|
93
|
-
*
|
|
94
|
-
* @example
|
|
95
|
-
* ```ts
|
|
96
|
-
* import { Challenge } from 'mppx'
|
|
97
|
-
*
|
|
98
|
-
* // With HMAC-bound ID (recommended for servers)
|
|
99
|
-
* const challenge = Challenge.from(
|
|
100
|
-
* {
|
|
101
|
-
* realm: 'api.example.com',
|
|
102
|
-
* method: 'tempo',
|
|
103
|
-
* intent: 'charge',
|
|
104
|
-
* request: { amount: '1000000', currency: '0x...', recipient: '0x...' },
|
|
105
|
-
* },
|
|
106
|
-
* { secretKey: 'my-secret' },
|
|
107
|
-
* )
|
|
108
|
-
*
|
|
109
|
-
* // With explicit ID
|
|
110
|
-
* const challenge = Challenge.from({
|
|
111
|
-
* id: 'abc123',
|
|
112
|
-
* realm: 'api.example.com',
|
|
113
|
-
* method: 'tempo',
|
|
114
|
-
* intent: 'charge',
|
|
115
|
-
* request: { amount: '1000000', currency: '0x...', recipient: '0x...' },
|
|
116
|
-
* })
|
|
117
|
-
* ```
|
|
118
|
-
*/
|
|
119
|
-
export function from<
|
|
120
|
-
const parameters extends from.Parameters,
|
|
121
|
-
const methods extends readonly Method.Method[] | undefined = undefined,
|
|
122
|
-
>(parameters: parameters, options?: from.Options<methods>): from.ReturnType<parameters, methods> {
|
|
123
|
-
void options
|
|
124
|
-
const {
|
|
125
|
-
description,
|
|
126
|
-
digest,
|
|
127
|
-
meta,
|
|
128
|
-
method: methodName,
|
|
129
|
-
intent,
|
|
130
|
-
realm,
|
|
131
|
-
request,
|
|
132
|
-
secretKey,
|
|
133
|
-
} = parameters
|
|
134
|
-
|
|
135
|
-
const expires = parameters.expires ? z.toDatetimeString(parameters.expires) : undefined
|
|
136
|
-
const opaque =
|
|
137
|
-
parameters.opaque ?? (meta !== undefined ? PaymentRequest.serialize(meta) : undefined)
|
|
138
|
-
const id = secretKey
|
|
139
|
-
? computeId(
|
|
140
|
-
{ ...parameters, expires, ...(meta !== undefined && { meta }), opaque },
|
|
141
|
-
{ secretKey },
|
|
142
|
-
)
|
|
143
|
-
: (parameters as { id: string }).id
|
|
144
|
-
|
|
145
|
-
return Schema.parse({
|
|
146
|
-
id,
|
|
147
|
-
realm,
|
|
148
|
-
method: methodName,
|
|
149
|
-
intent,
|
|
150
|
-
request,
|
|
151
|
-
...(description && { description }),
|
|
152
|
-
...(digest && { digest }),
|
|
153
|
-
...(expires && { expires }),
|
|
154
|
-
...(meta !== undefined && { meta }),
|
|
155
|
-
...(opaque !== undefined && { opaque }),
|
|
156
|
-
}) as from.ReturnType<parameters, methods>
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
export declare namespace from {
|
|
160
|
-
type Options<methods extends readonly Method.Method[] | undefined = undefined> = {
|
|
161
|
-
methods?: methods
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
type Parameters = OneOf<
|
|
165
|
-
| {
|
|
166
|
-
/** Explicit challenge ID. */
|
|
167
|
-
id: string
|
|
168
|
-
}
|
|
169
|
-
| {
|
|
170
|
-
/** Secret key for HMAC-bound challenge ID. */
|
|
171
|
-
secretKey: string
|
|
172
|
-
}
|
|
173
|
-
> & {
|
|
174
|
-
/** Optional human-readable description of the payment. */
|
|
175
|
-
description?: string | undefined
|
|
176
|
-
/** Optional digest of the request body. */
|
|
177
|
-
digest?: string | undefined
|
|
178
|
-
/** Optional expiration timestamp (ISO 8601). */
|
|
179
|
-
expires?: z.DatetimeInput | undefined
|
|
180
|
-
/** Intent type (e.g., "charge", "session"). */
|
|
181
|
-
intent: string
|
|
182
|
-
/** Optional server-defined correlation data (serialized as `opaque` on the challenge). Flat string-to-string map; clients MUST NOT modify. */
|
|
183
|
-
meta?: Record<string, string> | undefined
|
|
184
|
-
/** Optional raw base64url-encoded server-defined correlation data. Clients MUST NOT modify. */
|
|
185
|
-
opaque?: string | undefined
|
|
186
|
-
/** Payment method (e.g., "tempo", "stripe"). */
|
|
187
|
-
method: string
|
|
188
|
-
/** Server realm (e.g., hostname). */
|
|
189
|
-
realm: string
|
|
190
|
-
/** Method-specific request data. */
|
|
191
|
-
request: PaymentRequest.Request
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
type ReturnType<
|
|
195
|
-
parameters extends Parameters,
|
|
196
|
-
methods extends readonly Method.Method[] | undefined = undefined,
|
|
197
|
-
> = methods extends readonly Method.Method[]
|
|
198
|
-
? FromMethods<methods>
|
|
199
|
-
: Challenge<parameters['request']>
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
/**
|
|
203
|
-
* Creates a validated challenge from a method intent.
|
|
204
|
-
*
|
|
205
|
-
* If `secretKey` option is provided, the challenge ID is computed as HMAC-SHA256
|
|
206
|
-
* over the canonical challenge ID input, cryptographically binding the ID to its contents.
|
|
207
|
-
*
|
|
208
|
-
* @param intent - The method intent to validate against.
|
|
209
|
-
* @param parameters - Challenge parameters (realm, request, optional expires/digest, and id if no secretKey).
|
|
210
|
-
* @param options - Optional settings including secretKey for HMAC-bound ID.
|
|
211
|
-
* @returns A validated challenge.
|
|
212
|
-
*
|
|
213
|
-
* @example
|
|
214
|
-
* ```ts
|
|
215
|
-
* import { Challenge } from 'mppx'
|
|
216
|
-
* import { Methods } from 'mppx/tempo'
|
|
217
|
-
*
|
|
218
|
-
* // With HMAC-bound ID (recommended for servers)
|
|
219
|
-
* const challenge = Challenge.fromMethod(
|
|
220
|
-
* Methods.charge,
|
|
221
|
-
* {
|
|
222
|
-
* realm: 'api.example.com',
|
|
223
|
-
* expires: '2025-01-06T12:00:00Z',
|
|
224
|
-
* request: {
|
|
225
|
-
* amount: '1000000',
|
|
226
|
-
* currency: '0x20c0000000000000000000000000000000000001',
|
|
227
|
-
* recipient: '0x742d35Cc6634C0532925a3b844Bc9e7595f8fE00',
|
|
228
|
-
* },
|
|
229
|
-
* },
|
|
230
|
-
* { secretKey: 'my-secret' },
|
|
231
|
-
* )
|
|
232
|
-
* ```
|
|
233
|
-
*/
|
|
234
|
-
export function fromMethod<const method extends Method.Method>(
|
|
235
|
-
method: method,
|
|
236
|
-
parameters: fromMethod.Parameters<method>,
|
|
237
|
-
): fromMethod.ReturnType<method> {
|
|
238
|
-
const { name: methodName, intent } = method
|
|
239
|
-
const { description, digest, expires, id, meta, realm, secretKey } = parameters
|
|
240
|
-
|
|
241
|
-
const request = PaymentRequest.fromMethod(method, parameters.request)
|
|
242
|
-
|
|
243
|
-
return from({
|
|
244
|
-
...(id !== undefined ? { id } : { secretKey }),
|
|
245
|
-
realm,
|
|
246
|
-
method: methodName,
|
|
247
|
-
intent: intent,
|
|
248
|
-
request,
|
|
249
|
-
description,
|
|
250
|
-
digest,
|
|
251
|
-
expires,
|
|
252
|
-
meta,
|
|
253
|
-
} as from.Parameters) as fromMethod.ReturnType<method>
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
export declare namespace fromMethod {
|
|
257
|
-
type Parameters<method extends Method.Method> = OneOf<
|
|
258
|
-
| {
|
|
259
|
-
/** Explicit challenge ID. */
|
|
260
|
-
id: string
|
|
261
|
-
}
|
|
262
|
-
| {
|
|
263
|
-
/** Secret key for HMAC-bound challenge ID. */
|
|
264
|
-
secretKey: string
|
|
265
|
-
}
|
|
266
|
-
> & {
|
|
267
|
-
/** Optional human-readable description of the payment. */
|
|
268
|
-
description?: string | undefined
|
|
269
|
-
/** Optional digest of the request body. */
|
|
270
|
-
digest?: string | undefined
|
|
271
|
-
/** Optional expiration timestamp (ISO 8601). */
|
|
272
|
-
expires?: z.DatetimeInput | undefined
|
|
273
|
-
/** Optional server-defined correlation data (serialized as `opaque` on the challenge). Flat string-to-string map; clients MUST NOT modify. */
|
|
274
|
-
meta?: Record<string, string> | undefined
|
|
275
|
-
/** Server realm (e.g., hostname). */
|
|
276
|
-
realm: string
|
|
277
|
-
/** Method-specific request data. */
|
|
278
|
-
request: z.input<method['schema']['request']>
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
type ReturnType<method extends Method.Method> = Challenge<z.output<method['schema']['request']>>
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
/**
|
|
285
|
-
* Serializes a challenge to the WWW-Authenticate header format.
|
|
286
|
-
*
|
|
287
|
-
* @param challenge - The challenge to serialize.
|
|
288
|
-
* @returns A string suitable for the WWW-Authenticate header value.
|
|
289
|
-
*
|
|
290
|
-
* @example
|
|
291
|
-
* ```ts
|
|
292
|
-
* import { Challenge } from 'mppx'
|
|
293
|
-
*
|
|
294
|
-
* const header = Challenge.serialize(challenge)
|
|
295
|
-
* // => 'Payment id="abc123", realm="api.example.com", method="tempo", intent="charge", request="eyJhbW91bnQiOi..."'
|
|
296
|
-
* ```
|
|
297
|
-
*/
|
|
298
|
-
export function serialize(challenge: Challenge): string {
|
|
299
|
-
const parts = [
|
|
300
|
-
authParam('id', challenge.id),
|
|
301
|
-
authParam('realm', challenge.realm),
|
|
302
|
-
authParam('method', challenge.method),
|
|
303
|
-
authParam('intent', challenge.intent),
|
|
304
|
-
authParam('request', PaymentRequest.serialize(challenge.request)),
|
|
305
|
-
]
|
|
306
|
-
|
|
307
|
-
if (challenge.description !== undefined)
|
|
308
|
-
parts.push(authParam('description', challenge.description))
|
|
309
|
-
if (challenge.digest !== undefined) parts.push(authParam('digest', challenge.digest))
|
|
310
|
-
if (challenge.expires !== undefined) parts.push(authParam('expires', challenge.expires))
|
|
311
|
-
if (challenge.opaque !== undefined) parts.push(authParam('opaque', challenge.opaque))
|
|
312
|
-
else if (challenge.meta !== undefined)
|
|
313
|
-
parts.push(authParam('opaque', PaymentRequest.serialize(challenge.meta)))
|
|
314
|
-
|
|
315
|
-
return `${Constants.Schemes.payment} ${parts.join(', ')}`
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
/** @internal */
|
|
319
|
-
function authParam(name: string, value: string): string {
|
|
320
|
-
if (/[\r\n]/.test(value)) throw new Error('Invalid quoted-string value.')
|
|
321
|
-
return `${name}="${value.replace(/\\/g, '\\\\').replace(/"/g, '\\"')}"`
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
/**
|
|
325
|
-
* Deserializes a WWW-Authenticate header value to a challenge.
|
|
326
|
-
*
|
|
327
|
-
* @example
|
|
328
|
-
* ```ts
|
|
329
|
-
* import { Challenge } from 'mppx'
|
|
330
|
-
*
|
|
331
|
-
* const challenge = Challenge.deserialize(header)
|
|
332
|
-
*
|
|
333
|
-
* // With methods for type narrowing
|
|
334
|
-
* const challenge = Challenge.deserialize(header, { methods })
|
|
335
|
-
* ```
|
|
336
|
-
*
|
|
337
|
-
* @param header - The WWW-Authenticate header value.
|
|
338
|
-
* @param options - Optional settings to narrow the challenge type.
|
|
339
|
-
* @returns The deserialized challenge.
|
|
340
|
-
*/
|
|
341
|
-
export function deserialize<const methods extends readonly Method.Method[] | undefined = undefined>(
|
|
342
|
-
value: string,
|
|
343
|
-
options?: from.Options<methods>,
|
|
344
|
-
): from.ReturnType<from.Parameters, methods> {
|
|
345
|
-
const params = extractPaymentAuthParams(value)
|
|
346
|
-
if (!params) throw new Error('Missing Payment scheme.')
|
|
347
|
-
|
|
348
|
-
const result = parseAuthParams(params)
|
|
349
|
-
|
|
350
|
-
const { request, opaque, ...rest } = result
|
|
351
|
-
if (!request) throw new Error('Missing request parameter.')
|
|
352
|
-
if (request.length > maxRequestParameterLength) throw new Error('Request parameter too large.')
|
|
353
|
-
if (rest.method && !/^[a-z][a-z0-9:_-]*$/.test(rest.method))
|
|
354
|
-
throw new Error(`Invalid method: "${rest.method}". Must be lowercase per spec.`)
|
|
355
|
-
|
|
356
|
-
return from(
|
|
357
|
-
{
|
|
358
|
-
...rest,
|
|
359
|
-
request: PaymentRequest.deserialize(request),
|
|
360
|
-
...(opaque && { opaque }),
|
|
361
|
-
} as from.Parameters,
|
|
362
|
-
options,
|
|
363
|
-
)
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
/** @internal Extracts the `Payment` scheme from a WWW-Authenticate value that may contain multiple schemes. */
|
|
367
|
-
function extractPaymentAuthParams(header: string): string | null {
|
|
368
|
-
const token = Constants.Schemes.payment
|
|
369
|
-
let inQuotes = false
|
|
370
|
-
let escaped = false
|
|
371
|
-
|
|
372
|
-
for (let i = 0; i < header.length; i++) {
|
|
373
|
-
const char = header[i]
|
|
374
|
-
|
|
375
|
-
if (inQuotes) {
|
|
376
|
-
if (escaped) escaped = false
|
|
377
|
-
else if (char === '\\') escaped = true
|
|
378
|
-
else if (char === '"') inQuotes = false
|
|
379
|
-
continue
|
|
380
|
-
}
|
|
381
|
-
|
|
382
|
-
if (char === '"') {
|
|
383
|
-
inQuotes = true
|
|
384
|
-
continue
|
|
385
|
-
}
|
|
386
|
-
|
|
387
|
-
if (!startsWithSchemeToken(header, i, token)) continue
|
|
388
|
-
|
|
389
|
-
const prefix = header.slice(0, i)
|
|
390
|
-
if (prefix.trim() && !prefix.trimEnd().endsWith(',')) continue
|
|
391
|
-
|
|
392
|
-
let paramsStart = i + token.length
|
|
393
|
-
while (paramsStart < header.length && /\s/.test(header[paramsStart] ?? '')) paramsStart++
|
|
394
|
-
return header.slice(paramsStart)
|
|
395
|
-
}
|
|
396
|
-
|
|
397
|
-
return null
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
/** @internal Parses auth-params with support for escaped quoted-string values. */
|
|
401
|
-
function parseAuthParams(input: string): Record<string, string> {
|
|
402
|
-
const result: Record<string, string> = {}
|
|
403
|
-
let i = 0
|
|
404
|
-
|
|
405
|
-
while (i < input.length) {
|
|
406
|
-
while (i < input.length && /[\s,]/.test(input[i] ?? '')) i++
|
|
407
|
-
if (i >= input.length) break
|
|
408
|
-
|
|
409
|
-
const keyStart = i
|
|
410
|
-
while (i < input.length && /[A-Za-z0-9_-]/.test(input[i] ?? '')) i++
|
|
411
|
-
const key = input.slice(keyStart, i)
|
|
412
|
-
if (!key) throw new Error('Malformed auth-param.')
|
|
413
|
-
|
|
414
|
-
while (i < input.length && /\s/.test(input[i] ?? '')) i++
|
|
415
|
-
|
|
416
|
-
// If there is no '=' after a token, this is likely another auth scheme.
|
|
417
|
-
if (input[i] !== '=') break
|
|
418
|
-
i++
|
|
419
|
-
|
|
420
|
-
while (i < input.length && /\s/.test(input[i] ?? '')) i++
|
|
421
|
-
|
|
422
|
-
const [value, nextIndex] = readAuthParamValue(input, i)
|
|
423
|
-
i = nextIndex
|
|
424
|
-
|
|
425
|
-
if (key in result) throw new Error(`Duplicate parameter: ${key}`)
|
|
426
|
-
result[key] = value
|
|
427
|
-
}
|
|
428
|
-
|
|
429
|
-
return result
|
|
430
|
-
}
|
|
431
|
-
|
|
432
|
-
/** @internal */
|
|
433
|
-
function readAuthParamValue(input: string, start: number): [value: string, nextIndex: number] {
|
|
434
|
-
if (input[start] === '"') return readQuotedAuthParamValue(input, start + 1)
|
|
435
|
-
|
|
436
|
-
let i = start
|
|
437
|
-
while (i < input.length && input[i] !== ',') i++
|
|
438
|
-
return [input.slice(start, i).trim(), i]
|
|
439
|
-
}
|
|
440
|
-
|
|
441
|
-
/** @internal */
|
|
442
|
-
function readQuotedAuthParamValue(
|
|
443
|
-
input: string,
|
|
444
|
-
start: number,
|
|
445
|
-
): [value: string, nextIndex: number] {
|
|
446
|
-
let i = start
|
|
447
|
-
let escaped = false
|
|
448
|
-
let segmentStart = start
|
|
449
|
-
let parts: string[] | undefined
|
|
450
|
-
|
|
451
|
-
while (i < input.length) {
|
|
452
|
-
const char = input[i]!
|
|
453
|
-
i++
|
|
454
|
-
|
|
455
|
-
if (escaped) {
|
|
456
|
-
parts ??= []
|
|
457
|
-
parts.push(char)
|
|
458
|
-
segmentStart = i
|
|
459
|
-
escaped = false
|
|
460
|
-
continue
|
|
461
|
-
}
|
|
462
|
-
|
|
463
|
-
if (char === '\\') {
|
|
464
|
-
parts ??= []
|
|
465
|
-
parts.push(input.slice(segmentStart, i - 1))
|
|
466
|
-
segmentStart = i
|
|
467
|
-
escaped = true
|
|
468
|
-
continue
|
|
469
|
-
}
|
|
470
|
-
|
|
471
|
-
if (char === '"') {
|
|
472
|
-
const value = parts
|
|
473
|
-
? [...parts, input.slice(segmentStart, i - 1)].join('')
|
|
474
|
-
: input.slice(start, i - 1)
|
|
475
|
-
return [value, i]
|
|
476
|
-
}
|
|
477
|
-
}
|
|
478
|
-
|
|
479
|
-
throw new Error('Unterminated quoted-string.')
|
|
480
|
-
}
|
|
481
|
-
|
|
482
|
-
/** @internal */
|
|
483
|
-
function startsWithSchemeToken(value: string, index: number, token: string): boolean {
|
|
484
|
-
if (!value.slice(index).toLowerCase().startsWith(token.toLowerCase())) return false
|
|
485
|
-
const next = value[index + token.length]
|
|
486
|
-
return Boolean(next && /\s/.test(next))
|
|
487
|
-
}
|
|
488
|
-
|
|
489
|
-
/**
|
|
490
|
-
* Extracts the challenge from a Headers object.
|
|
491
|
-
*
|
|
492
|
-
* @param headers - The HTTP headers.
|
|
493
|
-
* @param options - Optional settings to narrow the challenge type.
|
|
494
|
-
* @returns The deserialized challenge.
|
|
495
|
-
*
|
|
496
|
-
* @example
|
|
497
|
-
* ```ts
|
|
498
|
-
* import { Challenge } from 'mppx'
|
|
499
|
-
*
|
|
500
|
-
* const challenge = Challenge.fromHeaders(response.headers)
|
|
501
|
-
*
|
|
502
|
-
* // With methods for type narrowing
|
|
503
|
-
* const challenge = Challenge.fromHeaders(response.headers, { methods })
|
|
504
|
-
* ```
|
|
505
|
-
*/
|
|
506
|
-
export function fromHeaders<const methods extends readonly Method.Method[] | undefined = undefined>(
|
|
507
|
-
headers: Headers,
|
|
508
|
-
options?: from.Options<methods>,
|
|
509
|
-
): from.ReturnType<from.Parameters, methods> {
|
|
510
|
-
const header = headers.get(Constants.Headers.wwwAuthenticate)
|
|
511
|
-
if (!header) throw new Error(`Missing ${Constants.Headers.wwwAuthenticate} header.`)
|
|
512
|
-
return deserialize(header, options)
|
|
513
|
-
}
|
|
514
|
-
|
|
515
|
-
/**
|
|
516
|
-
* Extracts the challenge from a Response's WWW-Authenticate header.
|
|
517
|
-
*
|
|
518
|
-
* @param response - The HTTP response (must be 402 status).
|
|
519
|
-
* @param options - Optional settings to narrow the challenge type.
|
|
520
|
-
* @returns The deserialized challenge.
|
|
521
|
-
*
|
|
522
|
-
* @example
|
|
523
|
-
* ```ts
|
|
524
|
-
* import { Challenge } from 'mppx'
|
|
525
|
-
*
|
|
526
|
-
* const response = await fetch('/resource')
|
|
527
|
-
* if (response.status === 402)
|
|
528
|
-
* const challenge = Challenge.fromResponse(response)
|
|
529
|
-
*
|
|
530
|
-
* // With methods for type narrowing
|
|
531
|
-
* const challenge = Challenge.fromResponse(response, { methods })
|
|
532
|
-
* ```
|
|
533
|
-
*/
|
|
534
|
-
export function fromResponse<
|
|
535
|
-
const methods extends readonly Method.Method[] | undefined = undefined,
|
|
536
|
-
>(response: Response, options?: from.Options<methods>): from.ReturnType<from.Parameters, methods> {
|
|
537
|
-
if (response.status !== 402) throw new Error('Response status is not 402.')
|
|
538
|
-
return fromHeaders(response.headers, options)
|
|
539
|
-
}
|
|
540
|
-
|
|
541
|
-
/**
|
|
542
|
-
* Extracts all Payment challenges from a Response with potentially merged
|
|
543
|
-
* `WWW-Authenticate` headers (multiple challenges in a single header value).
|
|
544
|
-
*
|
|
545
|
-
* @param response - The HTTP response (must be 402 status).
|
|
546
|
-
* @param options - Optional settings to narrow the challenge type.
|
|
547
|
-
* @returns An array of deserialized challenges.
|
|
548
|
-
*
|
|
549
|
-
* @example
|
|
550
|
-
* ```ts
|
|
551
|
-
* import { Challenge } from 'mppx'
|
|
552
|
-
*
|
|
553
|
-
* const response = await fetch('/resource')
|
|
554
|
-
* if (response.status === 402) {
|
|
555
|
-
* const challenges = Challenge.fromResponseList(response)
|
|
556
|
-
* // challenges[0] => tempo/charge, challenges[1] => stripe/charge
|
|
557
|
-
* }
|
|
558
|
-
* ```
|
|
559
|
-
*/
|
|
560
|
-
export function fromResponseList<
|
|
561
|
-
const methods extends readonly Method.Method[] | undefined = undefined,
|
|
562
|
-
>(
|
|
563
|
-
response: Response,
|
|
564
|
-
options?: from.Options<methods>,
|
|
565
|
-
): from.ReturnType<from.Parameters, methods>[] {
|
|
566
|
-
if (response.status !== 402) throw new Error('Response status is not 402.')
|
|
567
|
-
return fromHeadersList(response.headers, options)
|
|
568
|
-
}
|
|
569
|
-
|
|
570
|
-
/**
|
|
571
|
-
* Extracts all Payment challenges from a Headers object with potentially
|
|
572
|
-
* merged `WWW-Authenticate` values.
|
|
573
|
-
*
|
|
574
|
-
* @param headers - The HTTP headers.
|
|
575
|
-
* @param options - Optional settings to narrow the challenge type.
|
|
576
|
-
* @returns An array of deserialized challenges.
|
|
577
|
-
*/
|
|
578
|
-
export function fromHeadersList<
|
|
579
|
-
const methods extends readonly Method.Method[] | undefined = undefined,
|
|
580
|
-
>(headers: Headers, options?: from.Options<methods>): from.ReturnType<from.Parameters, methods>[] {
|
|
581
|
-
const header = headers.get(Constants.Headers.wwwAuthenticate)
|
|
582
|
-
if (!header) throw new Error(`Missing ${Constants.Headers.wwwAuthenticate} header.`)
|
|
583
|
-
return deserializeList(header, options)
|
|
584
|
-
}
|
|
585
|
-
|
|
586
|
-
/**
|
|
587
|
-
* Deserializes a `WWW-Authenticate` header value that may contain multiple
|
|
588
|
-
* Payment challenges (comma-separated per RFC 9110 §11.6.1).
|
|
589
|
-
*
|
|
590
|
-
* @param value - The raw WWW-Authenticate header value.
|
|
591
|
-
* @param options - Optional settings to narrow the challenge type.
|
|
592
|
-
* @returns An array of deserialized challenges.
|
|
593
|
-
*/
|
|
594
|
-
export function deserializeList<
|
|
595
|
-
const methods extends readonly Method.Method[] | undefined = undefined,
|
|
596
|
-
>(value: string, options?: from.Options<methods>): from.ReturnType<from.Parameters, methods>[] {
|
|
597
|
-
// Find the start index of each `Payment ` scheme prefix.
|
|
598
|
-
const starts: number[] = []
|
|
599
|
-
const schemePattern = new RegExp(`${Constants.Schemes.payment}\\s+`, 'gi')
|
|
600
|
-
for (const match of value.matchAll(schemePattern)) {
|
|
601
|
-
starts.push(match.index!)
|
|
602
|
-
}
|
|
603
|
-
if (starts.length === 0) throw new Error('No Payment schemes found.')
|
|
604
|
-
|
|
605
|
-
// Slice each scheme from its `Payment ` prefix up to the next scheme boundary,
|
|
606
|
-
// trimming any trailing comma/whitespace between schemes.
|
|
607
|
-
return starts.map((start, i) => {
|
|
608
|
-
const end = i + 1 < starts.length ? starts[i + 1]! : value.length
|
|
609
|
-
const chunk = value.slice(start, end).replace(/,\s*$/, '')
|
|
610
|
-
return deserialize(chunk, options)
|
|
611
|
-
})
|
|
612
|
-
}
|
|
613
|
-
|
|
614
|
-
/**
|
|
615
|
-
* Verifies that a challenge ID matches the expected HMAC for the given parameters.
|
|
616
|
-
*
|
|
617
|
-
* @param challenge - The challenge to verify.
|
|
618
|
-
* @param options - Options including the secret key.
|
|
619
|
-
* @returns True if the challenge ID is valid, false otherwise.
|
|
620
|
-
*
|
|
621
|
-
* @example
|
|
622
|
-
* ```ts
|
|
623
|
-
* import { Challenge } from 'mppx'
|
|
624
|
-
*
|
|
625
|
-
* const isValid = Challenge.verify(challenge, { secretKey: 'my-secret' })
|
|
626
|
-
* ```
|
|
627
|
-
*/
|
|
628
|
-
export function verify(challenge: Challenge, options: verify.Options): boolean {
|
|
629
|
-
const expectedId = computeId(challenge, options)
|
|
630
|
-
return constantTimeEqual(challenge.id, expectedId)
|
|
631
|
-
}
|
|
632
|
-
|
|
633
|
-
export declare namespace verify {
|
|
634
|
-
type Options = {
|
|
635
|
-
/** Secret key for HMAC-bound challenge ID verification. */
|
|
636
|
-
secretKey: string
|
|
637
|
-
}
|
|
638
|
-
}
|
|
639
|
-
|
|
640
|
-
/** Extracts parsed server-defined correlation data from a challenge when available. */
|
|
641
|
-
export function meta(challenge: Challenge): Record<string, string> | undefined {
|
|
642
|
-
return challenge.meta
|
|
643
|
-
}
|
|
644
|
-
|
|
645
|
-
/**
|
|
646
|
-
* Canonical HMAC input for challenge ID binding per §5.1.2.1.1 of the spec.
|
|
647
|
-
*
|
|
648
|
-
* Seven fixed positional slots, pipe-delimited. Optional fields use empty
|
|
649
|
-
* string when absent so the slot count is stable. This is the single source
|
|
650
|
-
* of truth for what the challenge ID binds to — used by both `computeId()`
|
|
651
|
-
* (challenge creation) and `verify()` (credential verification).
|
|
652
|
-
*
|
|
653
|
-
* Slots: realm | method | intent | request | expires | digest | opaque
|
|
654
|
-
*
|
|
655
|
-
* Because the HMAC covers ALL fields, the server does not need to separately
|
|
656
|
-
* pin opaque, digest, or expires during verification — any change to those
|
|
657
|
-
* fields produces a different HMAC and fails the ID comparison.
|
|
658
|
-
*/
|
|
659
|
-
function idBindingInput(challenge: Omit<Challenge, 'id'>): string {
|
|
660
|
-
return [
|
|
661
|
-
challenge.realm,
|
|
662
|
-
challenge.method,
|
|
663
|
-
challenge.intent,
|
|
664
|
-
PaymentRequest.serialize(challenge.request),
|
|
665
|
-
challenge.expires ?? '',
|
|
666
|
-
challenge.digest ?? '',
|
|
667
|
-
challenge.opaque ?? (challenge.meta ? PaymentRequest.serialize(challenge.meta) : ''),
|
|
668
|
-
].join('|')
|
|
669
|
-
}
|
|
670
|
-
|
|
671
|
-
/** @internal Computes HMAC-SHA256 challenge ID from parameters. */
|
|
672
|
-
function computeId(challenge: Omit<Challenge, 'id'>, options: { secretKey: string }): string {
|
|
673
|
-
// Each field occupies a fixed positional slot joined by '|'. Optional fields
|
|
674
|
-
// use an empty string when absent so the slot count is stable — this avoids
|
|
675
|
-
// ambiguity between e.g. (expires set, no digest) vs (no expires, digest set)
|
|
676
|
-
// and means adding a new optional field changes all HMACs exactly once.
|
|
677
|
-
const input = idBindingInput(challenge)
|
|
678
|
-
|
|
679
|
-
const key = Bytes.fromString(options.secretKey)
|
|
680
|
-
const data = Bytes.fromString(input)
|
|
681
|
-
const mac = Hash.hmac256(key, data, { as: 'Bytes' })
|
|
682
|
-
return Base64.fromBytes(mac, { url: true, pad: false })
|
|
683
|
-
}
|