mppx 0.4.8 → 0.4.9
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 +9 -3
- package/README.md +13 -13
- package/dist/BodyDigest.d.ts.map +1 -1
- package/dist/BodyDigest.js.map +1 -1
- package/dist/Challenge.d.ts.map +1 -1
- package/dist/Challenge.js.map +1 -1
- package/dist/Credential.d.ts.map +1 -1
- package/dist/Credential.js.map +1 -1
- package/dist/Errors.js +64 -67
- package/dist/Errors.js.map +1 -1
- package/dist/PaymentRequest.d.ts.map +1 -1
- package/dist/PaymentRequest.js.map +1 -1
- package/dist/Receipt.d.ts.map +1 -1
- package/dist/Receipt.js.map +1 -1
- package/dist/Store.d.ts +9 -0
- package/dist/Store.d.ts.map +1 -1
- package/dist/Store.js +17 -0
- package/dist/Store.js.map +1 -1
- package/dist/cli/account.d.ts.map +1 -1
- package/dist/cli/account.js +40 -5
- package/dist/cli/account.js.map +1 -1
- package/dist/cli/cli.d.ts.map +1 -1
- package/dist/cli/cli.js +2 -1
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/internal.d.ts.map +1 -1
- package/dist/cli/internal.js.map +1 -1
- package/dist/cli/plugins/stripe.d.ts.map +1 -1
- package/dist/cli/plugins/stripe.js.map +1 -1
- package/dist/cli/plugins/tempo.d.ts.map +1 -1
- package/dist/cli/plugins/tempo.js +2 -1
- package/dist/cli/plugins/tempo.js.map +1 -1
- package/dist/cli/utils.d.ts.map +1 -1
- package/dist/cli/utils.js.map +1 -1
- package/dist/client/internal/Fetch.d.ts +2 -0
- package/dist/client/internal/Fetch.d.ts.map +1 -1
- package/dist/client/internal/Fetch.js +1 -1
- package/dist/client/internal/Fetch.js.map +1 -1
- package/dist/internal/types.d.ts.map +1 -1
- package/dist/mcp-sdk/client/McpClient.d.ts.map +1 -1
- package/dist/mcp-sdk/client/McpClient.js +1 -1
- package/dist/mcp-sdk/client/McpClient.js.map +1 -1
- package/dist/mcp-sdk/server/Transport.d.ts.map +1 -1
- package/dist/mcp-sdk/server/Transport.js.map +1 -1
- package/dist/middlewares/elysia.d.ts.map +1 -1
- package/dist/middlewares/elysia.js.map +1 -1
- package/dist/middlewares/express.d.ts.map +1 -1
- package/dist/middlewares/express.js +5 -2
- package/dist/middlewares/express.js.map +1 -1
- package/dist/middlewares/hono.d.ts.map +1 -1
- package/dist/middlewares/hono.js.map +1 -1
- package/dist/proxy/Proxy.d.ts.map +1 -1
- package/dist/proxy/Proxy.js.map +1 -1
- package/dist/proxy/Service.js +1 -1
- package/dist/proxy/Service.js.map +1 -1
- package/dist/server/Mppx.d.ts.map +1 -1
- package/dist/server/Mppx.js +35 -17
- package/dist/server/Mppx.js.map +1 -1
- package/dist/server/Request.d.ts.map +1 -1
- package/dist/server/Request.js.map +1 -1
- package/dist/stripe/Methods.d.ts.map +1 -1
- package/dist/stripe/Methods.js.map +1 -1
- package/dist/tempo/Methods.d.ts.map +1 -1
- package/dist/tempo/Methods.js.map +1 -1
- package/dist/tempo/client/ChannelOps.d.ts.map +1 -1
- package/dist/tempo/client/ChannelOps.js.map +1 -1
- package/dist/tempo/client/Charge.d.ts.map +1 -1
- package/dist/tempo/client/Charge.js.map +1 -1
- package/dist/tempo/client/Session.d.ts.map +1 -1
- package/dist/tempo/client/Session.js.map +1 -1
- package/dist/tempo/client/SessionManager.d.ts.map +1 -1
- package/dist/tempo/client/SessionManager.js +1 -1
- package/dist/tempo/client/SessionManager.js.map +1 -1
- package/dist/tempo/internal/auto-swap.d.ts.map +1 -1
- package/dist/tempo/internal/auto-swap.js +1 -1
- package/dist/tempo/internal/auto-swap.js.map +1 -1
- package/dist/tempo/internal/fee-payer.d.ts.map +1 -1
- package/dist/tempo/internal/fee-payer.js +1 -1
- package/dist/tempo/internal/fee-payer.js.map +1 -1
- package/dist/tempo/server/Charge.d.ts.map +1 -1
- package/dist/tempo/server/Charge.js +1 -1
- package/dist/tempo/server/Charge.js.map +1 -1
- package/dist/tempo/server/Session.d.ts.map +1 -1
- package/dist/tempo/server/Session.js.map +1 -1
- package/dist/tempo/session/Chain.d.ts.map +1 -1
- package/dist/tempo/session/Chain.js.map +1 -1
- package/dist/tempo/session/ChannelStore.d.ts.map +1 -1
- package/dist/tempo/session/ChannelStore.js.map +1 -1
- package/dist/tempo/session/Receipt.d.ts.map +1 -1
- package/dist/tempo/session/Receipt.js.map +1 -1
- package/dist/tempo/session/Sse.d.ts.map +1 -1
- package/dist/tempo/session/Sse.js.map +1 -1
- package/dist/tempo/session/Voucher.d.ts.map +1 -1
- package/dist/tempo/session/Voucher.js.map +1 -1
- package/dist/viem/Client.d.ts.map +1 -1
- package/dist/viem/Client.js.map +1 -1
- package/package.json +1 -1
- package/src/BodyDigest.ts +1 -0
- package/src/Challenge.test-d.ts +1 -0
- package/src/Challenge.ts +1 -0
- package/src/Credential.ts +1 -0
- package/src/Errors.test.ts +27 -39
- package/src/Expires.test.ts +1 -0
- package/src/PaymentRequest.ts +1 -0
- package/src/Receipt.ts +1 -0
- package/src/Store.test-d.ts +1 -0
- package/src/Store.test.ts +56 -6
- package/src/Store.ts +25 -0
- package/src/cli/account.ts +65 -30
- package/src/cli/cli.test.ts +3 -1
- package/src/cli/cli.ts +4 -1
- package/src/cli/config.test.ts +1 -0
- package/src/cli/internal.ts +1 -0
- package/src/cli/plugins/stripe.ts +1 -0
- package/src/cli/plugins/tempo.ts +4 -1
- package/src/cli/utils.ts +1 -0
- package/src/client/Mppx.test-d.ts +1 -0
- package/src/client/internal/Fetch.browser.test.ts +1 -0
- package/src/client/internal/Fetch.test-d.ts +1 -0
- package/src/client/internal/Fetch.test.ts +1 -0
- package/src/client/internal/Fetch.ts +1 -1
- package/src/internal/constantTimeEqual.test.ts +1 -0
- package/src/internal/types.ts +1 -3
- package/src/mcp-sdk/client/McpClient.test-d.ts +1 -0
- package/src/mcp-sdk/client/McpClient.test.ts +1 -0
- package/src/mcp-sdk/client/McpClient.ts +2 -0
- package/src/mcp-sdk/server/Transport.test.ts +1 -0
- package/src/mcp-sdk/server/Transport.ts +1 -0
- package/src/middlewares/elysia.test.ts +1 -0
- package/src/middlewares/elysia.ts +1 -0
- package/src/middlewares/express.test.ts +62 -2
- package/src/middlewares/express.ts +6 -2
- package/src/middlewares/hono.ts +1 -0
- package/src/middlewares/internal/mppx.test.ts +1 -0
- package/src/middlewares/nextjs.test.ts +1 -0
- package/src/proxy/Proxy.test.ts +1 -0
- package/src/proxy/Proxy.ts +2 -0
- package/src/proxy/Service.test.ts +1 -0
- package/src/proxy/Service.ts +8 -2
- package/src/proxy/internal/Headers.test.ts +1 -0
- package/src/proxy/services/openai.test.ts +1 -0
- package/src/server/Mppx.test.ts +192 -0
- package/src/server/Mppx.ts +38 -19
- package/src/server/Request.test.ts +1 -0
- package/src/server/Request.ts +1 -0
- package/src/server/Response.test.ts +1 -0
- package/src/server/Transport.test.ts +1 -0
- package/src/stripe/Methods.ts +1 -0
- package/src/stripe/client/Charge.test.ts +1 -0
- package/src/stripe/server/Charge.test.ts +1 -0
- package/src/tempo/Attribution.test.ts +1 -0
- package/src/tempo/Methods.ts +1 -0
- package/src/tempo/client/ChannelOps.test.ts +1 -0
- package/src/tempo/client/ChannelOps.ts +1 -0
- package/src/tempo/client/Charge.ts +1 -0
- package/src/tempo/client/Session.test.ts +1 -0
- package/src/tempo/client/Session.ts +1 -0
- package/src/tempo/client/SessionManager.test.ts +28 -0
- package/src/tempo/client/SessionManager.ts +2 -1
- package/src/tempo/internal/auto-swap.test.ts +1 -0
- package/src/tempo/internal/auto-swap.ts +1 -0
- package/src/tempo/internal/defaults.test.ts +1 -0
- package/src/tempo/internal/fee-payer.test.ts +1 -0
- package/src/tempo/internal/fee-payer.ts +1 -0
- package/src/tempo/server/Charge.test.ts +1 -0
- package/src/tempo/server/Charge.ts +1 -0
- package/src/tempo/server/Session.test.ts +1 -0
- package/src/tempo/server/Session.ts +1 -0
- package/src/tempo/server/Sse.test.ts +1 -0
- package/src/tempo/server/internal/transport.test.ts +1 -0
- package/src/tempo/session/Chain.test.ts +1 -0
- package/src/tempo/session/Chain.ts +1 -0
- package/src/tempo/session/Channel.test.ts +1 -0
- package/src/tempo/session/ChannelStore.test.ts +1 -0
- package/src/tempo/session/ChannelStore.ts +1 -0
- package/src/tempo/session/Receipt.test.ts +1 -0
- package/src/tempo/session/Receipt.ts +1 -0
- package/src/tempo/session/Sse.test.ts +1 -0
- package/src/tempo/session/Sse.ts +1 -0
- package/src/tempo/session/Voucher.test.ts +1 -0
- package/src/tempo/session/Voucher.ts +1 -0
- package/src/viem/Account.test.ts +1 -0
- package/src/viem/Client.test.ts +1 -0
- package/src/viem/Client.ts +1 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Hex } from 'viem'
|
|
2
2
|
import { describe, expect, test, vi } from 'vitest'
|
|
3
|
+
|
|
3
4
|
import * as Challenge from '../../Challenge.js'
|
|
4
5
|
import { formatNeedVoucherEvent, parseEvent } from '../session/Sse.js'
|
|
5
6
|
import type { NeedVoucherEvent, SessionReceipt } from '../session/Types.js'
|
|
@@ -207,6 +208,33 @@ describe('Session', () => {
|
|
|
207
208
|
})
|
|
208
209
|
})
|
|
209
210
|
|
|
211
|
+
describe('.sse() headers normalization', () => {
|
|
212
|
+
test('preserves Headers instance properties when passed as headers', async () => {
|
|
213
|
+
const mockFetch = vi.fn().mockResolvedValue(makeSseResponse(['event: message\ndata: ok\n\n']))
|
|
214
|
+
|
|
215
|
+
const s = sessionManager({
|
|
216
|
+
account: '0x0000000000000000000000000000000000000001',
|
|
217
|
+
fetch: mockFetch as typeof globalThis.fetch,
|
|
218
|
+
})
|
|
219
|
+
|
|
220
|
+
const iterable = await s.sse('https://api.example.com/stream', {
|
|
221
|
+
headers: new Headers({ 'Content-Type': 'application/json', 'X-Custom': 'value' }),
|
|
222
|
+
})
|
|
223
|
+
|
|
224
|
+
for await (const _ of iterable) {
|
|
225
|
+
// drain
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
const calledHeaders = (mockFetch.mock.calls[0]![1] as RequestInit).headers as Record<
|
|
229
|
+
string,
|
|
230
|
+
string
|
|
231
|
+
>
|
|
232
|
+
expect(calledHeaders['content-type']).toBe('application/json')
|
|
233
|
+
expect(calledHeaders['x-custom']).toBe('value')
|
|
234
|
+
expect(calledHeaders.Accept).toBe('text/event-stream')
|
|
235
|
+
})
|
|
236
|
+
})
|
|
237
|
+
|
|
210
238
|
describe('.close()', () => {
|
|
211
239
|
test('is no-op when not opened', async () => {
|
|
212
240
|
const mockFetch = vi.fn()
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Hex } from 'ox'
|
|
2
2
|
import type { Address } from 'viem'
|
|
3
|
+
|
|
3
4
|
import type * as Challenge from '../../Challenge.js'
|
|
4
5
|
import * as Fetch from '../../client/internal/Fetch.js'
|
|
5
6
|
import type * as Account from '../../viem/Account.js'
|
|
@@ -157,7 +158,7 @@ export function sessionManager(parameters: sessionManager.Parameters): SessionMa
|
|
|
157
158
|
const sseInit = {
|
|
158
159
|
...fetchInit,
|
|
159
160
|
headers: {
|
|
160
|
-
...fetchInit.headers,
|
|
161
|
+
...Fetch.normalizeHeaders(fetchInit.headers),
|
|
161
162
|
Accept: 'text/event-stream',
|
|
162
163
|
},
|
|
163
164
|
...(signal ? { signal } : {}),
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { encodeFunctionData } from 'viem'
|
|
2
2
|
import { Abis, Addresses } from 'viem/tempo'
|
|
3
3
|
import { describe, expect, test } from 'vitest'
|
|
4
|
+
|
|
4
5
|
import { callScopes, FeePayerValidationError, validateCalls } from './fee-payer.js'
|
|
5
6
|
import * as Selectors from './selectors.js'
|
|
6
7
|
|
|
@@ -2,6 +2,7 @@ import type { TempoAddress } from 'ox/tempo'
|
|
|
2
2
|
import { TxEnvelopeTempo } from 'ox/tempo'
|
|
3
3
|
import { decodeFunctionData } from 'viem'
|
|
4
4
|
import { Abis, Addresses } from 'viem/tempo'
|
|
5
|
+
|
|
5
6
|
import * as TempoAddress_internal from './address.js'
|
|
6
7
|
import * as Selectors from './selectors.js'
|
|
7
8
|
|
|
@@ -11,6 +11,7 @@ import { beforeAll, describe, expect, test } from 'vitest'
|
|
|
11
11
|
import * as Http from '~test/Http.js'
|
|
12
12
|
import { closeChannelOnChain, deployEscrow, openChannel } from '~test/tempo/session.js'
|
|
13
13
|
import { accounts, asset, chain, client, fundAccount } from '~test/tempo/viem.js'
|
|
14
|
+
|
|
14
15
|
import * as Store from '../../Store.js'
|
|
15
16
|
import * as Attribution from '../Attribution.js'
|
|
16
17
|
import { signVoucher } from '../session/Voucher.js'
|
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
} from 'viem/actions'
|
|
10
10
|
import { tempo as tempo_chain } from 'viem/chains'
|
|
11
11
|
import { Abis, Transaction } from 'viem/tempo'
|
|
12
|
+
|
|
12
13
|
import { PaymentExpiredError } from '../../Errors.js'
|
|
13
14
|
import type { LooseOmit } from '../../internal/types.js'
|
|
14
15
|
import * as Method from '../../Method.js'
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Address, Hex } from 'viem'
|
|
2
2
|
import { describe, expect, test } from 'vitest'
|
|
3
|
+
|
|
3
4
|
import { chainId, escrowContract as escrowContractDefaults } from '../internal/defaults.js'
|
|
4
5
|
import type * as ChannelStore from '../session/ChannelStore.js'
|
|
5
6
|
import { serve, toResponse } from '../session/Sse.js'
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Challenge, Credential } from 'mppx'
|
|
2
2
|
import type { Address, Hex } from 'viem'
|
|
3
3
|
import { describe, expect, test } from 'vitest'
|
|
4
|
+
|
|
4
5
|
import * as Store from '../../../Store.js'
|
|
5
6
|
import { chainId, escrowContract as escrowContractDefaults } from '../../internal/defaults.js'
|
|
6
7
|
import * as ChannelStore from '../../session/ChannelStore.js'
|
|
@@ -19,6 +19,7 @@ import {
|
|
|
19
19
|
writeContract,
|
|
20
20
|
} from 'viem/actions'
|
|
21
21
|
import { Transaction } from 'viem/tempo'
|
|
22
|
+
|
|
22
23
|
import { BadRequestError, ChannelClosedError, VerificationFailedError } from '../../Errors.js'
|
|
23
24
|
import * as TempoAddress from '../internal/address.js'
|
|
24
25
|
import * as defaults from '../internal/defaults.js'
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Address, Hex } from 'viem'
|
|
2
2
|
import { describe, expect, test } from 'vitest'
|
|
3
|
+
|
|
3
4
|
import * as Store from '../../Store.js'
|
|
4
5
|
import { chainId, escrowContract as escrowContractDefaults } from '../internal/defaults.js'
|
|
5
6
|
import * as ChannelStore from './ChannelStore.js'
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Address, Hex } from 'viem'
|
|
2
2
|
import { describe, expect, test } from 'vitest'
|
|
3
|
+
|
|
3
4
|
import { chainId, escrowContract as escrowContractDefaults } from '../internal/defaults.js'
|
|
4
5
|
import type * as ChannelStore from './ChannelStore.js'
|
|
5
6
|
import { formatNeedVoucherEvent, formatReceiptEvent, parseEvent, serve } from './Sse.js'
|
package/src/tempo/session/Sse.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { createClient, http } from 'viem'
|
|
2
2
|
import { privateKeyToAccount } from 'viem/accounts'
|
|
3
3
|
import { describe, expect, test } from 'vitest'
|
|
4
|
+
|
|
4
5
|
import { parseVoucherFromPayload, signVoucher, verifyVoucher } from './Voucher.js'
|
|
5
6
|
|
|
6
7
|
const account = privateKeyToAccount(
|
|
@@ -3,6 +3,7 @@ import { SignatureEnvelope } from 'ox/tempo'
|
|
|
3
3
|
import type { Account, Client, Hex } from 'viem'
|
|
4
4
|
import { recoverTypedDataAddress } from 'viem'
|
|
5
5
|
import { signTypedData } from 'viem/actions'
|
|
6
|
+
|
|
6
7
|
import * as TempoAddress from '../internal/address.js'
|
|
7
8
|
import type { SignedVoucher, Voucher } from './Types.js'
|
|
8
9
|
|
package/src/viem/Account.test.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { createClient, http } from 'viem'
|
|
|
2
2
|
import { privateKeyToAccount } from 'viem/accounts'
|
|
3
3
|
import { mainnet } from 'viem/chains'
|
|
4
4
|
import { describe, expect, test } from 'vitest'
|
|
5
|
+
|
|
5
6
|
import * as Account from './Account.js'
|
|
6
7
|
|
|
7
8
|
const account = privateKeyToAccount(
|
package/src/viem/Client.test.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { signTransaction } from 'viem/actions'
|
|
|
4
4
|
import { tempoLocalnet } from 'viem/chains'
|
|
5
5
|
import { Transaction } from 'viem/tempo'
|
|
6
6
|
import { describe, expect, test } from 'vitest'
|
|
7
|
+
|
|
7
8
|
import * as Client from './Client.js'
|
|
8
9
|
|
|
9
10
|
const rpcUrl = { 42: 'https://rpc.example.com', 99: 'https://rpc2.example.com' } as const
|