Skip to content

Commit

Permalink
feat: take H5PField.default into account when deciding if a param v…
Browse files Browse the repository at this point in the history
…alue should be optional
  • Loading branch information
boyum committed Jan 20, 2023
1 parent 4e5bfb8 commit 197e2bb
Show file tree
Hide file tree
Showing 5 changed files with 124 additions and 43 deletions.
35 changes: 24 additions & 11 deletions index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1987,7 +1987,7 @@ type InferGroupParams<TGroupField extends DeepReadonly<H5PFieldGroup>> =
: TGroupField["fields"]["length"] extends 1
? InferGroupWithOneFieldParams<TGroupField>
: InferGroupWithMultipleFieldsParams<TGroupField>;
type InferParamsType<TField extends DeepReadonly<H5PField>> =
export type InferParamsType<TField extends DeepReadonly<H5PField>> =
TField extends DeepReadonly<H5PFieldGroup>
? InferGroupParams<TField>
: TField extends DeepReadonly<H5PFieldList>
Expand Down Expand Up @@ -2033,7 +2033,10 @@ export type InferParamsFromSemantics<
? Record<
TField["name"],
TField["optional"] extends true
? InferParamsType<TField> | undefined
? // eslint-disable-next-line @typescript-eslint/ban-types
TField extends { default: {} }
? InferParamsType<TField>
: InferParamsType<TField> | undefined
: InferParamsType<TField>
> &
InferParamsFromSemantics<TRestFields>
Expand All @@ -2055,39 +2058,49 @@ export type ParamTypeInferredFromFieldType<
: Audio
: TField extends DeepReadonly<H5PFieldBoolean>
? TField["optional"] extends true
? boolean | undefined
? TField extends { default: boolean }
? boolean
: boolean | undefined
: boolean
: TField extends DeepReadonly<H5PFieldFile>
? TField["optional"] extends true
? Media | undefined
: Media
: TField extends DeepReadonly<H5PFieldGroup>
? TField["optional"] extends true
? unknown | Record<string, unknown> | undefined
: unknown | Record<string, unknown>
? InferParamsType<TField> | undefined
: InferParamsType<TField>
: TField extends DeepReadonly<H5PFieldImage>
? TField["optional"] extends true
? Image | undefined
: Image
: TField extends DeepReadonly<H5PFieldLibrary>
? TField["optional"] extends true
? unknown | undefined
? TField extends { default: unknown }
? unknown
: unknown | undefined
: unknown
: TField extends DeepReadonly<H5PFieldList>
? TField["optional"] extends true
? Array<unknown> | undefined
: Array<unknown>
? Array<InferParamsType<TField["field"]>> | undefined
: Array<InferParamsType<TField["field"]>>
: TField extends DeepReadonly<H5PFieldNumber>
? TField["optional"] extends true
? number | undefined
? TField extends { default: number }
? number
: number | undefined
: number
: TField extends DeepReadonly<H5PFieldSelect>
? TField["optional"] extends true
? TField["options"][number]["value"] | undefined
? TField extends { default: string | number | boolean }
? TField["options"][number]["value"]
: TField["options"][number]["value"] | undefined
: TField["options"][number]["value"]
: TField extends DeepReadonly<H5PFieldText>
? TField["optional"] extends true
? string | undefined
? TField extends { default: string }
? string
: string | undefined
: string
: TField extends DeepReadonly<H5PFieldVideo>
? TField["optional"] extends true
Expand Down
65 changes: 45 additions & 20 deletions index.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 197e2bb

Please sign in to comment.