Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

An empty `imageUrl=`, `logoUrl=` or `template=` returns an error instead of the default

Fermée Adaptée aux débutants
#166 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

@Saifjafri212213 y travaille déjà.

Depuis le 21/10/2026.

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
88/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
typescript
Domaine
api, backend

Piste de recherche

Commencez dans src/lib/api-validation.ts en comparant le prétraitement existant de width et height aux schémas de template, logoUrl et imageUrl. Vérifiez les tests du schéma dans tests/api/og.test.ts, puis les tests de routes qui simulent le renderer. Le travail est terminé lorsque les valeurs vides utilisent les valeurs par défaut, que les URL non vides invalides renvoient toujours 400 et que les tests du schéma et des routes couvrent ces cas.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

bug good first issue hacktoberfest

/api/og treats an empty parameter as "use the default": title= or bgColor= with nothing after them still give the normal image. Three parameters don't:

This is easy to hit when the URL is built from CMS data, like imageUrl={{ post.cover }} on a post without a cover image: the whole OG image fails instead of falling back.

In src/lib/api-validation.ts, logoUrl and imageUrl (lines 14 and 15) are z.string().url().optional(). .optional() only covers a missing key, so an empty string goes on to .url() and fails. template (line 4) uses .default('blog-minimal-dark'), which also only applies when the key is missing. width and height (lines 16 to 23) already handle this: z.preprocess turns '' into undefined before the rest of the check.

What to do

  • Use the same z.preprocess for logoUrl, imageUrl and template, so an empty value counts as missing. template= then gets blog-minimal-dark, and the two URLs fall back to the template's defaults.
  • A value that's there but isn't a URL, like imageUrl=not-a-url, should still return 400.

Where to look

  • src/lib/api-validation.ts: template (line 4), logoUrl and imageUrl (lines 14 and 15), and the width/height preprocess (lines 16 to 23)
  • src/pages/api/og.ts: the 400 for invalid params (lines 41 to 47) and the 404 for an unknown template (lines 61 to 70)
  • tests/api/og.test.ts: the schema tests (line 11) and the route tests, which mock the renderer (from line 269)

Acceptance criteria

  • ?template=blog-photo-overlay&imageUrl= and ?logoUrl= return the same image as leaving the parameter out
  • ?template= renders blog-minimal-dark
  • imageUrl=not-a-url still returns 400
  • Tests for the schema and for the route
  • npm run check, npm run test and npm run build pass

Want to work on this? Comment below and I'll assign it to you. Please take one issue at a time, branch off dev, and open your PR against dev with Closes #166 in the description.

Langage dominant
TypeScript
Étoiles
8
Forks
4
Merge moyen
5 h 44 min
PR mergées (30 j)
83

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de codercops/ogcops

Toutes les issues de codercops/ogcops

Issues similaires

Plus d'issues TypeScript

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.