From 08d2f7fe3f4f7f74122b45631955a5bd26bf3acc Mon Sep 17 00:00:00 2001 From: "P. Reis" Date: Fri, 21 Feb 2025 11:41:45 -0300 Subject: [PATCH] refactor: add cashu proof schema --- packages/ditto/middleware/swapNutzapsMiddleware.ts | 11 ++--------- packages/ditto/schemas/cashu.ts | 10 ++++++++++ 2 files changed, 12 insertions(+), 9 deletions(-) create mode 100644 packages/ditto/schemas/cashu.ts diff --git a/packages/ditto/middleware/swapNutzapsMiddleware.ts b/packages/ditto/middleware/swapNutzapsMiddleware.ts index 322187de..9bf8c640 100644 --- a/packages/ditto/middleware/swapNutzapsMiddleware.ts +++ b/packages/ditto/middleware/swapNutzapsMiddleware.ts @@ -5,11 +5,11 @@ import { HTTPException } from '@hono/hono/http-exception'; import { NostrEvent, NostrFilter, NostrSigner, NSchema as n, NStore } from '@nostrify/nostrify'; import { SetRequired } from 'type-fest'; import { logi } from '@soapbox/logi'; -import { z } from 'zod'; import { errorJson } from '@/utils/log.ts'; import { createEvent } from '@/utils/api.ts'; import { validateAndParseWallet } from '@/utils/cashu.ts'; +import { proofSchema } from '@/schemas/cashu.ts'; /** * Swap nutzaps into wallet (create new events) if the user has a wallet, otheriwse, just fallthrough. @@ -172,14 +172,7 @@ async function getMintsToProofs( } const parsed = n.json().pipe( - z.object({ - id: z.string(), - amount: z.number(), - secret: z.string(), - C: z.string(), - dleq: z.object({ s: z.string(), e: z.string(), r: z.string().optional() }).optional(), - dleqValid: z.boolean().optional(), - }), + proofSchema, ).array().safeParse(proofs); if (!parsed.success) { diff --git a/packages/ditto/schemas/cashu.ts b/packages/ditto/schemas/cashu.ts new file mode 100644 index 00000000..4e3599e5 --- /dev/null +++ b/packages/ditto/schemas/cashu.ts @@ -0,0 +1,10 @@ +import { z } from 'zod'; + +export const proofSchema = z.object({ + id: z.string(), + amount: z.number(), + secret: z.string(), + C: z.string(), + dleq: z.object({ s: z.string(), e: z.string(), r: z.string().optional() }).optional(), + dleqValid: z.boolean().optional(), +});