Wocart

@wocart/storefront v3.1.0


@wocart/storefront / astro / placeOrderInput

Variable: placeOrderInput

const placeOrderInput: z.ZodObject<{ address: z.ZodOptional<z.ZodString>; checkoutKey: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>; communeId: z.ZodString; couponCode: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>; customerName: z.ZodString; customFieldResponses: z.ZodPreprocess<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnknown>]>>, unknown>; deliveryType: z.ZodDefault<z.ZodEnum<{ home: "home"; stop_desk: "stop_desk"; }>>; email: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>; fbc: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>; fbp: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>; items: z.ZodPreprocess<z.ZodOptional<z.ZodArray<z.ZodObject<{ offerId: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>; pricePerUnit: z.ZodOptional<z.ZodCoercedNumber<unknown>>; productId: z.ZodString; productName: z.ZodString; quantity: z.ZodCoercedNumber<unknown>; variantId: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>; variantLabel: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>; }, z.core.$strip>>>, unknown>; landingPageSlug: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>; notes: z.ZodOptional<z.ZodString>; offerId: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>; otpToken: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>; phone: z.ZodPreprocess<z.ZodString, unknown>; pricePerUnit: z.ZodPreprocess<z.ZodOptional<z.ZodCoercedNumber<unknown>>, unknown>; productId: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>; productName: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>; quantity: z.ZodDefault<z.ZodCoercedNumber<unknown>>; turnstileToken: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>; variantId: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>; variantLabel: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>; variantSelections: z.ZodPreprocess<z.ZodOptional<z.ZodArray<z.ZodObject<{ variantId: z.ZodString; variantLabel: z.ZodOptional<z.ZodString>; }, z.core.$strip>>>, unknown>; wilayaId: z.ZodCoercedNumber<unknown>; }, z.core.$strip>

The order form's input whitelist.

zod STRIPS every key this schema does not name, which is why a field the storefront renders but this schema forgets silently never reaches the server. Form parsing needs a plain object schema (no .superRefine), so the basket-or-product rule lives in executePlaceOrder — failing there turns a bare 400 into a field error the form can actually render.