Harden product-webhook contract validation and Supabase typing#203
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
This pull request has been ignored for the connected project Preview Branches by Supabase. |
|
Caution Review failedPull request was closed or merged during review WalkthroughO PR aprimora a validação de webhooks de produtos introduzindo schemas Zod estritos para campos ChangesValidação e tipagem do webhook de produtos
Estimated code review effort🎯 2 (Simple) | ⏱️ ~12 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
Motivation
anyno client Supabase e alinhar a função com os tipos gerados do schema para reduzir erros de runtime e melhorar autocompleção;product-webhookcontra payloads massivos ou formas inválidas em campos livres (variations,metadata) que hoje poderiam atravessar validações permissivas;any.Description
createClient<Database>(...)e alterei a assinatura deupsertProductsparaSupabaseClient<Database>no arquivosupabase/functions/product-webhook/index.ts.JsonValueSchemarecursivo com limites (.max(100)para arrays e limite de chaves por objeto) e umVariationSchemabaseado emz.unknown().superRefine(...)que valida forma mínima, número de chaves e presença deid/external_id/skuno arquivosupabase/functions/_shared/contracts/schemas/product-webhook.ts.variations: z.array(z.any())porvariations: z.array(VariationSchema)e convertimetadataparaz.unknown()com validação estrutural que recusa objetos/arrays excessivamente grandes; essas mudanças impõem limites para evitar payloads massivos.supabase/functions/_shared/contracts/schemas/product-webhook.test.tscobrindo variação como string, variação sem identificador,metadatacom mais de 100 chaves emetadatacom array gigante.Testing
deno test supabase/functions/_shared/contracts/schemas/product-webhook.test.ts, porém a execução falhou por limitação do ambiente:deno: command not found.Codex Task
Summary by cubic
Hardened
product-webhookvalidation and added type-safe Supabase client to block oversized/invalid payloads and reduce runtime errors.Refactors
createClient<Database>(...)from@supabase/supabase-jsandSupabaseClient<Database>inupsertProducts.zodvalidators:VariationSchemarequiresid/external_id/skuand limits keys;JsonValueSchemacaps arrays at 100 and metadata objects to 100 keys.Bug Fixes
metadatato prevent regressions.Written for commit 1366a0f. Summary will update on new commits. Review in cubic
Summary by CodeRabbit
Notas de Lançamento
Melhorias
Testes