contentlayerdev / contentlayerdev/contentlayer

Enum values are not validated

Aperta
#374 1 commento 5 reazioni 0 assegnatari Vedi su GitHub
feature meta: never-stale topic: data validation
Lingua principale
TypeScript
Stelle
3.5k
Fork
192
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

I've seen some examples on issues of people using a field of type `enum` to specify the page locale.

```
---
locale: 'en'
---
(...)
```

```ts
defineDocumentType(() => ({
[...],
fields: {
locale: {
type: 'enum',
options: ['en', 'es', 'de'],
required: true
}
}
}));
```

I've just seen on `contentlayer@0.3.0` that if you have a file with an invalid enum value (not in the `options` array), then the build will complete successfully.

```
---
locale: 'not in the options array'
---
(...)
```

```sh
$ yarn contentlayer build
yarn run v1.22.19
$ /(...)/node_modules/.bin/contentlayer build
Generated 2 documents in .contentlayer
Done in 1.32s.
```

I understand that even if it does not validate values, the enum type field is really useful once it automatically generates TS types, but given that we can validate fields with `required`, shouldn't we also be able to validate the if the field value matches what we defined on the schema? (In the case of enum fields)

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia riproducendo il problema con un campo enum il cui valore di frontmatter è assente dal relativo array options, quindi traccia i punti di ingresso della build di Contentlayer e della convalida dello schema. Il lavoro è completato quando la build rifiuta il valore non valido, mentre i valori enum validi continuano a generare documenti e tipi TypeScript.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
typescript
Ambito
tooling
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
45/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.