@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":["RootBuilder","RootFieldBuilder","PrismaObjectFieldBuilder","relation","allArgs","name","options","relationField","getRelation","model","builder","ref","type","getRefFromModel","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","getCursorFormatter","parseCursor","getCursorParser","getQuery","ctx","prismaCursorConnectionQuery","fieldRef","connection","Promise","then","result","wrapConnectionResult","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":["RootBuilder","RootFieldBuilder","PrismaObjectFieldBuilder","relation","allArgs","name","options","relationField","getRelation","model","builder","ref","type","getRefFromModel","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","getCursorFormatter","parseCursor","getCursorParser","getQuery","ctx","prismaCursorConnectionQuery","fieldRef","connection","Promise","then","result","wrapConnectionResult","take","connectionQuery","fields","t","int","pothosPrismaParentSelect","pothosPrismaIndirectInclude","getType","path","prismaFieldMap"],"mappings":"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"}
@@ -5,6 +5,7 @@ var _fieldBuilder = require("./field-builder");
5
5
  var _modelLoader = require("./model-loader");
6
6
  var _nodeRef = _interopRequireDefault(require("./node-ref"));
7
7
  var _datamodel = require("./util/datamodel");
8
+ var _getClient = require("./util/get-client");
8
9
  var _mapQuery = require("./util/map-query");
9
10
  var _relationMap = require("./util/relation-map");
10
11
  function _interopRequireDefault(obj) {
@@ -38,7 +39,7 @@ schemaBuilderProto.prismaObject = function prismaObject(type, { fields , findUni
38
39
  const ref = options.variant ? this.objectRef(options.variant) : (0, _datamodel).getRefFromModel(type, this);
39
40
  var _variant, ref1;
40
41
  const name = (ref1 = (_variant = options.variant) !== null && _variant !== void 0 ? _variant : options.name) !== null && ref1 !== void 0 ? ref1 : type;
41
- const fieldMap = (0, _relationMap).getRelationMap(this.options.prisma.client).get(type);
42
+ const fieldMap = (0, _relationMap).getRelationMap((0, _getClient).getDMMF(this)).get(type);
42
43
  ref.name = name;
43
44
  this.objectType(ref, {
44
45
  ...options,
@@ -53,7 +54,7 @@ schemaBuilderProto.prismaObject = function prismaObject(type, { fields , findUni
53
54
  }), this)
54
55
  },
55
56
  name,
56
- fields: fields ? ()=>fields(new _fieldBuilder.PrismaObjectFieldBuilder(name, this, type, (0, _relationMap).getRelationMap(this.options.prisma.client).get(type)))
57
+ fields: fields ? ()=>fields(new _fieldBuilder.PrismaObjectFieldBuilder(name, this, type, (0, _relationMap).getRelationMap((0, _getClient).getDMMF(this)).get(type)))
57
58
  : undefined
58
59
  });
59
60
  return ref;
@@ -66,7 +67,6 @@ schemaBuilderProto.prismaNode = function prismaNode(type, { findUnique , name ,
66
67
  }
67
68
  var ref2;
68
69
  const typeName = (ref2 = variant !== null && variant !== void 0 ? variant : name) !== null && ref2 !== void 0 ? ref2 : type;
69
- const delegate = (0, _datamodel).getDelegateFromModel(this.options.prisma.client, type);
70
70
  const nodeRef = new _nodeRef.default(typeName);
71
71
  var _interfaces;
72
72
  const extendedOptions = {
@@ -80,6 +80,7 @@ schemaBuilderProto.prismaNode = function prismaNode(type, { findUnique , name ,
80
80
  ,
81
81
  loadWithoutCache: async (id, context, info)=>{
82
82
  const query = (0, _mapQuery).queryFromInfo(context, info, typeName);
83
+ const delegate = (0, _datamodel).getDelegateFromModel((0, _getClient).getClient(this, context), type);
83
84
  const record = await delegate.findUnique({
84
85
  ...query,
85
86
  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":["schemaBuilderProto","SchemaBuilder","prototype","prismaObject","type","fields","findUnique","options","ref","variant","objectRef","getRefFromModel","name","fieldMap","getRelationMap","prisma","client","get","objectType","extensions","pothosPrismaInclude","include","pothosPrismaModel","pothosPrismaFieldMap","pothosPrismaSelect","select","pothosPrismaLoader","ModelLoader","forRef","Error","PrismaObjectFieldBuilder","undefined","prismaNode","interfaceRef","nodeInterfaceRef","TypeError","typeName","delegate","getDelegateFromModel","nodeRef","PrismaNodeRef","extendedOptions","interfaces","parent","context","id","resolve","loadWithoutCache","info","query","queryFromInfo","record","rejectOnNotFound","where","brandWithType","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":["schemaBuilderProto","SchemaBuilder","prototype","prismaObject","type","fields","findUnique","options","ref","variant","objectRef","getRefFromModel","name","fieldMap","getRelationMap","getDMMF","get","objectType","extensions","pothosPrismaInclude","include","pothosPrismaModel","pothosPrismaFieldMap","pothosPrismaSelect","select","pothosPrismaLoader","ModelLoader","forRef","Error","PrismaObjectFieldBuilder","undefined","prismaNode","interfaceRef","nodeInterfaceRef","TypeError","typeName","nodeRef","PrismaNodeRef","extendedOptions","interfaces","parent","context","id","resolve","loadWithoutCache","info","query","queryFromInfo","delegate","getDelegateFromModel","getClient","record","rejectOnNotFound","where","brandWithType","configStore","onTypeConfig","nodeConfig","objectField","t","globalID","nullable","args","associateRefWithName"],"mappings":"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"}
package/lib/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":"AAAA;;;;;AA6BO,MAAMA,eAAe,GAAGC,MAAM,CAACC,GAAG,CAAC,wBAAwB,CAAC,AAAC;QAAvDF,eAAe,GAAfA,eAAe"}
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":"AAAA;;;;;AA6BO,MAAMA,eAAe,GAAGC,MAAM,CAACC,GAAG,CAAC,wBAAwB,CAAC,AAAC;QAAvDF,eAAe,GAAfA,eAAe"}
@@ -11,6 +11,7 @@ exports.getDelegateFromModel = getDelegateFromModel;
11
11
  exports.includeForRefMap = exports.findUniqueMap = exports.refMap = void 0;
12
12
  var _objectRef = require("../object-ref");
13
13
  var _cursors = require("./cursors");
14
+ var _getClient = require("./get-client");
14
15
  const refMap = new WeakMap();
15
16
  exports.refMap = refMap;
16
17
  const findUniqueMap = new WeakMap();
@@ -40,9 +41,7 @@ function getRelation(name, builder, relation) {
40
41
  return fieldData;
41
42
  }
42
43
  function getModel(name, builder) {
43
- const { client } = builder.options.prisma;
44
- // eslint-disable-next-line no-underscore-dangle
45
- const dmmf = client._dmmf;
44
+ const dmmf = (0, _getClient).getDMMF(builder);
46
45
  const modelData = dmmf.modelMap[name];
47
46
  if (!modelData) {
48
47
  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":["getRefFromModel","getRelation","getModel","getCursorFormatter","getCursorParser","getDelegateFromModel","refMap","WeakMap","findUniqueMap","includeForRefMap","name","builder","has","set","Map","cache","get","PrismaObjectRef","relation","modelData","fieldData","fields","find","field","Error","kind","client","options","prisma","dmmf","_dmmf","modelMap","cursor","primaryKey","join","formatCursor","parser","parseCompositeCursor","parseRawCursor","rawCursor","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":["getRefFromModel","getRelation","getModel","getCursorFormatter","getCursorParser","getDelegateFromModel","refMap","WeakMap","findUniqueMap","includeForRefMap","name","builder","has","set","Map","cache","get","PrismaObjectRef","relation","modelData","fieldData","fields","find","field","Error","kind","dmmf","getDMMF","modelMap","cursor","primaryKey","join","formatCursor","parser","parseCompositeCursor","parseRawCursor","rawCursor","client","model","lowerCase","slice","toLowerCase","delegate"],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.getClient = getClient;
6
+ exports.getDMMF = getDMMF;
7
+ var _core = require("@pothos/core");
8
+ const prismaClientCache = (0, _core).createContextCache((builder)=>(0, _core).createContextCache((context)=>typeof builder.options.prisma.client === 'function' ? builder.options.prisma.client(context) : builder.options.prisma.client
9
+ )
10
+ );
11
+ function getClient(builder, context) {
12
+ if (typeof builder.options.prisma.client === 'function') {
13
+ return prismaClientCache(builder)(context);
14
+ }
15
+ return builder.options.prisma.client;
16
+ }
17
+ function getDMMF(builder) {
18
+ return 'dmmf' in builder.options.prisma ? builder.options.prisma.dmmf : builder.options.prisma.client._dmmf;
19
+ }
20
+
21
+ //# 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":["getClient","getDMMF","prismaClientCache","createContextCache","builder","context","options","prisma","client","dmmf","_dmmf"],"mappings":"AACA;;;;QAoCgBA,SAAS,GAATA,SAAS;QAWTC,OAAO,GAAPA,OAAO;AA/CyB,IAAA,KAAc,WAAd,cAAc,CAAA;AA2B9D,MAAMC,iBAAiB,GAAGC,CAAAA,GAAAA,KAAkB,AAO3C,CAAA,mBAP2C,CAC1C,CAA4BC,OAA+C,GACzED,CAAAA,GAAAA,KAAkB,AAIjB,CAAA,mBAJiB,CAAC,CAACE,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;AAEK,SAASR,SAAS,CACvBI,OAA+C,EAC/CC,OAAyB,EACX;IACd,IAAI,OAAOD,OAAO,CAACE,OAAO,CAACC,MAAM,CAACC,MAAM,KAAK,UAAU,EAAE;QACvD,OAAON,iBAAiB,CAACE,OAAO,CAAC,CAACC,OAAO,CAAC,CAAC;KAC5C;IAED,OAAOD,OAAO,CAACE,OAAO,CAACC,MAAM,CAACC,MAAM,CAAC;CACtC;AAEM,SAASP,OAAO,CACrBG,OAA+C,EACzC;IACN,OAAO,MAAM,IAAIA,OAAO,CAACE,OAAO,CAACC,MAAM,GAClCH,OAAO,CAACE,OAAO,CAACC,MAAM,CAACE,IAAI,GAC5B,AACEL,OAAO,CAACE,OAAO,CAACC,MAAM,CAACC,MAAM,CAG7BE,KAAK,CAAC;CACb"}
@@ -5,8 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  exports.createRelationMap = createRelationMap;
6
6
  exports.getRelationMap = void 0;
7
7
  var _core = require("@pothos/core");
8
- const getRelationMap = (0, _core).createContextCache((client)=>createRelationMap(// eslint-disable-next-line no-underscore-dangle
9
- (client)._dmmf.datamodel)
8
+ const getRelationMap = (0, _core).createContextCache((dmmf)=>createRelationMap(dmmf.datamodel)
10
9
  );
11
10
  exports.getRelationMap = getRelationMap;
12
11
  function createRelationMap({ models }) {
@@ -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":["createRelationMap","getRelationMap","createContextCache","client","_dmmf","datamodel","models","relationMap","Map","forEach","model","set","name","relations","map","get","fields","field","kind","has","type"],"mappings":"AAAA;;;;QAiBgBA,iBAAiB,GAAjBA,iBAAiB;;AAjBE,IAAA,KAAc,WAAd,cAAc,CAAA;AAU1C,MAAMC,cAAc,GAAGC,CAAAA,GAAAA,KAAkB,AAK/C,CAAA,mBAL+C,CAAC,CAACC,MAAc,GAC9DH,iBAAiB,CACf,gDAAgD;IAChD,CAACG,MAAM,CAAwD,CAACC,KAAK,CAACC,SAAS,CAChF;AAAA,CACF,AAAC;QALWJ,cAAc,GAAdA,cAAc;AAOpB,SAASD,iBAAiB,CAAC,EAAEM,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":["createRelationMap","getRelationMap","createContextCache","dmmf","datamodel","models","relationMap","Map","forEach","model","set","name","relations","map","get","fields","field","kind","has","type"],"mappings":"AAAA;;;;QAcgBA,iBAAiB,GAAjBA,iBAAiB;;AAdE,IAAA,KAAc,WAAd,cAAc,CAAA;AAU1C,MAAMC,cAAc,GAAGC,CAAAA,GAAAA,KAAkB,AAE/C,CAAA,mBAF+C,CAAC,CAACC,IAA4B,GAC5EH,iBAAiB,CAACG,IAAI,CAACC,SAAS,CAAmB;AAAA,CACpD,AAAC;QAFWH,cAAc,GAAdA,cAAc;AAIpB,SAASD,iBAAiB,CAAC,EAAEK,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"}