mppx 0.0.1 → 0.1.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/LICENSE +21 -0
- package/README.md +195 -0
- package/dist/BodyDigest.d.ts +42 -0
- package/dist/BodyDigest.d.ts.map +1 -0
- package/dist/BodyDigest.js +40 -0
- package/dist/BodyDigest.js.map +1 -0
- package/dist/Challenge.d.ts +271 -0
- package/dist/Challenge.d.ts.map +1 -0
- package/dist/Challenge.js +291 -0
- package/dist/Challenge.js.map +1 -0
- package/dist/Credential.d.ts +91 -0
- package/dist/Credential.d.ts.map +1 -0
- package/dist/Credential.js +122 -0
- package/dist/Credential.js.map +1 -0
- package/dist/Errors.d.ts +243 -0
- package/dist/Errors.d.ts.map +1 -0
- package/dist/Errors.js +201 -0
- package/dist/Errors.js.map +1 -0
- package/dist/Expires.d.ts +15 -0
- package/dist/Expires.d.ts.map +1 -0
- package/dist/Expires.js +29 -0
- package/dist/Expires.js.map +1 -0
- package/dist/Intent.d.ts +101 -0
- package/dist/Intent.d.ts.map +1 -0
- package/dist/Intent.js +83 -0
- package/dist/Intent.js.map +1 -0
- package/dist/Mcp.d.ts +74 -0
- package/dist/Mcp.d.ts.map +1 -0
- package/dist/Mcp.js +9 -0
- package/dist/Mcp.js.map +1 -0
- package/dist/MethodIntent.d.ts +225 -0
- package/dist/MethodIntent.d.ts.map +1 -0
- package/dist/MethodIntent.js +156 -0
- package/dist/MethodIntent.js.map +1 -0
- package/dist/PaymentRequest.d.ts +88 -0
- package/dist/PaymentRequest.d.ts.map +1 -0
- package/dist/PaymentRequest.js +81 -0
- package/dist/PaymentRequest.js.map +1 -0
- package/dist/Receipt.d.ts +110 -0
- package/dist/Receipt.d.ts.map +1 -0
- package/dist/Receipt.js +105 -0
- package/dist/Receipt.js.map +1 -0
- package/dist/Store.d.ts +28 -0
- package/dist/Store.d.ts.map +1 -0
- package/dist/Store.js +61 -0
- package/dist/Store.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +1219 -0
- package/dist/cli.js.map +1 -0
- package/dist/client/Methods.d.ts +4 -0
- package/dist/client/Methods.d.ts.map +1 -0
- package/dist/client/Methods.js +4 -0
- package/dist/client/Methods.js.map +1 -0
- package/dist/client/Mppx.d.ts +84 -0
- package/dist/client/Mppx.d.ts.map +1 -0
- package/dist/client/Mppx.js +64 -0
- package/dist/client/Mppx.js.map +1 -0
- package/dist/client/Transport.d.ts +56 -0
- package/dist/client/Transport.d.ts.map +1 -0
- package/dist/client/Transport.js +81 -0
- package/dist/client/Transport.js.map +1 -0
- package/dist/client/index.d.ts +5 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +5 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/internal/Fetch.d.ts +85 -0
- package/dist/client/internal/Fetch.d.ts.map +1 -0
- package/dist/client/internal/Fetch.js +95 -0
- package/dist/client/internal/Fetch.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/types.d.ts +302 -0
- package/dist/internal/types.d.ts.map +1 -0
- package/dist/internal/types.js +2 -0
- package/dist/internal/types.js.map +1 -0
- package/dist/mcp-sdk/client/McpClient.d.ts +78 -0
- package/dist/mcp-sdk/client/McpClient.d.ts.map +1 -0
- package/dist/mcp-sdk/client/McpClient.js +98 -0
- package/dist/mcp-sdk/client/McpClient.js.map +1 -0
- package/dist/mcp-sdk/client/index.d.ts +3 -0
- package/dist/mcp-sdk/client/index.d.ts.map +1 -0
- package/dist/mcp-sdk/client/index.js +3 -0
- package/dist/mcp-sdk/client/index.js.map +1 -0
- package/dist/mcp-sdk/server/Transport.d.ts +43 -0
- package/dist/mcp-sdk/server/Transport.d.ts.map +1 -0
- package/dist/mcp-sdk/server/Transport.js +71 -0
- package/dist/mcp-sdk/server/Transport.js.map +1 -0
- package/dist/mcp-sdk/server/index.d.ts +2 -0
- package/dist/mcp-sdk/server/index.d.ts.map +1 -0
- package/dist/mcp-sdk/server/index.js +2 -0
- package/dist/mcp-sdk/server/index.js.map +1 -0
- package/dist/middlewares/elysia.d.ts +51 -0
- package/dist/middlewares/elysia.d.ts.map +1 -0
- package/dist/middlewares/elysia.js +59 -0
- package/dist/middlewares/elysia.js.map +1 -0
- package/dist/middlewares/express.d.ts +46 -0
- package/dist/middlewares/express.d.ts.map +1 -0
- package/dist/middlewares/express.js +69 -0
- package/dist/middlewares/express.js.map +1 -0
- package/dist/middlewares/hono.d.ts +46 -0
- package/dist/middlewares/hono.d.ts.map +1 -0
- package/dist/middlewares/hono.js +57 -0
- package/dist/middlewares/hono.js.map +1 -0
- package/dist/middlewares/internal/mppx.d.ts +16 -0
- package/dist/middlewares/internal/mppx.d.ts.map +1 -0
- package/dist/middlewares/internal/mppx.js +16 -0
- package/dist/middlewares/internal/mppx.js.map +1 -0
- package/dist/middlewares/nextjs.d.ts +45 -0
- package/dist/middlewares/nextjs.d.ts.map +1 -0
- package/dist/middlewares/nextjs.js +57 -0
- package/dist/middlewares/nextjs.js.map +1 -0
- package/dist/proxy/Proxy.d.ts +47 -0
- package/dist/proxy/Proxy.d.ts.map +1 -0
- package/dist/proxy/Proxy.js +126 -0
- package/dist/proxy/Proxy.js.map +1 -0
- package/dist/proxy/Service.d.ts +100 -0
- package/dist/proxy/Service.d.ts.map +1 -0
- package/dist/proxy/Service.js +147 -0
- package/dist/proxy/Service.js.map +1 -0
- package/dist/proxy/index.d.ts +7 -0
- package/dist/proxy/index.d.ts.map +1 -0
- package/dist/proxy/index.js +7 -0
- package/dist/proxy/index.js.map +1 -0
- package/dist/proxy/internal/Headers.d.ts +3 -0
- package/dist/proxy/internal/Headers.d.ts.map +1 -0
- package/dist/proxy/internal/Headers.js +41 -0
- package/dist/proxy/internal/Headers.js.map +1 -0
- package/dist/proxy/internal/Route.d.ts +14 -0
- package/dist/proxy/internal/Route.d.ts.map +1 -0
- package/dist/proxy/internal/Route.js +47 -0
- package/dist/proxy/internal/Route.js.map +1 -0
- package/dist/proxy/services/anthropic.d.ts +29 -0
- package/dist/proxy/services/anthropic.d.ts.map +1 -0
- package/dist/proxy/services/anthropic.js +30 -0
- package/dist/proxy/services/anthropic.js.map +1 -0
- package/dist/proxy/services/openai.d.ts +29 -0
- package/dist/proxy/services/openai.d.ts.map +1 -0
- package/dist/proxy/services/openai.js +30 -0
- package/dist/proxy/services/openai.js.map +1 -0
- package/dist/proxy/services/stripe.d.ts +29 -0
- package/dist/proxy/services/stripe.d.ts.map +1 -0
- package/dist/proxy/services/stripe.js +30 -0
- package/dist/proxy/services/stripe.js.map +1 -0
- package/dist/server/Methods.d.ts +3 -0
- package/dist/server/Methods.d.ts.map +1 -0
- package/dist/server/Methods.js +3 -0
- package/dist/server/Methods.js.map +1 -0
- package/dist/server/Mppx.d.ts +116 -0
- package/dist/server/Mppx.d.ts.map +1 -0
- package/dist/server/Mppx.js +207 -0
- package/dist/server/Mppx.js.map +1 -0
- package/dist/server/NodeListener.d.ts +3 -0
- package/dist/server/NodeListener.d.ts.map +1 -0
- package/dist/server/NodeListener.js +3 -0
- package/dist/server/NodeListener.js.map +1 -0
- package/dist/server/Request.d.ts +24 -0
- package/dist/server/Request.d.ts.map +1 -0
- package/dist/server/Request.js +26 -0
- package/dist/server/Request.js.map +1 -0
- package/dist/server/Response.d.ts +10 -0
- package/dist/server/Response.d.ts.map +1 -0
- package/dist/server/Response.js +15 -0
- package/dist/server/Response.js.map +1 -0
- package/dist/server/Transport.d.ts +93 -0
- package/dist/server/Transport.d.ts.map +1 -0
- package/dist/server/Transport.js +132 -0
- package/dist/server/Transport.js.map +1 -0
- package/dist/server/index.d.ts +9 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +9 -0
- package/dist/server/index.js.map +1 -0
- package/dist/stripe/Intents.d.ts +54 -0
- package/dist/stripe/Intents.d.ts.map +1 -0
- package/dist/stripe/Intents.js +27 -0
- package/dist/stripe/Intents.js.map +1 -0
- package/dist/stripe/client/Charge.d.ts +114 -0
- package/dist/stripe/client/Charge.d.ts.map +1 -0
- package/dist/stripe/client/Charge.js +77 -0
- package/dist/stripe/client/Charge.js.map +1 -0
- package/dist/stripe/client/MethodIntents.d.ts +80 -0
- package/dist/stripe/client/MethodIntents.d.ts.map +1 -0
- package/dist/stripe/client/MethodIntents.js +34 -0
- package/dist/stripe/client/MethodIntents.js.map +1 -0
- package/dist/stripe/client/index.d.ts +3 -0
- package/dist/stripe/client/index.d.ts.map +1 -0
- package/dist/stripe/client/index.js +3 -0
- package/dist/stripe/client/index.js.map +1 -0
- package/dist/stripe/index.d.ts +2 -0
- package/dist/stripe/index.d.ts.map +1 -0
- package/dist/stripe/index.js +2 -0
- package/dist/stripe/index.js.map +1 -0
- package/dist/stripe/server/Charge.d.ts +74 -0
- package/dist/stripe/server/Charge.d.ts.map +1 -0
- package/dist/stripe/server/Charge.js +79 -0
- package/dist/stripe/server/Charge.js.map +1 -0
- package/dist/stripe/server/MethodIntents.d.ts +65 -0
- package/dist/stripe/server/MethodIntents.d.ts.map +1 -0
- package/dist/stripe/server/MethodIntents.js +21 -0
- package/dist/stripe/server/MethodIntents.js.map +1 -0
- package/dist/stripe/server/index.d.ts +3 -0
- package/dist/stripe/server/index.d.ts.map +1 -0
- package/dist/stripe/server/index.js +3 -0
- package/dist/stripe/server/index.js.map +1 -0
- package/dist/tempo/Attribution.d.ts +101 -0
- package/dist/tempo/Attribution.d.ts.map +1 -0
- package/dist/tempo/Attribution.js +124 -0
- package/dist/tempo/Attribution.js.map +1 -0
- package/dist/tempo/Intents.d.ts +132 -0
- package/dist/tempo/Intents.d.ts.map +1 -0
- package/dist/tempo/Intents.js +81 -0
- package/dist/tempo/Intents.js.map +1 -0
- package/dist/tempo/client/ChannelOps.d.ts +54 -0
- package/dist/tempo/client/ChannelOps.d.ts.map +1 -0
- package/dist/tempo/client/ChannelOps.js +138 -0
- package/dist/tempo/client/ChannelOps.js.map +1 -0
- package/dist/tempo/client/Charge.d.ts +76 -0
- package/dist/tempo/client/Charge.d.ts.map +1 -0
- package/dist/tempo/client/Charge.js +69 -0
- package/dist/tempo/client/Charge.js.map +1 -0
- package/dist/tempo/client/MethodIntents.d.ts +157 -0
- package/dist/tempo/client/MethodIntents.d.ts.map +1 -0
- package/dist/tempo/client/MethodIntents.js +25 -0
- package/dist/tempo/client/MethodIntents.js.map +1 -0
- package/dist/tempo/client/Session.d.ts +159 -0
- package/dist/tempo/client/Session.d.ts.map +1 -0
- package/dist/tempo/client/Session.js +263 -0
- package/dist/tempo/client/Session.js.map +1 -0
- package/dist/tempo/client/SessionManager.d.ts +62 -0
- package/dist/tempo/client/SessionManager.d.ts.map +1 -0
- package/dist/tempo/client/SessionManager.js +196 -0
- package/dist/tempo/client/SessionManager.js.map +1 -0
- package/dist/tempo/client/index.d.ts +6 -0
- package/dist/tempo/client/index.d.ts.map +1 -0
- package/dist/tempo/client/index.js +5 -0
- package/dist/tempo/client/index.js.map +1 -0
- package/dist/tempo/index.d.ts +3 -0
- package/dist/tempo/index.d.ts.map +1 -0
- package/dist/tempo/index.js +3 -0
- package/dist/tempo/index.js.map +1 -0
- package/dist/tempo/internal/account.d.ts +32 -0
- package/dist/tempo/internal/account.d.ts.map +1 -0
- package/dist/tempo/internal/account.js +33 -0
- package/dist/tempo/internal/account.js.map +1 -0
- package/dist/tempo/internal/defaults.d.ts +18 -0
- package/dist/tempo/internal/defaults.d.ts.map +1 -0
- package/dist/tempo/internal/defaults.js +18 -0
- package/dist/tempo/internal/defaults.js.map +1 -0
- package/dist/tempo/internal/types.d.ts +11 -0
- package/dist/tempo/internal/types.d.ts.map +1 -0
- package/dist/tempo/internal/types.js +2 -0
- package/dist/tempo/internal/types.js.map +1 -0
- package/dist/tempo/server/Charge.d.ts +77 -0
- package/dist/tempo/server/Charge.d.ts.map +1 -0
- package/dist/tempo/server/Charge.js +228 -0
- package/dist/tempo/server/Charge.js.map +1 -0
- package/dist/tempo/server/MethodIntents.d.ts +140 -0
- package/dist/tempo/server/MethodIntents.d.ts.map +1 -0
- package/dist/tempo/server/MethodIntents.js +26 -0
- package/dist/tempo/server/MethodIntents.js.map +1 -0
- package/dist/tempo/server/Session.d.ts +148 -0
- package/dist/tempo/server/Session.d.ts.map +1 -0
- package/dist/tempo/server/Session.js +529 -0
- package/dist/tempo/server/Session.js.map +1 -0
- package/dist/tempo/server/internal/transport.d.ts +47 -0
- package/dist/tempo/server/internal/transport.d.ts.map +1 -0
- package/dist/tempo/server/internal/transport.js +118 -0
- package/dist/tempo/server/internal/transport.js.map +1 -0
- package/dist/tempo/stream/Chain.d.ts +52 -0
- package/dist/tempo/stream/Chain.d.ts.map +1 -0
- package/dist/tempo/stream/Chain.js +215 -0
- package/dist/tempo/stream/Chain.js.map +1 -0
- package/dist/tempo/stream/Channel.d.ts +26 -0
- package/dist/tempo/stream/Channel.d.ts.map +1 -0
- package/dist/tempo/stream/Channel.js +27 -0
- package/dist/tempo/stream/Channel.js.map +1 -0
- package/dist/tempo/stream/ChannelStore.d.ts +103 -0
- package/dist/tempo/stream/ChannelStore.d.ts.map +1 -0
- package/dist/tempo/stream/ChannelStore.js +100 -0
- package/dist/tempo/stream/ChannelStore.js.map +1 -0
- package/dist/tempo/stream/Receipt.d.ts +22 -0
- package/dist/tempo/stream/Receipt.d.ts.map +1 -0
- package/dist/tempo/stream/Receipt.js +34 -0
- package/dist/tempo/stream/Receipt.js.map +1 -0
- package/dist/tempo/stream/Sse.d.ts +134 -0
- package/dist/tempo/stream/Sse.d.ts.map +1 -0
- package/dist/tempo/stream/Sse.js +288 -0
- package/dist/tempo/stream/Sse.js.map +1 -0
- package/dist/tempo/stream/Types.d.ts +78 -0
- package/dist/tempo/stream/Types.d.ts.map +1 -0
- package/dist/tempo/stream/Types.js +2 -0
- package/dist/tempo/stream/Types.js.map +1 -0
- package/dist/tempo/stream/Voucher.d.ts +20 -0
- package/dist/tempo/stream/Voucher.d.ts.map +1 -0
- package/dist/tempo/stream/Voucher.js +98 -0
- package/dist/tempo/stream/Voucher.js.map +1 -0
- package/dist/tempo/stream/escrow.abi.d.ts +598 -0
- package/dist/tempo/stream/escrow.abi.d.ts.map +1 -0
- package/dist/tempo/stream/escrow.abi.js +760 -0
- package/dist/tempo/stream/escrow.abi.js.map +1 -0
- package/dist/tempo/stream/index.d.ts +8 -0
- package/dist/tempo/stream/index.d.ts.map +1 -0
- package/dist/tempo/stream/index.js +8 -0
- package/dist/tempo/stream/index.js.map +1 -0
- package/dist/viem/Account.d.ts +12 -0
- package/dist/viem/Account.d.ts.map +1 -0
- package/dist/viem/Account.js +14 -0
- package/dist/viem/Account.js.map +1 -0
- package/dist/viem/Client.d.ts +21 -0
- package/dist/viem/Client.d.ts.map +1 -0
- package/dist/viem/Client.js +19 -0
- package/dist/viem/Client.js.map +1 -0
- package/dist/zod.d.ts +17 -0
- package/dist/zod.d.ts.map +1 -0
- package/dist/zod.js +35 -0
- package/dist/zod.js.map +1 -0
- package/package.json +117 -4
- package/src/BodyDigest.test.ts +43 -0
- package/src/BodyDigest.ts +53 -0
- package/src/Challenge.test-d.ts +81 -0
- package/src/Challenge.test.ts +414 -0
- package/src/Challenge.ts +429 -0
- package/src/Credential.test.ts +227 -0
- package/src/Credential.ts +154 -0
- package/src/Errors.test.ts +402 -0
- package/src/Errors.ts +348 -0
- package/src/Expires.ts +34 -0
- package/src/Intent.test.ts +180 -0
- package/src/Intent.ts +109 -0
- package/src/Mcp.ts +81 -0
- package/src/MethodIntent.test.ts +303 -0
- package/src/MethodIntent.ts +388 -0
- package/src/PaymentRequest.test.ts +152 -0
- package/src/PaymentRequest.ts +107 -0
- package/src/Receipt.test.ts +98 -0
- package/src/Receipt.ts +129 -0
- package/src/Store.ts +84 -0
- package/src/cli.test.ts +542 -0
- package/src/cli.ts +1319 -0
- package/src/client/Methods.ts +3 -0
- package/src/client/Mppx.test-d.ts +90 -0
- package/src/client/Mppx.test.ts +468 -0
- package/src/client/Mppx.ts +149 -0
- package/src/client/Transport.test.ts +283 -0
- package/src/client/Transport.ts +115 -0
- package/src/client/index.ts +4 -0
- package/src/client/internal/Fetch.test-d.ts +57 -0
- package/src/client/internal/Fetch.test.ts +281 -0
- package/src/client/internal/Fetch.ts +157 -0
- package/src/env.d.ts +11 -0
- package/src/index.ts +12 -0
- package/src/internal/types.ts +403 -0
- package/src/mcp-sdk/client/McpClient.test-d.ts +109 -0
- package/src/mcp-sdk/client/McpClient.test.ts +219 -0
- package/src/mcp-sdk/client/McpClient.ts +187 -0
- package/src/mcp-sdk/client/index.ts +2 -0
- package/src/mcp-sdk/server/Transport.ts +94 -0
- package/src/mcp-sdk/server/index.ts +1 -0
- package/src/middlewares/elysia.ts +66 -0
- package/src/middlewares/express.test.ts +155 -0
- package/src/middlewares/express.ts +82 -0
- package/src/middlewares/hono.test.ts +148 -0
- package/src/middlewares/hono.ts +62 -0
- package/src/middlewares/internal/mppx.ts +30 -0
- package/src/middlewares/nextjs.test.ts +164 -0
- package/src/middlewares/nextjs.ts +66 -0
- package/src/proxy/Proxy.test.ts +472 -0
- package/src/proxy/Proxy.ts +175 -0
- package/src/proxy/Service.test.ts +125 -0
- package/src/proxy/Service.ts +227 -0
- package/src/proxy/index.ts +6 -0
- package/src/proxy/internal/Headers.test.ts +100 -0
- package/src/proxy/internal/Headers.ts +40 -0
- package/src/proxy/internal/Route.test.ts +143 -0
- package/src/proxy/internal/Route.ts +54 -0
- package/src/proxy/services/anthropic.ts +45 -0
- package/src/proxy/services/openai.test.ts +97 -0
- package/src/proxy/services/openai.ts +48 -0
- package/src/proxy/services/stripe.ts +49 -0
- package/src/server/Methods.ts +2 -0
- package/src/server/Mppx.test-d.ts +343 -0
- package/src/server/Mppx.test.ts +342 -0
- package/src/server/Mppx.ts +378 -0
- package/src/server/NodeListener.test.ts +188 -0
- package/src/server/NodeListener.ts +3 -0
- package/src/server/Request.test.ts +102 -0
- package/src/server/Request.ts +33 -0
- package/src/server/Response.test.ts +31 -0
- package/src/server/Response.ts +27 -0
- package/src/server/Transport.test.ts +294 -0
- package/src/server/Transport.ts +222 -0
- package/src/server/index.ts +8 -0
- package/src/stripe/Charge.integration.test.ts +326 -0
- package/src/stripe/Intents.test.ts +52 -0
- package/src/stripe/Intents.ts +27 -0
- package/src/stripe/client/Charge.ts +119 -0
- package/src/stripe/client/MethodIntents.ts +37 -0
- package/src/stripe/client/index.ts +2 -0
- package/src/stripe/index.ts +1 -0
- package/src/stripe/server/Charge.ts +121 -0
- package/src/stripe/server/MethodIntents.ts +24 -0
- package/src/stripe/server/index.ts +2 -0
- package/src/tempo/Attribution.test.ts +187 -0
- package/src/tempo/Attribution.ts +156 -0
- package/src/tempo/Intents.test.ts +84 -0
- package/src/tempo/Intents.ts +93 -0
- package/src/tempo/client/ChannelOps.ts +233 -0
- package/src/tempo/client/Charge.ts +84 -0
- package/src/tempo/client/MethodIntents.ts +28 -0
- package/src/tempo/client/Session.ts +369 -0
- package/src/tempo/client/SessionManager.test.ts +223 -0
- package/src/tempo/client/SessionManager.ts +270 -0
- package/src/tempo/client/index.ts +5 -0
- package/src/tempo/index.ts +2 -0
- package/src/tempo/internal/account.ts +47 -0
- package/src/tempo/internal/defaults.ts +20 -0
- package/src/tempo/internal/types.ts +8 -0
- package/src/tempo/server/Charge.test.ts +847 -0
- package/src/tempo/server/Charge.ts +309 -0
- package/src/tempo/server/MethodIntents.ts +29 -0
- package/src/tempo/server/Session.test.ts +1349 -0
- package/src/tempo/server/Session.ts +773 -0
- package/src/tempo/server/Sse.test.ts +289 -0
- package/src/tempo/server/index.ts +5 -0
- package/src/tempo/server/internal/transport.ts +153 -0
- package/src/tempo/stream/Chain.ts +333 -0
- package/src/tempo/stream/Channel.ts +50 -0
- package/src/tempo/stream/ChannelStore.test.ts +473 -0
- package/src/tempo/stream/ChannelStore.ts +202 -0
- package/src/tempo/stream/Receipt.test.ts +84 -0
- package/src/tempo/stream/Receipt.ts +45 -0
- package/src/tempo/stream/Sse.test.ts +401 -0
- package/src/tempo/stream/Sse.ts +375 -0
- package/src/tempo/stream/Types.ts +86 -0
- package/src/tempo/stream/Voucher.test.ts +134 -0
- package/src/tempo/stream/Voucher.ts +123 -0
- package/src/tempo/stream/escrow.abi.ts +759 -0
- package/src/tempo/stream/index.ts +7 -0
- package/src/tsconfig.json +10 -0
- package/src/viem/Account.test.ts +71 -0
- package/src/viem/Account.ts +30 -0
- package/src/viem/Client.test.ts +58 -0
- package/src/viem/Client.ts +33 -0
- package/src/zod.ts +47 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp-sdk/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,6BAA6B,CAAA;AACpD,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { CallToolResult, McpError } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import type * as Credential from '../../Credential.js';
|
|
3
|
+
import * as core_Mcp from '../../Mcp.js';
|
|
4
|
+
import * as Transport from '../../server/Transport.js';
|
|
5
|
+
/**
|
|
6
|
+
* MCP SDK tool handler "extra" parameter.
|
|
7
|
+
* Compatible with `@modelcontextprotocol/sdk` RequestHandlerExtra.
|
|
8
|
+
*/
|
|
9
|
+
export type Extra = {
|
|
10
|
+
_meta?: {
|
|
11
|
+
[core_Mcp.credentialMetaKey]?: Credential.Credential;
|
|
12
|
+
[key: string]: unknown;
|
|
13
|
+
} | undefined;
|
|
14
|
+
[key: string]: unknown;
|
|
15
|
+
};
|
|
16
|
+
export type McpSdk = Transport.Transport<Extra, McpError, CallToolResult>;
|
|
17
|
+
/**
|
|
18
|
+
* MCP SDK transport for server-side payment handling with `@modelcontextprotocol/sdk`.
|
|
19
|
+
*
|
|
20
|
+
* - Reads credentials from `_meta["org.paymentauth/credential"]`
|
|
21
|
+
* - Issues challenges as `McpError` with code `-32042` and challenge in `error.data`
|
|
22
|
+
* - Attaches receipts via `_meta["org.paymentauth/receipt"]` on tool results
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```ts
|
|
26
|
+
* import { McpServer } from '@modelcontextprotocol/sdk/server/mcp'
|
|
27
|
+
* import { Mppx, Transport } from 'mppx/server'
|
|
28
|
+
*
|
|
29
|
+
* const payment = Mppx.create({
|
|
30
|
+
* method: tempo(),
|
|
31
|
+
* secretKey: process.env.SECRET_KEY,
|
|
32
|
+
* transport: Transport.mcpSdk(),
|
|
33
|
+
* })
|
|
34
|
+
*
|
|
35
|
+
* server.registerTool('premium', { description: '...' }, async (extra) => {
|
|
36
|
+
* const result = await payment.charge({ request: { ... } })(extra)
|
|
37
|
+
* if (result.status === 402) throw result.challenge
|
|
38
|
+
* return result.withReceipt({ content: [...] })
|
|
39
|
+
* })
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
export declare function mcpSdk(): McpSdk;
|
|
43
|
+
//# sourceMappingURL=Transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Transport.d.ts","sourceRoot":"","sources":["../../../src/mcp-sdk/server/Transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAClF,OAAO,KAAK,KAAK,UAAU,MAAM,qBAAqB,CAAA;AACtD,OAAO,KAAK,QAAQ,MAAM,cAAc,CAAA;AACxC,OAAO,KAAK,SAAS,MAAM,2BAA2B,CAAA;AAEtD;;;GAGG;AACH,MAAM,MAAM,KAAK,GAAG;IAClB,KAAK,CAAC,EACF;QACE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,EAAE,UAAU,CAAC,UAAU,CAAA;QACpD,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KACvB,GACD,SAAS,CAAA;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAA;AAEzE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,MAAM,IAAI,MAAM,CA+C/B"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import * as core_Mcp from '../../Mcp.js';
|
|
2
|
+
import * as Transport from '../../server/Transport.js';
|
|
3
|
+
/**
|
|
4
|
+
* MCP SDK transport for server-side payment handling with `@modelcontextprotocol/sdk`.
|
|
5
|
+
*
|
|
6
|
+
* - Reads credentials from `_meta["org.paymentauth/credential"]`
|
|
7
|
+
* - Issues challenges as `McpError` with code `-32042` and challenge in `error.data`
|
|
8
|
+
* - Attaches receipts via `_meta["org.paymentauth/receipt"]` on tool results
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import { McpServer } from '@modelcontextprotocol/sdk/server/mcp'
|
|
13
|
+
* import { Mppx, Transport } from 'mppx/server'
|
|
14
|
+
*
|
|
15
|
+
* const payment = Mppx.create({
|
|
16
|
+
* method: tempo(),
|
|
17
|
+
* secretKey: process.env.SECRET_KEY,
|
|
18
|
+
* transport: Transport.mcpSdk(),
|
|
19
|
+
* })
|
|
20
|
+
*
|
|
21
|
+
* server.registerTool('premium', { description: '...' }, async (extra) => {
|
|
22
|
+
* const result = await payment.charge({ request: { ... } })(extra)
|
|
23
|
+
* if (result.status === 402) throw result.challenge
|
|
24
|
+
* return result.withReceipt({ content: [...] })
|
|
25
|
+
* })
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export function mcpSdk() {
|
|
29
|
+
let McpErrorClass;
|
|
30
|
+
return Transport.from({
|
|
31
|
+
name: 'mcp-sdk',
|
|
32
|
+
getCredential(extra) {
|
|
33
|
+
const credential = extra._meta?.[core_Mcp.credentialMetaKey];
|
|
34
|
+
if (!credential)
|
|
35
|
+
return null;
|
|
36
|
+
return credential;
|
|
37
|
+
},
|
|
38
|
+
async respondChallenge({ challenge, error }) {
|
|
39
|
+
if (!McpErrorClass) {
|
|
40
|
+
try {
|
|
41
|
+
const mod = await import('@modelcontextprotocol/sdk/types.js');
|
|
42
|
+
McpErrorClass = mod.McpError;
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
const err = new Error('Missing optional dependency "@modelcontextprotocol/sdk". Install it to use mppx MCP SDK transports.');
|
|
46
|
+
err.cause = error;
|
|
47
|
+
throw err;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return new McpErrorClass(core_Mcp.paymentRequiredCode, error?.message ?? 'Payment Required', {
|
|
51
|
+
httpStatus: 402,
|
|
52
|
+
challenges: [challenge],
|
|
53
|
+
...(error && { problem: error.toProblemDetails(challenge.id) }),
|
|
54
|
+
});
|
|
55
|
+
},
|
|
56
|
+
respondReceipt({ receipt, response, challengeId }) {
|
|
57
|
+
const mcpReceipt = {
|
|
58
|
+
...receipt,
|
|
59
|
+
challengeId,
|
|
60
|
+
};
|
|
61
|
+
return {
|
|
62
|
+
...response,
|
|
63
|
+
_meta: {
|
|
64
|
+
...response._meta,
|
|
65
|
+
[core_Mcp.receiptMetaKey]: mcpReceipt,
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
},
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=Transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Transport.js","sourceRoot":"","sources":["../../../src/mcp-sdk/server/Transport.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,cAAc,CAAA;AACxC,OAAO,KAAK,SAAS,MAAM,2BAA2B,CAAA;AAkBtD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,MAAM;IACpB,IAAI,aAA0C,CAAA;IAE9C,OAAO,SAAS,CAAC,IAAI,CAAkC;QACrD,IAAI,EAAE,SAAS;QAEf,aAAa,CAAC,KAAK;YACjB,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAA;YAC5D,IAAI,CAAC,UAAU;gBAAE,OAAO,IAAI,CAAA;YAC5B,OAAO,UAAU,CAAA;QACnB,CAAC;QAED,KAAK,CAAC,gBAAgB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE;YACzC,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,oCAAoC,CAAC,CAAA;oBAC9D,aAAa,GAAG,GAAG,CAAC,QAAQ,CAAA;gBAC9B,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,GAAG,GAAG,IAAI,KAAK,CACnB,qGAAqG,CACtG,CACA;oBAAC,GAAmC,CAAC,KAAK,GAAG,KAAK,CAAA;oBACnD,MAAM,GAAG,CAAA;gBACX,CAAC;YACH,CAAC;YACD,OAAO,IAAI,aAAa,CAAC,QAAQ,CAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,IAAI,kBAAkB,EAAE;gBAC3F,UAAU,EAAE,GAAG;gBACf,UAAU,EAAE,CAAC,SAAS,CAAC;gBACvB,GAAG,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;aAChE,CAAC,CAAA;QACJ,CAAC;QAED,cAAc,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE;YAC/C,MAAM,UAAU,GAAqB;gBACnC,GAAG,OAAO;gBACV,WAAW;aACZ,CAAA;YAED,OAAO;gBACL,GAAG,QAAQ;gBACX,KAAK,EAAE;oBACL,GAAG,QAAQ,CAAC,KAAK;oBACjB,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,UAAU;iBACtC;aACF,CAAA;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp-sdk/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp-sdk/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { Context } from 'elysia';
|
|
2
|
+
import * as Mppx_core from '../server/Mppx.js';
|
|
3
|
+
import * as Mppx_internal from './internal/mppx.js';
|
|
4
|
+
export * from '../server/Methods.js';
|
|
5
|
+
type ElysiaHook = (context: Context) => Promise<Response | undefined>;
|
|
6
|
+
export declare namespace Mppx {
|
|
7
|
+
/**
|
|
8
|
+
* Creates an Elysia-aware payment handler where each intent
|
|
9
|
+
* returns an Elysia `beforeHandle` hook.
|
|
10
|
+
*
|
|
11
|
+
* Use with `.guard()` to scope payment to specific routes,
|
|
12
|
+
* or `.onBeforeHandle()` to apply globally.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* import { Elysia } from 'elysia'
|
|
17
|
+
* import { Mppx, tempo } from 'mppx/elysia'
|
|
18
|
+
*
|
|
19
|
+
* const mppx = Mppx.create({ methods: [tempo()] })
|
|
20
|
+
*
|
|
21
|
+
* const app = new Elysia()
|
|
22
|
+
* .guard(
|
|
23
|
+
* { beforeHandle: mppx.charge({ amount: '1' }) },
|
|
24
|
+
* (app) => app.get('/premium', () => ({ data: 'paid content' })),
|
|
25
|
+
* )
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
function create<const methods extends Mppx_core.Methods>(config: Mppx_core.create.Config<methods>): Mppx_internal.Wrap<Mppx_core.Mppx<methods>, ElysiaHook>;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Elysia `beforeHandle` hook that gates a route behind a payment intent.
|
|
32
|
+
*
|
|
33
|
+
* Returns a 402 challenge if no valid credential is provided.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```ts
|
|
37
|
+
* import { Elysia } from 'elysia'
|
|
38
|
+
* import { Mppx } from 'mppx/server'
|
|
39
|
+
* import { payment } from 'mppx/elysia'
|
|
40
|
+
*
|
|
41
|
+
* const mppx = Mppx.create({ methods: [tempo()] })
|
|
42
|
+
*
|
|
43
|
+
* const app = new Elysia()
|
|
44
|
+
* .guard(
|
|
45
|
+
* { beforeHandle: payment(mppx.charge, { amount: '1' }) },
|
|
46
|
+
* (app) => app.get('/premium', () => ({ data: 'paid content' })),
|
|
47
|
+
* )
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
export declare function payment<const intent extends Mppx_internal.AnyIntentFn>(intent: intent, options: intent extends (options: infer options) => any ? options : never): ElysiaHook;
|
|
51
|
+
//# sourceMappingURL=elysia.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elysia.d.ts","sourceRoot":"","sources":["../../src/middlewares/elysia.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,KAAK,SAAS,MAAM,mBAAmB,CAAA;AAC9C,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD,cAAc,sBAAsB,CAAA;AAEpC,KAAK,UAAU,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAA;AAErE,yBAAiB,IAAI,CAAC;IACpB;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,SAAgB,MAAM,CAAC,KAAK,CAAC,OAAO,SAAS,SAAS,CAAC,OAAO,EAC5D,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GACvC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,CAEzD;CACF;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,OAAO,CAAC,KAAK,CAAC,MAAM,SAAS,aAAa,CAAC,WAAW,EACpE,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,SAAS,CAAC,OAAO,EAAE,MAAM,OAAO,KAAK,GAAG,GAAG,OAAO,GAAG,KAAK,GACxE,UAAU,CAKZ"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import * as Mppx_core from '../server/Mppx.js';
|
|
2
|
+
import * as Mppx_internal from './internal/mppx.js';
|
|
3
|
+
export * from '../server/Methods.js';
|
|
4
|
+
export var Mppx;
|
|
5
|
+
(function (Mppx) {
|
|
6
|
+
/**
|
|
7
|
+
* Creates an Elysia-aware payment handler where each intent
|
|
8
|
+
* returns an Elysia `beforeHandle` hook.
|
|
9
|
+
*
|
|
10
|
+
* Use with `.guard()` to scope payment to specific routes,
|
|
11
|
+
* or `.onBeforeHandle()` to apply globally.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { Elysia } from 'elysia'
|
|
16
|
+
* import { Mppx, tempo } from 'mppx/elysia'
|
|
17
|
+
*
|
|
18
|
+
* const mppx = Mppx.create({ methods: [tempo()] })
|
|
19
|
+
*
|
|
20
|
+
* const app = new Elysia()
|
|
21
|
+
* .guard(
|
|
22
|
+
* { beforeHandle: mppx.charge({ amount: '1' }) },
|
|
23
|
+
* (app) => app.get('/premium', () => ({ data: 'paid content' })),
|
|
24
|
+
* )
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
function create(config) {
|
|
28
|
+
return Mppx_internal.wrap(Mppx_core.create(config), payment);
|
|
29
|
+
}
|
|
30
|
+
Mppx.create = create;
|
|
31
|
+
})(Mppx || (Mppx = {}));
|
|
32
|
+
/**
|
|
33
|
+
* Elysia `beforeHandle` hook that gates a route behind a payment intent.
|
|
34
|
+
*
|
|
35
|
+
* Returns a 402 challenge if no valid credential is provided.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```ts
|
|
39
|
+
* import { Elysia } from 'elysia'
|
|
40
|
+
* import { Mppx } from 'mppx/server'
|
|
41
|
+
* import { payment } from 'mppx/elysia'
|
|
42
|
+
*
|
|
43
|
+
* const mppx = Mppx.create({ methods: [tempo()] })
|
|
44
|
+
*
|
|
45
|
+
* const app = new Elysia()
|
|
46
|
+
* .guard(
|
|
47
|
+
* { beforeHandle: payment(mppx.charge, { amount: '1' }) },
|
|
48
|
+
* (app) => app.get('/premium', () => ({ data: 'paid content' })),
|
|
49
|
+
* )
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export function payment(intent, options) {
|
|
53
|
+
return async ({ request }) => {
|
|
54
|
+
const result = await intent(options)(request);
|
|
55
|
+
if (result.status === 402)
|
|
56
|
+
return result.challenge;
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=elysia.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elysia.js","sourceRoot":"","sources":["../../src/middlewares/elysia.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,SAAS,MAAM,mBAAmB,CAAA;AAC9C,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD,cAAc,sBAAsB,CAAA;AAIpC,MAAM,KAAW,IAAI,CA2BpB;AA3BD,WAAiB,IAAI;IACnB;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,SAAgB,MAAM,CACpB,MAAwC;QAExC,OAAO,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAA;IAC9D,CAAC;IAJe,WAAM,SAIrB,CAAA;AACH,CAAC,EA3BgB,IAAI,KAAJ,IAAI,QA2BpB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,OAAO,CACrB,MAAc,EACd,OAAyE;IAEzE,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QAC3B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAA;QAC7C,IAAI,MAAM,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,MAAM,CAAC,SAAS,CAAA;IACpD,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { RequestHandler } from 'express';
|
|
2
|
+
import * as Mppx_core from '../server/Mppx.js';
|
|
3
|
+
import * as Mppx_internal from './internal/mppx.js';
|
|
4
|
+
export * from '../server/Methods.js';
|
|
5
|
+
export declare namespace Mppx {
|
|
6
|
+
/**
|
|
7
|
+
* Creates an Express-aware payment handler where each intent
|
|
8
|
+
* returns an Express `RequestHandler`.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import express from 'express'
|
|
13
|
+
* import { Mppx, tempo } from 'mppx/express'
|
|
14
|
+
*
|
|
15
|
+
* const app = express()
|
|
16
|
+
* const mppx = Mppx.create({ methods: [tempo()] })
|
|
17
|
+
*
|
|
18
|
+
* app.get('/premium', mppx.charge({ amount: '1' }), (req, res) => {
|
|
19
|
+
* res.json({ data: 'paid content' })
|
|
20
|
+
* })
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
function create<const methods extends Mppx_core.Methods>(config: Mppx_core.create.Config<methods>): Mppx_internal.Wrap<Mppx_core.Mppx<methods>, RequestHandler>;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Express middleware that gates a route behind a payment intent.
|
|
27
|
+
*
|
|
28
|
+
* Returns a 402 challenge if no valid credential is provided,
|
|
29
|
+
* otherwise attaches a `Payment-Receipt` header to the response.
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```ts
|
|
33
|
+
* import express from 'express'
|
|
34
|
+
* import { Mppx } from 'mppx/server'
|
|
35
|
+
* import { payment } from 'mppx/express'
|
|
36
|
+
*
|
|
37
|
+
* const mppx = Mppx.create({ methods: [tempo()] })
|
|
38
|
+
*
|
|
39
|
+
* const app = express()
|
|
40
|
+
* app.get('/premium', payment(mppx.charge, { amount: '1' }), (req, res) => {
|
|
41
|
+
* res.json({ data: 'paid content' })
|
|
42
|
+
* })
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export declare function payment<const intent extends Mppx_internal.AnyIntentFn>(intent: intent, options: intent extends (options: infer options) => any ? options : never): RequestHandler;
|
|
46
|
+
//# sourceMappingURL=express.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"express.d.ts","sourceRoot":"","sources":["../../src/middlewares/express.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,cAAc,EACf,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,SAAS,MAAM,mBAAmB,CAAA;AAE9C,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD,cAAc,sBAAsB,CAAA;AAEpC,yBAAiB,IAAI,CAAC;IACpB;;;;;;;;;;;;;;;;OAgBG;IACH,SAAgB,MAAM,CAAC,KAAK,CAAC,OAAO,SAAS,SAAS,CAAC,OAAO,EAC5D,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GACvC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,CAE7D;CACF;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,OAAO,CAAC,KAAK,CAAC,MAAM,SAAS,aAAa,CAAC,WAAW,EACpE,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,SAAS,CAAC,OAAO,EAAE,MAAM,OAAO,KAAK,GAAG,GAAG,OAAO,GAAG,KAAK,GACxE,cAAc,CAqBhB"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import * as Mppx_core from '../server/Mppx.js';
|
|
2
|
+
import * as Request from '../server/Request.js';
|
|
3
|
+
import * as Mppx_internal from './internal/mppx.js';
|
|
4
|
+
export * from '../server/Methods.js';
|
|
5
|
+
export var Mppx;
|
|
6
|
+
(function (Mppx) {
|
|
7
|
+
/**
|
|
8
|
+
* Creates an Express-aware payment handler where each intent
|
|
9
|
+
* returns an Express `RequestHandler`.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* import express from 'express'
|
|
14
|
+
* import { Mppx, tempo } from 'mppx/express'
|
|
15
|
+
*
|
|
16
|
+
* const app = express()
|
|
17
|
+
* const mppx = Mppx.create({ methods: [tempo()] })
|
|
18
|
+
*
|
|
19
|
+
* app.get('/premium', mppx.charge({ amount: '1' }), (req, res) => {
|
|
20
|
+
* res.json({ data: 'paid content' })
|
|
21
|
+
* })
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
function create(config) {
|
|
25
|
+
return Mppx_internal.wrap(Mppx_core.create(config), payment);
|
|
26
|
+
}
|
|
27
|
+
Mppx.create = create;
|
|
28
|
+
})(Mppx || (Mppx = {}));
|
|
29
|
+
/**
|
|
30
|
+
* Express middleware that gates a route behind a payment intent.
|
|
31
|
+
*
|
|
32
|
+
* Returns a 402 challenge if no valid credential is provided,
|
|
33
|
+
* otherwise attaches a `Payment-Receipt` header to the response.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```ts
|
|
37
|
+
* import express from 'express'
|
|
38
|
+
* import { Mppx } from 'mppx/server'
|
|
39
|
+
* import { payment } from 'mppx/express'
|
|
40
|
+
*
|
|
41
|
+
* const mppx = Mppx.create({ methods: [tempo()] })
|
|
42
|
+
*
|
|
43
|
+
* const app = express()
|
|
44
|
+
* app.get('/premium', payment(mppx.charge, { amount: '1' }), (req, res) => {
|
|
45
|
+
* res.json({ data: 'paid content' })
|
|
46
|
+
* })
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export function payment(intent, options) {
|
|
50
|
+
return async (req, res, next) => {
|
|
51
|
+
const result = await intent(options)(Request.fromNodeListener(req, res));
|
|
52
|
+
if (result.status === 402) {
|
|
53
|
+
const challenge = result.challenge;
|
|
54
|
+
res.status(challenge.status);
|
|
55
|
+
for (const [key, value] of challenge.headers)
|
|
56
|
+
res.setHeader(key, value);
|
|
57
|
+
res.send(await challenge.text());
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const originalJson = res.json.bind(res);
|
|
61
|
+
res.json = (body) => {
|
|
62
|
+
const wrapped = result.withReceipt(Response.json(body));
|
|
63
|
+
res.setHeader('Payment-Receipt', wrapped.headers.get('Payment-Receipt'));
|
|
64
|
+
return originalJson(body);
|
|
65
|
+
};
|
|
66
|
+
next();
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=express.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"express.js","sourceRoot":"","sources":["../../src/middlewares/express.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,SAAS,MAAM,mBAAmB,CAAA;AAC9C,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAA;AAC/C,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD,cAAc,sBAAsB,CAAA;AAEpC,MAAM,KAAW,IAAI,CAuBpB;AAvBD,WAAiB,IAAI;IACnB;;;;;;;;;;;;;;;;OAgBG;IACH,SAAgB,MAAM,CACpB,MAAwC;QAExC,OAAO,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAA;IAC9D,CAAC;IAJe,WAAM,SAIrB,CAAA;AACH,CAAC,EAvBgB,IAAI,KAAJ,IAAI,QAuBpB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,OAAO,CACrB,MAAc,EACd,OAAyE;IAEzE,OAAO,KAAK,EAAE,GAAmB,EAAE,GAAoB,EAAE,IAAkB,EAAE,EAAE;QAC7E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QAExE,IAAI,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC1B,MAAM,SAAS,GAAG,MAAM,CAAC,SAAqB,CAAA;YAC9C,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;YAC5B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,OAAO;gBAAE,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;YACvE,GAAG,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC,CAAA;YAChC,OAAM;QACR,CAAC;QAED,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACvC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAS,EAAE,EAAE;YACvB,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;YACvD,GAAG,CAAC,SAAS,CAAC,iBAAiB,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAE,CAAC,CAAA;YACzE,OAAO,YAAY,CAAC,IAAI,CAAC,CAAA;QAC3B,CAAC,CAAA;QAED,IAAI,EAAE,CAAA;IACR,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { MiddlewareHandler } from 'hono';
|
|
2
|
+
import * as Mppx_core from '../server/Mppx.js';
|
|
3
|
+
import * as Mppx_internal from './internal/mppx.js';
|
|
4
|
+
export * from '../server/Methods.js';
|
|
5
|
+
export declare namespace Mppx {
|
|
6
|
+
/**
|
|
7
|
+
* Creates a Hono-aware payment handler where each intent
|
|
8
|
+
* returns a Hono `MiddlewareHandler`.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import { Hono } from 'hono'
|
|
13
|
+
* import { Mppx, tempo } from 'mppx/hono'
|
|
14
|
+
*
|
|
15
|
+
* const app = new Hono()
|
|
16
|
+
* const mppx = Mppx.create({ methods: [tempo()] })
|
|
17
|
+
*
|
|
18
|
+
* app.get('/premium', mppx.charge({ amount: '1' }), (c) =>
|
|
19
|
+
* c.json({ data: 'paid content' }),
|
|
20
|
+
* )
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
function create<const methods extends Mppx_core.Methods>(config: Mppx_core.create.Config<methods>): Mppx_internal.Wrap<Mppx_core.Mppx<methods>, MiddlewareHandler>;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Hono middleware that gates a route behind a payment intent.
|
|
27
|
+
*
|
|
28
|
+
* Returns a 402 challenge if no valid credential is provided,
|
|
29
|
+
* otherwise attaches a `Payment-Receipt` header to the response.
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```ts
|
|
33
|
+
* import { Hono } from 'hono'
|
|
34
|
+
* import { Mppx } from 'mppx/server'
|
|
35
|
+
* import { payment } from 'mppx/hono'
|
|
36
|
+
*
|
|
37
|
+
* const mppx = Mppx.create({ methods: [tempo()] })
|
|
38
|
+
*
|
|
39
|
+
* const app = new Hono()
|
|
40
|
+
* app.get('/premium', payment(mppx.charge, { amount: '1' }), (c) =>
|
|
41
|
+
* c.json({ data: 'paid content' }),
|
|
42
|
+
* )
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export declare function payment<const intent extends Mppx_internal.AnyIntentFn>(intent: intent, options: intent extends (options: infer options) => any ? options : never): MiddlewareHandler;
|
|
46
|
+
//# sourceMappingURL=hono.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hono.d.ts","sourceRoot":"","sources":["../../src/middlewares/hono.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAA;AAC7C,OAAO,KAAK,SAAS,MAAM,mBAAmB,CAAA;AAC9C,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD,cAAc,sBAAsB,CAAA;AAEpC,yBAAiB,IAAI,CAAC;IACpB;;;;;;;;;;;;;;;;OAgBG;IACH,SAAgB,MAAM,CAAC,KAAK,CAAC,OAAO,SAAS,SAAS,CAAC,OAAO,EAC5D,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GACvC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC,CAEhE;CACF;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,OAAO,CAAC,KAAK,CAAC,MAAM,SAAS,aAAa,CAAC,WAAW,EACpE,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,SAAS,CAAC,OAAO,EAAE,MAAM,OAAO,KAAK,GAAG,GAAG,OAAO,GAAG,KAAK,GACxE,iBAAiB,CAOnB"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import * as Mppx_core from '../server/Mppx.js';
|
|
2
|
+
import * as Mppx_internal from './internal/mppx.js';
|
|
3
|
+
export * from '../server/Methods.js';
|
|
4
|
+
export var Mppx;
|
|
5
|
+
(function (Mppx) {
|
|
6
|
+
/**
|
|
7
|
+
* Creates a Hono-aware payment handler where each intent
|
|
8
|
+
* returns a Hono `MiddlewareHandler`.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import { Hono } from 'hono'
|
|
13
|
+
* import { Mppx, tempo } from 'mppx/hono'
|
|
14
|
+
*
|
|
15
|
+
* const app = new Hono()
|
|
16
|
+
* const mppx = Mppx.create({ methods: [tempo()] })
|
|
17
|
+
*
|
|
18
|
+
* app.get('/premium', mppx.charge({ amount: '1' }), (c) =>
|
|
19
|
+
* c.json({ data: 'paid content' }),
|
|
20
|
+
* )
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
function create(config) {
|
|
24
|
+
return Mppx_internal.wrap(Mppx_core.create(config), payment);
|
|
25
|
+
}
|
|
26
|
+
Mppx.create = create;
|
|
27
|
+
})(Mppx || (Mppx = {}));
|
|
28
|
+
/**
|
|
29
|
+
* Hono middleware that gates a route behind a payment intent.
|
|
30
|
+
*
|
|
31
|
+
* Returns a 402 challenge if no valid credential is provided,
|
|
32
|
+
* otherwise attaches a `Payment-Receipt` header to the response.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```ts
|
|
36
|
+
* import { Hono } from 'hono'
|
|
37
|
+
* import { Mppx } from 'mppx/server'
|
|
38
|
+
* import { payment } from 'mppx/hono'
|
|
39
|
+
*
|
|
40
|
+
* const mppx = Mppx.create({ methods: [tempo()] })
|
|
41
|
+
*
|
|
42
|
+
* const app = new Hono()
|
|
43
|
+
* app.get('/premium', payment(mppx.charge, { amount: '1' }), (c) =>
|
|
44
|
+
* c.json({ data: 'paid content' }),
|
|
45
|
+
* )
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export function payment(intent, options) {
|
|
49
|
+
return async (c, next) => {
|
|
50
|
+
const result = await intent(options)(c.req.raw);
|
|
51
|
+
if (result.status === 402)
|
|
52
|
+
return result.challenge;
|
|
53
|
+
await next();
|
|
54
|
+
c.res = result.withReceipt(c.res);
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=hono.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hono.js","sourceRoot":"","sources":["../../src/middlewares/hono.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,SAAS,MAAM,mBAAmB,CAAA;AAC9C,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD,cAAc,sBAAsB,CAAA;AAEpC,MAAM,KAAW,IAAI,CAuBpB;AAvBD,WAAiB,IAAI;IACnB;;;;;;;;;;;;;;;;OAgBG;IACH,SAAgB,MAAM,CACpB,MAAwC;QAExC,OAAO,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAA;IAC9D,CAAC;IAJe,WAAM,SAIrB,CAAA;AACH,CAAC,EAvBgB,IAAI,KAAJ,IAAI,QAuBpB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,OAAO,CACrB,MAAc,EACd,OAAyE;IAEzE,OAAO,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;QACvB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC/C,IAAI,MAAM,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,MAAM,CAAC,SAAS,CAAA;QAClD,MAAM,IAAI,EAAE,CAAA;QACZ,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACnC,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type * as MethodIntent from '../../MethodIntent.js';
|
|
2
|
+
import type * as Mppx from '../../server/Mppx.js';
|
|
3
|
+
export type AnyIntentFn = Mppx.AnyIntentFn;
|
|
4
|
+
export type AnyServer = MethodIntent.AnyServer;
|
|
5
|
+
export type Wrap<mppx, handler> = {
|
|
6
|
+
[key in keyof mppx]: mppx[key] extends (options: infer options) => any ? (o: options) => handler : mppx[key];
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Wraps a payment handler so each intent returns a framework-specific
|
|
10
|
+
* handler instead of the raw intent response.
|
|
11
|
+
*
|
|
12
|
+
* @param mppx - The payment handler created by `Mppx.create`.
|
|
13
|
+
* @param wrapper - A function that adapts an intent function into a framework handler.
|
|
14
|
+
*/
|
|
15
|
+
export declare function wrap<mppx extends Mppx.Mppx<any, any>, handler>(mppx: mppx, wrapper: (intent: AnyIntentFn, options: any) => handler): Wrap<mppx, handler>;
|
|
16
|
+
//# sourceMappingURL=mppx.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mppx.d.ts","sourceRoot":"","sources":["../../../src/middlewares/internal/mppx.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,YAAY,MAAM,uBAAuB,CAAA;AAC1D,OAAO,KAAK,KAAK,IAAI,MAAM,sBAAsB,CAAA;AAEjD,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;AAC1C,MAAM,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAA;AAE9C,MAAM,MAAM,IAAI,CAAC,IAAI,EAAE,OAAO,IAAI;KAC/B,GAAG,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,OAAO,KAAK,GAAG,GAClE,CAAC,CAAC,EAAE,OAAO,KAAK,OAAO,GACvB,IAAI,CAAC,GAAG,CAAC;CACd,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,IAAI,CAAC,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,OAAO,EAC5D,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,KAAK,OAAO,GACtD,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAOrB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wraps a payment handler so each intent returns a framework-specific
|
|
3
|
+
* handler instead of the raw intent response.
|
|
4
|
+
*
|
|
5
|
+
* @param mppx - The payment handler created by `Mppx.create`.
|
|
6
|
+
* @param wrapper - A function that adapts an intent function into a framework handler.
|
|
7
|
+
*/
|
|
8
|
+
export function wrap(mppx, wrapper) {
|
|
9
|
+
const result = { ...mppx };
|
|
10
|
+
for (const mi of mppx.methods) {
|
|
11
|
+
const intentFn = mppx[mi.name];
|
|
12
|
+
result[mi.name] = (options) => wrapper(intentFn, options);
|
|
13
|
+
}
|
|
14
|
+
return result;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=mppx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mppx.js","sourceRoot":"","sources":["../../../src/middlewares/internal/mppx.ts"],"names":[],"mappings":"AAYA;;;;;;GAMG;AACH,MAAM,UAAU,IAAI,CAClB,IAAU,EACV,OAAuD;IAEvD,MAAM,MAAM,GAA4B,EAAE,GAAG,IAAI,EAAE,CAAA;IACnD,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,OAA4C,EAAE,CAAC;QACnE,MAAM,QAAQ,GAAI,IAAY,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;QACvC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAY,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAChE,CAAC;IACD,OAAO,MAAe,CAAA;AACxB,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import * as Mppx_core from '../server/Mppx.js';
|
|
2
|
+
import * as Mppx_internal from './internal/mppx.js';
|
|
3
|
+
export * from '../server/Methods.js';
|
|
4
|
+
type RouteHandler = (request: Request) => Promise<Response> | Response;
|
|
5
|
+
type NextjsHandler = (handler: RouteHandler) => RouteHandler;
|
|
6
|
+
export declare namespace Mppx {
|
|
7
|
+
/**
|
|
8
|
+
* Creates a Next.js-aware payment handler where each intent
|
|
9
|
+
* returns a wrapper that accepts a route handler.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* // app/api/premium/route.ts
|
|
14
|
+
* import { Mppx, tempo } from 'mppx/nextjs'
|
|
15
|
+
*
|
|
16
|
+
* const mppx = Mppx.create({ methods: [tempo()] })
|
|
17
|
+
*
|
|
18
|
+
* export const GET = mppx.charge({ amount: '1' })(() =>
|
|
19
|
+
* Response.json({ data: 'paid content' }),
|
|
20
|
+
* )
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
function create<const methods extends Mppx_core.Methods>(config: Mppx_core.create.Config<methods>): Mppx_internal.Wrap<Mppx_core.Mppx<methods>, NextjsHandler>;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Next.js route handler wrapper that gates a route behind a payment intent.
|
|
27
|
+
*
|
|
28
|
+
* Returns a 402 challenge if no valid credential is provided,
|
|
29
|
+
* otherwise attaches a `Payment-Receipt` header to the response.
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```ts
|
|
33
|
+
* // app/api/premium/route.ts
|
|
34
|
+
* import { Mppx } from 'mppx/server'
|
|
35
|
+
* import { payment } from 'mppx/nextjs'
|
|
36
|
+
*
|
|
37
|
+
* const mppx = Mppx.create({ methods: [tempo()] })
|
|
38
|
+
*
|
|
39
|
+
* export const GET = payment(mppx.charge, { amount: '1' }, () =>
|
|
40
|
+
* Response.json({ data: 'paid content' }),
|
|
41
|
+
* )
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export declare function payment<const intent extends Mppx_internal.AnyIntentFn>(intent: intent, options: intent extends (options: infer options) => any ? options : never, handler: RouteHandler): RouteHandler;
|
|
45
|
+
//# sourceMappingURL=nextjs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nextjs.d.ts","sourceRoot":"","sources":["../../src/middlewares/nextjs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,mBAAmB,CAAA;AAC9C,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD,cAAc,sBAAsB,CAAA;AAEpC,KAAK,YAAY,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAA;AAEtE,KAAK,aAAa,GAAG,CAAC,OAAO,EAAE,YAAY,KAAK,YAAY,CAAA;AAE5D,yBAAiB,IAAI,CAAC;IACpB;;;;;;;;;;;;;;;OAeG;IACH,SAAgB,MAAM,CAAC,KAAK,CAAC,OAAO,SAAS,SAAS,CAAC,OAAO,EAC5D,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GACvC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,CAI5D;CACF;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,OAAO,CAAC,KAAK,CAAC,MAAM,SAAS,aAAa,CAAC,WAAW,EACpE,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,SAAS,CAAC,OAAO,EAAE,MAAM,OAAO,KAAK,GAAG,GAAG,OAAO,GAAG,KAAK,EACzE,OAAO,EAAE,YAAY,GACpB,YAAY,CAOd"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import * as Mppx_core from '../server/Mppx.js';
|
|
2
|
+
import * as Mppx_internal from './internal/mppx.js';
|
|
3
|
+
export * from '../server/Methods.js';
|
|
4
|
+
export var Mppx;
|
|
5
|
+
(function (Mppx) {
|
|
6
|
+
/**
|
|
7
|
+
* Creates a Next.js-aware payment handler where each intent
|
|
8
|
+
* returns a wrapper that accepts a route handler.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* // app/api/premium/route.ts
|
|
13
|
+
* import { Mppx, tempo } from 'mppx/nextjs'
|
|
14
|
+
*
|
|
15
|
+
* const mppx = Mppx.create({ methods: [tempo()] })
|
|
16
|
+
*
|
|
17
|
+
* export const GET = mppx.charge({ amount: '1' })(() =>
|
|
18
|
+
* Response.json({ data: 'paid content' }),
|
|
19
|
+
* )
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
function create(config) {
|
|
23
|
+
return Mppx_internal.wrap(Mppx_core.create(config), (intent, options) => {
|
|
24
|
+
return (handler) => payment(intent, options, handler);
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
Mppx.create = create;
|
|
28
|
+
})(Mppx || (Mppx = {}));
|
|
29
|
+
/**
|
|
30
|
+
* Next.js route handler wrapper that gates a route behind a payment intent.
|
|
31
|
+
*
|
|
32
|
+
* Returns a 402 challenge if no valid credential is provided,
|
|
33
|
+
* otherwise attaches a `Payment-Receipt` header to the response.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```ts
|
|
37
|
+
* // app/api/premium/route.ts
|
|
38
|
+
* import { Mppx } from 'mppx/server'
|
|
39
|
+
* import { payment } from 'mppx/nextjs'
|
|
40
|
+
*
|
|
41
|
+
* const mppx = Mppx.create({ methods: [tempo()] })
|
|
42
|
+
*
|
|
43
|
+
* export const GET = payment(mppx.charge, { amount: '1' }, () =>
|
|
44
|
+
* Response.json({ data: 'paid content' }),
|
|
45
|
+
* )
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export function payment(intent, options, handler) {
|
|
49
|
+
return async (request) => {
|
|
50
|
+
const result = await intent(options)(request);
|
|
51
|
+
if (result.status === 402)
|
|
52
|
+
return result.challenge;
|
|
53
|
+
const response = await handler(request);
|
|
54
|
+
return result.withReceipt(response);
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=nextjs.js.map
|