@pothos/plugin-prisma 3.1.1 → 3.3.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 (145) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/{esm → dts}/field-builder.d.ts +0 -0
  3. package/{esm → dts}/field-builder.d.ts.map +0 -0
  4. package/{esm → dts}/generator.d.ts +0 -0
  5. package/{esm → dts}/generator.d.ts.map +0 -0
  6. package/{esm → dts}/global-types.d.ts +0 -0
  7. package/{esm → dts}/global-types.d.ts.map +0 -0
  8. package/{esm → dts}/index.d.ts +0 -0
  9. package/{esm → dts}/index.d.ts.map +0 -0
  10. package/{esm → dts}/model-loader.d.ts +0 -0
  11. package/{esm → dts}/model-loader.d.ts.map +0 -0
  12. package/{esm → dts}/node-ref.d.ts +0 -0
  13. package/{esm → dts}/node-ref.d.ts.map +0 -0
  14. package/{esm → dts}/object-ref.d.ts +0 -0
  15. package/{esm → dts}/object-ref.d.ts.map +0 -0
  16. package/{esm → dts}/prisma-field-builder.d.ts +0 -0
  17. package/{esm → dts}/prisma-field-builder.d.ts.map +0 -0
  18. package/{esm → dts}/schema-builder.d.ts +0 -0
  19. package/{esm → dts}/schema-builder.d.ts.map +0 -0
  20. package/{esm → dts}/types.d.ts +0 -0
  21. package/{esm → dts}/types.d.ts.map +0 -0
  22. package/{esm → dts}/util/cursors.d.ts +0 -0
  23. package/{esm → dts}/util/cursors.d.ts.map +0 -0
  24. package/{esm → dts}/util/datamodel.d.ts +0 -0
  25. package/{esm → dts}/util/datamodel.d.ts.map +0 -0
  26. package/{esm → dts}/util/deep-equal.d.ts +0 -0
  27. package/{esm → dts}/util/deep-equal.d.ts.map +0 -0
  28. package/{esm → dts}/util/loader-map.d.ts +0 -0
  29. package/{esm → dts}/util/loader-map.d.ts.map +0 -0
  30. package/{esm → dts}/util/map-query.d.ts +0 -0
  31. package/{esm → dts}/util/map-query.d.ts.map +0 -0
  32. package/{esm → dts}/util/relation-map.d.ts +0 -0
  33. package/{esm → dts}/util/relation-map.d.ts.map +0 -0
  34. package/{esm → dts}/util/selections.d.ts +0 -0
  35. package/{esm → dts}/util/selections.d.ts.map +0 -0
  36. package/esm/field-builder.js +37 -29
  37. package/esm/field-builder.js.map +1 -1
  38. package/esm/generator.js +41 -30
  39. package/esm/generator.js.map +1 -1
  40. package/esm/global-types.js +1 -1
  41. package/esm/global-types.js.map +1 -1
  42. package/esm/index.js +12 -14
  43. package/esm/index.js.map +1 -1
  44. package/esm/model-loader.js +11 -9
  45. package/esm/model-loader.js.map +1 -1
  46. package/esm/node-ref.js +3 -5
  47. package/esm/node-ref.js.map +1 -1
  48. package/esm/object-ref.js.map +1 -1
  49. package/esm/prisma-field-builder.js +147 -113
  50. package/esm/prisma-field-builder.js.map +1 -1
  51. package/esm/schema-builder.js +24 -21
  52. package/esm/schema-builder.js.map +1 -1
  53. package/esm/types.js +0 -1
  54. package/esm/types.js.map +1 -1
  55. package/esm/util/cursors.js +22 -25
  56. package/esm/util/cursors.js.map +1 -1
  57. package/esm/util/datamodel.js +8 -7
  58. package/esm/util/datamodel.js.map +1 -1
  59. package/esm/util/deep-equal.js +1 -2
  60. package/esm/util/deep-equal.js.map +1 -1
  61. package/esm/util/loader-map.js +6 -3
  62. package/esm/util/loader-map.js.map +1 -1
  63. package/esm/util/map-query.js +53 -30
  64. package/esm/util/map-query.js.map +1 -1
  65. package/esm/util/relation-map.js +6 -4
  66. package/esm/util/relation-map.js.map +1 -1
  67. package/esm/util/selections.js +14 -19
  68. package/esm/util/selections.js.map +1 -1
  69. package/jest.config.js +6 -0
  70. package/lib/field-builder.js +92 -61
  71. package/lib/field-builder.js.map +1 -1
  72. package/lib/generator.js +105 -90
  73. package/lib/generator.js.map +1 -1
  74. package/lib/global-types.js +4 -1
  75. package/lib/global-types.js.map +1 -1
  76. package/lib/index.js +76 -53
  77. package/lib/index.js.map +1 -1
  78. package/lib/model-loader.js +26 -21
  79. package/lib/model-loader.js.map +1 -1
  80. package/lib/node-ref.js +12 -10
  81. package/lib/node-ref.js.map +1 -1
  82. package/lib/object-ref.js +9 -5
  83. package/lib/object-ref.js.map +1 -1
  84. package/lib/prisma-field-builder.js +169 -124
  85. package/lib/prisma-field-builder.js.map +1 -1
  86. package/lib/schema-builder.js +76 -71
  87. package/lib/schema-builder.js.map +1 -1
  88. package/lib/types.js +6 -3
  89. package/lib/types.js.map +1 -1
  90. package/lib/util/cursors.js +41 -41
  91. package/lib/util/cursors.js.map +1 -1
  92. package/lib/util/datamodel.js +39 -30
  93. package/lib/util/datamodel.js.map +1 -1
  94. package/lib/util/deep-equal.js +8 -7
  95. package/lib/util/deep-equal.js.map +1 -1
  96. package/lib/util/loader-map.js +21 -15
  97. package/lib/util/loader-map.js.map +1 -1
  98. package/lib/util/map-query.js +89 -67
  99. package/lib/util/map-query.js.map +1 -1
  100. package/lib/util/relation-map.js +19 -12
  101. package/lib/util/relation-map.js.map +1 -1
  102. package/lib/util/selections.js +44 -48
  103. package/lib/util/selections.js.map +1 -1
  104. package/package.json +19 -17
  105. package/src/field-builder.ts +1 -1
  106. package/src/generator.ts +22 -1
  107. package/src/prisma-field-builder.ts +4 -4
  108. package/src/schema-builder.ts +1 -10
  109. package/tsconfig.json +7 -14
  110. package/tsconfig.type.json +10 -0
  111. package/tsconfig.type.tsbuildinfo +1 -0
  112. package/lib/field-builder.d.ts +0 -2
  113. package/lib/field-builder.d.ts.map +0 -1
  114. package/lib/generator.d.ts +0 -2
  115. package/lib/generator.d.ts.map +0 -1
  116. package/lib/global-types.d.ts +0 -70
  117. package/lib/global-types.d.ts.map +0 -1
  118. package/lib/index.d.ts +0 -14
  119. package/lib/index.d.ts.map +0 -1
  120. package/lib/model-loader.d.ts +0 -17
  121. package/lib/model-loader.d.ts.map +0 -1
  122. package/lib/node-ref.d.ts +0 -12
  123. package/lib/node-ref.d.ts.map +0 -1
  124. package/lib/object-ref.d.ts +0 -7
  125. package/lib/object-ref.d.ts.map +0 -1
  126. package/lib/prisma-field-builder.d.ts +0 -47
  127. package/lib/prisma-field-builder.d.ts.map +0 -1
  128. package/lib/schema-builder.d.ts +0 -2
  129. package/lib/schema-builder.d.ts.map +0 -1
  130. package/lib/types.d.ts +0 -174
  131. package/lib/types.d.ts.map +0 -1
  132. package/lib/util/cursors.d.ts +0 -57
  133. package/lib/util/cursors.d.ts.map +0 -1
  134. package/lib/util/datamodel.d.ts +0 -16
  135. package/lib/util/datamodel.d.ts.map +0 -1
  136. package/lib/util/deep-equal.d.ts +0 -2
  137. package/lib/util/deep-equal.d.ts.map +0 -1
  138. package/lib/util/loader-map.d.ts +0 -6
  139. package/lib/util/loader-map.d.ts.map +0 -1
  140. package/lib/util/map-query.d.ts +0 -6
  141. package/lib/util/map-query.d.ts.map +0 -1
  142. package/lib/util/relation-map.d.ts +0 -9
  143. package/lib/util/relation-map.d.ts.map +0 -1
  144. package/lib/util/selections.d.ts +0 -20
  145. package/lib/util/selections.d.ts.map +0 -1
package/esm/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AACA,OAAO,EAkBL,YAAY,GAEb,MAAM,cAAc,CAAC;AAQtB,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC"}
1
+ {"version":3,"sources":["../src/types.ts"],"sourcesContent":["import { GraphQLResolveInfo } from 'graphql';\nimport {\n FieldKind,\n FieldMap,\n FieldNullability,\n FieldOptionsFromKind,\n InputFieldMap,\n InputFieldsFromShape,\n InputShapeFromFields,\n InterfaceParam,\n ListResolveValue,\n MaybePromise,\n Normalize,\n ObjectRef,\n OutputShape,\n OutputType,\n SchemaTypes,\n ShapeFromTypeParam,\n ShapeWithNullability,\n typeBrandKey,\n TypeParam,\n} from '@pothos/core';\nimport { PrismaObjectFieldBuilder } from './field-builder';\nimport { PrismaObjectRef } from './object-ref';\n\nexport interface PrismaDelegate {\n findUnique: (...args: any[]) => Promise<unknown>;\n}\n\nexport const prismaModelName = Symbol.for('Pothos.prismaModelName');\n\nexport interface PrismaModelTypes {\n Name: string;\n Shape: {};\n Include: unknown;\n Select: unknown;\n Where: {};\n Fields: string;\n ListRelations: string;\n RelationName: string;\n Relations: Record<\n string,\n {\n Shape: unknown;\n Types: PrismaModelTypes;\n }\n >;\n}\n\ntype ExtractModel<Types extends SchemaTypes, ParentShape> = ParentShape extends {\n [prismaModelName]?: infer Name;\n}\n ? Types['PrismaTypes'][Name & keyof Types['PrismaTypes']] extends infer Model\n ? Model extends PrismaModelTypes\n ? Model\n : never\n : never\n : never;\n\nexport type PrismaObjectFieldOptions<\n Types extends SchemaTypes,\n ParentShape,\n Type extends TypeParam<Types>,\n Nullable extends FieldNullability<Type>,\n Args extends InputFieldMap,\n Select,\n ResolveReturnShape,\n> = PothosSchemaTypes.ObjectFieldOptions<\n Types,\n unknown extends Select\n ? ParentShape\n : ParentShape &\n ShapeFromSelection<\n ExtractModel<Types, ParentShape>,\n { select: Select extends (...args: any[]) => infer S ? S : Select }\n >,\n Type,\n Nullable,\n Args,\n ResolveReturnShape\n> & {\n select?: Select &\n (\n | ExtractModel<Types, ParentShape>['Select']\n | ((\n args: InputShapeFromFields<Args>,\n ctx: Types['Context'],\n ) => ExtractModel<Types, ParentShape>['Select'])\n );\n};\n\ntype PrismaObjectFieldsShape<\n Types extends SchemaTypes,\n Model extends PrismaModelTypes,\n NeedsResolve extends boolean,\n Shape extends object,\n Select,\n> = Model['Select'] extends Select\n ? (t: PrismaObjectFieldBuilder<Types, Model, NeedsResolve, Shape>) => FieldMap\n : (t: PrismaSelectionFieldBuilder<Types, Model, Shape>) => FieldMap;\n\ntype PrismaSelectionFieldBuilder<\n Types extends SchemaTypes,\n Model extends PrismaModelTypes,\n Shape extends object,\n> = PrismaObjectFieldBuilder<Types, Model, false, Shape>;\n\ninterface BaseSelection {\n include?: unknown;\n select?: unknown;\n}\n\nexport type SelectedKeys<T> = { [K in keyof T]: T[K] extends false ? never : K }[keyof T];\n\nexport type ShapeFromSelection<Model extends PrismaModelTypes, Selection> = Normalize<\n Selection extends BaseSelection\n ? unknown extends Selection['select']\n ? Model['Shape'] & RelationShapeFromInclude<Model, Selection['include']>\n : Pick<Model['Shape'], SelectedKeys<Selection['select']>> &\n RelationShapeFromInclude<Model, Selection['select']>\n : Model['Shape']\n>;\n\ntype RelationShapeFromInclude<Model extends PrismaModelTypes, Include> = Normalize<{\n [K in SelectedKeys<Include> as K extends Model['RelationName']\n ? K\n : never]: K extends keyof Model['Relations']\n ? Model['Relations'][K]['Shape'] extends unknown[]\n ? ShapeFromSelection<Model['Relations'][K]['Types'], Include[K]>[]\n : ShapeFromSelection<Model['Relations'][K]['Types'], Include[K]>\n : unknown;\n}>;\n\nexport type PrismaObjectTypeOptions<\n Types extends SchemaTypes,\n Model extends PrismaModelTypes,\n Interfaces extends InterfaceParam<Types>[],\n FindUnique,\n Include,\n Select,\n Shape extends object,\n> = NameOrVariant &\n Omit<\n | PothosSchemaTypes.ObjectTypeOptions<Types, Shape>\n | PothosSchemaTypes.ObjectTypeWithInterfaceOptions<Types, Shape, Interfaces>,\n 'fields'\n > & {\n fields?: PrismaObjectFieldsShape<\n Types,\n Model,\n FindUnique extends null ? true : false,\n Shape & (FindUnique extends null ? {} : { [prismaModelName]?: Model['Name'] }),\n Select\n >;\n } & (\n | {\n include?: Include & Model['Include'];\n select?: never;\n findUnique: FindUnique &\n (((parent: Shape, context: Types['Context']) => Model['Where']) | null);\n }\n | {\n select: Model['Select'] & Select;\n include?: never;\n findUnique: (parent: Shape, context: Types['Context']) => Model['Where'];\n }\n );\n\ntype NameOrVariant =\n | {\n name?: never;\n variant?: string;\n }\n | {\n name?: string;\n variant?: never;\n };\n\nexport type PrismaNodeOptions<\n Types extends SchemaTypes,\n Model extends PrismaModelTypes,\n Interfaces extends InterfaceParam<Types>[],\n Include,\n Select,\n Shape extends object,\n> = NameOrVariant &\n Omit<\n | PothosSchemaTypes.ObjectTypeOptions<Types, Shape>\n | PothosSchemaTypes.ObjectTypeWithInterfaceOptions<Types, Shape, Interfaces>,\n 'fields' | 'isTypeOf'\n > & {\n id: Omit<\n FieldOptionsFromKind<\n Types,\n Shape,\n 'ID',\n false,\n {},\n 'Object',\n OutputShape<Types, 'ID'>,\n MaybePromise<OutputShape<Types, 'ID'>>\n >,\n 'args' | 'nullable' | 'resolve' | 'type'\n > & {\n resolve: (parent: Shape, context: Types['Context']) => MaybePromise<OutputShape<Types, 'ID'>>;\n };\n fields?: PrismaObjectFieldsShape<\n Types,\n Model,\n false,\n Shape & { [prismaModelName]?: Model['Name'] },\n Select\n >;\n findUnique: (id: string, context: Types['Context']) => Model['Where'];\n } & (\n | {\n include?: Include & Model['Include'];\n select?: never;\n }\n | {\n select: Model['Select'] & Select;\n include?: never;\n }\n );\n\ntype QueryForField<\n Types extends SchemaTypes,\n Args extends InputFieldMap,\n Include,\n> = Include extends { where?: unknown }\n ?\n | Omit<Include, 'include' | 'select'>\n | ((\n args: InputShapeFromFields<Args>,\n ctx: Types['Context'],\n ) => Omit<Include, 'include' | 'select'>)\n : never;\n\ntype QueryFromRelation<\n Model extends PrismaModelTypes,\n Field extends keyof Model['Include'],\n> = Model['Include'][Field] extends infer Include\n ? Include extends {\n include?: infer I;\n select?: infer S;\n }\n ? { include?: NonNullable<I>; select?: NonNullable<S> }\n : never\n : never;\n\ntype CursorFromRelation<\n Model extends PrismaModelTypes,\n Field extends Model['ListRelations'],\n> = Field extends keyof Model['Include']\n ? Model['Include'][Field] extends infer Include\n ? Include extends { cursor?: infer T }\n ? keyof T\n : never\n : never\n : never;\n\ntype RefForRelation<\n Model extends PrismaModelTypes,\n Field extends keyof Model['Relations'],\n> = Model['Relations'][Field] extends unknown[]\n ? [ObjectRef<Model['Relations'][Field]>]\n : ObjectRef<Model['Relations'][Field]>;\n\nexport type RelatedFieldOptions<\n Types extends SchemaTypes,\n Model extends PrismaModelTypes,\n Field extends keyof Model['Relations'],\n Nullable extends boolean,\n Args extends InputFieldMap,\n ResolveReturnShape,\n NeedsResolve extends boolean,\n Shape,\n> = Omit<\n PothosSchemaTypes.ObjectFieldOptions<\n Types,\n Shape,\n RefForRelation<Model, Field>,\n Nullable,\n Args,\n ResolveReturnShape\n >,\n 'resolve' | 'type'\n> &\n (NeedsResolve extends false\n ? {\n resolve?: (\n query: QueryFromRelation<Model, Field & keyof Model['Include']>,\n parent: Shape,\n args: InputShapeFromFields<Args>,\n context: Types['Context'],\n info: GraphQLResolveInfo,\n ) => MaybePromise<\n ShapeWithNullability<Types, Model['Relations'][Field]['Shape'], Nullable>\n >;\n }\n : {\n resolve: (\n query: QueryFromRelation<Model, Field & keyof Model['Include']>,\n parent: Shape,\n args: InputShapeFromFields<Args>,\n context: Types['Context'],\n info: GraphQLResolveInfo,\n ) => MaybePromise<\n ShapeWithNullability<Types, Model['Relations'][Field]['Shape'], Nullable>\n >;\n }) & {\n type?: PrismaObjectRef<Model['Relations'][Field]['Types']>;\n query?: QueryForField<Types, Args, Model['Include'][Field & keyof Model['Include']]>;\n };\n\nexport type VariantFieldOptions<\n Types extends SchemaTypes,\n Model extends PrismaModelTypes,\n Variant extends PrismaObjectRef<Model>,\n> = Omit<\n PothosSchemaTypes.ObjectFieldOptions<Types, Model['Shape'], Variant, false, {}, Model['Shape']>,\n 'resolve' | 'type'\n>;\n\nexport type RelationCountOptions<\n Types extends SchemaTypes,\n Shape,\n NeedsResolve extends boolean,\n> = Omit<\n PothosSchemaTypes.ObjectFieldOptions<Types, Shape, 'Int', false, {}, number>,\n 'resolve' | 'type'\n> &\n (NeedsResolve extends false\n ? {\n resolve?: (\n parent: Shape,\n args: {},\n context: Types['Context'],\n info: GraphQLResolveInfo,\n ) => MaybePromise<number>;\n }\n : {\n resolve: (\n parent: Shape,\n args: {},\n context: Types['Context'],\n info: GraphQLResolveInfo,\n ) => MaybePromise<number>;\n });\n\nexport type PrismaFieldOptions<\n Types extends SchemaTypes,\n ParentShape,\n Type extends\n | PrismaObjectRef<PrismaModelTypes>\n | keyof Types['PrismaTypes']\n | [keyof Types['PrismaTypes']]\n | [PrismaObjectRef<PrismaModelTypes>],\n Model extends PrismaModelTypes,\n Param extends TypeParam<Types>,\n Args extends InputFieldMap,\n Nullable extends FieldNullability<Param>,\n ResolveReturnShape,\n Kind extends FieldKind = FieldKind,\n> = Omit<\n FieldOptionsFromKind<\n Types,\n ParentShape,\n Param,\n Nullable,\n Args,\n Kind,\n ParentShape,\n ResolveReturnShape\n >,\n 'resolve' | 'type'\n> & {\n type: Type;\n resolve: (\n query: {\n include?: Model['Include'];\n },\n parent: ParentShape,\n args: InputShapeFromFields<Args>,\n context: Types['Context'],\n info: GraphQLResolveInfo,\n ) => ShapeFromTypeParam<Types, Param, Nullable> extends infer Shape\n ? [Shape] extends [[readonly (infer Item)[] | null | undefined]]\n ? ListResolveValue<Shape, Item, ResolveReturnShape>\n : MaybePromise<Shape>\n : never;\n};\n\nexport type PrismaConnectionFieldOptions<\n Types extends SchemaTypes,\n ParentShape,\n Type extends PrismaObjectRef<PrismaModelTypes> | keyof Types['PrismaTypes'],\n Model extends PrismaModelTypes,\n Param extends OutputType<Types>,\n Nullable extends boolean,\n Args extends InputFieldMap,\n ResolveReturnShape,\n Kind extends FieldKind,\n> = Omit<\n PothosSchemaTypes.ConnectionFieldOptions<\n Types,\n ParentShape,\n Param,\n Nullable,\n false,\n false,\n Args,\n ResolveReturnShape\n >,\n 'resolve' | 'type'\n> &\n Omit<\n FieldOptionsFromKind<\n Types,\n ParentShape,\n Param,\n Nullable,\n Args & InputFieldsFromShape<PothosSchemaTypes.DefaultConnectionArguments>,\n Kind,\n ParentShape,\n ResolveReturnShape\n >,\n 'args' | 'resolve' | 'type'\n > & {\n type: Type;\n cursor: string & keyof Model['Where'];\n defaultSize?: number;\n maxSize?: number;\n resolve: (\n query: {\n include?: Model['Include'];\n cursor?: {};\n take: number;\n skip: number;\n },\n parent: ParentShape,\n args: InputShapeFromFields<Args> & PothosSchemaTypes.DefaultConnectionArguments,\n context: Types['Context'],\n info: GraphQLResolveInfo,\n ) => MaybePromise<Model['Shape'][]>;\n totalCount?: (\n parent: ParentShape,\n args: InputShapeFromFields<Args> & PothosSchemaTypes.DefaultConnectionArguments,\n context: Types['Context'],\n info: GraphQLResolveInfo,\n ) => MaybePromise<number>;\n };\n\nexport type RelatedConnectionOptions<\n Types extends SchemaTypes,\n Model extends PrismaModelTypes,\n Field extends Model['ListRelations'],\n Nullable extends boolean,\n Args extends InputFieldMap,\n NeedsResolve extends boolean,\n> = Omit<\n PothosSchemaTypes.ObjectFieldOptions<\n Types,\n Model['Shape'],\n ObjectRef<unknown>,\n Nullable,\n Args,\n unknown\n >,\n 'resolve' | 'type'\n> &\n Omit<\n PothosSchemaTypes.ConnectionFieldOptions<\n Types,\n Model['Shape'],\n ObjectRef<unknown>,\n false,\n false,\n Nullable,\n Args,\n unknown\n >,\n 'resolve' | 'type'\n > & {\n query?: QueryForField<Types, Args, Model['Include'][Field & keyof Model['Include']]>;\n type?: PrismaObjectRef<Model['Relations'][Field]['Types']>;\n cursor: CursorFromRelation<Model, Field>;\n defaultSize?: number;\n maxSize?: number;\n totalCount?: NeedsResolve extends false ? boolean : false;\n } & (NeedsResolve extends false\n ? {\n resolve?: (\n query: {\n include?: Model['Include'];\n cursor?: {};\n take: number;\n skip: number;\n },\n parent: Model['Shape'],\n args: InputShapeFromFields<Args>,\n context: Types['Context'],\n info: GraphQLResolveInfo,\n ) => MaybePromise<Model['Relations'][Field & keyof Model['Relations']]>;\n }\n : {\n resolve: (\n query: {\n include?: Model['Include'];\n cursor?: {};\n take: number;\n skip: number;\n },\n parent: Model['Shape'],\n args: InputShapeFromFields<Args>,\n context: Types['Context'],\n info: GraphQLResolveInfo,\n ) => MaybePromise<Model['Relations'][Field & keyof Model['Relations']]>;\n });\n\nexport type WithBrand<T> = T & { [typeBrandKey]: string };\n\nexport type IncludeMap = Record<string, SelectionMap | boolean>;\n\nexport interface SelectionMap {\n select?: Record<string, SelectionMap | boolean>;\n include?: Record<string, SelectionMap | boolean>;\n where?: {};\n}\n\nexport type FieldSelection =\n | Record<string, SelectionMap | boolean>\n | ((\n args: object,\n context: object,\n query: (\n selection: SelectionMap | boolean | ((args: object, context: object) => SelectionMap),\n ) => SelectionMap | boolean,\n ) => SelectionMap);\n\nexport type LoaderMappings = Record<\n string,\n {\n field: string;\n mappings: LoaderMappings;\n indirectPath: string[];\n }\n>;\n\nexport interface IndirectInclude {\n getType: () => string;\n path: { type?: string; name: string }[];\n}\n\nexport type ShapeFromConnection<T> = T extends { shape: unknown } ? T['shape'] : never;\n"],"names":["prismaModelName","Symbol","for"],"mappings":"AA6BA,OAAO,MAAMA,eAAe,GAAGC,MAAM,CAACC,GAAG,CAAC,wBAAwB,CAAC,CAAC"}
@@ -58,8 +58,7 @@ export function parseCompositeCursor(fields) {
58
58
  return record;
59
59
  };
60
60
  }
61
- export function prismaCursorConnectionQuery({ args: { before, after, first, last }, maxSize = DEFAULT_MAX_SIZE, defaultSize = DEFAULT_SIZE, parseCursor, }) {
62
- var _a;
61
+ export function prismaCursorConnectionQuery({ args: { before, after, first, last }, maxSize = DEFAULT_MAX_SIZE, defaultSize = DEFAULT_SIZE, parseCursor }) {
63
62
  if (first != null && first < 0) {
64
63
  throw new TypeError("Argument \"first\" must be a non-negative integer");
65
64
  }
@@ -79,48 +78,46 @@ export function prismaCursorConnectionQuery({ args: { before, after, first, last
79
78
  throw new Error("Arguments \"after\" and \"last\" are not supported at the same time");
80
79
  }
81
80
  const cursor = before !== null && before !== void 0 ? before : after;
82
- let take = Math.min((_a = first !== null && first !== void 0 ? first : last) !== null && _a !== void 0 ? _a : defaultSize, maxSize) + 1;
81
+ var ref;
82
+ let take = Math.min((ref = first !== null && first !== void 0 ? first : last) !== null && ref !== void 0 ? ref : defaultSize, maxSize) + 1;
83
83
  if (before) {
84
84
  take = -take;
85
85
  }
86
- return cursor == null
87
- ? { take, skip: 0 }
88
- : {
89
- cursor: parseCursor(cursor),
90
- take,
91
- skip: 1,
92
- };
86
+ return cursor == null ? {
87
+ take,
88
+ skip: 0
89
+ } : {
90
+ cursor: parseCursor(cursor),
91
+ take,
92
+ skip: 1
93
+ };
93
94
  }
94
95
  export function wrapConnectionResult(results, args, take, cursor, totalCount) {
95
- var _a, _b;
96
+ var ref, ref1;
96
97
  const gotFullResults = results.length === Math.abs(take);
97
98
  const hasNextPage = args.before ? true : gotFullResults;
98
99
  const hasPreviousPage = args.after ? true : args.before ? gotFullResults : false;
99
- const nodes = gotFullResults
100
- ? results.slice(take < 0 ? 1 : 0, take < 0 ? results.length : -1)
101
- : results;
102
- const edges = nodes.map((value, index) => value == null
103
- ? null
104
- : {
105
- cursor: cursor(value),
106
- node: value,
107
- });
100
+ const nodes = gotFullResults ? results.slice(take < 0 ? 1 : 0, take < 0 ? results.length : -1) : results;
101
+ const edges = nodes.map((value, index) => value == null ? null : {
102
+ cursor: cursor(value),
103
+ node: value
104
+ });
108
105
  return {
109
106
  totalCount,
110
107
  edges,
111
108
  pageInfo: {
112
- startCursor: (_a = edges[0]) === null || _a === void 0 ? void 0 : _a.cursor,
113
- endCursor: (_b = edges[edges.length - 1]) === null || _b === void 0 ? void 0 : _b.cursor,
109
+ startCursor: (ref = edges[0]) === null || ref === void 0 ? void 0 : ref.cursor,
110
+ endCursor: (ref1 = edges[edges.length - 1]) === null || ref1 === void 0 ? void 0 : ref1.cursor,
114
111
  hasPreviousPage,
115
- hasNextPage,
116
- },
112
+ hasNextPage
113
+ }
117
114
  };
118
115
  }
119
116
  export async function resolvePrismaCursorConnection(options, cursor, resolve) {
120
117
  const query = prismaCursorConnectionQuery(options);
121
118
  const results = await resolve({
122
119
  ...options.query,
123
- ...query,
120
+ ...query
124
121
  });
125
122
  return wrapConnectionResult(results, options.args, query.take, cursor, options.totalCount);
126
123
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cursors.js","sourceRoot":"","sources":["../../src/util/cursors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/util/cursors.ts"],"sourcesContent":["/* eslint-disable no-nested-ternary */\nimport { MaybePromise } from '@pothos/core';\n\nconst DEFAULT_MAX_SIZE = 100;\nconst DEFAULT_SIZE = 20;\n\nexport function formatCursorChunk(value: unknown) {\n if (value instanceof Date) {\n return `D:${String(Number(value))}`;\n }\n\n switch (typeof value) {\n case 'number':\n return `N:${value}`;\n case 'string':\n return `S:${value}`;\n default:\n throw new TypeError(`Unsupported cursor type ${typeof value}`);\n }\n}\n\nexport function formatCursor(fields: string | string[]) {\n return (value: Record<string, unknown>) => {\n if (typeof fields === 'string') {\n return Buffer.from(`GPC:${formatCursorChunk(value[fields])}`).toString('base64');\n }\n\n return Buffer.from(`GPC:J:${JSON.stringify(fields.map((name) => value[name]))}`).toString(\n 'base64',\n );\n };\n}\n\nexport function parseRawCursor(cursor: unknown) {\n if (typeof cursor !== 'string') {\n throw new TypeError('Cursor must be a string');\n }\n\n try {\n const decoded = Buffer.from(cursor, 'base64').toString();\n const [, type, value] = decoded.match(/^GPC:(\\w):(.*)/) as [string, string, string];\n\n switch (type) {\n case 'S':\n return value;\n case 'N':\n return Number.parseInt(value, 10);\n case 'D':\n return new Date(Number.parseInt(value, 10));\n case 'J':\n return JSON.parse(value) as unknown;\n default:\n throw new TypeError(`Invalid cursor type ${type}`);\n }\n } catch {\n throw new Error(`Invalid cursor: ${cursor}`);\n }\n}\n\nexport function parseCompositeCursor(fields: string[]) {\n return (cursor: string) => {\n const parsed = parseRawCursor(cursor) as unknown[];\n\n if (!Array.isArray(parsed)) {\n throw new TypeError(`Expected compound cursor to contain an array, but got ${parsed}`);\n }\n\n const record: Record<string, unknown> = {};\n\n fields.forEach((field, i) => {\n record[field] = parsed[i];\n });\n\n return record;\n };\n}\n\nexport interface PrismaCursorConnectionQueryOptions {\n args: PothosSchemaTypes.DefaultConnectionArguments;\n defaultSize?: number;\n maxSize?: number;\n parseCursor: (cursor: string) => Record<string, unknown>;\n}\n\ninterface ResolvePrismaCursorConnectionOptions extends PrismaCursorConnectionQueryOptions {\n query: {};\n totalCount?: number | (() => MaybePromise<number>);\n}\n\nexport function prismaCursorConnectionQuery({\n args: { before, after, first, last },\n maxSize = DEFAULT_MAX_SIZE,\n defaultSize = DEFAULT_SIZE,\n parseCursor,\n}: PrismaCursorConnectionQueryOptions) {\n if (first != null && first < 0) {\n throw new TypeError('Argument \"first\" must be a non-negative integer');\n }\n\n if (last != null && last < 0) {\n throw new Error('Argument \"last\" must be a non-negative integer');\n }\n\n if (before && after) {\n throw new Error('Arguments \"before\" and \"after\" are not supported at the same time');\n }\n\n if (before != null && last == null) {\n throw new Error('Argument \"last\" must be provided when using \"before\"');\n }\n\n if (before != null && first != null) {\n throw new Error('Arguments \"before\" and \"first\" are not supported at the same time');\n }\n\n if (after != null && last != null) {\n throw new Error('Arguments \"after\" and \"last\" are not supported at the same time');\n }\n\n const cursor = before ?? after;\n\n let take = Math.min(first ?? last ?? defaultSize, maxSize) + 1;\n\n if (before) {\n take = -take;\n }\n\n return cursor == null\n ? { take, skip: 0 }\n : {\n cursor: parseCursor(cursor),\n take,\n skip: 1,\n };\n}\n\nexport function wrapConnectionResult<T extends {}>(\n results: T[],\n args: PothosSchemaTypes.DefaultConnectionArguments,\n take: number,\n cursor: (node: T) => string,\n totalCount?: number | (() => MaybePromise<number>),\n) {\n const gotFullResults = results.length === Math.abs(take);\n const hasNextPage = args.before ? true : gotFullResults;\n const hasPreviousPage = args.after ? true : args.before ? gotFullResults : false;\n const nodes = gotFullResults\n ? results.slice(take < 0 ? 1 : 0, take < 0 ? results.length : -1)\n : results;\n\n const edges = nodes.map((value, index) =>\n value == null\n ? null\n : {\n cursor: cursor(value),\n node: value,\n },\n );\n\n return {\n totalCount,\n edges,\n pageInfo: {\n startCursor: edges[0]?.cursor,\n endCursor: edges[edges.length - 1]?.cursor,\n hasPreviousPage,\n hasNextPage,\n },\n };\n}\n\nexport async function resolvePrismaCursorConnection<T extends {}>(\n options: ResolvePrismaCursorConnectionOptions,\n cursor: (node: T) => string,\n resolve: (query: { include?: {}; cursor?: {}; take: number; skip: number }) => MaybePromise<T[]>,\n) {\n const query = prismaCursorConnectionQuery(options);\n const results = await resolve({\n ...options.query,\n ...query,\n });\n\n return wrapConnectionResult(results, options.args, query.take, cursor, options.totalCount);\n}\n"],"names":["DEFAULT_MAX_SIZE","DEFAULT_SIZE","formatCursorChunk","value","Date","String","Number","TypeError","formatCursor","fields","Buffer","from","toString","JSON","stringify","map","name","parseRawCursor","cursor","decoded","type","match","parseInt","parse","Error","parseCompositeCursor","parsed","Array","isArray","record","forEach","field","i","prismaCursorConnectionQuery","args","before","after","first","last","maxSize","defaultSize","parseCursor","take","Math","min","skip","wrapConnectionResult","results","totalCount","edges","gotFullResults","length","abs","hasNextPage","hasPreviousPage","nodes","slice","index","node","pageInfo","startCursor","endCursor","resolvePrismaCursorConnection","options","resolve","query"],"mappings":"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"}
@@ -27,8 +27,7 @@ export function getRelation(name, builder, relation) {
27
27
  export function getModel(name, builder) {
28
28
  const { client } = builder.options.prisma;
29
29
  // eslint-disable-next-line no-underscore-dangle
30
- const dmmf = client
31
- ._dmmf;
30
+ const dmmf = client._dmmf;
32
31
  const modelData = dmmf.modelMap[name];
33
32
  if (!modelData) {
34
33
  throw new Error(`Model '${name}' not found in DMMF`);
@@ -36,18 +35,20 @@ export function getModel(name, builder) {
36
35
  return modelData;
37
36
  }
38
37
  export function getCursorFormatter(name, builder, cursor) {
39
- var _a, _b, _c;
38
+ var ref, ref1;
40
39
  const modelData = getModel(name, builder);
41
- const primaryKey = (_b = (_a = modelData.primaryKey) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : (_c = modelData.primaryKey) === null || _c === void 0 ? void 0 : _c.fields.join("_");
40
+ var ref2;
41
+ const primaryKey = (ref2 = (ref = modelData.primaryKey) === null || ref === void 0 ? void 0 : ref.name) !== null && ref2 !== void 0 ? ref2 : (ref1 = modelData.primaryKey) === null || ref1 === void 0 ? void 0 : ref1.fields.join("_");
42
42
  return formatCursor(cursor === primaryKey ? modelData.primaryKey.fields : cursor);
43
43
  }
44
44
  export function getCursorParser(name, builder, cursor) {
45
- var _a, _b, _c;
45
+ var ref, ref3;
46
46
  const modelData = getModel(name, builder);
47
- const primaryKey = (_b = (_a = modelData.primaryKey) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : (_c = modelData.primaryKey) === null || _c === void 0 ? void 0 : _c.fields.join("_");
47
+ var ref4;
48
+ const primaryKey = (ref4 = (ref = modelData.primaryKey) === null || ref === void 0 ? void 0 : ref.name) !== null && ref4 !== void 0 ? ref4 : (ref3 = modelData.primaryKey) === null || ref3 === void 0 ? void 0 : ref3.fields.join("_");
48
49
  const parser = cursor === primaryKey ? parseCompositeCursor(modelData.primaryKey.fields) : parseRawCursor;
49
50
  return (rawCursor) => ({
50
- [cursor]: parser(rawCursor),
51
+ [cursor]: parser(rawCursor)
51
52
  });
52
53
  }
53
54
  export function getDelegateFromModel(client, model) {
@@ -1 +1 @@
1
- {"version":3,"file":"datamodel.js","sourceRoot":"","sources":["../../src/util/datamodel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/util/datamodel.ts"],"sourcesContent":["import { ObjectRef, SchemaTypes } from '@pothos/core';\nimport { Prisma } from '../../tests/client';\nimport { PrismaObjectRef } from '../object-ref';\nimport { PrismaDelegate, PrismaModelTypes } from '../types';\nimport { formatCursor, parseCompositeCursor, parseRawCursor } from './cursors';\n\nexport const refMap = new WeakMap<object, Map<string, PrismaObjectRef<PrismaModelTypes>>>();\nexport const findUniqueMap = new WeakMap<\n object,\n Map<ObjectRef<unknown>, ((args: unknown, ctx: {}) => unknown) | null>\n>();\n\nexport const includeForRefMap = new WeakMap<\n object,\n Map<ObjectRef<unknown>, Record<string, unknown> | null>\n>();\n\nexport function getRefFromModel<Types extends SchemaTypes>(\n name: string,\n builder: PothosSchemaTypes.SchemaBuilder<Types>,\n): PrismaObjectRef<PrismaModelTypes> {\n if (!refMap.has(builder)) {\n refMap.set(builder, new Map());\n }\n const cache = refMap.get(builder)!;\n\n if (!cache.has(name)) {\n cache.set(name, new PrismaObjectRef(name));\n }\n\n return cache.get(name)!;\n}\n\nexport function getRelation<Types extends SchemaTypes>(\n name: string,\n builder: PothosSchemaTypes.SchemaBuilder<Types>,\n relation: string,\n) {\n const modelData = getModel(name, builder);\n\n const fieldData = modelData.fields.find((field) => field.name === relation);\n\n if (!fieldData) {\n throw new Error(`Field '${relation}' not found in model '${name}'`);\n }\n\n if (fieldData.kind !== 'object') {\n throw new Error(`Field ${relation} of model '${name}' is not a relation (${fieldData.kind})`);\n }\n\n return fieldData;\n}\n\nexport function getModel<Types extends SchemaTypes>(\n name: string,\n builder: PothosSchemaTypes.SchemaBuilder<Types>,\n) {\n const { client } = builder.options.prisma;\n // eslint-disable-next-line no-underscore-dangle\n const dmmf = (client as unknown as { _dmmf: { modelMap: Record<string, Prisma.DMMF.Model> } })\n ._dmmf;\n const modelData = dmmf.modelMap[name];\n\n if (!modelData) {\n throw new Error(`Model '${name}' not found in DMMF`);\n }\n\n return modelData;\n}\n\nexport function getCursorFormatter<Types extends SchemaTypes>(\n name: string,\n builder: PothosSchemaTypes.SchemaBuilder<Types>,\n cursor: string,\n) {\n const modelData = getModel(name, builder);\n const primaryKey = modelData.primaryKey?.name ?? modelData.primaryKey?.fields.join('_');\n\n return formatCursor(cursor === primaryKey ? modelData.primaryKey!.fields : cursor);\n}\n\nexport function getCursorParser<Types extends SchemaTypes>(\n name: string,\n builder: PothosSchemaTypes.SchemaBuilder<Types>,\n cursor: string,\n) {\n const modelData = getModel(name, builder);\n const primaryKey = modelData.primaryKey?.name ?? modelData.primaryKey?.fields.join('_');\n\n const parser =\n cursor === primaryKey ? parseCompositeCursor(modelData.primaryKey!.fields) : parseRawCursor;\n\n return (rawCursor: string) => ({\n [cursor]: parser(rawCursor),\n });\n}\n\nexport function getDelegateFromModel(client: Record<string, unknown>, model: string) {\n const lowerCase = `${model.slice(0, 1).toLowerCase()}${model.slice(1)}`;\n\n const delegate = lowerCase in client ? client[lowerCase] : null;\n\n if (!delegate) {\n throw new Error(`Unable to find delegate for model ${model}`);\n }\n\n return delegate as PrismaDelegate;\n}\n"],"names":["PrismaObjectRef","formatCursor","parseCompositeCursor","parseRawCursor","refMap","WeakMap","findUniqueMap","includeForRefMap","getRefFromModel","name","builder","has","set","Map","cache","get","getRelation","relation","modelData","getModel","fieldData","fields","find","field","Error","kind","client","options","prisma","dmmf","_dmmf","modelMap","getCursorFormatter","cursor","primaryKey","join","getCursorParser","parser","rawCursor","getDelegateFromModel","model","lowerCase","slice","toLowerCase","delegate"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
- /* eslint-disable no-continue */
2
- export function deepEqual(left, right, ignore) {
1
+ /* eslint-disable no-continue */ export function deepEqual(left, right, ignore) {
3
2
  if (left === right) {
4
3
  return true;
5
4
  }
@@ -1 +1 @@
1
- {"version":3,"file":"deep-equal.js","sourceRoot":"","sources":["../../src/util/deep-equal.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,MAAM,UAAU,SAAS,CAAC,IAAa,EAAE,KAAc,EAAE,MAAoB;IAC3E,IAAI,IAAI,KAAK,KAAK,EAAE;QAClB,OAAO,IAAI,CAAC;KACb;IAED,IAAI,IAAI,IAAI,KAAK,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC1E,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACzB,OAAO,KAAK,CAAC;aACd;YAED,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;YAExB,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE;gBAC3B,OAAO,KAAK,CAAC;aACd;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;gBAClC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;oBACjC,OAAO,KAAK,CAAC;iBACd;aACF;YAED,OAAO,IAAI,CAAC;SACb;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;QAE9B,IAAI,SAAS,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE;YAC3C,OAAO,KAAK,CAAC;SACd;QAED,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,GAAG,CAAC,GAAG,CAAC,EAAE;gBACpB,SAAS;aACV;YAED,IACE,CAAC,SAAS,CAAE,IAAgC,CAAC,GAAG,CAAC,EAAG,KAAiC,CAAC,GAAG,CAAC,CAAC,EAC3F;gBACA,OAAO,KAAK,CAAC;aACd;SACF;QAED,OAAO,IAAI,CAAC;KACb;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"sources":["../../src/util/deep-equal.ts"],"sourcesContent":["/* eslint-disable no-continue */\nexport function deepEqual(left: unknown, right: unknown, ignore?: Set<string>) {\n if (left === right) {\n return true;\n }\n\n if (left && right && typeof left === 'object' && typeof right === 'object') {\n if (Array.isArray(left)) {\n if (!Array.isArray(right)) {\n return false;\n }\n\n const { length } = left;\n\n if (right.length !== length) {\n return false;\n }\n\n for (let i = 0; i < length; i += 1) {\n if (!deepEqual(left[i], right[i])) {\n return false;\n }\n }\n\n return true;\n }\n\n const keys = Object.keys(left);\n const keyLength = keys.length;\n\n if (keyLength !== Object.keys(right).length) {\n return false;\n }\n\n for (const key of keys) {\n if (ignore?.has(key)) {\n continue;\n }\n\n if (\n !deepEqual((left as Record<string, unknown>)[key], (right as Record<string, unknown>)[key])\n ) {\n return false;\n }\n }\n\n return true;\n }\n\n return false;\n}\n"],"names":["deepEqual","left","right","ignore","Array","isArray","length","i","keys","Object","keyLength","key","has"],"mappings":"AAAA,gCAAgC,CAChC,OAAO,SAASA,SAAS,CAACC,IAAa,EAAEC,KAAc,EAAEC,MAAoB,EAAE;IAC7E,IAAIF,IAAI,KAAKC,KAAK,EAAE;QAClB,OAAO,IAAI,CAAC;KACb;IAED,IAAID,IAAI,IAAIC,KAAK,IAAI,OAAOD,IAAI,KAAK,QAAQ,IAAI,OAAOC,KAAK,KAAK,QAAQ,EAAE;QAC1E,IAAIE,KAAK,CAACC,OAAO,CAACJ,IAAI,CAAC,EAAE;YACvB,IAAI,CAACG,KAAK,CAACC,OAAO,CAACH,KAAK,CAAC,EAAE;gBACzB,OAAO,KAAK,CAAC;aACd;YAED,MAAM,EAAEI,MAAM,CAAA,EAAE,GAAGL,IAAI,AAAC;YAExB,IAAIC,KAAK,CAACI,MAAM,KAAKA,MAAM,EAAE;gBAC3B,OAAO,KAAK,CAAC;aACd;YAED,IAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,MAAM,EAAEC,CAAC,IAAI,CAAC,CAAE;gBAClC,IAAI,CAACP,SAAS,CAACC,IAAI,CAACM,CAAC,CAAC,EAAEL,KAAK,CAACK,CAAC,CAAC,CAAC,EAAE;oBACjC,OAAO,KAAK,CAAC;iBACd;aACF;YAED,OAAO,IAAI,CAAC;SACb;QAED,MAAMC,IAAI,GAAGC,MAAM,CAACD,IAAI,CAACP,IAAI,CAAC,AAAC;QAC/B,MAAMS,SAAS,GAAGF,IAAI,CAACF,MAAM,AAAC;QAE9B,IAAII,SAAS,KAAKD,MAAM,CAACD,IAAI,CAACN,KAAK,CAAC,CAACI,MAAM,EAAE;YAC3C,OAAO,KAAK,CAAC;SACd;QAED,KAAK,MAAMK,GAAG,IAAIH,IAAI,CAAE;YACtB,IAAIL,MAAM,aAANA,MAAM,WAAK,GAAXA,KAAAA,CAAW,GAAXA,MAAM,CAAES,GAAG,CAACD,GAAG,CAAC,EAAE;gBACpB,SAAS;aACV;YAED,IACE,CAACX,SAAS,CAAC,AAACC,IAAI,AAA4B,CAACU,GAAG,CAAC,EAAE,AAACT,KAAK,AAA4B,CAACS,GAAG,CAAC,CAAC,EAC3F;gBACA,OAAO,KAAK,CAAC;aACd;SACF;QAED,OAAO,IAAI,CAAC;KACb;IAED,OAAO,KAAK,CAAC;CACd"}
@@ -19,15 +19,18 @@ export function setLoaderMappings(ctx, info, value, type) {
19
19
  Object.keys(value).forEach((field) => {
20
20
  const map = cache(ctx);
21
21
  const mapping = value[field];
22
- const subPath = [...mapping.indirectPath, field];
22
+ const subPath = [
23
+ ...mapping.indirectPath,
24
+ field
25
+ ];
23
26
  const key = cacheKey(getIndirectType(type, info).name, info.path, subPath);
24
27
  map.set(key, mapping.mappings);
25
28
  });
26
29
  }
27
30
  export function getLoaderMapping(ctx, path, type) {
28
- var _a;
29
31
  const map = cache(ctx);
30
32
  const key = cacheKey(type, path, []);
31
- return (_a = map.get(key)) !== null && _a !== void 0 ? _a : null;
33
+ var ref;
34
+ return (ref = map.get(key)) !== null && ref !== void 0 ? ref : null;
32
35
  }
33
36
  //# sourceMappingURL=loader-map.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader-map.js","sourceRoot":"","sources":["../../src/util/loader-map.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,KAAK,GAAG,kBAAkB,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,EAA0B,CAAC,CAAC;AAE7E,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,IAAgC,EAAE,OAAiB;IACxF,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,OAAO,GAA2C,IAAI,CAAC;IAE3D,OAAO,OAAO,EAAE;QACd,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,EAAE;YACnC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;SACnD;QACD,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;KACxB;IAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;QAC3B,GAAG,GAAG,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;KACzB;IAED,OAAO,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,GAAW,EACX,IAAwB,EACxB,KAAqB,EACrB,IAAsB;IAEtB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACnC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QAEvB,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7B,MAAM,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAE3E,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAW,EAAE,IAAgC,EAAE,IAAY;;IAC1F,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IAErC,OAAO,MAAA,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,mCAAI,IAAI,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"sources":["../../src/util/loader-map.ts"],"sourcesContent":["import { GraphQLNamedType, GraphQLResolveInfo } from 'graphql';\nimport { createContextCache } from '@pothos/core';\nimport { LoaderMappings } from '../types';\nimport { getIndirectType } from './map-query';\n\nconst cache = createContextCache((ctx) => new Map<string, LoaderMappings>());\n\nexport function cacheKey(type: string, path: GraphQLResolveInfo['path'], subPath: string[]) {\n let key = '';\n let current: GraphQLResolveInfo['path'] | undefined = path;\n\n while (current) {\n if (typeof current.key === 'string') {\n key = key ? `${current.key}.${key}` : current.key;\n }\n current = current.prev;\n }\n\n for (const entry of subPath) {\n key = `${key}.${entry}`;\n }\n\n return `${type}@${key}`;\n}\n\nexport function setLoaderMappings(\n ctx: object,\n info: GraphQLResolveInfo,\n value: LoaderMappings,\n type: GraphQLNamedType,\n) {\n Object.keys(value).forEach((field) => {\n const map = cache(ctx);\n\n const mapping = value[field];\n const subPath = [...mapping.indirectPath, field];\n const key = cacheKey(getIndirectType(type, info).name, info.path, subPath);\n\n map.set(key, mapping.mappings);\n });\n}\n\nexport function getLoaderMapping(ctx: object, path: GraphQLResolveInfo['path'], type: string) {\n const map = cache(ctx);\n const key = cacheKey(type, path, []);\n\n return map.get(key) ?? null;\n}\n"],"names":["createContextCache","getIndirectType","cache","ctx","Map","cacheKey","type","path","subPath","key","current","prev","entry","setLoaderMappings","info","value","Object","keys","forEach","field","map","mapping","indirectPath","name","set","mappings","getLoaderMapping","get"],"mappings":"AACA,SAASA,kBAAkB,QAAQ,cAAc,CAAC;AAElD,SAASC,eAAe,QAAQ,aAAa,CAAC;AAE9C,MAAMC,KAAK,GAAGF,kBAAkB,CAAC,CAACG,GAAG,GAAK,IAAIC,GAAG,EAA0B;AAAA,CAAC,AAAC;AAE7E,OAAO,SAASC,QAAQ,CAACC,IAAY,EAAEC,IAAgC,EAAEC,OAAiB,EAAE;IAC1F,IAAIC,GAAG,GAAG,EAAE,AAAC;IACb,IAAIC,OAAO,GAA2CH,IAAI,AAAC;IAE3D,MAAOG,OAAO,CAAE;QACd,IAAI,OAAOA,OAAO,CAACD,GAAG,KAAK,QAAQ,EAAE;YACnCA,GAAG,GAAGA,GAAG,GAAG,CAAC,EAAEC,OAAO,CAACD,GAAG,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,GAAGC,OAAO,CAACD,GAAG,CAAC;SACnD;QACDC,OAAO,GAAGA,OAAO,CAACC,IAAI,CAAC;KACxB;IAED,KAAK,MAAMC,KAAK,IAAIJ,OAAO,CAAE;QAC3BC,GAAG,GAAG,CAAC,EAAEA,GAAG,CAAC,CAAC,EAAEG,KAAK,CAAC,CAAC,CAAC;KACzB;IAED,OAAO,CAAC,EAAEN,IAAI,CAAC,CAAC,EAAEG,GAAG,CAAC,CAAC,CAAC;CACzB;AAED,OAAO,SAASI,iBAAiB,CAC/BV,GAAW,EACXW,IAAwB,EACxBC,KAAqB,EACrBT,IAAsB,EACtB;IACAU,MAAM,CAACC,IAAI,CAACF,KAAK,CAAC,CAACG,OAAO,CAAC,CAACC,KAAK,GAAK;QACpC,MAAMC,GAAG,GAAGlB,KAAK,CAACC,GAAG,CAAC,AAAC;QAEvB,MAAMkB,OAAO,GAAGN,KAAK,CAACI,KAAK,CAAC,AAAC;QAC7B,MAAMX,OAAO,GAAG;eAAIa,OAAO,CAACC,YAAY;YAAEH,KAAK;SAAC,AAAC;QACjD,MAAMV,GAAG,GAAGJ,QAAQ,CAACJ,eAAe,CAACK,IAAI,EAAEQ,IAAI,CAAC,CAACS,IAAI,EAAET,IAAI,CAACP,IAAI,EAAEC,OAAO,CAAC,AAAC;QAE3EY,GAAG,CAACI,GAAG,CAACf,GAAG,EAAEY,OAAO,CAACI,QAAQ,CAAC,CAAC;KAChC,CAAC,CAAC;CACJ;AAED,OAAO,SAASC,gBAAgB,CAACvB,GAAW,EAAEI,IAAgC,EAAED,IAAY,EAAE;IAC5F,MAAMc,GAAG,GAAGlB,KAAK,CAACC,GAAG,CAAC,AAAC;IACvB,MAAMM,GAAG,GAAGJ,QAAQ,CAACC,IAAI,EAAEC,IAAI,EAAE,EAAE,CAAC,AAAC;QAE9Ba,GAAY;IAAnB,OAAOA,CAAAA,GAAY,GAAZA,GAAG,CAACO,GAAG,CAAClB,GAAG,CAAC,cAAZW,GAAY,cAAZA,GAAY,GAAI,IAAI,CAAC;CAC7B"}
@@ -1,15 +1,13 @@
1
- /* eslint-disable no-param-reassign */
2
- /* eslint-disable no-continue */
3
- import { getNamedType, isObjectType, Kind, } from 'graphql';
1
+ /* eslint-disable no-param-reassign */ /* eslint-disable no-continue */ import { getNamedType, isObjectType, Kind } from 'graphql';
4
2
  import { getArgumentValues } from 'graphql/execution/values.js';
5
3
  import { setLoaderMappings } from './loader-map.js';
6
- import { createState, mergeSelection, selectionCompatible, selectionToQuery, } from './selections.js';
4
+ import { createState, mergeSelection, selectionCompatible, selectionToQuery } from './selections.js';
7
5
  function addTypeSelectionsForField(type, context, info, state, selection, indirectPath) {
8
- var _a;
9
6
  if (selection.name.value.startsWith("__")) {
10
7
  return;
11
8
  }
12
- const { pothosPrismaInclude, pothosPrismaSelect, pothosPrismaIndirectInclude, pothosPrismaModel, } = ((_a = type.extensions) !== null && _a !== void 0 ? _a : {});
9
+ var _extensions;
10
+ const { pothosPrismaInclude, pothosPrismaSelect, pothosPrismaIndirectInclude, pothosPrismaModel, } = (_extensions = type.extensions) !== null && _extensions !== void 0 ? _extensions : {};
13
11
  if (pothosPrismaIndirectInclude) {
14
12
  resolveIndirectInclude(type, info, selection, pothosPrismaIndirectInclude.path, indirectPath, (resolvedType, field, path) => {
15
13
  addTypeSelectionsForField(resolvedType, context, info, state, field, path);
@@ -23,8 +21,12 @@ function addTypeSelectionsForField(type, context, info, state, selection, indire
23
21
  }
24
22
  if (pothosPrismaInclude || pothosPrismaSelect) {
25
23
  mergeSelection(state, {
26
- select: pothosPrismaSelect ? { ...pothosPrismaSelect } : undefined,
27
- include: pothosPrismaInclude ? { ...pothosPrismaInclude } : undefined,
24
+ select: pothosPrismaSelect ? {
25
+ ...pothosPrismaSelect
26
+ } : undefined,
27
+ include: pothosPrismaInclude ? {
28
+ ...pothosPrismaInclude
29
+ } : undefined
28
30
  });
29
31
  }
30
32
  if (selection.selectionSet) {
@@ -32,7 +34,6 @@ function addTypeSelectionsForField(type, context, info, state, selection, indire
32
34
  }
33
35
  }
34
36
  function resolveIndirectInclude(type, info, selection, includePath, path, resolve) {
35
- var _a, _b, _c, _d;
36
37
  const [include, ...rest] = includePath;
37
38
  if (!selection.selectionSet || !include) {
38
39
  return;
@@ -43,10 +44,20 @@ function resolveIndirectInclude(type, info, selection, includePath, path, resolv
43
44
  if (sel.name.value === include.name && isObjectType(type)) {
44
45
  const returnType = getNamedType(type.getFields()[sel.name.value].type);
45
46
  if (rest.length === 0) {
46
- resolve(returnType, sel, [...path, (_b = (_a = sel.alias) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : sel.name.value]);
47
+ var ref;
48
+ var ref1;
49
+ resolve(returnType, sel, [
50
+ ...path,
51
+ (ref1 = (ref = sel.alias) === null || ref === void 0 ? void 0 : ref.value) !== null && ref1 !== void 0 ? ref1 : sel.name.value
52
+ ]);
47
53
  }
48
54
  else {
49
- resolveIndirectInclude(returnType, info, sel, rest, [...path, (_d = (_c = sel.alias) === null || _c === void 0 ? void 0 : _c.value) !== null && _d !== void 0 ? _d : sel.name.value], resolve);
55
+ var ref2;
56
+ var ref3;
57
+ resolveIndirectInclude(returnType, info, sel, rest, [
58
+ ...path,
59
+ (ref3 = (ref2 = sel.alias) === null || ref2 === void 0 ? void 0 : ref2.value) !== null && ref3 !== void 0 ? ref3 : sel.name.value
60
+ ], resolve);
50
61
  }
51
62
  }
52
63
  continue;
@@ -89,7 +100,7 @@ function addNestedSelections(type, context, info, state, selections, indirectPat
89
100
  }
90
101
  }
91
102
  function addFieldSelection(type, context, info, state, selection, indirectPath) {
92
- var _a, _b, _c, _d, _e, _f;
103
+ var ref, ref4;
93
104
  if (selection.name.value.startsWith("__")) {
94
105
  return;
95
106
  }
@@ -97,9 +108,9 @@ function addFieldSelection(type, context, info, state, selection, indirectPath)
97
108
  if (!field) {
98
109
  throw new Error(`Unknown field ${selection.name.value} on ${type.name}`);
99
110
  }
100
- const fieldSelect = (_a = field.extensions) === null || _a === void 0 ? void 0 : _a.pothosPrismaSelect;
111
+ const fieldSelect = (ref = field.extensions) === null || ref === void 0 ? void 0 : ref.pothosPrismaSelect;
101
112
  let fieldSelectionMap;
102
- const fieldParentSelect = (_b = field.extensions) === null || _b === void 0 ? void 0 : _b.pothosPrismaParentSelect;
113
+ const fieldParentSelect = (ref4 = field.extensions) === null || ref4 === void 0 ? void 0 : ref4.pothosPrismaParentSelect;
103
114
  let mappings = {};
104
115
  if (typeof fieldSelect === "function") {
105
116
  const args = getArgumentValues(field, selection, info.variableValues);
@@ -108,7 +119,10 @@ function addFieldSelection(type, context, info, state, selection, indirectPath)
108
119
  const query = typeof rawQuery === "function" ? rawQuery(args, context) : rawQuery;
109
120
  const fieldState = createStateForType(returnType, info, state);
110
121
  if (typeof query === "object" && Object.keys(query).length > 0) {
111
- mergeSelection(fieldState, { select: {}, ...query });
122
+ mergeSelection(fieldState, {
123
+ select: {},
124
+ ...query
125
+ });
112
126
  }
113
127
  addTypeSelectionsForField(returnType, context, info, fieldState, selection, []);
114
128
  // eslint-disable-next-line prefer-destructuring
@@ -117,24 +131,32 @@ function addFieldSelection(type, context, info, state, selection, indirectPath)
117
131
  });
118
132
  }
119
133
  else {
120
- fieldSelectionMap = { select: fieldSelect };
134
+ fieldSelectionMap = {
135
+ select: fieldSelect
136
+ };
121
137
  }
122
138
  if (fieldSelect && selectionCompatible(state, fieldSelectionMap, true)) {
139
+ var ref5;
123
140
  mergeSelection(state, fieldSelectionMap);
124
- state.mappings[(_d = (_c = selection.alias) === null || _c === void 0 ? void 0 : _c.value) !== null && _d !== void 0 ? _d : selection.name.value] = {
141
+ var ref6;
142
+ state.mappings[(ref6 = (ref5 = selection.alias) === null || ref5 === void 0 ? void 0 : ref5.value) !== null && ref6 !== void 0 ? ref6 : selection.name.value] = {
125
143
  field: selection.name.value,
126
144
  mappings,
127
- indirectPath,
145
+ indirectPath
128
146
  };
129
147
  }
130
- else if (fieldParentSelect &&
131
- state.parent &&
132
- selectionCompatible(state.parent, { select: fieldParentSelect }, true)) {
133
- mergeSelection(state.parent, { select: fieldParentSelect });
134
- state.mappings[(_f = (_e = selection.alias) === null || _e === void 0 ? void 0 : _e.value) !== null && _f !== void 0 ? _f : selection.name.value] = {
148
+ else if (fieldParentSelect && state.parent && selectionCompatible(state.parent, {
149
+ select: fieldParentSelect
150
+ }, true)) {
151
+ var ref7;
152
+ mergeSelection(state.parent, {
153
+ select: fieldParentSelect
154
+ });
155
+ var ref8;
156
+ state.mappings[(ref8 = (ref7 = selection.alias) === null || ref7 === void 0 ? void 0 : ref7.value) !== null && ref8 !== void 0 ? ref8 : selection.name.value] = {
135
157
  field: selection.name.value,
136
158
  mappings,
137
- indirectPath,
159
+ indirectPath
138
160
  };
139
161
  }
140
162
  }
@@ -155,16 +177,17 @@ export function selectionStateFromInfo(context, info, typeName) {
155
177
  return state;
156
178
  }
157
179
  function createStateForType(type, info, parent) {
158
- var _a, _b;
180
+ var ref, ref9;
159
181
  const targetType = getIndirectType(type, info);
160
- const fieldMap = (_a = targetType.extensions) === null || _a === void 0 ? void 0 : _a.pothosPrismaFieldMap;
161
- return createState(fieldMap, ((_b = targetType.extensions) === null || _b === void 0 ? void 0 : _b.pothosPrismaSelect) ? "select" : "include", parent);
182
+ const fieldMap = (ref = targetType.extensions) === null || ref === void 0 ? void 0 : ref.pothosPrismaFieldMap;
183
+ return createState(fieldMap, ((ref9 = targetType.extensions) === null || ref9 === void 0 ? void 0 : ref9.pothosPrismaSelect) ? "select" : "include", parent);
162
184
  }
163
185
  export function getIndirectType(type, info) {
164
- var _a, _b;
186
+ var ref;
165
187
  let targetType = type;
166
- while ((_a = targetType.extensions) === null || _a === void 0 ? void 0 : _a.pothosPrismaIndirectInclude) {
167
- targetType = info.schema.getType(((_b = targetType.extensions) === null || _b === void 0 ? void 0 : _b.pothosPrismaIndirectInclude).getType());
188
+ while ((ref = targetType.extensions) === null || ref === void 0 ? void 0 : ref.pothosPrismaIndirectInclude) {
189
+ var ref10;
190
+ targetType = info.schema.getType(((ref10 = targetType.extensions) === null || ref10 === void 0 ? void 0 : ref10.pothosPrismaIndirectInclude).getType());
168
191
  }
169
192
  return targetType;
170
193
  }
@@ -1 +1 @@
1
- {"version":3,"file":"map-query.js","sourceRoot":"","sources":["../../src/util/map-query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/util/map-query.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\n/* eslint-disable no-continue */\nimport {\n FieldNode,\n FragmentDefinitionNode,\n getNamedType,\n GraphQLNamedType,\n GraphQLObjectType,\n GraphQLResolveInfo,\n InlineFragmentNode,\n isObjectType,\n Kind,\n SelectionSetNode,\n} from 'graphql';\nimport { getArgumentValues } from 'graphql/execution/values';\nimport { setLoaderMappings } from './loader-map';\nimport { FieldMap } from './relation-map';\nimport {\n createState,\n mergeSelection,\n selectionCompatible,\n SelectionState,\n selectionToQuery,\n} from './selections';\n\nimport { FieldSelection, IncludeMap, IndirectInclude, LoaderMappings, SelectionMap } from '..';\n\nfunction addTypeSelectionsForField(\n type: GraphQLNamedType,\n context: object,\n info: GraphQLResolveInfo,\n state: SelectionState,\n selection: FieldNode,\n indirectPath: string[],\n) {\n if (selection.name.value.startsWith('__')) {\n return;\n }\n\n const {\n pothosPrismaInclude,\n pothosPrismaSelect,\n pothosPrismaIndirectInclude,\n pothosPrismaModel,\n } = (type.extensions ?? {}) as {\n pothosPrismaModel?: string;\n pothosPrismaInclude?: IncludeMap;\n pothosPrismaSelect?: IncludeMap;\n pothosPrismaIndirectInclude?: IndirectInclude;\n };\n\n if (pothosPrismaIndirectInclude) {\n resolveIndirectInclude(\n type,\n info,\n selection,\n pothosPrismaIndirectInclude.path,\n indirectPath,\n (resolvedType, field, path) => {\n addTypeSelectionsForField(resolvedType, context, info, state, field, path);\n },\n );\n }\n\n if (!isObjectType(type)) {\n return;\n }\n\n if (pothosPrismaModel && !pothosPrismaSelect) {\n state.mode = 'include';\n }\n\n if (pothosPrismaInclude || pothosPrismaSelect) {\n mergeSelection(state, {\n select: pothosPrismaSelect ? { ...pothosPrismaSelect } : undefined,\n include: pothosPrismaInclude ? { ...pothosPrismaInclude } : undefined,\n });\n }\n\n if (selection.selectionSet) {\n addNestedSelections(type, context, info, state, selection.selectionSet, indirectPath);\n }\n}\n\nfunction resolveIndirectInclude(\n type: GraphQLNamedType,\n info: GraphQLResolveInfo,\n selection: FieldNode | FragmentDefinitionNode | InlineFragmentNode,\n includePath: IndirectInclude['path'],\n path: string[],\n resolve: (type: GraphQLNamedType, field: FieldNode, path: string[]) => void,\n) {\n const [include, ...rest] = includePath;\n if (!selection.selectionSet || !include) {\n return;\n }\n\n for (const sel of selection.selectionSet.selections) {\n switch (sel.kind) {\n case Kind.FIELD:\n if (sel.name.value === include.name && isObjectType(type)) {\n const returnType = getNamedType(type.getFields()[sel.name.value].type);\n\n if (rest.length === 0) {\n resolve(returnType, sel, [...path, sel.alias?.value ?? sel.name.value]);\n } else {\n resolveIndirectInclude(\n returnType,\n info,\n sel,\n rest,\n [...path, sel.alias?.value ?? sel.name.value],\n resolve,\n );\n }\n }\n continue;\n case Kind.FRAGMENT_SPREAD:\n if (info.fragments[sel.name.value].typeCondition.name.value === include.type) {\n resolveIndirectInclude(\n info.schema.getType(include.type)!,\n info,\n info.fragments[sel.name.value],\n includePath,\n path,\n resolve,\n );\n }\n\n continue;\n\n case Kind.INLINE_FRAGMENT:\n if (!sel.typeCondition || sel.typeCondition.name.value === include.type) {\n resolveIndirectInclude(\n sel.typeCondition ? info.schema.getType(sel.typeCondition.name.value)! : type,\n info,\n sel,\n includePath,\n path,\n resolve,\n );\n }\n\n continue;\n\n default:\n throw new Error(`Unsupported selection kind ${(selection as { kind: string }).kind}`);\n }\n }\n}\n\nfunction addNestedSelections(\n type: GraphQLObjectType,\n context: object,\n info: GraphQLResolveInfo,\n state: SelectionState,\n selections: SelectionSetNode,\n indirectPath: string[],\n) {\n for (const selection of selections.selections) {\n switch (selection.kind) {\n case Kind.FIELD:\n addFieldSelection(type, context, info, state, selection, indirectPath);\n\n continue;\n case Kind.FRAGMENT_SPREAD:\n if (info.fragments[selection.name.value].typeCondition.name.value !== type.name) {\n continue;\n }\n\n addNestedSelections(\n type,\n context,\n info,\n state,\n info.fragments[selection.name.value].selectionSet,\n indirectPath,\n );\n\n continue;\n\n case Kind.INLINE_FRAGMENT:\n if (selection.typeCondition && selection.typeCondition.name.value !== type.name) {\n continue;\n }\n\n addNestedSelections(type, context, info, state, selection.selectionSet, indirectPath);\n\n continue;\n\n default:\n throw new Error(`Unsupported selection kind ${(selection as { kind: string }).kind}`);\n }\n }\n}\n\nfunction addFieldSelection(\n type: GraphQLObjectType,\n context: object,\n info: GraphQLResolveInfo,\n state: SelectionState,\n selection: FieldNode,\n indirectPath: string[],\n) {\n if (selection.name.value.startsWith('__')) {\n return;\n }\n\n const field = type.getFields()[selection.name.value];\n\n if (!field) {\n throw new Error(`Unknown field ${selection.name.value} on ${type.name}`);\n }\n\n const fieldSelect = field.extensions?.pothosPrismaSelect as FieldSelection | undefined;\n\n let fieldSelectionMap: SelectionMap;\n\n const fieldParentSelect = field.extensions?.pothosPrismaParentSelect as\n | Record<string, SelectionMap | boolean>\n | undefined;\n let mappings: LoaderMappings = {};\n\n if (typeof fieldSelect === 'function') {\n const args = getArgumentValues(field, selection, info.variableValues) as Record<\n string,\n unknown\n >;\n\n fieldSelectionMap = fieldSelect(args, context, (rawQuery) => {\n const returnType = getNamedType(field.type);\n const query = typeof rawQuery === 'function' ? rawQuery(args, context) : rawQuery;\n\n const fieldState = createStateForType(returnType, info, state);\n\n if (typeof query === 'object' && Object.keys(query).length > 0) {\n mergeSelection(fieldState, { select: {}, ...query });\n }\n\n addTypeSelectionsForField(returnType, context, info, fieldState, selection, []);\n\n // eslint-disable-next-line prefer-destructuring\n mappings = fieldState.mappings;\n\n return selectionToQuery(fieldState);\n });\n } else {\n fieldSelectionMap = { select: fieldSelect };\n }\n\n if (fieldSelect && selectionCompatible(state, fieldSelectionMap, true)) {\n mergeSelection(state, fieldSelectionMap);\n state.mappings[selection.alias?.value ?? selection.name.value] = {\n field: selection.name.value,\n mappings,\n indirectPath,\n };\n } else if (\n fieldParentSelect &&\n state.parent &&\n selectionCompatible(state.parent, { select: fieldParentSelect }, true)\n ) {\n mergeSelection(state.parent, { select: fieldParentSelect });\n state.mappings[selection.alias?.value ?? selection.name.value] = {\n field: selection.name.value,\n mappings,\n indirectPath,\n };\n }\n}\n\nexport function queryFromInfo(context: object, info: GraphQLResolveInfo, typeName?: string): {} {\n const type = typeName ? info.schema.getTypeMap()[typeName] : getNamedType(info.returnType);\n const state = createStateForType(type, info);\n\n addTypeSelectionsForField(type, context, info, state, info.fieldNodes[0], []);\n\n setLoaderMappings(context, info, state.mappings, type);\n\n return selectionToQuery(state);\n}\n\nexport function selectionStateFromInfo(\n context: object,\n info: GraphQLResolveInfo,\n typeName?: string,\n) {\n const type = typeName ? info.schema.getTypeMap()[typeName] : info.parentType;\n\n const state = createStateForType(type, info);\n\n if (!isObjectType(type)) {\n throw new Error('Prisma plugin can only resolve includes for object types');\n }\n\n addFieldSelection(type, context, info, state, info.fieldNodes[0], []);\n\n return state;\n}\n\nfunction createStateForType(\n type: GraphQLNamedType,\n info: GraphQLResolveInfo,\n parent?: SelectionState,\n) {\n const targetType = getIndirectType(type, info);\n\n const fieldMap = targetType.extensions?.pothosPrismaFieldMap as FieldMap;\n\n return createState(\n fieldMap,\n targetType.extensions?.pothosPrismaSelect ? 'select' : 'include',\n parent,\n );\n}\n\nexport function getIndirectType(type: GraphQLNamedType, info: GraphQLResolveInfo) {\n let targetType = type;\n\n while (targetType.extensions?.pothosPrismaIndirectInclude) {\n targetType = info.schema.getType(\n (targetType.extensions?.pothosPrismaIndirectInclude as IndirectInclude).getType(),\n )!;\n }\n\n return targetType;\n}\n"],"names":["getNamedType","isObjectType","Kind","getArgumentValues","setLoaderMappings","createState","mergeSelection","selectionCompatible","selectionToQuery","addTypeSelectionsForField","type","context","info","state","selection","indirectPath","name","value","startsWith","pothosPrismaInclude","pothosPrismaSelect","pothosPrismaIndirectInclude","pothosPrismaModel","extensions","resolveIndirectInclude","path","resolvedType","field","mode","select","undefined","include","selectionSet","addNestedSelections","includePath","resolve","rest","sel","selections","kind","FIELD","returnType","getFields","length","alias","FRAGMENT_SPREAD","fragments","typeCondition","schema","getType","INLINE_FRAGMENT","Error","addFieldSelection","fieldSelect","fieldSelectionMap","fieldParentSelect","pothosPrismaParentSelect","mappings","args","variableValues","rawQuery","query","fieldState","createStateForType","Object","keys","parent","queryFromInfo","typeName","getTypeMap","fieldNodes","selectionStateFromInfo","parentType","targetType","getIndirectType","fieldMap","pothosPrismaFieldMap"],"mappings":"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"}
@@ -1,11 +1,13 @@
1
1
  import { createContextCache } from '@pothos/core';
2
- export const getRelationMap = createContextCache((client) => createRelationMap(
3
- // eslint-disable-next-line no-underscore-dangle
4
- client._dmmf.datamodel));
2
+ export const getRelationMap = createContextCache((client) => createRelationMap(// eslint-disable-next-line no-underscore-dangle
3
+ (client)._dmmf.datamodel));
5
4
  export function createRelationMap({ models }) {
6
5
  const relationMap = new Map();
7
6
  models.forEach((model) => {
8
- relationMap.set(model.name, { model: model.name, relations: new Map() });
7
+ relationMap.set(model.name, {
8
+ model: model.name,
9
+ relations: new Map()
10
+ });
9
11
  });
10
12
  models.forEach((model) => {
11
13
  const map = relationMap.get(model.name).relations;
@@ -1 +1 @@
1
- {"version":3,"file":"relation-map.js","sourceRoot":"","sources":["../../src/util/relation-map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAUlD,MAAM,CAAC,MAAM,cAAc,GAAG,kBAAkB,CAAC,CAAC,MAAc,EAAE,EAAE,CAClE,iBAAiB;AACf,gDAAgD;AAC/C,MAA8D,CAAC,KAAK,CAAC,SAAS,CAChF,CACF,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,EAAE,MAAM,EAAkB;IAC1D,MAAM,WAAW,GAAgB,IAAI,GAAG,EAAE,CAAC;IAE3C,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC,SAAS,CAAC;QAEnD,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC7B,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;gBAC1D,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC,CAAC;aACnD;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC;AACrB,CAAC"}
1
+ {"version":3,"sources":["../../src/util/relation-map.ts"],"sourcesContent":["import { createContextCache } from '@pothos/core';\nimport { DMMF } from '@prisma/generator-helper';\n\nexport interface FieldMap {\n model: string;\n relations: Map<string, FieldMap>;\n}\n\nexport type RelationMap = Map<string, FieldMap>;\n\nexport const getRelationMap = createContextCache((client: object) =>\n createRelationMap(\n // eslint-disable-next-line no-underscore-dangle\n (client as unknown as { _dmmf: { datamodel: DMMF.Datamodel } })._dmmf.datamodel,\n ),\n);\n\nexport function createRelationMap({ models }: DMMF.Datamodel) {\n const relationMap: RelationMap = new Map();\n\n models.forEach((model) => {\n relationMap.set(model.name, { model: model.name, relations: new Map() });\n });\n\n models.forEach((model) => {\n const map = relationMap.get(model.name)!.relations;\n\n model.fields.forEach((field) => {\n if (field.kind === 'object' && relationMap.has(field.type)) {\n map.set(field.name, relationMap.get(field.type)!);\n }\n });\n });\n\n return relationMap;\n}\n"],"names":["createContextCache","getRelationMap","client","createRelationMap","_dmmf","datamodel","models","relationMap","Map","forEach","model","set","name","relations","map","get","fields","field","kind","has","type"],"mappings":"AAAA,SAASA,kBAAkB,QAAQ,cAAc,CAAC;AAUlD,OAAO,MAAMC,cAAc,GAAGD,kBAAkB,CAAC,CAACE,MAAc,GAC9DC,iBAAiB,CACf,gDAAgD;IAChD,CAACD,MAAM,CAAwD,CAACE,KAAK,CAACC,SAAS,CAChF;AAAA,CACF,CAAC;AAEF,OAAO,SAASF,iBAAiB,CAAC,EAAEG,MAAM,CAAA,EAAkB,EAAE;IAC5D,MAAMC,WAAW,GAAgB,IAAIC,GAAG,EAAE,AAAC;IAE3CF,MAAM,CAACG,OAAO,CAAC,CAACC,KAAK,GAAK;QACxBH,WAAW,CAACI,GAAG,CAACD,KAAK,CAACE,IAAI,EAAE;YAAEF,KAAK,EAAEA,KAAK,CAACE,IAAI;YAAEC,SAAS,EAAE,IAAIL,GAAG,EAAE;SAAE,CAAC,CAAC;KAC1E,CAAC,CAAC;IAEHF,MAAM,CAACG,OAAO,CAAC,CAACC,KAAK,GAAK;QACxB,MAAMI,GAAG,GAAGP,WAAW,CAACQ,GAAG,CAACL,KAAK,CAACE,IAAI,CAAC,CAAEC,SAAS,AAAC;QAEnDH,KAAK,CAACM,MAAM,CAACP,OAAO,CAAC,CAACQ,KAAK,GAAK;YAC9B,IAAIA,KAAK,CAACC,IAAI,KAAK,QAAQ,IAAIX,WAAW,CAACY,GAAG,CAACF,KAAK,CAACG,IAAI,CAAC,EAAE;gBAC1DN,GAAG,CAACH,GAAG,CAACM,KAAK,CAACL,IAAI,EAAEL,WAAW,CAACQ,GAAG,CAACE,KAAK,CAACG,IAAI,CAAC,CAAE,CAAC;aACnD;SACF,CAAC,CAAC;KACJ,CAAC,CAAC;IAEH,OAAOb,WAAW,CAAC;CACpB"}