@pothos/plugin-prisma 3.6.0 → 3.6.1
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.
- package/CHANGELOG.md +6 -0
- package/dts/util/datamodel.d.ts +1 -2
- package/dts/util/datamodel.d.ts.map +1 -1
- package/dts/util/get-client.d.ts +1 -1
- package/dts/util/get-client.d.ts.map +1 -1
- package/dts/util/map-query.d.ts.map +1 -1
- package/dts/util/selections.d.ts +1 -1
- package/dts/util/selections.d.ts.map +1 -1
- package/esm/schema-builder.js +4 -3
- package/esm/schema-builder.js.map +1 -1
- package/esm/util/datamodel.js.map +1 -1
- package/esm/util/get-client.js.map +1 -1
- package/esm/util/map-query.js.map +1 -1
- package/esm/util/selections.js +1 -1
- package/esm/util/selections.js.map +1 -1
- package/lib/schema-builder.js +4 -3
- package/lib/schema-builder.js.map +1 -1
- package/lib/util/datamodel.js.map +1 -1
- package/lib/util/get-client.js.map +1 -1
- package/lib/util/map-query.js.map +1 -1
- package/lib/util/selections.js.map +1 -1
- package/package.json +4 -4
- package/src/schema-builder.ts +5 -1
- package/src/util/datamodel.ts +1 -3
- package/src/util/get-client.ts +1 -2
- package/src/util/map-query.ts +7 -2
- package/src/util/selections.ts +1 -2
- package/tsconfig.type.tsbuildinfo +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/util/map-query.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\n/* eslint-disable no-continue */\nimport {\n FieldNode,\n FragmentDefinitionNode,\n getNamedType,\n GraphQLNamedType,\n GraphQLObjectType,\n GraphQLResolveInfo,\n InlineFragmentNode,\n isObjectType,\n Kind,\n SelectionSetNode,\n} from 'graphql';\nimport { getArgumentValues } from 'graphql/execution/values';\nimport { setLoaderMappings } from './loader-map';\nimport { FieldMap } from './relation-map';\nimport {\n createState,\n mergeSelection,\n selectionCompatible,\n SelectionState,\n selectionToQuery,\n} from './selections';\n\nimport { FieldSelection, IncludeMap, IndirectInclude, LoaderMappings, SelectionMap } from '..';\n\nfunction addTypeSelectionsForField(\n type: GraphQLNamedType,\n context: object,\n info: GraphQLResolveInfo,\n state: SelectionState,\n selection: FieldNode,\n indirectPath: string[],\n) {\n if (selection.name.value.startsWith('__')) {\n return;\n }\n\n const {\n pothosPrismaInclude,\n pothosPrismaSelect,\n pothosPrismaIndirectInclude,\n pothosPrismaModel,\n } = (type.extensions ?? {}) as {\n pothosPrismaModel?: string;\n pothosPrismaInclude?: IncludeMap;\n pothosPrismaSelect?: IncludeMap;\n pothosPrismaIndirectInclude?: IndirectInclude;\n };\n\n if (pothosPrismaIndirectInclude) {\n resolveIndirectInclude(\n type,\n info,\n selection,\n pothosPrismaIndirectInclude.path,\n indirectPath,\n (resolvedType, field, path) => {\n addTypeSelectionsForField(resolvedType, context, info, state, field, path);\n },\n );\n }\n\n if (!isObjectType(type)) {\n return;\n }\n\n if (pothosPrismaModel && !pothosPrismaSelect) {\n state.mode = 'include';\n }\n\n if (pothosPrismaInclude || pothosPrismaSelect) {\n mergeSelection(state, {\n select: pothosPrismaSelect ? { ...pothosPrismaSelect } : undefined,\n include: pothosPrismaInclude ? { ...pothosPrismaInclude } : undefined,\n });\n }\n\n if (selection.selectionSet) {\n addNestedSelections(type, context, info, state, selection.selectionSet, indirectPath);\n }\n}\n\nfunction resolveIndirectInclude(\n type: GraphQLNamedType,\n info: GraphQLResolveInfo,\n selection: FieldNode | FragmentDefinitionNode | InlineFragmentNode,\n includePath: IndirectInclude['path'],\n path: string[],\n resolve: (type: GraphQLNamedType, field: FieldNode, path: string[]) => void,\n) {\n const [include, ...rest] = includePath;\n if (!selection.selectionSet || !include) {\n return;\n }\n\n for (const sel of selection.selectionSet.selections) {\n switch (sel.kind) {\n case Kind.FIELD:\n if (sel.name.value === include.name && isObjectType(type)) {\n const returnType = getNamedType(type.getFields()[sel.name.value].type);\n\n if (rest.length === 0) {\n resolve(returnType, sel, [...path, sel.alias?.value ?? sel.name.value]);\n } else {\n resolveIndirectInclude(\n returnType,\n info,\n sel,\n rest,\n [...path, sel.alias?.value ?? sel.name.value],\n resolve,\n );\n }\n }\n continue;\n case Kind.FRAGMENT_SPREAD:\n if (info.fragments[sel.name.value].typeCondition.name.value === include.type) {\n resolveIndirectInclude(\n info.schema.getType(include.type)!,\n info,\n info.fragments[sel.name.value],\n includePath,\n path,\n resolve,\n );\n }\n\n continue;\n\n case Kind.INLINE_FRAGMENT:\n if (!sel.typeCondition || sel.typeCondition.name.value === include.type) {\n resolveIndirectInclude(\n sel.typeCondition ? info.schema.getType(sel.typeCondition.name.value)! : type,\n info,\n sel,\n includePath,\n path,\n resolve,\n );\n }\n\n continue;\n\n default:\n throw new Error(`Unsupported selection kind ${(selection as { kind: string }).kind}`);\n }\n }\n}\n\nfunction addNestedSelections(\n type: GraphQLObjectType,\n context: object,\n info: GraphQLResolveInfo,\n state: SelectionState,\n selections: SelectionSetNode,\n indirectPath: string[],\n) {\n for (const selection of selections.selections) {\n switch (selection.kind) {\n case Kind.FIELD:\n addFieldSelection(type, context, info, state, selection, indirectPath);\n\n continue;\n case Kind.FRAGMENT_SPREAD:\n if (info.fragments[selection.name.value].typeCondition.name.value !== type.name) {\n continue;\n }\n\n addNestedSelections(\n type,\n context,\n info,\n state,\n info.fragments[selection.name.value].selectionSet,\n indirectPath,\n );\n\n continue;\n\n case Kind.INLINE_FRAGMENT:\n if (selection.typeCondition && selection.typeCondition.name.value !== type.name) {\n continue;\n }\n\n addNestedSelections(type, context, info, state, selection.selectionSet, indirectPath);\n\n continue;\n\n default:\n throw new Error(`Unsupported selection kind ${(selection as { kind: string }).kind}`);\n }\n }\n}\n\nfunction addFieldSelection(\n type: GraphQLObjectType,\n context: object,\n info: GraphQLResolveInfo,\n state: SelectionState,\n selection: FieldNode,\n indirectPath: string[],\n) {\n if (selection.name.value.startsWith('__')) {\n return;\n }\n\n const field = type.getFields()[selection.name.value];\n\n if (!field) {\n throw new Error(`Unknown field ${selection.name.value} on ${type.name}`);\n }\n\n const fieldSelect = field.extensions?.pothosPrismaSelect as FieldSelection | undefined;\n\n let fieldSelectionMap: SelectionMap;\n\n const fieldParentSelect = field.extensions?.pothosPrismaParentSelect as\n | Record<string, SelectionMap | boolean>\n | undefined;\n let mappings: LoaderMappings = {};\n\n if (typeof fieldSelect === 'function') {\n const args = getArgumentValues(field, selection, info.variableValues) as Record<\n string,\n unknown\n >;\n\n fieldSelectionMap = fieldSelect(args, context, (rawQuery) => {\n const returnType = getNamedType(field.type);\n const query = typeof rawQuery === 'function' ? rawQuery(args, context) : rawQuery;\n\n const fieldState = createStateForType(returnType, info, state);\n\n if (typeof query === 'object' && Object.keys(query).length > 0) {\n mergeSelection(fieldState, { select: {}, ...query });\n }\n\n addTypeSelectionsForField(returnType, context, info, fieldState, selection, []);\n\n // eslint-disable-next-line prefer-destructuring\n mappings = fieldState.mappings;\n\n return selectionToQuery(fieldState);\n });\n } else {\n fieldSelectionMap = { select: fieldSelect };\n }\n\n if (fieldSelect && selectionCompatible(state, fieldSelectionMap, true)) {\n mergeSelection(state, fieldSelectionMap);\n state.mappings[selection.alias?.value ?? selection.name.value] = {\n field: selection.name.value,\n mappings,\n indirectPath,\n };\n } else if (\n fieldParentSelect &&\n state.parent &&\n selectionCompatible(state.parent, { select: fieldParentSelect }, true)\n ) {\n mergeSelection(state.parent, { select: fieldParentSelect });\n state.mappings[selection.alias?.value ?? selection.name.value] = {\n field: selection.name.value,\n mappings,\n indirectPath,\n };\n }\n}\n\nexport function queryFromInfo(context: object, info: GraphQLResolveInfo, typeName?: string): {} {\n const type = typeName ? info.schema.getTypeMap()[typeName] : getNamedType(info.returnType);\n const state = createStateForType(type, info);\n\n addTypeSelectionsForField(type, context, info, state, info.fieldNodes[0], []);\n\n setLoaderMappings(context, info, state.mappings, type);\n\n return selectionToQuery(state);\n}\n\nexport function selectionStateFromInfo(\n context: object,\n info: GraphQLResolveInfo,\n typeName?: string,\n) {\n const type = typeName ? info.schema.getTypeMap()[typeName] : info.parentType;\n\n const state = createStateForType(type, info);\n\n if (!isObjectType(type)) {\n throw new Error('Prisma plugin can only resolve includes for object types');\n }\n\n addFieldSelection(type, context, info, state, info.fieldNodes[0], []);\n\n return state;\n}\n\nfunction createStateForType(\n type: GraphQLNamedType,\n info: GraphQLResolveInfo,\n parent?: SelectionState,\n) {\n const targetType = getIndirectType(type, info);\n\n const fieldMap = targetType.extensions?.pothosPrismaFieldMap as FieldMap;\n\n return createState(\n fieldMap,\n targetType.extensions?.pothosPrismaSelect ? 'select' : 'include',\n parent,\n );\n}\n\nexport function getIndirectType(type: GraphQLNamedType, info: GraphQLResolveInfo) {\n let targetType = type;\n\n while (targetType.extensions?.pothosPrismaIndirectInclude) {\n targetType = info.schema.getType(\n (targetType.extensions?.pothosPrismaIndirectInclude as IndirectInclude).getType(),\n )!;\n }\n\n return targetType;\n}\n"],"names":["queryFromInfo","selectionStateFromInfo","getIndirectType","addTypeSelectionsForField","type","context","info","state","selection","indirectPath","name","value","startsWith","pothosPrismaInclude","pothosPrismaSelect","pothosPrismaIndirectInclude","pothosPrismaModel","extensions","resolveIndirectInclude","path","resolvedType","field","isObjectType","mode","mergeSelection","select","undefined","include","selectionSet","addNestedSelections","includePath","resolve","rest","sel","selections","kind","Kind","FIELD","returnType","getNamedType","getFields","length","alias","FRAGMENT_SPREAD","fragments","typeCondition","schema","getType","INLINE_FRAGMENT","Error","addFieldSelection","fieldSelect","fieldSelectionMap","fieldParentSelect","pothosPrismaParentSelect","mappings","args","getArgumentValues","variableValues","rawQuery","query","fieldState","createStateForType","Object","keys","selectionToQuery","selectionCompatible","parent","typeName","getTypeMap","fieldNodes","setLoaderMappings","parentType","targetType","fieldMap","pothosPrismaFieldMap","createState"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/util/map-query.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\n/* eslint-disable no-continue */\nimport {\n FieldNode,\n FragmentDefinitionNode,\n getNamedType,\n GraphQLNamedType,\n GraphQLObjectType,\n GraphQLResolveInfo,\n InlineFragmentNode,\n isObjectType,\n Kind,\n SelectionSetNode,\n} from 'graphql';\nimport { getArgumentValues } from 'graphql/execution/values';\nimport {\n FieldSelection,\n IncludeMap,\n IndirectInclude,\n LoaderMappings,\n SelectionMap,\n} from '../types';\nimport { setLoaderMappings } from './loader-map';\nimport { FieldMap } from './relation-map';\nimport {\n createState,\n mergeSelection,\n selectionCompatible,\n SelectionState,\n selectionToQuery,\n} from './selections';\n\nfunction addTypeSelectionsForField(\n type: GraphQLNamedType,\n context: object,\n info: GraphQLResolveInfo,\n state: SelectionState,\n selection: FieldNode,\n indirectPath: string[],\n) {\n if (selection.name.value.startsWith('__')) {\n return;\n }\n\n const {\n pothosPrismaInclude,\n pothosPrismaSelect,\n pothosPrismaIndirectInclude,\n pothosPrismaModel,\n } = (type.extensions ?? {}) as {\n pothosPrismaModel?: string;\n pothosPrismaInclude?: IncludeMap;\n pothosPrismaSelect?: IncludeMap;\n pothosPrismaIndirectInclude?: IndirectInclude;\n };\n\n if (pothosPrismaIndirectInclude) {\n resolveIndirectInclude(\n type,\n info,\n selection,\n pothosPrismaIndirectInclude.path,\n indirectPath,\n (resolvedType, field, path) => {\n addTypeSelectionsForField(resolvedType, context, info, state, field, path);\n },\n );\n }\n\n if (!isObjectType(type)) {\n return;\n }\n\n if (pothosPrismaModel && !pothosPrismaSelect) {\n state.mode = 'include';\n }\n\n if (pothosPrismaInclude || pothosPrismaSelect) {\n mergeSelection(state, {\n select: pothosPrismaSelect ? { ...pothosPrismaSelect } : undefined,\n include: pothosPrismaInclude ? { ...pothosPrismaInclude } : undefined,\n });\n }\n\n if (selection.selectionSet) {\n addNestedSelections(type, context, info, state, selection.selectionSet, indirectPath);\n }\n}\n\nfunction resolveIndirectInclude(\n type: GraphQLNamedType,\n info: GraphQLResolveInfo,\n selection: FieldNode | FragmentDefinitionNode | InlineFragmentNode,\n includePath: IndirectInclude['path'],\n path: string[],\n resolve: (type: GraphQLNamedType, field: FieldNode, path: string[]) => void,\n) {\n const [include, ...rest] = includePath;\n if (!selection.selectionSet || !include) {\n return;\n }\n\n for (const sel of selection.selectionSet.selections) {\n switch (sel.kind) {\n case Kind.FIELD:\n if (sel.name.value === include.name && isObjectType(type)) {\n const returnType = getNamedType(type.getFields()[sel.name.value].type);\n\n if (rest.length === 0) {\n resolve(returnType, sel, [...path, sel.alias?.value ?? sel.name.value]);\n } else {\n resolveIndirectInclude(\n returnType,\n info,\n sel,\n rest,\n [...path, sel.alias?.value ?? sel.name.value],\n resolve,\n );\n }\n }\n continue;\n case Kind.FRAGMENT_SPREAD:\n if (info.fragments[sel.name.value].typeCondition.name.value === include.type) {\n resolveIndirectInclude(\n info.schema.getType(include.type)!,\n info,\n info.fragments[sel.name.value],\n includePath,\n path,\n resolve,\n );\n }\n\n continue;\n\n case Kind.INLINE_FRAGMENT:\n if (!sel.typeCondition || sel.typeCondition.name.value === include.type) {\n resolveIndirectInclude(\n sel.typeCondition ? info.schema.getType(sel.typeCondition.name.value)! : type,\n info,\n sel,\n includePath,\n path,\n resolve,\n );\n }\n\n continue;\n\n default:\n throw new Error(`Unsupported selection kind ${(selection as { kind: string }).kind}`);\n }\n }\n}\n\nfunction addNestedSelections(\n type: GraphQLObjectType,\n context: object,\n info: GraphQLResolveInfo,\n state: SelectionState,\n selections: SelectionSetNode,\n indirectPath: string[],\n) {\n for (const selection of selections.selections) {\n switch (selection.kind) {\n case Kind.FIELD:\n addFieldSelection(type, context, info, state, selection, indirectPath);\n\n continue;\n case Kind.FRAGMENT_SPREAD:\n if (info.fragments[selection.name.value].typeCondition.name.value !== type.name) {\n continue;\n }\n\n addNestedSelections(\n type,\n context,\n info,\n state,\n info.fragments[selection.name.value].selectionSet,\n indirectPath,\n );\n\n continue;\n\n case Kind.INLINE_FRAGMENT:\n if (selection.typeCondition && selection.typeCondition.name.value !== type.name) {\n continue;\n }\n\n addNestedSelections(type, context, info, state, selection.selectionSet, indirectPath);\n\n continue;\n\n default:\n throw new Error(`Unsupported selection kind ${(selection as { kind: string }).kind}`);\n }\n }\n}\n\nfunction addFieldSelection(\n type: GraphQLObjectType,\n context: object,\n info: GraphQLResolveInfo,\n state: SelectionState,\n selection: FieldNode,\n indirectPath: string[],\n) {\n if (selection.name.value.startsWith('__')) {\n return;\n }\n\n const field = type.getFields()[selection.name.value];\n\n if (!field) {\n throw new Error(`Unknown field ${selection.name.value} on ${type.name}`);\n }\n\n const fieldSelect = field.extensions?.pothosPrismaSelect as FieldSelection | undefined;\n\n let fieldSelectionMap: SelectionMap;\n\n const fieldParentSelect = field.extensions?.pothosPrismaParentSelect as\n | Record<string, SelectionMap | boolean>\n | undefined;\n let mappings: LoaderMappings = {};\n\n if (typeof fieldSelect === 'function') {\n const args = getArgumentValues(field, selection, info.variableValues) as Record<\n string,\n unknown\n >;\n\n fieldSelectionMap = fieldSelect(args, context, (rawQuery) => {\n const returnType = getNamedType(field.type);\n const query = typeof rawQuery === 'function' ? rawQuery(args, context) : rawQuery;\n\n const fieldState = createStateForType(returnType, info, state);\n\n if (typeof query === 'object' && Object.keys(query).length > 0) {\n mergeSelection(fieldState, { select: {}, ...query });\n }\n\n addTypeSelectionsForField(returnType, context, info, fieldState, selection, []);\n\n // eslint-disable-next-line prefer-destructuring\n mappings = fieldState.mappings;\n\n return selectionToQuery(fieldState);\n });\n } else {\n fieldSelectionMap = { select: fieldSelect };\n }\n\n if (fieldSelect && selectionCompatible(state, fieldSelectionMap, true)) {\n mergeSelection(state, fieldSelectionMap);\n state.mappings[selection.alias?.value ?? selection.name.value] = {\n field: selection.name.value,\n mappings,\n indirectPath,\n };\n } else if (\n fieldParentSelect &&\n state.parent &&\n selectionCompatible(state.parent, { select: fieldParentSelect }, true)\n ) {\n mergeSelection(state.parent, { select: fieldParentSelect });\n state.mappings[selection.alias?.value ?? selection.name.value] = {\n field: selection.name.value,\n mappings,\n indirectPath,\n };\n }\n}\n\nexport function queryFromInfo(context: object, info: GraphQLResolveInfo, typeName?: string): {} {\n const type = typeName ? info.schema.getTypeMap()[typeName] : getNamedType(info.returnType);\n const state = createStateForType(type, info);\n\n addTypeSelectionsForField(type, context, info, state, info.fieldNodes[0], []);\n\n setLoaderMappings(context, info, state.mappings, type);\n\n return selectionToQuery(state);\n}\n\nexport function selectionStateFromInfo(\n context: object,\n info: GraphQLResolveInfo,\n typeName?: string,\n) {\n const type = typeName ? info.schema.getTypeMap()[typeName] : info.parentType;\n\n const state = createStateForType(type, info);\n\n if (!isObjectType(type)) {\n throw new Error('Prisma plugin can only resolve includes for object types');\n }\n\n addFieldSelection(type, context, info, state, info.fieldNodes[0], []);\n\n return state;\n}\n\nfunction createStateForType(\n type: GraphQLNamedType,\n info: GraphQLResolveInfo,\n parent?: SelectionState,\n) {\n const targetType = getIndirectType(type, info);\n\n const fieldMap = targetType.extensions?.pothosPrismaFieldMap as FieldMap;\n\n return createState(\n fieldMap,\n targetType.extensions?.pothosPrismaSelect ? 'select' : 'include',\n parent,\n );\n}\n\nexport function getIndirectType(type: GraphQLNamedType, info: GraphQLResolveInfo) {\n let targetType = type;\n\n while (targetType.extensions?.pothosPrismaIndirectInclude) {\n targetType = info.schema.getType(\n (targetType.extensions?.pothosPrismaIndirectInclude as IndirectInclude).getType(),\n )!;\n }\n\n return targetType;\n}\n"],"names":["queryFromInfo","selectionStateFromInfo","getIndirectType","addTypeSelectionsForField","type","context","info","state","selection","indirectPath","name","value","startsWith","pothosPrismaInclude","pothosPrismaSelect","pothosPrismaIndirectInclude","pothosPrismaModel","extensions","resolveIndirectInclude","path","resolvedType","field","isObjectType","mode","mergeSelection","select","undefined","include","selectionSet","addNestedSelections","includePath","resolve","rest","sel","selections","kind","Kind","FIELD","returnType","getNamedType","getFields","length","alias","FRAGMENT_SPREAD","fragments","typeCondition","schema","getType","INLINE_FRAGMENT","Error","addFieldSelection","fieldSelect","fieldSelectionMap","fieldParentSelect","pothosPrismaParentSelect","mappings","args","getArgumentValues","variableValues","rawQuery","query","fieldState","createStateForType","Object","keys","selectionToQuery","selectionCompatible","parent","typeName","getTypeMap","fieldNodes","setLoaderMappings","parentType","targetType","fieldMap","pothosPrismaFieldMap","createState"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/util/selections.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\n/* eslint-disable no-underscore-dangle */\nimport { deepEqual } from './deep-equal';\nimport { FieldMap } from './relation-map';\n\nimport { LoaderMappings, SelectionMap } from '..';\n\nexport type SelectionMode = 'select' | 'include';\n\nexport interface SelectionState {\n fieldMap: FieldMap;\n query: object;\n mode: SelectionMode;\n fields: Set<string>;\n counts: Set<string>;\n relations: Map<string, SelectionState>;\n mappings: LoaderMappings;\n parent?: SelectionState;\n}\n\nexport function selectionCompatible(\n state: SelectionState,\n selectionMap: SelectionMap | boolean,\n ignoreQuery = false,\n): boolean {\n if (typeof selectionMap === 'boolean') {\n return ignoreQuery || !selectionMap || Object.keys(state.query).length === 0;\n }\n\n const { select, include, ...query } = selectionMap;\n\n if (select && Object.keys(select).some((key) => compare(key, select[key]))) {\n return false;\n }\n\n if (include && Object.keys(include).some((key) => compare(key, include[key]))) {\n return false;\n }\n\n return ignoreQuery || deepEqual(state.query, query);\n\n function compare(key: string, value: SelectionMap | boolean) {\n return (\n value &&\n state.fieldMap.relations.has(key) &&\n state.relations.has(key) &&\n !selectionCompatible(state.relations.get(key)!, value)\n );\n }\n}\n\nexport function stateCompatible(\n state: SelectionState,\n newState: SelectionState,\n ignoreQuery = false,\n): boolean {\n for (const [name, relationState] of newState.relations) {\n if (state.relations.has(name) && !stateCompatible(state.relations.get(name)!, relationState)) {\n return false;\n }\n }\n\n return ignoreQuery || deepEqual(state.query, newState.query);\n}\n\nexport function mergeState(state: SelectionState, newState: SelectionState) {\n for (const [name, relationState] of newState.relations) {\n if (state.relations.has(name)) {\n mergeState(state.relations.get(name)!, relationState);\n }\n }\n\n if (newState.mode === 'include') {\n state.mode = 'include';\n } else {\n for (const name of newState.fields) {\n state.fields.add(name);\n }\n }\n}\n\nexport function createState(\n fieldMap: FieldMap,\n mode: SelectionMode,\n parent?: SelectionState,\n): SelectionState {\n return {\n parent,\n mode,\n fieldMap,\n query: {},\n fields: new Set(),\n counts: new Set(),\n relations: new Map(),\n mappings: {},\n };\n}\n\nexport function mergeSelection(state: SelectionState, { select, include, ...query }: SelectionMap) {\n if (state.mode === 'select' && !select) {\n state.mode = 'include';\n }\n\n if (include) {\n Object.keys(include).forEach((key) => {\n merge(key, include[key]);\n });\n }\n\n if (select) {\n Object.keys(select).forEach((key) => {\n merge(key, select[key]);\n });\n }\n\n if (Object.keys(query).length > 0) {\n state.query = query;\n }\n\n function merge(key: string, value: SelectionMap | boolean) {\n if (!value) {\n return;\n }\n\n if (key === '_count') {\n const counts = (value as { select?: {} }).select ?? {};\n Object.keys(counts).forEach((count) => {\n state.counts.add(count);\n });\n\n return;\n }\n\n const selection = value === true ? { include: {} } : value;\n const childMap = state.fieldMap.relations.get(key);\n\n if (childMap) {\n if (state.relations.has(key)) {\n mergeSelection(state.relations.get(key)!, selection);\n } else {\n const relatedState = createState(childMap, 'select');\n mergeSelection(relatedState, selection);\n state.relations.set(key, relatedState);\n }\n } else {\n state.fields.add(key);\n }\n }\n}\n\nexport function selectionToQuery(state: SelectionState): SelectionMap {\n const nestedIncludes: Record<string, SelectionMap | boolean> = {};\n const counts: Record<string, boolean> = {};\n\n let hasSelection = false;\n\n state.relations.forEach((sel, relation) => {\n hasSelection = true;\n const nested = selectionToQuery(sel);\n nestedIncludes[relation] = Object.keys(nested).length > 0 ? nested : true;\n });\n\n if (state.counts.size > 0) {\n hasSelection = true;\n for (const count of state.counts) {\n counts[count] = true;\n }\n\n nestedIncludes._count = {\n select: counts,\n };\n }\n\n if (state.mode === 'select') {\n state.fields.forEach((field) => {\n hasSelection = true;\n nestedIncludes[field] = true;\n });\n\n return {\n ...(state.query as SelectionMap),\n select: nestedIncludes,\n };\n }\n\n return hasSelection\n ? {\n ...state.query,\n include: nestedIncludes,\n }\n : (state.query as SelectionMap);\n}\n"],"names":["selectionCompatible","stateCompatible","mergeState","createState","mergeSelection","selectionToQuery","state","selectionMap","ignoreQuery","Object","keys","query","length","select","include","some","key","compare","deepEqual","value","fieldMap","relations","has","get","newState","name","relationState","mode","fields","add","parent","Set","counts","Map","mappings","forEach","merge","count","selection","childMap","relatedState","set","nestedIncludes","hasSelection","sel","relation","nested","size","_count","field"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/util/selections.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\n/* eslint-disable no-underscore-dangle */\nimport { LoaderMappings, SelectionMap } from '../types';\nimport { deepEqual } from './deep-equal';\nimport { FieldMap } from './relation-map';\n\nexport type SelectionMode = 'select' | 'include';\n\nexport interface SelectionState {\n fieldMap: FieldMap;\n query: object;\n mode: SelectionMode;\n fields: Set<string>;\n counts: Set<string>;\n relations: Map<string, SelectionState>;\n mappings: LoaderMappings;\n parent?: SelectionState;\n}\n\nexport function selectionCompatible(\n state: SelectionState,\n selectionMap: SelectionMap | boolean,\n ignoreQuery = false,\n): boolean {\n if (typeof selectionMap === 'boolean') {\n return ignoreQuery || !selectionMap || Object.keys(state.query).length === 0;\n }\n\n const { select, include, ...query } = selectionMap;\n\n if (select && Object.keys(select).some((key) => compare(key, select[key]))) {\n return false;\n }\n\n if (include && Object.keys(include).some((key) => compare(key, include[key]))) {\n return false;\n }\n\n return ignoreQuery || deepEqual(state.query, query);\n\n function compare(key: string, value: SelectionMap | boolean) {\n return (\n value &&\n state.fieldMap.relations.has(key) &&\n state.relations.has(key) &&\n !selectionCompatible(state.relations.get(key)!, value)\n );\n }\n}\n\nexport function stateCompatible(\n state: SelectionState,\n newState: SelectionState,\n ignoreQuery = false,\n): boolean {\n for (const [name, relationState] of newState.relations) {\n if (state.relations.has(name) && !stateCompatible(state.relations.get(name)!, relationState)) {\n return false;\n }\n }\n\n return ignoreQuery || deepEqual(state.query, newState.query);\n}\n\nexport function mergeState(state: SelectionState, newState: SelectionState) {\n for (const [name, relationState] of newState.relations) {\n if (state.relations.has(name)) {\n mergeState(state.relations.get(name)!, relationState);\n }\n }\n\n if (newState.mode === 'include') {\n state.mode = 'include';\n } else {\n for (const name of newState.fields) {\n state.fields.add(name);\n }\n }\n}\n\nexport function createState(\n fieldMap: FieldMap,\n mode: SelectionMode,\n parent?: SelectionState,\n): SelectionState {\n return {\n parent,\n mode,\n fieldMap,\n query: {},\n fields: new Set(),\n counts: new Set(),\n relations: new Map(),\n mappings: {},\n };\n}\n\nexport function mergeSelection(state: SelectionState, { select, include, ...query }: SelectionMap) {\n if (state.mode === 'select' && !select) {\n state.mode = 'include';\n }\n\n if (include) {\n Object.keys(include).forEach((key) => {\n merge(key, include[key]);\n });\n }\n\n if (select) {\n Object.keys(select).forEach((key) => {\n merge(key, select[key]);\n });\n }\n\n if (Object.keys(query).length > 0) {\n state.query = query;\n }\n\n function merge(key: string, value: SelectionMap | boolean) {\n if (!value) {\n return;\n }\n\n if (key === '_count') {\n const counts = (value as { select?: {} }).select ?? {};\n Object.keys(counts).forEach((count) => {\n state.counts.add(count);\n });\n\n return;\n }\n\n const selection = value === true ? { include: {} } : value;\n const childMap = state.fieldMap.relations.get(key);\n\n if (childMap) {\n if (state.relations.has(key)) {\n mergeSelection(state.relations.get(key)!, selection);\n } else {\n const relatedState = createState(childMap, 'select');\n mergeSelection(relatedState, selection);\n state.relations.set(key, relatedState);\n }\n } else {\n state.fields.add(key);\n }\n }\n}\n\nexport function selectionToQuery(state: SelectionState): SelectionMap {\n const nestedIncludes: Record<string, SelectionMap | boolean> = {};\n const counts: Record<string, boolean> = {};\n\n let hasSelection = false;\n\n state.relations.forEach((sel, relation) => {\n hasSelection = true;\n const nested = selectionToQuery(sel);\n nestedIncludes[relation] = Object.keys(nested).length > 0 ? nested : true;\n });\n\n if (state.counts.size > 0) {\n hasSelection = true;\n for (const count of state.counts) {\n counts[count] = true;\n }\n\n nestedIncludes._count = {\n select: counts,\n };\n }\n\n if (state.mode === 'select') {\n state.fields.forEach((field) => {\n hasSelection = true;\n nestedIncludes[field] = true;\n });\n\n return {\n ...(state.query as SelectionMap),\n select: nestedIncludes,\n };\n }\n\n return hasSelection\n ? {\n ...state.query,\n include: nestedIncludes,\n }\n : (state.query as SelectionMap);\n}\n"],"names":["selectionCompatible","stateCompatible","mergeState","createState","mergeSelection","selectionToQuery","state","selectionMap","ignoreQuery","Object","keys","query","length","select","include","some","key","compare","deepEqual","value","fieldMap","relations","has","get","newState","name","relationState","mode","fields","add","parent","Set","counts","Map","mappings","forEach","merge","count","selection","childMap","relatedState","set","nestedIncludes","hasSelection","sel","relation","nested","size","_count","field"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pothos/plugin-prisma",
|
|
3
|
-
"version": "3.6.
|
|
3
|
+
"version": "3.6.1",
|
|
4
4
|
"description": "A Pothos plugin for more efficient integration with prisma",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
6
|
"types": "./dts/index.d.ts",
|
|
@@ -48,10 +48,10 @@
|
|
|
48
48
|
"typescript": ">4.5.2"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
|
-
"@pothos/core": "3.
|
|
51
|
+
"@pothos/core": "3.10.0",
|
|
52
52
|
"@pothos/plugin-errors": "3.3.0",
|
|
53
|
-
"@pothos/plugin-relay": "3.10.
|
|
54
|
-
"@pothos/plugin-scope-auth": "3.8.
|
|
53
|
+
"@pothos/plugin-relay": "3.10.1",
|
|
54
|
+
"@pothos/plugin-scope-auth": "3.8.1",
|
|
55
55
|
"@pothos/test-utils": "1.1.1",
|
|
56
56
|
"@prisma/client": "^3.12.0",
|
|
57
57
|
"graphql": "16.3.0",
|
package/src/schema-builder.ts
CHANGED
|
@@ -82,7 +82,7 @@ schemaBuilderProto.prismaNode = function prismaNode(
|
|
|
82
82
|
const extendedOptions = {
|
|
83
83
|
...options,
|
|
84
84
|
variant,
|
|
85
|
-
interfaces: [interfaceRef
|
|
85
|
+
interfaces: [interfaceRef],
|
|
86
86
|
findUnique: (parent: unknown, context: {}) =>
|
|
87
87
|
findUnique(options.id.resolve(parent as never, context) as string, context),
|
|
88
88
|
loadWithoutCache: async (
|
|
@@ -106,6 +106,10 @@ schemaBuilderProto.prismaNode = function prismaNode(
|
|
|
106
106
|
|
|
107
107
|
const ref = this.prismaObject(type, extendedOptions as never);
|
|
108
108
|
|
|
109
|
+
if (options.interfaces) {
|
|
110
|
+
this.configStore.addInterfaces(typeName, options.interfaces);
|
|
111
|
+
}
|
|
112
|
+
|
|
109
113
|
this.configStore.onTypeConfig(ref, (nodeConfig) => {
|
|
110
114
|
this.objectField(ref, 'id', (t) =>
|
|
111
115
|
(
|
package/src/util/datamodel.ts
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { ObjectRef, SchemaTypes } from '@pothos/core';
|
|
2
2
|
import { PrismaObjectRef } from '../object-ref';
|
|
3
|
-
import { PrismaDelegate, PrismaModelTypes } from '../types';
|
|
3
|
+
import { PrismaClient, PrismaDelegate, PrismaModelTypes } from '../types';
|
|
4
4
|
import { formatCursor, parseCompositeCursor, parseRawCursor } from './cursors';
|
|
5
5
|
import { getDMMF } from './get-client';
|
|
6
6
|
|
|
7
|
-
import { PrismaClient } from '..';
|
|
8
|
-
|
|
9
7
|
export const refMap = new WeakMap<object, Map<string, PrismaObjectRef<PrismaModelTypes>>>();
|
|
10
8
|
export const findUniqueMap = new WeakMap<
|
|
11
9
|
object,
|
package/src/util/get-client.ts
CHANGED
package/src/util/map-query.ts
CHANGED
|
@@ -13,6 +13,13 @@ import {
|
|
|
13
13
|
SelectionSetNode,
|
|
14
14
|
} from 'graphql';
|
|
15
15
|
import { getArgumentValues } from 'graphql/execution/values';
|
|
16
|
+
import {
|
|
17
|
+
FieldSelection,
|
|
18
|
+
IncludeMap,
|
|
19
|
+
IndirectInclude,
|
|
20
|
+
LoaderMappings,
|
|
21
|
+
SelectionMap,
|
|
22
|
+
} from '../types';
|
|
16
23
|
import { setLoaderMappings } from './loader-map';
|
|
17
24
|
import { FieldMap } from './relation-map';
|
|
18
25
|
import {
|
|
@@ -23,8 +30,6 @@ import {
|
|
|
23
30
|
selectionToQuery,
|
|
24
31
|
} from './selections';
|
|
25
32
|
|
|
26
|
-
import { FieldSelection, IncludeMap, IndirectInclude, LoaderMappings, SelectionMap } from '..';
|
|
27
|
-
|
|
28
33
|
function addTypeSelectionsForField(
|
|
29
34
|
type: GraphQLNamedType,
|
|
30
35
|
context: object,
|
package/src/util/selections.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
/* eslint-disable no-param-reassign */
|
|
2
2
|
/* eslint-disable no-underscore-dangle */
|
|
3
|
+
import { LoaderMappings, SelectionMap } from '../types';
|
|
3
4
|
import { deepEqual } from './deep-equal';
|
|
4
5
|
import { FieldMap } from './relation-map';
|
|
5
6
|
|
|
6
|
-
import { LoaderMappings, SelectionMap } from '..';
|
|
7
|
-
|
|
8
7
|
export type SelectionMode = 'select' | 'include';
|
|
9
8
|
|
|
10
9
|
export interface SelectionState {
|