mppx 0.3.15 → 0.3.16

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.
Files changed (42) hide show
  1. package/README.md +1 -0
  2. package/dist/Challenge.d.ts +38 -0
  3. package/dist/Challenge.d.ts.map +1 -1
  4. package/dist/Challenge.js +62 -0
  5. package/dist/Challenge.js.map +1 -1
  6. package/dist/client/internal/Fetch.d.ts.map +1 -1
  7. package/dist/client/internal/Fetch.js +16 -4
  8. package/dist/client/internal/Fetch.js.map +1 -1
  9. package/dist/middlewares/internal/mppx.d.ts +6 -1
  10. package/dist/middlewares/internal/mppx.d.ts.map +1 -1
  11. package/dist/middlewares/internal/mppx.js +4 -0
  12. package/dist/middlewares/internal/mppx.js.map +1 -1
  13. package/dist/server/Mppx.d.ts +79 -1
  14. package/dist/server/Mppx.d.ts.map +1 -1
  15. package/dist/server/Mppx.js +135 -7
  16. package/dist/server/Mppx.js.map +1 -1
  17. package/dist/tempo/client/ChannelOps.d.ts.map +1 -1
  18. package/dist/tempo/client/ChannelOps.js +1 -0
  19. package/dist/tempo/client/ChannelOps.js.map +1 -1
  20. package/dist/tempo/server/Charge.d.ts.map +1 -1
  21. package/dist/tempo/server/Charge.js +4 -4
  22. package/dist/tempo/server/Charge.js.map +1 -1
  23. package/dist/tempo/session/Chain.d.ts.map +1 -1
  24. package/dist/tempo/session/Chain.js +9 -6
  25. package/dist/tempo/session/Chain.js.map +1 -1
  26. package/package.json +1 -1
  27. package/src/Challenge.ts +72 -0
  28. package/src/client/internal/Fetch.test.ts +1 -1
  29. package/src/client/internal/Fetch.ts +18 -6
  30. package/src/middlewares/internal/mppx.test.ts +152 -0
  31. package/src/middlewares/internal/mppx.ts +22 -3
  32. package/src/server/Mppx.test-d.ts +94 -299
  33. package/src/server/Mppx.test.ts +650 -0
  34. package/src/server/Mppx.ts +213 -9
  35. package/src/tempo/client/ChannelOps.ts +1 -0
  36. package/src/tempo/server/Charge.ts +4 -3
  37. package/src/tempo/session/Chain.ts +8 -5
  38. package/dist/tempo/internal/simulate.d.ts +0 -21
  39. package/dist/tempo/internal/simulate.d.ts.map +0 -1
  40. package/dist/tempo/internal/simulate.js +0 -31
  41. package/dist/tempo/internal/simulate.js.map +0 -1
  42. package/src/tempo/internal/simulate.ts +0 -49
package/README.md CHANGED
@@ -59,6 +59,7 @@ const res = await fetch('https://mpp.dev/api/ping/paid')
59
59
  | Example | Description |
60
60
  |---------|-------------|
61
61
  | [charge](./examples/charge/) | Payment-gated photo generation API |
62
+ | [charge-wagmi](./examples/charge-wagmi/) | Payment-gated charge with Wagmi + React |
62
63
  | [session/multi-fetch](./examples/session/multi-fetch/) | Multiple paid requests over a single payment channel |
63
64
  | [session/sse](./examples/session/sse/) | Pay-per-token LLM streaming with SSE |
64
65
  | [stripe](./examples/stripe/) | Stripe SPT charge with automatic client |
@@ -253,6 +253,44 @@ export declare function fromHeaders<const methods extends readonly Method.Method
253
253
  * ```
254
254
  */
255
255
  export declare function fromResponse<const methods extends readonly Method.Method[] | undefined = undefined>(response: Response, options?: from.Options<methods>): from.ReturnType<from.Parameters, methods>;
256
+ /**
257
+ * Extracts all Payment challenges from a Response with potentially merged
258
+ * `WWW-Authenticate` headers (multiple challenges in a single header value).
259
+ *
260
+ * @param response - The HTTP response (must be 402 status).
261
+ * @param options - Optional settings to narrow the challenge type.
262
+ * @returns An array of deserialized challenges.
263
+ *
264
+ * @example
265
+ * ```ts
266
+ * import { Challenge } from 'mppx'
267
+ *
268
+ * const response = await fetch('/resource')
269
+ * if (response.status === 402) {
270
+ * const challenges = Challenge.fromResponseList(response)
271
+ * // challenges[0] => tempo/charge, challenges[1] => stripe/charge
272
+ * }
273
+ * ```
274
+ */
275
+ export declare function fromResponseList<const methods extends readonly Method.Method[] | undefined = undefined>(response: Response, options?: from.Options<methods>): from.ReturnType<from.Parameters, methods>[];
276
+ /**
277
+ * Extracts all Payment challenges from a Headers object with potentially
278
+ * merged `WWW-Authenticate` values.
279
+ *
280
+ * @param headers - The HTTP headers.
281
+ * @param options - Optional settings to narrow the challenge type.
282
+ * @returns An array of deserialized challenges.
283
+ */
284
+ export declare function fromHeadersList<const methods extends readonly Method.Method[] | undefined = undefined>(headers: Headers, options?: from.Options<methods>): from.ReturnType<from.Parameters, methods>[];
285
+ /**
286
+ * Deserializes a `WWW-Authenticate` header value that may contain multiple
287
+ * Payment challenges (comma-separated per RFC 9110 §11.6.1).
288
+ *
289
+ * @param value - The raw WWW-Authenticate header value.
290
+ * @param options - Optional settings to narrow the challenge type.
291
+ * @returns An array of deserialized challenges.
292
+ */
293
+ export declare function deserializeList<const methods extends readonly Method.Method[] | undefined = undefined>(value: string, options?: from.Options<methods>): from.ReturnType<from.Parameters, methods>[];
256
294
  /**
257
295
  * Verifies that a challenge ID matches the expected HMAC for the given parameters.
258
296
  *
@@ -1 +1 @@
1
- {"version":3,"file":"Challenge.d.ts","sourceRoot":"","sources":["../src/Challenge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Challenge.d.ts","sourceRoot":"","sources":["../src/Challenge.ts"],"names":[],"mappings":"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"}
package/dist/Challenge.js CHANGED
@@ -349,6 +349,68 @@ export function fromResponse(response, options) {
349
349
  throw new Error('Response status is not 402.');
350
350
  return fromHeaders(response.headers, options);
351
351
  }
352
+ /**
353
+ * Extracts all Payment challenges from a Response with potentially merged
354
+ * `WWW-Authenticate` headers (multiple challenges in a single header value).
355
+ *
356
+ * @param response - The HTTP response (must be 402 status).
357
+ * @param options - Optional settings to narrow the challenge type.
358
+ * @returns An array of deserialized challenges.
359
+ *
360
+ * @example
361
+ * ```ts
362
+ * import { Challenge } from 'mppx'
363
+ *
364
+ * const response = await fetch('/resource')
365
+ * if (response.status === 402) {
366
+ * const challenges = Challenge.fromResponseList(response)
367
+ * // challenges[0] => tempo/charge, challenges[1] => stripe/charge
368
+ * }
369
+ * ```
370
+ */
371
+ export function fromResponseList(response, options) {
372
+ if (response.status !== 402)
373
+ throw new Error('Response status is not 402.');
374
+ return fromHeadersList(response.headers, options);
375
+ }
376
+ /**
377
+ * Extracts all Payment challenges from a Headers object with potentially
378
+ * merged `WWW-Authenticate` values.
379
+ *
380
+ * @param headers - The HTTP headers.
381
+ * @param options - Optional settings to narrow the challenge type.
382
+ * @returns An array of deserialized challenges.
383
+ */
384
+ export function fromHeadersList(headers, options) {
385
+ const header = headers.get('WWW-Authenticate');
386
+ if (!header)
387
+ throw new Error('Missing WWW-Authenticate header.');
388
+ return deserializeList(header, options);
389
+ }
390
+ /**
391
+ * Deserializes a `WWW-Authenticate` header value that may contain multiple
392
+ * Payment challenges (comma-separated per RFC 9110 §11.6.1).
393
+ *
394
+ * @param value - The raw WWW-Authenticate header value.
395
+ * @param options - Optional settings to narrow the challenge type.
396
+ * @returns An array of deserialized challenges.
397
+ */
398
+ export function deserializeList(value, options) {
399
+ // Find the start index of each `Payment ` scheme prefix.
400
+ const starts = [];
401
+ for (const match of value.matchAll(/Payment\s+/gi)) {
402
+ starts.push(match.index);
403
+ }
404
+ if (starts.length === 0)
405
+ throw new Error('No Payment schemes found.');
406
+ // Slice each scheme from its `Payment ` prefix up to the next scheme boundary,
407
+ // trimming any trailing comma/whitespace between schemes.
408
+ return starts.map((start, i) => {
409
+ const end = i + 1 < starts.length ? starts[i + 1] : value.length;
410
+ const chunk = value.slice(start, end).replace(/,\s*$/, '');
411
+ return deserialize(chunk, options);
412
+ });
413
+ }
352
414
  /**
353
415
  * Verifies that a challenge ID matches the expected HMAC for the given parameters.
354
416
  *
@@ -1 +1 @@
1
- {"version":3,"file":"Challenge.js","sourceRoot":"","sources":["../src/Challenge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Challenge.js","sourceRoot":"","sources":["../src/Challenge.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Fetch.d.ts","sourceRoot":"","sources":["../../../src/client/internal/Fetch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,oBAAoB,CAAA;AAC/C,OAAO,KAAK,KAAK,MAAM,MAAM,iBAAiB,CAAA;AAC9C,OAAO,KAAK,KAAK,CAAC,MAAM,cAAc,CAAA;AAatC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,IAAI,CAAC,KAAK,CAAC,OAAO,SAAS,SAAS,MAAM,CAAC,SAAS,EAAE,EACpE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAC3B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CA2CrB;AAED,6EAA6E;AAC7E,KAAK,aAAa,CAAC,OAAO,SAAS,SAAS,MAAM,CAAC,SAAS,EAAE,IAAI;KAC/D,CAAC,IAAI,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,MAAM,GAAG,GACtE,GAAG,SAAS,CAAC,CAAC,WAAW,GACvB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GACZ,SAAS,GACX,SAAS;CACd,CAAC,MAAM,CAAC,CAAA;AAET,MAAM,CAAC,OAAO,WAAW,IAAI,CAAC;IAC5B,KAAK,MAAM,CAAC,OAAO,SAAS,SAAS,MAAM,CAAC,SAAS,EAAE,GAAG,SAAS,MAAM,CAAC,SAAS,EAAE,IAAI;QACvF,qEAAqE;QACrE,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;QAC/B,+BAA+B;QAC/B,OAAO,EAAE,OAAO,CAAA;QAChB,2EAA2E;QAC3E,WAAW,CAAC,EACR,CAAC,CACC,SAAS,EAAE,SAAS,CAAC,SAAS,EAC9B,OAAO,EAAE;YACP,gBAAgB,EAAE,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;SACxE,KACE,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,GACjC,SAAS,CAAA;KACd,CAAA;IAED,KAAK,KAAK,CAAC,OAAO,SAAS,SAAS,MAAM,CAAC,SAAS,EAAE,GAAG,SAAS,MAAM,CAAC,SAAS,EAAE,IAAI,CACtF,KAAK,EAAE,WAAW,GAAG,GAAG,EACxB,IAAI,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,KACxB,OAAO,CAAC,QAAQ,CAAC,CAAA;IAEtB,KAAK,WAAW,CAAC,OAAO,SAAS,SAAS,MAAM,CAAC,SAAS,EAAE,GAAG,SAAS,MAAM,CAAC,SAAS,EAAE,IACxF,UAAU,CAAC,WAAW,GAAG;QACvB,+DAA+D;QAC/D,OAAO,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAA;KACjC,CAAA;CACJ;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,QAAQ,CAAC,KAAK,CAAC,OAAO,SAAS,SAAS,MAAM,CAAC,SAAS,EAAE,EACxE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,GAC/B,IAAI,CASN;AAED,MAAM,CAAC,OAAO,WAAW,QAAQ,CAAC;IAChC,KAAK,MAAM,CAAC,OAAO,SAAS,SAAS,MAAM,CAAC,SAAS,EAAE,GAAG,SAAS,MAAM,CAAC,SAAS,EAAE,IACnF,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;CACvB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,OAAO,IAAI,IAAI,CAO9B"}
1
+ {"version":3,"file":"Fetch.d.ts","sourceRoot":"","sources":["../../../src/client/internal/Fetch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,oBAAoB,CAAA;AAC/C,OAAO,KAAK,KAAK,MAAM,MAAM,iBAAiB,CAAA;AAC9C,OAAO,KAAK,KAAK,CAAC,MAAM,cAAc,CAAA;AAatC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,IAAI,CAAC,KAAK,CAAC,OAAO,SAAS,SAAS,MAAM,CAAC,SAAS,EAAE,EACpE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAC3B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAuDrB;AAED,6EAA6E;AAC7E,KAAK,aAAa,CAAC,OAAO,SAAS,SAAS,MAAM,CAAC,SAAS,EAAE,IAAI;KAC/D,CAAC,IAAI,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,MAAM,GAAG,GACtE,GAAG,SAAS,CAAC,CAAC,WAAW,GACvB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GACZ,SAAS,GACX,SAAS;CACd,CAAC,MAAM,CAAC,CAAA;AAET,MAAM,CAAC,OAAO,WAAW,IAAI,CAAC;IAC5B,KAAK,MAAM,CAAC,OAAO,SAAS,SAAS,MAAM,CAAC,SAAS,EAAE,GAAG,SAAS,MAAM,CAAC,SAAS,EAAE,IAAI;QACvF,qEAAqE;QACrE,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;QAC/B,+BAA+B;QAC/B,OAAO,EAAE,OAAO,CAAA;QAChB,2EAA2E;QAC3E,WAAW,CAAC,EACR,CAAC,CACC,SAAS,EAAE,SAAS,CAAC,SAAS,EAC9B,OAAO,EAAE;YACP,gBAAgB,EAAE,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;SACxE,KACE,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,GACjC,SAAS,CAAA;KACd,CAAA;IAED,KAAK,KAAK,CAAC,OAAO,SAAS,SAAS,MAAM,CAAC,SAAS,EAAE,GAAG,SAAS,MAAM,CAAC,SAAS,EAAE,IAAI,CACtF,KAAK,EAAE,WAAW,GAAG,GAAG,EACxB,IAAI,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,KACxB,OAAO,CAAC,QAAQ,CAAC,CAAA;IAEtB,KAAK,WAAW,CAAC,OAAO,SAAS,SAAS,MAAM,CAAC,SAAS,EAAE,GAAG,SAAS,MAAM,CAAC,SAAS,EAAE,IACxF,UAAU,CAAC,WAAW,GAAG;QACvB,+DAA+D;QAC/D,OAAO,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAA;KACjC,CAAA;CACJ;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,QAAQ,CAAC,KAAK,CAAC,OAAO,SAAS,SAAS,MAAM,CAAC,SAAS,EAAE,EACxE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,GAC/B,IAAI,CASN;AAED,MAAM,CAAC,OAAO,WAAW,QAAQ,CAAC;IAChC,KAAK,MAAM,CAAC,OAAO,SAAS,SAAS,MAAM,CAAC,SAAS,EAAE,GAAG,SAAS,MAAM,CAAC,SAAS,EAAE,IACnF,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;CACvB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,OAAO,IAAI,IAAI,CAO9B"}
@@ -38,10 +38,22 @@ export function from(config) {
38
38
  // Only extract context for payment handling after confirming 402.
39
39
  const context = init?.context;
40
40
  const { context: _, ...fetchInit } = (init ?? {});
41
- const challenge = Challenge.fromResponse(response);
42
- const mi = methods.find((m) => m.name === challenge.method && m.intent === challenge.intent);
43
- if (!mi)
44
- throw new Error(`No method found for "${challenge.method}.${challenge.intent}". Available: ${methods.map((m) => `${m.name}.${m.intent}`).join(', ')}`);
41
+ // Parse all challenges from the response (supports merged WWW-Authenticate headers).
42
+ // Match in client preference order: iterate the client's methods array and pick the
43
+ // first method that has a matching challenge, so the client controls priority.
44
+ const challenges = Challenge.fromResponseList(response);
45
+ let challenge;
46
+ let mi;
47
+ for (const m of methods) {
48
+ const match = challenges.find((c) => c.method === m.name && c.intent === m.intent);
49
+ if (match) {
50
+ challenge = match;
51
+ mi = m;
52
+ break;
53
+ }
54
+ }
55
+ if (!challenge || !mi)
56
+ throw new Error(`No method found for challenges: ${challenges.map((c) => `${c.method}.${c.intent}`).join(', ')}. Available: ${methods.map((m) => `${m.name}.${m.intent}`).join(', ')}`);
45
57
  const onChallengeCredential = onChallenge
46
58
  ? await onChallenge(challenge, {
47
59
  createCredential: async (overrideContext) => resolveCredential(challenge, mi, overrideContext ?? context),
@@ -1 +1 @@
1
- {"version":3,"file":"Fetch.js","sourceRoot":"","sources":["../../../src/client/internal/Fetch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,oBAAoB,CAAA;AAI/C,qFAAqF;AACrF,sFAAsF;AACtF,gEAAgE;AAChE,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;AAM3D,IAAI,aAAkD,CAAA;AAEtD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,IAAI,CAClB,MAA4B;IAE5B,MAAM,EAAE,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAAA;IACjE,oFAAoF;IACpF,kEAAkE;IAClE,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;IAEpC,MAAM,YAAY,GAAG,KAAK,EAAE,KAAwB,EAAE,IAAgC,EAAE,EAAE;QACxF,iFAAiF;QACjF,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QAE7C,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,QAAQ,CAAA;QAE5C,kEAAkE;QAClE,MAAM,OAAO,GAAI,IAA4C,EAAE,OAAO,CAAA;QACtE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAA4B,CAAA;QAE5E,MAAM,SAAS,GAAG,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;QAElD,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,CAAC,CAAA;QAC5F,IAAI,CAAC,EAAE;YACL,MAAM,IAAI,KAAK,CACb,wBAAwB,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,iBAAiB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACtI,CAAA;QAEH,MAAM,qBAAqB,GAAG,WAAW;YACvC,CAAC,CAAC,MAAM,WAAW,CAAC,SAAS,EAAE;gBAC3B,gBAAgB,EAAE,KAAK,EAAE,eAAwC,EAAE,EAAE,CACnE,iBAAiB,CAAC,SAAS,EAAE,EAAE,EAAE,eAAe,IAAI,OAAO,CAAC;aAC/D,CAAC;YACJ,CAAC,CAAC,SAAS,CAAA;QACb,MAAM,UAAU,GAAG,qBAAqB,IAAI,CAAC,MAAM,iBAAiB,CAAC,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAA;QAC7F,6BAA6B,CAAC,UAAU,CAAC,CAAA;QAEzC,OAAO,SAAS,CAAC,KAAK,EAAE;YACtB,GAAG,SAAS;YACZ,OAAO,EAAE,uBAAuB,CAAC,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC;SAChE,CAAC,CAAA;IACJ,CAAC,CAIA;IAAC,YAA6B,CAAC,kBAAkB,CAAC,GAAG,SAAS,CAAA;IAC/D,OAAO,YAAmC,CAAA;AAC5C,CAAC;AAwCD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,QAAQ,CACtB,MAAgC;IAEhC,4EAA4E;IAC5E,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IACvE,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;IACrD,CAAC;IAED,IAAI,CAAC,aAAa;QAAE,aAAa,GAAG,UAAU,CAAC,KAAK,CAAA;IACpD,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,CAA4B,CAAA;AAC5F,CAAC;AAOD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,OAAO;IACrB,8DAA8D;IAC9D,yEAAyE;IACzE,IAAI,aAAa,IAAI,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,UAAU,CAAC,KAAK,GAAG,aAAa,CAAA;QAChC,aAAa,GAAG,SAAS,CAAA;IAC3B,CAAC;AACH,CAAC;AAED,oEAAoE;AACpE,SAAS,gBAAgB,CAAC,OAAgB;IACxC,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAA;IACvB,IAAI,OAAO,YAAY,OAAO,EAAE,CAAC;QAC/B,MAAM,MAAM,GAA2B,EAAE,CAAA;QACzC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC7B,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QACrB,CAAC,CAAC,CAAA;QACF,OAAO,MAAM,CAAA;IACf,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;IAC9D,OAAO,OAAiC,CAAA;AAC1C,CAAC;AAED,gBAAgB;AAChB,SAAS,uBAAuB,CAAC,OAAgB,EAAE,UAAkB;IACnE,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAC5C,yEAAyE;IACzE,8CAA8C;IAC9C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1C,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK,eAAe;YAAE,OAAO,UAAU,CAAC,GAAG,CAAC,CAAA;IACnE,CAAC;IACD,UAAU,CAAC,aAAa,GAAG,UAAU,CAAA;IACrC,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,gBAAgB;AAChB,SAAS,WAAW,CAAC,KAA8B;IACjD,IAAI,OAAO,GAAG,KAAqB,CAAA;IACnC,OAAO,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACnC,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAiB,CAAA;IACvD,CAAC;IACD,OAAO,OAAkC,CAAA;AAC3C,CAAC;AAED,gBAAgB;AAChB,SAAS,cAAc,CAAC,KAA8B;IACpD,OAAO,OAAO,CAAE,KAAsB,CAAC,kBAAkB,CAAC,CAAC,CAAA;AAC7D,CAAC;AAED,gBAAgB;AAChB,SAAS,6BAA6B,CAAC,UAAkB;IACvD,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;IACpF,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAA;IAChF,CAAC;AACH,CAAC;AAED,gBAAgB;AAChB,KAAK,UAAU,iBAAiB,CAC9B,SAA8B,EAC9B,EAAoB,EACpB,OAAgB;IAEhB,MAAM,aAAa,GAAG,EAAE,CAAC,OAAO,IAAI,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACjG,OAAO,EAAE,CAAC,gBAAgB,CACxB,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC,CAAE,EAAE,SAAS,EAAY,CAC/F,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"Fetch.js","sourceRoot":"","sources":["../../../src/client/internal/Fetch.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,12 @@ import type * as Method from '../../Method.js';
2
2
  import type * as Mppx from '../../server/Mppx.js';
3
3
  export type AnyMethodFn = Mppx.AnyMethodFn;
4
4
  export type AnyServer = Method.AnyServer;
5
+ /** Recursively wraps nested handler objects one level deep. */
6
+ type WrapNested<obj, handler> = {
7
+ [key in keyof obj]: obj[key] extends (options: infer options) => any ? (o: options) => handler : obj[key];
8
+ };
5
9
  export type Wrap<mppx, handler> = {
6
- [key in keyof mppx]: mppx[key] extends (options: infer options) => any ? (o: options) => handler : mppx[key];
10
+ [key in keyof mppx]: key extends 'compose' | 'methods' | 'realm' | 'transport' ? mppx[key] : mppx[key] extends (options: infer options) => any ? (o: options) => handler : mppx[key] extends Record<string, (options: any) => any> ? WrapNested<mppx[key], handler> : mppx[key];
7
11
  };
8
12
  /**
9
13
  * Wraps a payment handler so each method returns a framework-specific
@@ -13,4 +17,5 @@ export type Wrap<mppx, handler> = {
13
17
  * @param wrapper - A function that adapts a method function into a framework handler.
14
18
  */
15
19
  export declare function wrap<mppx extends Mppx.Mppx<any, any>, handler>(mppx: mppx, wrapper: (method: AnyMethodFn, options: any) => handler): Wrap<mppx, handler>;
20
+ export {};
16
21
  //# sourceMappingURL=mppx.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mppx.d.ts","sourceRoot":"","sources":["../../../src/middlewares/internal/mppx.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,iBAAiB,CAAA;AAC9C,OAAO,KAAK,KAAK,IAAI,MAAM,sBAAsB,CAAA;AAEjD,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;AAC1C,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAA;AAExC,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,CAUrB"}
1
+ {"version":3,"file":"mppx.d.ts","sourceRoot":"","sources":["../../../src/middlewares/internal/mppx.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,iBAAiB,CAAA;AAC9C,OAAO,KAAK,KAAK,IAAI,MAAM,sBAAsB,CAAA;AAEjD,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;AAC1C,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAA;AAExC,+DAA+D;AAC/D,KAAK,UAAU,CAAC,GAAG,EAAE,OAAO,IAAI;KAC7B,GAAG,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,OAAO,KAAK,GAAG,GAChE,CAAC,CAAC,EAAE,OAAO,KAAK,OAAO,GACvB,GAAG,CAAC,GAAG,CAAC;CACb,CAAA;AAED,MAAM,MAAM,IAAI,CAAC,IAAI,EAAE,OAAO,IAAI;KAI/B,GAAG,IAAI,MAAM,IAAI,GAAG,GAAG,SAAS,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,WAAW,GAC1E,IAAI,CAAC,GAAG,CAAC,GACT,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,OAAO,KAAK,GAAG,GAC/C,CAAC,CAAC,EAAE,OAAO,KAAK,OAAO,GACvB,IAAI,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,GAAG,CAAC,GACrD,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,GAC9B,IAAI,CAAC,GAAG,CAAC;CAClB,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,CAerB"}
@@ -14,6 +14,10 @@ export function wrap(mppx, wrapper) {
14
14
  // Also set shorthand intent key if Mppx registered it (no collision)
15
15
  if (mppx[mi.intent])
16
16
  result[mi.intent] = (options) => wrapper(methodFn, options);
17
+ // Build nested handlers: wrapped.tempo.charge(...)
18
+ if (!result[mi.name] || typeof result[mi.name] !== 'object')
19
+ result[mi.name] = {};
20
+ result[mi.name][mi.intent] = (options) => wrapper(methodFn, options);
17
21
  }
18
22
  return result;
19
23
  }
@@ -1 +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,OAAsC,EAAE,CAAC;QAC7D,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,MAAM,EAAE,CAAA;QACrC,MAAM,QAAQ,GAAI,IAAY,CAAC,GAAG,CAAC,CAAA;QACnC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,OAAY,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAC1D,qEAAqE;QACrE,IAAK,IAAY,CAAC,EAAE,CAAC,MAAM,CAAC;YAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAY,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAChG,CAAC;IACD,OAAO,MAAe,CAAA;AACxB,CAAC"}
1
+ {"version":3,"file":"mppx.js","sourceRoot":"","sources":["../../../src/middlewares/internal/mppx.ts"],"names":[],"mappings":"AA0BA;;;;;;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,OAAsC,EAAE,CAAC;QAC7D,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,MAAM,EAAE,CAAA;QACrC,MAAM,QAAQ,GAAI,IAAY,CAAC,GAAG,CAAC,CAAA;QACnC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,OAAY,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAC1D,qEAAqE;QACrE,IAAK,IAAY,CAAC,EAAE,CAAC,MAAM,CAAC;YAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAY,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAC9F,mDAAmD;QACnD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,OAAO,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,QAAQ;YACzD,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAA6B,CAChD;QAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAA6B,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAY,EAAE,EAAE,CAC1E,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC9B,CAAC;IACD,OAAO,MAAe,CAAA;AACxB,CAAC"}
@@ -9,6 +9,36 @@ export type Methods = readonly (Method.AnyServer | readonly Method.AnyServer[])[
9
9
  export type Mppx<methods extends Methods = Methods, transport extends Transport.AnyTransport = Transport.Http> = {
10
10
  /** Methods to configure. */
11
11
  methods: FlattenMethods<methods>;
12
+ /**
13
+ * Combines multiple method handlers into a single route handler that presents
14
+ * all methods to the client via multiple `WWW-Authenticate` headers.
15
+ *
16
+ * Each entry is a `[method, options]` tuple where `method` is one of the
17
+ * server methods passed to `Mppx.create()`, looked up by `name`+`intent`.
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * import { Mppx, tempo, stripe } from 'mppx/server'
22
+ *
23
+ * const mppx = Mppx.create({
24
+ * methods: [
25
+ * tempo.charge({ currency: USDC, recipient: '0x...' }),
26
+ * stripe.charge({ currency: 'usd' }),
27
+ * ],
28
+ * secretKey,
29
+ * })
30
+ *
31
+ * app.get('/api/resource', async (req) => {
32
+ * const result = await mppx.compose(
33
+ * mppx.tempo.charge({ amount: '100' }),
34
+ * mppx.stripe.charge({ amount: '100' }),
35
+ * )(req)
36
+ * if (result.status === 402) return result.challenge
37
+ * return result.withReceipt(new Response('OK'))
38
+ * })
39
+ * ```
40
+ */
41
+ compose(...entries: ComposeEntry<FlattenMethods<methods>>[]): (input: Request) => Promise<MethodFn.Response<Transport.Http>>;
12
42
  /** Server realm (e.g., hostname). */
13
43
  realm: string;
14
44
  /** The transport used. */
@@ -38,9 +68,17 @@ type UniqueIntentHandlers<methods extends readonly Method.AnyServer[], transport
38
68
  intent: method_name;
39
69
  }>['defaults']>>;
40
70
  };
71
+ /** Nested handlers: `mppx.tempo.charge(...)`, grouped by method name then intent. */
72
+ type NestedHandlers<methods extends readonly Method.AnyServer[], transport extends Transport.AnyTransport> = {
73
+ [name in methods[number]['name']]: {
74
+ [mi in Extract<methods[number], {
75
+ name: name;
76
+ }> as mi['intent']]: MethodFn<mi, EffectiveTransportOf<mi, transport>, NonNullable<mi['defaults']>>;
77
+ };
78
+ };
41
79
  type Handlers<methods extends readonly Method.AnyServer[], transport extends Transport.AnyTransport> = {
42
80
  [mi in methods[number] as `${mi['name']}/${mi['intent']}`]: MethodFn<mi, EffectiveTransportOf<mi, transport>, NonNullable<mi['defaults']>>;
43
- } & UniqueIntentHandlers<methods, transport>;
81
+ } & UniqueIntentHandlers<methods, transport> & NestedHandlers<methods, transport>;
44
82
  /**
45
83
  * Creates a server-side payment handler from methods.
46
84
  *
@@ -91,6 +129,46 @@ declare namespace MethodFn {
91
129
  withReceipt: Transport.WithReceipt<transport>;
92
130
  };
93
131
  }
132
+ /** An entry for `compose()`: a method reference (or string key) paired with its options. */
133
+ type ComposeEntry<methods extends readonly Method.AnyServer[]> = {
134
+ [i in keyof methods]: readonly [
135
+ methods[i],
136
+ MethodFn.Options<methods[i], NonNullable<methods[i]['defaults']>>
137
+ ];
138
+ }[number] | {
139
+ [i in keyof methods]: readonly [
140
+ `${methods[i]['name']}/${methods[i]['intent']}`,
141
+ MethodFn.Options<methods[i], NonNullable<methods[i]['defaults']>>
142
+ ];
143
+ }[number];
144
+ /**
145
+ * Combines multiple configured payment handlers into a single route handler
146
+ * that presents all methods to the client via multiple `WWW-Authenticate` headers.
147
+ *
148
+ * When no credential is present, all handlers are called and their challenges
149
+ * are merged into a single 402 response. When a credential is present, it is
150
+ * dispatched to the handler matching the credential's `method`+`intent`.
151
+ *
152
+ * @example
153
+ * ```ts
154
+ * import { Mppx, tempo, stripe } from 'mppx/server'
155
+ *
156
+ * const mppx = Mppx.create({
157
+ * methods: [tempo(), stripe()],
158
+ * secretKey: process.env.PAYMENT_SECRET_KEY,
159
+ * })
160
+ *
161
+ * app.get('/api/resource', async (req) => {
162
+ * const result = await Mppx.compose(
163
+ * mppx['tempo/charge']({ amount: '100', currency: USDC, recipient: '0x...' }),
164
+ * mppx['stripe/charge']({ amount: '100', currency: 'usd' }),
165
+ * )(req)
166
+ * if (result.status === 402) return result.challenge
167
+ * return result.withReceipt(new Response('OK'))
168
+ * })
169
+ * ```
170
+ */
171
+ export declare function compose(...handlers: readonly ((input: Request) => Promise<MethodFn.Response<Transport.Http>>)[]): (input: Request) => Promise<MethodFn.Response<Transport.Http>>;
94
172
  /**
95
173
  * Wraps a payment handler to create a Node.js HTTP listener.
96
174
  *
@@ -1 +1 @@
1
- {"version":3,"file":"Mppx.d.ts","sourceRoot":"","sources":["../../src/server/Mppx.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Mppx.d.ts","sourceRoot":"","sources":["../../src/server/Mppx.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import * as Challenge from '../Challenge.js';
2
+ import * as Credential from '../Credential.js';
2
3
  import * as Errors from '../Errors.js';
3
4
  import * as Expires from '../Expires.js';
4
5
  import * as Env from '../internal/env.js';
@@ -47,17 +48,36 @@ export function create(config) {
47
48
  if (intentCount[mi.intent] === 1)
48
49
  handlers[mi.intent] = handlers[`${mi.name}/${mi.intent}`];
49
50
  }
50
- return { methods, realm: realm, transport, ...handlers };
51
+ // Build nested handlers: mppx.tempo.charge(...)
52
+ for (const mi of methods) {
53
+ if (!handlers[mi.name])
54
+ handlers[mi.name] = {};
55
+ handlers[mi.name][mi.intent] = handlers[`${mi.name}/${mi.intent}`];
56
+ }
57
+ function composeFn(...entries) {
58
+ if (entries.length === 0)
59
+ throw new Error('compose() requires at least one entry');
60
+ const configured = entries.map(([methodOrKey, options]) => {
61
+ const key = typeof methodOrKey === 'string' ? methodOrKey : `${methodOrKey.name}/${methodOrKey.intent}`;
62
+ const handlerFn = handlers[key];
63
+ if (!handlerFn)
64
+ throw new Error(`No handler for "${key}". Is this method in your methods array?`);
65
+ return handlerFn(options);
66
+ });
67
+ return compose(...configured);
68
+ }
69
+ return {
70
+ methods,
71
+ compose: composeFn,
72
+ realm: realm,
73
+ transport,
74
+ ...handlers,
75
+ };
51
76
  }
52
77
  // biome-ignore lint/correctness/noUnusedVariables: _
53
78
  function createMethodFn(parameters) {
54
79
  const { defaults, method, realm, respond, secretKey, transport, verify } = parameters;
55
80
  return (options) => {
56
- const methodMeta = {
57
- ...method,
58
- ...defaults,
59
- ...options,
60
- };
61
81
  return Object.assign(async (input) => {
62
82
  const { description, meta, ...rest } = options;
63
83
  const expires = 'expires' in options ? options.expires : Expires.minutes(5);
@@ -124,6 +144,9 @@ function createMethodFn(parameters) {
124
144
  // Verify the credential's challenge matches this route's configured
125
145
  // request. Prevents cross-route scope confusion where a credential
126
146
  // issued for a cheap route is presented at an expensive route.
147
+ // Note: we compare specific payment parameters rather than the full
148
+ // request because the `request` hook may produce credential-dependent
149
+ // output (e.g. `feePayer` differs between 402 and credential calls).
127
150
  {
128
151
  const routeReq = challenge.request;
129
152
  const echoedReq = credential.challenge.request;
@@ -210,7 +233,112 @@ function createMethodFn(parameters) {
210
233
  });
211
234
  },
212
235
  };
213
- }, { _internal: methodMeta });
236
+ }, {
237
+ _internal: { ...method, ...defaults, ...options, name: method.name, intent: method.intent },
238
+ });
239
+ };
240
+ }
241
+ /**
242
+ * Combines multiple configured payment handlers into a single route handler
243
+ * that presents all methods to the client via multiple `WWW-Authenticate` headers.
244
+ *
245
+ * When no credential is present, all handlers are called and their challenges
246
+ * are merged into a single 402 response. When a credential is present, it is
247
+ * dispatched to the handler matching the credential's `method`+`intent`.
248
+ *
249
+ * @example
250
+ * ```ts
251
+ * import { Mppx, tempo, stripe } from 'mppx/server'
252
+ *
253
+ * const mppx = Mppx.create({
254
+ * methods: [tempo(), stripe()],
255
+ * secretKey: process.env.PAYMENT_SECRET_KEY,
256
+ * })
257
+ *
258
+ * app.get('/api/resource', async (req) => {
259
+ * const result = await Mppx.compose(
260
+ * mppx['tempo/charge']({ amount: '100', currency: USDC, recipient: '0x...' }),
261
+ * mppx['stripe/charge']({ amount: '100', currency: 'usd' }),
262
+ * )(req)
263
+ * if (result.status === 402) return result.challenge
264
+ * return result.withReceipt(new Response('OK'))
265
+ * })
266
+ * ```
267
+ */
268
+ export function compose(...handlers) {
269
+ if (handlers.length === 0)
270
+ throw new Error('compose() requires at least one handler');
271
+ return async (input) => {
272
+ // Try to extract a Payment credential to decide whether to dispatch or challenge.
273
+ // Only gate on the Payment scheme — other auth schemes (Bearer, Basic, etc.)
274
+ // should fall through to the merged-402 path so all offers are presented.
275
+ const header = input.headers.get('Authorization');
276
+ const paymentHeader = header ? Credential.extractPaymentScheme(header) : null;
277
+ if (paymentHeader) {
278
+ // Parse the credential to find method+intent for dispatch.
279
+ let credential;
280
+ try {
281
+ credential = Credential.deserialize(paymentHeader);
282
+ }
283
+ catch { }
284
+ if (credential) {
285
+ const { method: credMethod, intent: credIntent } = credential.challenge;
286
+ const credReq = credential.challenge.request;
287
+ // Filter by name+intent, then narrow by comparing stable request fields
288
+ // from the echoed challenge against each handler's configured options.
289
+ // This disambiguates handlers with the same name/intent but different
290
+ // amounts, currencies, recipients, etc. without invoking any handler.
291
+ const candidates = handlers.filter((h) => {
292
+ const meta = h._internal;
293
+ if (!meta || meta.name !== credMethod || meta.intent !== credIntent)
294
+ return false;
295
+ // Compare stable fields that don't change between 402 and credential calls.
296
+ for (const field of ['amount', 'currency', 'recipient']) {
297
+ const metaVal = meta[field];
298
+ if (metaVal !== undefined &&
299
+ credReq[field] !== undefined &&
300
+ String(metaVal) !== String(credReq[field]))
301
+ return false;
302
+ }
303
+ return true;
304
+ });
305
+ const match = candidates[0] ??
306
+ handlers.find((h) => {
307
+ const meta = h._internal;
308
+ return meta?.name === credMethod && meta?.intent === credIntent;
309
+ });
310
+ if (match)
311
+ return match(input);
312
+ }
313
+ // Payment credential present but no matching handler — dispatch to first
314
+ // handler which will reject with an appropriate error (invalid challenge, etc.).
315
+ return handlers[0](input);
316
+ }
317
+ // No credential — call all handlers and merge 402 challenges.
318
+ const results = await Promise.all(handlers.map((h) => h(input)));
319
+ // Merge WWW-Authenticate headers from all 402 responses.
320
+ const mergedHeaders = new Headers();
321
+ mergedHeaders.set('Cache-Control', 'no-store');
322
+ let body = null;
323
+ for (const result of results) {
324
+ if (result.status !== 402)
325
+ continue;
326
+ const response = result.challenge;
327
+ const wwwAuth = response.headers.get('WWW-Authenticate');
328
+ if (wwwAuth)
329
+ mergedHeaders.append('WWW-Authenticate', wwwAuth);
330
+ // Use the first handler's body for the problem details response.
331
+ if (!body) {
332
+ const contentType = response.headers.get('Content-Type');
333
+ if (contentType)
334
+ mergedHeaders.set('Content-Type', contentType);
335
+ body = await response.text();
336
+ }
337
+ }
338
+ return {
339
+ status: 402,
340
+ challenge: new Response(body, { status: 402, headers: mergedHeaders }),
341
+ };
214
342
  };
215
343
  }
216
344
  /**