@pothos/plugin-prisma 0.18.0 → 0.19.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 (163) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +403 -308
  3. package/esm/field-builder.js +3 -3
  4. package/esm/field-builder.js.map +1 -1
  5. package/esm/generator.js +4 -0
  6. package/esm/generator.js.map +1 -1
  7. package/esm/global-types.d.ts +23 -5
  8. package/esm/global-types.d.ts.map +1 -1
  9. package/esm/index.d.ts +4 -1
  10. package/esm/index.d.ts.map +1 -1
  11. package/esm/index.js +46 -1
  12. package/esm/index.js.map +1 -1
  13. package/esm/model-loader.d.ts +5 -6
  14. package/esm/model-loader.d.ts.map +1 -1
  15. package/esm/model-loader.js +12 -69
  16. package/esm/model-loader.js.map +1 -1
  17. package/esm/prisma-field-builder.d.ts +25 -6
  18. package/esm/prisma-field-builder.d.ts.map +1 -1
  19. package/esm/prisma-field-builder.js +83 -116
  20. package/esm/prisma-field-builder.js.map +1 -1
  21. package/esm/schema-builder.js +14 -4
  22. package/esm/schema-builder.js.map +1 -1
  23. package/esm/types.d.ts +73 -77
  24. package/esm/types.d.ts.map +1 -1
  25. package/esm/types.js +1 -0
  26. package/esm/types.js.map +1 -1
  27. package/esm/{cursors.d.ts → util/cursors.d.ts} +1 -1
  28. package/esm/util/cursors.d.ts.map +1 -0
  29. package/esm/{cursors.js → util/cursors.js} +0 -0
  30. package/esm/util/cursors.js.map +1 -0
  31. package/{lib/refs.d.ts → esm/util/datamodel.d.ts} +4 -8
  32. package/esm/util/datamodel.d.ts.map +1 -0
  33. package/esm/{refs.js → util/datamodel.js} +2 -25
  34. package/esm/util/datamodel.js.map +1 -0
  35. package/esm/util/deep-equal.d.ts +2 -0
  36. package/esm/util/deep-equal.d.ts.map +1 -0
  37. package/esm/util/deep-equal.js +39 -0
  38. package/esm/util/deep-equal.js.map +1 -0
  39. package/esm/util/loader-map.d.ts +6 -0
  40. package/esm/util/loader-map.d.ts.map +1 -0
  41. package/esm/{loader-map.js → util/loader-map.js} +10 -12
  42. package/esm/util/loader-map.js.map +1 -0
  43. package/esm/util/map-query.d.ts +6 -0
  44. package/esm/util/map-query.d.ts.map +1 -0
  45. package/esm/util/map-query.js +169 -0
  46. package/esm/util/map-query.js.map +1 -0
  47. package/esm/util/relation-map.d.ts +9 -0
  48. package/esm/util/relation-map.d.ts.map +1 -0
  49. package/esm/util/relation-map.js +20 -0
  50. package/esm/util/relation-map.js.map +1 -0
  51. package/esm/util/selections.d.ts +20 -0
  52. package/esm/util/selections.d.ts.map +1 -0
  53. package/esm/util/selections.js +139 -0
  54. package/esm/util/selections.js.map +1 -0
  55. package/lib/field-builder.js +9 -9
  56. package/lib/field-builder.js.map +1 -1
  57. package/lib/generator.js +4 -0
  58. package/lib/generator.js.map +1 -1
  59. package/lib/global-types.d.ts +23 -5
  60. package/lib/global-types.d.ts.map +1 -1
  61. package/lib/index.d.ts +4 -1
  62. package/lib/index.d.ts.map +1 -1
  63. package/lib/index.js +45 -0
  64. package/lib/index.js.map +1 -1
  65. package/lib/model-loader.d.ts +5 -6
  66. package/lib/model-loader.d.ts.map +1 -1
  67. package/lib/model-loader.js +13 -70
  68. package/lib/model-loader.js.map +1 -1
  69. package/lib/prisma-field-builder.d.ts +25 -6
  70. package/lib/prisma-field-builder.d.ts.map +1 -1
  71. package/lib/prisma-field-builder.js +89 -122
  72. package/lib/prisma-field-builder.js.map +1 -1
  73. package/lib/schema-builder.js +17 -7
  74. package/lib/schema-builder.js.map +1 -1
  75. package/lib/types.d.ts +73 -77
  76. package/lib/types.d.ts.map +1 -1
  77. package/lib/types.js +2 -0
  78. package/lib/types.js.map +1 -1
  79. package/lib/{cursors.d.ts → util/cursors.d.ts} +1 -1
  80. package/lib/util/cursors.d.ts.map +1 -0
  81. package/lib/{cursors.js → util/cursors.js} +0 -0
  82. package/lib/util/cursors.js.map +1 -0
  83. package/{esm/refs.d.ts → lib/util/datamodel.d.ts} +4 -8
  84. package/lib/util/datamodel.d.ts.map +1 -0
  85. package/lib/{refs.js → util/datamodel.js} +3 -29
  86. package/lib/util/datamodel.js.map +1 -0
  87. package/lib/util/deep-equal.d.ts +2 -0
  88. package/lib/util/deep-equal.d.ts.map +1 -0
  89. package/lib/util/deep-equal.js +43 -0
  90. package/lib/util/deep-equal.js.map +1 -0
  91. package/lib/util/loader-map.d.ts +6 -0
  92. package/lib/util/loader-map.d.ts.map +1 -0
  93. package/lib/{loader-map.js → util/loader-map.js} +10 -12
  94. package/lib/util/loader-map.js.map +1 -0
  95. package/lib/util/map-query.d.ts +6 -0
  96. package/lib/util/map-query.d.ts.map +1 -0
  97. package/lib/util/map-query.js +175 -0
  98. package/lib/util/map-query.js.map +1 -0
  99. package/lib/util/relation-map.d.ts +9 -0
  100. package/lib/util/relation-map.d.ts.map +1 -0
  101. package/lib/util/relation-map.js +24 -0
  102. package/lib/util/relation-map.js.map +1 -0
  103. package/lib/util/selections.d.ts +20 -0
  104. package/lib/util/selections.d.ts.map +1 -0
  105. package/lib/util/selections.js +148 -0
  106. package/lib/util/selections.js.map +1 -0
  107. package/package.json +5 -5
  108. package/src/field-builder.ts +3 -3
  109. package/src/generator.ts +18 -0
  110. package/src/global-types.ts +59 -12
  111. package/src/index.ts +75 -1
  112. package/src/model-loader.ts +19 -92
  113. package/src/prisma-field-builder.ts +194 -152
  114. package/src/schema-builder.ts +28 -7
  115. package/src/types.ts +138 -102
  116. package/src/{cursors.ts → util/cursors.ts} +1 -1
  117. package/src/{refs.ts → util/datamodel.ts} +3 -44
  118. package/src/util/deep-equal.ts +51 -0
  119. package/src/{loader-map.ts → util/loader-map.ts} +13 -13
  120. package/src/util/map-query.ts +327 -0
  121. package/src/util/relation-map.ts +36 -0
  122. package/src/util/selections.ts +192 -0
  123. package/esm/cursors.d.ts.map +0 -1
  124. package/esm/cursors.js.map +0 -1
  125. package/esm/loader-map.d.ts +0 -6
  126. package/esm/loader-map.d.ts.map +0 -1
  127. package/esm/loader-map.js.map +0 -1
  128. package/esm/refs.d.ts.map +0 -1
  129. package/esm/refs.js.map +0 -1
  130. package/esm/util/index.d.ts +0 -5
  131. package/esm/util/index.d.ts.map +0 -1
  132. package/esm/util/index.js +0 -16
  133. package/esm/util/index.js.map +0 -1
  134. package/esm/util/map-includes.d.ts +0 -6
  135. package/esm/util/map-includes.d.ts.map +0 -1
  136. package/esm/util/map-includes.js +0 -184
  137. package/esm/util/map-includes.js.map +0 -1
  138. package/esm/util/merge-includes.d.ts +0 -3
  139. package/esm/util/merge-includes.d.ts.map +0 -1
  140. package/esm/util/merge-includes.js +0 -91
  141. package/esm/util/merge-includes.js.map +0 -1
  142. package/lib/cursors.d.ts.map +0 -1
  143. package/lib/cursors.js.map +0 -1
  144. package/lib/loader-map.d.ts +0 -6
  145. package/lib/loader-map.d.ts.map +0 -1
  146. package/lib/loader-map.js.map +0 -1
  147. package/lib/refs.d.ts.map +0 -1
  148. package/lib/refs.js.map +0 -1
  149. package/lib/util/index.d.ts +0 -5
  150. package/lib/util/index.d.ts.map +0 -1
  151. package/lib/util/index.js +0 -30
  152. package/lib/util/index.js.map +0 -1
  153. package/lib/util/map-includes.d.ts +0 -6
  154. package/lib/util/map-includes.d.ts.map +0 -1
  155. package/lib/util/map-includes.js +0 -189
  156. package/lib/util/map-includes.js.map +0 -1
  157. package/lib/util/merge-includes.d.ts +0 -3
  158. package/lib/util/merge-includes.d.ts.map +0 -1
  159. package/lib/util/merge-includes.js +0 -96
  160. package/lib/util/merge-includes.js.map +0 -1
  161. package/src/util/index.ts +0 -26
  162. package/src/util/map-includes.ts +0 -328
  163. package/src/util/merge-includes.ts +0 -121
@@ -0,0 +1,327 @@
1
+ /* eslint-disable no-param-reassign */
2
+ /* eslint-disable no-continue */
3
+ import {
4
+ FieldNode,
5
+ FragmentDefinitionNode,
6
+ getNamedType,
7
+ GraphQLNamedType,
8
+ GraphQLObjectType,
9
+ GraphQLResolveInfo,
10
+ InlineFragmentNode,
11
+ isObjectType,
12
+ Kind,
13
+ SelectionSetNode,
14
+ } from 'graphql';
15
+ import { getArgumentValues } from 'graphql/execution/values';
16
+ import { setLoaderMappings } from './loader-map';
17
+ import { FieldMap } from './relation-map';
18
+ import {
19
+ createState,
20
+ mergeSelection,
21
+ selectionCompatible,
22
+ SelectionState,
23
+ selectionToQuery,
24
+ } from './selections';
25
+
26
+ import { FieldSelection, IncludeMap, IndirectInclude, LoaderMappings, SelectionMap } from '..';
27
+
28
+ function addTypeSelectionsForField(
29
+ type: GraphQLNamedType,
30
+ context: object,
31
+ info: GraphQLResolveInfo,
32
+ state: SelectionState,
33
+ selection: FieldNode,
34
+ indirectPath: string[],
35
+ ) {
36
+ if (selection.name.value.startsWith('__')) {
37
+ return;
38
+ }
39
+
40
+ const {
41
+ pothosPrismaInclude,
42
+ pothosPrismaSelect,
43
+ pothosPrismaIndirectInclude,
44
+ pothosPrismaModel,
45
+ } = (type.extensions ?? {}) as {
46
+ pothosPrismaModel?: string;
47
+ pothosPrismaInclude?: IncludeMap;
48
+ pothosPrismaSelect?: IncludeMap;
49
+ pothosPrismaIndirectInclude?: IndirectInclude;
50
+ };
51
+
52
+ if (pothosPrismaIndirectInclude) {
53
+ resolveIndirectInclude(
54
+ type,
55
+ info,
56
+ selection,
57
+ pothosPrismaIndirectInclude.path,
58
+ indirectPath,
59
+ (resolvedType, field, path) => {
60
+ addTypeSelectionsForField(resolvedType, context, info, state, field, path);
61
+ },
62
+ );
63
+ }
64
+
65
+ if (!isObjectType(type)) {
66
+ return;
67
+ }
68
+
69
+ if (pothosPrismaModel && !pothosPrismaSelect) {
70
+ state.mode = 'include';
71
+ }
72
+
73
+ if (pothosPrismaInclude || pothosPrismaSelect) {
74
+ mergeSelection(state, {
75
+ select: pothosPrismaSelect ? { ...pothosPrismaSelect } : undefined,
76
+ include: pothosPrismaInclude ? { ...pothosPrismaInclude } : undefined,
77
+ });
78
+ }
79
+
80
+ if (selection.selectionSet) {
81
+ addNestedSelections(type, context, info, state, selection.selectionSet, indirectPath);
82
+ }
83
+ }
84
+
85
+ function resolveIndirectInclude(
86
+ type: GraphQLNamedType,
87
+ info: GraphQLResolveInfo,
88
+ selection: FieldNode | FragmentDefinitionNode | InlineFragmentNode,
89
+ includePath: IndirectInclude['path'],
90
+ path: string[],
91
+ resolve: (type: GraphQLNamedType, field: FieldNode, path: string[]) => void,
92
+ ) {
93
+ const [include, ...rest] = includePath;
94
+ if (!selection.selectionSet || !include) {
95
+ return;
96
+ }
97
+
98
+ for (const sel of selection.selectionSet.selections) {
99
+ switch (sel.kind) {
100
+ case Kind.FIELD:
101
+ if (sel.name.value === include.name && isObjectType(type)) {
102
+ const returnType = getNamedType(type.getFields()[sel.name.value].type);
103
+
104
+ if (rest.length === 0) {
105
+ resolve(returnType, sel, [...path, sel.alias?.value ?? sel.name.value]);
106
+ } else {
107
+ resolveIndirectInclude(
108
+ returnType,
109
+ info,
110
+ sel,
111
+ rest,
112
+ [...path, sel.alias?.value ?? sel.name.value],
113
+ resolve,
114
+ );
115
+ }
116
+ }
117
+ continue;
118
+ case Kind.FRAGMENT_SPREAD:
119
+ if (info.fragments[sel.name.value].typeCondition.name.value === include.type) {
120
+ resolveIndirectInclude(
121
+ info.schema.getType(include.type)!,
122
+ info,
123
+ info.fragments[sel.name.value],
124
+ includePath,
125
+ path,
126
+ resolve,
127
+ );
128
+ }
129
+
130
+ continue;
131
+
132
+ case Kind.INLINE_FRAGMENT:
133
+ if (!sel.typeCondition || sel.typeCondition.name.value === include.type) {
134
+ resolveIndirectInclude(
135
+ sel.typeCondition ? info.schema.getType(sel.typeCondition.name.value)! : type,
136
+ info,
137
+ sel,
138
+ includePath,
139
+ path,
140
+ resolve,
141
+ );
142
+ }
143
+
144
+ continue;
145
+
146
+ default:
147
+ throw new Error(`Unsupported selection kind ${(selection as { kind: string }).kind}`);
148
+ }
149
+ }
150
+ }
151
+
152
+ function addNestedSelections(
153
+ type: GraphQLObjectType,
154
+ context: object,
155
+ info: GraphQLResolveInfo,
156
+ state: SelectionState,
157
+ selections: SelectionSetNode,
158
+ indirectPath: string[],
159
+ ) {
160
+ for (const selection of selections.selections) {
161
+ switch (selection.kind) {
162
+ case Kind.FIELD:
163
+ addFieldSelection(type, context, info, state, selection, indirectPath);
164
+
165
+ continue;
166
+ case Kind.FRAGMENT_SPREAD:
167
+ if (info.fragments[selection.name.value].typeCondition.name.value !== type.name) {
168
+ continue;
169
+ }
170
+
171
+ addNestedSelections(
172
+ type,
173
+ context,
174
+ info,
175
+ state,
176
+ info.fragments[selection.name.value].selectionSet,
177
+ indirectPath,
178
+ );
179
+
180
+ continue;
181
+
182
+ case Kind.INLINE_FRAGMENT:
183
+ if (selection.typeCondition && selection.typeCondition.name.value !== type.name) {
184
+ continue;
185
+ }
186
+
187
+ addNestedSelections(type, context, info, state, selection.selectionSet, indirectPath);
188
+
189
+ continue;
190
+
191
+ default:
192
+ throw new Error(`Unsupported selection kind ${(selection as { kind: string }).kind}`);
193
+ }
194
+ }
195
+ }
196
+
197
+ function addFieldSelection(
198
+ type: GraphQLObjectType,
199
+ context: object,
200
+ info: GraphQLResolveInfo,
201
+ state: SelectionState,
202
+ selection: FieldNode,
203
+ indirectPath: string[],
204
+ ) {
205
+ if (selection.name.value.startsWith('__')) {
206
+ return;
207
+ }
208
+
209
+ const field = type.getFields()[selection.name.value];
210
+
211
+ if (!field) {
212
+ throw new Error(`Unknown field ${selection.name.value} on ${type.name}`);
213
+ }
214
+
215
+ const fieldSelect = field.extensions?.pothosPrismaSelect as FieldSelection | undefined;
216
+
217
+ let fieldSelectionMap: SelectionMap;
218
+
219
+ const fieldParentSelect = field.extensions?.pothosPrismaParentSelect as
220
+ | Record<string, SelectionMap | boolean>
221
+ | undefined;
222
+ let mappings: LoaderMappings = {};
223
+
224
+ if (typeof fieldSelect === 'function') {
225
+ const args = getArgumentValues(field, selection, info.variableValues) as Record<
226
+ string,
227
+ unknown
228
+ >;
229
+
230
+ fieldSelectionMap = fieldSelect(args, context, (rawQuery) => {
231
+ const returnType = getNamedType(field.type);
232
+ const query = typeof rawQuery === 'function' ? rawQuery(args, context) : rawQuery;
233
+
234
+ const fieldState = createStateForType(returnType, info, state);
235
+
236
+ if (typeof query === 'object' && Object.keys(query).length > 0) {
237
+ mergeSelection(fieldState, { select: {}, ...query });
238
+ }
239
+
240
+ addTypeSelectionsForField(returnType, context, info, fieldState, selection, []);
241
+
242
+ // eslint-disable-next-line prefer-destructuring
243
+ mappings = fieldState.mappings;
244
+
245
+ return selectionToQuery(fieldState);
246
+ });
247
+ } else {
248
+ fieldSelectionMap = { select: fieldSelect };
249
+ }
250
+
251
+ if (fieldSelect && selectionCompatible(state, fieldSelectionMap, true)) {
252
+ mergeSelection(state, fieldSelectionMap);
253
+ state.mappings[selection.alias?.value ?? selection.name.value] = {
254
+ field: selection.name.value,
255
+ mappings,
256
+ indirectPath,
257
+ };
258
+ } else if (
259
+ fieldParentSelect &&
260
+ state.parent &&
261
+ selectionCompatible(state.parent, { select: fieldParentSelect }, true)
262
+ ) {
263
+ mergeSelection(state.parent, { select: fieldParentSelect });
264
+ state.mappings[selection.alias?.value ?? selection.name.value] = {
265
+ field: selection.name.value,
266
+ mappings,
267
+ indirectPath,
268
+ };
269
+ }
270
+ }
271
+
272
+ export function queryFromInfo(context: object, info: GraphQLResolveInfo, typeName?: string): {} {
273
+ const type = typeName ? info.schema.getTypeMap()[typeName] : getNamedType(info.returnType);
274
+ const state = createStateForType(type, info);
275
+
276
+ addTypeSelectionsForField(type, context, info, state, info.fieldNodes[0], []);
277
+
278
+ setLoaderMappings(context, info, state.mappings, type);
279
+
280
+ return selectionToQuery(state);
281
+ }
282
+
283
+ export function selectionStateFromInfo(
284
+ context: object,
285
+ info: GraphQLResolveInfo,
286
+ typeName?: string,
287
+ ) {
288
+ const type = typeName ? info.schema.getTypeMap()[typeName] : info.parentType;
289
+
290
+ const state = createStateForType(type, info);
291
+
292
+ if (!isObjectType(type)) {
293
+ throw new Error('Prisma plugin can only resolve includes for object types');
294
+ }
295
+
296
+ addFieldSelection(type, context, info, state, info.fieldNodes[0], []);
297
+
298
+ return state;
299
+ }
300
+
301
+ function createStateForType(
302
+ type: GraphQLNamedType,
303
+ info: GraphQLResolveInfo,
304
+ parent?: SelectionState,
305
+ ) {
306
+ const targetType = getIndirectType(type, info);
307
+
308
+ const fieldMap = targetType.extensions.pothosPrismaFieldMap as FieldMap;
309
+
310
+ return createState(
311
+ fieldMap,
312
+ targetType.extensions.pothosPrismaSelect ? 'select' : 'include',
313
+ parent,
314
+ );
315
+ }
316
+
317
+ export function getIndirectType(type: GraphQLNamedType, info: GraphQLResolveInfo) {
318
+ let targetType = type;
319
+
320
+ while (targetType.extensions.pothosPrismaIndirectInclude) {
321
+ targetType = info.schema.getType(
322
+ (targetType.extensions.pothosPrismaIndirectInclude as IndirectInclude).getType(),
323
+ )!;
324
+ }
325
+
326
+ return targetType;
327
+ }
@@ -0,0 +1,36 @@
1
+ import { createContextCache } from '@pothos/core';
2
+ import { DMMF } from '@prisma/generator-helper';
3
+
4
+ export interface FieldMap {
5
+ model: string;
6
+ relations: Map<string, FieldMap>;
7
+ }
8
+
9
+ export type RelationMap = Map<string, FieldMap>;
10
+
11
+ export const getRelationMap = createContextCache((client: object) =>
12
+ createRelationMap(
13
+ // eslint-disable-next-line no-underscore-dangle
14
+ (client as unknown as { _dmmf: { datamodel: DMMF.Datamodel } })._dmmf.datamodel,
15
+ ),
16
+ );
17
+
18
+ export function createRelationMap({ models }: DMMF.Datamodel) {
19
+ const relationMap: RelationMap = new Map();
20
+
21
+ models.forEach((model) => {
22
+ relationMap.set(model.name, { model: model.name, relations: new Map() });
23
+ });
24
+
25
+ models.forEach((model) => {
26
+ const map = relationMap.get(model.name)!.relations;
27
+
28
+ model.fields.forEach((field) => {
29
+ if (field.kind === 'object' && relationMap.has(field.type)) {
30
+ map.set(field.name, relationMap.get(field.type)!);
31
+ }
32
+ });
33
+ });
34
+
35
+ return relationMap;
36
+ }
@@ -0,0 +1,192 @@
1
+ /* eslint-disable no-param-reassign */
2
+ /* eslint-disable no-underscore-dangle */
3
+ import { deepEqual } from './deep-equal';
4
+ import { FieldMap } from './relation-map';
5
+
6
+ import { LoaderMappings, SelectionMap } from '..';
7
+
8
+ export type SelectionMode = 'select' | 'include';
9
+
10
+ export interface SelectionState {
11
+ fieldMap: FieldMap;
12
+ query: object;
13
+ mode: SelectionMode;
14
+ fields: Set<string>;
15
+ counts: Set<string>;
16
+ relations: Map<string, SelectionState>;
17
+ mappings: LoaderMappings;
18
+ parent?: SelectionState;
19
+ }
20
+
21
+ export function selectionCompatible(
22
+ state: SelectionState,
23
+ selectionMap: SelectionMap | boolean,
24
+ ignoreQuery = false,
25
+ ): boolean {
26
+ if (typeof selectionMap === 'boolean') {
27
+ return ignoreQuery || !selectionMap || Object.keys(state.query).length === 0;
28
+ }
29
+
30
+ const { select, include, ...query } = selectionMap;
31
+
32
+ if (select && Object.keys(select).some((key) => compare(key, select[key]))) {
33
+ return false;
34
+ }
35
+
36
+ if (include && Object.keys(include).some((key) => compare(key, include[key]))) {
37
+ return false;
38
+ }
39
+
40
+ return ignoreQuery || deepEqual(state.query, query);
41
+
42
+ function compare(key: string, value: SelectionMap | boolean) {
43
+ return (
44
+ value &&
45
+ state.fieldMap.relations.has(key) &&
46
+ state.relations.has(key) &&
47
+ !selectionCompatible(state.relations.get(key)!, value)
48
+ );
49
+ }
50
+ }
51
+
52
+ export function stateCompatible(
53
+ state: SelectionState,
54
+ newState: SelectionState,
55
+ ignoreQuery = false,
56
+ ): boolean {
57
+ for (const [name, relationState] of newState.relations) {
58
+ if (state.relations.has(name) && !stateCompatible(state.relations.get(name)!, relationState)) {
59
+ return false;
60
+ }
61
+ }
62
+
63
+ return ignoreQuery || deepEqual(state.query, newState.query);
64
+ }
65
+
66
+ export function mergeState(state: SelectionState, newState: SelectionState) {
67
+ for (const [name, relationState] of newState.relations) {
68
+ if (state.relations.has(name)) {
69
+ mergeState(state.relations.get(name)!, relationState);
70
+ }
71
+ }
72
+
73
+ if (newState.mode === 'include') {
74
+ state.mode = 'include';
75
+ } else {
76
+ for (const name of newState.fields) {
77
+ state.fields.add(name);
78
+ }
79
+ }
80
+ }
81
+
82
+ export function createState(
83
+ fieldMap: FieldMap,
84
+ mode: SelectionMode,
85
+ parent?: SelectionState,
86
+ ): SelectionState {
87
+ return {
88
+ parent,
89
+ mode,
90
+ fieldMap,
91
+ query: {},
92
+ fields: new Set(),
93
+ counts: new Set(),
94
+ relations: new Map(),
95
+ mappings: {},
96
+ };
97
+ }
98
+
99
+ export function mergeSelection(state: SelectionState, { select, include, ...query }: SelectionMap) {
100
+ if (state.mode === 'select' && !select) {
101
+ state.mode = 'include';
102
+ }
103
+
104
+ if (include) {
105
+ Object.keys(include).forEach((key) => {
106
+ merge(key, include[key]);
107
+ });
108
+ }
109
+
110
+ if (select) {
111
+ Object.keys(select).forEach((key) => {
112
+ merge(key, select[key]);
113
+ });
114
+ }
115
+
116
+ if (Object.keys(query).length > 0) {
117
+ state.query = query;
118
+ }
119
+
120
+ function merge(key: string, value: SelectionMap | boolean) {
121
+ if (!value) {
122
+ return;
123
+ }
124
+
125
+ if (key === '_count') {
126
+ const counts = (value as { select?: {} }).select ?? {};
127
+ Object.keys(counts).forEach((count) => {
128
+ state.counts.add(count);
129
+ });
130
+
131
+ return;
132
+ }
133
+
134
+ const selection = value === true ? { include: {} } : value;
135
+ const childMap = state.fieldMap.relations.get(key);
136
+
137
+ if (childMap) {
138
+ if (state.relations.has(key)) {
139
+ mergeSelection(state.relations.get(key)!, selection);
140
+ } else {
141
+ const relatedState = createState(childMap, 'select');
142
+ mergeSelection(relatedState, selection);
143
+ state.relations.set(key, relatedState);
144
+ }
145
+ } else {
146
+ state.fields.add(key);
147
+ }
148
+ }
149
+ }
150
+
151
+ export function selectionToQuery(state: SelectionState): SelectionMap {
152
+ const nestedIncludes: Record<string, SelectionMap | boolean> = {};
153
+ const counts: Record<string, boolean> = {};
154
+
155
+ let hasSelection = false;
156
+
157
+ state.relations.forEach((sel, relation) => {
158
+ hasSelection = true;
159
+ const nested = selectionToQuery(sel);
160
+ nestedIncludes[relation] = Object.keys(nested).length > 0 ? nested : true;
161
+ });
162
+
163
+ if (state.counts.size > 0) {
164
+ hasSelection = true;
165
+ for (const count of state.counts) {
166
+ counts[count] = true;
167
+ }
168
+
169
+ nestedIncludes._count = {
170
+ select: counts,
171
+ };
172
+ }
173
+
174
+ if (state.mode === 'select') {
175
+ state.fields.forEach((field) => {
176
+ hasSelection = true;
177
+ nestedIncludes[field] = true;
178
+ });
179
+
180
+ return {
181
+ ...(state.query as SelectionMap),
182
+ select: nestedIncludes,
183
+ };
184
+ }
185
+
186
+ return hasSelection
187
+ ? {
188
+ ...state.query,
189
+ include: nestedIncludes,
190
+ }
191
+ : (state.query as SelectionMap);
192
+ }
@@ -1 +0,0 @@
1
- {"version":3,"file":"cursors.d.ts","sourceRoot":"","sources":["../src/cursors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAK5C,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,UAa/C;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,WACrC,OAAO,MAAM,EAAE,OAAO,CAAC,YASvC;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,WAwB7C;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,YACnC,MAAM,6BAevB;AAED,UAAU,kCAAkC;IAC1C,IAAI,EAAE,iBAAiB,CAAC,0BAA0B,CAAC;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1D;AAED,UAAU,oCAAqC,SAAQ,kCAAkC;IACvF,KAAK,EAAE,EAAE,CAAC;IACV,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,2BAA2B,CAAC,EAC1C,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EACpC,OAA0B,EAC1B,WAA0B,EAC1B,WAAW,GACZ,EAAE,kCAAkC;;;;;;;;EAwCpC;AAED,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,EAAE,EAC/C,OAAO,EAAE,CAAC,EAAE,EACZ,IAAI,EAAE,iBAAiB,CAAC,0BAA0B,EAClD,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,EAC3B,UAAU,CAAC,EAAE,MAAM;;;;;;;;;;;;EA4BpB;AAED,wBAAsB,6BAA6B,CAAC,CAAC,SAAS,EAAE,EAC9D,OAAO,EAAE,oCAAoC,EAC7C,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,EAC3B,OAAO,EAAE,CAAC,KAAK,EAAE;IAAE,OAAO,CAAC,EAAE,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,KAAK,YAAY,CAAC,CAAC,EAAE,CAAC;;;;;;;;;;;;GASjG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"cursors.js","sourceRoot":"","sources":["../src/cursors.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import { GraphQLResolveInfo } from 'graphql';
2
- import { LoaderMappings } from './types';
3
- export declare function cacheKey(path: GraphQLResolveInfo['path'], subPath: string[]): string;
4
- export declare function setLoaderMappings(ctx: object, path: GraphQLResolveInfo['path'], value: LoaderMappings): void;
5
- export declare function getLoaderMapping(ctx: object, path: GraphQLResolveInfo['path']): LoaderMappings | null;
6
- //# sourceMappingURL=loader-map.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loader-map.d.ts","sourceRoot":"","sources":["../src/loader-map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAIzC,wBAAgB,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,UAgB3E;AAED,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAChC,KAAK,EAAE,cAAc,QAatB;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,yBAK7E"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"loader-map.js","sourceRoot":"","sources":["../src/loader-map.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGlD,MAAM,KAAK,GAAG,kBAAkB,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,EAA0B,CAAC,CAAC;AAE7E,MAAM,UAAU,QAAQ,CAAC,IAAgC,EAAE,OAAiB;IAC1E,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,OAAO,GAA2C,IAAI,CAAC;IAE3D,OAAO,OAAO,EAAE;QACd,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,EAAE;YACnC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;SACnD;QACD,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;KACxB;IAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;QAC3B,GAAG,GAAG,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;KACzB;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,GAAW,EACX,IAAgC,EAChC,KAAqB;IAErB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;;QACnC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QAEvB,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;YAClC,MAAM,aAAa,GAAG,MAAA,OAAO,CAAC,KAAK,mCAAI,OAAO,CAAC,KAAK,CAAC;YACrD,MAAM,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;YACzD,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAEpC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;SAChC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAW,EAAE,IAAgC;;IAC5E,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAE/B,OAAO,MAAA,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,mCAAI,IAAI,CAAC;AAC9B,CAAC"}
package/esm/refs.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"refs.d.ts","sourceRoot":"","sources":["../src/refs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,GAAG,CAAC;AAErC,eAAO,MAAM,MAAM,qEAAwE,CAAC;AAC5F,eAAO,MAAM,aAAa,2DAEQ,OAAO,OAAO,EAAE,KAAK,OAAO,UAC3D,CAAC;AAEJ,eAAO,MAAM,gBAAgB,mFAG1B,CAAC;AAEJ,wBAAgB,eAAe,CAAC,KAAK,SAAS,WAAW,EACvD,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,GAC9C,eAAe,CAAC,gBAAgB,CAAC,CAWnC;AAED,wBAAgB,mBAAmB,CAAC,KAAK,SAAS,WAAW,EAC3D,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,EACvB,OAAO,EAAE,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,WAWd,OAAO,WAAW,KAAK,CAAC,SAAS,CAAC,KAAK,OAAO,SAChF;AAED,wBAAgB,mBAAmB,CAAC,KAAK,SAAS,WAAW,EAC3D,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,EACvB,OAAO,EAAE,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,EAE/C,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC,GAAG,IAAI,QAQvE;AAED,wBAAgB,WAAW,CAAC,KAAK,SAAS,WAAW,EACnD,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,EAC/C,QAAQ,EAAE,MAAM,qBAejB;AAED,wBAAgB,QAAQ,CAAC,KAAK,SAAS,WAAW,EAChD,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,qBAahD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,SAAS,WAAW,EAC1D,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,EAC/C,MAAM,EAAE,MAAM,8CAMf;AAED,wBAAgB,eAAe,CAAC,KAAK,SAAS,WAAW,EACvD,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,EAC/C,MAAM,EAAE,MAAM,eAQK,MAAM;;EAG1B;AAED,wBAAgB,kBAAkB,CAAC,KAAK,SAAS,WAAW,EAC1D,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,EAC/C,QAAQ,EAAE,MAAM,UAKjB;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,kBAUlF"}
package/esm/refs.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"refs.js","sourceRoot":"","sources":["../src/refs.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import { GraphQLNamedType, GraphQLResolveInfo } from 'graphql';
2
- export * from './map-includes';
3
- export * from './merge-includes';
4
- export declare function resolveIndirectType(type: GraphQLNamedType, info: GraphQLResolveInfo): GraphQLNamedType;
5
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE/D,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AAEjC,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,gBAAgB,EACtB,IAAI,EAAE,kBAAkB,GACvB,gBAAgB,CAiBlB"}
package/esm/util/index.js DELETED
@@ -1,16 +0,0 @@
1
- export * from './map-includes.js';
2
- export * from './merge-includes.js';
3
- export function resolveIndirectType(type, info) {
4
- var _a;
5
- const indirectInclude = (_a = type.extensions) === null || _a === void 0 ? void 0 : _a.pothosPrismaIndirectInclude;
6
- if (indirectInclude) {
7
- const includeTypeName = indirectInclude.getType();
8
- const resolvedType = info.schema.getType(includeTypeName);
9
- if (!resolvedType) {
10
- throw new Error(`Could not find type ${includeTypeName}`);
11
- }
12
- return resolveIndirectType(resolvedType, info);
13
- }
14
- return type;
15
- }
16
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAEA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AAEjC,MAAM,UAAU,mBAAmB,CACjC,IAAsB,EACtB,IAAwB;;IAExB,MAAM,eAAe,GAAG,MAAA,IAAI,CAAC,UAAU,0CAAE,2BAE5B,CAAC;IAEd,IAAI,eAAe,EAAE;QACnB,MAAM,eAAe,GAAG,eAAe,CAAC,OAAO,EAAE,CAAC;QAClD,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAE1D,IAAI,CAAC,YAAY,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,eAAe,EAAE,CAAC,CAAC;SAC3D;QAED,OAAO,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;KAChD;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,6 +0,0 @@
1
- import { GraphQLNamedType, GraphQLResolveInfo, SelectionSetNode } from 'graphql';
2
- import { IncludeCounts, IncludeMap, IndirectLoadMap, LoaderMappings } from '../types';
3
- export declare const SELF_RELATION = "@self";
4
- export declare function includesFromSelectionSet(ctx: object, type: GraphQLNamedType, info: GraphQLResolveInfo, includes: IncludeMap, counts: IncludeCounts, mappings: LoaderMappings, selectionSet: SelectionSetNode, prevIndirectMap?: IndirectLoadMap): void;
5
- export declare function queryFromInfo(ctx: object, info: GraphQLResolveInfo, typeName?: string): {};
6
- //# sourceMappingURL=map-includes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"map-includes.d.ts","sourceRoot":"","sources":["../../src/util/map-includes.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,gBAAgB,EAEhB,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,aAAa,EACb,UAAU,EACV,eAAe,EACf,cAAc,EAEf,MAAM,UAAU,CAAC;AAGlB,eAAO,MAAM,aAAa,UAAU,CAAC;AA4KrC,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,gBAAgB,EACtB,IAAI,EAAE,kBAAkB,EACxB,QAAQ,EAAE,UAAU,EACpB,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,cAAc,EACxB,YAAY,EAAE,gBAAgB,EAC9B,eAAe,CAAC,EAAE,eAAe,QAsFlC;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,EAAE,CAoC1F"}