mppx 0.6.30 → 0.7.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 +25 -0
- package/dist/Challenge.d.ts.map +1 -1
- package/dist/Challenge.js +9 -7
- 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/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/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/Transport.d.ts.map +1 -1
- package/dist/client/Transport.js +4 -5
- package/dist/client/Transport.js.map +1 -1
- package/dist/client/index.d.ts +2 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +2 -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 +14 -6
- package/dist/client/internal/Fetch.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/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-sdk/client/McpClient.d.ts +12 -5
- package/dist/mcp-sdk/client/McpClient.d.ts.map +1 -1
- package/dist/mcp-sdk/client/McpClient.js +55 -42
- package/dist/mcp-sdk/client/McpClient.js.map +1 -1
- package/dist/server/Mppx.d.ts +11 -3
- package/dist/server/Mppx.d.ts.map +1 -1
- package/dist/server/Mppx.js +76 -27
- package/dist/server/Mppx.js.map +1 -1
- package/dist/server/Request.js +24 -10
- package/dist/server/Request.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.map +1 -1
- package/dist/server/Transport.js +4 -3
- 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/client/Charge.d.ts +6 -0
- package/dist/tempo/client/Charge.d.ts.map +1 -1
- package/dist/tempo/client/Charge.js +9 -2
- package/dist/tempo/client/Charge.js.map +1 -1
- package/dist/tempo/client/Methods.d.ts +36 -7
- package/dist/tempo/client/Methods.d.ts.map +1 -1
- package/dist/tempo/client/Methods.js +12 -5
- package/dist/tempo/client/Methods.js.map +1 -1
- 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 +21 -1
- package/dist/tempo/internal/fee-payer.d.ts.map +1 -1
- package/dist/tempo/internal/fee-payer.js +109 -4
- package/dist/tempo/internal/fee-payer.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 +20 -16
- 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 +28 -23
- 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 +13 -16
- package/dist/tempo/server/Charge.js.map +1 -1
- package/dist/tempo/server/Methods.d.ts +63 -6
- package/dist/tempo/server/Methods.d.ts.map +1 -1
- package/dist/tempo/server/Methods.js +36 -8
- package/dist/tempo/server/Methods.js.map +1 -1
- package/dist/tempo/server/Subscription.d.ts +1 -1
- package/dist/tempo/server/Subscription.d.ts.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 +82 -0
- package/dist/tempo/session/client/ChannelOps.d.ts.map +1 -0
- package/dist/tempo/session/client/ChannelOps.js +204 -0
- package/dist/tempo/session/client/ChannelOps.js.map +1 -0
- package/dist/tempo/session/client/CredentialState.d.ts +262 -0
- package/dist/tempo/session/client/CredentialState.d.ts.map +1 -0
- package/dist/tempo/session/client/CredentialState.js +417 -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 +132 -0
- package/dist/tempo/session/client/Session.d.ts.map +1 -0
- package/dist/tempo/session/client/Session.js +55 -0
- package/dist/tempo/session/client/Session.js.map +1 -0
- package/dist/tempo/session/client/SessionManager.d.ts +120 -0
- package/dist/tempo/session/client/SessionManager.d.ts.map +1 -0
- package/dist/tempo/session/client/SessionManager.js +627 -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 +12 -0
- package/dist/tempo/session/client/index.d.ts.map +1 -0
- package/dist/tempo/session/client/index.js +5 -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 +126 -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 +250 -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/package.json +8 -3
- package/src/Challenge.ts +9 -7
- package/src/Constants.ts +58 -0
- package/src/Credential.ts +5 -4
- package/src/Method.ts +46 -5
- package/src/Receipt.ts +3 -2
- package/src/cli/cli.test.ts +23 -28
- 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 +10 -0
- package/src/client/Mppx.test.ts +75 -0
- package/src/client/Transport.ts +4 -5
- package/src/client/index.ts +11 -1
- package/src/client/internal/Fetch.test.ts +29 -4
- package/src/client/internal/Fetch.ts +17 -5
- package/src/env.d.ts +1 -1
- 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/client/McpClient.integration.test.ts +8 -7
- package/src/mcp-sdk/client/McpClient.test-d.ts +7 -0
- package/src/mcp-sdk/client/McpClient.ts +99 -67
- package/src/mcp-sdk/client/McpClient.unit.test.ts +131 -0
- package/src/middlewares/elysia.test.ts +8 -4
- package/src/middlewares/express.test.ts +8 -4
- package/src/middlewares/hono.test.ts +4 -4
- package/src/middlewares/nextjs.test.ts +8 -4
- package/src/proxy/Proxy.test.ts +8 -8
- package/src/server/Mppx.test-d.ts +54 -0
- package/src/server/Mppx.test.ts +274 -7
- package/src/server/Mppx.ts +487 -406
- package/src/server/Request.test.ts +81 -0
- package/src/server/Request.ts +23 -9
- package/src/server/Response.ts +2 -1
- package/src/server/Transport.ts +4 -3
- package/src/server/index.ts +1 -0
- package/src/stripe/client/Charge.test.ts +20 -5
- package/src/stripe/client/Charge.ts +6 -2
- package/src/stripe/server/Charge.test.ts +114 -1
- 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/PublicExports.test-d.ts +105 -0
- package/src/tempo/client/Charge.test.ts +85 -0
- package/src/tempo/client/Charge.ts +19 -2
- package/src/tempo/client/Methods.ts +18 -6
- package/src/tempo/client/index.ts +15 -4
- package/src/tempo/index.ts +1 -0
- package/src/tempo/internal/fee-payer.test.ts +241 -17
- package/src/tempo/internal/fee-payer.ts +150 -4
- package/src/tempo/internal/fee-token.test.ts +14 -9
- 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 +41 -20
- 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 +162 -63
- package/src/tempo/{server → legacy/server}/Session.ts +49 -37
- 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 +92 -14
- package/src/tempo/server/Charge.ts +18 -16
- package/src/tempo/server/Methods.ts +54 -8
- package/src/tempo/server/Sse.test.ts +2 -2
- package/src/tempo/server/index.ts +6 -5
- package/src/tempo/server/internal/html/package.json +1 -1
- 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 +344 -0
- package/src/tempo/session/client/CredentialState.test.ts +645 -0
- package/src/tempo/session/client/CredentialState.ts +814 -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 +734 -0
- package/src/tempo/session/client/Session.ts +97 -0
- package/src/tempo/session/client/SessionManager.test.ts +1308 -0
- package/src/tempo/session/client/SessionManager.ts +845 -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 +37 -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 +316 -0
- package/src/tempo/session/precompile/Voucher.ts +160 -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 +242 -0
- package/src/tempo/session/server/Settlement.ts +470 -0
- package/src/tempo/session/{Sse.test.ts → server/Sse.test.ts} +37 -3
- package/src/tempo/session/server/Sse.ts +256 -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 +384 -0
- package/src/tempo/session/server/index.ts +8 -0
- 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/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/tempo/{session → legacy/session}/Channel.js +0 -0
- /package/dist/tempo/{session → legacy/session}/Types.js +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
|
@@ -21,10 +21,8 @@ import { waitForTransactionReceipt } from 'viem/actions'
|
|
|
21
21
|
import { Account as TempoAccount, Actions, Addresses } from 'viem/tempo'
|
|
22
22
|
import { beforeAll, beforeEach, describe, expect, expectTypeOf, test } from 'vp/test'
|
|
23
23
|
import { WebSocketServer } from 'ws'
|
|
24
|
-
import {
|
|
24
|
+
import { tempoNetwork } from '~test/config.js'
|
|
25
25
|
import * as Http from '~test/Http.js'
|
|
26
|
-
|
|
27
|
-
const isLocalnet = nodeEnv === 'localnet'
|
|
28
26
|
import {
|
|
29
27
|
closeChannelOnChain,
|
|
30
28
|
deployEscrow,
|
|
@@ -32,7 +30,7 @@ import {
|
|
|
32
30
|
signOpenChannel,
|
|
33
31
|
signTopUpChannel,
|
|
34
32
|
topUpChannel,
|
|
35
|
-
} from '~test/tempo/session.js'
|
|
33
|
+
} from '~test/tempo/legacy/session.js'
|
|
36
34
|
import { accounts, asset, chain, client, fundAccount, http } from '~test/tempo/viem.js'
|
|
37
35
|
|
|
38
36
|
import {
|
|
@@ -40,21 +38,22 @@ import {
|
|
|
40
38
|
ChannelNotFoundError,
|
|
41
39
|
InsufficientBalanceError,
|
|
42
40
|
InvalidSignatureError,
|
|
43
|
-
} from '
|
|
44
|
-
import * as NodeRequest from '
|
|
45
|
-
import * as Store from '
|
|
46
|
-
import { sessionManager } from '../client/SessionManager.js'
|
|
41
|
+
} from '../../../Errors.js'
|
|
42
|
+
import * as NodeRequest from '../../../server/Request.js'
|
|
43
|
+
import * as Store from '../../../Store.js'
|
|
47
44
|
import {
|
|
48
45
|
chainId as chainIdDefaults,
|
|
49
46
|
escrowContract as escrowContractDefaults,
|
|
50
|
-
} from '
|
|
51
|
-
import type * as Methods from '
|
|
47
|
+
} from '../../internal/defaults.js'
|
|
48
|
+
import type * as Methods from '../../Methods.js'
|
|
49
|
+
import { deserializeSessionReceipt } from '../../session/precompile/Protocol.js'
|
|
50
|
+
import { serializeSessionReceipt } from '../../session/precompile/Protocol.js'
|
|
51
|
+
import type { SessionReceipt } from '../../session/precompile/Protocol.js'
|
|
52
|
+
import * as TempoWs from '../../session/server/Ws.js'
|
|
53
|
+
import { sessionManager } from '../client/SessionManager.js'
|
|
52
54
|
import * as ChannelStore from '../session/ChannelStore.js'
|
|
53
|
-
import {
|
|
54
|
-
import { serializeSessionReceipt } from '../session/Receipt.js'
|
|
55
|
-
import type { SessionCredentialPayload, SessionReceipt } from '../session/Types.js'
|
|
55
|
+
import type { LegacySessionCredentialPayload } from '../session/Types.js'
|
|
56
56
|
import { signVoucher } from '../session/Voucher.js'
|
|
57
|
-
import * as TempoWs from '../session/Ws.js'
|
|
58
57
|
import { charge, session, settle } from './Session.js'
|
|
59
58
|
|
|
60
59
|
const payer = accounts[2]
|
|
@@ -62,6 +61,7 @@ const delegatedSigner = accounts[4]
|
|
|
62
61
|
const recipientAccount = accounts[0]
|
|
63
62
|
const recipient = accounts[0].address
|
|
64
63
|
const currency = asset
|
|
64
|
+
const isLocalnet = tempoNetwork === 'localnet'
|
|
65
65
|
|
|
66
66
|
let escrowContract: Address
|
|
67
67
|
let saltCounter = 0
|
|
@@ -112,7 +112,7 @@ describe.runIf(isLocalnet)('session', () => {
|
|
|
112
112
|
function createHandler(overrides: Partial<session.Parameters> = {}) {
|
|
113
113
|
return Mppx_server.create({
|
|
114
114
|
methods: [
|
|
115
|
-
tempo_server.
|
|
115
|
+
tempo_server.sessionLegacy({
|
|
116
116
|
store: rawStore,
|
|
117
117
|
getClient: () => client,
|
|
118
118
|
account: recipientAccount,
|
|
@@ -486,7 +486,7 @@ describe.runIf(isLocalnet)('session', () => {
|
|
|
486
486
|
},
|
|
487
487
|
request: makeRequest(),
|
|
488
488
|
}),
|
|
489
|
-
).rejects.toThrow('voucher amount is below settled on-chain amount')
|
|
489
|
+
).rejects.toThrow('voucher amount is at or below settled on-chain amount')
|
|
490
490
|
})
|
|
491
491
|
|
|
492
492
|
test('zero signer fallback uses payer', async () => {
|
|
@@ -698,27 +698,128 @@ describe.runIf(isLocalnet)('session', () => {
|
|
|
698
698
|
).rejects.toThrow(InvalidSignatureError)
|
|
699
699
|
})
|
|
700
700
|
|
|
701
|
-
test('
|
|
701
|
+
test('accepts lower voucher replay idempotently', async () => {
|
|
702
702
|
const { channelId, serializedTransaction } = await createSignedOpenTransaction(10000000n)
|
|
703
703
|
const server = createServer()
|
|
704
704
|
await openServerChannel(server, channelId, serializedTransaction)
|
|
705
705
|
|
|
706
|
+
const before = await store.getChannel(channelId)
|
|
707
|
+
|
|
708
|
+
// A non-advancing voucher (below highest, above settled) is accepted
|
|
709
|
+
// idempotently with the current highest amount, per the session spec.
|
|
710
|
+
const receipt = (await server.verify({
|
|
711
|
+
credential: {
|
|
712
|
+
challenge: makeChallenge({ id: 'challenge-2', channelId }),
|
|
713
|
+
payload: {
|
|
714
|
+
action: 'voucher' as const,
|
|
715
|
+
channelId,
|
|
716
|
+
cumulativeAmount: '500000',
|
|
717
|
+
signature: await signTestVoucher(channelId, 500000n),
|
|
718
|
+
},
|
|
719
|
+
},
|
|
720
|
+
request: makeRequest(),
|
|
721
|
+
})) as SessionReceipt
|
|
722
|
+
|
|
723
|
+
expect(receipt.status).toBe('success')
|
|
724
|
+
expect(receipt.acceptedCumulative).toBe('1000000')
|
|
725
|
+
|
|
726
|
+
// Channel state is unchanged - no advance, no additional charge.
|
|
727
|
+
const after = await store.getChannel(channelId)
|
|
728
|
+
expect(after).toEqual(before)
|
|
729
|
+
})
|
|
730
|
+
|
|
731
|
+
test('accepts lower replay after a higher voucher has advanced the channel', async () => {
|
|
732
|
+
const { channelId, serializedTransaction } = await createSignedOpenTransaction(10000000n)
|
|
733
|
+
const server = createServer()
|
|
734
|
+
await openServerChannel(server, channelId, serializedTransaction)
|
|
735
|
+
|
|
736
|
+
// Advance the channel from the opening 1000000 to 5000000.
|
|
737
|
+
await server.verify({
|
|
738
|
+
credential: {
|
|
739
|
+
challenge: makeChallenge({ id: 'challenge-advance', channelId }),
|
|
740
|
+
payload: {
|
|
741
|
+
action: 'voucher' as const,
|
|
742
|
+
channelId,
|
|
743
|
+
cumulativeAmount: '5000000',
|
|
744
|
+
signature: await signTestVoucher(channelId, 5000000n),
|
|
745
|
+
},
|
|
746
|
+
},
|
|
747
|
+
request: makeRequest(),
|
|
748
|
+
})
|
|
749
|
+
|
|
750
|
+
const before = await store.getChannel(channelId)
|
|
751
|
+
|
|
752
|
+
// A lower (but above-settled) voucher returns the current highest
|
|
753
|
+
// without rewinding state.
|
|
754
|
+
const receipt = (await server.verify({
|
|
755
|
+
credential: {
|
|
756
|
+
challenge: makeChallenge({ id: 'challenge-lower', channelId }),
|
|
757
|
+
payload: {
|
|
758
|
+
action: 'voucher' as const,
|
|
759
|
+
channelId,
|
|
760
|
+
cumulativeAmount: '3000000',
|
|
761
|
+
signature: await signTestVoucher(channelId, 3000000n),
|
|
762
|
+
},
|
|
763
|
+
},
|
|
764
|
+
request: makeRequest(),
|
|
765
|
+
})) as SessionReceipt
|
|
766
|
+
|
|
767
|
+
expect(receipt.status).toBe('success')
|
|
768
|
+
expect(receipt.acceptedCumulative).toBe('5000000')
|
|
769
|
+
|
|
770
|
+
const after = await store.getChannel(channelId)
|
|
771
|
+
expect(after).toEqual(before)
|
|
772
|
+
})
|
|
773
|
+
|
|
774
|
+
test('accepts lower voucher replay even when below minVoucherDelta', async () => {
|
|
775
|
+
const { channelId, serializedTransaction } = await createSignedOpenTransaction(10000000n)
|
|
776
|
+
// Non-advancing replay must short-circuit before the delta check.
|
|
777
|
+
const server = createServer({ minVoucherDelta: '2' })
|
|
778
|
+
await openServerChannel(server, channelId, serializedTransaction)
|
|
779
|
+
|
|
780
|
+
const before = await store.getChannel(channelId)
|
|
781
|
+
|
|
782
|
+
const receipt = (await server.verify({
|
|
783
|
+
credential: {
|
|
784
|
+
challenge: makeChallenge({ id: 'challenge-lower-delta', channelId }),
|
|
785
|
+
payload: {
|
|
786
|
+
action: 'voucher' as const,
|
|
787
|
+
channelId,
|
|
788
|
+
cumulativeAmount: '500000',
|
|
789
|
+
signature: await signTestVoucher(channelId, 500000n),
|
|
790
|
+
},
|
|
791
|
+
},
|
|
792
|
+
request: makeRequest(),
|
|
793
|
+
})) as SessionReceipt
|
|
794
|
+
|
|
795
|
+
expect(receipt.status).toBe('success')
|
|
796
|
+
expect(receipt.acceptedCumulative).toBe('1000000')
|
|
797
|
+
|
|
798
|
+
const after = await store.getChannel(channelId)
|
|
799
|
+
expect(after).toEqual(before)
|
|
800
|
+
})
|
|
801
|
+
|
|
802
|
+
test('rejects lower voucher replay signed by the wrong signer', async () => {
|
|
803
|
+
const { channelId, serializedTransaction } = await createSignedOpenTransaction(10000000n)
|
|
804
|
+
const server = createServer()
|
|
805
|
+
await openServerChannel(server, channelId, serializedTransaction)
|
|
806
|
+
|
|
807
|
+
// A valid signature from a different account must NOT be treated as an
|
|
808
|
+
// idempotent replay.
|
|
706
809
|
await expect(
|
|
707
810
|
server.verify({
|
|
708
811
|
credential: {
|
|
709
|
-
challenge: makeChallenge({ id: 'challenge-
|
|
812
|
+
challenge: makeChallenge({ id: 'challenge-wrong-signer', channelId }),
|
|
710
813
|
payload: {
|
|
711
814
|
action: 'voucher' as const,
|
|
712
815
|
channelId,
|
|
713
816
|
cumulativeAmount: '500000',
|
|
714
|
-
signature: await signTestVoucher(channelId, 500000n),
|
|
817
|
+
signature: await signTestVoucher(channelId, 500000n, accounts[3]),
|
|
715
818
|
},
|
|
716
819
|
},
|
|
717
820
|
request: makeRequest(),
|
|
718
821
|
}),
|
|
719
|
-
).rejects.toThrow(
|
|
720
|
-
'voucher cumulativeAmount must be strictly greater than highest accepted voucher',
|
|
721
|
-
)
|
|
822
|
+
).rejects.toThrow(InvalidSignatureError)
|
|
722
823
|
})
|
|
723
824
|
|
|
724
825
|
test('rejects replay of settled voucher', async () => {
|
|
@@ -743,7 +844,7 @@ describe.runIf(isLocalnet)('session', () => {
|
|
|
743
844
|
},
|
|
744
845
|
request: makeRequest(),
|
|
745
846
|
}),
|
|
746
|
-
).rejects.toThrow('voucher cumulativeAmount is below on-chain settled amount')
|
|
847
|
+
).rejects.toThrow('voucher cumulativeAmount is at or below on-chain settled amount')
|
|
747
848
|
})
|
|
748
849
|
|
|
749
850
|
test('rejects voucher exceeding deposit', async () => {
|
|
@@ -820,17 +921,15 @@ describe.runIf(isLocalnet)('session', () => {
|
|
|
820
921
|
payload: {
|
|
821
922
|
action: 'voucher' as const,
|
|
822
923
|
channelId,
|
|
823
|
-
//
|
|
824
|
-
//
|
|
924
|
+
// Forged signature for a non-advancing amount (500000 <= highest
|
|
925
|
+
// 1000000, > settled 0). Rejected by signature verification.
|
|
825
926
|
cumulativeAmount: '500000',
|
|
826
927
|
signature: `0x${'ab'.repeat(65)}` as Hex,
|
|
827
928
|
},
|
|
828
929
|
},
|
|
829
930
|
request: makeRequest(),
|
|
830
931
|
}),
|
|
831
|
-
).rejects.toThrow(
|
|
832
|
-
'voucher cumulativeAmount must be strictly greater than highest accepted voucher',
|
|
833
|
-
)
|
|
932
|
+
).rejects.toThrow('invalid voucher signature')
|
|
834
933
|
})
|
|
835
934
|
|
|
836
935
|
test('rejects forged voucher with valid amount but invalid signature', async () => {
|
|
@@ -967,7 +1066,7 @@ describe.runIf(isLocalnet)('session', () => {
|
|
|
967
1066
|
},
|
|
968
1067
|
request: makeRequest(),
|
|
969
1068
|
}),
|
|
970
|
-
).rejects.toThrow('voucher cumulativeAmount is below on-chain settled amount')
|
|
1069
|
+
).rejects.toThrow('voucher cumulativeAmount is at or below on-chain settled amount')
|
|
971
1070
|
})
|
|
972
1071
|
|
|
973
1072
|
test('rejects leaked voucher used in open action with mismatched channel', async () => {
|
|
@@ -2186,7 +2285,7 @@ describe.runIf(isLocalnet)('session', () => {
|
|
|
2186
2285
|
})
|
|
2187
2286
|
}
|
|
2188
2287
|
|
|
2189
|
-
const credential = Credential.deserialize<
|
|
2288
|
+
const credential = Credential.deserialize<LegacySessionCredentialPayload>(authorization)
|
|
2190
2289
|
if (credential.payload.action === 'open') {
|
|
2191
2290
|
return new Response('ok', {
|
|
2192
2291
|
status: 200,
|
|
@@ -2510,7 +2609,7 @@ describe.runIf(isLocalnet)('session', () => {
|
|
|
2510
2609
|
},
|
|
2511
2610
|
request: makeRequest(),
|
|
2512
2611
|
}),
|
|
2513
|
-
).rejects.toThrow('voucher cumulativeAmount is below on-chain settled amount')
|
|
2612
|
+
).rejects.toThrow('voucher cumulativeAmount is at or below on-chain settled amount')
|
|
2514
2613
|
})
|
|
2515
2614
|
|
|
2516
2615
|
test('close after recovery respects on-chain settled as minimum', async () => {
|
|
@@ -4102,7 +4201,7 @@ describe.runIf(isLocalnet)('session', () => {
|
|
|
4102
4201
|
const backingStore = Store.memory()
|
|
4103
4202
|
const routeHandler = Mppx_server.create({
|
|
4104
4203
|
methods: [
|
|
4105
|
-
tempo_server.
|
|
4204
|
+
tempo_server.sessionLegacy({
|
|
4106
4205
|
store: backingStore,
|
|
4107
4206
|
getClient: () => client,
|
|
4108
4207
|
account: recipientAccount,
|
|
@@ -4144,7 +4243,7 @@ describe.runIf(isLocalnet)('session', () => {
|
|
|
4144
4243
|
const backingStore = Store.memory()
|
|
4145
4244
|
const routeHandler = Mppx_server.create({
|
|
4146
4245
|
methods: [
|
|
4147
|
-
tempo_server.
|
|
4246
|
+
tempo_server.sessionLegacy({
|
|
4148
4247
|
store: backingStore,
|
|
4149
4248
|
getClient: () => client,
|
|
4150
4249
|
account: recipientAccount,
|
|
@@ -4187,7 +4286,7 @@ describe.runIf(isLocalnet)('session', () => {
|
|
|
4187
4286
|
const backingStore = Store.memory()
|
|
4188
4287
|
const routeHandler = Mppx_server.create({
|
|
4189
4288
|
methods: [
|
|
4190
|
-
tempo_server.
|
|
4289
|
+
tempo_server.sessionLegacy({
|
|
4191
4290
|
store: backingStore,
|
|
4192
4291
|
getClient: () => client,
|
|
4193
4292
|
account: recipientAccount,
|
|
@@ -4237,7 +4336,7 @@ describe.runIf(isLocalnet)('session', () => {
|
|
|
4237
4336
|
const backingStore = Store.memory()
|
|
4238
4337
|
const routeHandler = Mppx_server.create({
|
|
4239
4338
|
methods: [
|
|
4240
|
-
tempo_server.
|
|
4339
|
+
tempo_server.sessionLegacy({
|
|
4241
4340
|
store: backingStore,
|
|
4242
4341
|
getClient: () => client,
|
|
4243
4342
|
account: recipientAccount,
|
|
@@ -4282,7 +4381,7 @@ describe.runIf(isLocalnet)('session', () => {
|
|
|
4282
4381
|
test('behavior: withReceipt accepts async generator and returns Response', async () => {
|
|
4283
4382
|
const handler = Mppx_server.create({
|
|
4284
4383
|
methods: [
|
|
4285
|
-
tempo_server.
|
|
4384
|
+
tempo_server.sessionLegacy({
|
|
4286
4385
|
account: accounts[0],
|
|
4287
4386
|
currency: asset,
|
|
4288
4387
|
escrowContract,
|
|
@@ -4302,7 +4401,7 @@ describe.runIf(isLocalnet)('session', () => {
|
|
|
4302
4401
|
|
|
4303
4402
|
if (result.status === 200) {
|
|
4304
4403
|
// async generator function should be accepted and return Response
|
|
4305
|
-
const response = result.withReceipt(async function* (_stream) {
|
|
4404
|
+
const response = result.withReceipt(async function* (_stream: unknown) {
|
|
4306
4405
|
yield 'token'
|
|
4307
4406
|
})
|
|
4308
4407
|
expectTypeOf(response).toEqualTypeOf<Response>()
|
|
@@ -4327,7 +4426,7 @@ describe.runIf(isLocalnet)('session', () => {
|
|
|
4327
4426
|
test('behavior: non-SSE session withReceipt only accepts Response', async () => {
|
|
4328
4427
|
const handler = Mppx_server.create({
|
|
4329
4428
|
methods: [
|
|
4330
|
-
tempo_server.
|
|
4429
|
+
tempo_server.sessionLegacy({
|
|
4331
4430
|
account: accounts[0],
|
|
4332
4431
|
currency: asset,
|
|
4333
4432
|
escrowContract,
|
|
@@ -4354,7 +4453,7 @@ describe.runIf(isLocalnet)('session', () => {
|
|
|
4354
4453
|
const backingStore = Store.memory()
|
|
4355
4454
|
const routeHandler = Mppx_server.create({
|
|
4356
4455
|
methods: [
|
|
4357
|
-
tempo_server.
|
|
4456
|
+
tempo_server.sessionLegacy({
|
|
4358
4457
|
store: backingStore,
|
|
4359
4458
|
getClient: () => client,
|
|
4360
4459
|
account: recipientAccount,
|
|
@@ -4385,11 +4484,11 @@ describe.runIf(isLocalnet)('session', () => {
|
|
|
4385
4484
|
if (result.status === 402) return result.challenge
|
|
4386
4485
|
|
|
4387
4486
|
if (action === 'voucher') {
|
|
4388
|
-
return
|
|
4487
|
+
return result.withReceipt()
|
|
4389
4488
|
}
|
|
4390
4489
|
|
|
4391
4490
|
if (request.headers.get('Accept')?.includes('text/event-stream')) {
|
|
4392
|
-
return result.withReceipt(async function* (stream) {
|
|
4491
|
+
return result.withReceipt(async function* (stream: { charge(): Promise<void> }) {
|
|
4393
4492
|
await stream.charge()
|
|
4394
4493
|
yield 'chunk-1'
|
|
4395
4494
|
await stream.charge()
|
|
@@ -4432,7 +4531,7 @@ describe.runIf(isLocalnet)('session', () => {
|
|
|
4432
4531
|
const backingStore = Store.memory()
|
|
4433
4532
|
const routeHandler = Mppx_server.create({
|
|
4434
4533
|
methods: [
|
|
4435
|
-
tempo_server.
|
|
4534
|
+
tempo_server.sessionLegacy({
|
|
4436
4535
|
store: backingStore,
|
|
4437
4536
|
getClient: () => client,
|
|
4438
4537
|
account: recipientAccount,
|
|
@@ -4463,7 +4562,7 @@ describe.runIf(isLocalnet)('session', () => {
|
|
|
4463
4562
|
if (result.status === 402) return result.challenge
|
|
4464
4563
|
|
|
4465
4564
|
if (action === 'voucher') {
|
|
4466
|
-
return
|
|
4565
|
+
return result.withReceipt()
|
|
4467
4566
|
}
|
|
4468
4567
|
|
|
4469
4568
|
if (request.headers.get('Accept')?.includes('text/event-stream')) {
|
|
@@ -4517,7 +4616,7 @@ describe.runIf(isLocalnet)('session', () => {
|
|
|
4517
4616
|
const backingStore = Store.memory()
|
|
4518
4617
|
const route = Mppx_server.create({
|
|
4519
4618
|
methods: [
|
|
4520
|
-
tempo_server.
|
|
4619
|
+
tempo_server.sessionLegacy({
|
|
4521
4620
|
store: backingStore,
|
|
4522
4621
|
getClient: () => client,
|
|
4523
4622
|
account: recipientAccount,
|
|
@@ -4600,7 +4699,7 @@ describe.runIf(isLocalnet)('session', () => {
|
|
|
4600
4699
|
const backingStore = Store.memory()
|
|
4601
4700
|
const routeHandler = Mppx_server.create({
|
|
4602
4701
|
methods: [
|
|
4603
|
-
tempo_server.
|
|
4702
|
+
tempo_server.sessionLegacy({
|
|
4604
4703
|
store: backingStore,
|
|
4605
4704
|
getClient: () => client,
|
|
4606
4705
|
account: recipientAccount,
|
|
@@ -4631,11 +4730,11 @@ describe.runIf(isLocalnet)('session', () => {
|
|
|
4631
4730
|
if (result.status === 402) return result.challenge
|
|
4632
4731
|
|
|
4633
4732
|
if (action === 'voucher') {
|
|
4634
|
-
return
|
|
4733
|
+
return result.withReceipt()
|
|
4635
4734
|
}
|
|
4636
4735
|
|
|
4637
4736
|
if (request.headers.get('Accept')?.includes('text/event-stream')) {
|
|
4638
|
-
return result.withReceipt(async function* (stream) {
|
|
4737
|
+
return result.withReceipt(async function* (stream: { charge(): Promise<void> }) {
|
|
4639
4738
|
await stream.charge()
|
|
4640
4739
|
yield 'chunk-1'
|
|
4641
4740
|
await stream.charge()
|
|
@@ -4674,7 +4773,7 @@ describe.runIf(isLocalnet)('session', () => {
|
|
|
4674
4773
|
const backingStore = Store.memory()
|
|
4675
4774
|
const routeHandler = Mppx_server.create({
|
|
4676
4775
|
methods: [
|
|
4677
|
-
tempo_server.
|
|
4776
|
+
tempo_server.sessionLegacy({
|
|
4678
4777
|
store: backingStore,
|
|
4679
4778
|
getClient: () => client,
|
|
4680
4779
|
account: recipientAccount,
|
|
@@ -4694,7 +4793,7 @@ describe.runIf(isLocalnet)('session', () => {
|
|
|
4694
4793
|
if (result.status === 402) return result.challenge
|
|
4695
4794
|
|
|
4696
4795
|
if (request.headers.get('Accept')?.includes('text/event-stream')) {
|
|
4697
|
-
return result.withReceipt(async function* (stream) {
|
|
4796
|
+
return result.withReceipt(async function* (stream: { charge(): Promise<void> }) {
|
|
4698
4797
|
await stream.charge()
|
|
4699
4798
|
yield 'chunk-1'
|
|
4700
4799
|
await stream.charge()
|
|
@@ -4746,7 +4845,7 @@ describe.runIf(isLocalnet)('session', () => {
|
|
|
4746
4845
|
const backingStore = Store.memory()
|
|
4747
4846
|
const routeHandler = Mppx_server.create({
|
|
4748
4847
|
methods: [
|
|
4749
|
-
tempo_server.
|
|
4848
|
+
tempo_server.sessionLegacy({
|
|
4750
4849
|
store: backingStore,
|
|
4751
4850
|
getClient: () => client,
|
|
4752
4851
|
account: recipientAccount,
|
|
@@ -4859,7 +4958,7 @@ describe.runIf(isLocalnet)('session', () => {
|
|
|
4859
4958
|
const backingStore = Store.memory()
|
|
4860
4959
|
const routeHandler = Mppx_server.create({
|
|
4861
4960
|
methods: [
|
|
4862
|
-
tempo_server.
|
|
4961
|
+
tempo_server.sessionLegacy({
|
|
4863
4962
|
store: backingStore,
|
|
4864
4963
|
getClient: () => client,
|
|
4865
4964
|
account: recipientAccount,
|
|
@@ -4972,7 +5071,7 @@ describe.runIf(isLocalnet)('session', () => {
|
|
|
4972
5071
|
const backingStore = Store.memory()
|
|
4973
5072
|
const routeHandler = Mppx_server.create({
|
|
4974
5073
|
methods: [
|
|
4975
|
-
tempo_server.
|
|
5074
|
+
tempo_server.sessionLegacy({
|
|
4976
5075
|
store: backingStore,
|
|
4977
5076
|
getClient: () => client,
|
|
4978
5077
|
account: recipientAccount,
|
|
@@ -5082,7 +5181,7 @@ describe.runIf(isLocalnet)('session', () => {
|
|
|
5082
5181
|
test('rejects websocket receipts bound to a different channel', async () => {
|
|
5083
5182
|
const routeHandler = Mppx_server.create({
|
|
5084
5183
|
methods: [
|
|
5085
|
-
tempo_server.
|
|
5184
|
+
tempo_server.sessionLegacy({
|
|
5086
5185
|
store: Store.memory(),
|
|
5087
5186
|
getClient: () => client,
|
|
5088
5187
|
account: recipientAccount,
|
|
@@ -5169,7 +5268,7 @@ describe.runIf(isLocalnet)('session', () => {
|
|
|
5169
5268
|
const backingStore = Store.memory()
|
|
5170
5269
|
const routeHandler = Mppx_server.create({
|
|
5171
5270
|
methods: [
|
|
5172
|
-
tempo_server.
|
|
5271
|
+
tempo_server.sessionLegacy({
|
|
5173
5272
|
store: backingStore,
|
|
5174
5273
|
getClient: () => client,
|
|
5175
5274
|
account: recipientAccount,
|
|
@@ -5262,7 +5361,7 @@ describe.runIf(isLocalnet)('session', () => {
|
|
|
5262
5361
|
test('rejects close-ready receipts beyond local voucher state', async () => {
|
|
5263
5362
|
const routeHandler = Mppx_server.create({
|
|
5264
5363
|
methods: [
|
|
5265
|
-
tempo_server.
|
|
5364
|
+
tempo_server.sessionLegacy({
|
|
5266
5365
|
store: Store.memory(),
|
|
5267
5366
|
getClient: () => client,
|
|
5268
5367
|
account: recipientAccount,
|
|
@@ -5371,7 +5470,7 @@ describe.runIf(isLocalnet)('session', () => {
|
|
|
5371
5470
|
const backingStore = Store.memory()
|
|
5372
5471
|
const routeHandler = Mppx_server.create({
|
|
5373
5472
|
methods: [
|
|
5374
|
-
tempo_server.
|
|
5473
|
+
tempo_server.sessionLegacy({
|
|
5375
5474
|
store: backingStore,
|
|
5376
5475
|
getClient: () => client,
|
|
5377
5476
|
account: recipientAccount,
|
|
@@ -5473,7 +5572,7 @@ describe.runIf(isLocalnet)('session', () => {
|
|
|
5473
5572
|
test('rejects tx-bearing open receipts replayed during websocket close', async () => {
|
|
5474
5573
|
const routeHandler = Mppx_server.create({
|
|
5475
5574
|
methods: [
|
|
5476
|
-
tempo_server.
|
|
5575
|
+
tempo_server.sessionLegacy({
|
|
5477
5576
|
store: Store.memory(),
|
|
5478
5577
|
getClient: () => client,
|
|
5479
5578
|
account: recipientAccount,
|
|
@@ -5592,7 +5691,7 @@ describe('monotonicity and TOCTOU (unit tests)', () => {
|
|
|
5592
5691
|
|
|
5593
5692
|
function seedChannel(
|
|
5594
5693
|
store: ChannelStore.ChannelStore,
|
|
5595
|
-
overrides: Partial<ChannelStore.
|
|
5694
|
+
overrides: Partial<ChannelStore.BaseState & ChannelStore.LegacyContractBackendState> = {},
|
|
5596
5695
|
) {
|
|
5597
5696
|
return store.updateChannel(testChannelId, () => ({
|
|
5598
5697
|
channelId: testChannelId,
|
|
@@ -5932,7 +6031,7 @@ describe('session default currency resolution', () => {
|
|
|
5932
6031
|
test('challenge contains USDC currency (mainnet default)', async () => {
|
|
5933
6032
|
const handler = Mppx_server.create({
|
|
5934
6033
|
methods: [
|
|
5935
|
-
tempo_server.
|
|
6034
|
+
tempo_server.sessionLegacy({
|
|
5936
6035
|
store: Store.memory(),
|
|
5937
6036
|
getClient: () => mockMainnetClient,
|
|
5938
6037
|
account: mockAccount,
|
|
@@ -5959,7 +6058,7 @@ describe('session default currency resolution', () => {
|
|
|
5959
6058
|
test('challenge contains pathUSD currency when testnet: true', async () => {
|
|
5960
6059
|
const handler = Mppx_server.create({
|
|
5961
6060
|
methods: [
|
|
5962
|
-
tempo_server.
|
|
6061
|
+
tempo_server.sessionLegacy({
|
|
5963
6062
|
store: Store.memory(),
|
|
5964
6063
|
getClient: () => mockTestnetClient,
|
|
5965
6064
|
account: mockAccount,
|
|
@@ -5986,7 +6085,7 @@ describe('session default currency resolution', () => {
|
|
|
5986
6085
|
test('challenge contains pathUSD currency (unknown chain)', async () => {
|
|
5987
6086
|
const handler = Mppx_server.create({
|
|
5988
6087
|
methods: [
|
|
5989
|
-
tempo_server.
|
|
6088
|
+
tempo_server.sessionLegacy({
|
|
5990
6089
|
store: Store.memory(),
|
|
5991
6090
|
getClient: () => mockTestnetClient,
|
|
5992
6091
|
account: mockAccount,
|
|
@@ -6012,7 +6111,7 @@ describe('session default currency resolution', () => {
|
|
|
6012
6111
|
test('explicit currency in challenge overrides testnet default', async () => {
|
|
6013
6112
|
const handler = Mppx_server.create({
|
|
6014
6113
|
methods: [
|
|
6015
|
-
tempo_server.
|
|
6114
|
+
tempo_server.sessionLegacy({
|
|
6016
6115
|
store: Store.memory(),
|
|
6017
6116
|
getClient: () => mockClient,
|
|
6018
6117
|
account: mockAccount,
|
|
@@ -6041,7 +6140,7 @@ describe('session default currency resolution', () => {
|
|
|
6041
6140
|
test('handler.session throws for zero-amount routes', () => {
|
|
6042
6141
|
const handler = Mppx_server.create({
|
|
6043
6142
|
methods: [
|
|
6044
|
-
tempo_server.
|
|
6143
|
+
tempo_server.sessionLegacy({
|
|
6045
6144
|
store: Store.memory(),
|
|
6046
6145
|
getClient: () => mockClient,
|
|
6047
6146
|
account: mockAccount,
|