@pothos/plugin-prisma 3.42.0 → 3.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dts/connection-helpers.d.ts +1 -1
  3. package/dts/connection-helpers.d.ts.map +1 -1
  4. package/dts/global-types.d.ts +4 -4
  5. package/dts/global-types.d.ts.map +1 -1
  6. package/dts/prisma-field-builder.d.ts +7 -7
  7. package/dts/prisma-field-builder.d.ts.map +1 -1
  8. package/dts/types.d.ts +8 -7
  9. package/dts/types.d.ts.map +1 -1
  10. package/dts/util/datamodel.d.ts +2 -2
  11. package/dts/util/datamodel.d.ts.map +1 -1
  12. package/esm/connection-helpers.d.ts +1 -1
  13. package/esm/connection-helpers.d.ts.map +1 -1
  14. package/esm/generator.js +8 -5
  15. package/esm/generator.js.map +1 -1
  16. package/esm/global-types.d.ts +4 -4
  17. package/esm/global-types.d.ts.map +1 -1
  18. package/esm/global-types.js.map +1 -1
  19. package/esm/model-loader.js +19 -1
  20. package/esm/model-loader.js.map +1 -1
  21. package/esm/object-ref.js +18 -0
  22. package/esm/object-ref.js.map +1 -1
  23. package/esm/prisma-field-builder.d.ts +7 -7
  24. package/esm/prisma-field-builder.d.ts.map +1 -1
  25. package/esm/prisma-field-builder.js +35 -19
  26. package/esm/prisma-field-builder.js.map +1 -1
  27. package/esm/schema-builder.js +4 -4
  28. package/esm/schema-builder.js.map +1 -1
  29. package/esm/types.d.ts +8 -7
  30. package/esm/types.d.ts.map +1 -1
  31. package/esm/util/datamodel.d.ts +2 -2
  32. package/esm/util/datamodel.d.ts.map +1 -1
  33. package/lib/generator.js +8 -5
  34. package/lib/generator.js.map +1 -1
  35. package/lib/model-loader.js +18 -1
  36. package/lib/model-loader.js.map +1 -1
  37. package/lib/object-ref.js +17 -0
  38. package/lib/object-ref.js.map +1 -1
  39. package/lib/prisma-field-builder.js +33 -18
  40. package/lib/prisma-field-builder.js.map +1 -1
  41. package/lib/schema-builder.js +4 -4
  42. package/lib/schema-builder.js.map +1 -1
  43. package/package.json +7 -7
  44. package/src/connection-helpers.ts +1 -1
  45. package/src/generator.ts +8 -10
  46. package/src/global-types.ts +7 -2
  47. package/src/prisma-field-builder.ts +2 -1
  48. package/src/schema-builder.ts +6 -9
  49. package/src/types.ts +29 -9
package/src/types.ts CHANGED
@@ -49,7 +49,8 @@ export interface PrismaModelTypes {
49
49
  string,
50
50
  {
51
51
  Shape: unknown;
52
- Types: PrismaModelTypes;
52
+ Name: string;
53
+ // Types: PrismaModelTypes;
53
54
  }
54
55
  >;
55
56
  }
@@ -78,6 +79,7 @@ export type PrismaObjectFieldOptions<
78
79
  ? ParentShape
79
80
  : ParentShape &
80
81
  ShapeFromSelection<
82
+ Types,
81
83
  ExtractModel<Types, ParentShape>,
82
84
  { select: Select extends (...args: any[]) => infer S ? S : Select }
83
85
  >,
@@ -123,12 +125,16 @@ interface BaseSelection {
123
125
 
124
126
  export type SelectedKeys<T> = { [K in keyof T]: T[K] extends false ? never : K }[keyof T];
125
127
 
126
- export type ShapeFromSelection<Model extends PrismaModelTypes, Selection> = Normalize<
128
+ export type ShapeFromSelection<
129
+ Types extends SchemaTypes,
130
+ Model extends PrismaModelTypes,
131
+ Selection,
132
+ > = Normalize<
127
133
  Selection extends BaseSelection
128
134
  ? unknown extends Selection['select']
129
- ? Model['Shape'] & RelationShapeFromInclude<Model, Selection['include']>
135
+ ? Model['Shape'] & RelationShapeFromInclude<Types, Model, Selection['include']>
130
136
  : Pick<Model['Shape'], SelectedKeys<Selection['select']>> &
131
- RelationShapeFromInclude<Model, Selection['select']> &
137
+ RelationShapeFromInclude<Types, Model, Selection['select']> &
132
138
  ('_count' extends keyof Selection['select']
133
139
  ? ShapeFromCount<Selection['select']['_count']>
134
140
  : {})
@@ -141,13 +147,27 @@ export type ShapeFromCount<Selection> = Selection extends true
141
147
  ? { _count: { [K in keyof Counts]: number } }
142
148
  : never;
143
149
 
144
- type RelationShapeFromInclude<Model extends PrismaModelTypes, Include> = Normalize<{
150
+ export type TypesForRelation<
151
+ Types extends SchemaTypes,
152
+ Model extends PrismaModelTypes,
153
+ Relation extends keyof Model['Relations'],
154
+ > = Model['Relations'][Relation]['Name'] extends infer Name
155
+ ? Name extends keyof Types['PrismaTypes']
156
+ ? Types['PrismaTypes'][Name] & PrismaModelTypes
157
+ : never
158
+ : never;
159
+
160
+ type RelationShapeFromInclude<
161
+ Types extends SchemaTypes,
162
+ Model extends PrismaModelTypes,
163
+ Include,
164
+ > = Normalize<{
145
165
  [K in SelectedKeys<Include> as K extends Model['RelationName']
146
166
  ? K
147
167
  : never]: K extends keyof Model['Relations']
148
168
  ? Model['Relations'][K]['Shape'] extends unknown[]
149
- ? ShapeFromSelection<Model['Relations'][K]['Types'], Include[K]>[]
150
- : ShapeFromSelection<Model['Relations'][K]['Types'], Include[K]>
169
+ ? ShapeFromSelection<Types, TypesForRelation<Types, Model, K>, Include[K]>[]
170
+ : ShapeFromSelection<Types, TypesForRelation<Types, Model, K>, Include[K]>
151
171
  : unknown;
152
172
  }>;
153
173
 
@@ -372,7 +392,7 @@ export type RelatedFieldOptions<
372
392
  >;
373
393
  }) & {
374
394
  description?: string | false;
375
- type?: PrismaObjectRef<Model['Relations'][Field]['Types']>;
395
+ type?: PrismaObjectRef<TypesForRelation<Types, Model, Field>>;
376
396
  query?: QueryForField<Types, Args, Model['Include'][Field & keyof Model['Include']]>;
377
397
  };
378
398
 
@@ -643,7 +663,7 @@ export type RelatedConnectionOptions<
643
663
  ? {
644
664
  description?: string | false;
645
665
  query?: QueryForField<Types, Args, Model['Include'][Field & keyof Model['Include']]>;
646
- type?: PrismaObjectRef<Model['Relations'][Field]['Types']>;
666
+ type?: PrismaObjectRef<TypesForRelation<Types, Model, Field>>;
647
667
  cursor: CursorFromRelation<Model, Field>;
648
668
  defaultSize?: number | ((args: ConnectionArgs, ctx: Types['Context']) => number);
649
669
  maxSize?: number | ((args: ConnectionArgs, ctx: Types['Context']) => number);