@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.
- package/CHANGELOG.md +6 -0
- package/README.md +403 -308
- package/esm/field-builder.js +3 -3
- package/esm/field-builder.js.map +1 -1
- package/esm/generator.js +4 -0
- package/esm/generator.js.map +1 -1
- package/esm/global-types.d.ts +23 -5
- package/esm/global-types.d.ts.map +1 -1
- package/esm/index.d.ts +4 -1
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +46 -1
- package/esm/index.js.map +1 -1
- package/esm/model-loader.d.ts +5 -6
- package/esm/model-loader.d.ts.map +1 -1
- package/esm/model-loader.js +12 -69
- package/esm/model-loader.js.map +1 -1
- package/esm/prisma-field-builder.d.ts +25 -6
- package/esm/prisma-field-builder.d.ts.map +1 -1
- package/esm/prisma-field-builder.js +83 -116
- package/esm/prisma-field-builder.js.map +1 -1
- package/esm/schema-builder.js +14 -4
- package/esm/schema-builder.js.map +1 -1
- package/esm/types.d.ts +73 -77
- package/esm/types.d.ts.map +1 -1
- package/esm/types.js +1 -0
- package/esm/types.js.map +1 -1
- package/esm/{cursors.d.ts → util/cursors.d.ts} +1 -1
- package/esm/util/cursors.d.ts.map +1 -0
- package/esm/{cursors.js → util/cursors.js} +0 -0
- package/esm/util/cursors.js.map +1 -0
- package/{lib/refs.d.ts → esm/util/datamodel.d.ts} +4 -8
- package/esm/util/datamodel.d.ts.map +1 -0
- package/esm/{refs.js → util/datamodel.js} +2 -25
- package/esm/util/datamodel.js.map +1 -0
- package/esm/util/deep-equal.d.ts +2 -0
- package/esm/util/deep-equal.d.ts.map +1 -0
- package/esm/util/deep-equal.js +39 -0
- package/esm/util/deep-equal.js.map +1 -0
- package/esm/util/loader-map.d.ts +6 -0
- package/esm/util/loader-map.d.ts.map +1 -0
- package/esm/{loader-map.js → util/loader-map.js} +10 -12
- package/esm/util/loader-map.js.map +1 -0
- package/esm/util/map-query.d.ts +6 -0
- package/esm/util/map-query.d.ts.map +1 -0
- package/esm/util/map-query.js +169 -0
- package/esm/util/map-query.js.map +1 -0
- package/esm/util/relation-map.d.ts +9 -0
- package/esm/util/relation-map.d.ts.map +1 -0
- package/esm/util/relation-map.js +20 -0
- package/esm/util/relation-map.js.map +1 -0
- package/esm/util/selections.d.ts +20 -0
- package/esm/util/selections.d.ts.map +1 -0
- package/esm/util/selections.js +139 -0
- package/esm/util/selections.js.map +1 -0
- package/lib/field-builder.js +9 -9
- package/lib/field-builder.js.map +1 -1
- package/lib/generator.js +4 -0
- package/lib/generator.js.map +1 -1
- package/lib/global-types.d.ts +23 -5
- package/lib/global-types.d.ts.map +1 -1
- package/lib/index.d.ts +4 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +45 -0
- package/lib/index.js.map +1 -1
- package/lib/model-loader.d.ts +5 -6
- package/lib/model-loader.d.ts.map +1 -1
- package/lib/model-loader.js +13 -70
- package/lib/model-loader.js.map +1 -1
- package/lib/prisma-field-builder.d.ts +25 -6
- package/lib/prisma-field-builder.d.ts.map +1 -1
- package/lib/prisma-field-builder.js +89 -122
- package/lib/prisma-field-builder.js.map +1 -1
- package/lib/schema-builder.js +17 -7
- package/lib/schema-builder.js.map +1 -1
- package/lib/types.d.ts +73 -77
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js +2 -0
- package/lib/types.js.map +1 -1
- package/lib/{cursors.d.ts → util/cursors.d.ts} +1 -1
- package/lib/util/cursors.d.ts.map +1 -0
- package/lib/{cursors.js → util/cursors.js} +0 -0
- package/lib/util/cursors.js.map +1 -0
- package/{esm/refs.d.ts → lib/util/datamodel.d.ts} +4 -8
- package/lib/util/datamodel.d.ts.map +1 -0
- package/lib/{refs.js → util/datamodel.js} +3 -29
- package/lib/util/datamodel.js.map +1 -0
- package/lib/util/deep-equal.d.ts +2 -0
- package/lib/util/deep-equal.d.ts.map +1 -0
- package/lib/util/deep-equal.js +43 -0
- package/lib/util/deep-equal.js.map +1 -0
- package/lib/util/loader-map.d.ts +6 -0
- package/lib/util/loader-map.d.ts.map +1 -0
- package/lib/{loader-map.js → util/loader-map.js} +10 -12
- package/lib/util/loader-map.js.map +1 -0
- package/lib/util/map-query.d.ts +6 -0
- package/lib/util/map-query.d.ts.map +1 -0
- package/lib/util/map-query.js +175 -0
- package/lib/util/map-query.js.map +1 -0
- package/lib/util/relation-map.d.ts +9 -0
- package/lib/util/relation-map.d.ts.map +1 -0
- package/lib/util/relation-map.js +24 -0
- package/lib/util/relation-map.js.map +1 -0
- package/lib/util/selections.d.ts +20 -0
- package/lib/util/selections.d.ts.map +1 -0
- package/lib/util/selections.js +148 -0
- package/lib/util/selections.js.map +1 -0
- package/package.json +5 -5
- package/src/field-builder.ts +3 -3
- package/src/generator.ts +18 -0
- package/src/global-types.ts +59 -12
- package/src/index.ts +75 -1
- package/src/model-loader.ts +19 -92
- package/src/prisma-field-builder.ts +194 -152
- package/src/schema-builder.ts +28 -7
- package/src/types.ts +138 -102
- package/src/{cursors.ts → util/cursors.ts} +1 -1
- package/src/{refs.ts → util/datamodel.ts} +3 -44
- package/src/util/deep-equal.ts +51 -0
- package/src/{loader-map.ts → util/loader-map.ts} +13 -13
- package/src/util/map-query.ts +327 -0
- package/src/util/relation-map.ts +36 -0
- package/src/util/selections.ts +192 -0
- package/esm/cursors.d.ts.map +0 -1
- package/esm/cursors.js.map +0 -1
- package/esm/loader-map.d.ts +0 -6
- package/esm/loader-map.d.ts.map +0 -1
- package/esm/loader-map.js.map +0 -1
- package/esm/refs.d.ts.map +0 -1
- package/esm/refs.js.map +0 -1
- package/esm/util/index.d.ts +0 -5
- package/esm/util/index.d.ts.map +0 -1
- package/esm/util/index.js +0 -16
- package/esm/util/index.js.map +0 -1
- package/esm/util/map-includes.d.ts +0 -6
- package/esm/util/map-includes.d.ts.map +0 -1
- package/esm/util/map-includes.js +0 -184
- package/esm/util/map-includes.js.map +0 -1
- package/esm/util/merge-includes.d.ts +0 -3
- package/esm/util/merge-includes.d.ts.map +0 -1
- package/esm/util/merge-includes.js +0 -91
- package/esm/util/merge-includes.js.map +0 -1
- package/lib/cursors.d.ts.map +0 -1
- package/lib/cursors.js.map +0 -1
- package/lib/loader-map.d.ts +0 -6
- package/lib/loader-map.d.ts.map +0 -1
- package/lib/loader-map.js.map +0 -1
- package/lib/refs.d.ts.map +0 -1
- package/lib/refs.js.map +0 -1
- package/lib/util/index.d.ts +0 -5
- package/lib/util/index.d.ts.map +0 -1
- package/lib/util/index.js +0 -30
- package/lib/util/index.js.map +0 -1
- package/lib/util/map-includes.d.ts +0 -6
- package/lib/util/map-includes.d.ts.map +0 -1
- package/lib/util/map-includes.js +0 -189
- package/lib/util/map-includes.js.map +0 -1
- package/lib/util/merge-includes.d.ts +0 -3
- package/lib/util/merge-includes.d.ts.map +0 -1
- package/lib/util/merge-includes.js +0 -96
- package/lib/util/merge-includes.js.map +0 -1
- package/src/util/index.ts +0 -26
- package/src/util/map-includes.ts +0 -328
- 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
|
+
}
|
package/esm/cursors.d.ts.map
DELETED
|
@@ -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"}
|
package/esm/cursors.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cursors.js","sourceRoot":"","sources":["../src/cursors.ts"],"names":[],"mappings":"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"}
|
package/esm/loader-map.d.ts
DELETED
|
@@ -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
|
package/esm/loader-map.d.ts.map
DELETED
|
@@ -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"}
|
package/esm/loader-map.js.map
DELETED
|
@@ -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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"}
|
package/esm/util/index.d.ts
DELETED
|
@@ -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
|
package/esm/util/index.d.ts.map
DELETED
|
@@ -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
|
package/esm/util/index.js.map
DELETED
|
@@ -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"}
|