From 6f748f1adb78a70c9e5dba6cedcf1e2cdd55498a Mon Sep 17 00:00:00 2001 From: James Mikrut Date: Wed, 20 Jul 2022 11:51:19 -0700 Subject: [PATCH] feat: improves generated types by removing unnecessary optional properties (#784) --- src/bin/generateTypes.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/bin/generateTypes.ts b/src/bin/generateTypes.ts index f732112aa3..b1a6fa3234 100644 --- a/src/bin/generateTypes.ts +++ b/src/bin/generateTypes.ts @@ -10,6 +10,12 @@ import loadConfig from '../config/load'; import { SanitizedGlobalConfig } from '../globals/config/types'; import deepCopyObject from '../utilities/deepCopyObject'; +const nonOptionalFieldTypes = ['group', 'array', 'blocks']; + +const propertyIsOptional = (field: Field) => { + return fieldAffectsData(field) && (field.required === true || nonOptionalFieldTypes.includes(field.type)); +}; + function getCollectionIDType(collections: SanitizedCollectionConfig[], slug: string): 'string' | 'number' { const matchedCollection = collections.find((collection) => collection.slug === slug); const customIdField = matchedCollection.fields.find((field) => 'name' in field && field.name === 'id'); @@ -320,7 +326,7 @@ function generateFieldTypes(config: SanitizedConfig, fields: Field[]): { ), required: [ ...fields - .filter((field) => fieldAffectsData(field) && field.required === true) + .filter(propertyIsOptional) .map((field) => (fieldAffectsData(field) ? field.name : '')), ...requiredTopLevelProps, ],