diff --git a/packages/dev-app/src/router.ts b/packages/dev-app/src/router.ts index b7e8a8d..6f63b2f 100644 --- a/packages/dev-app/src/router.ts +++ b/packages/dev-app/src/router.ts @@ -31,6 +31,23 @@ const postsRouter = createTRPCRouter({ text: input.text, }; }), + createNestedPost: procedure + .input( + z.object({ + text: z.string(), + }) + ) + .input( + z.object({ + title: z.string(), + }) + ) + .mutation(({ input }) => { + return { + id: "aoisdjfoasidjfasodf", + text: input.text, + }; + }), }); export const appRouter = createTRPCRouter({ diff --git a/packages/trpc-panel/package.json b/packages/trpc-panel/package.json index 9a86042..167f8fe 100644 --- a/packages/trpc-panel/package.json +++ b/packages/trpc-panel/package.json @@ -84,7 +84,6 @@ "tslib": "^2.4.1", "typescript": "^4.9.3", "url": "^0.11.0", - "zod": "^3.19.1", "zustand": "^4.1.5" }, "dependencies": { diff --git a/packages/trpc-panel/src/parse/parseProcedure.ts b/packages/trpc-panel/src/parse/parseProcedure.ts index b77c810..028c4a0 100644 --- a/packages/trpc-panel/src/parse/parseProcedure.ts +++ b/packages/trpc-panel/src/parse/parseProcedure.ts @@ -76,10 +76,26 @@ function nodeAndInputSchemaFromInputs( }), }; } - if (inputs.length !== 1) { + + let input = inputs[0]; + if (inputs.length < 1) { return { parseInputResult: "failure" }; } - const input = inputs[0]; + + if (inputs.length > 1) { + const allInputsAreZodObjects = inputs.every( + (input) => input instanceof z.ZodObject + ); + if (!allInputsAreZodObjects) { + return { parseInputResult: "failure" }; + } + + input = inputs.reduce( + (acc, input: z.AnyZodObject) => (acc as z.AnyZodObject).merge(input), + emptyZodObject + ); + } + const iType = inputType(input); if (iType == "unsupported") { return { parseInputResult: "failure" };