Skip to content

Commit 6f748f1

Browse files
authored
feat: improves generated types by removing unnecessary optional properties (#784)
1 parent aa322b2 commit 6f748f1

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

src/bin/generateTypes.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@ import loadConfig from '../config/load';
1010
import { SanitizedGlobalConfig } from '../globals/config/types';
1111
import deepCopyObject from '../utilities/deepCopyObject';
1212

13+
const nonOptionalFieldTypes = ['group', 'array', 'blocks'];
14+
15+
const propertyIsOptional = (field: Field) => {
16+
return fieldAffectsData(field) && (field.required === true || nonOptionalFieldTypes.includes(field.type));
17+
};
18+
1319
function getCollectionIDType(collections: SanitizedCollectionConfig[], slug: string): 'string' | 'number' {
1420
const matchedCollection = collections.find((collection) => collection.slug === slug);
1521
const customIdField = matchedCollection.fields.find((field) => 'name' in field && field.name === 'id');
@@ -320,7 +326,7 @@ function generateFieldTypes(config: SanitizedConfig, fields: Field[]): {
320326
),
321327
required: [
322328
...fields
323-
.filter((field) => fieldAffectsData(field) && field.required === true)
329+
.filter(propertyIsOptional)
324330
.map((field) => (fieldAffectsData(field) ? field.name : '')),
325331
...requiredTopLevelProps,
326332
],

0 commit comments

Comments
 (0)