mppx 0.6.31 → 0.8.0
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 +50 -0
- package/README.md +20 -11
- package/dist/Challenge.d.ts.map +1 -1
- package/dist/Challenge.js +27 -13
- package/dist/Challenge.js.map +1 -1
- package/dist/Constants.d.ts +46 -0
- package/dist/Constants.d.ts.map +1 -0
- package/dist/Constants.js +46 -0
- package/dist/Constants.js.map +1 -0
- package/dist/Credential.d.ts.map +1 -1
- package/dist/Credential.js +5 -4
- package/dist/Credential.js.map +1 -1
- package/dist/Mcp.d.ts +3 -0
- package/dist/Mcp.d.ts.map +1 -1
- package/dist/Mcp.js +2 -0
- package/dist/Mcp.js.map +1 -1
- package/dist/Method.d.ts +32 -4
- package/dist/Method.d.ts.map +1 -1
- package/dist/Method.js +5 -2
- package/dist/Method.js.map +1 -1
- package/dist/PaymentRequest.d.ts +10 -10
- package/dist/PaymentRequest.js +8 -8
- package/dist/Receipt.d.ts.map +1 -1
- package/dist/Receipt.js +3 -2
- package/dist/Receipt.js.map +1 -1
- package/dist/cli/cli.d.ts.map +1 -1
- package/dist/cli/cli.js +19 -11
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/plugins/tempo.d.ts.map +1 -1
- package/dist/cli/plugins/tempo.js +17 -6
- package/dist/cli/plugins/tempo.js.map +1 -1
- package/dist/cli/utils.d.ts +5 -0
- package/dist/cli/utils.d.ts.map +1 -1
- package/dist/cli/utils.js +10 -0
- package/dist/cli/utils.js.map +1 -1
- package/dist/client/Methods.d.ts +5 -2
- package/dist/client/Methods.d.ts.map +1 -1
- package/dist/client/Methods.js +5 -2
- package/dist/client/Methods.js.map +1 -1
- package/dist/client/Mppx.js +2 -2
- package/dist/client/Mppx.js.map +1 -1
- package/dist/client/Transport.d.ts +11 -16
- package/dist/client/Transport.d.ts.map +1 -1
- package/dist/client/Transport.js +55 -76
- package/dist/client/Transport.js.map +1 -1
- package/dist/client/index.d.ts +5 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +3 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/internal/Fetch.d.ts.map +1 -1
- package/dist/client/internal/Fetch.js +60 -13
- package/dist/client/internal/Fetch.js.map +1 -1
- package/dist/client/internal/protocols/Mcp.d.ts +7 -0
- package/dist/client/internal/protocols/Mcp.d.ts.map +1 -0
- package/dist/client/internal/protocols/Mcp.js +159 -0
- package/dist/client/internal/protocols/Mcp.js.map +1 -0
- package/dist/client/internal/protocols/Mpp.d.ts +4 -0
- package/dist/client/internal/protocols/Mpp.d.ts.map +1 -0
- package/dist/client/internal/protocols/Mpp.js +18 -0
- package/dist/client/internal/protocols/Mpp.js.map +1 -0
- package/dist/client/internal/protocols/Protocol.d.ts +10 -0
- package/dist/client/internal/protocols/Protocol.d.ts.map +1 -0
- package/dist/client/internal/protocols/Protocol.js +2 -0
- package/dist/client/internal/protocols/Protocol.js.map +1 -0
- package/dist/client/internal/protocols/Shared.d.ts +5 -0
- package/dist/client/internal/protocols/Shared.d.ts.map +1 -0
- package/dist/client/internal/protocols/Shared.js +20 -0
- package/dist/client/internal/protocols/Shared.js.map +1 -0
- package/dist/client/internal/protocols/X402.d.ts +8 -0
- package/dist/client/internal/protocols/X402.d.ts.map +1 -0
- package/dist/client/internal/protocols/X402.js +39 -0
- package/dist/client/internal/protocols/X402.js.map +1 -0
- package/dist/evm/client/index.d.ts +1 -0
- package/dist/evm/client/index.d.ts.map +1 -1
- package/dist/evm/client/index.js +1 -0
- package/dist/evm/client/index.js.map +1 -1
- package/dist/evm/index.d.ts +2 -0
- package/dist/evm/index.d.ts.map +1 -1
- package/dist/evm/index.js +2 -0
- package/dist/evm/index.js.map +1 -1
- package/dist/evm/server/Methods.d.ts +1 -1
- package/dist/evm/server/Methods.d.ts.map +1 -1
- package/dist/evm/server/index.d.ts +1 -0
- package/dist/evm/server/index.d.ts.map +1 -1
- package/dist/evm/server/index.js +1 -0
- package/dist/evm/server/index.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/internal/AcceptPayment.d.ts +3 -0
- package/dist/internal/AcceptPayment.d.ts.map +1 -1
- package/dist/internal/AcceptPayment.js +15 -11
- package/dist/internal/AcceptPayment.js.map +1 -1
- package/dist/mcp/client/McpClient.d.ts +101 -0
- package/dist/mcp/client/McpClient.d.ts.map +1 -0
- package/dist/mcp/client/McpClient.js +162 -0
- package/dist/mcp/client/McpClient.js.map +1 -0
- package/dist/mcp/client/index.d.ts.map +1 -0
- package/dist/mcp/client/index.js.map +1 -0
- package/dist/mcp/server/Transport.d.ts.map +1 -0
- package/dist/mcp/server/Transport.js.map +1 -0
- package/dist/mcp/server/index.d.ts.map +1 -0
- package/dist/mcp/server/index.js.map +1 -0
- package/dist/server/Mppx.d.ts +12 -4
- package/dist/server/Mppx.d.ts.map +1 -1
- package/dist/server/Mppx.js +85 -27
- package/dist/server/Mppx.js.map +1 -1
- package/dist/server/Response.d.ts.map +1 -1
- package/dist/server/Response.js +2 -1
- package/dist/server/Response.js.map +1 -1
- package/dist/server/Transport.d.ts +1 -1
- package/dist/server/Transport.d.ts.map +1 -1
- package/dist/server/Transport.js +5 -4
- package/dist/server/Transport.js.map +1 -1
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -0
- package/dist/server/index.js.map +1 -1
- package/dist/stripe/client/Charge.d.ts +1 -1
- package/dist/stripe/client/Charge.d.ts.map +1 -1
- package/dist/stripe/client/Charge.js +3 -1
- package/dist/stripe/client/Charge.js.map +1 -1
- package/dist/stripe/server/Charge.d.ts +1 -1
- package/dist/stripe/server/Charge.d.ts.map +1 -1
- package/dist/stripe/server/Charge.js +9 -2
- package/dist/stripe/server/Charge.js.map +1 -1
- package/dist/stripe/server/Methods.d.ts +1 -1
- package/dist/stripe/server/Methods.d.ts.map +1 -1
- package/dist/stripe/server/internal/html.gen.d.ts +1 -1
- package/dist/stripe/server/internal/html.gen.d.ts.map +1 -1
- package/dist/stripe/server/internal/html.gen.js +1 -1
- package/dist/stripe/server/internal/html.gen.js.map +1 -1
- package/dist/tempo/Methods.d.ts +18 -0
- package/dist/tempo/Methods.d.ts.map +1 -1
- package/dist/tempo/Methods.js +16 -1
- package/dist/tempo/Methods.js.map +1 -1
- package/dist/tempo/Proof.d.ts +85 -1
- package/dist/tempo/Proof.d.ts.map +1 -1
- package/dist/tempo/Proof.js +35 -0
- package/dist/tempo/Proof.js.map +1 -1
- package/dist/tempo/client/Charge.d.ts +19 -1
- package/dist/tempo/client/Charge.d.ts.map +1 -1
- package/dist/tempo/client/Charge.js +47 -27
- package/dist/tempo/client/Charge.js.map +1 -1
- package/dist/tempo/client/Methods.d.ts +41 -10
- package/dist/tempo/client/Methods.d.ts.map +1 -1
- package/dist/tempo/client/Methods.js +16 -7
- package/dist/tempo/client/Methods.js.map +1 -1
- package/dist/tempo/client/ResolveAccount.d.ts +40 -0
- package/dist/tempo/client/ResolveAccount.d.ts.map +1 -0
- package/dist/tempo/client/ResolveAccount.js +2 -0
- package/dist/tempo/client/ResolveAccount.js.map +1 -0
- package/dist/tempo/client/index.d.ts +7 -4
- package/dist/tempo/client/index.d.ts.map +1 -1
- package/dist/tempo/client/index.js +5 -3
- package/dist/tempo/client/index.js.map +1 -1
- package/dist/tempo/index.d.ts +1 -0
- package/dist/tempo/index.d.ts.map +1 -1
- package/dist/tempo/index.js +1 -0
- package/dist/tempo/index.js.map +1 -1
- package/dist/tempo/internal/fee-payer.d.ts +29 -1
- package/dist/tempo/internal/fee-payer.d.ts.map +1 -1
- package/dist/tempo/internal/fee-payer.js +138 -4
- package/dist/tempo/internal/fee-payer.js.map +1 -1
- package/dist/tempo/internal/proof.d.ts +71 -5
- package/dist/tempo/internal/proof.d.ts.map +1 -1
- package/dist/tempo/internal/proof.js +42 -6
- package/dist/tempo/internal/proof.js.map +1 -1
- package/dist/tempo/{client → legacy/client}/ChannelOps.d.ts +19 -6
- package/dist/tempo/legacy/client/ChannelOps.d.ts.map +1 -0
- package/dist/tempo/{client → legacy/client}/ChannelOps.js +9 -3
- package/dist/tempo/legacy/client/ChannelOps.js.map +1 -0
- package/dist/tempo/{client → legacy/client}/Session.d.ts +23 -4
- package/dist/tempo/legacy/client/Session.d.ts.map +1 -0
- package/dist/tempo/{client → legacy/client}/Session.js +14 -7
- package/dist/tempo/legacy/client/Session.js.map +1 -0
- package/dist/tempo/{client → legacy/client}/SessionManager.d.ts +20 -5
- package/dist/tempo/legacy/client/SessionManager.d.ts.map +1 -0
- package/dist/tempo/{client → legacy/client}/SessionManager.js +30 -19
- package/dist/tempo/legacy/client/SessionManager.js.map +1 -0
- package/dist/tempo/legacy/client/index.d.ts +7 -0
- package/dist/tempo/legacy/client/index.d.ts.map +1 -0
- package/dist/tempo/legacy/client/index.js +5 -0
- package/dist/tempo/legacy/client/index.js.map +1 -0
- package/dist/tempo/legacy/index.d.ts +7 -0
- package/dist/tempo/legacy/index.d.ts.map +1 -0
- package/dist/tempo/legacy/index.js +7 -0
- package/dist/tempo/legacy/index.js.map +1 -0
- package/dist/tempo/{server → legacy/server}/Session.d.ts +28 -11
- package/dist/tempo/legacy/server/Session.d.ts.map +1 -0
- package/dist/tempo/{server → legacy/server}/Session.js +12 -10
- package/dist/tempo/legacy/server/Session.js.map +1 -0
- package/dist/tempo/legacy/server/index.d.ts +5 -0
- package/dist/tempo/legacy/server/index.d.ts.map +1 -0
- package/dist/tempo/legacy/server/index.js +5 -0
- package/dist/tempo/legacy/server/index.js.map +1 -0
- package/dist/tempo/{session → legacy/session}/Chain.d.ts +30 -23
- package/dist/tempo/legacy/session/Chain.d.ts.map +1 -0
- package/dist/tempo/{session → legacy/session}/Chain.js +12 -11
- package/dist/tempo/legacy/session/Chain.js.map +1 -0
- package/dist/tempo/{session → legacy/session}/Channel.d.ts +1 -0
- package/dist/tempo/legacy/session/Channel.d.ts.map +1 -0
- package/dist/tempo/legacy/session/Channel.js.map +1 -0
- package/dist/tempo/legacy/session/ChannelStore.d.ts +22 -0
- package/dist/tempo/legacy/session/ChannelStore.d.ts.map +1 -0
- package/dist/tempo/legacy/session/ChannelStore.js +6 -0
- package/dist/tempo/legacy/session/ChannelStore.js.map +1 -0
- package/dist/tempo/legacy/session/Types.d.ts +73 -0
- package/dist/tempo/legacy/session/Types.d.ts.map +1 -0
- package/dist/tempo/legacy/session/Types.js.map +1 -0
- package/dist/tempo/{session → legacy/session}/Voucher.d.ts +4 -4
- package/dist/tempo/legacy/session/Voucher.d.ts.map +1 -0
- package/dist/tempo/{session → legacy/session}/Voucher.js +1 -1
- package/dist/tempo/legacy/session/Voucher.js.map +1 -0
- package/dist/tempo/{session → legacy/session}/escrow.abi.d.ts +1 -0
- package/dist/tempo/{session → legacy/session}/escrow.abi.d.ts.map +1 -1
- package/dist/tempo/{session → legacy/session}/escrow.abi.js +1 -0
- package/dist/tempo/legacy/session/escrow.abi.js.map +1 -0
- package/dist/tempo/legacy/session/index.d.ts +9 -0
- package/dist/tempo/legacy/session/index.d.ts.map +1 -0
- package/dist/tempo/legacy/session/index.js +9 -0
- package/dist/tempo/legacy/session/index.js.map +1 -0
- package/dist/tempo/server/Charge.d.ts +1 -1
- package/dist/tempo/server/Charge.d.ts.map +1 -1
- package/dist/tempo/server/Charge.js +51 -30
- package/dist/tempo/server/Charge.js.map +1 -1
- package/dist/tempo/server/Methods.d.ts +67 -8
- package/dist/tempo/server/Methods.d.ts.map +1 -1
- package/dist/tempo/server/Methods.js +40 -10
- package/dist/tempo/server/Methods.js.map +1 -1
- package/dist/tempo/server/Subscription.d.ts +11 -1
- package/dist/tempo/server/Subscription.d.ts.map +1 -1
- package/dist/tempo/server/Subscription.js +135 -23
- package/dist/tempo/server/Subscription.js.map +1 -1
- package/dist/tempo/server/index.d.ts +6 -5
- package/dist/tempo/server/index.d.ts.map +1 -1
- package/dist/tempo/server/index.js +5 -5
- package/dist/tempo/server/index.js.map +1 -1
- package/dist/tempo/server/internal/html.gen.d.ts +1 -1
- package/dist/tempo/server/internal/html.gen.d.ts.map +1 -1
- package/dist/tempo/server/internal/html.gen.js +1 -1
- package/dist/tempo/server/internal/html.gen.js.map +1 -1
- package/dist/tempo/server/internal/request-body.d.ts +7 -2
- package/dist/tempo/server/internal/request-body.d.ts.map +1 -1
- package/dist/tempo/server/internal/request-body.js +20 -3
- package/dist/tempo/server/internal/request-body.js.map +1 -1
- package/dist/tempo/server/internal/transport.d.ts +8 -4
- package/dist/tempo/server/internal/transport.d.ts.map +1 -1
- package/dist/tempo/server/internal/transport.js +8 -7
- package/dist/tempo/server/internal/transport.js.map +1 -1
- package/dist/tempo/session/Snapshot.d.ts +32 -0
- package/dist/tempo/session/Snapshot.d.ts.map +1 -0
- package/dist/tempo/session/Snapshot.js +37 -0
- package/dist/tempo/session/Snapshot.js.map +1 -0
- package/dist/tempo/session/client/ChannelOps.d.ts +81 -0
- package/dist/tempo/session/client/ChannelOps.d.ts.map +1 -0
- package/dist/tempo/session/client/ChannelOps.js +201 -0
- package/dist/tempo/session/client/ChannelOps.js.map +1 -0
- package/dist/tempo/session/client/ChannelStore.d.ts +51 -0
- package/dist/tempo/session/client/ChannelStore.d.ts.map +1 -0
- package/dist/tempo/session/client/ChannelStore.js +63 -0
- package/dist/tempo/session/client/ChannelStore.js.map +1 -0
- package/dist/tempo/session/client/CredentialState.d.ts +245 -0
- package/dist/tempo/session/client/CredentialState.d.ts.map +1 -0
- package/dist/tempo/session/client/CredentialState.js +419 -0
- package/dist/tempo/session/client/CredentialState.js.map +1 -0
- package/dist/tempo/session/client/ReceiptCoordinator.d.ts +26 -0
- package/dist/tempo/session/client/ReceiptCoordinator.d.ts.map +1 -0
- package/dist/tempo/session/client/ReceiptCoordinator.js +61 -0
- package/dist/tempo/session/client/ReceiptCoordinator.js.map +1 -0
- package/dist/tempo/session/client/Runtime.d.ts +464 -0
- package/dist/tempo/session/client/Runtime.d.ts.map +1 -0
- package/dist/tempo/session/client/Runtime.js +499 -0
- package/dist/tempo/session/client/Runtime.js.map +1 -0
- package/dist/tempo/session/client/Session.d.ts +138 -0
- package/dist/tempo/session/client/Session.d.ts.map +1 -0
- package/dist/tempo/session/client/Session.js +69 -0
- package/dist/tempo/session/client/Session.js.map +1 -0
- package/dist/tempo/session/client/SessionManager.d.ts +84 -0
- package/dist/tempo/session/client/SessionManager.d.ts.map +1 -0
- package/dist/tempo/session/client/SessionManager.js +577 -0
- package/dist/tempo/session/client/SessionManager.js.map +1 -0
- package/dist/tempo/session/client/Transports.d.ts +449 -0
- package/dist/tempo/session/client/Transports.d.ts.map +1 -0
- package/dist/tempo/session/client/Transports.js +721 -0
- package/dist/tempo/session/client/Transports.js.map +1 -0
- package/dist/tempo/session/client/index.d.ts +11 -0
- package/dist/tempo/session/client/index.d.ts.map +1 -0
- package/dist/tempo/session/client/index.js +6 -0
- package/dist/tempo/session/client/index.js.map +1 -0
- package/dist/tempo/session/index.d.ts +7 -8
- package/dist/tempo/session/index.d.ts.map +1 -1
- package/dist/tempo/session/index.js +7 -8
- package/dist/tempo/session/index.js.map +1 -1
- package/dist/tempo/session/precompile/Chain.d.ts +319 -0
- package/dist/tempo/session/precompile/Chain.d.ts.map +1 -0
- package/dist/tempo/session/precompile/Chain.js +492 -0
- package/dist/tempo/session/precompile/Chain.js.map +1 -0
- package/dist/tempo/session/precompile/Channel.d.ts +46 -0
- package/dist/tempo/session/precompile/Channel.d.ts.map +1 -0
- package/dist/tempo/session/precompile/Channel.js +56 -0
- package/dist/tempo/session/precompile/Channel.js.map +1 -0
- package/dist/tempo/session/precompile/Protocol.d.ts +308 -0
- package/dist/tempo/session/precompile/Protocol.d.ts.map +1 -0
- package/dist/tempo/session/precompile/Protocol.js +264 -0
- package/dist/tempo/session/precompile/Protocol.js.map +1 -0
- package/dist/tempo/session/precompile/Voucher.d.ts +40 -0
- package/dist/tempo/session/precompile/Voucher.d.ts.map +1 -0
- package/dist/tempo/session/precompile/Voucher.js +125 -0
- package/dist/tempo/session/precompile/Voucher.js.map +1 -0
- package/dist/tempo/session/precompile/escrow.abi.d.ts +522 -0
- package/dist/tempo/session/precompile/escrow.abi.d.ts.map +1 -0
- package/dist/tempo/session/precompile/escrow.abi.js +224 -0
- package/dist/tempo/session/precompile/escrow.abi.js.map +1 -0
- package/dist/tempo/session/precompile/index.d.ts +24 -0
- package/dist/tempo/session/precompile/index.d.ts.map +1 -0
- package/dist/tempo/session/precompile/index.js +22 -0
- package/dist/tempo/session/precompile/index.js.map +1 -0
- package/dist/tempo/session/server/ChannelOps.d.ts +56 -0
- package/dist/tempo/session/server/ChannelOps.d.ts.map +1 -0
- package/dist/tempo/session/server/ChannelOps.js +91 -0
- package/dist/tempo/session/server/ChannelOps.js.map +1 -0
- package/dist/tempo/session/server/ChannelStore.d.ts +347 -0
- package/dist/tempo/session/server/ChannelStore.d.ts.map +1 -0
- package/dist/tempo/session/server/ChannelStore.js +404 -0
- package/dist/tempo/session/server/ChannelStore.js.map +1 -0
- package/dist/tempo/session/server/CredentialVerification.d.ts +85 -0
- package/dist/tempo/session/server/CredentialVerification.d.ts.map +1 -0
- package/dist/tempo/session/server/CredentialVerification.js +494 -0
- package/dist/tempo/session/server/CredentialVerification.js.map +1 -0
- package/dist/tempo/session/server/MeteredStream.d.ts +40 -0
- package/dist/tempo/session/server/MeteredStream.d.ts.map +1 -0
- package/dist/tempo/session/server/MeteredStream.js +42 -0
- package/dist/tempo/session/server/MeteredStream.js.map +1 -0
- package/dist/tempo/session/server/RequestState.d.ts +208 -0
- package/dist/tempo/session/server/RequestState.d.ts.map +1 -0
- package/dist/tempo/session/server/RequestState.js +252 -0
- package/dist/tempo/session/server/RequestState.js.map +1 -0
- package/dist/tempo/session/server/Session.d.ts +169 -0
- package/dist/tempo/session/server/Session.d.ts.map +1 -0
- package/dist/tempo/session/server/Session.js +351 -0
- package/dist/tempo/session/server/Session.js.map +1 -0
- package/dist/tempo/session/server/Settlement.d.ts +185 -0
- package/dist/tempo/session/server/Settlement.d.ts.map +1 -0
- package/dist/tempo/session/server/Settlement.js +252 -0
- package/dist/tempo/session/server/Settlement.js.map +1 -0
- package/dist/tempo/session/{Sse.d.ts → server/Sse.d.ts} +9 -56
- package/dist/tempo/session/server/Sse.d.ts.map +1 -0
- package/dist/tempo/session/server/Sse.js +184 -0
- package/dist/tempo/session/server/Sse.js.map +1 -0
- package/dist/tempo/session/server/Transports.d.ts +89 -0
- package/dist/tempo/session/server/Transports.d.ts.map +1 -0
- package/dist/tempo/session/server/Transports.js +149 -0
- package/dist/tempo/session/server/Transports.js.map +1 -0
- package/dist/tempo/session/server/Ws.d.ts +48 -0
- package/dist/tempo/session/server/Ws.d.ts.map +1 -0
- package/dist/tempo/session/server/Ws.js +244 -0
- package/dist/tempo/session/server/Ws.js.map +1 -0
- package/dist/tempo/session/server/index.d.ts +4 -0
- package/dist/tempo/session/server/index.d.ts.map +1 -0
- package/dist/tempo/session/server/index.js +2 -0
- package/dist/tempo/session/server/index.js.map +1 -0
- package/dist/tempo/subscription/KeyAuthorization.d.ts +712 -1
- package/dist/tempo/subscription/KeyAuthorization.d.ts.map +1 -1
- package/dist/tempo/subscription/Store.d.ts +2 -0
- package/dist/tempo/subscription/Store.d.ts.map +1 -1
- package/dist/tempo/subscription/Store.js +16 -1
- package/dist/tempo/subscription/Store.js.map +1 -1
- package/dist/x402/index.d.ts +1 -0
- package/dist/x402/index.d.ts.map +1 -1
- package/dist/x402/index.js +1 -0
- package/dist/x402/index.js.map +1 -1
- package/package.json +25 -9
- package/src/Challenge.test.ts +40 -0
- package/src/Challenge.ts +28 -13
- package/src/Constants.ts +58 -0
- package/src/Credential.ts +5 -4
- package/src/Mcp.ts +4 -0
- package/src/Method.ts +46 -5
- package/src/PaymentRequest.ts +10 -10
- package/src/Receipt.ts +3 -2
- package/src/cli/cli.test.ts +38 -43
- package/src/cli/cli.ts +23 -10
- package/src/cli/mcp.test.ts +21 -7
- package/src/cli/plugins/tempo.ts +21 -8
- package/src/cli/utils.test.ts +25 -1
- package/src/cli/utils.ts +10 -0
- package/src/client/Methods.ts +5 -2
- package/src/client/Mppx.test-d.ts +31 -1
- package/src/client/Mppx.test.ts +76 -1
- package/src/client/Mppx.ts +2 -2
- package/src/client/Transport.test.ts +225 -178
- package/src/client/Transport.ts +77 -84
- package/src/client/index.ts +25 -1
- package/src/client/internal/Fetch.test.ts +236 -6
- package/src/client/internal/Fetch.ts +69 -11
- package/src/client/internal/protocols/Mcp.test.ts +220 -0
- package/src/client/internal/protocols/Mcp.ts +162 -0
- package/src/client/internal/protocols/Mpp.ts +21 -0
- package/src/client/internal/protocols/Protocol.ts +10 -0
- package/src/client/internal/protocols/Shared.ts +25 -0
- package/src/client/internal/protocols/X402.ts +42 -0
- package/src/discovery/OpenApi.test.ts +1 -1
- package/src/env.d.ts +1 -1
- package/src/evm/PublicInterface.test-d.ts +1 -1
- package/src/evm/client/index.ts +1 -0
- package/src/evm/index.ts +2 -0
- package/src/evm/server/Charge.test.ts +1 -1
- package/src/evm/server/index.ts +1 -0
- package/src/index.ts +1 -0
- package/src/internal/AcceptPayment.test.ts +61 -0
- package/src/internal/AcceptPayment.ts +21 -14
- package/src/{mcp-sdk → mcp}/client/McpClient.integration.test.ts +18 -11
- package/src/{mcp-sdk → mcp}/client/McpClient.test-d.ts +45 -11
- package/src/{mcp-sdk → mcp}/client/McpClient.test.ts +211 -5
- package/src/mcp/client/McpClient.ts +307 -0
- package/src/mcp/client/McpClient.unit.test.ts +135 -0
- package/src/middlewares/elysia.test.ts +9 -5
- package/src/middlewares/express.test.ts +9 -5
- package/src/middlewares/hono.test.ts +5 -5
- package/src/middlewares/internal/mppx.test.ts +1 -1
- package/src/middlewares/nextjs.test.ts +9 -5
- package/src/proxy/Proxy.test.ts +9 -9
- package/src/proxy/services/anthropic.test.ts +1 -1
- package/src/proxy/services/openai.test.ts +1 -1
- package/src/proxy/services/stripe.test.ts +1 -1
- package/src/server/Mppx.authorize.test.ts +1 -1
- package/src/server/Mppx.test-d.ts +55 -1
- package/src/server/Mppx.test.ts +220 -9
- package/src/server/Mppx.ts +501 -407
- package/src/server/Response.ts +2 -1
- package/src/server/Transport.test.ts +6 -6
- package/src/server/Transport.ts +5 -4
- package/src/server/index.ts +1 -0
- package/src/stripe/Charge.integration.test.ts +1 -1
- package/src/stripe/client/Charge.test.ts +21 -6
- package/src/stripe/client/Charge.ts +6 -2
- package/src/stripe/server/Charge.test.ts +115 -2
- package/src/stripe/server/Charge.ts +13 -2
- package/src/stripe/server/internal/html/package.json +1 -1
- package/src/stripe/server/internal/html.gen.ts +1 -1
- package/src/tempo/AccessKeyAuthorization.test.ts +4 -94
- package/src/tempo/Methods.test.ts +45 -17
- package/src/tempo/Methods.ts +22 -0
- package/src/tempo/Proof.conformance.test.ts +146 -0
- package/src/tempo/Proof.test-d.ts +15 -0
- package/src/tempo/Proof.ts +52 -1
- package/src/tempo/PublicExports.test-d.ts +105 -0
- package/src/tempo/Subscription.integration.test.ts +1 -1
- package/src/tempo/client/Charge.test.ts +258 -0
- package/src/tempo/client/Charge.ts +84 -38
- package/src/tempo/client/Methods.ts +22 -8
- package/src/tempo/client/ResolveAccount.ts +46 -0
- package/src/tempo/client/index.ts +15 -4
- package/src/tempo/index.ts +1 -0
- package/src/tempo/internal/fee-payer.test.ts +296 -17
- package/src/tempo/internal/fee-payer.ts +186 -4
- package/src/tempo/internal/fee-token.test.ts +14 -9
- package/src/tempo/internal/proof.test.ts +12 -4
- package/src/tempo/internal/proof.ts +55 -6
- package/src/tempo/legacy/AccessKeyAuthorization.test.ts +162 -0
- package/src/tempo/legacy/README.md +9 -0
- package/src/tempo/{client → legacy/client}/ChannelOps.test.ts +6 -7
- package/src/tempo/{client → legacy/client}/ChannelOps.ts +22 -9
- package/src/tempo/{client → legacy/client}/Session.test.ts +51 -9
- package/src/tempo/{client → legacy/client}/Session.ts +25 -11
- package/src/tempo/{client → legacy/client}/SessionManager.test.ts +81 -9
- package/src/tempo/{client → legacy/client}/SessionManager.ts +52 -23
- package/src/tempo/legacy/client/index.ts +6 -0
- package/src/tempo/legacy/index.ts +6 -0
- package/src/tempo/{server → legacy/server}/Session.test.ts +136 -71
- package/src/tempo/{server → legacy/server}/Session.ts +32 -23
- package/src/tempo/legacy/server/index.ts +4 -0
- package/src/tempo/{session → legacy/session}/Chain.test.ts +3 -4
- package/src/tempo/{session → legacy/session}/Chain.ts +94 -63
- package/src/tempo/{session → legacy/session}/Channel.ts +1 -0
- package/src/tempo/legacy/session/ChannelStore.test.ts +58 -0
- package/src/tempo/legacy/session/ChannelStore.ts +39 -0
- package/src/tempo/legacy/session/Types.ts +91 -0
- package/src/tempo/{session → legacy/session}/Voucher.ts +12 -8
- package/src/tempo/{session → legacy/session}/escrow.abi.ts +1 -0
- package/src/tempo/legacy/session/index.ts +8 -0
- package/src/tempo/server/AtomicStore.test-d.ts +16 -11
- package/src/tempo/server/Charge.test.ts +480 -31
- package/src/tempo/server/Charge.ts +54 -30
- package/src/tempo/server/Methods.ts +58 -10
- package/src/tempo/server/Sse.test.ts +2 -2
- package/src/tempo/server/Subscription.test.ts +465 -3
- package/src/tempo/server/Subscription.ts +174 -19
- package/src/tempo/server/index.ts +6 -5
- package/src/tempo/server/internal/html/package.json +2 -2
- package/src/tempo/server/internal/html.gen.ts +1 -1
- package/src/tempo/server/internal/request-body.test.ts +37 -4
- package/src/tempo/server/internal/request-body.ts +25 -6
- package/src/tempo/server/internal/transport.test.ts +4 -4
- package/src/tempo/server/internal/transport.ts +19 -10
- package/src/tempo/session/Snapshot.test.ts +41 -0
- package/src/tempo/session/Snapshot.ts +74 -0
- package/src/tempo/session/client/ChannelOps.test.ts +163 -0
- package/src/tempo/session/client/ChannelOps.ts +330 -0
- package/src/tempo/session/client/ChannelStore.ts +111 -0
- package/src/tempo/session/client/CredentialState.test.ts +789 -0
- package/src/tempo/session/client/CredentialState.ts +799 -0
- package/src/tempo/session/client/ReceiptCoordinator.ts +95 -0
- package/src/tempo/session/client/Runtime.test.ts +1092 -0
- package/src/tempo/session/client/Runtime.ts +986 -0
- package/src/tempo/session/client/Session.test.ts +774 -0
- package/src/tempo/session/client/Session.ts +123 -0
- package/src/tempo/session/client/SessionManager.test.ts +1397 -0
- package/src/tempo/session/client/SessionManager.ts +751 -0
- package/src/tempo/session/client/Transports.test.ts +837 -0
- package/src/tempo/session/client/Transports.ts +1292 -0
- package/src/tempo/session/client/index.ts +40 -0
- package/src/tempo/session/index.ts +7 -8
- package/src/tempo/session/precompile/Chain.integration.test.ts +321 -0
- package/src/tempo/session/precompile/Chain.test.ts +1258 -0
- package/src/tempo/session/precompile/Chain.ts +979 -0
- package/src/tempo/session/precompile/Channel.test.ts +138 -0
- package/src/tempo/session/precompile/Channel.ts +103 -0
- package/src/tempo/session/precompile/Protocol.test.ts +358 -0
- package/src/tempo/session/precompile/Protocol.ts +520 -0
- package/src/tempo/session/precompile/Voucher.test.ts +354 -0
- package/src/tempo/session/precompile/Voucher.ts +162 -0
- package/src/tempo/session/precompile/escrow.abi.ts +226 -0
- package/src/tempo/session/precompile/index.ts +33 -0
- package/src/tempo/session/server/ChannelOps.test.ts +129 -0
- package/src/tempo/session/server/ChannelOps.ts +157 -0
- package/src/tempo/session/{ChannelStore.test.ts → server/ChannelStore.test.ts} +536 -29
- package/src/tempo/session/server/ChannelStore.ts +835 -0
- package/src/tempo/session/server/CredentialVerification.test.ts +146 -0
- package/src/tempo/session/server/CredentialVerification.ts +710 -0
- package/src/tempo/session/server/MeteredStream.ts +88 -0
- package/src/tempo/session/server/RequestState.test.ts +531 -0
- package/src/tempo/session/server/RequestState.ts +499 -0
- package/src/tempo/session/server/Session.integration.test.ts +444 -0
- package/src/tempo/session/server/Session.test.ts +3253 -0
- package/src/tempo/session/server/Session.ts +543 -0
- package/src/tempo/session/server/Settlement.test.ts +329 -0
- package/src/tempo/session/server/Settlement.ts +471 -0
- package/src/tempo/session/{Sse.test.ts → server/Sse.test.ts} +37 -3
- package/src/tempo/session/server/Sse.ts +254 -0
- package/src/tempo/session/server/Transports.test.ts +346 -0
- package/src/tempo/session/server/Transports.ts +255 -0
- package/src/tempo/session/{Ws.test.ts → server/Ws.test.ts} +4 -4
- package/src/tempo/session/server/Ws.ts +380 -0
- package/src/tempo/session/server/index.ts +8 -0
- package/src/tempo/subscription/Store.ts +27 -9
- package/src/x402/Exact.e2e.test.ts +1 -1
- package/src/x402/PublicInterface.test-d.ts +1 -1
- package/src/x402/index.ts +1 -0
- package/dist/mcp-sdk/client/McpClient.d.ts +0 -78
- package/dist/mcp-sdk/client/McpClient.d.ts.map +0 -1
- package/dist/mcp-sdk/client/McpClient.js +0 -105
- package/dist/mcp-sdk/client/McpClient.js.map +0 -1
- package/dist/mcp-sdk/client/index.d.ts.map +0 -1
- package/dist/mcp-sdk/client/index.js.map +0 -1
- package/dist/mcp-sdk/server/Transport.d.ts.map +0 -1
- package/dist/mcp-sdk/server/Transport.js.map +0 -1
- package/dist/mcp-sdk/server/index.d.ts.map +0 -1
- package/dist/mcp-sdk/server/index.js.map +0 -1
- package/dist/tempo/client/ChannelOps.d.ts.map +0 -1
- package/dist/tempo/client/ChannelOps.js.map +0 -1
- package/dist/tempo/client/Session.d.ts.map +0 -1
- package/dist/tempo/client/Session.js.map +0 -1
- package/dist/tempo/client/SessionManager.d.ts.map +0 -1
- package/dist/tempo/client/SessionManager.js.map +0 -1
- package/dist/tempo/server/Session.d.ts.map +0 -1
- package/dist/tempo/server/Session.js.map +0 -1
- package/dist/tempo/session/Chain.d.ts.map +0 -1
- package/dist/tempo/session/Chain.js.map +0 -1
- package/dist/tempo/session/Channel.d.ts.map +0 -1
- package/dist/tempo/session/Channel.js.map +0 -1
- package/dist/tempo/session/ChannelStore.d.ts +0 -117
- package/dist/tempo/session/ChannelStore.d.ts.map +0 -1
- package/dist/tempo/session/ChannelStore.js +0 -172
- package/dist/tempo/session/ChannelStore.js.map +0 -1
- package/dist/tempo/session/Receipt.d.ts +0 -22
- package/dist/tempo/session/Receipt.d.ts.map +0 -1
- package/dist/tempo/session/Receipt.js +0 -34
- package/dist/tempo/session/Receipt.js.map +0 -1
- package/dist/tempo/session/Sse.d.ts.map +0 -1
- package/dist/tempo/session/Sse.js +0 -363
- package/dist/tempo/session/Sse.js.map +0 -1
- package/dist/tempo/session/Types.d.ts +0 -78
- package/dist/tempo/session/Types.d.ts.map +0 -1
- package/dist/tempo/session/Types.js.map +0 -1
- package/dist/tempo/session/Voucher.d.ts.map +0 -1
- package/dist/tempo/session/Voucher.js.map +0 -1
- package/dist/tempo/session/Ws.d.ts +0 -87
- package/dist/tempo/session/Ws.d.ts.map +0 -1
- package/dist/tempo/session/Ws.js +0 -443
- package/dist/tempo/session/Ws.js.map +0 -1
- package/dist/tempo/session/escrow.abi.js.map +0 -1
- package/src/mcp-sdk/client/McpClient.ts +0 -196
- package/src/tempo/session/ChannelStore.ts +0 -308
- package/src/tempo/session/Receipt.test.ts +0 -89
- package/src/tempo/session/Receipt.ts +0 -46
- package/src/tempo/session/Sse.ts +0 -462
- package/src/tempo/session/Types.ts +0 -86
- package/src/tempo/session/Ws.ts +0 -576
- /package/dist/{mcp-sdk → mcp}/client/index.d.ts +0 -0
- /package/dist/{mcp-sdk → mcp}/client/index.js +0 -0
- /package/dist/{mcp-sdk → mcp}/server/Transport.d.ts +0 -0
- /package/dist/{mcp-sdk → mcp}/server/Transport.js +0 -0
- /package/dist/{mcp-sdk → mcp}/server/index.d.ts +0 -0
- /package/dist/{mcp-sdk → mcp}/server/index.js +0 -0
- /package/dist/tempo/{session → legacy/session}/Channel.js +0 -0
- /package/dist/tempo/{session → legacy/session}/Types.js +0 -0
- /package/src/{mcp-sdk → mcp}/client/index.ts +0 -0
- /package/src/{mcp-sdk → mcp}/server/Transport.test.ts +0 -0
- /package/src/{mcp-sdk → mcp}/server/Transport.ts +0 -0
- /package/src/{mcp-sdk → mcp}/server/index.ts +0 -0
- /package/src/tempo/{session → legacy/session}/Channel.test.ts +0 -0
- /package/src/tempo/{session → legacy/session}/Voucher.test.ts +0 -0
- /package/src/tempo/session/{Sse.fuzz.test.ts → server/Sse.fuzz.test.ts} +0 -0
package/src/cli/plugins/tempo.ts
CHANGED
|
@@ -11,10 +11,15 @@ import { createClient, http } from 'viem'
|
|
|
11
11
|
import { privateKeyToAccount } from 'viem/accounts'
|
|
12
12
|
|
|
13
13
|
import { normalizeHeaders } from '../../client/internal/Fetch.js'
|
|
14
|
+
import * as Constants from '../../Constants.js'
|
|
14
15
|
import * as Credential from '../../Credential.js'
|
|
15
16
|
import { tempo as tempoMethods } from '../../tempo/client/index.js'
|
|
16
|
-
import
|
|
17
|
-
import {
|
|
17
|
+
import { tip20ChannelEscrow } from '../../tempo/session/precompile/Protocol.js'
|
|
18
|
+
import type {
|
|
19
|
+
ChannelDescriptor,
|
|
20
|
+
SessionCredentialPayload,
|
|
21
|
+
} from '../../tempo/session/precompile/Protocol.js'
|
|
22
|
+
import { signVoucher } from '../../tempo/session/precompile/Voucher.js'
|
|
18
23
|
import { createDefaultStore, createKeychain, resolveAccountName } from '../account.js'
|
|
19
24
|
import {
|
|
20
25
|
fetchTokenInfo,
|
|
@@ -40,6 +45,7 @@ export function tempo() {
|
|
|
40
45
|
chainId: number
|
|
41
46
|
action?: 'voucher' | 'close'
|
|
42
47
|
}): Promise<string>
|
|
48
|
+
descriptor?: ChannelDescriptor | undefined
|
|
43
49
|
source: string
|
|
44
50
|
}
|
|
45
51
|
| undefined
|
|
@@ -176,7 +182,7 @@ export function tempo() {
|
|
|
176
182
|
account,
|
|
177
183
|
getClient: () => client!,
|
|
178
184
|
...(autoSwap !== undefined ? { autoSwap } : {}),
|
|
179
|
-
|
|
185
|
+
maxDeposit: (() => {
|
|
180
186
|
if (challenge.intent !== 'session') return undefined
|
|
181
187
|
const suggestedDeposit = (challenge.request as Record<string, unknown>)
|
|
182
188
|
.suggestedDeposit as string | undefined
|
|
@@ -209,6 +215,7 @@ export function tempo() {
|
|
|
209
215
|
|
|
210
216
|
// Store session support for use in lifecycle hooks
|
|
211
217
|
_session = {
|
|
218
|
+
descriptor: undefined,
|
|
212
219
|
async signVoucher({
|
|
213
220
|
channelId,
|
|
214
221
|
cumulativeAmount,
|
|
@@ -216,11 +223,14 @@ export function tempo() {
|
|
|
216
223
|
chainId,
|
|
217
224
|
action = 'voucher',
|
|
218
225
|
}) {
|
|
226
|
+
const descriptor = _session?.descriptor
|
|
227
|
+
if (!descriptor) throw new Error('session descriptor not available')
|
|
219
228
|
return Credential.serialize({
|
|
220
229
|
challenge,
|
|
221
230
|
payload: {
|
|
222
231
|
action,
|
|
223
232
|
channelId,
|
|
233
|
+
descriptor,
|
|
224
234
|
cumulativeAmount: cumulativeAmount.toString(),
|
|
225
235
|
signature: await signVoucher(
|
|
226
236
|
client!,
|
|
@@ -260,16 +270,19 @@ export function tempo() {
|
|
|
260
270
|
const parsed = Credential.deserialize<SessionCredentialPayload>(credential)
|
|
261
271
|
const challengeRequest = challenge.request as Record<string, unknown>
|
|
262
272
|
const sessionMd = challengeRequest.methodDetails as
|
|
263
|
-
| { escrowContract?: string; chainId?: number }
|
|
273
|
+
| { escrow?: string; escrowContract?: string; chainId?: number }
|
|
264
274
|
| undefined
|
|
265
275
|
const channelId = parsed.payload.channelId
|
|
266
|
-
const escrowContract = sessionMd?.escrowContract
|
|
276
|
+
const escrowContract = (sessionMd?.escrowContract ??
|
|
277
|
+
sessionMd?.escrow ??
|
|
278
|
+
tip20ChannelEscrow) as Address
|
|
267
279
|
const chainId = sessionMd?.chainId ?? 0
|
|
268
280
|
const tickCost = BigInt(challengeRequest.amount as string)
|
|
269
281
|
let cumulativeAmount =
|
|
270
282
|
'cumulativeAmount' in parsed.payload && parsed.payload.cumulativeAmount
|
|
271
283
|
? BigInt(parsed.payload.cumulativeAmount)
|
|
272
284
|
: 0n
|
|
285
|
+
if ('descriptor' in parsed.payload) _session.descriptor = parsed.payload.descriptor
|
|
273
286
|
|
|
274
287
|
if (verbose >= 1) {
|
|
275
288
|
if (parsed.payload.action === 'open') {
|
|
@@ -302,7 +315,7 @@ export function tempo() {
|
|
|
302
315
|
}
|
|
303
316
|
|
|
304
317
|
// Print receipt from initial response headers
|
|
305
|
-
const receiptHeader = credentialResponse.headers.get(
|
|
318
|
+
const receiptHeader = credentialResponse.headers.get(Constants.Headers.paymentReceipt)
|
|
306
319
|
if (receiptHeader) {
|
|
307
320
|
try {
|
|
308
321
|
const receiptJson = JSON.parse(Base64.toString(receiptHeader)) as Record<string, unknown>
|
|
@@ -556,7 +569,7 @@ async function handleSseStream(
|
|
|
556
569
|
})
|
|
557
570
|
await globalThis.fetch(opts.fetchUrl, {
|
|
558
571
|
method: 'POST',
|
|
559
|
-
headers: {
|
|
572
|
+
headers: { [Constants.Headers.authorization]: voucherCred },
|
|
560
573
|
})
|
|
561
574
|
} catch (e) {
|
|
562
575
|
opts.info(pc.dim(pc.yellow(` [voucher failed: ${e instanceof Error ? e.message : e}]`)))
|
|
@@ -669,7 +682,7 @@ async function closeChannel(opts: {
|
|
|
669
682
|
if (closeRes.ok) {
|
|
670
683
|
deleteChannelState(opts.channelId)
|
|
671
684
|
if (opts.verbose >= 1) {
|
|
672
|
-
const closeReceiptHeader = closeRes.headers.get(
|
|
685
|
+
const closeReceiptHeader = closeRes.headers.get(Constants.Headers.paymentReceipt)
|
|
673
686
|
let closeTxHash: string | undefined
|
|
674
687
|
if (closeReceiptHeader) {
|
|
675
688
|
try {
|
package/src/cli/utils.test.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { tempo as tempoMainnet, tempoModerato } from 'viem/tempo/chains'
|
|
2
2
|
import { afterEach, describe, expect, test } from 'vp/test'
|
|
3
3
|
|
|
4
|
-
import { networkRpcUrls, resolveChain, resolveRpcUrl } from './utils.js'
|
|
4
|
+
import { networkRpcUrls, resolveChain, resolveFundingNetwork, resolveRpcUrl } from './utils.js'
|
|
5
5
|
|
|
6
6
|
describe('resolveRpcUrl', () => {
|
|
7
7
|
afterEach(() => {
|
|
@@ -52,6 +52,30 @@ describe('resolveRpcUrl', () => {
|
|
|
52
52
|
})
|
|
53
53
|
})
|
|
54
54
|
|
|
55
|
+
describe('resolveFundingNetwork', () => {
|
|
56
|
+
afterEach(() => {
|
|
57
|
+
delete process.env.MPPX_RPC_URL
|
|
58
|
+
delete process.env.RPC_URL
|
|
59
|
+
})
|
|
60
|
+
|
|
61
|
+
test('defaults faucet funding to testnet', () => {
|
|
62
|
+
expect(resolveFundingNetwork()).toBe('testnet')
|
|
63
|
+
})
|
|
64
|
+
|
|
65
|
+
test('keeps explicit network selection', () => {
|
|
66
|
+
expect(resolveFundingNetwork({ network: 'mainnet' })).toBe('mainnet')
|
|
67
|
+
})
|
|
68
|
+
|
|
69
|
+
test('does not override explicit rpc url', () => {
|
|
70
|
+
expect(resolveFundingNetwork({ rpcUrl: 'https://explicit.example.com' })).toBeUndefined()
|
|
71
|
+
})
|
|
72
|
+
|
|
73
|
+
test('does not override env rpc urls', () => {
|
|
74
|
+
process.env.MPPX_RPC_URL = 'https://env.example.com'
|
|
75
|
+
expect(resolveFundingNetwork()).toBeUndefined()
|
|
76
|
+
})
|
|
77
|
+
})
|
|
78
|
+
|
|
55
79
|
describe('resolveChain', () => {
|
|
56
80
|
afterEach(() => {
|
|
57
81
|
delete process.env.MPPX_RPC_URL
|
package/src/cli/utils.ts
CHANGED
|
@@ -242,6 +242,16 @@ export function resolveRpcUrl(
|
|
|
242
242
|
)
|
|
243
243
|
}
|
|
244
244
|
|
|
245
|
+
/** Select the default network for faucet funding without overriding explicit RPC configuration. */
|
|
246
|
+
export function resolveFundingNetwork(
|
|
247
|
+
options: { network?: Network | undefined; rpcUrl?: string | undefined } = {},
|
|
248
|
+
): Network | undefined {
|
|
249
|
+
if (options.network) return options.network
|
|
250
|
+
if (options.rpcUrl) return undefined
|
|
251
|
+
if (process.env.MPPX_RPC_URL?.trim() || process.env.RPC_URL?.trim()) return undefined
|
|
252
|
+
return 'testnet'
|
|
253
|
+
}
|
|
254
|
+
|
|
245
255
|
export async function resolveChain(
|
|
246
256
|
opts: { network?: Network | undefined; rpcUrl?: string | undefined } = {},
|
|
247
257
|
): Promise<Chain> {
|
package/src/client/Methods.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
export { evm } from '../evm/client/index.js'
|
|
2
2
|
export { stripe } from '../stripe/client/index.js'
|
|
3
3
|
export { subscription } from '../tempo/client/Subscription.js'
|
|
4
|
-
export { tempo } from '../tempo/client/index.js'
|
|
5
|
-
export { session } from '../tempo/client/Session.js'
|
|
4
|
+
export { session, tempo } from '../tempo/client/index.js'
|
|
5
|
+
export { session as sessionMethod } from '../tempo/session/client/Session.js'
|
|
6
|
+
export { sessionManager } from '../tempo/session/client/SessionManager.js'
|
|
7
|
+
export { session as sessionLegacy } from '../tempo/legacy/client/index.js'
|
|
8
|
+
export { sessionManager as sessionLegacyManager } from '../tempo/legacy/client/index.js'
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Account } from 'viem'
|
|
1
|
+
import type { Account, Address } from 'viem'
|
|
2
2
|
import { describe, expectTypeOf, test } from 'vp/test'
|
|
3
3
|
|
|
4
4
|
import * as Challenge from '../Challenge.js'
|
|
@@ -9,11 +9,22 @@ import { tempo } from '../tempo/client/Methods.js'
|
|
|
9
9
|
import type * as AutoSwap from '../tempo/internal/auto-swap.js'
|
|
10
10
|
import * as Methods from '../tempo/Methods.js'
|
|
11
11
|
import * as z from '../zod.js'
|
|
12
|
+
import type { ResolveAccount } from './index.js'
|
|
12
13
|
import * as Fetch from './internal/Fetch.js'
|
|
14
|
+
import { session, sessionManager, sessionMethod } from './Methods.js'
|
|
13
15
|
import * as Mppx from './Mppx.js'
|
|
14
16
|
import * as Transport from './Transport.js'
|
|
15
17
|
|
|
16
18
|
describe('Mppx', () => {
|
|
19
|
+
test('exports low-level session method and explicit managed session helper', () => {
|
|
20
|
+
expectTypeOf(session({ account: {} as Account })).toMatchTypeOf<Method.AnyClient>()
|
|
21
|
+
expectTypeOf(session.manager({ account: {} as Account })).toHaveProperty('fetch')
|
|
22
|
+
expectTypeOf(sessionManager({ account: {} as Account })).toHaveProperty('fetch')
|
|
23
|
+
expectTypeOf(sessionMethod({ account: {} as Account })).toMatchTypeOf<Method.AnyClient>()
|
|
24
|
+
expectTypeOf(tempo.session({ account: {} as Account })).toMatchTypeOf<Method.AnyClient>()
|
|
25
|
+
expectTypeOf(tempo.session.manager({ account: {} as Account })).toHaveProperty('fetch')
|
|
26
|
+
})
|
|
27
|
+
|
|
17
28
|
test('has methods array', () => {
|
|
18
29
|
const method = charge({
|
|
19
30
|
account: {} as Account,
|
|
@@ -68,6 +79,25 @@ describe('create.Config', () => {
|
|
|
68
79
|
expectTypeOf(mppx.fetch).toBeFunction()
|
|
69
80
|
})
|
|
70
81
|
|
|
82
|
+
test('tempo common accepts one resolveAccount hook for charge and session', () => {
|
|
83
|
+
const resolveAccount: ResolveAccount = (info) => {
|
|
84
|
+
expectTypeOf(info).toHaveProperty('account')
|
|
85
|
+
expectTypeOf(info.chainId).toEqualTypeOf<number>()
|
|
86
|
+
if (info.operation.kind === 'executeCalls') {
|
|
87
|
+
expectTypeOf(info.operation.calls).toMatchTypeOf<
|
|
88
|
+
readonly { data: `0x${string}`; to: Address }[] | undefined
|
|
89
|
+
>()
|
|
90
|
+
}
|
|
91
|
+
if (info.operation.kind === 'authorizePaymentChannel') {
|
|
92
|
+
expectTypeOf(info.operation.authority).toEqualTypeOf<Address | undefined>()
|
|
93
|
+
}
|
|
94
|
+
return info.account
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const methods = tempo({ account: {} as Account, resolveAccount })
|
|
98
|
+
expectTypeOf(methods).toMatchTypeOf<readonly Method.AnyClient[]>()
|
|
99
|
+
})
|
|
100
|
+
|
|
71
101
|
test('orderChallenges receives supported challenge candidates', () => {
|
|
72
102
|
const mppx = Mppx.create({
|
|
73
103
|
methods: [tempo({ account: {} as Account })],
|
package/src/client/Mppx.test.ts
CHANGED
|
@@ -7,7 +7,7 @@ import * as Http from '~test/Http.js'
|
|
|
7
7
|
import { accounts, asset, client } from '~test/tempo/viem.js'
|
|
8
8
|
|
|
9
9
|
const realm = 'api.example.com'
|
|
10
|
-
const secretKey = 'test-secret-key'
|
|
10
|
+
const secretKey = 'test-secret-key-test-secret-key-32'
|
|
11
11
|
|
|
12
12
|
afterEach(() => {
|
|
13
13
|
Mppx.restore()
|
|
@@ -74,6 +74,81 @@ describe('Mppx.create', () => {
|
|
|
74
74
|
})
|
|
75
75
|
|
|
76
76
|
describe('createCredential', () => {
|
|
77
|
+
function sessionChallenge(id: string, sessionProtocol?: string) {
|
|
78
|
+
return {
|
|
79
|
+
expires: new Date(Date.now() + 60_000).toISOString(),
|
|
80
|
+
id,
|
|
81
|
+
intent: 'session',
|
|
82
|
+
method: 'tempo',
|
|
83
|
+
realm,
|
|
84
|
+
request: {
|
|
85
|
+
amount: '100',
|
|
86
|
+
currency: asset,
|
|
87
|
+
unitType: 'request',
|
|
88
|
+
methodDetails: {
|
|
89
|
+
chainId: 1,
|
|
90
|
+
escrowContract: '0x0000000000000000000000000000000000000001',
|
|
91
|
+
...(sessionProtocol !== undefined ? { sessionProtocol } : {}),
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
} as const
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
function paymentRequiredResponse(...challenges: Challenge.Challenge[]) {
|
|
98
|
+
return new Response(null, {
|
|
99
|
+
status: 402,
|
|
100
|
+
headers: { 'WWW-Authenticate': challenges.map(Challenge.serialize).join(', ') },
|
|
101
|
+
})
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
function taggedSessionMethod(tag: string, canHandleChallenge: Method.CanHandleChallengeFn) {
|
|
105
|
+
return Method.toClient(Methods.session, {
|
|
106
|
+
canHandleChallenge,
|
|
107
|
+
async createCredential({ challenge }) {
|
|
108
|
+
return Credential.serialize({ challenge, payload: { tag } })
|
|
109
|
+
},
|
|
110
|
+
})
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
test('behavior: routes duplicate tempo/session client methods by sessionProtocol', async () => {
|
|
114
|
+
const tip1034 = taggedSessionMethod(
|
|
115
|
+
'v2',
|
|
116
|
+
({ challenge }) =>
|
|
117
|
+
(challenge.request.methodDetails as { sessionProtocol?: string } | undefined)
|
|
118
|
+
?.sessionProtocol === 'v2',
|
|
119
|
+
)
|
|
120
|
+
const legacy = taggedSessionMethod('v1', ({ challenge }) => {
|
|
121
|
+
const sessionProtocol = (
|
|
122
|
+
challenge.request.methodDetails as { sessionProtocol?: string } | undefined
|
|
123
|
+
)?.sessionProtocol
|
|
124
|
+
return sessionProtocol === undefined || sessionProtocol === 'v1'
|
|
125
|
+
})
|
|
126
|
+
const mppx = Mppx.create({ polyfill: false, methods: [tip1034, legacy] })
|
|
127
|
+
|
|
128
|
+
const [newCredential, legacyCredential, oldCredential] = await Promise.all([
|
|
129
|
+
mppx.createCredential(paymentRequiredResponse(sessionChallenge('new', 'v2'))),
|
|
130
|
+
mppx.createCredential(paymentRequiredResponse(sessionChallenge('v1', 'v1'))),
|
|
131
|
+
mppx.createCredential(paymentRequiredResponse(sessionChallenge('old'))),
|
|
132
|
+
])
|
|
133
|
+
expect(Credential.deserialize(newCredential).payload).toEqual({ tag: 'v2' })
|
|
134
|
+
expect(Credential.deserialize(legacyCredential).payload).toEqual({ tag: 'v1' })
|
|
135
|
+
expect(Credential.deserialize(oldCredential).payload).toEqual({ tag: 'v1' })
|
|
136
|
+
})
|
|
137
|
+
|
|
138
|
+
test('behavior: rejects unknown tempo/session sessionProtocol', async () => {
|
|
139
|
+
const method = taggedSessionMethod(
|
|
140
|
+
'v2',
|
|
141
|
+
({ challenge }) =>
|
|
142
|
+
(challenge.request.methodDetails as { sessionProtocol?: string } | undefined)
|
|
143
|
+
?.sessionProtocol === 'v2',
|
|
144
|
+
)
|
|
145
|
+
const mppx = Mppx.create({ polyfill: false, methods: [method] })
|
|
146
|
+
|
|
147
|
+
await expect(
|
|
148
|
+
mppx.createCredential(paymentRequiredResponse(sessionChallenge('unknown', 'future'))),
|
|
149
|
+
).rejects.toThrow('No method found for challenges: tempo.session')
|
|
150
|
+
})
|
|
151
|
+
|
|
77
152
|
test('behavior: routes to correct method based on challenge', async () => {
|
|
78
153
|
const mppx = Mppx.create({
|
|
79
154
|
polyfill: false,
|
package/src/client/Mppx.ts
CHANGED
|
@@ -187,8 +187,8 @@ export function create<
|
|
|
187
187
|
options?: createCredential.Options<FlattenMethods<methods>>,
|
|
188
188
|
) {
|
|
189
189
|
const challenges = transport.getChallenges
|
|
190
|
-
? transport.getChallenges(response as never)
|
|
191
|
-
: [transport.getChallenge(response as never)]
|
|
190
|
+
? await transport.getChallenges(response as never)
|
|
191
|
+
: [await transport.getChallenge(response as never)]
|
|
192
192
|
const preferences = resolveChallengePreferences(acceptPayment.entries, options?.acceptPayment)
|
|
193
193
|
|
|
194
194
|
let challenge: Challenge.Challenge | undefined
|