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
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as SigningContext from './internal/SigningContext.js';
|
|
2
|
+
/**
|
|
3
|
+
* Combines request signers using one shared context per call.
|
|
4
|
+
*
|
|
5
|
+
* The returned signer creates a fresh context unless its caller supplies one,
|
|
6
|
+
* allowing every signature on one HTTP attempt to share a nonce and timestamp.
|
|
7
|
+
*/
|
|
8
|
+
export function composeSigners(...signers) {
|
|
9
|
+
return {
|
|
10
|
+
protocol: 'composed',
|
|
11
|
+
async sign(request, context = SigningContext.create()) {
|
|
12
|
+
for (const signer of signers)
|
|
13
|
+
request = await signer.sign(request, context);
|
|
14
|
+
return request;
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Wraps a fetch implementation so every outbound request is attested.
|
|
20
|
+
*
|
|
21
|
+
* Configure this wrapper as the underlying `fetch` passed to `mppx/client`
|
|
22
|
+
* `Fetch.from()`. MPPX then uses it for both the initial request and its
|
|
23
|
+
* automatic request containing an `Authorization: Payment` credential.
|
|
24
|
+
*/
|
|
25
|
+
export function wrapFetch(fetch, signer) {
|
|
26
|
+
return async (input, init) => fetch(await signer.sign(new Request(input, init)));
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=Client.js.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** RFC 9421 signature algorithms supported by request attestation. */
|
|
2
|
+
export declare const Algorithms: {
|
|
3
|
+
/** EdDSA using the Ed25519 curve. */
|
|
4
|
+
readonly ed25519: 'ed25519';
|
|
5
|
+
/** RSASSA-PSS using SHA-512 and a 64-byte salt. */
|
|
6
|
+
readonly rsaPssSha512: 'rsa-pss-sha512';
|
|
7
|
+
};
|
|
8
|
+
/** HTTP headers defined by RFC 9421 for request-attestation signatures. */
|
|
9
|
+
export declare const Headers: {
|
|
10
|
+
/** Carries the RFC 9421 signature bytes. */
|
|
11
|
+
readonly signature: 'Signature';
|
|
12
|
+
/** Carries the RFC 9421 covered components and signature parameters. */
|
|
13
|
+
readonly signatureInput: 'Signature-Input';
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=Constants.d.ts.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** RFC 9421 signature algorithms supported by request attestation. */
|
|
2
|
+
export const Algorithms = {
|
|
3
|
+
/** EdDSA using the Ed25519 curve. */
|
|
4
|
+
ed25519: 'ed25519',
|
|
5
|
+
/** RSASSA-PSS using SHA-512 and a 64-byte salt. */
|
|
6
|
+
rsaPssSha512: 'rsa-pss-sha512',
|
|
7
|
+
};
|
|
8
|
+
/** HTTP headers defined by RFC 9421 for request-attestation signatures. */
|
|
9
|
+
export const Headers = {
|
|
10
|
+
/** Carries the RFC 9421 signature bytes. */
|
|
11
|
+
signature: 'Signature',
|
|
12
|
+
/** Carries the RFC 9421 covered components and signature parameters. */
|
|
13
|
+
signatureInput: 'Signature-Input',
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=Constants.js.map
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type * as Types from './Types.js';
|
|
2
|
+
/** Verifies every configured request-attestation protocol. */
|
|
3
|
+
export declare function verify<const verifiers extends Types.VerifierMap>(request: Request, verifiers: verifiers): Promise<Types.VerificationsFrom<verifiers>>;
|
|
4
|
+
//# sourceMappingURL=Server.d.ts.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Verifies every configured request-attestation protocol. */
|
|
2
|
+
export async function verify(request, verifiers) {
|
|
3
|
+
const outcomes = {};
|
|
4
|
+
for (const [name, verifier] of Object.entries(verifiers))
|
|
5
|
+
outcomes[name] = await verifier.verify(request);
|
|
6
|
+
return outcomes;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=Server.js.map
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type { MaybePromise } from '../internal/types.js';
|
|
2
|
+
import type { Algorithms } from './Constants.js';
|
|
3
|
+
/** RFC 9421 algorithms implemented by the request-attestation signer and verifier. */
|
|
4
|
+
export type SignatureAlgorithm = (typeof Algorithms)[keyof typeof Algorithms];
|
|
5
|
+
/** Resolves a trusted public key for a parsed request signature. */
|
|
6
|
+
export type KeyResolver = (parameters: {
|
|
7
|
+
/** RFC 9421 algorithm declared by the signature. */
|
|
8
|
+
algorithm: SignatureAlgorithm;
|
|
9
|
+
/** Key identifier declared by the signature. */
|
|
10
|
+
keyId: string;
|
|
11
|
+
/** Request carrying the signature. */
|
|
12
|
+
request: Request;
|
|
13
|
+
}) => MaybePromise<CryptoKey | undefined>;
|
|
14
|
+
/**
|
|
15
|
+
* The complete outcome of attempting one protocol verifier.
|
|
16
|
+
*
|
|
17
|
+
* `absent` means the protocol did not appear on the request. `invalid` means
|
|
18
|
+
* it appeared but failed validation and must reject the request. `unverified`
|
|
19
|
+
* means key material or another required verification dependency was unavailable.
|
|
20
|
+
* `verified` carries protocol-specific data that is safe for callers to inspect.
|
|
21
|
+
*/
|
|
22
|
+
export type Verification<value = unknown> = {
|
|
23
|
+
status: 'absent';
|
|
24
|
+
} | {
|
|
25
|
+
status: 'invalid';
|
|
26
|
+
reason: string;
|
|
27
|
+
} | {
|
|
28
|
+
status: 'unverified';
|
|
29
|
+
reason: string;
|
|
30
|
+
} | {
|
|
31
|
+
status: 'verified';
|
|
32
|
+
value: value;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Verifies one request-attestation protocol carried by an HTTP request.
|
|
36
|
+
*
|
|
37
|
+
* Verifiers are registered in a {@link VerifierMap}; each map key names the
|
|
38
|
+
* result returned to the caller.
|
|
39
|
+
*/
|
|
40
|
+
export type Verifier<value = unknown> = {
|
|
41
|
+
/** Validates the request and returns a complete protocol verification outcome. */
|
|
42
|
+
verify: (request: Request) => MaybePromise<Verification<value>>;
|
|
43
|
+
};
|
|
44
|
+
/** Maps each recognized protocol name to its verifier. */
|
|
45
|
+
export type VerifierMap = Readonly<Record<string, Verifier>>;
|
|
46
|
+
/** Preserves each configured protocol's complete verification outcome. */
|
|
47
|
+
export type VerificationsFrom<verifiers extends VerifierMap> = {
|
|
48
|
+
readonly [protocol in keyof verifiers]: Awaited<ReturnType<verifiers[protocol]['verify']>>;
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Values shared by every signer contributing to one HTTP request attempt.
|
|
52
|
+
*
|
|
53
|
+
* A caller may reuse this context across independent signature protocols so
|
|
54
|
+
* they describe the same attempt. A later network retry must use a new context.
|
|
55
|
+
*/
|
|
56
|
+
export type SigningContext = {
|
|
57
|
+
/** Unix timestamp, in seconds, at which the request attempt was created. */
|
|
58
|
+
readonly created: number;
|
|
59
|
+
/** Base64url-encoded random value identifying this request attempt. */
|
|
60
|
+
readonly nonce: string;
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Signs each outbound HTTP request, including MPP payment retries.
|
|
64
|
+
*
|
|
65
|
+
* The protocol type preserves which adapter produced the signer for diagnostics
|
|
66
|
+
* and composition, without asserting that the signer alone authorizes payment.
|
|
67
|
+
*/
|
|
68
|
+
export type Signer<protocol extends string = string> = {
|
|
69
|
+
/** Protocol identifier used for diagnostics. */
|
|
70
|
+
protocol: protocol;
|
|
71
|
+
/** Returns a new request containing the protocol's signature material. */
|
|
72
|
+
sign: (request: Request, context?: SigningContext | undefined) => MaybePromise<Request>;
|
|
73
|
+
};
|
|
74
|
+
/** Maps application-defined names to request-attestation signers. */
|
|
75
|
+
export type SignerMap = Readonly<Record<string, Signer>>;
|
|
76
|
+
//# sourceMappingURL=Types.d.ts.map
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { BareItem } from 'structured-headers';
|
|
2
|
+
import type { MaybePromise } from '../../internal/types.js';
|
|
3
|
+
import * as Store from '../../Store.js';
|
|
4
|
+
import type { KeyResolver, SignatureAlgorithm, SigningContext } from '../Types.js';
|
|
5
|
+
/** RFC 9421 constants used by request-attestation signature profiles. */
|
|
6
|
+
export declare const Constants: {
|
|
7
|
+
/** Derived request components supported by this narrow request profile. */
|
|
8
|
+
readonly components: {
|
|
9
|
+
/** The target host and non-default port. */
|
|
10
|
+
readonly authority: '@authority';
|
|
11
|
+
/** The request URL path without its query string. */
|
|
12
|
+
readonly path: '@path';
|
|
13
|
+
/** The lowercased `Signature-Agent` request header. */
|
|
14
|
+
readonly signatureAgent: 'signature-agent';
|
|
15
|
+
/** The signature's canonicalized covered-components and parameters. */
|
|
16
|
+
readonly signatureParams: '@signature-params';
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
/** A covered HTTP message component and its RFC 9421 component parameters. */
|
|
20
|
+
export type Component = {
|
|
21
|
+
/** Derived component identifier or lowercased HTTP field name. */
|
|
22
|
+
id: string;
|
|
23
|
+
/** Parameters that qualify the component, such as `;key="agent"`. */
|
|
24
|
+
parameters?: ReadonlyMap<string, BareItem> | undefined;
|
|
25
|
+
};
|
|
26
|
+
/** Input accepted by signers; bare strings denote unparameterized components. */
|
|
27
|
+
export type ComponentInput = string | Component;
|
|
28
|
+
export type SignatureInput = {
|
|
29
|
+
algorithm: SignatureAlgorithm;
|
|
30
|
+
components: readonly Component[];
|
|
31
|
+
created: number;
|
|
32
|
+
expires: number;
|
|
33
|
+
keyId: string;
|
|
34
|
+
label: string;
|
|
35
|
+
nonce: string;
|
|
36
|
+
parameters: ReadonlyMap<string, BareItem>;
|
|
37
|
+
tag: string;
|
|
38
|
+
};
|
|
39
|
+
/** Result of validating one supported RFC 9421 signature. */
|
|
40
|
+
export type VerificationResult = {
|
|
41
|
+
status: 'absent';
|
|
42
|
+
} | {
|
|
43
|
+
status: 'invalid';
|
|
44
|
+
reason: string;
|
|
45
|
+
} | {
|
|
46
|
+
status: 'unverified';
|
|
47
|
+
reason: string;
|
|
48
|
+
} | {
|
|
49
|
+
status: 'verified';
|
|
50
|
+
input: SignatureInput;
|
|
51
|
+
};
|
|
52
|
+
/** Signs a request using the configured RFC 9421-derived component list. */
|
|
53
|
+
export declare function sign(request: Request, options: {
|
|
54
|
+
components: readonly ComponentInput[];
|
|
55
|
+
expiresIn?: number | undefined;
|
|
56
|
+
keyId: string;
|
|
57
|
+
key: CryptoKey;
|
|
58
|
+
label: string;
|
|
59
|
+
context?: SigningContext | undefined;
|
|
60
|
+
tag: string;
|
|
61
|
+
}): Promise<Request>;
|
|
62
|
+
/** Verifies a request signature, its lifetime, and optionally its nonce. */
|
|
63
|
+
export declare function verify(request: Request, options: {
|
|
64
|
+
keyResolver: KeyResolver;
|
|
65
|
+
maxAge: number;
|
|
66
|
+
nonceNamespace: string;
|
|
67
|
+
nonceStore: Store.AtomicStore;
|
|
68
|
+
requiredComponents: readonly string[];
|
|
69
|
+
tag: string | readonly string[];
|
|
70
|
+
validate?: ((input: SignatureInput, request: Request) => string | undefined) | undefined;
|
|
71
|
+
validateKey?: ((key: CryptoKey, input: SignatureInput, request: Request) => MaybePromise<string | undefined>) | undefined;
|
|
72
|
+
}): Promise<VerificationResult>;
|
|
73
|
+
//# sourceMappingURL=HttpMessageSignature.d.ts.map
|
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
import { isInnerList, parseDictionary, serializeItem, serializeDictionary, serializeInnerList, serializeParameters, } from 'structured-headers';
|
|
2
|
+
import * as Store from '../../Store.js';
|
|
3
|
+
import { Algorithms, Headers as AttestationHeaders } from '../Constants.js';
|
|
4
|
+
import * as SigningContextInternal from './SigningContext.js';
|
|
5
|
+
/** RFC 9421 constants used by request-attestation signature profiles. */
|
|
6
|
+
export const Constants = {
|
|
7
|
+
/** Derived request components supported by this narrow request profile. */
|
|
8
|
+
components: {
|
|
9
|
+
/** The target host and non-default port. */
|
|
10
|
+
authority: '@authority',
|
|
11
|
+
/** The request URL path without its query string. */
|
|
12
|
+
path: '@path',
|
|
13
|
+
/** The lowercased `Signature-Agent` request header. */
|
|
14
|
+
signatureAgent: 'signature-agent',
|
|
15
|
+
/** The signature's canonicalized covered-components and parameters. */
|
|
16
|
+
signatureParams: '@signature-params',
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
const algorithmDescriptors = {
|
|
20
|
+
[Algorithms.ed25519]: {
|
|
21
|
+
hash: undefined,
|
|
22
|
+
keyAlgorithm: 'Ed25519',
|
|
23
|
+
webCryptoAlgorithm: 'Ed25519',
|
|
24
|
+
},
|
|
25
|
+
[Algorithms.rsaPssSha512]: {
|
|
26
|
+
hash: 'SHA-512',
|
|
27
|
+
keyAlgorithm: 'RSA-PSS',
|
|
28
|
+
webCryptoAlgorithm: { name: 'RSA-PSS', saltLength: 64 },
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
/** Signs a request using the configured RFC 9421-derived component list. */
|
|
32
|
+
export async function sign(request, options) {
|
|
33
|
+
const context = options.context ?? SigningContextInternal.create();
|
|
34
|
+
const created = context.created;
|
|
35
|
+
const expires = created + (options.expiresIn ?? 60);
|
|
36
|
+
const algorithm = algorithmFromKey(options.key);
|
|
37
|
+
const parameters = new Map([
|
|
38
|
+
['created', created],
|
|
39
|
+
['expires', expires],
|
|
40
|
+
['keyid', options.keyId],
|
|
41
|
+
['alg', algorithm],
|
|
42
|
+
['nonce', context.nonce],
|
|
43
|
+
['tag', options.tag],
|
|
44
|
+
]);
|
|
45
|
+
const input = {
|
|
46
|
+
algorithm,
|
|
47
|
+
components: options.components.map(toComponent),
|
|
48
|
+
created,
|
|
49
|
+
expires,
|
|
50
|
+
keyId: options.keyId,
|
|
51
|
+
label: options.label,
|
|
52
|
+
nonce: context.nonce,
|
|
53
|
+
parameters,
|
|
54
|
+
tag: options.tag,
|
|
55
|
+
};
|
|
56
|
+
const signature = await crypto.subtle.sign(webCryptoAlgorithm(algorithm), options.key, toArrayBuffer(encode(signatureBase(request, input))));
|
|
57
|
+
const headers = new Headers(request.headers);
|
|
58
|
+
const inputs = parseHeaderDictionary(headers, AttestationHeaders.signatureInput);
|
|
59
|
+
const signatures = parseHeaderDictionary(headers, AttestationHeaders.signature);
|
|
60
|
+
if (!haveSameKeys(inputs, signatures))
|
|
61
|
+
throw new Error('Signature-Input and Signature must contain the same labels.');
|
|
62
|
+
if (inputs.has(input.label) || signatures.has(input.label))
|
|
63
|
+
throw new Error(`HTTP message signature label "${input.label}" already exists.`);
|
|
64
|
+
inputs.set(input.label, toInnerList(input));
|
|
65
|
+
signatures.set(input.label, [signature, new Map()]);
|
|
66
|
+
headers.set(AttestationHeaders.signatureInput, serializeDictionary(inputs));
|
|
67
|
+
headers.set(AttestationHeaders.signature, serializeDictionary(signatures));
|
|
68
|
+
return new Request(request, { headers });
|
|
69
|
+
}
|
|
70
|
+
/** Verifies a request signature, its lifetime, and optionally its nonce. */
|
|
71
|
+
export async function verify(request, options) {
|
|
72
|
+
const parsed = parse(request, options.tag);
|
|
73
|
+
if (!parsed)
|
|
74
|
+
return { status: 'absent' };
|
|
75
|
+
if (parsed.reason)
|
|
76
|
+
return { status: 'invalid', reason: parsed.reason };
|
|
77
|
+
if (!parsed.input || !parsed.signature)
|
|
78
|
+
return { status: 'invalid', reason: 'The HTTP message signature is malformed.' };
|
|
79
|
+
const { input, signature } = parsed;
|
|
80
|
+
if (!options.requiredComponents.every((component) => hasComponent(input.components, component)))
|
|
81
|
+
return {
|
|
82
|
+
status: 'invalid',
|
|
83
|
+
reason: 'The signature does not cover the required request components.',
|
|
84
|
+
};
|
|
85
|
+
const now = Math.floor(Date.now() / 1000);
|
|
86
|
+
if (input.created > now || input.expires <= now || input.expires - input.created > options.maxAge)
|
|
87
|
+
return { status: 'invalid', reason: 'The signature is expired or has an invalid lifetime.' };
|
|
88
|
+
if (options.validate) {
|
|
89
|
+
const reason = options.validate(input, request);
|
|
90
|
+
if (reason)
|
|
91
|
+
return { status: 'invalid', reason };
|
|
92
|
+
}
|
|
93
|
+
let key;
|
|
94
|
+
try {
|
|
95
|
+
key = await options.keyResolver({
|
|
96
|
+
algorithm: input.algorithm,
|
|
97
|
+
keyId: input.keyId,
|
|
98
|
+
request,
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
return { status: 'unverified', reason: 'The public key could not be resolved.' };
|
|
103
|
+
}
|
|
104
|
+
if (!key)
|
|
105
|
+
return {
|
|
106
|
+
status: 'unverified',
|
|
107
|
+
reason: 'No public key is available for the signature key ID.',
|
|
108
|
+
};
|
|
109
|
+
if (!keySupportsAlgorithm(key, input.algorithm))
|
|
110
|
+
return {
|
|
111
|
+
status: 'invalid',
|
|
112
|
+
reason: 'The public key does not support the signature algorithm.',
|
|
113
|
+
};
|
|
114
|
+
if (options.validateKey) {
|
|
115
|
+
const reason = await options.validateKey(key, input, request);
|
|
116
|
+
if (reason)
|
|
117
|
+
return { status: 'invalid', reason };
|
|
118
|
+
}
|
|
119
|
+
let valid;
|
|
120
|
+
try {
|
|
121
|
+
valid = await crypto.subtle.verify(webCryptoAlgorithm(input.algorithm), key, toArrayBuffer(signature), toArrayBuffer(encode(signatureBase(request, input))));
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
valid = false;
|
|
125
|
+
}
|
|
126
|
+
if (!valid)
|
|
127
|
+
return { status: 'invalid', reason: 'The HTTP message signature is invalid.' };
|
|
128
|
+
try {
|
|
129
|
+
if (!(await Store.tryClaim(options.nonceStore, `${options.nonceNamespace}:${input.keyId}:${input.nonce}`, input.expires * 1000)))
|
|
130
|
+
return { status: 'invalid', reason: 'The signature nonce has already been used.' };
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
return { status: 'unverified', reason: 'Replay protection is unavailable.' };
|
|
134
|
+
}
|
|
135
|
+
return { status: 'verified', input };
|
|
136
|
+
}
|
|
137
|
+
function parse(request, expectedTag) {
|
|
138
|
+
const inputHeader = request.headers.get(AttestationHeaders.signatureInput);
|
|
139
|
+
const signatureHeader = request.headers.get(AttestationHeaders.signature);
|
|
140
|
+
if (!inputHeader && !signatureHeader)
|
|
141
|
+
return undefined;
|
|
142
|
+
if (!inputHeader || !signatureHeader)
|
|
143
|
+
return { reason: 'Signature-Input and Signature must both be provided.' };
|
|
144
|
+
let inputs;
|
|
145
|
+
let signatures;
|
|
146
|
+
try {
|
|
147
|
+
inputs = parseDictionary(inputHeader);
|
|
148
|
+
signatures = parseDictionary(signatureHeader);
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
return { reason: 'The HTTP message signature is malformed.' };
|
|
152
|
+
}
|
|
153
|
+
if (!haveSameKeys(inputs, signatures))
|
|
154
|
+
return { reason: 'Signature-Input and Signature do not contain the same labels.' };
|
|
155
|
+
const tags = new Set(typeof expectedTag === 'string' ? [expectedTag] : expectedTag);
|
|
156
|
+
for (const [label, entry] of inputs) {
|
|
157
|
+
if (!hasExpectedTag(entry, tags))
|
|
158
|
+
continue;
|
|
159
|
+
const input = toSignatureInput(label, entry);
|
|
160
|
+
if (!input)
|
|
161
|
+
return { reason: 'The HTTP message signature is malformed.' };
|
|
162
|
+
const signature = signatures.get(label);
|
|
163
|
+
if (!signature || isInnerList(signature) || !(signature[0] instanceof ArrayBuffer))
|
|
164
|
+
return { reason: 'No matching HTTP message signature was provided.' };
|
|
165
|
+
return { input, signature: new Uint8Array(signature[0]) };
|
|
166
|
+
}
|
|
167
|
+
return undefined;
|
|
168
|
+
}
|
|
169
|
+
function serializeInput(input) {
|
|
170
|
+
return serializeInnerList(toInnerList(input));
|
|
171
|
+
}
|
|
172
|
+
function toInnerList(input) {
|
|
173
|
+
const components = input.components.map((component) => [
|
|
174
|
+
component.id,
|
|
175
|
+
new Map(component.parameters),
|
|
176
|
+
]);
|
|
177
|
+
return [components, new Map(input.parameters)];
|
|
178
|
+
}
|
|
179
|
+
function toSignatureInput(label, entry) {
|
|
180
|
+
const innerList = entry;
|
|
181
|
+
if (!isInnerList(innerList))
|
|
182
|
+
return undefined;
|
|
183
|
+
const [componentEntries, parameters] = innerList;
|
|
184
|
+
if (!componentEntries.length ||
|
|
185
|
+
!componentEntries.every(([component]) => typeof component === 'string'))
|
|
186
|
+
return undefined;
|
|
187
|
+
const components = componentEntries.map(([id, parameters]) => ({
|
|
188
|
+
id: id,
|
|
189
|
+
parameters,
|
|
190
|
+
}));
|
|
191
|
+
const created = parameters.get('created');
|
|
192
|
+
const expires = parameters.get('expires');
|
|
193
|
+
const algorithm = parameters.get('alg');
|
|
194
|
+
const keyId = parameters.get('keyid');
|
|
195
|
+
const nonce = parameters.get('nonce');
|
|
196
|
+
const tag = parameters.get('tag');
|
|
197
|
+
if (!isInteger(created) ||
|
|
198
|
+
!isInteger(expires) ||
|
|
199
|
+
!isSignatureAlgorithm(algorithm) ||
|
|
200
|
+
typeof keyId !== 'string' ||
|
|
201
|
+
typeof nonce !== 'string' ||
|
|
202
|
+
typeof tag !== 'string')
|
|
203
|
+
return undefined;
|
|
204
|
+
return {
|
|
205
|
+
algorithm,
|
|
206
|
+
components,
|
|
207
|
+
created,
|
|
208
|
+
expires,
|
|
209
|
+
keyId,
|
|
210
|
+
label,
|
|
211
|
+
nonce,
|
|
212
|
+
parameters,
|
|
213
|
+
tag,
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
function algorithmFromKey(key) {
|
|
217
|
+
for (const algorithm of Object.values(Algorithms))
|
|
218
|
+
if (keySupportsAlgorithm(key, algorithm))
|
|
219
|
+
return algorithm;
|
|
220
|
+
throw new TypeError('Request attestation requires an Ed25519 or RSA-PSS SHA-512 signing key.');
|
|
221
|
+
}
|
|
222
|
+
function isInteger(value) {
|
|
223
|
+
return typeof value === 'number' && Number.isInteger(value);
|
|
224
|
+
}
|
|
225
|
+
function isSignatureAlgorithm(value) {
|
|
226
|
+
return typeof value === 'string' && Object.hasOwn(algorithmDescriptors, value);
|
|
227
|
+
}
|
|
228
|
+
function keySupportsAlgorithm(key, algorithm) {
|
|
229
|
+
const { hash, keyAlgorithm } = algorithmDescriptors[algorithm];
|
|
230
|
+
return (key.algorithm.name === keyAlgorithm &&
|
|
231
|
+
(!hash || key.algorithm.hash.name === hash));
|
|
232
|
+
}
|
|
233
|
+
function webCryptoAlgorithm(algorithm) {
|
|
234
|
+
return algorithmDescriptors[algorithm].webCryptoAlgorithm;
|
|
235
|
+
}
|
|
236
|
+
function signatureBase(request, input) {
|
|
237
|
+
const lines = input.components.map((component) => `${serializeComponent(component)}: ${componentValue(request, component)}`);
|
|
238
|
+
lines.push(`"${Constants.components.signatureParams}": ${serializeInput(input)}`);
|
|
239
|
+
return lines.join('\n');
|
|
240
|
+
}
|
|
241
|
+
function componentValue(request, component) {
|
|
242
|
+
const url = new URL(request.url);
|
|
243
|
+
if (component.id === Constants.components.authority) {
|
|
244
|
+
if (component.parameters?.size)
|
|
245
|
+
throw new Error('Unsupported parameters for "@authority".');
|
|
246
|
+
return url.host;
|
|
247
|
+
}
|
|
248
|
+
if (component.id === Constants.components.path) {
|
|
249
|
+
if (component.parameters?.size)
|
|
250
|
+
throw new Error('Unsupported parameters for "@path".');
|
|
251
|
+
return url.pathname;
|
|
252
|
+
}
|
|
253
|
+
if (component.parameters?.size)
|
|
254
|
+
return componentDictionaryValue(request, component.id, component.parameters);
|
|
255
|
+
const value = request.headers.get(component.id);
|
|
256
|
+
if (value === null)
|
|
257
|
+
throw new Error(`Missing signed HTTP header "${component.id}".`);
|
|
258
|
+
// RFC 9421 signs the serialized field value, not a Unicode-normalized string.
|
|
259
|
+
if (!/^[\x20-\x7e]*$/.test(value))
|
|
260
|
+
throw new Error(`Signed HTTP header "${component.id}" is not ASCII.`);
|
|
261
|
+
return value;
|
|
262
|
+
}
|
|
263
|
+
function componentDictionaryValue(request, component, parameters) {
|
|
264
|
+
const key = parameters.get('key');
|
|
265
|
+
if (typeof key !== 'string' || parameters.size !== 1)
|
|
266
|
+
throw new Error(`Unsupported parameters for signed HTTP header "${component}".`);
|
|
267
|
+
const value = request.headers.get(component);
|
|
268
|
+
if (value === null)
|
|
269
|
+
throw new Error(`Missing signed HTTP header "${component}".`);
|
|
270
|
+
let dictionary;
|
|
271
|
+
try {
|
|
272
|
+
dictionary = parseDictionary(value);
|
|
273
|
+
}
|
|
274
|
+
catch {
|
|
275
|
+
throw new Error(`Signed HTTP header "${component}" is not a structured dictionary.`);
|
|
276
|
+
}
|
|
277
|
+
const member = dictionary.get(key);
|
|
278
|
+
if (!member || isInnerList(member))
|
|
279
|
+
throw new Error(`Signed HTTP header "${component}" has no member "${key}".`);
|
|
280
|
+
return serializeItem(member);
|
|
281
|
+
}
|
|
282
|
+
function hasComponent(components, expected) {
|
|
283
|
+
return components.some((component) => component.id === expected);
|
|
284
|
+
}
|
|
285
|
+
function haveSameKeys(left, right) {
|
|
286
|
+
return left.size === right.size && [...left.keys()].every((key) => right.has(key));
|
|
287
|
+
}
|
|
288
|
+
function hasExpectedTag(entry, tags) {
|
|
289
|
+
const value = entry;
|
|
290
|
+
if (!isInnerList(value))
|
|
291
|
+
return false;
|
|
292
|
+
const tag = value[1].get('tag');
|
|
293
|
+
return typeof tag === 'string' && tags.has(tag);
|
|
294
|
+
}
|
|
295
|
+
function serializeComponent(component) {
|
|
296
|
+
return `"${component.id}"${component.parameters?.size ? serializeParameters(new Map(component.parameters)) : ''}`;
|
|
297
|
+
}
|
|
298
|
+
function toComponent(component) {
|
|
299
|
+
return typeof component === 'string'
|
|
300
|
+
? { id: component }
|
|
301
|
+
: { id: component.id, parameters: component.parameters && new Map(component.parameters) };
|
|
302
|
+
}
|
|
303
|
+
function parseHeaderDictionary(headers, name) {
|
|
304
|
+
const value = headers.get(name);
|
|
305
|
+
if (!value)
|
|
306
|
+
return new Map();
|
|
307
|
+
try {
|
|
308
|
+
return parseDictionary(value);
|
|
309
|
+
}
|
|
310
|
+
catch {
|
|
311
|
+
throw new Error(`HTTP header "${name}" is not a structured dictionary.`);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
function encode(value) {
|
|
315
|
+
return new TextEncoder().encode(value);
|
|
316
|
+
}
|
|
317
|
+
function toArrayBuffer(value) {
|
|
318
|
+
return value.buffer.slice(value.byteOffset, value.byteOffset + value.byteLength);
|
|
319
|
+
}
|
|
320
|
+
//# sourceMappingURL=HttpMessageSignature.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Base64 } from 'ox';
|
|
2
|
+
/** Creates the signing context for one outbound HTTP request attempt. */
|
|
3
|
+
export function create() {
|
|
4
|
+
const bytes = new Uint8Array(64);
|
|
5
|
+
crypto.getRandomValues(bytes);
|
|
6
|
+
return Object.freeze({
|
|
7
|
+
created: Math.floor(Date.now() / 1_000),
|
|
8
|
+
nonce: Base64.fromBytes(bytes, { pad: false, url: true }),
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=SigningContext.js.map
|
package/dist/bin.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import cli from './cli/cli.js'
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
import cli from './cli/cli.js'
|
|
3
|
+
|
|
4
|
+
await cli.serve()
|