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.
- package/CHANGELOG.md +55 -0
- package/README.md +15 -0
- package/dist/Challenge.js +21 -4
- package/dist/bin.js +3 -3
- package/dist/cli/THIRD-PARTY-LICENSES.txt +328 -0
- package/dist/cli/cli.js +253 -1505
- 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/request.d.ts +2 -0
- package/dist/cli/sessions/request.js +18 -0
- package/dist/cli/sessions/store.js +28 -14
- package/dist/discovery/Discovery.js +2 -1
- package/dist/evm/client/Charge.js +8 -0
- package/dist/server/core.d.ts +9 -0
- package/dist/server/core.js +9 -0
- package/dist/stripe/server/Charge.js +2 -4
- package/dist/stripe/server/Methods.d.ts +2 -2
- package/dist/stripe/server/Methods.js +17 -11
- 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/spt.d.ts +8 -0
- package/dist/stripe/server/spt.js +8 -0
- package/dist/tempo/Methods.d.ts +13 -0
- package/dist/tempo/Methods.js +14 -3
- package/dist/tempo/client/Charge.d.ts +3 -0
- package/dist/tempo/client/Charge.js +31 -9
- package/dist/tempo/client/Methods.d.ts +13 -0
- package/dist/tempo/internal/defaults.d.ts +11 -0
- package/dist/tempo/internal/defaults.js +11 -0
- 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/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 +13 -1
- 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/server/Charge.d.ts +3 -0
- package/dist/tempo/server/Charge.js +58 -17
- package/dist/tempo/server/Methods.d.ts +21 -4
- package/dist/tempo/server/Methods.js +8 -4
- package/dist/tempo/server/internal/html.gen.d.ts +1 -1
- package/dist/tempo/server/internal/html.gen.js +1 -1
- 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 +17 -2
- 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 +15 -3
- 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 +10 -2
- package/dist/tempo/session/precompile/Chain.js +50 -10
- 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 +3 -1
- package/dist/tempo/session/precompile/Voucher.js +6 -12
- package/dist/tempo/session/server/ChannelStore.d.ts +6 -0
- package/dist/tempo/session/server/ChannelStore.js +11 -4
- package/dist/tempo/session/server/CredentialVerification.d.ts +11 -9
- package/dist/tempo/session/server/CredentialVerification.js +185 -109
- package/dist/tempo/session/server/MeteredStream.d.ts +1 -1
- package/dist/tempo/session/server/MeteredStream.js +5 -4
- 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 +14 -2
- package/dist/tempo/session/server/Session.js +37 -6
- package/dist/tempo/session/server/Settlement.d.ts +11 -4
- package/dist/tempo/session/server/Settlement.js +53 -21
- 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 +23 -1
- package/package.json +15 -37
- 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/attestation/Client.d.ts.map +0 -1
- package/dist/attestation/Client.js.map +0 -1
- package/dist/attestation/Constants.d.ts.map +0 -1
- package/dist/attestation/Constants.js.map +0 -1
- package/dist/attestation/Server.d.ts.map +0 -1
- package/dist/attestation/Server.js.map +0 -1
- package/dist/attestation/Types.d.ts.map +0 -1
- package/dist/attestation/Types.js.map +0 -1
- package/dist/attestation/index.d.ts.map +0 -1
- package/dist/attestation/index.js.map +0 -1
- package/dist/attestation/internal/HttpMessageSignature.d.ts.map +0 -1
- package/dist/attestation/internal/HttpMessageSignature.js.map +0 -1
- package/dist/attestation/internal/SigningContext.d.ts.map +0 -1
- package/dist/attestation/internal/SigningContext.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/discovery/internal/Metadata.d.ts.map +0 -1
- package/dist/discovery/internal/Metadata.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/deposit-address.d.ts.map +0 -1
- package/dist/stripe/server/internal/deposit-address.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/stripe/server/internal/record-payment.d.ts.map +0 -1
- package/dist/stripe/server/internal/record-payment.js.map +0 -1
- package/dist/stripe/server/internal/request.d.ts.map +0 -1
- package/dist/stripe/server/internal/request.js.map +0 -1
- package/dist/tap/Constants.d.ts.map +0 -1
- package/dist/tap/Constants.js.map +0 -1
- package/dist/tap/Types.d.ts.map +0 -1
- package/dist/tap/Types.js.map +0 -1
- package/dist/tap/client/index.d.ts.map +0 -1
- package/dist/tap/client/index.js.map +0 -1
- package/dist/tap/index.d.ts.map +0 -1
- package/dist/tap/index.js.map +0 -1
- package/dist/tap/server/index.d.ts.map +0 -1
- package/dist/tap/server/index.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/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/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/web-bot-auth/Constants.d.ts.map +0 -1
- package/dist/web-bot-auth/Constants.js.map +0 -1
- package/dist/web-bot-auth/Types.d.ts.map +0 -1
- package/dist/web-bot-auth/Types.js.map +0 -1
- package/dist/web-bot-auth/client/index.d.ts.map +0 -1
- package/dist/web-bot-auth/client/index.js.map +0 -1
- package/dist/web-bot-auth/index.d.ts.map +0 -1
- package/dist/web-bot-auth/index.js.map +0 -1
- package/dist/web-bot-auth/internal/JwkThumbprint.d.ts.map +0 -1
- package/dist/web-bot-auth/internal/JwkThumbprint.js.map +0 -1
- package/dist/web-bot-auth/internal/SignatureAgent.d.ts.map +0 -1
- package/dist/web-bot-auth/internal/SignatureAgent.js.map +0 -1
- package/dist/web-bot-auth/server/index.d.ts.map +0 -1
- package/dist/web-bot-auth/server/index.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 -154
- package/src/Challenge.test-d.ts +0 -82
- package/src/Challenge.test.ts +0 -1060
- package/src/Challenge.ts +0 -687
- 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 -631
- 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 -211
- package/src/Store.test.ts +0 -407
- package/src/Store.ts +0 -397
- package/src/attestation/Attestation.integration.test.ts +0 -208
- package/src/attestation/Client.test.ts +0 -83
- package/src/attestation/Client.ts +0 -34
- package/src/attestation/Constants.ts +0 -15
- package/src/attestation/Server.test.ts +0 -60
- package/src/attestation/Server.ts +0 -12
- package/src/attestation/Types.test-d.ts +0 -54
- package/src/attestation/Types.ts +0 -77
- package/src/attestation/index.ts +0 -5
- package/src/attestation/internal/HttpMessageSignature.test.ts +0 -101
- package/src/attestation/internal/HttpMessageSignature.ts +0 -429
- package/src/attestation/internal/SigningContext.ts +0 -13
- package/src/bin.js +0 -2
- 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 -1650
- 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 -287
- package/src/client/Mppx.test.ts +0 -1065
- package/src/client/Mppx.ts +0 -487
- package/src/client/Transport.test.ts +0 -586
- package/src/client/Transport.ts +0 -170
- 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 -1075
- 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 -623
- package/src/discovery/OpenApi.ts +0 -192
- package/src/discovery/Validate.test.ts +0 -305
- package/src/discovery/Validate.ts +0 -77
- package/src/discovery/index.ts +0 -3
- package/src/discovery/internal/Metadata.ts +0 -51
- 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 -295
- 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 -347
- 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 -479
- package/src/mcp/client/McpClient.integration.test.ts +0 -639
- 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 -285
- package/src/middlewares/elysia.ts +0 -116
- package/src/middlewares/express.test.ts +0 -361
- package/src/middlewares/express.ts +0 -140
- package/src/middlewares/hono.test.ts +0 -473
- 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 -359
- package/src/middlewares/nextjs.ts +0 -107
- package/src/proxy/Proxy.test.ts +0 -1038
- package/src/proxy/Proxy.ts +0 -483
- package/src/proxy/Proxy.upstreamError.test.ts +0 -364
- package/src/proxy/Service.test.ts +0 -252
- package/src/proxy/Service.ts +0 -280
- 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 -53
- package/src/proxy/services/hooks.test-d.ts +0 -14
- package/src/proxy/services/hooks.test.ts +0 -44
- package/src/proxy/services/openai.test.ts +0 -157
- package/src/proxy/services/openai.ts +0 -60
- package/src/proxy/services/stripe.test.ts +0 -175
- package/src/proxy/services/stripe.ts +0 -59
- package/src/server/Methods.test-d.ts +0 -88
- package/src/server/Methods.test.ts +0 -69
- package/src/server/Methods.ts +0 -3
- package/src/server/Mppx.authorize.test.ts +0 -210
- package/src/server/Mppx.test-d.ts +0 -494
- package/src/server/Mppx.test.ts +0 -6711
- package/src/server/Mppx.ts +0 -2919
- 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 -47
- package/src/stripe/server/Charge.test-d.ts +0 -81
- package/src/stripe/server/Charge.test.ts +0 -700
- package/src/stripe/server/Charge.ts +0 -487
- package/src/stripe/server/Methods.test-d.ts +0 -157
- package/src/stripe/server/Methods.test.ts +0 -403
- package/src/stripe/server/Methods.ts +0 -441
- package/src/stripe/server/index.ts +0 -2
- package/src/stripe/server/internal/deposit-address.ts +0 -57
- 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/stripe/server/internal/record-payment.ts +0 -66
- package/src/stripe/server/internal/request.ts +0 -49
- package/src/tap/Constants.ts +0 -32
- package/src/tap/Tap.test.ts +0 -125
- package/src/tap/Types.ts +0 -11
- package/src/tap/client/index.ts +0 -54
- package/src/tap/index.ts +0 -4
- package/src/tap/server/index.ts +0 -48
- 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 -271
- 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.test.ts +0 -42
- 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 -145
- 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 -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/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 -63
- package/src/tempo/server/Charge.test.ts +0 -6056
- package/src/tempo/server/Charge.ts +0 -1379
- package/src/tempo/server/Methods.ts +0 -86
- 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 -1336
- 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 -922
- package/src/tempo/server/internal/transport.ts +0 -322
- package/src/tempo/session/README.md +0 -320
- 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 -1269
- 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 -856
- package/src/tempo/session/server/CredentialVerification.test.ts +0 -299
- package/src/tempo/session/server/CredentialVerification.ts +0 -1087
- package/src/tempo/session/server/MeteredStream.ts +0 -99
- 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 -4247
- package/src/tempo/session/server/Session.ts +0 -669
- 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 -634
- package/src/tempo/session/server/Sse.ts +0 -261
- package/src/tempo/session/server/Transports.test.ts +0 -346
- package/src/tempo/session/server/Transports.ts +0 -256
- package/src/tempo/session/server/Ws.test.ts +0 -765
- package/src/tempo/session/server/Ws.ts +0 -391
- 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/web-bot-auth/Constants.ts +0 -24
- package/src/web-bot-auth/Types.ts +0 -9
- package/src/web-bot-auth/WebBotAuth.test.ts +0 -182
- package/src/web-bot-auth/client/index.ts +0 -84
- package/src/web-bot-auth/index.ts +0 -6
- package/src/web-bot-auth/internal/JwkThumbprint.ts +0 -21
- package/src/web-bot-auth/internal/SignatureAgent.ts +0 -18
- package/src/web-bot-auth/server/index.ts +0 -113
- package/src/x402/Assets.test.ts +0 -253
- package/src/x402/Assets.ts +0 -221
- package/src/x402/Exact.e2e.test.ts +0 -488
- 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 -410
- 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
|
@@ -1,366 +0,0 @@
|
|
|
1
|
-
import type * as Challenge from '../Challenge.js'
|
|
2
|
-
import * as x402_ChallengeBrand from '../x402/internal/ChallengeBrand.js'
|
|
3
|
-
import type { MaybePromise } from './types.js'
|
|
4
|
-
|
|
5
|
-
type MethodLike = {
|
|
6
|
-
canHandleChallenge?: ((parameters: { challenge: Challenge.Challenge }) => boolean) | undefined
|
|
7
|
-
intent: string
|
|
8
|
-
name: string
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
/** Supported challenge paired with the configured client method that can sign it. */
|
|
12
|
-
export type ChallengeCandidate<method extends MethodLike = MethodLike> = method extends MethodLike
|
|
13
|
-
? {
|
|
14
|
-
challenge: Challenge.Challenge<Record<string, unknown>, method['intent'], method['name']>
|
|
15
|
-
index: number
|
|
16
|
-
method: method
|
|
17
|
-
}
|
|
18
|
-
: never
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Hook for filtering and sorting supported challenges before credential creation.
|
|
22
|
-
*
|
|
23
|
-
* Return candidates in preference order. The SDK signs the first returned
|
|
24
|
-
* candidate. Return an empty array to reject all offered challenges.
|
|
25
|
-
*/
|
|
26
|
-
export type OrderChallenges<methods extends readonly MethodLike[]> = (
|
|
27
|
-
candidates: readonly ChallengeCandidate<methods[number]>[],
|
|
28
|
-
) => MaybePromise<readonly ChallengeCandidate<methods[number]>[]>
|
|
29
|
-
|
|
30
|
-
/** Typed `method/intent` key for a configured payment capability. */
|
|
31
|
-
export type Key<methods extends readonly MethodLike[]> = methods[number] extends infer mi
|
|
32
|
-
? mi extends { name: infer name extends string; intent: infer intent extends string }
|
|
33
|
-
? `${name}/${intent}`
|
|
34
|
-
: never
|
|
35
|
-
: never
|
|
36
|
-
|
|
37
|
-
/** Method keys grouped by method name for ergonomic config callbacks. */
|
|
38
|
-
export type KeyTree<methods extends readonly MethodLike[]> = {
|
|
39
|
-
[name in methods[number]['name']]: {
|
|
40
|
-
[mi in Extract<
|
|
41
|
-
methods[number],
|
|
42
|
-
{ name: name }
|
|
43
|
-
> as mi['intent']]: `${mi['name']}/${mi['intent']}`
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/** Per-capability q-values keyed by typed `method/intent` strings. */
|
|
48
|
-
export type Definition<methods extends readonly MethodLike[]> = Partial<
|
|
49
|
-
Record<Key<methods>, number>
|
|
50
|
-
>
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Accept-Payment configuration.
|
|
54
|
-
*
|
|
55
|
-
* Callers may provide a plain definition map or a callback that receives a
|
|
56
|
-
* typed key tree for authoring preferences without string literals.
|
|
57
|
-
*/
|
|
58
|
-
export type Config<methods extends readonly MethodLike[]> =
|
|
59
|
-
| Definition<methods>
|
|
60
|
-
| ((keys: KeyTree<methods>) => Definition<methods>)
|
|
61
|
-
|
|
62
|
-
/** Parsed Accept-Payment entry with its original declaration order. */
|
|
63
|
-
export type Entry = {
|
|
64
|
-
intent: string | '*'
|
|
65
|
-
method: string | '*'
|
|
66
|
-
q: number
|
|
67
|
-
index: number
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
/** Resolved negotiation data derived from client methods and config. */
|
|
71
|
-
export type Resolved<methods extends readonly MethodLike[]> = {
|
|
72
|
-
definition: Definition<methods>
|
|
73
|
-
entries: Entry[]
|
|
74
|
-
header: string
|
|
75
|
-
keys: KeyTree<methods>
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
type Match = Entry & { specificity: number }
|
|
79
|
-
|
|
80
|
-
/** Builds the typed key tree used by callback-style preference config. */
|
|
81
|
-
export function buildKeys<const methods extends readonly MethodLike[]>(
|
|
82
|
-
methods: methods,
|
|
83
|
-
): KeyTree<methods> {
|
|
84
|
-
const keys: Record<string, Record<string, string>> = {}
|
|
85
|
-
|
|
86
|
-
for (const method of methods) {
|
|
87
|
-
const group = (keys[method.name] ??= {})
|
|
88
|
-
group[method.intent] = keyOf(method)
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
return keys as KeyTree<methods>
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
/** Resolves configured payment preferences into a header string and parsed entries. */
|
|
95
|
-
export function resolve<const methods extends readonly MethodLike[]>(
|
|
96
|
-
methods: methods,
|
|
97
|
-
config?: Config<methods>,
|
|
98
|
-
): Resolved<methods> {
|
|
99
|
-
const keys = buildKeys(methods)
|
|
100
|
-
const definition = resolveDefinition(methods, keys, config)
|
|
101
|
-
const entries = methods.map((method, index) => ({
|
|
102
|
-
intent: method.intent,
|
|
103
|
-
method: method.name,
|
|
104
|
-
q: definition[keyOf(method) as Key<methods>] ?? 1,
|
|
105
|
-
index,
|
|
106
|
-
}))
|
|
107
|
-
|
|
108
|
-
return {
|
|
109
|
-
definition,
|
|
110
|
-
entries,
|
|
111
|
-
header: serialize(entries),
|
|
112
|
-
keys,
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
/** Parses an `Accept-Payment` header into normalized preference entries. */
|
|
117
|
-
export function parse(header: string): Entry[] {
|
|
118
|
-
const parts = header
|
|
119
|
-
.split(/\s*,\s*/)
|
|
120
|
-
.map((part) => part.trim())
|
|
121
|
-
.filter(Boolean)
|
|
122
|
-
|
|
123
|
-
if (parts.length === 0) throw new Error('Accept-Payment header is empty.')
|
|
124
|
-
|
|
125
|
-
return parts.map((part, index) => parseEntry(part, index))
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
/** Serializes preference entries to an `Accept-Payment` header value. */
|
|
129
|
-
export function serialize(entries: readonly Omit<Entry, 'index'>[] | readonly Entry[]): string {
|
|
130
|
-
return entries
|
|
131
|
-
.map(({ method, intent, q }) => {
|
|
132
|
-
const value = `${method}/${intent}`
|
|
133
|
-
return q === 1 ? value : `${value};q=${formatQ(q)}`
|
|
134
|
-
})
|
|
135
|
-
.join(', ')
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
/**
|
|
139
|
-
* Orders offered payment methods by the best matching client preference.
|
|
140
|
-
*
|
|
141
|
-
* More specific matches win before comparing q-values, so an explicit opt-out
|
|
142
|
-
* like `tempo/charge;q=0` overrides a broader wildcard such as `tempo/*;q=1`.
|
|
143
|
-
*/
|
|
144
|
-
export function rank<const offer extends { intent: string; method: string }>(
|
|
145
|
-
offers: readonly offer[],
|
|
146
|
-
preferences: readonly Entry[],
|
|
147
|
-
): offer[] {
|
|
148
|
-
return offers
|
|
149
|
-
.map((offer, index) => {
|
|
150
|
-
const match = bestMatch(offer, preferences)
|
|
151
|
-
return match && match.q > 0 ? { match, offer, index } : undefined
|
|
152
|
-
})
|
|
153
|
-
.filter((candidate): candidate is NonNullable<typeof candidate> => Boolean(candidate))
|
|
154
|
-
.sort((left, right) => right.match.q - left.match.q || left.index - right.index)
|
|
155
|
-
.map(({ offer }) => offer)
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
/** Selects the best supported challenge from a set of server offers. */
|
|
159
|
-
export function selectChallenge<const methods extends readonly MethodLike[]>(
|
|
160
|
-
challenges: readonly Challenge.Challenge[],
|
|
161
|
-
methods: methods,
|
|
162
|
-
preferences: readonly Entry[],
|
|
163
|
-
):
|
|
164
|
-
| {
|
|
165
|
-
challenge: Challenge.Challenge
|
|
166
|
-
method: methods[number]
|
|
167
|
-
}
|
|
168
|
-
| undefined {
|
|
169
|
-
const candidate = selectChallengeCandidates(challenges, methods, preferences)[0]
|
|
170
|
-
if (!candidate) return undefined
|
|
171
|
-
|
|
172
|
-
return {
|
|
173
|
-
challenge: candidate.challenge,
|
|
174
|
-
method: candidate.method,
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
/** Returns supported challenge candidates ordered by client payment preferences. */
|
|
179
|
-
export function selectChallengeCandidates<const methods extends readonly MethodLike[]>(
|
|
180
|
-
challenges: readonly Challenge.Challenge[],
|
|
181
|
-
methods: methods,
|
|
182
|
-
preferences: readonly Entry[],
|
|
183
|
-
): ChallengeCandidate<methods[number]>[] {
|
|
184
|
-
const methodsByKey = new Map<string, methods[number][]>()
|
|
185
|
-
for (const method of methods) {
|
|
186
|
-
const key = keyOf(method)
|
|
187
|
-
const matchingMethods = methodsByKey.get(key)
|
|
188
|
-
if (matchingMethods) matchingMethods.push(method)
|
|
189
|
-
else methodsByKey.set(key, [method])
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
return challenges
|
|
193
|
-
.flatMap((challenge, index) => {
|
|
194
|
-
const matchingMethods = methodsByKey.get(keyOf(challenge))
|
|
195
|
-
if (!matchingMethods) return []
|
|
196
|
-
|
|
197
|
-
const match = bestMatch(challenge, preferences)
|
|
198
|
-
if (!match || match.q <= 0) return []
|
|
199
|
-
|
|
200
|
-
return matchingMethods
|
|
201
|
-
.filter((method) => method.canHandleChallenge?.({ challenge }) ?? true)
|
|
202
|
-
.map(
|
|
203
|
-
(method) =>
|
|
204
|
-
({
|
|
205
|
-
challenge,
|
|
206
|
-
index,
|
|
207
|
-
match,
|
|
208
|
-
method,
|
|
209
|
-
}) as ChallengeCandidate<methods[number]> & { match: Match },
|
|
210
|
-
)
|
|
211
|
-
})
|
|
212
|
-
.sort(
|
|
213
|
-
(left, right) =>
|
|
214
|
-
protocolRank(left.challenge) - protocolRank(right.challenge) ||
|
|
215
|
-
right.match.q - left.match.q ||
|
|
216
|
-
left.index - right.index,
|
|
217
|
-
)
|
|
218
|
-
.map((candidate) => {
|
|
219
|
-
const { match: _match, ...rest } = candidate
|
|
220
|
-
return rest as unknown as ChallengeCandidate<methods[number]>
|
|
221
|
-
})
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
/** Returns the canonical `method/intent` key for a method or challenge-like value. */
|
|
225
|
-
export function keyOf(value: { intent: string; method?: string; name?: string }): string {
|
|
226
|
-
const method = value.method ?? value.name
|
|
227
|
-
if (!method) throw new Error('Missing payment method name.')
|
|
228
|
-
return `${method}/${value.intent}`
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
function bestMatch(
|
|
232
|
-
offer: { intent: string; method: string },
|
|
233
|
-
preferences: readonly Entry[],
|
|
234
|
-
): Match | undefined {
|
|
235
|
-
let best: Match | undefined
|
|
236
|
-
|
|
237
|
-
for (const preference of preferences) {
|
|
238
|
-
if (!matches(offer, preference)) continue
|
|
239
|
-
|
|
240
|
-
const candidate = { ...preference, specificity: specificity(preference) }
|
|
241
|
-
if (
|
|
242
|
-
!best ||
|
|
243
|
-
candidate.specificity > best.specificity ||
|
|
244
|
-
(candidate.specificity === best.specificity && candidate.q > best.q) ||
|
|
245
|
-
(candidate.specificity === best.specificity &&
|
|
246
|
-
candidate.q === best.q &&
|
|
247
|
-
candidate.index < best.index)
|
|
248
|
-
) {
|
|
249
|
-
best = candidate
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
return best
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
function matches(
|
|
257
|
-
offer: { intent: string; method: string },
|
|
258
|
-
preference: Pick<Entry, 'intent' | 'method'>,
|
|
259
|
-
): boolean {
|
|
260
|
-
return (
|
|
261
|
-
(preference.method === '*' || preference.method === offer.method) &&
|
|
262
|
-
(preference.intent === '*' || preference.intent === offer.intent)
|
|
263
|
-
)
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
function specificity(preference: Pick<Entry, 'intent' | 'method'>): number {
|
|
267
|
-
return Number(preference.method !== '*') + Number(preference.intent !== '*')
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
function protocolRank(challenge: Challenge.Challenge): number {
|
|
271
|
-
return x402_ChallengeBrand.is(challenge) ? 1 : 0
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
function parseEntry(part: string, index: number): Entry {
|
|
275
|
-
const match =
|
|
276
|
-
/^(?<method>[^/;\s]+|\*)\s*\/\s*(?<intent>[^/;\s]+|\*)(?<params>(?:\s*;\s*.+)?)$/u.exec(part)
|
|
277
|
-
const method = match?.groups?.method
|
|
278
|
-
const intent = match?.groups?.intent
|
|
279
|
-
|
|
280
|
-
if (!method || !intent) {
|
|
281
|
-
throw new Error(`Invalid Accept-Payment entry: ${part}`)
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
assertToken(method, 'method')
|
|
285
|
-
assertToken(intent, 'intent')
|
|
286
|
-
|
|
287
|
-
let q = 1
|
|
288
|
-
for (const param of splitParameters(match.groups?.params)) {
|
|
289
|
-
if (!param) continue
|
|
290
|
-
|
|
291
|
-
const parameterMatch = /^(?<name>[A-Za-z0-9_-]+)\s*=\s*(?<value>\S+)$/u.exec(param)
|
|
292
|
-
const name = parameterMatch?.groups?.name
|
|
293
|
-
const rawValue = parameterMatch?.groups?.value
|
|
294
|
-
|
|
295
|
-
if (!name || !rawValue) {
|
|
296
|
-
throw new Error(`Invalid Accept-Payment parameter: ${param}`)
|
|
297
|
-
}
|
|
298
|
-
if (name !== 'q') continue
|
|
299
|
-
q = parseHeaderQ(rawValue, `Accept-Payment entry "${part}"`)
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
return { intent, method, q, index }
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
function splitParameters(value?: string): string[] {
|
|
306
|
-
return value ? value.split(/\s*;\s*/).filter(Boolean) : []
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
function resolveDefinition<const methods extends readonly MethodLike[]>(
|
|
310
|
-
methods: methods,
|
|
311
|
-
keys: KeyTree<methods>,
|
|
312
|
-
config?: Config<methods>,
|
|
313
|
-
): Definition<methods> {
|
|
314
|
-
if (!config) return {} as Definition<methods>
|
|
315
|
-
|
|
316
|
-
const raw = typeof config === 'function' ? config(keys) : config
|
|
317
|
-
const allowed = new Set(methods.map((method) => keyOf(method)))
|
|
318
|
-
const normalized: Record<string, number> = {}
|
|
319
|
-
|
|
320
|
-
for (const [key, value] of Object.entries(raw ?? {})) {
|
|
321
|
-
if (!allowed.has(key)) {
|
|
322
|
-
throw new Error(`Unknown payment preference "${key}". Available: ${[...allowed].join(', ')}`)
|
|
323
|
-
}
|
|
324
|
-
normalized[key] = parseQ(value, `payment preference "${key}"`)
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
return normalized as Definition<methods>
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
function parseQ(value: unknown, context: string): number {
|
|
331
|
-
if (typeof value !== 'number' || Number.isNaN(value) || !Number.isFinite(value)) {
|
|
332
|
-
throw new Error(`Invalid q-value for ${context}. Expected a finite number.`)
|
|
333
|
-
}
|
|
334
|
-
return assertQ(value, context)
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
function parseHeaderQ(value: string, context: string): number {
|
|
338
|
-
if (!/^0(?:\.\d{0,3})?$|^1(?:\.0{0,3})?$/.test(value)) {
|
|
339
|
-
throw new Error(`Invalid q-value for ${context}. Expected an HTTP qvalue.`)
|
|
340
|
-
}
|
|
341
|
-
return assertQ(Number(value), context)
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
function assertQ(value: number, context: string): number {
|
|
345
|
-
if (value < 0 || value > 1) {
|
|
346
|
-
throw new Error(`Invalid q-value for ${context}. Expected a value between 0 and 1.`)
|
|
347
|
-
}
|
|
348
|
-
const rounded = Math.round(value * 1000)
|
|
349
|
-
if (Math.abs(value * 1000 - rounded) > 1e-9) {
|
|
350
|
-
throw new Error(`Invalid q-value for ${context}. Expected at most 3 decimal places.`)
|
|
351
|
-
}
|
|
352
|
-
return rounded / 1000
|
|
353
|
-
}
|
|
354
|
-
|
|
355
|
-
function formatQ(value: number): string {
|
|
356
|
-
return value
|
|
357
|
-
.toFixed(3)
|
|
358
|
-
.replace(/\.0+$/, '')
|
|
359
|
-
.replace(/(\.\d*?)0+$/, '$1')
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
function assertToken(value: string, label: string): void {
|
|
363
|
-
if (value !== '*' && !/^[a-z0-9-]+$/.test(value)) {
|
|
364
|
-
throw new Error(`Invalid Accept-Payment ${label}: ${value}`)
|
|
365
|
-
}
|
|
366
|
-
}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { Base64 } from 'ox'
|
|
2
|
-
|
|
3
|
-
import type * as z from '../zod.js'
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Creates a typed codec for JSON HTTP header values.
|
|
7
|
-
*
|
|
8
|
-
* x402 uses plain base64 JSON header bodies, while the Payment auth scheme uses
|
|
9
|
-
* its own base64url/JCS serializers. Keep this helper internal so transports
|
|
10
|
-
* can opt into the exact wire encoding their protocol expects.
|
|
11
|
-
*/
|
|
12
|
-
export function createJson<const schema extends z.ZodMiniType>(schema: schema) {
|
|
13
|
-
type value = z.output<schema>
|
|
14
|
-
|
|
15
|
-
return {
|
|
16
|
-
encode(value: value): string {
|
|
17
|
-
return Base64.fromString(JSON.stringify(schema.parse(value)))
|
|
18
|
-
},
|
|
19
|
-
decode(value: string): value {
|
|
20
|
-
try {
|
|
21
|
-
return schema.parse(JSON.parse(Base64.toString(value))) as value
|
|
22
|
-
} catch {
|
|
23
|
-
throw new InvalidJsonHeaderError()
|
|
24
|
-
}
|
|
25
|
-
},
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
/** Error thrown when a JSON header value is not valid base64-encoded JSON. */
|
|
30
|
-
export class InvalidJsonHeaderError extends Error {
|
|
31
|
-
override readonly name = 'InvalidJsonHeaderError'
|
|
32
|
-
|
|
33
|
-
constructor() {
|
|
34
|
-
super('Invalid base64 JSON header.')
|
|
35
|
-
}
|
|
36
|
-
}
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
import * as fs from 'node:fs'
|
|
2
|
-
import * as path from 'node:path'
|
|
3
|
-
|
|
4
|
-
import { describe, expect, test } from 'vp/test'
|
|
5
|
-
|
|
6
|
-
const changesetDir = path.resolve(import.meta.dirname, '../../.changeset')
|
|
7
|
-
const validPackages = new Set(['mppx'])
|
|
8
|
-
const validBumpTypes = new Set(['major', 'minor', 'patch', 'none'])
|
|
9
|
-
|
|
10
|
-
function getChangesetFiles() {
|
|
11
|
-
return fs
|
|
12
|
-
.readdirSync(changesetDir)
|
|
13
|
-
.filter((f) => f.endsWith('.md') && f !== 'README.md' && !f.startsWith('.'))
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
function parseFrontmatter(content: string) {
|
|
17
|
-
const match = content.match(/^\s*---\n([^]*?)\n\s*---/)
|
|
18
|
-
if (!match) return undefined
|
|
19
|
-
return match[1]
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
function parseReleases(frontmatter: string) {
|
|
23
|
-
return [...frontmatter.matchAll(/^['"]?([^'":\n]+?)['"]?\s*:\s*(.+)$/gm)].map(
|
|
24
|
-
([, name, type]) => ({ name: name!.trim(), type: type!.trim().replace(/['"]/g, '') }),
|
|
25
|
-
)
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
describe('changesets', () => {
|
|
29
|
-
const files = getChangesetFiles()
|
|
30
|
-
|
|
31
|
-
test('all changeset files have valid frontmatter fences', () => {
|
|
32
|
-
for (const file of files) {
|
|
33
|
-
const content = fs.readFileSync(path.join(changesetDir, file), 'utf-8')
|
|
34
|
-
expect(content, `${file}: must start with "---"`).toMatch(/^---\n/)
|
|
35
|
-
const closingIdx = content.indexOf('---', 3)
|
|
36
|
-
expect(closingIdx, `${file}: missing closing "---" fence`).toBeGreaterThan(3)
|
|
37
|
-
|
|
38
|
-
// closing fence must not have trailing non-whitespace (parser chokes)
|
|
39
|
-
const afterClosing = content.slice(closingIdx + 3).split('\n')[0]!
|
|
40
|
-
expect(afterClosing.trim(), `${file}: trailing characters after closing "---"`).toBe('')
|
|
41
|
-
}
|
|
42
|
-
})
|
|
43
|
-
|
|
44
|
-
test('all changesets reference valid packages', () => {
|
|
45
|
-
for (const file of files) {
|
|
46
|
-
const content = fs.readFileSync(path.join(changesetDir, file), 'utf-8')
|
|
47
|
-
const frontmatter = parseFrontmatter(content)
|
|
48
|
-
if (!frontmatter) continue
|
|
49
|
-
for (const { name } of parseReleases(frontmatter)) {
|
|
50
|
-
expect(
|
|
51
|
-
validPackages.has(name),
|
|
52
|
-
`${file}: unknown package "${name}" (valid: ${[...validPackages].join(', ')})`,
|
|
53
|
-
).toBe(true)
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
})
|
|
57
|
-
|
|
58
|
-
test('all changesets use valid bump types', () => {
|
|
59
|
-
for (const file of files) {
|
|
60
|
-
const content = fs.readFileSync(path.join(changesetDir, file), 'utf-8')
|
|
61
|
-
const frontmatter = parseFrontmatter(content)
|
|
62
|
-
if (!frontmatter) continue
|
|
63
|
-
for (const { name, type } of parseReleases(frontmatter)) {
|
|
64
|
-
expect(
|
|
65
|
-
validBumpTypes.has(type),
|
|
66
|
-
`${file}: invalid bump type "${type}" for "${name}" (valid: major, minor, patch, none)`,
|
|
67
|
-
).toBe(true)
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
})
|
|
71
|
-
|
|
72
|
-
test('no changeset uses major bump (pre-v1 policy)', () => {
|
|
73
|
-
for (const file of files) {
|
|
74
|
-
const content = fs.readFileSync(path.join(changesetDir, file), 'utf-8')
|
|
75
|
-
const frontmatter = parseFrontmatter(content)
|
|
76
|
-
if (!frontmatter) continue
|
|
77
|
-
for (const { name, type } of parseReleases(frontmatter)) {
|
|
78
|
-
expect(type, `${file}: "${name}" uses major bump — pre-v1 policy forbids this`).not.toBe(
|
|
79
|
-
'major',
|
|
80
|
-
)
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
})
|
|
84
|
-
|
|
85
|
-
test('all changesets have a non-empty description', () => {
|
|
86
|
-
for (const file of files) {
|
|
87
|
-
const content = fs.readFileSync(path.join(changesetDir, file), 'utf-8')
|
|
88
|
-
const match = content.match(/^\s*---[^]*?---\s*(.*)$/s)
|
|
89
|
-
expect(match?.[1]?.trim(), `${file}: changeset has an empty description`).toBeTruthy()
|
|
90
|
-
}
|
|
91
|
-
})
|
|
92
|
-
|
|
93
|
-
test('no duplicate package entries in frontmatter', () => {
|
|
94
|
-
for (const file of files) {
|
|
95
|
-
const content = fs.readFileSync(path.join(changesetDir, file), 'utf-8')
|
|
96
|
-
const frontmatter = parseFrontmatter(content)
|
|
97
|
-
if (!frontmatter) continue
|
|
98
|
-
const releases = parseReleases(frontmatter)
|
|
99
|
-
const seen = new Set<string>()
|
|
100
|
-
for (const { name } of releases) {
|
|
101
|
-
expect(seen.has(name), `${file}: duplicate entry for "${name}"`).toBe(false)
|
|
102
|
-
seen.add(name)
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
})
|
|
106
|
-
})
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { describe, expect, test } from 'vp/test'
|
|
2
|
-
|
|
3
|
-
import { constantTimeEqual } from './constantTimeEqual.js'
|
|
4
|
-
|
|
5
|
-
describe('constantTimeEqual', () => {
|
|
6
|
-
test('returns true for identical strings', () => {
|
|
7
|
-
expect(constantTimeEqual('abc', 'abc')).toBe(true)
|
|
8
|
-
})
|
|
9
|
-
|
|
10
|
-
test('returns true for empty strings', () => {
|
|
11
|
-
expect(constantTimeEqual('', '')).toBe(true)
|
|
12
|
-
})
|
|
13
|
-
|
|
14
|
-
test('returns false for different strings of same length', () => {
|
|
15
|
-
expect(constantTimeEqual('abc', 'abd')).toBe(false)
|
|
16
|
-
})
|
|
17
|
-
|
|
18
|
-
test('returns false for different lengths', () => {
|
|
19
|
-
expect(constantTimeEqual('abc', 'abcd')).toBe(false)
|
|
20
|
-
expect(constantTimeEqual('abcd', 'abc')).toBe(false)
|
|
21
|
-
})
|
|
22
|
-
|
|
23
|
-
test('returns false for empty vs non-empty', () => {
|
|
24
|
-
expect(constantTimeEqual('', 'a')).toBe(false)
|
|
25
|
-
expect(constantTimeEqual('a', '')).toBe(false)
|
|
26
|
-
})
|
|
27
|
-
|
|
28
|
-
test('returns false when only first character differs', () => {
|
|
29
|
-
expect(constantTimeEqual('xbc', 'abc')).toBe(false)
|
|
30
|
-
})
|
|
31
|
-
|
|
32
|
-
test('returns false when only last character differs', () => {
|
|
33
|
-
expect(constantTimeEqual('abx', 'abc')).toBe(false)
|
|
34
|
-
})
|
|
35
|
-
|
|
36
|
-
test('handles base64url strings (typical HMAC output)', () => {
|
|
37
|
-
const a = 'dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk'
|
|
38
|
-
const b = 'dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk'
|
|
39
|
-
expect(constantTimeEqual(a, b)).toBe(true)
|
|
40
|
-
})
|
|
41
|
-
|
|
42
|
-
test('detects single-bit difference in base64url strings', () => {
|
|
43
|
-
const a = 'dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk'
|
|
44
|
-
const b = 'dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXl'
|
|
45
|
-
expect(constantTimeEqual(a, b)).toBe(false)
|
|
46
|
-
})
|
|
47
|
-
})
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { Hash, Hex } from 'ox'
|
|
2
|
-
|
|
3
|
-
/** Constant-time string comparison to prevent timing attacks. */
|
|
4
|
-
export function constantTimeEqual(a: string, b: string): boolean {
|
|
5
|
-
const hashA = Hash.sha256(Hex.fromString(a))
|
|
6
|
-
const hashB = Hash.sha256(Hex.fromString(b))
|
|
7
|
-
let result = 0
|
|
8
|
-
for (let i = 0; i < hashA.length; i++) result |= hashA.charCodeAt(i) ^ hashB.charCodeAt(i)
|
|
9
|
-
return result === 0
|
|
10
|
-
}
|
package/src/internal/env.test.ts
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import * as Env from './env.js'
|
|
2
|
-
|
|
3
|
-
afterEach(() => {
|
|
4
|
-
vi.unstubAllEnvs()
|
|
5
|
-
})
|
|
6
|
-
|
|
7
|
-
describe('Env.get', () => {
|
|
8
|
-
test('returns undefined when no env vars are set', () => {
|
|
9
|
-
expect(Env.get('realm')).toBeUndefined()
|
|
10
|
-
})
|
|
11
|
-
|
|
12
|
-
test('returns undefined when MPP_SECRET_KEY is not set', () => {
|
|
13
|
-
expect(Env.get('secretKey')).toBeUndefined()
|
|
14
|
-
})
|
|
15
|
-
|
|
16
|
-
test('returns MPP_SECRET_KEY when set', () => {
|
|
17
|
-
vi.stubEnv('MPP_SECRET_KEY', 'sk_live_abc123')
|
|
18
|
-
expect(Env.get('secretKey')).toBe('sk_live_abc123')
|
|
19
|
-
})
|
|
20
|
-
|
|
21
|
-
test('MPP_REALM takes precedence over platform vars', () => {
|
|
22
|
-
vi.stubEnv('MPP_REALM', 'custom-realm')
|
|
23
|
-
vi.stubEnv('FLY_APP_NAME', 'fly-app')
|
|
24
|
-
expect(Env.get('realm')).toBe('custom-realm')
|
|
25
|
-
})
|
|
26
|
-
|
|
27
|
-
test('returns FLY_APP_NAME when set', () => {
|
|
28
|
-
vi.stubEnv('FLY_APP_NAME', 'my-fly-app')
|
|
29
|
-
expect(Env.get('realm')).toBe('my-fly-app')
|
|
30
|
-
})
|
|
31
|
-
|
|
32
|
-
test('FLY_APP_NAME takes precedence over VERCEL_URL', () => {
|
|
33
|
-
vi.stubEnv('FLY_APP_NAME', 'fly-app')
|
|
34
|
-
vi.stubEnv('VERCEL_URL', 'my-app.vercel.app')
|
|
35
|
-
expect(Env.get('realm')).toBe('fly-app')
|
|
36
|
-
})
|
|
37
|
-
|
|
38
|
-
test('falls through to later vars when earlier ones are unset', () => {
|
|
39
|
-
vi.stubEnv('VERCEL_URL', 'my-app.vercel.app')
|
|
40
|
-
expect(Env.get('realm')).toBe('my-app.vercel.app')
|
|
41
|
-
})
|
|
42
|
-
})
|
package/src/internal/env.ts
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
/** Map of configuration keys to environment variable names, checked in order. */
|
|
2
|
-
const variables = {
|
|
3
|
-
realm: [
|
|
4
|
-
'MPP_REALM',
|
|
5
|
-
'FLY_APP_NAME',
|
|
6
|
-
'HEROKU_APP_NAME',
|
|
7
|
-
'RAILWAY_PUBLIC_DOMAIN',
|
|
8
|
-
'RENDER_EXTERNAL_HOSTNAME',
|
|
9
|
-
'VERCEL_URL',
|
|
10
|
-
'WEBSITE_HOSTNAME',
|
|
11
|
-
],
|
|
12
|
-
secretKey: ['MPP_SECRET_KEY'],
|
|
13
|
-
} as const satisfies Record<string, readonly string[]>
|
|
14
|
-
|
|
15
|
-
/** Fallback values when no environment variable is set. */
|
|
16
|
-
const defaults = {} as const satisfies Partial<Record<keyof typeof variables, string>>
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Resolves a configuration value from environment variables.
|
|
20
|
-
*
|
|
21
|
-
* Checks platform-specific env vars in order, falling back to a default if one exists.
|
|
22
|
-
*
|
|
23
|
-
* @example
|
|
24
|
-
* ```ts
|
|
25
|
-
* Env.get('realm') // e.g. "my-app.vercel.app"
|
|
26
|
-
* Env.get('secretKey') // e.g. value of MPP_SECRET_KEY
|
|
27
|
-
* ```
|
|
28
|
-
*/
|
|
29
|
-
export function get(key: keyof typeof variables): string | undefined {
|
|
30
|
-
for (const name of variables[key]) {
|
|
31
|
-
const value = read(name)
|
|
32
|
-
if (value) return value
|
|
33
|
-
}
|
|
34
|
-
return (defaults as Record<string, string | undefined>)[key]
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/** Reads a single environment variable, probing available runtime APIs. */
|
|
38
|
-
function read(name: string): string | undefined {
|
|
39
|
-
try {
|
|
40
|
-
if (typeof process !== 'undefined' && process?.env) return process.env[name] || undefined
|
|
41
|
-
} catch {}
|
|
42
|
-
|
|
43
|
-
try {
|
|
44
|
-
const deno = (globalThis as any).Deno
|
|
45
|
-
if (deno?.env?.get) return deno.env.get(name) || undefined
|
|
46
|
-
} catch {}
|
|
47
|
-
|
|
48
|
-
return undefined
|
|
49
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { expectTypeOf, test } from 'vp/test'
|
|
2
|
-
|
|
3
|
-
import type { ConfiguredDefaults } from './types.js'
|
|
4
|
-
|
|
5
|
-
test('ConfiguredDefaults retains only known defined values', () => {
|
|
6
|
-
type Parameters = {
|
|
7
|
-
configured: string
|
|
8
|
-
maybeDefined?: number | undefined
|
|
9
|
-
explicitlyUndefined: boolean | undefined
|
|
10
|
-
unrelated: bigint
|
|
11
|
-
}
|
|
12
|
-
type Defaults = {
|
|
13
|
-
configured?: string | undefined
|
|
14
|
-
maybeDefined?: number | undefined
|
|
15
|
-
explicitlyUndefined?: boolean | undefined
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
expectTypeOf<ConfiguredDefaults<Parameters, Defaults>>().toEqualTypeOf<{
|
|
19
|
-
configured: string
|
|
20
|
-
}>()
|
|
21
|
-
})
|