| 14 | type ApiPermissions = ApiKeyPermission[] | 'block'; |
| 15 | |
| 16 | async function getUserSessionInput<T extends z.ZodRawShape>( |
| 17 | req: VercelRequest, |
| 18 | schema: InputSchema<T> |
| 19 | ) { |
| 20 | const fullSchema = z.object({ |
| 21 | action: z.object({ name: z.string() }), |
| 22 | input: z.object({ payload: schema }), |
| 23 | session_variables: HasuraUserSessionVariables, |
| 24 | request_query: z.string().optional(), |
| 25 | }); |
| 26 | |
| 27 | // this will throw if the input isn't valid |
| 28 | const { action, session_variables, input } = await fullSchema.parseAsync( |
| 29 | req.body |
| 30 | ); |
| 31 | assert(input?.payload, 'input.payload is missing after parsing'); |
| 32 | |
| 33 | return { action, session: session_variables, payload: input.payload }; |
| 34 | } |
| 35 | |
| 36 | export async function getAnonInput<T extends z.ZodRawShape>( |
| 37 | req: VercelRequest, |