Skip to content

Commit

Permalink
fix(reflection): allow inference of Ref<boolean> & Opt
Browse files Browse the repository at this point in the history
Closes #5557
  • Loading branch information
B4nan committed May 14, 2024
1 parent b35b9ca commit 534f088
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 5 deletions.
12 changes: 7 additions & 5 deletions packages/core/src/typings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -344,11 +344,13 @@ export type EntityRef<T extends object> = true extends IsUnknown<PrimaryProperty
* Ref type represents a `Reference` instance, and adds the primary keys to its prototype automatically, so you can do
* `ref.id` instead of `ref.unwrap().id`. It resolves to either `ScalarRef` or `EntityRef`, based on the type argument.
*/
export type Ref<T> = IsAny<T> extends true
? Reference<T & object>
: T extends Scalar
? ScalarReference<T>
: EntityRef<T & object>;
export type Ref<T> = T extends any // we need this to get around `Ref<boolean>` expansion to `Ref<true> | Ref<false>`
? IsAny<T> extends true
? Reference<T & object>
: T extends Scalar
? ScalarReference<T>
: EntityRef<T & object>
: never;

type ExtractHiddenProps<T> = (T extends { [HiddenProps]?: infer K } ? K : never) | ({ [K in keyof T]: T[K] extends Hidden ? K : never }[keyof T] & {});
type ExcludeHidden<T, K extends keyof T> = K extends ExtractHiddenProps<T> ? never : K;
Expand Down
1 change: 1 addition & 0 deletions packages/reflection/src/TsMorphMetadataProvider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ export class TsMorphMetadataProvider extends MetadataProvider {

this.processWrapper(prop, 'Ref');
this.processWrapper(prop, 'Reference');
this.processWrapper(prop, 'ScalarReference');
this.processWrapper(prop, 'Ref');
this.processWrapper(prop, 'Collection');

Expand Down

0 comments on commit 534f088

Please sign in to comment.