@pothos/plugin-prisma 3.3.0 → 3.6.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 (59) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +37 -0
  3. package/dts/global-types.d.ts +7 -4
  4. package/dts/global-types.d.ts.map +1 -1
  5. package/dts/index.d.ts.map +1 -1
  6. package/dts/model-loader.d.ts +3 -3
  7. package/dts/model-loader.d.ts.map +1 -1
  8. package/dts/prisma-field-builder.d.ts.map +1 -1
  9. package/dts/types.d.ts +13 -1
  10. package/dts/types.d.ts.map +1 -1
  11. package/dts/util/datamodel.d.ts +12 -4
  12. package/dts/util/datamodel.d.ts.map +1 -1
  13. package/dts/util/get-client.d.ts +27 -0
  14. package/dts/util/get-client.d.ts.map +1 -0
  15. package/dts/util/relation-map.d.ts +3 -1
  16. package/dts/util/relation-map.d.ts.map +1 -1
  17. package/esm/global-types.js.map +1 -1
  18. package/esm/index.js +5 -1
  19. package/esm/index.js.map +1 -1
  20. package/esm/model-loader.js +7 -5
  21. package/esm/model-loader.js.map +1 -1
  22. package/esm/prisma-field-builder.js +4 -1
  23. package/esm/prisma-field-builder.js.map +1 -1
  24. package/esm/schema-builder.js +4 -3
  25. package/esm/schema-builder.js.map +1 -1
  26. package/esm/types.js.map +1 -1
  27. package/esm/util/datamodel.js +2 -3
  28. package/esm/util/datamodel.js.map +1 -1
  29. package/esm/util/get-client.js +12 -0
  30. package/esm/util/get-client.js.map +1 -0
  31. package/esm/util/relation-map.js +1 -2
  32. package/esm/util/relation-map.js.map +1 -1
  33. package/lib/global-types.js.map +1 -1
  34. package/lib/index.js +6 -1
  35. package/lib/index.js.map +1 -1
  36. package/lib/model-loader.js +7 -5
  37. package/lib/model-loader.js.map +1 -1
  38. package/lib/prisma-field-builder.js +4 -1
  39. package/lib/prisma-field-builder.js.map +1 -1
  40. package/lib/schema-builder.js +4 -3
  41. package/lib/schema-builder.js.map +1 -1
  42. package/lib/types.js.map +1 -1
  43. package/lib/util/datamodel.js +2 -3
  44. package/lib/util/datamodel.js.map +1 -1
  45. package/lib/util/get-client.js +21 -0
  46. package/lib/util/get-client.js.map +1 -0
  47. package/lib/util/relation-map.js +1 -2
  48. package/lib/util/relation-map.js.map +1 -1
  49. package/package.json +6 -6
  50. package/src/global-types.ts +16 -9
  51. package/src/index.ts +5 -1
  52. package/src/model-loader.ts +16 -8
  53. package/src/prisma-field-builder.ts +4 -1
  54. package/src/schema-builder.ts +4 -3
  55. package/src/types.ts +14 -1
  56. package/src/util/datamodel.ts +7 -7
  57. package/src/util/get-client.ts +59 -0
  58. package/src/util/relation-map.ts +2 -5
  59. package/tsconfig.type.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/prisma-field-builder.ts"],"sourcesContent":["/* eslint-disable no-underscore-dangle */\nimport { GraphQLResolveInfo } from 'graphql';\nimport {\n CompatibleTypes,\n FieldKind,\n FieldRef,\n InputFieldMap,\n MaybePromise,\n NormalizeArgs,\n ObjectRef,\n PluginName,\n RootFieldBuilder,\n SchemaTypes,\n TypeParam,\n} from '@pothos/core';\nimport { PrismaObjectRef } from './object-ref';\nimport {\n PrismaModelTypes,\n RelatedConnectionOptions,\n RelatedFieldOptions,\n RelationCountOptions,\n ShapeFromConnection,\n VariantFieldOptions,\n} from './types';\nimport { prismaCursorConnectionQuery, wrapConnectionResult } from './util/cursors';\nimport {\n getCursorFormatter,\n getCursorParser,\n getRefFromModel,\n getRelation,\n} from './util/datamodel';\nimport { FieldMap } from './util/relation-map';\n\n// Workaround for FieldKind not being extended on Builder classes\nconst RootBuilder: {\n // eslint-disable-next-line @typescript-eslint/prefer-function-type\n new <Types extends SchemaTypes, Shape, Kind extends FieldKind>(\n name: string,\n builder: PothosSchemaTypes.SchemaBuilder<Types>,\n kind: FieldKind,\n graphqlKind: PothosSchemaTypes.PothosKindToGraphQLType[FieldKind],\n ): PothosSchemaTypes.RootFieldBuilder<Types, Shape, Kind>;\n} = RootFieldBuilder as never;\n\nexport class PrismaObjectFieldBuilder<\n Types extends SchemaTypes,\n Model extends PrismaModelTypes,\n NeedsResolve extends boolean,\n Shape extends object = Model['Shape'],\n> extends RootBuilder<Types, Shape, 'PrismaObject'> {\n model: string;\n prismaFieldMap: FieldMap;\n\n exposeBoolean = this.createExpose('Boolean');\n exposeFloat = this.createExpose('Float');\n exposeInt = this.createExpose('Int');\n exposeID = this.createExpose('ID');\n exposeString = this.createExpose('String');\n exposeBooleanList = this.createExpose(['Boolean']);\n exposeFloatList = this.createExpose(['Float']);\n exposeIntList = this.createExpose(['Int']);\n exposeIDList = this.createExpose(['ID']);\n exposeStringList = this.createExpose(['String']);\n\n relatedConnection: 'relay' extends PluginName\n ? <\n Field extends Model['ListRelations'],\n Nullable extends boolean,\n Args extends InputFieldMap,\n ResolveReturnShape,\n >(\n ...args: NormalizeArgs<\n [\n field: Field,\n options: RelatedConnectionOptions<Types, Model, Field, Nullable, Args, NeedsResolve>,\n connectionOptions?: PothosSchemaTypes.ConnectionObjectOptions<\n Types,\n ObjectRef<Shape>,\n false,\n false,\n ResolveReturnShape\n >,\n edgeOptions?: PothosSchemaTypes.ConnectionEdgeObjectOptions<\n Types,\n ObjectRef<Shape>,\n false,\n ResolveReturnShape\n >,\n ]\n >\n ) => FieldRef<\n ShapeFromConnection<PothosSchemaTypes.ConnectionShapeHelper<Types, Shape, Nullable>>\n >\n : '@pothos/plugin-relay is required to use this method' = function relatedConnection(\n this: PrismaObjectFieldBuilder<SchemaTypes, Model, boolean>,\n name: string,\n {\n maxSize,\n defaultSize,\n cursor,\n query,\n resolve,\n extensions,\n totalCount,\n ...options\n }: {\n type?: ObjectRef<unknown, unknown>;\n totalCount?: boolean;\n maxSize?: number;\n defaultSize?: number;\n cursor: string;\n extensions: {};\n query: ((args: {}, ctx: {}) => {}) | {};\n resolve: (query: {}, parent: unknown, args: {}, ctx: {}, info: {}) => MaybePromise<{}[]>;\n },\n connectionOptions = {},\n edgeOptions = {},\n ) {\n const relationField = getRelation(this.model, this.builder, name);\n const ref = options.type ?? getRefFromModel(relationField.type, this.builder);\n let typeName: string | undefined;\n\n const formatCursor = getCursorFormatter(relationField.type, this.builder, cursor);\n const parseCursor = getCursorParser(relationField.type, this.builder, cursor);\n\n const getQuery = (args: PothosSchemaTypes.DefaultConnectionArguments, ctx: {}) => ({\n ...((typeof query === 'function' ? query(args, ctx) : query) as {}),\n ...prismaCursorConnectionQuery({\n parseCursor,\n maxSize,\n defaultSize,\n args,\n }),\n });\n\n const relationSelect = (\n args: object,\n context: object,\n nestedQuery: (query: unknown) => unknown,\n ) => ({\n select: {\n [name]: nestedQuery({\n ...((typeof query === 'function' ? query(args, context) : query) as {}),\n ...prismaCursorConnectionQuery({\n parseCursor,\n maxSize,\n defaultSize,\n args,\n }),\n }),\n },\n });\n\n const fieldRef = (\n this as unknown as {\n connection: (...args: unknown[]) => FieldRef<unknown>;\n }\n ).connection(\n {\n ...options,\n extensions: {\n ...extensions,\n pothosPrismaSelect: relationSelect,\n pothosPrismaLoaded: (value: Record<string, unknown>) => value[name] !== undefined,\n pothosPrismaFallback:\n resolve &&\n ((\n q: { take: number },\n parent: unknown,\n args: PothosSchemaTypes.DefaultConnectionArguments,\n context: {},\n info: GraphQLResolveInfo,\n ) =>\n Promise.resolve(\n resolve(\n {\n ...q,\n ...(typeof query === 'function' ? query(args, context) : query),\n } as never,\n parent,\n args,\n context,\n info,\n ),\n ).then((result) => wrapConnectionResult(result, args, q.take, formatCursor))),\n },\n type: ref,\n resolve: (\n parent: unknown,\n args: PothosSchemaTypes.DefaultConnectionArguments,\n context: {},\n ) => {\n const connectionQuery = getQuery(args, context);\n\n return wrapConnectionResult(\n (parent as Record<string, never>)[name],\n args,\n connectionQuery.take,\n formatCursor,\n (parent as { _count?: Record<string, number> })._count?.[name],\n );\n },\n },\n {\n ...connectionOptions,\n fields: totalCount\n ? (t: PothosSchemaTypes.ObjectFieldBuilder<SchemaTypes, { totalCount?: number }>) => ({\n totalCount: t.int({\n nullable: false,\n extensions: {\n pothosPrismaParentSelect: { _count: { select: { [name]: true } } },\n },\n resolve: (parent, args, context) => parent.totalCount,\n }),\n ...(connectionOptions as { fields?: (t: unknown) => {} }).fields?.(t),\n })\n : (connectionOptions as { fields: undefined }).fields,\n extensions: {\n ...(connectionOptions as Record<string, {}> | undefined)?.extensions,\n pothosPrismaIndirectInclude: {\n getType: () => {\n if (!typeName) {\n typeName = this.builder.configStore.getTypeConfig(ref).name;\n }\n return typeName;\n },\n path: [{ name: 'edges' }, { name: 'node' }],\n },\n },\n },\n edgeOptions,\n );\n\n return fieldRef;\n } as never;\n\n constructor(\n name: string,\n builder: PothosSchemaTypes.SchemaBuilder<Types>,\n model: string,\n fieldMap: FieldMap,\n ) {\n super(name, builder, 'PrismaObject', 'Object');\n\n this.model = model;\n this.prismaFieldMap = fieldMap;\n }\n\n relation<\n Field extends Model['Fields'],\n Nullable extends boolean,\n Args extends InputFieldMap,\n ResolveReturnShape,\n >(\n ...allArgs: NormalizeArgs<\n [\n name: Field,\n options?: RelatedFieldOptions<\n Types,\n Model,\n Field,\n Nullable,\n Args,\n ResolveReturnShape,\n NeedsResolve,\n Shape\n >,\n ]\n >\n ): FieldRef<Model['Relations'][Field]['Shape'], 'Object'> {\n const [name, options = {} as never] = allArgs;\n const relationField = getRelation(this.model, this.builder, name);\n const ref = options.type ?? getRefFromModel(relationField.type, this.builder);\n\n const { query = {}, resolve, extensions, ...rest } = options;\n\n const relationSelect = (\n args: object,\n context: object,\n nestedQuery: (query: unknown) => unknown,\n ) => ({ select: { [name]: nestedQuery(query) } });\n\n return this.field({\n ...(rest as {}),\n type: relationField.isList ? [ref] : ref,\n extensions: {\n ...extensions,\n pothosPrismaSelect: relationSelect as never,\n pothosPrismaLoaded: (value: Record<string, unknown>) => value[name] !== undefined,\n pothosPrismaFallback:\n resolve &&\n ((q: {}, parent: Shape, args: {}, context: {}, info: GraphQLResolveInfo) =>\n resolve(\n { ...q, ...(typeof query === 'function' ? query(args, context) : query) } as never,\n parent,\n args as never,\n context,\n info,\n )),\n },\n resolve: (parent) => (parent as Record<string, never>)[name],\n }) as FieldRef<Model['Relations'][Field]['Shape'], 'Object'>;\n }\n\n relationCount<Field extends Model['Fields']>(\n ...allArgs: NormalizeArgs<\n [name: Field, options?: RelationCountOptions<Types, Shape, NeedsResolve>]\n >\n ): FieldRef<number, 'Object'> {\n const [name, options = {} as never] = allArgs;\n\n const { resolve, ...rest } = options;\n\n const countSelect = {\n _count: {\n select: { [name]: true },\n },\n };\n\n return this.field({\n ...(rest as {}),\n type: 'Int',\n nullable: false,\n select: countSelect as never,\n resolve: (parent, args, context, info) =>\n (parent as unknown as { _count: Record<string, never> })._count?.[name],\n }) as FieldRef<number, 'Object'>;\n }\n\n variant<Variant extends Model['Name'] | PrismaObjectRef<Model>>(\n ...allArgs: NormalizeArgs<\n [\n variant: Variant,\n options?: VariantFieldOptions<\n Types,\n Model,\n Variant extends PrismaObjectRef<Model> ? Variant : PrismaObjectRef<Model>\n >,\n ]\n >\n ): FieldRef<Model['Shape'], 'Object'> {\n const [variant, options = {} as never] = allArgs;\n const ref: PrismaObjectRef<PrismaModelTypes> =\n typeof variant === 'string' ? getRefFromModel(variant, this.builder) : variant;\n\n const selfSelect = (args: object, context: object, nestedQuery: (query: unknown) => unknown) =>\n nestedQuery({});\n\n return this.field({\n ...(options as {}),\n type: ref,\n select: selfSelect as never,\n resolve: (parent, args, context, info) => parent as never,\n }) as FieldRef<Model['Shape'], 'Object'>;\n }\n\n expose<\n Type extends TypeParam<Types>,\n Nullable extends boolean,\n ResolveReturnShape,\n Name extends CompatibleTypes<Types, Model['Shape'], Type, Nullable>,\n >(\n ...args: NormalizeArgs<\n [\n name: Name,\n options?: Omit<\n PothosSchemaTypes.ObjectFieldOptions<\n Types,\n Shape,\n Type,\n Nullable,\n {},\n ResolveReturnShape\n >,\n 'resolve' | 'select'\n >,\n ]\n >\n ) {\n const [name, options = {} as never] = args;\n\n const typeConfig = this.builder.configStore.getTypeConfig(this.typename, 'Object');\n const usingSelect = !!typeConfig.extensions?.pothosPrismaSelect;\n\n return this.exposeField(name as never, {\n ...options,\n extensions: {\n ...options.extensions,\n pothosPrismaVariant: name,\n pothosPrismaSelect: usingSelect && {\n [name]: true,\n },\n },\n });\n }\n\n private createExpose<Type extends TypeParam<Types>>(type: Type) {\n return <\n Nullable extends boolean,\n ResolveReturnShape,\n Name extends CompatibleTypes<Types, Model['Shape'], Type, Nullable>,\n >(\n ...args: NormalizeArgs<\n [\n name: Name,\n options?: Omit<\n PothosSchemaTypes.ObjectFieldOptions<\n Types,\n Shape,\n Type,\n Nullable,\n {},\n ResolveReturnShape\n >,\n 'resolve' | 'type' | 'select'\n >,\n ]\n >\n ) => {\n const [name, options = {} as never] = args;\n\n return this.expose(name as never, {\n ...options,\n type,\n });\n };\n }\n}\n"],"names":["RootFieldBuilder","prismaCursorConnectionQuery","wrapConnectionResult","getCursorFormatter","getCursorParser","getRefFromModel","getRelation","RootBuilder","PrismaObjectFieldBuilder","relation","allArgs","name","options","relationField","model","builder","ref","type","query","resolve","extensions","rest","relationSelect","args","context","nestedQuery","select","field","isList","pothosPrismaSelect","pothosPrismaLoaded","value","undefined","pothosPrismaFallback","q","parent","info","relationCount","countSelect","_count","nullable","variant","selfSelect","expose","typeConfig","configStore","getTypeConfig","typename","usingSelect","exposeField","pothosPrismaVariant","createExpose","constructor","fieldMap","exposeBoolean","exposeFloat","exposeInt","exposeID","exposeString","exposeBooleanList","exposeFloatList","exposeIntList","exposeIDList","exposeStringList","relatedConnection","maxSize","defaultSize","cursor","totalCount","connectionOptions","edgeOptions","typeName","formatCursor","parseCursor","getQuery","ctx","fieldRef","connection","Promise","then","result","take","connectionQuery","fields","t","int","pothosPrismaParentSelect","pothosPrismaIndirectInclude","getType","path","prismaFieldMap"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/prisma-field-builder.ts"],"sourcesContent":["/* eslint-disable no-underscore-dangle */\nimport { GraphQLResolveInfo } from 'graphql';\nimport {\n CompatibleTypes,\n FieldKind,\n FieldRef,\n InputFieldMap,\n MaybePromise,\n NormalizeArgs,\n ObjectRef,\n PluginName,\n RootFieldBuilder,\n SchemaTypes,\n TypeParam,\n} from '@pothos/core';\nimport { PrismaObjectRef } from './object-ref';\nimport {\n PrismaModelTypes,\n RelatedConnectionOptions,\n RelatedFieldOptions,\n RelationCountOptions,\n ShapeFromConnection,\n VariantFieldOptions,\n} from './types';\nimport { prismaCursorConnectionQuery, wrapConnectionResult } from './util/cursors';\nimport {\n getCursorFormatter,\n getCursorParser,\n getRefFromModel,\n getRelation,\n} from './util/datamodel';\nimport { FieldMap } from './util/relation-map';\n\n// Workaround for FieldKind not being extended on Builder classes\nconst RootBuilder: {\n // eslint-disable-next-line @typescript-eslint/prefer-function-type\n new <Types extends SchemaTypes, Shape, Kind extends FieldKind>(\n name: string,\n builder: PothosSchemaTypes.SchemaBuilder<Types>,\n kind: FieldKind,\n graphqlKind: PothosSchemaTypes.PothosKindToGraphQLType[FieldKind],\n ): PothosSchemaTypes.RootFieldBuilder<Types, Shape, Kind>;\n} = RootFieldBuilder as never;\n\nexport class PrismaObjectFieldBuilder<\n Types extends SchemaTypes,\n Model extends PrismaModelTypes,\n NeedsResolve extends boolean,\n Shape extends object = Model['Shape'],\n> extends RootBuilder<Types, Shape, 'PrismaObject'> {\n model: string;\n prismaFieldMap: FieldMap;\n\n exposeBoolean = this.createExpose('Boolean');\n exposeFloat = this.createExpose('Float');\n exposeInt = this.createExpose('Int');\n exposeID = this.createExpose('ID');\n exposeString = this.createExpose('String');\n exposeBooleanList = this.createExpose(['Boolean']);\n exposeFloatList = this.createExpose(['Float']);\n exposeIntList = this.createExpose(['Int']);\n exposeIDList = this.createExpose(['ID']);\n exposeStringList = this.createExpose(['String']);\n\n relatedConnection: 'relay' extends PluginName\n ? <\n Field extends Model['ListRelations'],\n Nullable extends boolean,\n Args extends InputFieldMap,\n ResolveReturnShape,\n >(\n ...args: NormalizeArgs<\n [\n field: Field,\n options: RelatedConnectionOptions<Types, Model, Field, Nullable, Args, NeedsResolve>,\n connectionOptions?: PothosSchemaTypes.ConnectionObjectOptions<\n Types,\n ObjectRef<Shape>,\n false,\n false,\n ResolveReturnShape\n >,\n edgeOptions?: PothosSchemaTypes.ConnectionEdgeObjectOptions<\n Types,\n ObjectRef<Shape>,\n false,\n ResolveReturnShape\n >,\n ]\n >\n ) => FieldRef<\n ShapeFromConnection<PothosSchemaTypes.ConnectionShapeHelper<Types, Shape, Nullable>>\n >\n : '@pothos/plugin-relay is required to use this method' = function relatedConnection(\n this: PrismaObjectFieldBuilder<SchemaTypes, Model, boolean>,\n name: string,\n {\n maxSize,\n defaultSize,\n cursor,\n query,\n resolve,\n extensions,\n totalCount,\n ...options\n }: {\n type?: ObjectRef<unknown, unknown>;\n totalCount?: boolean;\n maxSize?: number;\n defaultSize?: number;\n cursor: string;\n extensions: {};\n query: ((args: {}, ctx: {}) => {}) | {};\n resolve: (query: {}, parent: unknown, args: {}, ctx: {}, info: {}) => MaybePromise<{}[]>;\n },\n connectionOptions = {},\n edgeOptions = {},\n ) {\n const relationField = getRelation(this.model, this.builder, name);\n const ref = options.type ?? getRefFromModel(relationField.type, this.builder);\n let typeName: string | undefined;\n\n const formatCursor = getCursorFormatter(relationField.type, this.builder, cursor);\n const parseCursor = getCursorParser(relationField.type, this.builder, cursor);\n\n const getQuery = (args: PothosSchemaTypes.DefaultConnectionArguments, ctx: {}) => ({\n ...((typeof query === 'function' ? query(args, ctx) : query) as {}),\n ...prismaCursorConnectionQuery({\n parseCursor,\n maxSize,\n defaultSize,\n args,\n }),\n });\n\n const relationSelect = (\n args: object,\n context: object,\n nestedQuery: (query: unknown) => unknown,\n ) => ({\n select: {\n [name]: nestedQuery({\n ...((typeof query === 'function' ? query(args, context) : query) as {}),\n ...prismaCursorConnectionQuery({\n parseCursor,\n maxSize,\n defaultSize,\n args,\n }),\n }),\n },\n });\n\n const fieldRef = (\n this as unknown as {\n connection: (...args: unknown[]) => FieldRef<unknown>;\n }\n ).connection(\n {\n ...options,\n extensions: {\n ...extensions,\n pothosPrismaSelect: relationSelect,\n pothosPrismaLoaded: (value: Record<string, unknown>) => value[name] !== undefined,\n pothosPrismaFallback:\n resolve &&\n ((\n q: { take: number },\n parent: unknown,\n args: PothosSchemaTypes.DefaultConnectionArguments,\n context: {},\n info: GraphQLResolveInfo,\n ) =>\n Promise.resolve(\n resolve(\n {\n ...q,\n ...(typeof query === 'function' ? query(args, context) : query),\n } as never,\n parent,\n args,\n context,\n info,\n ),\n ).then((result) => wrapConnectionResult(result, args, q.take, formatCursor))),\n },\n type: ref,\n resolve: (\n parent: unknown,\n args: PothosSchemaTypes.DefaultConnectionArguments,\n context: {},\n ) => {\n const connectionQuery = getQuery(args, context);\n\n return wrapConnectionResult(\n (parent as Record<string, never>)[name],\n args,\n connectionQuery.take,\n formatCursor,\n (parent as { _count?: Record<string, number> })._count?.[name],\n );\n },\n },\n {\n ...connectionOptions,\n fields: totalCount\n ? (t: PothosSchemaTypes.ObjectFieldBuilder<SchemaTypes, { totalCount?: number }>) => ({\n totalCount: t.int({\n nullable: false,\n extensions: {\n pothosPrismaParentSelect: { _count: { select: { [name]: true } } },\n },\n resolve: (parent, args, context) => parent.totalCount,\n }),\n ...(connectionOptions as { fields?: (t: unknown) => {} }).fields?.(t),\n })\n : (connectionOptions as { fields: undefined }).fields,\n extensions: {\n ...(connectionOptions as Record<string, {}> | undefined)?.extensions,\n pothosPrismaIndirectInclude: {\n getType: () => {\n if (!typeName) {\n typeName = this.builder.configStore.getTypeConfig(ref).name;\n }\n return typeName;\n },\n path: [{ name: 'edges' }, { name: 'node' }],\n },\n },\n },\n edgeOptions,\n );\n\n return fieldRef;\n } as never;\n\n constructor(\n name: string,\n builder: PothosSchemaTypes.SchemaBuilder<Types>,\n model: string,\n fieldMap: FieldMap,\n ) {\n super(name, builder, 'PrismaObject', 'Object');\n\n this.model = model;\n this.prismaFieldMap = fieldMap;\n }\n\n relation<\n Field extends Model['Fields'],\n Nullable extends boolean,\n Args extends InputFieldMap,\n ResolveReturnShape,\n >(\n ...allArgs: NormalizeArgs<\n [\n name: Field,\n options?: RelatedFieldOptions<\n Types,\n Model,\n Field,\n Nullable,\n Args,\n ResolveReturnShape,\n NeedsResolve,\n Shape\n >,\n ]\n >\n ): FieldRef<Model['Relations'][Field]['Shape'], 'Object'> {\n const [name, options = {} as never] = allArgs;\n const relationField = getRelation(this.model, this.builder, name);\n const ref = options.type ?? getRefFromModel(relationField.type, this.builder);\n\n const { query = {}, resolve, extensions, ...rest } = options;\n\n const relationSelect = (\n args: object,\n context: object,\n nestedQuery: (query: unknown) => unknown,\n ) => ({ select: { [name]: nestedQuery(query) } });\n\n return this.field({\n ...(rest as {}),\n type: relationField.isList ? [ref] : ref,\n extensions: {\n ...extensions,\n pothosPrismaSelect: relationSelect as never,\n pothosPrismaLoaded: (value: Record<string, unknown>) => value[name] !== undefined,\n pothosPrismaFallback:\n resolve &&\n ((q: {}, parent: Shape, args: {}, context: {}, info: GraphQLResolveInfo) =>\n resolve(\n { ...q, ...(typeof query === 'function' ? query(args, context) : query) } as never,\n parent,\n args as never,\n context,\n info,\n )),\n },\n resolve: (parent) => (parent as Record<string, never>)[name],\n }) as FieldRef<Model['Relations'][Field]['Shape'], 'Object'>;\n }\n\n relationCount<Field extends Model['Fields']>(\n ...allArgs: NormalizeArgs<\n [name: Field, options?: RelationCountOptions<Types, Shape, NeedsResolve>]\n >\n ): FieldRef<number, 'Object'> {\n const [name, options = {} as never] = allArgs;\n\n const { resolve, ...rest } = options;\n\n const countSelect = {\n _count: {\n select: { [name]: true },\n },\n };\n\n return this.field({\n ...(rest as {}),\n type: 'Int',\n nullable: false,\n select: countSelect as never,\n resolve: (parent, args, context, info) =>\n (parent as unknown as { _count: Record<string, never> })._count?.[name],\n }) as FieldRef<number, 'Object'>;\n }\n\n variant<Variant extends Model['Name'] | PrismaObjectRef<Model>>(\n ...allArgs: NormalizeArgs<\n [\n variant: Variant,\n options?: VariantFieldOptions<\n Types,\n Model,\n Variant extends PrismaObjectRef<Model> ? Variant : PrismaObjectRef<Model>\n >,\n ]\n >\n ): FieldRef<Model['Shape'], 'Object'> {\n const [variant, options = {} as never] = allArgs;\n const ref: PrismaObjectRef<PrismaModelTypes> =\n typeof variant === 'string' ? getRefFromModel(variant, this.builder) : variant;\n\n const selfSelect = (args: object, context: object, nestedQuery: (query: unknown) => unknown) =>\n nestedQuery({});\n\n return this.field({\n ...(options as {}),\n type: ref,\n extensions: {\n ...options?.extensions,\n pothosPrismaSelect: selfSelect,\n },\n resolve: (parent, args, context, info) => parent as never,\n }) as FieldRef<Model['Shape'], 'Object'>;\n }\n\n expose<\n Type extends TypeParam<Types>,\n Nullable extends boolean,\n ResolveReturnShape,\n Name extends CompatibleTypes<Types, Model['Shape'], Type, Nullable>,\n >(\n ...args: NormalizeArgs<\n [\n name: Name,\n options?: Omit<\n PothosSchemaTypes.ObjectFieldOptions<\n Types,\n Shape,\n Type,\n Nullable,\n {},\n ResolveReturnShape\n >,\n 'resolve' | 'select'\n >,\n ]\n >\n ) {\n const [name, options = {} as never] = args;\n\n const typeConfig = this.builder.configStore.getTypeConfig(this.typename, 'Object');\n const usingSelect = !!typeConfig.extensions?.pothosPrismaSelect;\n\n return this.exposeField(name as never, {\n ...options,\n extensions: {\n ...options.extensions,\n pothosPrismaVariant: name,\n pothosPrismaSelect: usingSelect && {\n [name]: true,\n },\n },\n });\n }\n\n private createExpose<Type extends TypeParam<Types>>(type: Type) {\n return <\n Nullable extends boolean,\n ResolveReturnShape,\n Name extends CompatibleTypes<Types, Model['Shape'], Type, Nullable>,\n >(\n ...args: NormalizeArgs<\n [\n name: Name,\n options?: Omit<\n PothosSchemaTypes.ObjectFieldOptions<\n Types,\n Shape,\n Type,\n Nullable,\n {},\n ResolveReturnShape\n >,\n 'resolve' | 'type' | 'select'\n >,\n ]\n >\n ) => {\n const [name, options = {} as never] = args;\n\n return this.expose(name as never, {\n ...options,\n type,\n });\n };\n }\n}\n"],"names":["RootFieldBuilder","prismaCursorConnectionQuery","wrapConnectionResult","getCursorFormatter","getCursorParser","getRefFromModel","getRelation","RootBuilder","PrismaObjectFieldBuilder","relation","allArgs","name","options","relationField","model","builder","ref","type","query","resolve","extensions","rest","relationSelect","args","context","nestedQuery","select","field","isList","pothosPrismaSelect","pothosPrismaLoaded","value","undefined","pothosPrismaFallback","q","parent","info","relationCount","countSelect","_count","nullable","variant","selfSelect","expose","typeConfig","configStore","getTypeConfig","typename","usingSelect","exposeField","pothosPrismaVariant","createExpose","constructor","fieldMap","exposeBoolean","exposeFloat","exposeInt","exposeID","exposeString","exposeBooleanList","exposeFloatList","exposeIntList","exposeIDList","exposeStringList","relatedConnection","maxSize","defaultSize","cursor","totalCount","connectionOptions","edgeOptions","typeName","formatCursor","parseCursor","getQuery","ctx","fieldRef","connection","Promise","then","result","take","connectionQuery","fields","t","int","pothosPrismaParentSelect","pothosPrismaIndirectInclude","getType","path","prismaFieldMap"],"mappings":"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"}
@@ -4,6 +4,7 @@ import { PrismaObjectFieldBuilder } from './field-builder.js';
4
4
  import { ModelLoader } from './model-loader.js';
5
5
  import PrismaNodeRef from './node-ref.js';
6
6
  import { getDelegateFromModel, getRefFromModel } from './util/datamodel.js';
7
+ import { getClient, getDMMF } from './util/get-client.js';
7
8
  import { queryFromInfo } from './util/map-query.js';
8
9
  import { getRelationMap } from './util/relation-map.js';
9
10
  const schemaBuilderProto = SchemaBuilder.prototype;
@@ -11,7 +12,7 @@ schemaBuilderProto.prismaObject = function prismaObject(type, { fields, findUniq
11
12
  const ref = options.variant ? this.objectRef(options.variant) : getRefFromModel(type, this);
12
13
  var _variant, ref1;
13
14
  const name = (ref1 = (_variant = options.variant) !== null && _variant !== void 0 ? _variant : options.name) !== null && ref1 !== void 0 ? ref1 : type;
14
- const fieldMap = getRelationMap(this.options.prisma.client).get(type);
15
+ const fieldMap = getRelationMap(getDMMF(this)).get(type);
15
16
  ref.name = name;
16
17
  this.objectType(ref, {
17
18
  ...options,
@@ -26,7 +27,7 @@ schemaBuilderProto.prismaObject = function prismaObject(type, { fields, findUniq
26
27
  }), this)
27
28
  },
28
29
  name,
29
- fields: fields ? () => fields(new PrismaObjectFieldBuilder(name, this, type, getRelationMap(this.options.prisma.client).get(type)))
30
+ fields: fields ? () => fields(new PrismaObjectFieldBuilder(name, this, type, getRelationMap(getDMMF(this)).get(type)))
30
31
  : undefined
31
32
  });
32
33
  return ref;
@@ -39,7 +40,6 @@ schemaBuilderProto.prismaNode = function prismaNode(type, { findUnique, name, va
39
40
  }
40
41
  var ref2;
41
42
  const typeName = (ref2 = variant !== null && variant !== void 0 ? variant : name) !== null && ref2 !== void 0 ? ref2 : type;
42
- const delegate = getDelegateFromModel(this.options.prisma.client, type);
43
43
  const nodeRef = new PrismaNodeRef(typeName);
44
44
  var _interfaces;
45
45
  const extendedOptions = {
@@ -52,6 +52,7 @@ schemaBuilderProto.prismaNode = function prismaNode(type, { findUnique, name, va
52
52
  findUnique: (parent, context) => findUnique(options.id.resolve(parent, context), context),
53
53
  loadWithoutCache: async (id, context, info) => {
54
54
  const query = queryFromInfo(context, info, typeName);
55
+ const delegate = getDelegateFromModel(getClient(this, context), type);
55
56
  const record = await delegate.findUnique({
56
57
  ...query,
57
58
  rejectOnNotFound: true,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/schema-builder.ts"],"sourcesContent":["import './global-types';\nimport { GraphQLResolveInfo } from 'graphql';\nimport SchemaBuilder, {\n brandWithType,\n FieldRef,\n InterfaceRef,\n OutputType,\n SchemaTypes,\n} from '@pothos/core';\nimport { PrismaObjectFieldBuilder } from './field-builder';\nimport { ModelLoader } from './model-loader';\nimport PrismaNodeRef from './node-ref';\nimport { PrismaModelTypes, PrismaNodeOptions } from './types';\nimport { getDelegateFromModel, getRefFromModel } from './util/datamodel';\nimport { queryFromInfo } from './util/map-query';\nimport { getRelationMap } from './util/relation-map';\n\nconst schemaBuilderProto = SchemaBuilder.prototype as PothosSchemaTypes.SchemaBuilder<SchemaTypes>;\n\nschemaBuilderProto.prismaObject = function prismaObject(type, { fields, findUnique, ...options }) {\n const ref = options.variant ? this.objectRef(options.variant) : getRefFromModel(type, this);\n const name = options.variant ?? options.name ?? type;\n const fieldMap = getRelationMap(this.options.prisma.client).get(type)!;\n\n ref.name = name;\n\n this.objectType(ref, {\n ...(options as {}),\n extensions: {\n ...options.extensions,\n pothosPrismaInclude: options.include,\n pothosPrismaModel: type,\n pothosPrismaFieldMap: fieldMap,\n pothosPrismaSelect: options.select,\n pothosPrismaLoader: ModelLoader.forRef(\n type,\n (findUnique as never) ||\n (() => {\n throw new Error(`Missing findUnique for ${ref.name}`);\n }),\n this,\n ),\n },\n name,\n fields: fields\n ? () =>\n fields(\n new PrismaObjectFieldBuilder(\n name,\n this,\n type,\n getRelationMap(this.options.prisma.client).get(type)!,\n ),\n )\n : undefined,\n });\n\n return ref as never;\n};\n\nschemaBuilderProto.prismaNode = function prismaNode(\n this: PothosSchemaTypes.SchemaBuilder<SchemaTypes> & {\n nodeInterfaceRef?: () => InterfaceRef<unknown>;\n },\n type: keyof SchemaTypes['PrismaTypes'],\n {\n findUnique,\n name,\n variant,\n ...options\n }: PrismaNodeOptions<SchemaTypes, PrismaModelTypes, [], never, {}, {}>,\n) {\n const interfaceRef = this.nodeInterfaceRef?.();\n\n if (!interfaceRef) {\n throw new TypeError('builder.prismaNode requires @pothos/plugin-relay to be installed');\n }\n\n const typeName = variant ?? name ?? type;\n const delegate = getDelegateFromModel(this.options.prisma.client, type);\n const nodeRef = new PrismaNodeRef(typeName);\n const extendedOptions = {\n ...options,\n variant,\n interfaces: [interfaceRef, ...(options.interfaces ?? [])],\n findUnique: (parent: unknown, context: {}) =>\n findUnique(options.id.resolve(parent as never, context) as string, context),\n loadWithoutCache: async (\n id: string,\n context: SchemaTypes['Context'],\n info: GraphQLResolveInfo,\n ) => {\n const query = queryFromInfo(context, info, typeName);\n const record = await delegate.findUnique({\n ...query,\n rejectOnNotFound: true,\n where: findUnique(id, context),\n } as never);\n\n brandWithType(record, typeName as OutputType<SchemaTypes>);\n\n return record;\n },\n };\n\n const ref = this.prismaObject(type, extendedOptions as never);\n\n this.configStore.onTypeConfig(ref, (nodeConfig) => {\n this.objectField(ref, 'id', (t) =>\n (\n t as unknown as {\n globalID: (options: Record<string, unknown>) => FieldRef<unknown>;\n }\n ).globalID({\n ...options.id,\n nullable: false,\n args: {},\n resolve: async (\n parent: never,\n args: object,\n context: object,\n info: GraphQLResolveInfo,\n ) => ({\n type: nodeConfig.name,\n id: await options.id.resolve(parent, context),\n }),\n }),\n );\n });\n\n this.configStore.associateRefWithName(nodeRef, typeName);\n\n return nodeRef;\n} as never;\n"],"names":["SchemaBuilder","brandWithType","PrismaObjectFieldBuilder","ModelLoader","PrismaNodeRef","getDelegateFromModel","getRefFromModel","queryFromInfo","getRelationMap","schemaBuilderProto","prototype","prismaObject","type","fields","findUnique","options","ref","variant","objectRef","name","fieldMap","prisma","client","get","objectType","extensions","pothosPrismaInclude","include","pothosPrismaModel","pothosPrismaFieldMap","pothosPrismaSelect","select","pothosPrismaLoader","forRef","Error","undefined","prismaNode","interfaceRef","nodeInterfaceRef","TypeError","typeName","delegate","nodeRef","extendedOptions","interfaces","parent","context","id","resolve","loadWithoutCache","info","query","record","rejectOnNotFound","where","configStore","onTypeConfig","nodeConfig","objectField","t","globalID","nullable","args","associateRefWithName"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/schema-builder.ts"],"sourcesContent":["import './global-types';\nimport { GraphQLResolveInfo } from 'graphql';\nimport SchemaBuilder, {\n brandWithType,\n FieldRef,\n InterfaceRef,\n OutputType,\n SchemaTypes,\n} from '@pothos/core';\nimport { PrismaObjectFieldBuilder } from './field-builder';\nimport { ModelLoader } from './model-loader';\nimport PrismaNodeRef from './node-ref';\nimport { PrismaModelTypes, PrismaNodeOptions } from './types';\nimport { getDelegateFromModel, getRefFromModel } from './util/datamodel';\nimport { getClient, getDMMF } from './util/get-client';\nimport { queryFromInfo } from './util/map-query';\nimport { getRelationMap } from './util/relation-map';\n\nconst schemaBuilderProto = SchemaBuilder.prototype as PothosSchemaTypes.SchemaBuilder<SchemaTypes>;\n\nschemaBuilderProto.prismaObject = function prismaObject(type, { fields, findUnique, ...options }) {\n const ref = options.variant ? this.objectRef(options.variant) : getRefFromModel(type, this);\n const name = options.variant ?? options.name ?? type;\n const fieldMap = getRelationMap(getDMMF(this)).get(type)!;\n\n ref.name = name;\n\n this.objectType(ref, {\n ...(options as {}),\n extensions: {\n ...options.extensions,\n pothosPrismaInclude: options.include,\n pothosPrismaModel: type,\n pothosPrismaFieldMap: fieldMap,\n pothosPrismaSelect: options.select,\n pothosPrismaLoader: ModelLoader.forRef(\n type,\n (findUnique as never) ||\n (() => {\n throw new Error(`Missing findUnique for ${ref.name}`);\n }),\n this,\n ),\n },\n name,\n fields: fields\n ? () =>\n fields(\n new PrismaObjectFieldBuilder(\n name,\n this,\n type,\n getRelationMap(getDMMF(this)).get(type)!,\n ),\n )\n : undefined,\n });\n\n return ref as never;\n};\n\nschemaBuilderProto.prismaNode = function prismaNode(\n this: PothosSchemaTypes.SchemaBuilder<SchemaTypes> & {\n nodeInterfaceRef?: () => InterfaceRef<unknown>;\n },\n type: keyof SchemaTypes['PrismaTypes'],\n {\n findUnique,\n name,\n variant,\n ...options\n }: PrismaNodeOptions<SchemaTypes, PrismaModelTypes, [], never, {}, {}>,\n) {\n const interfaceRef = this.nodeInterfaceRef?.();\n\n if (!interfaceRef) {\n throw new TypeError('builder.prismaNode requires @pothos/plugin-relay to be installed');\n }\n\n const typeName = variant ?? name ?? type;\n const nodeRef = new PrismaNodeRef(typeName);\n const extendedOptions = {\n ...options,\n variant,\n interfaces: [interfaceRef, ...(options.interfaces ?? [])],\n findUnique: (parent: unknown, context: {}) =>\n findUnique(options.id.resolve(parent as never, context) as string, context),\n loadWithoutCache: async (\n id: string,\n context: SchemaTypes['Context'],\n info: GraphQLResolveInfo,\n ) => {\n const query = queryFromInfo(context, info, typeName);\n const delegate = getDelegateFromModel(getClient(this, context), type);\n const record = await delegate.findUnique({\n ...query,\n rejectOnNotFound: true,\n where: findUnique(id, context),\n } as never);\n\n brandWithType(record, typeName as OutputType<SchemaTypes>);\n\n return record;\n },\n };\n\n const ref = this.prismaObject(type, extendedOptions as never);\n\n this.configStore.onTypeConfig(ref, (nodeConfig) => {\n this.objectField(ref, 'id', (t) =>\n (\n t as unknown as {\n globalID: (options: Record<string, unknown>) => FieldRef<unknown>;\n }\n ).globalID({\n ...options.id,\n nullable: false,\n args: {},\n resolve: async (\n parent: never,\n args: object,\n context: object,\n info: GraphQLResolveInfo,\n ) => ({\n type: nodeConfig.name,\n id: await options.id.resolve(parent, context),\n }),\n }),\n );\n });\n\n this.configStore.associateRefWithName(nodeRef, typeName);\n\n return nodeRef;\n} as never;\n"],"names":["SchemaBuilder","brandWithType","PrismaObjectFieldBuilder","ModelLoader","PrismaNodeRef","getDelegateFromModel","getRefFromModel","getClient","getDMMF","queryFromInfo","getRelationMap","schemaBuilderProto","prototype","prismaObject","type","fields","findUnique","options","ref","variant","objectRef","name","fieldMap","get","objectType","extensions","pothosPrismaInclude","include","pothosPrismaModel","pothosPrismaFieldMap","pothosPrismaSelect","select","pothosPrismaLoader","forRef","Error","undefined","prismaNode","interfaceRef","nodeInterfaceRef","TypeError","typeName","nodeRef","extendedOptions","interfaces","parent","context","id","resolve","loadWithoutCache","info","query","delegate","record","rejectOnNotFound","where","configStore","onTypeConfig","nodeConfig","objectField","t","globalID","nullable","args","associateRefWithName"],"mappings":"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"}
package/esm/types.js.map CHANGED
@@ -1 +1 @@
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"}
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 PrismaClient {\n $connect: () => Promise<void>;\n}\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 ('_count' extends keyof Selection['select']\n ? ShapeFromCount<Selection['select']['_count']>\n : {})\n : Model['Shape']\n>;\n\nexport type ShapeFromCount<Selection> = Selection extends true\n ? { _count: number }\n : Selection extends { select: infer Counts }\n ? { _count: { [K in keyof Counts]: number } }\n : never;\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"}
@@ -1,5 +1,6 @@
1
1
  import { PrismaObjectRef } from '../object-ref.js';
2
2
  import { formatCursor, parseCompositeCursor, parseRawCursor } from './cursors.js';
3
+ import { getDMMF } from './get-client.js';
3
4
  export const refMap = new WeakMap();
4
5
  export const findUniqueMap = new WeakMap();
5
6
  export const includeForRefMap = new WeakMap();
@@ -25,9 +26,7 @@ export function getRelation(name, builder, relation) {
25
26
  return fieldData;
26
27
  }
27
28
  export function getModel(name, builder) {
28
- const { client } = builder.options.prisma;
29
- // eslint-disable-next-line no-underscore-dangle
30
- const dmmf = client._dmmf;
29
+ const dmmf = getDMMF(builder);
31
30
  const modelData = dmmf.modelMap[name];
32
31
  if (!modelData) {
33
32
  throw new Error(`Model '${name}' not found in DMMF`);
@@ -1 +1 @@
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
+ {"version":3,"sources":["../../src/util/datamodel.ts"],"sourcesContent":["import { ObjectRef, SchemaTypes } from '@pothos/core';\nimport { PrismaObjectRef } from '../object-ref';\nimport { PrismaDelegate, PrismaModelTypes } from '../types';\nimport { formatCursor, parseCompositeCursor, parseRawCursor } from './cursors';\nimport { getDMMF } from './get-client';\n\nimport { PrismaClient } from '..';\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 dmmf = getDMMF(builder);\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: PrismaClient, model: string) {\n const lowerCase = `${model.slice(0, 1).toLowerCase()}${model.slice(1)}`;\n\n const delegate =\n lowerCase in client ? (client as PrismaClient & Record<string, unknown>)[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","getDMMF","refMap","WeakMap","findUniqueMap","includeForRefMap","getRefFromModel","name","builder","has","set","Map","cache","get","getRelation","relation","modelData","getModel","fieldData","fields","find","field","Error","kind","dmmf","modelMap","getCursorFormatter","cursor","primaryKey","join","getCursorParser","parser","rawCursor","getDelegateFromModel","client","model","lowerCase","slice","toLowerCase","delegate"],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /* eslint-disable no-underscore-dangle */ import { createContextCache } from '@pothos/core';
2
+ const prismaClientCache = createContextCache((builder) => createContextCache((context) => typeof builder.options.prisma.client === "function" ? builder.options.prisma.client(context) : builder.options.prisma.client));
3
+ export function getClient(builder, context) {
4
+ if (typeof builder.options.prisma.client === "function") {
5
+ return prismaClientCache(builder)(context);
6
+ }
7
+ return builder.options.prisma.client;
8
+ }
9
+ export function getDMMF(builder) {
10
+ return "dmmf" in builder.options.prisma ? builder.options.prisma.dmmf : builder.options.prisma.client._dmmf;
11
+ }
12
+ //# sourceMappingURL=get-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/util/get-client.ts"],"sourcesContent":["/* eslint-disable no-underscore-dangle */\nimport { createContextCache, SchemaTypes } from '@pothos/core';\n\nimport { PrismaClient } from '..';\n\nexport interface DMMFField {\n type: string;\n kind: string;\n name: string;\n isRequired: boolean;\n isList: boolean;\n isUnique: boolean;\n isId: boolean;\n}\n\ninterface DMMF {\n datamodel: unknown;\n modelMap: Record<\n string,\n {\n name: string;\n fields: DMMFField[];\n fieldMap?: Record<string, DMMFField>;\n primaryKey: { name: string; fields: string[] } | null;\n }\n >;\n}\n\nconst prismaClientCache = createContextCache(\n <Types extends SchemaTypes>(builder: PothosSchemaTypes.SchemaBuilder<Types>) =>\n createContextCache((context: object) =>\n typeof builder.options.prisma.client === 'function'\n ? builder.options.prisma.client(context)\n : builder.options.prisma.client,\n ),\n);\n\nexport function getClient<Types extends SchemaTypes>(\n builder: PothosSchemaTypes.SchemaBuilder<Types>,\n context: Types['Context'],\n): PrismaClient {\n if (typeof builder.options.prisma.client === 'function') {\n return prismaClientCache(builder)(context);\n }\n\n return builder.options.prisma.client;\n}\n\nexport function getDMMF<Types extends SchemaTypes>(\n builder: PothosSchemaTypes.SchemaBuilder<Types>,\n): DMMF {\n return 'dmmf' in builder.options.prisma\n ? (builder.options.prisma.dmmf as DMMF)\n : (\n builder.options.prisma.client as unknown as {\n _dmmf: DMMF;\n }\n )._dmmf;\n}\n"],"names":["createContextCache","prismaClientCache","builder","context","options","prisma","client","getClient","getDMMF","dmmf","_dmmf"],"mappings":"AAAA,yCAAyC,CACzC,SAASA,kBAAkB,QAAqB,cAAc,CAAC;AA2B/D,MAAMC,iBAAiB,GAAGD,kBAAkB,CAC1C,CAA4BE,OAA+C,GACzEF,kBAAkB,CAAC,CAACG,OAAe,GACjC,OAAOD,OAAO,CAACE,OAAO,CAACC,MAAM,CAACC,MAAM,KAAK,UAAU,GAC/CJ,OAAO,CAACE,OAAO,CAACC,MAAM,CAACC,MAAM,CAACH,OAAO,CAAC,GACtCD,OAAO,CAACE,OAAO,CAACC,MAAM,CAACC,MAAM;IAAA,CAClC;AAAA,CACJ,AAAC;AAEF,OAAO,SAASC,SAAS,CACvBL,OAA+C,EAC/CC,OAAyB,EACX;IACd,IAAI,OAAOD,OAAO,CAACE,OAAO,CAACC,MAAM,CAACC,MAAM,KAAK,UAAU,EAAE;QACvD,OAAOL,iBAAiB,CAACC,OAAO,CAAC,CAACC,OAAO,CAAC,CAAC;KAC5C;IAED,OAAOD,OAAO,CAACE,OAAO,CAACC,MAAM,CAACC,MAAM,CAAC;CACtC;AAED,OAAO,SAASE,OAAO,CACrBN,OAA+C,EACzC;IACN,OAAO,MAAM,IAAIA,OAAO,CAACE,OAAO,CAACC,MAAM,GAClCH,OAAO,CAACE,OAAO,CAACC,MAAM,CAACI,IAAI,GAC5B,AACEP,OAAO,CAACE,OAAO,CAACC,MAAM,CAACC,MAAM,CAG7BI,KAAK,CAAC;CACb"}
@@ -1,6 +1,5 @@
1
1
  import { createContextCache } from '@pothos/core';
2
- export const getRelationMap = createContextCache((client) => createRelationMap(// eslint-disable-next-line no-underscore-dangle
3
- (client)._dmmf.datamodel));
2
+ export const getRelationMap = createContextCache((dmmf) => createRelationMap(dmmf.datamodel));
4
3
  export function createRelationMap({ models }) {
5
4
  const relationMap = new Map();
6
5
  models.forEach((model) => {
@@ -1 +1 @@
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"}
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((dmmf: { datamodel: unknown }) =>\n createRelationMap(dmmf.datamodel as DMMF.Datamodel),\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","dmmf","createRelationMap","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,IAA4B,GAC5EC,iBAAiB,CAACD,IAAI,CAACE,SAAS,CAAmB;AAAA,CACpD,CAAC;AAEF,OAAO,SAASD,iBAAiB,CAAC,EAAEE,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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/global-types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport {\n FieldKind,\n FieldNullability,\n FieldRef,\n InputFieldMap,\n InterfaceParam,\n NormalizeArgs,\n OutputType,\n PluginName,\n SchemaTypes,\n ShapeFromTypeParam,\n TypeParam,\n} from '@pothos/core';\nimport PrismaNodeRef from './node-ref';\nimport { prismaModelKey, PrismaObjectRef } from './object-ref';\nimport {\n PrismaConnectionFieldOptions,\n PrismaFieldOptions,\n PrismaModelTypes,\n PrismaNodeOptions,\n PrismaObjectTypeOptions,\n} from './types';\nimport { PrismaObjectFieldOptions, PrismaPlugin, ShapeFromConnection, ShapeFromSelection } from '.';\n\ndeclare global {\n export namespace PothosSchemaTypes {\n export interface Plugins<Types extends SchemaTypes> {\n prisma: PrismaPlugin<Types>;\n }\n\n export interface SchemaBuilderOptions<Types extends SchemaTypes> {\n prisma: {\n client: {\n $connect: () => Promise<void>;\n };\n };\n }\n\n export interface UserSchemaTypes {\n PrismaTypes: {};\n }\n\n export interface ExtendDefaultTypes<PartialTypes extends Partial<UserSchemaTypes>> {\n PrismaTypes: undefined extends PartialTypes['PrismaTypes']\n ? {}\n : PartialTypes['PrismaTypes'] & {};\n }\n\n export interface PothosKindToGraphQLType {\n PrismaObject: 'Object';\n }\n\n export interface FieldOptionsByKind<\n Types extends SchemaTypes,\n ParentShape,\n Type extends TypeParam<Types>,\n Nullable extends FieldNullability<Type>,\n Args extends InputFieldMap,\n ResolveShape,\n ResolveReturnShape,\n > {\n PrismaObject: PrismaObjectFieldOptions<\n Types,\n ParentShape,\n Type,\n Nullable,\n Args,\n ResolveShape,\n ResolveReturnShape\n >;\n }\n\n export interface SchemaBuilder<Types extends SchemaTypes> {\n prismaObject: <\n Name extends keyof Types['PrismaTypes'],\n Interfaces extends InterfaceParam<Types>[],\n FindUnique,\n Model extends PrismaModelTypes & Types['PrismaTypes'][Name],\n Include = unknown,\n Select = unknown,\n >(\n name: Name,\n options: PrismaObjectTypeOptions<\n Types,\n Model,\n Interfaces,\n FindUnique,\n Include,\n Select,\n ShapeFromSelection<Model, { select: Select; include: Include }>\n >,\n ) => PrismaObjectRef<Model, ShapeFromSelection<Model, { select: Select; include: Include }>>;\n\n prismaNode: 'relay' extends PluginName\n ? <\n Name extends keyof Types['PrismaTypes'],\n Interfaces extends InterfaceParam<Types>[] = [],\n Include = unknown,\n Select = unknown,\n >(\n name: Name,\n options: PrismaNodeOptions<\n Types,\n Types['PrismaTypes'][Name] & PrismaModelTypes,\n Interfaces,\n Include,\n Select,\n ShapeFromSelection<\n PrismaModelTypes & Types['PrismaTypes'][Name],\n { select: Select; include: Include }\n >\n >,\n ) => PrismaNodeRef<\n Types['PrismaTypes'][Name] & PrismaModelTypes,\n ShapeFromSelection<\n PrismaModelTypes & Types['PrismaTypes'][Name],\n { select: Select; include: Include }\n >\n >\n : '@pothos/plugin-relay is required to use this method';\n }\n\n export interface RootFieldBuilder<\n Types extends SchemaTypes,\n ParentShape,\n Kind extends FieldKind = FieldKind,\n > {\n prismaField: <\n Args extends InputFieldMap,\n TypeParam extends\n | PrismaObjectRef<PrismaModelTypes>\n | keyof Types['PrismaTypes']\n | [keyof Types['PrismaTypes']]\n | [PrismaObjectRef<PrismaModelTypes>],\n Nullable extends FieldNullability<Type>,\n ResolveReturnShape,\n Type extends TypeParam extends [unknown]\n ? [ObjectRef<Model['Shape']>]\n : ObjectRef<Model['Shape']>,\n Model extends PrismaModelTypes = PrismaModelTypes &\n (TypeParam extends [keyof Types['PrismaTypes']]\n ? Types['PrismaTypes'][TypeParam[0]]\n : TypeParam extends [PrismaObjectRef<PrismaModelTypes>]\n ? TypeParam[0][typeof prismaModelKey]\n : TypeParam extends PrismaObjectRef<PrismaModelTypes>\n ? TypeParam[typeof prismaModelKey]\n : TypeParam extends keyof Types['PrismaTypes']\n ? Types['PrismaTypes'][TypeParam]\n : never),\n >(\n options: PrismaFieldOptions<\n Types,\n ParentShape,\n TypeParam,\n Model,\n Type,\n Args,\n Nullable,\n ResolveReturnShape,\n Kind\n >,\n ) => FieldRef<ShapeFromTypeParam<Types, Type, Nullable>>;\n\n prismaConnection: 'relay' extends PluginName\n ? <\n Type extends PrismaObjectRef<PrismaModelTypes> | keyof Types['PrismaTypes'],\n Nullable extends boolean,\n ResolveReturnShape,\n Args extends InputFieldMap = {},\n Model extends PrismaModelTypes = Type extends PrismaObjectRef<infer T>\n ? T\n : PrismaModelTypes & Types['PrismaTypes'][Type & keyof Types['PrismaTypes']],\n >(\n ...args: NormalizeArgs<\n [\n options: PrismaConnectionFieldOptions<\n Types,\n ParentShape,\n Type,\n Model,\n ObjectRef<Model['Shape']>,\n Nullable,\n Args,\n ResolveReturnShape,\n Kind\n >,\n connectionOptions?: ConnectionObjectOptions<\n Types,\n ObjectRef<Model['Shape']>,\n false,\n false,\n ResolveReturnShape\n >,\n edgeOptions?: ConnectionEdgeObjectOptions<\n Types,\n ObjectRef<Model['Shape']>,\n false,\n ResolveReturnShape\n >,\n ]\n >\n ) => FieldRef<ShapeFromConnection<ConnectionShapeHelper<Types, Model['Shape'], Nullable>>>\n : '@pothos/plugin-relay is required to use this method';\n }\n\n export interface ConnectionFieldOptions<\n Types extends SchemaTypes,\n ParentShape,\n Type extends OutputType<Types>,\n Nullable extends boolean,\n EdgeNullability extends FieldNullability<[unknown]>,\n NodeNullability extends boolean,\n Args extends InputFieldMap,\n ResolveReturnShape,\n > {}\n\n export interface ConnectionObjectOptions<\n Types extends SchemaTypes,\n Type extends OutputType<Types>,\n EdgeNullability extends FieldNullability<[unknown]>,\n NodeNullability extends boolean,\n Resolved,\n > {}\n\n export interface ConnectionEdgeObjectOptions<\n Types extends SchemaTypes,\n Type extends OutputType<Types>,\n NodeNullability extends boolean,\n Resolved,\n > {}\n\n export interface DefaultConnectionArguments {\n first?: number | null | undefined;\n last?: number | null | undefined;\n before?: string | null | undefined;\n after?: string | null | undefined;\n }\n\n export interface ConnectionShapeHelper<Types extends SchemaTypes, T, Nullable> {}\n }\n}\n"],"names":[],"mappings":"AAEA"}
1
+ {"version":3,"sources":["../src/global-types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport {\n FieldKind,\n FieldNullability,\n FieldRef,\n InputFieldMap,\n InterfaceParam,\n NormalizeArgs,\n OutputType,\n PluginName,\n SchemaTypes,\n ShapeFromTypeParam,\n TypeParam,\n} from '@pothos/core';\nimport PrismaNodeRef from './node-ref';\nimport { prismaModelKey, PrismaObjectRef } from './object-ref';\nimport {\n PrismaConnectionFieldOptions,\n PrismaFieldOptions,\n PrismaModelTypes,\n PrismaNodeOptions,\n PrismaObjectTypeOptions,\n} from './types';\nimport {\n PrismaClient,\n PrismaObjectFieldOptions,\n PrismaPlugin,\n ShapeFromConnection,\n ShapeFromSelection,\n} from '.';\n\ndeclare global {\n export namespace PothosSchemaTypes {\n export interface Plugins<Types extends SchemaTypes> {\n prisma: PrismaPlugin<Types>;\n }\n\n export interface SchemaBuilderOptions<Types extends SchemaTypes> {\n prisma:\n | {\n client: PrismaClient;\n }\n | {\n client: (ctx: Types['Context']) => PrismaClient;\n dmmf: { datamodel: unknown };\n };\n }\n\n export interface UserSchemaTypes {\n PrismaTypes: {};\n }\n\n export interface ExtendDefaultTypes<PartialTypes extends Partial<UserSchemaTypes>> {\n PrismaTypes: PartialTypes['PrismaTypes'] & {};\n }\n\n export interface PothosKindToGraphQLType {\n PrismaObject: 'Object';\n }\n\n export interface FieldOptionsByKind<\n Types extends SchemaTypes,\n ParentShape,\n Type extends TypeParam<Types>,\n Nullable extends FieldNullability<Type>,\n Args extends InputFieldMap,\n ResolveShape,\n ResolveReturnShape,\n > {\n PrismaObject: PrismaObjectFieldOptions<\n Types,\n ParentShape,\n Type,\n Nullable,\n Args,\n ResolveShape,\n ResolveReturnShape\n >;\n }\n\n export interface SchemaBuilder<Types extends SchemaTypes> {\n prismaObject: <\n Name extends keyof Types['PrismaTypes'],\n Interfaces extends InterfaceParam<Types>[],\n FindUnique,\n Model extends PrismaModelTypes & Types['PrismaTypes'][Name],\n Include = unknown,\n Select = unknown,\n >(\n name: Name,\n options: PrismaObjectTypeOptions<\n Types,\n Model,\n Interfaces,\n FindUnique,\n Include,\n Select,\n ShapeFromSelection<Model, { select: Select; include: Include }>\n >,\n ) => PrismaObjectRef<Model, ShapeFromSelection<Model, { select: Select; include: Include }>>;\n\n prismaNode: 'relay' extends PluginName\n ? <\n Name extends keyof Types['PrismaTypes'],\n Interfaces extends InterfaceParam<Types>[] = [],\n Include = unknown,\n Select = unknown,\n >(\n name: Name,\n options: PrismaNodeOptions<\n Types,\n Types['PrismaTypes'][Name] & PrismaModelTypes,\n Interfaces,\n Include,\n Select,\n ShapeFromSelection<\n PrismaModelTypes & Types['PrismaTypes'][Name],\n { select: Select; include: Include }\n >\n >,\n ) => PrismaNodeRef<\n Types['PrismaTypes'][Name] & PrismaModelTypes,\n ShapeFromSelection<\n PrismaModelTypes & Types['PrismaTypes'][Name],\n { select: Select; include: Include }\n >\n >\n : '@pothos/plugin-relay is required to use this method';\n }\n\n export interface RootFieldBuilder<\n Types extends SchemaTypes,\n ParentShape,\n Kind extends FieldKind = FieldKind,\n > {\n prismaField: <\n Args extends InputFieldMap,\n TypeParam extends\n | PrismaObjectRef<PrismaModelTypes>\n | keyof Types['PrismaTypes']\n | [keyof Types['PrismaTypes']]\n | [PrismaObjectRef<PrismaModelTypes>],\n Nullable extends FieldNullability<Type>,\n ResolveReturnShape,\n Type extends TypeParam extends [unknown]\n ? [ObjectRef<Model['Shape']>]\n : ObjectRef<Model['Shape']>,\n Model extends PrismaModelTypes = PrismaModelTypes &\n (TypeParam extends [keyof Types['PrismaTypes']]\n ? Types['PrismaTypes'][TypeParam[0]]\n : TypeParam extends [PrismaObjectRef<PrismaModelTypes>]\n ? TypeParam[0][typeof prismaModelKey]\n : TypeParam extends PrismaObjectRef<PrismaModelTypes>\n ? TypeParam[typeof prismaModelKey]\n : TypeParam extends keyof Types['PrismaTypes']\n ? Types['PrismaTypes'][TypeParam]\n : never),\n >(\n options: PrismaFieldOptions<\n Types,\n ParentShape,\n TypeParam,\n Model,\n Type,\n Args,\n Nullable,\n ResolveReturnShape,\n Kind\n >,\n ) => FieldRef<ShapeFromTypeParam<Types, Type, Nullable>>;\n\n prismaConnection: 'relay' extends PluginName\n ? <\n Type extends PrismaObjectRef<PrismaModelTypes> | keyof Types['PrismaTypes'],\n Nullable extends boolean,\n ResolveReturnShape,\n Args extends InputFieldMap = {},\n Model extends PrismaModelTypes = Type extends PrismaObjectRef<infer T>\n ? T\n : PrismaModelTypes & Types['PrismaTypes'][Type & keyof Types['PrismaTypes']],\n >(\n ...args: NormalizeArgs<\n [\n options: PrismaConnectionFieldOptions<\n Types,\n ParentShape,\n Type,\n Model,\n ObjectRef<Model['Shape']>,\n Nullable,\n Args,\n ResolveReturnShape,\n Kind\n >,\n connectionOptions?: ConnectionObjectOptions<\n Types,\n ObjectRef<Model['Shape']>,\n false,\n false,\n ResolveReturnShape\n >,\n edgeOptions?: ConnectionEdgeObjectOptions<\n Types,\n ObjectRef<Model['Shape']>,\n false,\n ResolveReturnShape\n >,\n ]\n >\n ) => FieldRef<ShapeFromConnection<ConnectionShapeHelper<Types, Model['Shape'], Nullable>>>\n : '@pothos/plugin-relay is required to use this method';\n }\n\n export interface ConnectionFieldOptions<\n Types extends SchemaTypes,\n ParentShape,\n Type extends OutputType<Types>,\n Nullable extends boolean,\n EdgeNullability extends FieldNullability<[unknown]>,\n NodeNullability extends boolean,\n Args extends InputFieldMap,\n ResolveReturnShape,\n > {}\n\n export interface ConnectionObjectOptions<\n Types extends SchemaTypes,\n Type extends OutputType<Types>,\n EdgeNullability extends FieldNullability<[unknown]>,\n NodeNullability extends boolean,\n Resolved,\n > {}\n\n export interface ConnectionEdgeObjectOptions<\n Types extends SchemaTypes,\n Type extends OutputType<Types>,\n NodeNullability extends boolean,\n Resolved,\n > {}\n\n export interface DefaultConnectionArguments {\n first?: number | null | undefined;\n last?: number | null | undefined;\n before?: string | null | undefined;\n after?: string | null | undefined;\n }\n\n export interface ConnectionShapeHelper<Types extends SchemaTypes, T, Nullable> {}\n }\n}\n"],"names":[],"mappings":"AAEA"}
package/lib/index.js CHANGED
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  var _exportNames = {
6
6
  PrismaPlugin: true,
7
7
  fieldConfig: true,
8
+ select: true,
8
9
  resolver: true,
9
10
  fieldConfig: true,
10
11
  ref: true,
@@ -64,11 +65,15 @@ exports.default = _default;
64
65
  class PrismaPlugin extends _core.BasePlugin {
65
66
  onOutputFieldConfig(fieldConfig) {
66
67
  if (fieldConfig.kind === 'PrismaObject' && fieldConfig.pothosOptions.select) {
68
+ const { select } = fieldConfig.pothosOptions;
67
69
  return {
68
70
  ...fieldConfig,
69
71
  extensions: {
70
72
  ...fieldConfig.extensions,
71
- pothosPrismaSelect: fieldConfig.pothosOptions.select
73
+ pothosPrismaSelect: typeof select === 'function' ? (args, ctx)=>({
74
+ select: select(args, ctx)
75
+ })
76
+ : select
72
77
  }
73
78
  };
74
79
  }
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import './global-types';\nimport './field-builder';\nimport './schema-builder';\nimport { getNamedType, GraphQLFieldResolver } from 'graphql';\nimport SchemaBuilder, {\n BasePlugin,\n BuildCache,\n PothosOutputFieldConfig,\n SchemaTypes,\n} from '@pothos/core';\nimport { ModelLoader } from './model-loader';\nimport { getLoaderMapping, setLoaderMappings } from './util/loader-map';\nimport { queryFromInfo, selectionStateFromInfo } from './util/map-query';\n\nexport * from './types';\n\nconst pluginName = 'prisma' as const;\n\nexport default pluginName;\n\nexport class PrismaPlugin<Types extends SchemaTypes> extends BasePlugin<Types> {\n constructor(cache: BuildCache<Types>) {\n super(cache, pluginName);\n }\n\n override onOutputFieldConfig(\n fieldConfig: PothosOutputFieldConfig<Types>,\n ): PothosOutputFieldConfig<Types> | null {\n if (fieldConfig.kind === 'PrismaObject' && fieldConfig.pothosOptions.select) {\n return {\n ...fieldConfig,\n extensions: {\n ...fieldConfig.extensions,\n pothosPrismaSelect: fieldConfig.pothosOptions.select,\n },\n };\n }\n\n return fieldConfig;\n }\n\n override wrapResolve(\n resolver: GraphQLFieldResolver<unknown, Types['Context'], object, unknown>,\n fieldConfig: PothosOutputFieldConfig<Types>,\n ): GraphQLFieldResolver<unknown, Types['Context'], object> {\n if (fieldConfig.kind !== 'PrismaObject' || !fieldConfig.extensions?.pothosPrismaSelect) {\n return resolver;\n }\n\n const parentConfig = this.buildCache.getTypeConfig(fieldConfig.parentType, 'Object');\n const loadedCheck = fieldConfig.extensions?.pothosPrismaLoaded as\n | undefined\n | ((val: unknown) => boolean);\n const loaderCache = parentConfig.extensions?.pothosPrismaLoader as (\n model: unknown,\n ) => ModelLoader;\n\n const fallback = fieldConfig.extensions?.pothosPrismaFallback as\n | undefined\n | ((query: {}, parent: unknown, args: {}, context: {}, info: {}) => unknown);\n\n return (parent, args, context, info) => {\n const mapping = getLoaderMapping(context, info.path, info.parentType.name);\n\n if ((!loadedCheck || loadedCheck(parent)) && mapping) {\n setLoaderMappings(context, info, mapping, getNamedType(info.returnType));\n\n return resolver(parent, args, context, info);\n }\n\n if (fallback) {\n return fallback(queryFromInfo(context, info), parent, args, context, info);\n }\n\n const selectionState = selectionStateFromInfo(context, info);\n\n return loaderCache(parent)\n .loadSelection(selectionState, context)\n .then((result) => {\n const mappings = selectionState.mappings[info.path.key];\n\n if (mappings) {\n setLoaderMappings(context, info, mappings.mappings, getNamedType(info.returnType));\n }\n\n return resolver(result, args, context, info);\n });\n };\n }\n}\n\nSchemaBuilder.registerPlugin(pluginName, PrismaPlugin);\n"],"names":["pluginName","PrismaPlugin","BasePlugin","onOutputFieldConfig","fieldConfig","kind","pothosOptions","select","extensions","pothosPrismaSelect","wrapResolve","resolver","parentConfig","buildCache","getTypeConfig","parentType","loadedCheck","pothosPrismaLoaded","loaderCache","pothosPrismaLoader","fallback","pothosPrismaFallback","parent","args","context","info","mapping","getLoaderMapping","path","name","setLoaderMappings","getNamedType","returnType","queryFromInfo","selectionState","selectionStateFromInfo","loadSelection","then","result","mappings","key","constructor","cache","SchemaBuilder","registerPlugin"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import './global-types';\nimport './field-builder';\nimport './schema-builder';\nimport { getNamedType, GraphQLFieldResolver } from 'graphql';\nimport SchemaBuilder, {\n BasePlugin,\n BuildCache,\n PothosOutputFieldConfig,\n SchemaTypes,\n} from '@pothos/core';\nimport { ModelLoader } from './model-loader';\nimport { getLoaderMapping, setLoaderMappings } from './util/loader-map';\nimport { queryFromInfo, selectionStateFromInfo } from './util/map-query';\n\nexport * from './types';\n\nconst pluginName = 'prisma' as const;\n\nexport default pluginName;\n\nexport class PrismaPlugin<Types extends SchemaTypes> extends BasePlugin<Types> {\n constructor(cache: BuildCache<Types>) {\n super(cache, pluginName);\n }\n\n override onOutputFieldConfig(\n fieldConfig: PothosOutputFieldConfig<Types>,\n ): PothosOutputFieldConfig<Types> | null {\n if (fieldConfig.kind === 'PrismaObject' && fieldConfig.pothosOptions.select) {\n const { select } = fieldConfig.pothosOptions;\n return {\n ...fieldConfig,\n extensions: {\n ...fieldConfig.extensions,\n pothosPrismaSelect:\n typeof select === 'function'\n ? (args: {}, ctx: Types['Context']) => ({ select: select(args, ctx) })\n : select,\n },\n };\n }\n\n return fieldConfig;\n }\n\n override wrapResolve(\n resolver: GraphQLFieldResolver<unknown, Types['Context'], object, unknown>,\n fieldConfig: PothosOutputFieldConfig<Types>,\n ): GraphQLFieldResolver<unknown, Types['Context'], object> {\n if (fieldConfig.kind !== 'PrismaObject' || !fieldConfig.extensions?.pothosPrismaSelect) {\n return resolver;\n }\n\n const parentConfig = this.buildCache.getTypeConfig(fieldConfig.parentType, 'Object');\n const loadedCheck = fieldConfig.extensions?.pothosPrismaLoaded as\n | undefined\n | ((val: unknown) => boolean);\n const loaderCache = parentConfig.extensions?.pothosPrismaLoader as (\n model: unknown,\n ) => ModelLoader;\n\n const fallback = fieldConfig.extensions?.pothosPrismaFallback as\n | undefined\n | ((query: {}, parent: unknown, args: {}, context: {}, info: {}) => unknown);\n\n return (parent, args, context, info) => {\n const mapping = getLoaderMapping(context, info.path, info.parentType.name);\n\n if ((!loadedCheck || loadedCheck(parent)) && mapping) {\n setLoaderMappings(context, info, mapping, getNamedType(info.returnType));\n\n return resolver(parent, args, context, info);\n }\n\n if (fallback) {\n return fallback(queryFromInfo(context, info), parent, args, context, info);\n }\n\n const selectionState = selectionStateFromInfo(context, info);\n\n return loaderCache(parent)\n .loadSelection(selectionState, context)\n .then((result) => {\n const mappings = selectionState.mappings[info.path.key];\n\n if (mappings) {\n setLoaderMappings(context, info, mappings.mappings, getNamedType(info.returnType));\n }\n\n return resolver(result, args, context, info);\n });\n };\n }\n}\n\nSchemaBuilder.registerPlugin(pluginName, PrismaPlugin);\n"],"names":["pluginName","PrismaPlugin","BasePlugin","onOutputFieldConfig","fieldConfig","kind","pothosOptions","select","extensions","pothosPrismaSelect","args","ctx","wrapResolve","resolver","parentConfig","buildCache","getTypeConfig","parentType","loadedCheck","pothosPrismaLoaded","loaderCache","pothosPrismaLoader","fallback","pothosPrismaFallback","parent","context","info","mapping","getLoaderMapping","path","name","setLoaderMappings","getNamedType","returnType","queryFromInfo","selectionState","selectionStateFromInfo","loadSelection","then","result","mappings","key","constructor","cache","SchemaBuilder","registerPlugin"],"mappings":"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"}
@@ -4,11 +4,11 @@ Object.defineProperty(exports, "__esModule", {
4
4
  });
5
5
  var _core = require("@pothos/core");
6
6
  var _datamodel = require("./util/datamodel");
7
+ var _getClient = require("./util/get-client");
7
8
  var _selections = require("./util/selections");
8
9
  class ModelLoader {
9
10
  static forRef(modelName, findUnique, builder) {
10
- const delegate = (0, _datamodel).getDelegateFromModel(builder.options.prisma.client, modelName);
11
- return (0, _core).createContextCache((model)=>new ModelLoader(model, delegate, findUnique)
11
+ return (0, _core).createContextCache((model)=>new ModelLoader(model, builder, modelName, findUnique)
12
12
  );
13
13
  }
14
14
  async loadSelection(selection, context) {
@@ -25,7 +25,8 @@ class ModelLoader {
25
25
  const entry = {
26
26
  promise: Promise.resolve().then(()=>{
27
27
  this.staged.delete(entry);
28
- return this.delegate.findUnique({
28
+ const delegate = (0, _datamodel).getDelegateFromModel((0, _getClient).getClient(this.builder, context), this.modelName);
29
+ return delegate.findUnique({
29
30
  rejectOnNotFound: true,
30
31
  ...(0, _selections).selectionToQuery(state),
31
32
  where: {
@@ -38,11 +39,12 @@ class ModelLoader {
38
39
  this.staged.add(entry);
39
40
  return entry.promise;
40
41
  }
41
- constructor(model, delegate, findUnique){
42
+ constructor(model, builder, modelName, findUnique){
42
43
  this.staged = new Set();
43
44
  this.model = model;
44
- this.delegate = delegate;
45
+ this.builder = builder;
45
46
  this.findUnique = findUnique;
47
+ this.modelName = modelName;
46
48
  }
47
49
  }
48
50
  exports.ModelLoader = ModelLoader;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/model-loader.ts"],"sourcesContent":["import { createContextCache, SchemaTypes } from '@pothos/core';\nimport { PrismaDelegate } from './types';\nimport { getDelegateFromModel } from './util/datamodel';\nimport {\n mergeSelection,\n selectionCompatible,\n SelectionState,\n selectionToQuery,\n} from './util/selections';\n\nexport class ModelLoader {\n model: object;\n delegate: PrismaDelegate;\n findUnique: (args: unknown, ctx: {}) => unknown;\n\n staged = new Set<{\n promise: Promise<Record<string, unknown>>;\n state: SelectionState;\n }>();\n\n constructor(\n model: object,\n delegate: PrismaDelegate,\n findUnique: (args: unknown, ctx: {}) => unknown,\n ) {\n this.model = model;\n this.delegate = delegate;\n this.findUnique = findUnique;\n }\n\n static forRef<Types extends SchemaTypes>(\n modelName: string,\n findUnique: (args: unknown, ctx: {}) => unknown,\n builder: PothosSchemaTypes.SchemaBuilder<Types>,\n ) {\n const delegate = getDelegateFromModel(builder.options.prisma.client, modelName);\n\n return createContextCache((model) => new ModelLoader(model, delegate, findUnique));\n }\n\n async loadSelection(selection: SelectionState, context: object) {\n const query = selectionToQuery(selection);\n\n for (const entry of this.staged) {\n if (selectionCompatible(entry.state, query)) {\n mergeSelection(entry.state, query);\n\n return entry.promise;\n }\n }\n\n return this.initLoad(selection, context);\n }\n\n async initLoad(state: SelectionState, context: {}) {\n const entry = {\n promise: Promise.resolve().then(() => {\n this.staged.delete(entry);\n\n return this.delegate.findUnique({\n rejectOnNotFound: true,\n ...selectionToQuery(state),\n where: { ...(this.findUnique(this.model, context) as {}) },\n } as never) as Promise<Record<string, unknown>>;\n }),\n state,\n };\n\n this.staged.add(entry);\n\n return entry.promise;\n }\n}\n"],"names":["ModelLoader","forRef","modelName","findUnique","builder","delegate","getDelegateFromModel","options","prisma","client","createContextCache","model","loadSelection","selection","context","query","selectionToQuery","entry","staged","selectionCompatible","state","mergeSelection","promise","initLoad","Promise","resolve","then","delete","rejectOnNotFound","where","add","constructor","Set"],"mappings":"AAAA;;;;AAAgD,IAAA,KAAc,WAAd,cAAc,CAAA;AAEzB,IAAA,UAAkB,WAAlB,kBAAkB,CAAA;AAMhD,IAAA,WAAmB,WAAnB,mBAAmB,CAAA;AAEnB,MAAMA,WAAW;IAoBtB,OAAOC,MAAM,CACXC,SAAiB,EACjBC,UAA+C,EAC/CC,OAA+C,EAC/C;QACA,MAAMC,QAAQ,GAAGC,CAAAA,GAAAA,UAAoB,AAA0C,CAAA,qBAA1C,CAACF,OAAO,CAACG,OAAO,CAACC,MAAM,CAACC,MAAM,EAAEP,SAAS,CAAC,AAAC;QAEhF,OAAOQ,CAAAA,GAAAA,KAAkB,AAAyD,CAAA,mBAAzD,CAAC,CAACC,KAAK,GAAK,IAAIX,WAAW,CAACW,KAAK,EAAEN,QAAQ,EAAEF,UAAU,CAAC;QAAA,CAAC,CAAC;KACpF;IAED,MAAMS,aAAa,CAACC,SAAyB,EAAEC,OAAe,EAAE;QAC9D,MAAMC,KAAK,GAAGC,CAAAA,GAAAA,WAAgB,AAAW,CAAA,iBAAX,CAACH,SAAS,CAAC,AAAC;QAE1C,KAAK,MAAMI,KAAK,IAAI,IAAI,CAACC,MAAM,CAAE;YAC/B,IAAIC,CAAAA,GAAAA,WAAmB,AAAoB,CAAA,oBAApB,CAACF,KAAK,CAACG,KAAK,EAAEL,KAAK,CAAC,EAAE;gBAC3CM,CAAAA,GAAAA,WAAc,AAAoB,CAAA,eAApB,CAACJ,KAAK,CAACG,KAAK,EAAEL,KAAK,CAAC,CAAC;gBAEnC,OAAOE,KAAK,CAACK,OAAO,CAAC;aACtB;SACF;QAED,OAAO,IAAI,CAACC,QAAQ,CAACV,SAAS,EAAEC,OAAO,CAAC,CAAC;KAC1C;IAED,MAAMS,QAAQ,CAACH,KAAqB,EAAEN,OAAW,EAAE;QACjD,MAAMG,KAAK,GAAG;YACZK,OAAO,EAAEE,OAAO,CAACC,OAAO,EAAE,CAACC,IAAI,CAAC,IAAM;gBACpC,IAAI,CAACR,MAAM,CAACS,MAAM,CAACV,KAAK,CAAC,CAAC;gBAE1B,OAAO,IAAI,CAACZ,QAAQ,CAACF,UAAU,CAAC;oBAC9ByB,gBAAgB,EAAE,IAAI;oBACtB,GAAGZ,CAAAA,GAAAA,WAAgB,AAAO,CAAA,iBAAP,CAACI,KAAK,CAAC;oBAC1BS,KAAK,EAAE;wBAAE,GAAI,IAAI,CAAC1B,UAAU,CAAC,IAAI,CAACQ,KAAK,EAAEG,OAAO,CAAC;qBAAS;iBAC3D,CAAU,CAAqC;aACjD,CAAC;YACFM,KAAK;SACN,AAAC;QAEF,IAAI,CAACF,MAAM,CAACY,GAAG,CAACb,KAAK,CAAC,CAAC;QAEvB,OAAOA,KAAK,CAACK,OAAO,CAAC;KACtB;IAnDDS,YACEpB,KAAa,EACbN,QAAwB,EACxBF,UAA+C,CAC/C;QATFe,KAAAA,MAAM,GAAG,IAAIc,GAAG,EAGZ,AAAC,AAlBP,CAkBO;QAOH,IAAI,CAACrB,KAAK,GAAGA,KAAK,CAAC;QACnB,IAAI,CAACN,QAAQ,GAAGA,QAAQ,CAAC;QACzB,IAAI,CAACF,UAAU,GAAGA,UAAU,CAAC;KAC9B;CA4CF;QA9DYH,WAAW,GAAXA,WAAW"}
1
+ {"version":3,"sources":["../src/model-loader.ts"],"sourcesContent":["import { createContextCache, SchemaTypes } from '@pothos/core';\nimport { getDelegateFromModel } from './util/datamodel';\nimport { getClient } from './util/get-client';\nimport {\n mergeSelection,\n selectionCompatible,\n SelectionState,\n selectionToQuery,\n} from './util/selections';\n\nexport class ModelLoader {\n model: object;\n builder: PothosSchemaTypes.SchemaBuilder<never>;\n findUnique: (args: unknown, ctx: {}) => unknown;\n modelName: string;\n\n staged = new Set<{\n promise: Promise<Record<string, unknown>>;\n state: SelectionState;\n }>();\n\n constructor(\n model: object,\n builder: PothosSchemaTypes.SchemaBuilder<never>,\n modelName: string,\n findUnique: (args: unknown, ctx: {}) => unknown,\n ) {\n this.model = model;\n this.builder = builder;\n this.findUnique = findUnique;\n this.modelName = modelName;\n }\n\n static forRef<Types extends SchemaTypes>(\n modelName: string,\n findUnique: (args: unknown, ctx: {}) => unknown,\n builder: PothosSchemaTypes.SchemaBuilder<Types>,\n ) {\n return createContextCache(\n (model) => new ModelLoader(model, builder as never, modelName, findUnique),\n );\n }\n\n async loadSelection(selection: SelectionState, context: object) {\n const query = selectionToQuery(selection);\n\n for (const entry of this.staged) {\n if (selectionCompatible(entry.state, query)) {\n mergeSelection(entry.state, query);\n\n return entry.promise;\n }\n }\n\n return this.initLoad(selection, context);\n }\n\n async initLoad(state: SelectionState, context: {}) {\n const entry = {\n promise: Promise.resolve().then(() => {\n this.staged.delete(entry);\n\n const delegate = getDelegateFromModel(\n getClient(this.builder, context as never),\n this.modelName,\n );\n\n return delegate.findUnique({\n rejectOnNotFound: true,\n ...selectionToQuery(state),\n where: { ...(this.findUnique(this.model, context) as {}) },\n } as never) as Promise<Record<string, unknown>>;\n }),\n state,\n };\n\n this.staged.add(entry);\n\n return entry.promise;\n }\n}\n"],"names":["ModelLoader","forRef","modelName","findUnique","builder","createContextCache","model","loadSelection","selection","context","query","selectionToQuery","entry","staged","selectionCompatible","state","mergeSelection","promise","initLoad","Promise","resolve","then","delete","delegate","getDelegateFromModel","getClient","rejectOnNotFound","where","add","constructor","Set"],"mappings":"AAAA;;;;AAAgD,IAAA,KAAc,WAAd,cAAc,CAAA;AACzB,IAAA,UAAkB,WAAlB,kBAAkB,CAAA;AAC7B,IAAA,UAAmB,WAAnB,mBAAmB,CAAA;AAMtC,IAAA,WAAmB,WAAnB,mBAAmB,CAAA;AAEnB,MAAMA,WAAW;IAuBtB,OAAOC,MAAM,CACXC,SAAiB,EACjBC,UAA+C,EAC/CC,OAA+C,EAC/C;QACA,OAAOC,CAAAA,GAAAA,KAAkB,AAExB,CAAA,mBAFwB,CACvB,CAACC,KAAK,GAAK,IAAIN,WAAW,CAACM,KAAK,EAAEF,OAAO,EAAWF,SAAS,EAAEC,UAAU,CAAC;QAAA,CAC3E,CAAC;KACH;IAED,MAAMI,aAAa,CAACC,SAAyB,EAAEC,OAAe,EAAE;QAC9D,MAAMC,KAAK,GAAGC,CAAAA,GAAAA,WAAgB,AAAW,CAAA,iBAAX,CAACH,SAAS,CAAC,AAAC;QAE1C,KAAK,MAAMI,KAAK,IAAI,IAAI,CAACC,MAAM,CAAE;YAC/B,IAAIC,CAAAA,GAAAA,WAAmB,AAAoB,CAAA,oBAApB,CAACF,KAAK,CAACG,KAAK,EAAEL,KAAK,CAAC,EAAE;gBAC3CM,CAAAA,GAAAA,WAAc,AAAoB,CAAA,eAApB,CAACJ,KAAK,CAACG,KAAK,EAAEL,KAAK,CAAC,CAAC;gBAEnC,OAAOE,KAAK,CAACK,OAAO,CAAC;aACtB;SACF;QAED,OAAO,IAAI,CAACC,QAAQ,CAACV,SAAS,EAAEC,OAAO,CAAC,CAAC;KAC1C;IAED,MAAMS,QAAQ,CAACH,KAAqB,EAAEN,OAAW,EAAE;QACjD,MAAMG,KAAK,GAAG;YACZK,OAAO,EAAEE,OAAO,CAACC,OAAO,EAAE,CAACC,IAAI,CAAC,IAAM;gBACpC,IAAI,CAACR,MAAM,CAACS,MAAM,CAACV,KAAK,CAAC,CAAC;gBAE1B,MAAMW,QAAQ,GAAGC,CAAAA,GAAAA,UAAoB,AAGpC,CAAA,qBAHoC,CACnCC,CAAAA,GAAAA,UAAS,AAAgC,CAAA,UAAhC,CAAC,IAAI,CAACrB,OAAO,EAAEK,OAAO,CAAU,EACzC,IAAI,CAACP,SAAS,CACf,AAAC;gBAEF,OAAOqB,QAAQ,CAACpB,UAAU,CAAC;oBACzBuB,gBAAgB,EAAE,IAAI;oBACtB,GAAGf,CAAAA,GAAAA,WAAgB,AAAO,CAAA,iBAAP,CAACI,KAAK,CAAC;oBAC1BY,KAAK,EAAE;wBAAE,GAAI,IAAI,CAACxB,UAAU,CAAC,IAAI,CAACG,KAAK,EAAEG,OAAO,CAAC;qBAAS;iBAC3D,CAAU,CAAqC;aACjD,CAAC;YACFM,KAAK;SACN,AAAC;QAEF,IAAI,CAACF,MAAM,CAACe,GAAG,CAAChB,KAAK,CAAC,CAAC;QAEvB,OAAOA,KAAK,CAACK,OAAO,CAAC;KACtB;IA1DDY,YACEvB,KAAa,EACbF,OAA+C,EAC/CF,SAAiB,EACjBC,UAA+C,CAC/C;QAVFU,KAAAA,MAAM,GAAG,IAAIiB,GAAG,EAGZ,AAAC,AAnBP,CAmBO;QAQH,IAAI,CAACxB,KAAK,GAAGA,KAAK,CAAC;QACnB,IAAI,CAACF,OAAO,GAAGA,OAAO,CAAC;QACvB,IAAI,CAACD,UAAU,GAAGA,UAAU,CAAC;QAC7B,IAAI,CAACD,SAAS,GAAGA,SAAS,CAAC;KAC5B;CAiDF;QAtEYF,WAAW,GAAXA,WAAW"}
@@ -68,7 +68,10 @@ class PrismaObjectFieldBuilder extends RootBuilder {
68
68
  return this.field({
69
69
  ...options,
70
70
  type: ref,
71
- select: selfSelect,
71
+ extensions: {
72
+ ...options === null || options === void 0 ? void 0 : options.extensions,
73
+ pothosPrismaSelect: selfSelect
74
+ },
72
75
  resolve: (parent, args, context, info)=>parent
73
76
  });
74
77
  }