mppx 0.8.15 → 0.8.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +91 -0
- package/README.md +15 -0
- package/dist/Challenge.js +61 -39
- package/dist/Constants.d.ts +17 -17
- package/dist/Errors.d.ts +3 -3
- package/dist/Method.d.ts +35 -5
- package/dist/Method.js +7 -22
- package/dist/Store.d.ts +19 -0
- package/dist/Store.js +43 -0
- package/dist/attestation/Client.d.ts +17 -0
- package/dist/attestation/Client.js +28 -0
- package/dist/attestation/Constants.d.ts +15 -0
- package/dist/attestation/Constants.js +15 -0
- package/dist/attestation/Server.d.ts +4 -0
- package/dist/attestation/Server.js +8 -0
- package/dist/attestation/Types.d.ts +76 -0
- package/dist/attestation/Types.js +2 -0
- package/dist/attestation/index.d.ts +6 -0
- package/dist/attestation/index.js +6 -0
- package/dist/attestation/internal/HttpMessageSignature.d.ts +73 -0
- package/dist/attestation/internal/HttpMessageSignature.js +320 -0
- package/dist/attestation/internal/SigningContext.d.ts +4 -0
- package/dist/attestation/internal/SigningContext.js +11 -0
- package/dist/bin.js +3 -3
- package/dist/cli/THIRD-PARTY-LICENSES.txt +328 -0
- package/dist/cli/account.d.ts +14 -14
- package/dist/cli/cli.d.ts +6 -6
- package/dist/cli/cli.js +253 -1504
- package/dist/cli/plugins/index.js +19 -5
- package/dist/cli/plugins/tempo.js +7 -3
- package/dist/cli/sessions/Manager.js +7 -4
- package/dist/cli/sessions/commands.d.ts +4 -4
- package/dist/cli/sessions/request.d.ts +2 -0
- package/dist/cli/sessions/request.js +18 -0
- package/dist/cli/sessions/store.js +28 -14
- package/dist/cli/utils.d.ts +1 -1
- package/dist/cli/validate/index.d.ts +3 -3
- package/dist/client/Mppx.d.ts +3 -0
- package/dist/client/Mppx.js +13 -5
- package/dist/client/Transport.d.ts +3 -5
- package/dist/client/Transport.js +1 -17
- package/dist/client/internal/Fetch.js +2 -6
- package/dist/discovery/Discovery.js +2 -1
- package/dist/discovery/OpenApi.d.ts +3 -5
- package/dist/discovery/OpenApi.js +13 -34
- package/dist/discovery/internal/Metadata.d.ts +20 -0
- package/dist/discovery/internal/Metadata.js +36 -0
- package/dist/evm/Methods.d.ts +11 -11
- package/dist/evm/Types.d.ts +17 -17
- package/dist/evm/client/Charge.d.ts +11 -11
- package/dist/evm/client/Charge.js +8 -0
- package/dist/evm/client/Methods.d.ts +11 -11
- package/dist/evm/server/Charge.d.ts +1 -1
- package/dist/evm/server/Charge.js +2 -0
- package/dist/evm/server/Methods.d.ts +11 -11
- package/dist/internal/HeaderCodec.d.ts +2 -2
- package/dist/internal/types.d.ts +6 -0
- package/dist/proxy/Proxy.d.ts +2 -0
- package/dist/proxy/Proxy.js +117 -9
- package/dist/proxy/Service.d.ts +36 -1
- package/dist/proxy/Service.js +9 -8
- package/dist/proxy/services/anthropic.js +1 -0
- package/dist/proxy/services/openai.js +1 -0
- package/dist/proxy/services/stripe.js +1 -0
- package/dist/server/Mppx.d.ts +75 -13
- package/dist/server/Mppx.js +201 -23
- package/dist/server/core.d.ts +9 -0
- package/dist/server/core.js +9 -0
- package/dist/server/internal/html/config.d.ts +9 -9
- package/dist/server/internal/html/constants.d.ts +17 -17
- package/dist/stripe/Methods.d.ts +10 -10
- package/dist/stripe/client/Charge.d.ts +10 -10
- package/dist/stripe/client/Methods.d.ts +10 -10
- package/dist/stripe/internal/constants.d.ts +1 -1
- package/dist/stripe/internal/constants.js +1 -1
- package/dist/stripe/internal/types.d.ts +1 -0
- package/dist/stripe/server/Charge.d.ts +11 -11
- package/dist/stripe/server/Charge.js +51 -5
- package/dist/stripe/server/Methods.d.ts +137 -48
- package/dist/stripe/server/Methods.js +265 -4
- package/dist/stripe/server/internal/deposit-address.d.ts +13 -0
- package/dist/stripe/server/internal/deposit-address.js +28 -0
- package/dist/stripe/server/internal/html.gen.d.ts +1 -1
- package/dist/stripe/server/internal/html.gen.js +1 -1
- package/dist/stripe/server/internal/record-payment.d.ts +15 -0
- package/dist/stripe/server/internal/record-payment.js +42 -0
- package/dist/stripe/server/internal/request.d.ts +25 -0
- package/dist/stripe/server/internal/request.js +29 -0
- package/dist/stripe/server/spt.d.ts +8 -0
- package/dist/stripe/server/spt.js +8 -0
- package/dist/tap/Constants.d.ts +28 -0
- package/dist/tap/Constants.js +32 -0
- package/dist/tap/Types.d.ts +11 -0
- package/dist/tap/Types.js +2 -0
- package/dist/tap/client/index.d.ts +26 -0
- package/dist/tap/client/index.js +33 -0
- package/dist/tap/index.d.ts +5 -0
- package/dist/tap/index.js +5 -0
- package/dist/tap/server/index.d.ts +20 -0
- package/dist/tap/server/index.js +36 -0
- package/dist/tempo/Attribution.d.ts +1 -1
- package/dist/tempo/Methods.d.ts +73 -60
- package/dist/tempo/Methods.js +14 -3
- package/dist/tempo/Proof.d.ts +16 -16
- package/dist/tempo/client/Charge.d.ts +22 -19
- package/dist/tempo/client/Charge.js +32 -16
- package/dist/tempo/client/Methods.d.ts +51 -38
- package/dist/tempo/client/Subscription.d.ts +23 -23
- package/dist/tempo/internal/address.d.ts +2 -1
- package/dist/tempo/internal/address.js +3 -1
- package/dist/tempo/internal/auto-swap.js +4 -19
- package/dist/tempo/internal/defaults.d.ts +17 -6
- package/dist/tempo/internal/defaults.js +11 -0
- package/dist/tempo/internal/fee-payer.d.ts +12 -12
- package/dist/tempo/internal/machine-token-charge.d.ts +51 -0
- package/dist/tempo/internal/machine-token-charge.js +113 -0
- package/dist/tempo/internal/machine-token-session.d.ts +88 -0
- package/dist/tempo/internal/machine-token-session.js +173 -0
- package/dist/tempo/internal/proof.d.ts +17 -17
- package/dist/tempo/internal/signature-envelope.d.ts +14 -0
- package/dist/tempo/internal/signature-envelope.js +28 -0
- package/dist/tempo/legacy/client/ChannelOps.d.ts +2 -2
- package/dist/tempo/legacy/client/ChannelOps.js +11 -5
- package/dist/tempo/legacy/client/Session.d.ts +33 -21
- package/dist/tempo/legacy/client/Session.js +3 -3
- package/dist/tempo/legacy/client/SessionManager.d.ts +3 -1
- package/dist/tempo/legacy/client/SessionManager.js +2 -0
- package/dist/tempo/legacy/index.d.ts +1 -3
- package/dist/tempo/legacy/index.js +1 -3
- package/dist/tempo/legacy/session/escrow.abi.d.ts +374 -374
- package/dist/tempo/server/Charge.d.ts +28 -11
- package/dist/tempo/server/Charge.js +101 -55
- package/dist/tempo/server/Methods.d.ts +58 -56
- package/dist/tempo/server/Methods.js +8 -18
- package/dist/tempo/server/Relay.d.ts +1 -1
- package/dist/tempo/server/Relay.js +2 -2
- package/dist/tempo/server/Subscription.d.ts +25 -25
- package/dist/tempo/server/Subscription.js +2 -0
- package/dist/tempo/server/index.d.ts +1 -1
- package/dist/tempo/server/index.js +1 -1
- package/dist/tempo/server/internal/html.gen.d.ts +1 -1
- package/dist/tempo/server/internal/html.gen.js +1 -1
- package/dist/tempo/server/internal/transport.d.ts +2 -0
- package/dist/tempo/server/internal/transport.js +9 -2
- package/dist/tempo/session/client/ChannelOps.d.ts +18 -3
- package/dist/tempo/session/client/ChannelOps.js +35 -6
- package/dist/tempo/session/client/ChannelStore.d.ts +0 -5
- package/dist/tempo/session/client/ChannelStore.js +2 -2
- package/dist/tempo/session/client/CredentialState.d.ts +18 -3
- package/dist/tempo/session/client/CredentialState.js +77 -76
- package/dist/tempo/session/client/Runtime.d.ts +4 -2
- package/dist/tempo/session/client/Runtime.js +21 -5
- package/dist/tempo/session/client/Session.d.ts +34 -22
- package/dist/tempo/session/client/Session.js +186 -63
- package/dist/tempo/session/client/SessionManager.d.ts +3 -1
- package/dist/tempo/session/client/SessionManager.js +35 -11
- package/dist/tempo/session/client/Transports.d.ts +2 -0
- package/dist/tempo/session/client/Transports.js +12 -2
- package/dist/tempo/session/precompile/Chain.d.ts +37 -2
- package/dist/tempo/session/precompile/Chain.js +116 -15
- package/dist/tempo/session/precompile/Protocol.d.ts +15 -0
- package/dist/tempo/session/precompile/Protocol.js +7 -0
- package/dist/tempo/session/precompile/Voucher.d.ts +7 -5
- package/dist/tempo/session/precompile/Voucher.js +6 -12
- package/dist/tempo/session/precompile/escrow.abi.d.ts +306 -306
- package/dist/tempo/session/server/ChannelStore.d.ts +15 -0
- package/dist/tempo/session/server/ChannelStore.js +27 -12
- package/dist/tempo/session/server/CredentialVerification.d.ts +39 -20
- package/dist/tempo/session/server/CredentialVerification.js +359 -89
- package/dist/tempo/session/server/MeteredStream.d.ts +4 -1
- package/dist/tempo/session/server/MeteredStream.js +8 -5
- package/dist/tempo/session/server/RequestState.d.ts +19 -0
- package/dist/tempo/session/server/RequestState.js +61 -15
- package/dist/tempo/session/server/Session.d.ts +46 -23
- package/dist/tempo/session/server/Session.js +150 -56
- package/dist/tempo/session/server/Settlement.d.ts +11 -4
- package/dist/tempo/session/server/Settlement.js +53 -21
- package/dist/tempo/session/server/Sse.d.ts +3 -1
- package/dist/tempo/session/server/Sse.js +2 -1
- package/dist/tempo/session/server/Transports.d.ts +1 -1
- package/dist/tempo/session/server/Transports.js +1 -0
- package/dist/tempo/session/server/Ws.d.ts +6 -1
- package/dist/tempo/session/server/Ws.js +1 -0
- package/dist/tempo/subscription/KeyAuthorization.d.ts +39 -39
- package/dist/web-bot-auth/Constants.d.ts +20 -0
- package/dist/web-bot-auth/Constants.js +24 -0
- package/dist/web-bot-auth/Types.d.ts +10 -0
- package/dist/web-bot-auth/Types.js +2 -0
- package/dist/web-bot-auth/client/index.d.ts +29 -0
- package/dist/web-bot-auth/client/index.js +64 -0
- package/dist/web-bot-auth/index.d.ts +7 -0
- package/dist/web-bot-auth/index.js +7 -0
- package/dist/web-bot-auth/internal/JwkThumbprint.d.ts +5 -0
- package/dist/web-bot-auth/internal/JwkThumbprint.js +20 -0
- package/dist/web-bot-auth/internal/SignatureAgent.d.ts +3 -0
- package/dist/web-bot-auth/internal/SignatureAgent.js +18 -0
- package/dist/web-bot-auth/server/index.d.ts +35 -0
- package/dist/web-bot-auth/server/index.js +88 -0
- package/dist/x402/Types.d.ts +6 -6
- package/dist/x402/client/Exact.d.ts +8 -0
- package/dist/x402/client/Exact.js +40 -10
- package/dist/x402/server/EvmCharge.d.ts +22 -0
- package/dist/x402/server/EvmCharge.js +54 -20
- package/package.json +28 -34
- package/dist/BodyDigest.d.ts.map +0 -1
- package/dist/BodyDigest.js.map +0 -1
- package/dist/Challenge.d.ts.map +0 -1
- package/dist/Challenge.js.map +0 -1
- package/dist/Constants.d.ts.map +0 -1
- package/dist/Constants.js.map +0 -1
- package/dist/Credential.d.ts.map +0 -1
- package/dist/Credential.js.map +0 -1
- package/dist/Errors.d.ts.map +0 -1
- package/dist/Errors.js.map +0 -1
- package/dist/Expires.d.ts.map +0 -1
- package/dist/Expires.js.map +0 -1
- package/dist/Html.d.ts.map +0 -1
- package/dist/Html.js.map +0 -1
- package/dist/Mcp.d.ts.map +0 -1
- package/dist/Mcp.js.map +0 -1
- package/dist/Method.d.ts.map +0 -1
- package/dist/Method.js.map +0 -1
- package/dist/PaymentRequest.d.ts.map +0 -1
- package/dist/PaymentRequest.js.map +0 -1
- package/dist/Receipt.d.ts.map +0 -1
- package/dist/Receipt.js.map +0 -1
- package/dist/Store.d.ts.map +0 -1
- package/dist/Store.js.map +0 -1
- package/dist/bin.d.ts.map +0 -1
- package/dist/bin.js.map +0 -1
- package/dist/cli/account.d.ts.map +0 -1
- package/dist/cli/account.js.map +0 -1
- package/dist/cli/cli.d.ts.map +0 -1
- package/dist/cli/cli.js.map +0 -1
- package/dist/cli/config.d.ts.map +0 -1
- package/dist/cli/config.js.map +0 -1
- package/dist/cli/internal.d.ts.map +0 -1
- package/dist/cli/internal.js.map +0 -1
- package/dist/cli/plugins/evm.d.ts.map +0 -1
- package/dist/cli/plugins/evm.js.map +0 -1
- package/dist/cli/plugins/index.d.ts.map +0 -1
- package/dist/cli/plugins/index.js.map +0 -1
- package/dist/cli/plugins/plugin.d.ts.map +0 -1
- package/dist/cli/plugins/plugin.js.map +0 -1
- package/dist/cli/plugins/stripe.d.ts.map +0 -1
- package/dist/cli/plugins/stripe.js.map +0 -1
- package/dist/cli/plugins/tempo.d.ts.map +0 -1
- package/dist/cli/plugins/tempo.js.map +0 -1
- package/dist/cli/sessions/Manager.d.ts.map +0 -1
- package/dist/cli/sessions/Manager.js.map +0 -1
- package/dist/cli/sessions/commands.d.ts.map +0 -1
- package/dist/cli/sessions/commands.js.map +0 -1
- package/dist/cli/sessions/request.d.ts.map +0 -1
- package/dist/cli/sessions/request.js.map +0 -1
- package/dist/cli/sessions/store.d.ts.map +0 -1
- package/dist/cli/sessions/store.js.map +0 -1
- package/dist/cli/utils.d.ts.map +0 -1
- package/dist/cli/utils.js.map +0 -1
- package/dist/cli/validate/challenge.d.ts.map +0 -1
- package/dist/cli/validate/challenge.js.map +0 -1
- package/dist/cli/validate/discovery.d.ts.map +0 -1
- package/dist/cli/validate/discovery.js.map +0 -1
- package/dist/cli/validate/helpers.d.ts.map +0 -1
- package/dist/cli/validate/helpers.js.map +0 -1
- package/dist/cli/validate/index.d.ts.map +0 -1
- package/dist/cli/validate/index.js.map +0 -1
- package/dist/cli/validate/messages.d.ts.map +0 -1
- package/dist/cli/validate/messages.js.map +0 -1
- package/dist/cli/validate/payment.d.ts.map +0 -1
- package/dist/cli/validate/payment.js.map +0 -1
- package/dist/client/Methods.d.ts.map +0 -1
- package/dist/client/Methods.js.map +0 -1
- package/dist/client/Mppx.d.ts.map +0 -1
- package/dist/client/Mppx.js.map +0 -1
- package/dist/client/Transport.d.ts.map +0 -1
- package/dist/client/Transport.js.map +0 -1
- package/dist/client/index.d.ts.map +0 -1
- package/dist/client/index.js.map +0 -1
- package/dist/client/internal/Fetch.d.ts.map +0 -1
- package/dist/client/internal/Fetch.js.map +0 -1
- package/dist/client/internal/MethodChallenge.d.ts.map +0 -1
- package/dist/client/internal/MethodChallenge.js.map +0 -1
- package/dist/client/internal/MethodResponse.d.ts.map +0 -1
- package/dist/client/internal/MethodResponse.js.map +0 -1
- package/dist/client/internal/protocols/Mcp.d.ts.map +0 -1
- package/dist/client/internal/protocols/Mcp.js.map +0 -1
- package/dist/client/internal/protocols/Mpp.d.ts.map +0 -1
- package/dist/client/internal/protocols/Mpp.js.map +0 -1
- package/dist/client/internal/protocols/Protocol.d.ts.map +0 -1
- package/dist/client/internal/protocols/Protocol.js.map +0 -1
- package/dist/client/internal/protocols/Shared.d.ts.map +0 -1
- package/dist/client/internal/protocols/Shared.js.map +0 -1
- package/dist/client/internal/protocols/X402.d.ts.map +0 -1
- package/dist/client/internal/protocols/X402.js.map +0 -1
- package/dist/client/node.d.ts.map +0 -1
- package/dist/client/node.js.map +0 -1
- package/dist/discovery/Discovery.d.ts.map +0 -1
- package/dist/discovery/Discovery.js.map +0 -1
- package/dist/discovery/OpenApi.d.ts.map +0 -1
- package/dist/discovery/OpenApi.js.map +0 -1
- package/dist/discovery/Validate.d.ts.map +0 -1
- package/dist/discovery/Validate.js.map +0 -1
- package/dist/discovery/index.d.ts.map +0 -1
- package/dist/discovery/index.js.map +0 -1
- package/dist/evm/Assets.d.ts.map +0 -1
- package/dist/evm/Assets.js.map +0 -1
- package/dist/evm/Chains.d.ts.map +0 -1
- package/dist/evm/Chains.js.map +0 -1
- package/dist/evm/Methods.d.ts.map +0 -1
- package/dist/evm/Methods.js.map +0 -1
- package/dist/evm/Types.d.ts.map +0 -1
- package/dist/evm/Types.js.map +0 -1
- package/dist/evm/client/Charge.d.ts.map +0 -1
- package/dist/evm/client/Charge.js.map +0 -1
- package/dist/evm/client/Methods.d.ts.map +0 -1
- package/dist/evm/client/Methods.js.map +0 -1
- package/dist/evm/client/index.d.ts.map +0 -1
- package/dist/evm/client/index.js.map +0 -1
- package/dist/evm/index.d.ts.map +0 -1
- package/dist/evm/index.js.map +0 -1
- package/dist/evm/server/Charge.d.ts.map +0 -1
- package/dist/evm/server/Charge.js.map +0 -1
- package/dist/evm/server/Methods.d.ts.map +0 -1
- package/dist/evm/server/Methods.js.map +0 -1
- package/dist/evm/server/index.d.ts.map +0 -1
- package/dist/evm/server/index.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/internal/AcceptPayment.d.ts.map +0 -1
- package/dist/internal/AcceptPayment.js.map +0 -1
- package/dist/internal/HeaderCodec.d.ts.map +0 -1
- package/dist/internal/HeaderCodec.js.map +0 -1
- package/dist/internal/constantTimeEqual.d.ts.map +0 -1
- package/dist/internal/constantTimeEqual.js.map +0 -1
- package/dist/internal/env.d.ts.map +0 -1
- package/dist/internal/env.js.map +0 -1
- package/dist/internal/types.d.ts.map +0 -1
- package/dist/internal/types.js.map +0 -1
- package/dist/mcp/client/McpClient.d.ts.map +0 -1
- package/dist/mcp/client/McpClient.js.map +0 -1
- package/dist/mcp/client/index.d.ts.map +0 -1
- package/dist/mcp/client/index.js.map +0 -1
- package/dist/mcp/server/Transport.d.ts.map +0 -1
- package/dist/mcp/server/Transport.js.map +0 -1
- package/dist/mcp/server/index.d.ts.map +0 -1
- package/dist/mcp/server/index.js.map +0 -1
- package/dist/middlewares/elysia.d.ts.map +0 -1
- package/dist/middlewares/elysia.js.map +0 -1
- package/dist/middlewares/express.d.ts.map +0 -1
- package/dist/middlewares/express.js.map +0 -1
- package/dist/middlewares/hono.d.ts.map +0 -1
- package/dist/middlewares/hono.js.map +0 -1
- package/dist/middlewares/internal/mppx.d.ts.map +0 -1
- package/dist/middlewares/internal/mppx.js.map +0 -1
- package/dist/middlewares/nextjs.d.ts.map +0 -1
- package/dist/middlewares/nextjs.js.map +0 -1
- package/dist/proxy/Proxy.d.ts.map +0 -1
- package/dist/proxy/Proxy.js.map +0 -1
- package/dist/proxy/Service.d.ts.map +0 -1
- package/dist/proxy/Service.js.map +0 -1
- package/dist/proxy/index.d.ts.map +0 -1
- package/dist/proxy/index.js.map +0 -1
- package/dist/proxy/internal/Headers.d.ts.map +0 -1
- package/dist/proxy/internal/Headers.js.map +0 -1
- package/dist/proxy/internal/Route.d.ts.map +0 -1
- package/dist/proxy/internal/Route.js.map +0 -1
- package/dist/proxy/services/anthropic.d.ts.map +0 -1
- package/dist/proxy/services/anthropic.js.map +0 -1
- package/dist/proxy/services/openai.d.ts.map +0 -1
- package/dist/proxy/services/openai.js.map +0 -1
- package/dist/proxy/services/stripe.d.ts.map +0 -1
- package/dist/proxy/services/stripe.js.map +0 -1
- package/dist/server/Methods.d.ts.map +0 -1
- package/dist/server/Methods.js.map +0 -1
- package/dist/server/Mppx.d.ts.map +0 -1
- package/dist/server/Mppx.js.map +0 -1
- package/dist/server/NodeListener.d.ts.map +0 -1
- package/dist/server/NodeListener.js.map +0 -1
- package/dist/server/Request.d.ts.map +0 -1
- package/dist/server/Request.js.map +0 -1
- package/dist/server/Response.d.ts.map +0 -1
- package/dist/server/Response.js.map +0 -1
- package/dist/server/Transport.d.ts.map +0 -1
- package/dist/server/Transport.js.map +0 -1
- package/dist/server/index.d.ts.map +0 -1
- package/dist/server/index.js.map +0 -1
- package/dist/server/internal/html/compose.main.gen.d.ts.map +0 -1
- package/dist/server/internal/html/compose.main.gen.js.map +0 -1
- package/dist/server/internal/html/config.d.ts.map +0 -1
- package/dist/server/internal/html/config.js.map +0 -1
- package/dist/server/internal/html/constants.d.ts.map +0 -1
- package/dist/server/internal/html/constants.js.map +0 -1
- package/dist/server/internal/html/serviceWorker.client.d.ts.map +0 -1
- package/dist/server/internal/html/serviceWorker.client.js.map +0 -1
- package/dist/server/internal/html/serviceWorker.gen.d.ts.map +0 -1
- package/dist/server/internal/html/serviceWorker.gen.js.map +0 -1
- package/dist/server/internal/scope.d.ts.map +0 -1
- package/dist/server/internal/scope.js.map +0 -1
- package/dist/stripe/Methods.d.ts.map +0 -1
- package/dist/stripe/Methods.js.map +0 -1
- package/dist/stripe/client/Charge.d.ts.map +0 -1
- package/dist/stripe/client/Charge.js.map +0 -1
- package/dist/stripe/client/Methods.d.ts.map +0 -1
- package/dist/stripe/client/Methods.js.map +0 -1
- package/dist/stripe/client/index.d.ts.map +0 -1
- package/dist/stripe/client/index.js.map +0 -1
- package/dist/stripe/index.d.ts.map +0 -1
- package/dist/stripe/index.js.map +0 -1
- package/dist/stripe/internal/constants.d.ts.map +0 -1
- package/dist/stripe/internal/constants.js.map +0 -1
- package/dist/stripe/internal/types.d.ts.map +0 -1
- package/dist/stripe/internal/types.js.map +0 -1
- package/dist/stripe/server/Charge.d.ts.map +0 -1
- package/dist/stripe/server/Charge.js.map +0 -1
- package/dist/stripe/server/Methods.d.ts.map +0 -1
- package/dist/stripe/server/Methods.js.map +0 -1
- package/dist/stripe/server/index.d.ts.map +0 -1
- package/dist/stripe/server/index.js.map +0 -1
- package/dist/stripe/server/internal/html/types.d.ts.map +0 -1
- package/dist/stripe/server/internal/html/types.js.map +0 -1
- package/dist/stripe/server/internal/html.gen.d.ts.map +0 -1
- package/dist/stripe/server/internal/html.gen.js.map +0 -1
- package/dist/tempo/Attribution.d.ts.map +0 -1
- package/dist/tempo/Attribution.js.map +0 -1
- package/dist/tempo/Methods.d.ts.map +0 -1
- package/dist/tempo/Methods.js.map +0 -1
- package/dist/tempo/Proof.d.ts.map +0 -1
- package/dist/tempo/Proof.js.map +0 -1
- package/dist/tempo/client/Charge.d.ts.map +0 -1
- package/dist/tempo/client/Charge.js.map +0 -1
- package/dist/tempo/client/Methods.d.ts.map +0 -1
- package/dist/tempo/client/Methods.js.map +0 -1
- package/dist/tempo/client/ResolveAccount.d.ts.map +0 -1
- package/dist/tempo/client/ResolveAccount.js.map +0 -1
- package/dist/tempo/client/Subscription.d.ts.map +0 -1
- package/dist/tempo/client/Subscription.js.map +0 -1
- package/dist/tempo/client/index.d.ts.map +0 -1
- package/dist/tempo/client/index.js.map +0 -1
- package/dist/tempo/index.d.ts.map +0 -1
- package/dist/tempo/index.js.map +0 -1
- package/dist/tempo/internal/account.d.ts.map +0 -1
- package/dist/tempo/internal/account.js.map +0 -1
- package/dist/tempo/internal/address.d.ts.map +0 -1
- package/dist/tempo/internal/address.js.map +0 -1
- package/dist/tempo/internal/auto-swap.d.ts.map +0 -1
- package/dist/tempo/internal/auto-swap.js.map +0 -1
- package/dist/tempo/internal/charge.d.ts.map +0 -1
- package/dist/tempo/internal/charge.js.map +0 -1
- package/dist/tempo/internal/defaults.d.ts.map +0 -1
- package/dist/tempo/internal/defaults.js.map +0 -1
- package/dist/tempo/internal/fee-payer.d.ts.map +0 -1
- package/dist/tempo/internal/fee-payer.js.map +0 -1
- package/dist/tempo/internal/fee-token.d.ts.map +0 -1
- package/dist/tempo/internal/fee-token.js.map +0 -1
- package/dist/tempo/internal/proof.d.ts.map +0 -1
- package/dist/tempo/internal/proof.js.map +0 -1
- package/dist/tempo/internal/selectors.d.ts.map +0 -1
- package/dist/tempo/internal/selectors.js.map +0 -1
- package/dist/tempo/internal/types.d.ts.map +0 -1
- package/dist/tempo/internal/types.js.map +0 -1
- package/dist/tempo/legacy/client/ChannelOps.d.ts.map +0 -1
- package/dist/tempo/legacy/client/ChannelOps.js.map +0 -1
- package/dist/tempo/legacy/client/Session.d.ts.map +0 -1
- package/dist/tempo/legacy/client/Session.js.map +0 -1
- package/dist/tempo/legacy/client/SessionManager.d.ts.map +0 -1
- package/dist/tempo/legacy/client/SessionManager.js.map +0 -1
- package/dist/tempo/legacy/client/index.d.ts.map +0 -1
- package/dist/tempo/legacy/client/index.js.map +0 -1
- package/dist/tempo/legacy/index.d.ts.map +0 -1
- package/dist/tempo/legacy/index.js.map +0 -1
- package/dist/tempo/legacy/server/Session.d.ts +0 -208
- package/dist/tempo/legacy/server/Session.d.ts.map +0 -1
- package/dist/tempo/legacy/server/Session.js +0 -698
- package/dist/tempo/legacy/server/Session.js.map +0 -1
- package/dist/tempo/legacy/server/index.d.ts +0 -5
- package/dist/tempo/legacy/server/index.d.ts.map +0 -1
- package/dist/tempo/legacy/server/index.js +0 -5
- package/dist/tempo/legacy/server/index.js.map +0 -1
- package/dist/tempo/legacy/session/Chain.d.ts.map +0 -1
- package/dist/tempo/legacy/session/Chain.js.map +0 -1
- package/dist/tempo/legacy/session/Channel.d.ts.map +0 -1
- package/dist/tempo/legacy/session/Channel.js.map +0 -1
- package/dist/tempo/legacy/session/ChannelStore.d.ts +0 -22
- package/dist/tempo/legacy/session/ChannelStore.d.ts.map +0 -1
- package/dist/tempo/legacy/session/ChannelStore.js +0 -6
- package/dist/tempo/legacy/session/ChannelStore.js.map +0 -1
- package/dist/tempo/legacy/session/Types.d.ts.map +0 -1
- package/dist/tempo/legacy/session/Types.js.map +0 -1
- package/dist/tempo/legacy/session/Voucher.d.ts.map +0 -1
- package/dist/tempo/legacy/session/Voucher.js.map +0 -1
- package/dist/tempo/legacy/session/escrow.abi.d.ts.map +0 -1
- package/dist/tempo/legacy/session/escrow.abi.js.map +0 -1
- package/dist/tempo/legacy/session/index.d.ts.map +0 -1
- package/dist/tempo/legacy/session/index.js.map +0 -1
- package/dist/tempo/server/Charge.d.ts.map +0 -1
- package/dist/tempo/server/Charge.js.map +0 -1
- package/dist/tempo/server/Methods.d.ts.map +0 -1
- package/dist/tempo/server/Methods.js.map +0 -1
- package/dist/tempo/server/Relay.d.ts.map +0 -1
- package/dist/tempo/server/Relay.js.map +0 -1
- package/dist/tempo/server/SponsorBudget.d.ts.map +0 -1
- package/dist/tempo/server/SponsorBudget.js.map +0 -1
- package/dist/tempo/server/Subscription.d.ts.map +0 -1
- package/dist/tempo/server/Subscription.js.map +0 -1
- package/dist/tempo/server/index.d.ts.map +0 -1
- package/dist/tempo/server/index.js.map +0 -1
- package/dist/tempo/server/internal/html.gen.d.ts.map +0 -1
- package/dist/tempo/server/internal/html.gen.js.map +0 -1
- package/dist/tempo/server/internal/request-body.d.ts.map +0 -1
- package/dist/tempo/server/internal/request-body.js.map +0 -1
- package/dist/tempo/server/internal/transport.d.ts.map +0 -1
- package/dist/tempo/server/internal/transport.js.map +0 -1
- package/dist/tempo/session/Snapshot.d.ts.map +0 -1
- package/dist/tempo/session/Snapshot.js.map +0 -1
- package/dist/tempo/session/client/ChannelOps.d.ts.map +0 -1
- package/dist/tempo/session/client/ChannelOps.js.map +0 -1
- package/dist/tempo/session/client/ChannelStore.d.ts.map +0 -1
- package/dist/tempo/session/client/ChannelStore.js.map +0 -1
- package/dist/tempo/session/client/CredentialState.d.ts.map +0 -1
- package/dist/tempo/session/client/CredentialState.js.map +0 -1
- package/dist/tempo/session/client/ReceiptCoordinator.d.ts.map +0 -1
- package/dist/tempo/session/client/ReceiptCoordinator.js.map +0 -1
- package/dist/tempo/session/client/Runtime.d.ts.map +0 -1
- package/dist/tempo/session/client/Runtime.js.map +0 -1
- package/dist/tempo/session/client/Session.d.ts.map +0 -1
- package/dist/tempo/session/client/Session.js.map +0 -1
- package/dist/tempo/session/client/SessionManager.d.ts.map +0 -1
- package/dist/tempo/session/client/SessionManager.js.map +0 -1
- package/dist/tempo/session/client/Transports.d.ts.map +0 -1
- package/dist/tempo/session/client/Transports.js.map +0 -1
- package/dist/tempo/session/client/index.d.ts.map +0 -1
- package/dist/tempo/session/client/index.js.map +0 -1
- package/dist/tempo/session/client/internal/SessionManager.d.ts.map +0 -1
- package/dist/tempo/session/client/internal/SessionManager.js.map +0 -1
- package/dist/tempo/session/index.d.ts.map +0 -1
- package/dist/tempo/session/index.js.map +0 -1
- package/dist/tempo/session/precompile/Chain.d.ts.map +0 -1
- package/dist/tempo/session/precompile/Chain.js.map +0 -1
- package/dist/tempo/session/precompile/Channel.d.ts.map +0 -1
- package/dist/tempo/session/precompile/Channel.js.map +0 -1
- package/dist/tempo/session/precompile/Protocol.d.ts.map +0 -1
- package/dist/tempo/session/precompile/Protocol.js.map +0 -1
- package/dist/tempo/session/precompile/Voucher.d.ts.map +0 -1
- package/dist/tempo/session/precompile/Voucher.js.map +0 -1
- package/dist/tempo/session/precompile/escrow.abi.d.ts.map +0 -1
- package/dist/tempo/session/precompile/escrow.abi.js.map +0 -1
- package/dist/tempo/session/precompile/index.d.ts.map +0 -1
- package/dist/tempo/session/precompile/index.js.map +0 -1
- package/dist/tempo/session/server/ChannelOps.d.ts.map +0 -1
- package/dist/tempo/session/server/ChannelOps.js.map +0 -1
- package/dist/tempo/session/server/ChannelStore.d.ts.map +0 -1
- package/dist/tempo/session/server/ChannelStore.js.map +0 -1
- package/dist/tempo/session/server/CredentialVerification.d.ts.map +0 -1
- package/dist/tempo/session/server/CredentialVerification.js.map +0 -1
- package/dist/tempo/session/server/MeteredStream.d.ts.map +0 -1
- package/dist/tempo/session/server/MeteredStream.js.map +0 -1
- package/dist/tempo/session/server/RequestState.d.ts.map +0 -1
- package/dist/tempo/session/server/RequestState.js.map +0 -1
- package/dist/tempo/session/server/Session.d.ts.map +0 -1
- package/dist/tempo/session/server/Session.js.map +0 -1
- package/dist/tempo/session/server/Settlement.d.ts.map +0 -1
- package/dist/tempo/session/server/Settlement.js.map +0 -1
- package/dist/tempo/session/server/Sse.d.ts.map +0 -1
- package/dist/tempo/session/server/Sse.js.map +0 -1
- package/dist/tempo/session/server/Transports.d.ts.map +0 -1
- package/dist/tempo/session/server/Transports.js.map +0 -1
- package/dist/tempo/session/server/Ws.d.ts.map +0 -1
- package/dist/tempo/session/server/Ws.js.map +0 -1
- package/dist/tempo/session/server/index.d.ts.map +0 -1
- package/dist/tempo/session/server/index.js.map +0 -1
- package/dist/tempo/subscription/KeyAuthorization.d.ts.map +0 -1
- package/dist/tempo/subscription/KeyAuthorization.js.map +0 -1
- package/dist/tempo/subscription/Receipt.d.ts.map +0 -1
- package/dist/tempo/subscription/Receipt.js.map +0 -1
- package/dist/tempo/subscription/Store.d.ts.map +0 -1
- package/dist/tempo/subscription/Store.js.map +0 -1
- package/dist/tempo/subscription/Types.d.ts.map +0 -1
- package/dist/tempo/subscription/Types.js.map +0 -1
- package/dist/tempo/subscription/index.d.ts.map +0 -1
- package/dist/tempo/subscription/index.js.map +0 -1
- package/dist/validation/core.d.ts.map +0 -1
- package/dist/validation/core.js.map +0 -1
- package/dist/validation/index.d.ts.map +0 -1
- package/dist/validation/index.js.map +0 -1
- package/dist/viem/Account.d.ts.map +0 -1
- package/dist/viem/Account.js.map +0 -1
- package/dist/viem/Client.d.ts.map +0 -1
- package/dist/viem/Client.js.map +0 -1
- package/dist/x402/Assets.d.ts.map +0 -1
- package/dist/x402/Assets.js.map +0 -1
- package/dist/x402/Header.d.ts.map +0 -1
- package/dist/x402/Header.js.map +0 -1
- package/dist/x402/Types.d.ts.map +0 -1
- package/dist/x402/Types.js.map +0 -1
- package/dist/x402/client/Exact.d.ts.map +0 -1
- package/dist/x402/client/Exact.js.map +0 -1
- package/dist/x402/index.d.ts.map +0 -1
- package/dist/x402/index.js.map +0 -1
- package/dist/x402/internal/ChallengeBrand.d.ts.map +0 -1
- package/dist/x402/internal/ChallengeBrand.js.map +0 -1
- package/dist/x402/internal/RouteBinding.d.ts.map +0 -1
- package/dist/x402/internal/RouteBinding.js.map +0 -1
- package/dist/x402/server/EvmCharge.d.ts.map +0 -1
- package/dist/x402/server/EvmCharge.js.map +0 -1
- package/dist/x402/server/Facilitator.d.ts.map +0 -1
- package/dist/x402/server/Facilitator.js.map +0 -1
- package/dist/zod.d.ts.map +0 -1
- package/dist/zod.js.map +0 -1
- package/src/BodyDigest.test.ts +0 -43
- package/src/BodyDigest.ts +0 -55
- package/src/Challenge.fuzz.test.ts +0 -121
- package/src/Challenge.test-d.ts +0 -82
- package/src/Challenge.test.ts +0 -995
- package/src/Challenge.ts +0 -683
- package/src/Constants.ts +0 -58
- package/src/Credential.fuzz.test.ts +0 -62
- package/src/Credential.test.ts +0 -378
- package/src/Credential.ts +0 -217
- package/src/Errors.test.ts +0 -520
- package/src/Errors.ts +0 -448
- package/src/Expires.test.ts +0 -112
- package/src/Expires.ts +0 -59
- package/src/Html.ts +0 -67
- package/src/Mcp.ts +0 -85
- package/src/Method.test.ts +0 -177
- package/src/Method.ts +0 -617
- package/src/PaymentRequest.test.ts +0 -147
- package/src/PaymentRequest.ts +0 -108
- package/src/Receipt.test.ts +0 -151
- package/src/Receipt.ts +0 -146
- package/src/Store.test-d.ts +0 -195
- package/src/Store.test.ts +0 -357
- package/src/Store.ts +0 -329
- package/src/bin.ts +0 -4
- package/src/cli/account.ts +0 -269
- package/src/cli/cli.test.ts +0 -2221
- package/src/cli/cli.ts +0 -1649
- package/src/cli/config.test.ts +0 -89
- package/src/cli/config.ts +0 -50
- package/src/cli/internal.ts +0 -114
- package/src/cli/mcp.test.ts +0 -262
- package/src/cli/plugins/evm.ts +0 -55
- package/src/cli/plugins/index.ts +0 -4
- package/src/cli/plugins/plugin.ts +0 -84
- package/src/cli/plugins/stripe.ts +0 -174
- package/src/cli/plugins/tempo.ts +0 -1102
- package/src/cli/sessions/Manager.test.ts +0 -249
- package/src/cli/sessions/Manager.ts +0 -93
- package/src/cli/sessions/commands.ts +0 -444
- package/src/cli/sessions/request.test.ts +0 -51
- package/src/cli/sessions/request.ts +0 -353
- package/src/cli/sessions/store.test.ts +0 -581
- package/src/cli/sessions/store.ts +0 -940
- package/src/cli/utils.test.ts +0 -156
- package/src/cli/utils.ts +0 -394
- package/src/cli/validate/challenge.ts +0 -565
- package/src/cli/validate/discovery.test.ts +0 -435
- package/src/cli/validate/discovery.ts +0 -221
- package/src/cli/validate/helpers.ts +0 -166
- package/src/cli/validate/index.ts +0 -229
- package/src/cli/validate/messages.ts +0 -7
- package/src/cli/validate/payment.ts +0 -774
- package/src/cli/validate.test.ts +0 -843
- package/src/client/Methods.ts +0 -8
- package/src/client/Mppx.test-d.ts +0 -270
- package/src/client/Mppx.test.ts +0 -1065
- package/src/client/Mppx.ts +0 -466
- package/src/client/Transport.test.ts +0 -619
- package/src/client/Transport.ts +0 -191
- package/src/client/index.ts +0 -29
- package/src/client/internal/Fetch.browser.test.ts +0 -197
- package/src/client/internal/Fetch.test-d.ts +0 -109
- package/src/client/internal/Fetch.test.ts +0 -2336
- package/src/client/internal/Fetch.ts +0 -1079
- package/src/client/internal/MethodChallenge.ts +0 -35
- package/src/client/internal/MethodResponse.ts +0 -67
- package/src/client/internal/protocols/Mcp.test.ts +0 -220
- package/src/client/internal/protocols/Mcp.ts +0 -186
- package/src/client/internal/protocols/Mpp.ts +0 -21
- package/src/client/internal/protocols/Protocol.ts +0 -10
- package/src/client/internal/protocols/Shared.ts +0 -25
- package/src/client/internal/protocols/X402.ts +0 -46
- package/src/client/node.test.ts +0 -115
- package/src/client/node.ts +0 -247
- package/src/discovery/Discovery.test.ts +0 -214
- package/src/discovery/Discovery.ts +0 -105
- package/src/discovery/OpenApi.test.ts +0 -453
- package/src/discovery/OpenApi.ts +0 -224
- package/src/discovery/Validate.test.ts +0 -305
- package/src/discovery/Validate.ts +0 -77
- package/src/discovery/index.ts +0 -3
- package/src/env.d.ts +0 -12
- package/src/evm/Assets.ts +0 -1
- package/src/evm/Chains.ts +0 -11
- package/src/evm/Methods.ts +0 -44
- package/src/evm/PublicInterface.test-d.ts +0 -134
- package/src/evm/Types.ts +0 -140
- package/src/evm/client/Charge.test.ts +0 -347
- package/src/evm/client/Charge.ts +0 -187
- package/src/evm/client/Methods.ts +0 -19
- package/src/evm/client/index.ts +0 -6
- package/src/evm/index.ts +0 -16
- package/src/evm/server/Charge.test.ts +0 -339
- package/src/evm/server/Charge.ts +0 -290
- package/src/evm/server/Methods.ts +0 -22
- package/src/evm/server/index.ts +0 -6
- package/src/index.ts +0 -14
- package/src/internal/AcceptPayment.test.ts +0 -343
- package/src/internal/AcceptPayment.ts +0 -366
- package/src/internal/HeaderCodec.ts +0 -36
- package/src/internal/changeset.test.ts +0 -106
- package/src/internal/constantTimeEqual.test.ts +0 -47
- package/src/internal/constantTimeEqual.ts +0 -10
- package/src/internal/env.test.ts +0 -42
- package/src/internal/env.ts +0 -49
- package/src/internal/types.test-d.ts +0 -21
- package/src/internal/types.ts +0 -470
- package/src/mcp/client/McpClient.integration.test.ts +0 -652
- package/src/mcp/client/McpClient.test-d.ts +0 -144
- package/src/mcp/client/McpClient.test.ts +0 -463
- package/src/mcp/client/McpClient.ts +0 -307
- package/src/mcp/client/McpClient.unit.test.ts +0 -135
- package/src/mcp/client/index.ts +0 -2
- package/src/mcp/server/Transport.test.ts +0 -191
- package/src/mcp/server/Transport.ts +0 -111
- package/src/mcp/server/index.ts +0 -1
- package/src/middlewares/elysia.test.ts +0 -295
- package/src/middlewares/elysia.ts +0 -116
- package/src/middlewares/express.test.ts +0 -371
- package/src/middlewares/express.ts +0 -140
- package/src/middlewares/hono.test.ts +0 -476
- package/src/middlewares/hono.ts +0 -153
- package/src/middlewares/internal/mppx.test.ts +0 -177
- package/src/middlewares/internal/mppx.ts +0 -67
- package/src/middlewares/nextjs.test.ts +0 -369
- package/src/middlewares/nextjs.ts +0 -107
- package/src/proxy/Proxy.test.ts +0 -1031
- package/src/proxy/Proxy.ts +0 -345
- package/src/proxy/Service.test.ts +0 -182
- package/src/proxy/Service.ts +0 -253
- package/src/proxy/index.ts +0 -6
- package/src/proxy/internal/Headers.test.ts +0 -139
- package/src/proxy/internal/Headers.ts +0 -66
- package/src/proxy/internal/Route.test.ts +0 -217
- package/src/proxy/internal/Route.ts +0 -64
- package/src/proxy/services/anthropic.test.ts +0 -132
- package/src/proxy/services/anthropic.ts +0 -52
- package/src/proxy/services/openai.test.ts +0 -157
- package/src/proxy/services/openai.ts +0 -59
- package/src/proxy/services/stripe.test.ts +0 -175
- package/src/proxy/services/stripe.ts +0 -58
- package/src/server/Methods.ts +0 -3
- package/src/server/Mppx.authorize.test.ts +0 -210
- package/src/server/Mppx.test-d.ts +0 -360
- package/src/server/Mppx.test.ts +0 -5813
- package/src/server/Mppx.ts +0 -2623
- package/src/server/NodeListener.test.ts +0 -293
- package/src/server/NodeListener.ts +0 -45
- package/src/server/Request.test.ts +0 -255
- package/src/server/Request.ts +0 -155
- package/src/server/Response.test.ts +0 -32
- package/src/server/Response.ts +0 -45
- package/src/server/Transport.test.ts +0 -598
- package/src/server/Transport.ts +0 -320
- package/src/server/index.ts +0 -9
- package/src/server/internal/html/compose.main.gen.ts +0 -2
- package/src/server/internal/html/compose.main.ts +0 -88
- package/src/server/internal/html/config.ts +0 -672
- package/src/server/internal/html/constants.ts +0 -28
- package/src/server/internal/html/serviceWorker.client.ts +0 -28
- package/src/server/internal/html/serviceWorker.gen.ts +0 -2
- package/src/server/internal/html/serviceWorker.ts +0 -27
- package/src/server/internal/html/tsconfig.compose.json +0 -8
- package/src/server/internal/html/tsconfig.worker.client.json +0 -8
- package/src/server/internal/html/tsconfig.worker.json +0 -8
- package/src/server/internal/scope.ts +0 -43
- package/src/stripe/Charge.integration.test.ts +0 -329
- package/src/stripe/Methods.test.ts +0 -62
- package/src/stripe/Methods.ts +0 -44
- package/src/stripe/client/Charge.test.ts +0 -205
- package/src/stripe/client/Charge.ts +0 -132
- package/src/stripe/client/Methods.ts +0 -37
- package/src/stripe/client/index.ts +0 -2
- package/src/stripe/index.ts +0 -1
- package/src/stripe/internal/constants.ts +0 -7
- package/src/stripe/internal/types.ts +0 -46
- package/src/stripe/server/Charge.test-d.ts +0 -66
- package/src/stripe/server/Charge.test.ts +0 -621
- package/src/stripe/server/Charge.ts +0 -434
- package/src/stripe/server/Methods.ts +0 -24
- package/src/stripe/server/index.ts +0 -2
- package/src/stripe/server/internal/html/main.ts +0 -165
- package/src/stripe/server/internal/html/node_modules/.bin/mppx +0 -22
- package/src/stripe/server/internal/html/node_modules/.bin/mppx.src +0 -22
- package/src/stripe/server/internal/html/package.json +0 -9
- package/src/stripe/server/internal/html/stripe-js-pure.d.ts +0 -7
- package/src/stripe/server/internal/html/tsconfig.json +0 -8
- package/src/stripe/server/internal/html/types.ts +0 -5
- package/src/stripe/server/internal/html.gen.ts +0 -2
- package/src/tempo/AccessKeyAuthorization.test.ts +0 -141
- package/src/tempo/Attribution.test.ts +0 -294
- package/src/tempo/Attribution.ts +0 -185
- package/src/tempo/Methods.test.ts +0 -425
- package/src/tempo/Methods.ts +0 -367
- package/src/tempo/Proof.conformance.test.ts +0 -146
- package/src/tempo/Proof.test-d.ts +0 -32
- package/src/tempo/Proof.test.ts +0 -40
- package/src/tempo/Proof.ts +0 -69
- package/src/tempo/PublicExports.test-d.ts +0 -130
- package/src/tempo/Subscription.integration.test.ts +0 -591
- package/src/tempo/client/Charge.test.ts +0 -501
- package/src/tempo/client/Charge.ts +0 -289
- package/src/tempo/client/Methods.ts +0 -45
- package/src/tempo/client/ResolveAccount.ts +0 -46
- package/src/tempo/client/Subscription.test.ts +0 -180
- package/src/tempo/client/Subscription.ts +0 -156
- package/src/tempo/client/index.ts +0 -17
- package/src/tempo/index.ts +0 -5
- package/src/tempo/internal/account.ts +0 -56
- package/src/tempo/internal/address.ts +0 -6
- package/src/tempo/internal/auto-swap.test.ts +0 -198
- package/src/tempo/internal/auto-swap.ts +0 -188
- package/src/tempo/internal/charge.test.ts +0 -66
- package/src/tempo/internal/charge.ts +0 -43
- package/src/tempo/internal/defaults.test.ts +0 -95
- package/src/tempo/internal/defaults.ts +0 -53
- package/src/tempo/internal/fee-payer.test.ts +0 -1177
- package/src/tempo/internal/fee-payer.ts +0 -808
- package/src/tempo/internal/fee-token.test.ts +0 -165
- package/src/tempo/internal/fee-token.ts +0 -72
- package/src/tempo/internal/proof.test.ts +0 -97
- package/src/tempo/internal/proof.ts +0 -87
- package/src/tempo/internal/selectors.ts +0 -10
- package/src/tempo/internal/types.ts +0 -19
- package/src/tempo/legacy/AccessKeyAuthorization.test.ts +0 -162
- package/src/tempo/legacy/README.md +0 -9
- package/src/tempo/legacy/client/ChannelOps.test.ts +0 -379
- package/src/tempo/legacy/client/ChannelOps.ts +0 -271
- package/src/tempo/legacy/client/Session.test.ts +0 -800
- package/src/tempo/legacy/client/Session.ts +0 -397
- package/src/tempo/legacy/client/SessionManager.test.ts +0 -468
- package/src/tempo/legacy/client/SessionManager.ts +0 -909
- package/src/tempo/legacy/client/index.ts +0 -6
- package/src/tempo/legacy/index.ts +0 -6
- package/src/tempo/legacy/server/Defaults.test-d.ts +0 -9
- package/src/tempo/legacy/server/Session.test.ts +0 -6370
- package/src/tempo/legacy/server/Session.ts +0 -1024
- package/src/tempo/legacy/server/index.ts +0 -4
- package/src/tempo/legacy/session/Chain.test.ts +0 -1349
- package/src/tempo/legacy/session/Chain.ts +0 -830
- package/src/tempo/legacy/session/Channel.test.ts +0 -109
- package/src/tempo/legacy/session/Channel.ts +0 -51
- package/src/tempo/legacy/session/ChannelStore.test.ts +0 -58
- package/src/tempo/legacy/session/ChannelStore.ts +0 -39
- package/src/tempo/legacy/session/Types.ts +0 -91
- package/src/tempo/legacy/session/Voucher.test.ts +0 -410
- package/src/tempo/legacy/session/Voucher.ts +0 -183
- package/src/tempo/legacy/session/escrow.abi.ts +0 -760
- package/src/tempo/legacy/session/index.ts +0 -8
- package/src/tempo/server/AtomicStore.test-d.ts +0 -50
- package/src/tempo/server/Charge.test.ts +0 -6121
- package/src/tempo/server/Charge.ts +0 -1351
- package/src/tempo/server/Methods.ts +0 -106
- package/src/tempo/server/Relay.test.ts +0 -677
- package/src/tempo/server/Relay.ts +0 -297
- package/src/tempo/server/SponsorBudget.test.ts +0 -154
- package/src/tempo/server/SponsorBudget.ts +0 -219
- package/src/tempo/server/Sse.test.ts +0 -321
- package/src/tempo/server/Subscription.test.ts +0 -1944
- package/src/tempo/server/Subscription.ts +0 -1333
- package/src/tempo/server/index.ts +0 -12
- package/src/tempo/server/internal/html/main.ts +0 -115
- package/src/tempo/server/internal/html/node_modules/.bin/mppx +0 -22
- package/src/tempo/server/internal/html/node_modules/.bin/mppx.src +0 -22
- package/src/tempo/server/internal/html/package.json +0 -10
- package/src/tempo/server/internal/html/tsconfig.json +0 -8
- package/src/tempo/server/internal/html.gen.ts +0 -2
- package/src/tempo/server/internal/request-body.test.ts +0 -210
- package/src/tempo/server/internal/request-body.ts +0 -61
- package/src/tempo/server/internal/transport.test.ts +0 -903
- package/src/tempo/server/internal/transport.ts +0 -310
- package/src/tempo/session/README.md +0 -208
- package/src/tempo/session/Snapshot.test.ts +0 -41
- package/src/tempo/session/Snapshot.ts +0 -95
- package/src/tempo/session/client/ChannelOps.test.ts +0 -218
- package/src/tempo/session/client/ChannelOps.ts +0 -348
- package/src/tempo/session/client/ChannelStore.ts +0 -111
- package/src/tempo/session/client/CredentialState.test.ts +0 -789
- package/src/tempo/session/client/CredentialState.ts +0 -942
- package/src/tempo/session/client/ReceiptCoordinator.ts +0 -95
- package/src/tempo/session/client/Runtime.test.ts +0 -1104
- package/src/tempo/session/client/Runtime.ts +0 -1008
- package/src/tempo/session/client/Session.test.ts +0 -1355
- package/src/tempo/session/client/Session.ts +0 -420
- package/src/tempo/session/client/SessionManager.test.ts +0 -1899
- package/src/tempo/session/client/SessionManager.ts +0 -996
- package/src/tempo/session/client/Transports.test.ts +0 -1141
- package/src/tempo/session/client/Transports.ts +0 -1534
- package/src/tempo/session/client/index.ts +0 -40
- package/src/tempo/session/client/internal/SessionManager.ts +0 -36
- package/src/tempo/session/index.ts +0 -7
- package/src/tempo/session/precompile/Chain.integration.test.ts +0 -339
- package/src/tempo/session/precompile/Chain.test.ts +0 -1641
- package/src/tempo/session/precompile/Chain.ts +0 -1149
- package/src/tempo/session/precompile/Channel.test.ts +0 -147
- package/src/tempo/session/precompile/Channel.ts +0 -108
- package/src/tempo/session/precompile/Protocol.test.ts +0 -358
- package/src/tempo/session/precompile/Protocol.ts +0 -520
- package/src/tempo/session/precompile/Voucher.test.ts +0 -354
- package/src/tempo/session/precompile/Voucher.ts +0 -162
- package/src/tempo/session/precompile/escrow.abi.ts +0 -226
- package/src/tempo/session/precompile/index.ts +0 -33
- package/src/tempo/session/server/ChannelOps.test.ts +0 -129
- package/src/tempo/session/server/ChannelOps.ts +0 -157
- package/src/tempo/session/server/ChannelStore.test.ts +0 -1093
- package/src/tempo/session/server/ChannelStore.ts +0 -835
- package/src/tempo/session/server/CredentialVerification.test.ts +0 -299
- package/src/tempo/session/server/CredentialVerification.ts +0 -775
- package/src/tempo/session/server/MeteredStream.ts +0 -95
- package/src/tempo/session/server/RequestState.test.ts +0 -574
- package/src/tempo/session/server/RequestState.ts +0 -507
- package/src/tempo/session/server/Session.integration.test.ts +0 -449
- package/src/tempo/session/server/Session.test.ts +0 -3862
- package/src/tempo/session/server/Session.ts +0 -570
- package/src/tempo/session/server/Settlement.test.ts +0 -345
- package/src/tempo/session/server/Settlement.ts +0 -527
- package/src/tempo/session/server/Sse.fuzz.test.ts +0 -138
- package/src/tempo/session/server/Sse.test.ts +0 -557
- package/src/tempo/session/server/Sse.ts +0 -254
- package/src/tempo/session/server/Transports.test.ts +0 -346
- package/src/tempo/session/server/Transports.ts +0 -255
- package/src/tempo/session/server/Ws.test.ts +0 -594
- package/src/tempo/session/server/Ws.ts +0 -385
- package/src/tempo/session/server/index.ts +0 -12
- package/src/tempo/subscription/KeyAuthorization.test.ts +0 -282
- package/src/tempo/subscription/KeyAuthorization.ts +0 -396
- package/src/tempo/subscription/Receipt.ts +0 -28
- package/src/tempo/subscription/Store.test.ts +0 -609
- package/src/tempo/subscription/Store.ts +0 -449
- package/src/tempo/subscription/Types.ts +0 -68
- package/src/tempo/subscription/index.ts +0 -23
- package/src/tsconfig.json +0 -10
- package/src/validation/core.ts +0 -386
- package/src/validation/index.ts +0 -11
- package/src/viem/Account.test.ts +0 -72
- package/src/viem/Account.ts +0 -30
- package/src/viem/Client.test.ts +0 -366
- package/src/viem/Client.ts +0 -93
- package/src/x402/Assets.test.ts +0 -253
- package/src/x402/Assets.ts +0 -221
- package/src/x402/Exact.e2e.test.ts +0 -448
- package/src/x402/Exact.localnet.test.ts +0 -475
- package/src/x402/Header.test.ts +0 -73
- package/src/x402/Header.ts +0 -79
- package/src/x402/PublicInterface.test-d.ts +0 -39
- package/src/x402/Types.ts +0 -248
- package/src/x402/client/Exact.test.ts +0 -309
- package/src/x402/client/Exact.ts +0 -186
- package/src/x402/index.ts +0 -6
- package/src/x402/internal/ChallengeBrand.ts +0 -14
- package/src/x402/internal/RouteBinding.ts +0 -18
- package/src/x402/server/EvmCharge.ts +0 -394
- package/src/x402/server/Facilitator.test.ts +0 -111
- package/src/x402/server/Facilitator.ts +0 -56
- package/src/zod.test.ts +0 -169
- package/src/zod.ts +0 -71
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,96 @@
|
|
|
1
1
|
# mppx
|
|
2
2
|
|
|
3
|
+
## 0.8.18
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 61f847e: Added first-party machine-token payments for Tempo charges across push, pull, relay, and fee-sponsored settlement.
|
|
8
|
+
- 981389d: Changed Stripe PaymentIntent idempotency keys to use the SDK-independent `mpp_` prefix.
|
|
9
|
+
- adcf3b5: Normalized Tempo transactions before broadcast so accepted recovery ID encodings matched the node's canonical transaction hash.
|
|
10
|
+
- e59c031: Added support for composing native claim implementations with Redis and Upstash store adapters.
|
|
11
|
+
- 349543a: Added CI interoperability coverage against the Coinbase x402 resource server and facilitator implementations.
|
|
12
|
+
- 4915654: Bundled the CLI runtime and removed source files, source maps, and source export conditions from the published package.
|
|
13
|
+
- 9774481: Fixed deserialization of challenges with mixed-case auth-param names.
|
|
14
|
+
- e240845: Fixed explicit session stream charges being discarded by prepaid units.
|
|
15
|
+
- bc3c626: `stripe.create()`: `defaultMethods()` now returns sync SPT-only when no `depositAddresses` is provided, and uses `Promise.allSettled` in the function resolver path to gracefully degrade when individual networks fail.
|
|
16
|
+
- c004d2c: Fixed hosted fee-payer sponsorship for server-driven session settlement and close transactions.
|
|
17
|
+
- dc27415: Added lightweight core server and Stripe SPT entrypoints that excluded unrelated payment rails.
|
|
18
|
+
- 3fd4a16: Added implicit machine-token funding to Tempo sessions and moved Tempo charges and sessions to the unified machineUSD deployment. Clients use machineUSD when a verified route and sufficient balance are available and otherwise pay the challenged token. Configured fee-token overrides were bound into session challenges, and concurrent session requests rechecked top-up requirements after serialized opens.
|
|
19
|
+
- a85d55a: Hardened machine-token session flows after #800: kept stored machine channels instead of evicting them on failed retries, advertised close snapshots for signature-verified close credentials, accepted sponsored fees in the payment currency alongside a configured `feeToken`, and restored balance-aware fee-token selection for direct-channel settlement.
|
|
20
|
+
- 106ba18: Fixed challenge parsing for extension parameters named after `Object.prototype` properties.
|
|
21
|
+
- a74b20b: Discovery: unknown fields next to `offers` in `x-payment-info` are ignored instead of failing validation (only the spec-defined flat fields conflict with `offers`).
|
|
22
|
+
- b5f6bce: Removed obsolete MPP version metadata from Stripe charge PaymentIntents.
|
|
23
|
+
- 3de6560: Required server-advertised Tempo session escrows to match the canonical address unless clients enable `allowCustomEscrow`.
|
|
24
|
+
- 4c9ce16: Added client signing support for standard x402 exact EIP-3009 offers without requiring mppx route-binding extensions.
|
|
25
|
+
- c326dc9: Fixed Tempo session fallback closes with stale receipts and rejected invalid close accounting.
|
|
26
|
+
- 81ba763: Escape characters above Latin-1 in challenge auth-params so serialized challenges are always valid HTTP header values. Previously a charge `description` containing an em dash, smart quote, or emoji made `Response` construction throw (`Cannot convert argument to a ByteString`) in fetch-compliant runtimes when the challenge was written to the `WWW-Authenticate` header.
|
|
27
|
+
- ae68a55: Fixed scoped EVM charges rejecting every spec-compliant x402 client, which made
|
|
28
|
+
each route served through `Proxy` unpayable over x402.
|
|
29
|
+
|
|
30
|
+
A route scope lands in `challenge.meta`, and the x402 path treated any route
|
|
31
|
+
metadata as a demand for mppx's own `extensions.mppx` binding plus an EIP-3009
|
|
32
|
+
nonce equal to an unexported `sha256(accepted | resource | extensions)`. That
|
|
33
|
+
derivation is not part of the x402 spec, so a client mppx did not write cannot
|
|
34
|
+
produce it: the charge re-challenged forever with `Credential is malformed.`
|
|
35
|
+
`Proxy` attaches a derived scope to every charge it serves, so this applied to
|
|
36
|
+
everything behind it whether or not an operator set `scope`.
|
|
37
|
+
|
|
38
|
+
Such a credential is now bound the way x402 itself binds — by comparing the
|
|
39
|
+
echoed `resource` and `accepted` — instead of being rejected. A credential that
|
|
40
|
+
does carry `extensions.mppx` is still verified in full, including the
|
|
41
|
+
route-bound nonce, so mppx's own client is unaffected. Body binding is unchanged:
|
|
42
|
+
`challenge.digest` is verified against the request body either way.
|
|
43
|
+
|
|
44
|
+
The trade is that route scope on the x402 rail is advisory for clients that don't
|
|
45
|
+
implement mppx's binding. `resource` and `accepted` sit outside the EIP-3009
|
|
46
|
+
signature, so two charges sharing a URL and a price are no longer distinguishable
|
|
47
|
+
by scope alone. Cross-URL reuse is still refused. Operators who need scope
|
|
48
|
+
enforced can restore the previous behaviour per method:
|
|
49
|
+
|
|
50
|
+
```ts
|
|
51
|
+
evm({
|
|
52
|
+
currency: evm.assets.base.USDC,
|
|
53
|
+
recipient,
|
|
54
|
+
x402: { facilitator, routeBinding: 'required' },
|
|
55
|
+
})
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## 0.8.17
|
|
59
|
+
|
|
60
|
+
### Patch Changes
|
|
61
|
+
|
|
62
|
+
- 52d8701: Reject sub-cent amounts via `canOffer` before issuing 402 challenge on stripe-managed crypto rails. Add `metadata` parameter to `stripe.create()` for forwarding key-value pairs to Stripe PaymentIntents.
|
|
63
|
+
- b7ab48e: Changed Tempo relay idempotency keys to use the `mpp_` prefix.
|
|
64
|
+
|
|
65
|
+
## 0.8.16
|
|
66
|
+
|
|
67
|
+
### Patch Changes
|
|
68
|
+
|
|
69
|
+
- c58ee80: Added composable TAP and Web Bot Auth HTTPS-directory profile signers and verifiers with Ed25519 and RSA-PSS SHA-512 support, explicit replay storage, typed verification outcomes, and shared per-attempt signing context.
|
|
70
|
+
- 1d7749a: Added first-class client and server request-attestation configuration to `Mppx.create()`.
|
|
71
|
+
- e2b2a8a: Removed the legacy Tempo session server implementation and server compatibility exports while retaining the v1 client for existing sessions. See the [session upgrade guide](https://mpp.dev/blog/sessions-improved) for migration instructions.
|
|
72
|
+
- 4637603: Aligned published and workspace dependency versions with shared pnpm catalog pins.
|
|
73
|
+
- 4834ef1: Added configurable upstream error recovery hooks to proxy services and preserved request bodies across retries.
|
|
74
|
+
- 00b0063: Fix js-yaml audit vulnerability (CVE-2026-59870) by bumping override to 4.3.1.
|
|
75
|
+
- 81a5c6b: Fix `Method.toServer()` to pass through `onPaymentSuccess` from options.
|
|
76
|
+
- f7f8e58: Fixed multi-challenge parsing when quoted parameter values contained the Payment scheme name.
|
|
77
|
+
- 8e370ba: Added structured sponsor budget configuration and support for externally enforced sponsor budgets.
|
|
78
|
+
- 40f430a: Multi-method intent handler: `.charge()` now works when multiple methods share an intent, internally composing all matching methods into one handler that respects `selectOffers`.
|
|
79
|
+
- 1272520: Disabled the `no-underscore-dangle` lint rule.
|
|
80
|
+
- 5ff5cb7: Fixed equality checks between equivalent hex and Tempo-formatted addresses.
|
|
81
|
+
- 71b8884: Add per-method `onPaymentSuccess` hook to `ComposableHooks`. Routed through the server event dispatcher for error isolation.
|
|
82
|
+
- 641aa4d: Kept discovery metadata aligned with runtime challenges by preserving composed offers, dispatching nested compositions, and deriving prices from canonical payment requests.
|
|
83
|
+
- cd71f9e: Made attestation verifiers accept the core `AtomicStore` directly and shared its optimized `Store.tryClaim` replay primitive with Tempo charges.
|
|
84
|
+
- f3a9369: Updated production dependencies.
|
|
85
|
+
- 3d7ed4b: Removed obsolete compatibility shims for legacy viem Tempo call builders.
|
|
86
|
+
- 47d6df7: Added server- and method-level filtering with immutable snapshots for composed HTTP payment offers across every server method constructor, including Stripe currency minimums.
|
|
87
|
+
- 30f8a12: Added a session-bound WebSocket server helper that reused the configured store and settlement policy, and applied that policy to plain HTTP responses from SSE-enabled methods. Fixed automatic settlement schedules after committed Tempo session SSE and WebSocket charges.
|
|
88
|
+
- 9f0afe0: Added a stable CLI launcher for workspace dependency installation.
|
|
89
|
+
- bdaea3a: Standardized client transports on `getChallenges` and removed the singular `getChallenge` hook.
|
|
90
|
+
- 4b3b1c0: Add `stripe.create()` machine payments API with auto deposit address resolution, PI recording, and unified `.charge()` handler.
|
|
91
|
+
- fd38304: Added non-mutating credential validation and broadcast hooks to the Tempo session server method.
|
|
92
|
+
- 8f9f8cb: Fixed body-bearing EVM routes to advertise `PAYMENT-REQUIRED` alongside MPP challenges and accept standard x402 payments when mppx route binding is not required.
|
|
93
|
+
|
|
3
94
|
## 0.8.15
|
|
4
95
|
|
|
5
96
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -52,6 +52,7 @@ const mppx = Mppx.create({
|
|
|
52
52
|
methods: [
|
|
53
53
|
tempo({
|
|
54
54
|
currency: '0x20c0000000000000000000000000000000000000',
|
|
55
|
+
machineTokenEnabled: true,
|
|
55
56
|
recipient: '0x742d35Cc6634c0532925a3b844bC9e7595F8fE00',
|
|
56
57
|
}),
|
|
57
58
|
],
|
|
@@ -83,6 +84,11 @@ Mppx.create({
|
|
|
83
84
|
const res = await fetch('https://mpp.dev/api/ping/paid')
|
|
84
85
|
```
|
|
85
86
|
|
|
87
|
+
The client API is the same for PathUSD, USDC.e, and machineUSD. A server advertises
|
|
88
|
+
`machineTokenEnabled`; the client uses machineUSD when a verified route and sufficient balance
|
|
89
|
+
are available, and otherwise pays the token requested by the challenge. Sessions keep the selected
|
|
90
|
+
rail until the channel closes.
|
|
91
|
+
|
|
86
92
|
## Examples
|
|
87
93
|
|
|
88
94
|
| Example | Description |
|
|
@@ -117,11 +123,20 @@ mppx sessions list
|
|
|
117
123
|
mppx sessions view <channel-id>
|
|
118
124
|
mppx sessions close <channel-id>
|
|
119
125
|
mppx sessions close --all --yes
|
|
126
|
+
|
|
127
|
+
# explicitly trust a custom session escrow advertised by the server
|
|
128
|
+
mppx example.com -M allowCustomEscrow=true
|
|
120
129
|
```
|
|
121
130
|
|
|
122
131
|
`--session auto` is the default. Pass `new` to open another channel or a channel ID to select one
|
|
123
132
|
explicitly.
|
|
124
133
|
|
|
134
|
+
Tempo session clients accept only the canonical escrow contract by default. A server may advertise
|
|
135
|
+
its configured custom escrow in the payment challenge, but the client rejects it unless
|
|
136
|
+
`-M allowCustomEscrow=true` is supplied. This opt-in trusts the server-selected address; clients
|
|
137
|
+
that do not support custom escrows should leave it unset. See the
|
|
138
|
+
[session escrow trust documentation](./src/tempo/session/README.md#escrow-configuration-and-trust).
|
|
139
|
+
|
|
125
140
|
You can also install globally to use the `mppx` CLI from anywhere:
|
|
126
141
|
|
|
127
142
|
```bash
|
package/dist/Challenge.js
CHANGED
|
@@ -180,7 +180,15 @@ export function serialize(challenge) {
|
|
|
180
180
|
function authParam(name, value) {
|
|
181
181
|
if (/[\r\n]/.test(value))
|
|
182
182
|
throw new Error('Invalid quoted-string value.');
|
|
183
|
-
|
|
183
|
+
const escaped = value
|
|
184
|
+
.replace(/\\/g, '\\\\')
|
|
185
|
+
.replace(/"/g, '\\"')
|
|
186
|
+
// Header values must be ByteStrings (code points ≤ 0xFF): escape anything
|
|
187
|
+
// above Latin-1 (em dashes, smart quotes, emoji in descriptions) so the
|
|
188
|
+
// serialized challenge is always a legal header value instead of crashing
|
|
189
|
+
// Response construction.
|
|
190
|
+
.replace(/[\u0100-\uffff]/g, (char) => `\\u${char.charCodeAt(0).toString(16).padStart(4, '0')}`);
|
|
191
|
+
return `${name}="${escaped}"`;
|
|
184
192
|
}
|
|
185
193
|
/**
|
|
186
194
|
* Deserializes a WWW-Authenticate header value to a challenge.
|
|
@@ -220,38 +228,17 @@ export function deserialize(value, options) {
|
|
|
220
228
|
/** @internal Extracts the `Payment` scheme from a WWW-Authenticate value that may contain multiple schemes. */
|
|
221
229
|
function extractPaymentAuthParams(header) {
|
|
222
230
|
const token = Constants.Schemes.payment;
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
else if (char === '\\')
|
|
231
|
-
escaped = true;
|
|
232
|
-
else if (char === '"')
|
|
233
|
-
inQuotes = false;
|
|
234
|
-
continue;
|
|
235
|
-
}
|
|
236
|
-
if (char === '"') {
|
|
237
|
-
inQuotes = true;
|
|
238
|
-
continue;
|
|
239
|
-
}
|
|
240
|
-
if (!startsWithSchemeToken(header, i, token))
|
|
241
|
-
continue;
|
|
242
|
-
const prefix = header.slice(0, i);
|
|
243
|
-
if (prefix.trim() && !prefix.trimEnd().endsWith(','))
|
|
244
|
-
continue;
|
|
245
|
-
let paramsStart = i + token.length;
|
|
246
|
-
while (paramsStart < header.length && /\s/.test(header[paramsStart] ?? ''))
|
|
247
|
-
paramsStart++;
|
|
248
|
-
return header.slice(paramsStart);
|
|
249
|
-
}
|
|
250
|
-
return null;
|
|
231
|
+
const [start] = findSchemeStarts(header, token);
|
|
232
|
+
if (start === undefined)
|
|
233
|
+
return null;
|
|
234
|
+
let paramsStart = start + token.length;
|
|
235
|
+
while (paramsStart < header.length && /\s/.test(header[paramsStart] ?? ''))
|
|
236
|
+
paramsStart++;
|
|
237
|
+
return header.slice(paramsStart);
|
|
251
238
|
}
|
|
252
239
|
/** @internal Parses auth-params with support for escaped quoted-string values. */
|
|
253
240
|
function parseAuthParams(input) {
|
|
254
|
-
const result =
|
|
241
|
+
const result = Object.create(null);
|
|
255
242
|
let i = 0;
|
|
256
243
|
while (i < input.length) {
|
|
257
244
|
while (i < input.length && /[\s,]/.test(input[i] ?? ''))
|
|
@@ -261,7 +248,7 @@ function parseAuthParams(input) {
|
|
|
261
248
|
const keyStart = i;
|
|
262
249
|
while (i < input.length && /[A-Za-z0-9_-]/.test(input[i] ?? ''))
|
|
263
250
|
i++;
|
|
264
|
-
const key = input.slice(keyStart, i);
|
|
251
|
+
const key = input.slice(keyStart, i).toLowerCase();
|
|
265
252
|
if (!key)
|
|
266
253
|
throw new Error('Malformed auth-param.');
|
|
267
254
|
while (i < input.length && /\s/.test(input[i] ?? ''))
|
|
@@ -300,7 +287,16 @@ function readQuotedAuthParamValue(input, start) {
|
|
|
300
287
|
i++;
|
|
301
288
|
if (escaped) {
|
|
302
289
|
parts ??= [];
|
|
303
|
-
|
|
290
|
+
// `\\uXXXX` unescapes characters above Latin-1. Unambiguous: serializers
|
|
291
|
+
// always double raw backslashes, so a bare `\\u` only ever comes from
|
|
292
|
+
// the unicode escape in `authParam`.
|
|
293
|
+
const hex = char === 'u' ? input.slice(i, i + 4) : undefined;
|
|
294
|
+
if (hex && /^[0-9A-Fa-f]{4}$/.test(hex)) {
|
|
295
|
+
parts.push(String.fromCharCode(Number.parseInt(hex, 16)));
|
|
296
|
+
i += 4;
|
|
297
|
+
}
|
|
298
|
+
else
|
|
299
|
+
parts.push(char);
|
|
304
300
|
segmentStart = i;
|
|
305
301
|
escaped = false;
|
|
306
302
|
continue;
|
|
@@ -323,11 +319,42 @@ function readQuotedAuthParamValue(input, start) {
|
|
|
323
319
|
}
|
|
324
320
|
/** @internal */
|
|
325
321
|
function startsWithSchemeToken(value, index, token) {
|
|
326
|
-
if (
|
|
322
|
+
if (value.slice(index, index + token.length).toLowerCase() !== token.toLowerCase())
|
|
327
323
|
return false;
|
|
328
324
|
const next = value[index + token.length];
|
|
329
325
|
return Boolean(next && /\s/.test(next));
|
|
330
326
|
}
|
|
327
|
+
/** @internal Finds auth scheme boundaries while ignoring quoted-string contents. */
|
|
328
|
+
function findSchemeStarts(value, token) {
|
|
329
|
+
const starts = [];
|
|
330
|
+
let inQuotes = false;
|
|
331
|
+
let escaped = false;
|
|
332
|
+
for (let i = 0; i < value.length; i++) {
|
|
333
|
+
const char = value[i];
|
|
334
|
+
if (inQuotes) {
|
|
335
|
+
if (escaped)
|
|
336
|
+
escaped = false;
|
|
337
|
+
else if (char === '\\')
|
|
338
|
+
escaped = true;
|
|
339
|
+
else if (char === '"')
|
|
340
|
+
inQuotes = false;
|
|
341
|
+
continue;
|
|
342
|
+
}
|
|
343
|
+
if (char === '"') {
|
|
344
|
+
inQuotes = true;
|
|
345
|
+
continue;
|
|
346
|
+
}
|
|
347
|
+
if (!startsWithSchemeToken(value, i, token))
|
|
348
|
+
continue;
|
|
349
|
+
let boundary = i - 1;
|
|
350
|
+
while (boundary >= 0 && /\s/.test(value[boundary] ?? ''))
|
|
351
|
+
boundary--;
|
|
352
|
+
if (boundary >= 0 && value[boundary] !== ',')
|
|
353
|
+
continue;
|
|
354
|
+
starts.push(i);
|
|
355
|
+
}
|
|
356
|
+
return starts;
|
|
357
|
+
}
|
|
331
358
|
/**
|
|
332
359
|
* Extracts the challenge from a Headers object.
|
|
333
360
|
*
|
|
@@ -422,12 +449,7 @@ export function fromHeadersList(headers, options) {
|
|
|
422
449
|
* @returns An array of deserialized challenges.
|
|
423
450
|
*/
|
|
424
451
|
export function deserializeList(value, options) {
|
|
425
|
-
|
|
426
|
-
const starts = [];
|
|
427
|
-
const schemePattern = new RegExp(`${Constants.Schemes.payment}\\s+`, 'gi');
|
|
428
|
-
for (const match of value.matchAll(schemePattern)) {
|
|
429
|
-
starts.push(match.index);
|
|
430
|
-
}
|
|
452
|
+
const starts = findSchemeStarts(value, Constants.Schemes.payment);
|
|
431
453
|
if (starts.length === 0)
|
|
432
454
|
throw new Error('No Payment schemes found.');
|
|
433
455
|
// Slice each scheme from its `Payment ` prefix up to the next scheme boundary,
|
package/dist/Constants.d.ts
CHANGED
|
@@ -1,39 +1,39 @@
|
|
|
1
1
|
/** HTTP header names used by the Payment authentication scheme. */
|
|
2
2
|
export declare const Headers: {
|
|
3
|
-
readonly acceptPayment:
|
|
4
|
-
readonly authorization:
|
|
5
|
-
readonly paymentReceipt:
|
|
6
|
-
readonly paymentSession:
|
|
7
|
-
readonly paymentSessionSnapshot:
|
|
8
|
-
readonly wwwAuthenticate:
|
|
3
|
+
readonly acceptPayment: 'Accept-Payment';
|
|
4
|
+
readonly authorization: 'Authorization';
|
|
5
|
+
readonly paymentReceipt: 'Payment-Receipt';
|
|
6
|
+
readonly paymentSession: 'Payment-Session';
|
|
7
|
+
readonly paymentSessionSnapshot: 'Payment-Session-Snapshot';
|
|
8
|
+
readonly wwwAuthenticate: 'WWW-Authenticate';
|
|
9
9
|
};
|
|
10
10
|
/** Authentication scheme names used by mppx transports. */
|
|
11
11
|
export declare const Schemes: {
|
|
12
|
-
readonly payment:
|
|
12
|
+
readonly payment: 'Payment';
|
|
13
13
|
};
|
|
14
14
|
/** Payment method names used by built-in mppx methods. */
|
|
15
15
|
export declare const Methods: {
|
|
16
|
-
readonly evm:
|
|
17
|
-
readonly stripe:
|
|
18
|
-
readonly tempo:
|
|
16
|
+
readonly evm: 'evm';
|
|
17
|
+
readonly stripe: 'stripe';
|
|
18
|
+
readonly tempo: 'tempo';
|
|
19
19
|
};
|
|
20
20
|
/** Payment intent names used by built-in mppx methods. */
|
|
21
21
|
export declare const Intents: {
|
|
22
|
-
readonly charge:
|
|
23
|
-
readonly session:
|
|
24
|
-
readonly subscription:
|
|
22
|
+
readonly charge: 'charge';
|
|
23
|
+
readonly session: 'session';
|
|
24
|
+
readonly subscription: 'subscription';
|
|
25
25
|
};
|
|
26
26
|
/** Method detail object keys used by built-in methods. */
|
|
27
27
|
export declare const MethodDetailKeys: {
|
|
28
|
-
readonly sessionProtocol:
|
|
29
|
-
readonly sessionSnapshot:
|
|
28
|
+
readonly sessionProtocol: 'sessionProtocol';
|
|
29
|
+
readonly sessionSnapshot: 'sessionSnapshot';
|
|
30
30
|
};
|
|
31
31
|
/** Tempo session protocol versions advertised under `request.methodDetails`. */
|
|
32
32
|
export declare const SessionProtocols: {
|
|
33
33
|
/** Legacy contract-backed Tempo session protocol. */
|
|
34
|
-
readonly v1:
|
|
34
|
+
readonly v1: 'v1';
|
|
35
35
|
/** TIP-1034 precompile-backed Tempo session protocol. */
|
|
36
|
-
readonly v2:
|
|
36
|
+
readonly v2: 'v2';
|
|
37
37
|
};
|
|
38
38
|
/** Known Tempo session protocol version markers. */
|
|
39
39
|
export type SessionProtocol = (typeof SessionProtocols)[keyof typeof SessionProtocols];
|
package/dist/Errors.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/** Default hint messages for payment errors. */
|
|
2
2
|
export declare const Hints: {
|
|
3
|
-
readonly paymentRequired:
|
|
4
|
-
readonly malformedCredential:
|
|
5
|
-
readonly methodUnsupported:
|
|
3
|
+
readonly paymentRequired: 'Use a supported wallet to pay for this resource using one of the supported payment methods returned in the WWW-Authenticate header. See https://mpp.dev/tools/wallet.md';
|
|
4
|
+
readonly malformedCredential: 'Use a supported wallet to construct valid credentials for one of the supported payment methods returned in the WWW-Authenticate header. See https://mpp.dev/tools/wallet.md';
|
|
5
|
+
readonly methodUnsupported: 'Use a supported wallet to pay for this resource using one of the supported payment methods returned in the WWW-Authenticate header. See https://mpp.dev/tools/wallet.md';
|
|
6
6
|
};
|
|
7
7
|
/**
|
|
8
8
|
* Base class for all payment-related errors.
|
package/dist/Method.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type * as Challenge from './Challenge.js';
|
|
2
2
|
import * as Credential from './Credential.js';
|
|
3
|
-
import type { ExactPartial, LooseOmit, MaybePromise } from './internal/types.js';
|
|
3
|
+
import type { DeepReadonly, ExactPartial, LooseOmit, MaybePromise } from './internal/types.js';
|
|
4
4
|
import type * as Receipt from './Receipt.js';
|
|
5
5
|
import type * as Html from './server/internal/html/config.js';
|
|
6
6
|
import type * as Transport from './server/Transport.js';
|
|
@@ -142,7 +142,7 @@ export type Validation<method extends Method = Method, details = unknown> = Read
|
|
|
142
142
|
/**
|
|
143
143
|
* A server-side configured method with verification logic.
|
|
144
144
|
*/
|
|
145
|
-
export type Server<method extends Method = Method, defaults extends ExactPartial<z.input<method['schema']['request']>> = {}, transportOverride = undefined, extensions extends object = {}, alias extends string | undefined = string | undefined> = method & {
|
|
145
|
+
export type Server<method extends Method = Method, defaults extends ExactPartial<z.input<method['schema']['request']>> = {}, transportOverride = undefined, extensions extends object = {}, alias extends string | undefined = string | undefined> = method & ComposableHooks<method> & {
|
|
146
146
|
alias?: alias | undefined;
|
|
147
147
|
authorize?: AuthorizeFn<method> | undefined;
|
|
148
148
|
defaults?: defaults | undefined;
|
|
@@ -163,6 +163,38 @@ export type Server<method extends Method = Method, defaults extends ExactPartial
|
|
|
163
163
|
verify: VerifyFn<method>;
|
|
164
164
|
};
|
|
165
165
|
export type AnyServer = Server<any, any, any, any, any>;
|
|
166
|
+
/**
|
|
167
|
+
* Decides whether a configured method offer is available for an HTTP request.
|
|
168
|
+
*
|
|
169
|
+
* Called once per configured offer during composition. The payment request is
|
|
170
|
+
* schema-normalized and deeply immutable. `input` is cloned so its body can be
|
|
171
|
+
* safely inspected unless the upstream body was already consumed or locked, in
|
|
172
|
+
* which case the clone preserves request metadata without a body. Returning
|
|
173
|
+
* `false` removes only this method's offer. Successfully matched credential
|
|
174
|
+
* dispatch does not invoke this hook.
|
|
175
|
+
*/
|
|
176
|
+
export type CanOfferFn<method extends Method> = (parameters: {
|
|
177
|
+
input: globalThis.Request;
|
|
178
|
+
request: DeepReadonly<z.output<method['schema']['request']>>;
|
|
179
|
+
}) => MaybePromise<boolean>;
|
|
180
|
+
/** Hooks supported by every composable server method constructor. */
|
|
181
|
+
/**
|
|
182
|
+
* Optional per-method hook invoked after a payment succeeds.
|
|
183
|
+
*
|
|
184
|
+
* Called after verification completes successfully. Use this for side-effects
|
|
185
|
+
* like recording the payment in an external system.
|
|
186
|
+
*/
|
|
187
|
+
export type OnPaymentSuccessFn<method extends Method> = (parameters: {
|
|
188
|
+
input?: globalThis.Request;
|
|
189
|
+
receipt: DeepReadonly<Receipt.Receipt>;
|
|
190
|
+
request: DeepReadonly<z.output<method['schema']['request']>>;
|
|
191
|
+
}) => MaybePromise<void>;
|
|
192
|
+
export type ComposableHooks<method extends Method> = {
|
|
193
|
+
/** Decides whether this method's configured offer is available for an HTTP request. */
|
|
194
|
+
canOffer?: CanOfferFn<method> | undefined;
|
|
195
|
+
/** Invoked after a successful payment on this method. */
|
|
196
|
+
onPaymentSuccess?: OnPaymentSuccessFn<method> | undefined;
|
|
197
|
+
};
|
|
166
198
|
/** Credential creation function for a single method. */
|
|
167
199
|
export type CreateCredentialFn<method extends Method, context = unknown> = (parameters: {
|
|
168
200
|
challenge: Challenge.Challenge<z.output<method['schema']['request']>, method['intent'], method['name']>;
|
|
@@ -252,8 +284,6 @@ export declare function validateCredential<const methods extends readonly AnySer
|
|
|
252
284
|
* hosts that issue challenges must verify that binding separately.
|
|
253
285
|
*/
|
|
254
286
|
export declare function broadcastCredential<const methods extends readonly AnyServer[]>(methods: methods, input: string | Credential.Credential): Promise<Receipt.Receipt>;
|
|
255
|
-
/** @internal */
|
|
256
|
-
export declare function selectServerMethod(methods: readonly AnyServer[], challenge: Challenge.Challenge): AnyServer | undefined;
|
|
257
287
|
/**
|
|
258
288
|
* Optional respond function for a server-side method.
|
|
259
289
|
*
|
|
@@ -318,7 +348,7 @@ export declare namespace toServer {
|
|
|
318
348
|
type Alias<options> = options extends {
|
|
319
349
|
alias: infer alias extends string;
|
|
320
350
|
} ? alias : undefined;
|
|
321
|
-
type Options<method extends Method, defaults extends RequestDefaults<method> = {}, transportOverride extends Transport.AnyTransport | undefined = undefined, extensions extends object = {}, alias extends string | undefined = undefined> = {
|
|
351
|
+
type Options<method extends Method, defaults extends RequestDefaults<method> = {}, transportOverride extends Transport.AnyTransport | undefined = undefined, extensions extends object = {}, alias extends string | undefined = undefined> = ComposableHooks<method> & {
|
|
322
352
|
alias?: alias | undefined;
|
|
323
353
|
authorize?: AuthorizeFn<method> | undefined;
|
|
324
354
|
defaults?: defaults | undefined;
|
package/dist/Method.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import * as Constants from './Constants.js';
|
|
2
1
|
import * as Credential from './Credential.js';
|
|
3
2
|
import * as Errors from './Errors.js';
|
|
4
3
|
import * as Expires from './Expires.js';
|
|
@@ -68,11 +67,9 @@ export async function broadcastCredential(methods, input) {
|
|
|
68
67
|
/**
|
|
69
68
|
* Parses a submitted credential into the inputs required for method execution.
|
|
70
69
|
*
|
|
71
|
-
* Dispatch is based on the challenge method and intent.
|
|
72
|
-
*
|
|
73
|
-
* the
|
|
74
|
-
* parses the method-specific credential payload before returning the selected
|
|
75
|
-
* method and the unmodified challenge request.
|
|
70
|
+
* Dispatch is based on the challenge method and intent. The helper then asserts
|
|
71
|
+
* challenge expiry and parses the method-specific credential payload before
|
|
72
|
+
* returning the selected method and the unmodified challenge request.
|
|
76
73
|
*
|
|
77
74
|
* This intentionally does not verify that the challenge was issued by a
|
|
78
75
|
* particular host, authorize the caller or requested resource, validate the
|
|
@@ -82,7 +79,7 @@ export async function broadcastCredential(methods, input) {
|
|
|
82
79
|
function prepareCredential(methods, input) {
|
|
83
80
|
const credential = typeof input === 'string' ? Credential.deserialize(input) : input;
|
|
84
81
|
const candidates = methods.filter((method) => method.name === credential.challenge.method && method.intent === credential.challenge.intent);
|
|
85
|
-
const method =
|
|
82
|
+
const method = candidates[0];
|
|
86
83
|
if (!method)
|
|
87
84
|
throw new Errors.InvalidChallengeError({
|
|
88
85
|
id: credential.challenge.id,
|
|
@@ -102,20 +99,6 @@ function prepareCredential(methods, input) {
|
|
|
102
99
|
request: credential.challenge.request,
|
|
103
100
|
};
|
|
104
101
|
}
|
|
105
|
-
/** @internal */
|
|
106
|
-
export function selectServerMethod(methods, challenge) {
|
|
107
|
-
if (methods.length <= 1)
|
|
108
|
-
return methods[0];
|
|
109
|
-
if (challenge.method !== Constants.Methods.tempo ||
|
|
110
|
-
challenge.intent !== Constants.Intents.session)
|
|
111
|
-
return methods[0];
|
|
112
|
-
const sessionProtocol = Constants.getMethodDetail(challenge.request.methodDetails, Constants.MethodDetailKeys.sessionProtocol);
|
|
113
|
-
if (sessionProtocol === undefined || sessionProtocol === Constants.SessionProtocols.v1)
|
|
114
|
-
return methods.find((method) => method.alias === 'sessionLegacy') ?? methods[0];
|
|
115
|
-
if (sessionProtocol === Constants.SessionProtocols.v2)
|
|
116
|
-
return methods.find((method) => method.alias === undefined) ?? methods[0];
|
|
117
|
-
return undefined;
|
|
118
|
-
}
|
|
119
102
|
/**
|
|
120
103
|
* Extends a method with client-side credential creation logic.
|
|
121
104
|
*
|
|
@@ -157,7 +140,7 @@ export function toClient(method, options) {
|
|
|
157
140
|
* ```
|
|
158
141
|
*/
|
|
159
142
|
export function toServer(method, options) {
|
|
160
|
-
const { alias, authorize, defaults, extensions, html, preflight, request, respond, broadcast, stableBinding, transport, validate, verify, } = options;
|
|
143
|
+
const { alias, authorize, canOffer, defaults, extensions, html, onPaymentSuccess, preflight, request, respond, broadcast, stableBinding, transport, validate, verify, } = options;
|
|
161
144
|
const effectiveVerify = verify ??
|
|
162
145
|
(async (parameters) => {
|
|
163
146
|
if (validate)
|
|
@@ -172,9 +155,11 @@ export function toServer(method, options) {
|
|
|
172
155
|
...method,
|
|
173
156
|
alias,
|
|
174
157
|
authorize,
|
|
158
|
+
canOffer,
|
|
175
159
|
defaults,
|
|
176
160
|
extensions,
|
|
177
161
|
html,
|
|
162
|
+
onPaymentSuccess,
|
|
178
163
|
preflight,
|
|
179
164
|
request,
|
|
180
165
|
respond,
|
package/dist/Store.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { MaybePromise } from './internal/types.js';
|
|
1
2
|
export type StoreItemMap = Record<string, unknown>;
|
|
2
3
|
/**
|
|
3
4
|
* Describes the outcome of an atomic {@link Update} callback.
|
|
@@ -27,6 +28,13 @@ export type Change<value, result> = {
|
|
|
27
28
|
* must be synchronous and free of side effects.
|
|
28
29
|
*/
|
|
29
30
|
export type Update<itemMap extends StoreItemMap = StoreItemMap> = <key extends keyof itemMap & string, result>(key: key, fn: (current: itemMap[key] | null) => Change<itemMap[key], result>) => Promise<result>;
|
|
31
|
+
/** Attempts to atomically record first use of a replay key through its expiry. */
|
|
32
|
+
export type TryClaim<itemMap extends StoreItemMap = StoreItemMap> = <key extends keyof itemMap & string>(key: key, expires: number) => MaybePromise<boolean>;
|
|
33
|
+
/** Persisted marker used by the {@link tryClaim} fallback. */
|
|
34
|
+
export type ReplayMarker = {
|
|
35
|
+
expires: number;
|
|
36
|
+
type: 'mppx:replay';
|
|
37
|
+
};
|
|
30
38
|
/** Base key-value actions available on every {@link Store}. */
|
|
31
39
|
export type StoreActions<itemMap extends StoreItemMap = StoreItemMap> = {
|
|
32
40
|
get: <key extends keyof itemMap & string>(key: key) => Promise<itemMap[key] | null>;
|
|
@@ -36,6 +44,8 @@ export type StoreActions<itemMap extends StoreItemMap = StoreItemMap> = {
|
|
|
36
44
|
/** Atomic actions that can be provided via the `extended` slot. */
|
|
37
45
|
export type AtomicActions<itemMap extends StoreItemMap = StoreItemMap> = {
|
|
38
46
|
update: Update<itemMap>;
|
|
47
|
+
/** Optional single-operation fast path for recording expiring replay keys. */
|
|
48
|
+
tryClaim?: TryClaim<itemMap> | undefined;
|
|
39
49
|
};
|
|
40
50
|
/**
|
|
41
51
|
* Async key-value store.
|
|
@@ -54,6 +64,15 @@ export type Store<itemMap extends StoreItemMap = StoreItemMap, extended extends
|
|
|
54
64
|
* Equivalent to `Store<itemMap, AtomicActions<itemMap>>`.
|
|
55
65
|
*/
|
|
56
66
|
export type AtomicStore<itemMap extends StoreItemMap = StoreItemMap> = Store<itemMap, AtomicActions<itemMap>>;
|
|
67
|
+
/**
|
|
68
|
+
* Attempts to atomically record first use of a replay key through its expiry.
|
|
69
|
+
*
|
|
70
|
+
* Returns `true` when this call recorded the key and `false` when it was already
|
|
71
|
+
* recorded and unexpired. `expires` is a Unix timestamp in milliseconds.
|
|
72
|
+
* Uses the adapter's optimized primitive when available and otherwise falls
|
|
73
|
+
* back to {@link AtomicStore.update}.
|
|
74
|
+
*/
|
|
75
|
+
export declare function tryClaim<itemMap extends StoreItemMap, key extends keyof itemMap & string>(store: AtomicStore<itemMap>, key: key, expires: number): MaybePromise<boolean>;
|
|
57
76
|
/** Options shared by store constructors. */
|
|
58
77
|
export type Options = {
|
|
59
78
|
/** Prefix prepended to every backing store key. */
|
package/dist/Store.js
CHANGED
|
@@ -15,6 +15,35 @@
|
|
|
15
15
|
* `AtomicActions`, just like Viem's `PublicClient = Client<..., PublicActions>`.
|
|
16
16
|
*/
|
|
17
17
|
import { Json } from 'ox';
|
|
18
|
+
/**
|
|
19
|
+
* Attempts to atomically record first use of a replay key through its expiry.
|
|
20
|
+
*
|
|
21
|
+
* Returns `true` when this call recorded the key and `false` when it was already
|
|
22
|
+
* recorded and unexpired. `expires` is a Unix timestamp in milliseconds.
|
|
23
|
+
* Uses the adapter's optimized primitive when available and otherwise falls
|
|
24
|
+
* back to {@link AtomicStore.update}.
|
|
25
|
+
*/
|
|
26
|
+
export function tryClaim(store, key, expires) {
|
|
27
|
+
if (store.tryClaim)
|
|
28
|
+
return store.tryClaim(key, expires);
|
|
29
|
+
return store.update(key, (current) => {
|
|
30
|
+
if (current !== null && (!isReplayMarker(current) || current.expires > Date.now()))
|
|
31
|
+
return { op: 'noop', result: false };
|
|
32
|
+
return {
|
|
33
|
+
op: 'set',
|
|
34
|
+
value: { expires, type: 'mppx:replay' },
|
|
35
|
+
result: true,
|
|
36
|
+
};
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
function isReplayMarker(value) {
|
|
40
|
+
return (typeof value === 'object' &&
|
|
41
|
+
value !== null &&
|
|
42
|
+
'expires' in value &&
|
|
43
|
+
typeof value.expires === 'number' &&
|
|
44
|
+
'type' in value &&
|
|
45
|
+
value.type === 'mppx:replay');
|
|
46
|
+
}
|
|
18
47
|
const keyPrefixCache = new WeakMap();
|
|
19
48
|
export function from(store, options) {
|
|
20
49
|
return withKeyPrefix(store, options?.keyPrefix);
|
|
@@ -44,6 +73,13 @@ function withKeyPrefix(store, keyPrefix = '') {
|
|
|
44
73
|
},
|
|
45
74
|
}
|
|
46
75
|
: {}),
|
|
76
|
+
...('tryClaim' in store && typeof store.tryClaim === 'function'
|
|
77
|
+
? {
|
|
78
|
+
tryClaim(key, expires) {
|
|
79
|
+
return store.tryClaim(prefixedKey(key), expires);
|
|
80
|
+
},
|
|
81
|
+
}
|
|
82
|
+
: {}),
|
|
47
83
|
});
|
|
48
84
|
const cachedByPrefix = keyPrefixCache.get(store) ?? new Map();
|
|
49
85
|
cachedByPrefix.set(keyPrefix, prefixed);
|
|
@@ -107,6 +143,13 @@ export function memory(options) {
|
|
|
107
143
|
store.delete(key);
|
|
108
144
|
return change.result;
|
|
109
145
|
},
|
|
146
|
+
tryClaim(key, expires) {
|
|
147
|
+
const current = store.has(key) ? Json.parse(store.get(key)) : null;
|
|
148
|
+
if (current !== null && (!isReplayMarker(current) || current.expires > Date.now()))
|
|
149
|
+
return false;
|
|
150
|
+
store.set(key, Json.stringify({ expires, type: 'mppx:replay' }));
|
|
151
|
+
return true;
|
|
152
|
+
},
|
|
110
153
|
}, options);
|
|
111
154
|
}
|
|
112
155
|
export function redis(client, options) {
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type * as Types from './Types.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 declare function composeSigners(...signers: readonly [Types.Signer, ...Types.Signer[]]): Types.Signer<'composed'>;
|
|
9
|
+
/**
|
|
10
|
+
* Wraps a fetch implementation so every outbound request is attested.
|
|
11
|
+
*
|
|
12
|
+
* Configure this wrapper as the underlying `fetch` passed to `mppx/client`
|
|
13
|
+
* `Fetch.from()`. MPPX then uses it for both the initial request and its
|
|
14
|
+
* automatic request containing an `Authorization: Payment` credential.
|
|
15
|
+
*/
|
|
16
|
+
export declare function wrapFetch(fetch: typeof globalThis.fetch, signer: Types.Signer): typeof globalThis.fetch;
|
|
17
|
+
//# sourceMappingURL=Client.d.ts.map
|