@pothos/plugin-prisma 0.17.1 → 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 +22 -0
- package/README.md +403 -308
- package/esm/field-builder.js +12 -14
- 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 +86 -117
- package/esm/prisma-field-builder.js.map +1 -1
- package/esm/schema-builder.js +15 -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} +10 -8
- package/esm/util/cursors.d.ts.map +1 -0
- package/esm/{cursors.js → util/cursors.js} +34 -13
- package/esm/util/cursors.js.map +1 -0
- package/{lib/refs.d.ts → esm/util/datamodel.d.ts} +9 -8
- package/esm/util/datamodel.d.ts.map +1 -0
- package/esm/{refs.js → util/datamodel.js} +27 -30
- 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 +16 -18
- 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 +90 -121
- package/lib/prisma-field-builder.js.map +1 -1
- package/lib/schema-builder.js +18 -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} +10 -8
- package/lib/util/cursors.d.ts.map +1 -0
- package/lib/{cursors.js → util/cursors.js} +39 -14
- package/lib/util/cursors.js.map +1 -0
- package/{esm/refs.d.ts → lib/util/datamodel.d.ts} +9 -8
- package/lib/util/datamodel.d.ts.map +1 -0
- package/lib/{refs.js → util/datamodel.js} +32 -35
- 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 +7 -7
- package/src/field-builder.ts +12 -12
- 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 +199 -147
- package/src/schema-builder.ts +29 -7
- package/src/types.ts +138 -102
- package/src/{cursors.ts → util/cursors.ts} +45 -20
- package/src/{refs.ts → util/datamodel.ts} +36 -40
- 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/.turbo/turbo-build.log +0 -17
- package/.turbo/turbo-test.log +0 -18
- package/.turbo/turbo-type.log +0 -5
- package/babel.config.js +0 -3
- 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
- package/tsconfig.tsbuildinfo +0 -1
package/lib/util/map-includes.js
DELETED
|
@@ -1,189 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.queryFromInfo = exports.includesFromSelectionSet = exports.SELF_RELATION = void 0;
|
|
4
|
-
/* eslint-disable no-underscore-dangle */
|
|
5
|
-
/* eslint-disable no-param-reassign */
|
|
6
|
-
/* eslint-disable no-continue */
|
|
7
|
-
const graphql_1 = require("graphql");
|
|
8
|
-
const values_1 = require("graphql/execution/values");
|
|
9
|
-
const loader_map_1 = require("../loader-map");
|
|
10
|
-
const _1 = require(".");
|
|
11
|
-
exports.SELF_RELATION = '@self';
|
|
12
|
-
function handleField(ctx, info, fields, selection, includes, counts, mappings, indirectMap) {
|
|
13
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
14
|
-
if (selection.name.value.startsWith('__')) {
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
const field = fields[selection.name.value];
|
|
18
|
-
if (!field) {
|
|
19
|
-
throw new Error(`Unknown field ${selection.name.value}`);
|
|
20
|
-
}
|
|
21
|
-
const countName = (_a = field.extensions) === null || _a === void 0 ? void 0 : _a.pothosPrismaRelationCount;
|
|
22
|
-
const parentCountName = (_b = field.extensions) === null || _b === void 0 ? void 0 : _b.pothosPrismaRelationCountForParent;
|
|
23
|
-
const relationName = (_c = field.extensions) === null || _c === void 0 ? void 0 : _c.pothosPrismaRelation;
|
|
24
|
-
if (countName) {
|
|
25
|
-
counts.current[countName] = true;
|
|
26
|
-
}
|
|
27
|
-
if (parentCountName) {
|
|
28
|
-
counts.parent[parentCountName] = true;
|
|
29
|
-
}
|
|
30
|
-
if (indirectMap === null || indirectMap === void 0 ? void 0 : indirectMap.subFields.length) {
|
|
31
|
-
const subField = indirectMap.subFields[0];
|
|
32
|
-
if (field.name === subField.name && selection.selectionSet) {
|
|
33
|
-
const type = (0, graphql_1.getNamedType)(field.type);
|
|
34
|
-
if (!(type.name !== subField.type)) {
|
|
35
|
-
throw new TypeError(`Expected ${field.name} to be ${subField.type} but got ${type.name}`);
|
|
36
|
-
}
|
|
37
|
-
includesFromSelectionSet(ctx, type, info, includes, counts, mappings, selection.selectionSet, indirectMap.subFields.length > 0
|
|
38
|
-
? {
|
|
39
|
-
subFields: indirectMap.subFields.slice(1),
|
|
40
|
-
path: [...indirectMap.path, (_e = (_d = selection.alias) === null || _d === void 0 ? void 0 : _d.value) !== null && _e !== void 0 ? _e : selection.name.value],
|
|
41
|
-
}
|
|
42
|
-
: undefined);
|
|
43
|
-
}
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
if (!relationName) {
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
const type = (0, graphql_1.getNamedType)(field.type);
|
|
50
|
-
const includeType = (0, _1.resolveIndirectType)(type, info);
|
|
51
|
-
const newIncludes = {
|
|
52
|
-
...(_f = includeType.extensions) === null || _f === void 0 ? void 0 : _f.pothosPrismaInclude,
|
|
53
|
-
};
|
|
54
|
-
let query = (_h = (_g = field.extensions) === null || _g === void 0 ? void 0 : _g.pothosPrismaQuery) !== null && _h !== void 0 ? _h : {};
|
|
55
|
-
if (typeof query === 'function') {
|
|
56
|
-
const args = (0, values_1.getArgumentValues)(field, selection, info.variableValues);
|
|
57
|
-
query = query(args, ctx);
|
|
58
|
-
}
|
|
59
|
-
const existingInclude = relationName === exports.SELF_RELATION ? { include: includes } : includes[relationName];
|
|
60
|
-
query = { ...query, include: newIncludes };
|
|
61
|
-
if (typeof existingInclude === 'object') {
|
|
62
|
-
query = (0, _1.mergeIncludes)(existingInclude, query);
|
|
63
|
-
if (!query) {
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
if (!mappings[relationName]) {
|
|
68
|
-
mappings[relationName] = [];
|
|
69
|
-
}
|
|
70
|
-
const nestedIncludes = query.include;
|
|
71
|
-
const nestedMappings = {};
|
|
72
|
-
const nestedCounts = {
|
|
73
|
-
current: {},
|
|
74
|
-
parent: counts.current,
|
|
75
|
-
};
|
|
76
|
-
if (relationName === exports.SELF_RELATION) {
|
|
77
|
-
mappings[relationName].push({
|
|
78
|
-
field: selection.name.value,
|
|
79
|
-
alias: (_j = selection.alias) === null || _j === void 0 ? void 0 : _j.value,
|
|
80
|
-
mappings: nestedMappings,
|
|
81
|
-
indirectPath: (_k = indirectMap === null || indirectMap === void 0 ? void 0 : indirectMap.path) !== null && _k !== void 0 ? _k : [],
|
|
82
|
-
});
|
|
83
|
-
const { include } = query;
|
|
84
|
-
if (selection.selectionSet) {
|
|
85
|
-
includesFromSelectionSet(ctx, type, info, includes, counts, nestedMappings, selection.selectionSet);
|
|
86
|
-
}
|
|
87
|
-
Object.keys(include).forEach((key) => {
|
|
88
|
-
includes[key] = include[key];
|
|
89
|
-
});
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
mappings[relationName].push({
|
|
93
|
-
field: selection.name.value,
|
|
94
|
-
alias: (_l = selection.alias) === null || _l === void 0 ? void 0 : _l.value,
|
|
95
|
-
mappings: nestedMappings,
|
|
96
|
-
indirectPath: (_m = indirectMap === null || indirectMap === void 0 ? void 0 : indirectMap.path) !== null && _m !== void 0 ? _m : [],
|
|
97
|
-
});
|
|
98
|
-
if (selection.selectionSet) {
|
|
99
|
-
includesFromSelectionSet(ctx, type, info, nestedIncludes, nestedCounts, nestedMappings, selection.selectionSet);
|
|
100
|
-
}
|
|
101
|
-
if (Object.keys(nestedCounts.current).length > 0) {
|
|
102
|
-
nestedIncludes._count = { select: nestedCounts.current };
|
|
103
|
-
}
|
|
104
|
-
if (Object.keys(nestedIncludes).length === 0) {
|
|
105
|
-
delete query.include;
|
|
106
|
-
}
|
|
107
|
-
includes[relationName] =
|
|
108
|
-
Object.keys(query).length > 0 ? query : true;
|
|
109
|
-
}
|
|
110
|
-
function includesFromSelectionSet(ctx, type, info, includes, counts, mappings, selectionSet, prevIndirectMap) {
|
|
111
|
-
var _a, _b, _c, _d;
|
|
112
|
-
const indirectInclude = (_a = type.extensions) === null || _a === void 0 ? void 0 : _a.pothosPrismaIndirectInclude;
|
|
113
|
-
const indirectMap = prevIndirectMap
|
|
114
|
-
? {
|
|
115
|
-
path: [...prevIndirectMap.path],
|
|
116
|
-
subFields: prevIndirectMap.subFields.length > 0
|
|
117
|
-
? prevIndirectMap.subFields
|
|
118
|
-
: (_b = indirectInclude === null || indirectInclude === void 0 ? void 0 : indirectInclude.path) !== null && _b !== void 0 ? _b : [],
|
|
119
|
-
}
|
|
120
|
-
: indirectInclude && { subFields: (_c = indirectInclude.path) !== null && _c !== void 0 ? _c : [], path: [] };
|
|
121
|
-
const firstSubFieldType = indirectMap &&
|
|
122
|
-
(indirectMap === null || indirectMap === void 0 ? void 0 : indirectMap.subFields.length) > 0 &&
|
|
123
|
-
((_d = indirectMap.subFields) === null || _d === void 0 ? void 0 : _d.length) > 0 &&
|
|
124
|
-
indirectMap.subFields[0].type;
|
|
125
|
-
const expectedType = firstSubFieldType ? info.schema.getType(firstSubFieldType) : type;
|
|
126
|
-
if (!(expectedType instanceof graphql_1.GraphQLObjectType)) {
|
|
127
|
-
throw new TypeError('Expected returnType to be an object type');
|
|
128
|
-
}
|
|
129
|
-
for (const selection of selectionSet.selections) {
|
|
130
|
-
switch (selection.kind) {
|
|
131
|
-
case 'Field':
|
|
132
|
-
if (!(type === expectedType)) {
|
|
133
|
-
continue;
|
|
134
|
-
}
|
|
135
|
-
handleField(ctx, info, type.getFields(), selection, includes, counts, mappings, indirectMap);
|
|
136
|
-
break;
|
|
137
|
-
case 'FragmentSpread':
|
|
138
|
-
if (!info.fragments[selection.name.value]) {
|
|
139
|
-
throw new Error(`Missing fragment ${selection.name.value}`);
|
|
140
|
-
}
|
|
141
|
-
if (info.fragments[selection.name.value].typeCondition.name.value !== expectedType.name) {
|
|
142
|
-
continue;
|
|
143
|
-
}
|
|
144
|
-
includesFromSelectionSet(ctx, expectedType, info, includes, counts, mappings, info.fragments[selection.name.value].selectionSet, indirectMap);
|
|
145
|
-
break;
|
|
146
|
-
case 'InlineFragment':
|
|
147
|
-
if (selection.typeCondition && selection.typeCondition.name.value !== expectedType.name) {
|
|
148
|
-
continue;
|
|
149
|
-
}
|
|
150
|
-
includesFromSelectionSet(ctx, selection.typeCondition ? expectedType : type, info, includes, counts, mappings, selection.selectionSet, indirectMap);
|
|
151
|
-
break;
|
|
152
|
-
default:
|
|
153
|
-
throw new Error(`Unexpected selection kind ${selection.kind}`);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
exports.includesFromSelectionSet = includesFromSelectionSet;
|
|
158
|
-
function queryFromInfo(ctx, info, typeName) {
|
|
159
|
-
var _a;
|
|
160
|
-
const { fieldNodes } = info;
|
|
161
|
-
const type = typeName ? info.schema.getTypeMap()[typeName] : (0, graphql_1.getNamedType)(info.returnType);
|
|
162
|
-
const includeType = (0, _1.resolveIndirectType)(type, info);
|
|
163
|
-
const includes = {
|
|
164
|
-
...(_a = includeType.extensions) === null || _a === void 0 ? void 0 : _a.pothosPrismaInclude,
|
|
165
|
-
};
|
|
166
|
-
const counts = {
|
|
167
|
-
parent: {},
|
|
168
|
-
current: {},
|
|
169
|
-
};
|
|
170
|
-
const mappings = {};
|
|
171
|
-
for (const node of fieldNodes) {
|
|
172
|
-
if (!node.selectionSet) {
|
|
173
|
-
continue;
|
|
174
|
-
}
|
|
175
|
-
includesFromSelectionSet(ctx, type, info, includes, counts, mappings, node.selectionSet);
|
|
176
|
-
}
|
|
177
|
-
if (Object.keys(counts.current).length > 0) {
|
|
178
|
-
includes._count = { select: counts.current };
|
|
179
|
-
}
|
|
180
|
-
if (Object.keys(includes).length > 0) {
|
|
181
|
-
if (mappings) {
|
|
182
|
-
(0, loader_map_1.setLoaderMappings)(ctx, info.path, mappings);
|
|
183
|
-
}
|
|
184
|
-
return { include: includes };
|
|
185
|
-
}
|
|
186
|
-
return {};
|
|
187
|
-
}
|
|
188
|
-
exports.queryFromInfo = queryFromInfo;
|
|
189
|
-
//# sourceMappingURL=map-includes.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"map-includes.js","sourceRoot":"","sources":["../../src/util/map-includes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export declare function deepEqual(left: unknown, right: unknown, ignore?: Set<string>): boolean;
|
|
2
|
-
export declare function mergeIncludes(existing: Record<string, unknown> | boolean, newQuery: Record<string, unknown> | boolean): Record<string, unknown> | boolean;
|
|
3
|
-
//# sourceMappingURL=merge-includes.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"merge-includes.d.ts","sourceRoot":"","sources":["../../src/util/merge-includes.ts"],"names":[],"mappings":"AACA,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,WAiD5E;AAID,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,EAC3C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,GAC1C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CA+DnC"}
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.mergeIncludes = exports.deepEqual = void 0;
|
|
4
|
-
/* eslint-disable no-continue */
|
|
5
|
-
function deepEqual(left, right, ignore) {
|
|
6
|
-
if (left === right) {
|
|
7
|
-
return true;
|
|
8
|
-
}
|
|
9
|
-
if (left && right && typeof left === 'object' && typeof right === 'object') {
|
|
10
|
-
if (Array.isArray(left)) {
|
|
11
|
-
if (!Array.isArray(right)) {
|
|
12
|
-
return false;
|
|
13
|
-
}
|
|
14
|
-
const { length } = left;
|
|
15
|
-
if (right.length !== length) {
|
|
16
|
-
return false;
|
|
17
|
-
}
|
|
18
|
-
for (let i = 0; i < length; i += 1) {
|
|
19
|
-
if (!deepEqual(left[i], right[i])) {
|
|
20
|
-
return false;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
return true;
|
|
24
|
-
}
|
|
25
|
-
const keys = Object.keys(left);
|
|
26
|
-
const keyLength = keys.length;
|
|
27
|
-
if (keyLength !== Object.keys(right).length) {
|
|
28
|
-
return false;
|
|
29
|
-
}
|
|
30
|
-
for (const key of keys) {
|
|
31
|
-
if (ignore === null || ignore === void 0 ? void 0 : ignore.has(key)) {
|
|
32
|
-
continue;
|
|
33
|
-
}
|
|
34
|
-
if (!deepEqual(left[key], right[key])) {
|
|
35
|
-
return false;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
return true;
|
|
39
|
-
}
|
|
40
|
-
return false;
|
|
41
|
-
}
|
|
42
|
-
exports.deepEqual = deepEqual;
|
|
43
|
-
const ignoreInclude = new Set(['include']);
|
|
44
|
-
function mergeIncludes(existing, newQuery) {
|
|
45
|
-
if (!deepEqual(existing, newQuery, ignoreInclude)) {
|
|
46
|
-
return false;
|
|
47
|
-
}
|
|
48
|
-
if (!existing) {
|
|
49
|
-
return newQuery;
|
|
50
|
-
}
|
|
51
|
-
if (newQuery === true) {
|
|
52
|
-
return existing;
|
|
53
|
-
}
|
|
54
|
-
if (existing === true) {
|
|
55
|
-
return newQuery || existing;
|
|
56
|
-
}
|
|
57
|
-
if (!newQuery) {
|
|
58
|
-
return existing;
|
|
59
|
-
}
|
|
60
|
-
if (!existing.include) {
|
|
61
|
-
return { ...existing, include: newQuery.include };
|
|
62
|
-
}
|
|
63
|
-
if (!newQuery.include) {
|
|
64
|
-
return existing;
|
|
65
|
-
}
|
|
66
|
-
const merged = {
|
|
67
|
-
...existing.include,
|
|
68
|
-
};
|
|
69
|
-
const newInclude = newQuery.include;
|
|
70
|
-
const keys = Object.keys(newQuery.include);
|
|
71
|
-
for (const key of keys) {
|
|
72
|
-
const current = merged[key];
|
|
73
|
-
const newVal = newInclude[key];
|
|
74
|
-
if (!current) {
|
|
75
|
-
merged[key] = newVal;
|
|
76
|
-
}
|
|
77
|
-
else if (typeof newVal === 'boolean') {
|
|
78
|
-
continue;
|
|
79
|
-
}
|
|
80
|
-
else if (merged[key] === true) {
|
|
81
|
-
if (newVal) {
|
|
82
|
-
merged[key] = newVal;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
else if (typeof current === 'object' && typeof newVal === 'object' && current && newVal) {
|
|
86
|
-
const mergedVal = mergeIncludes(current, newVal);
|
|
87
|
-
if (!mergedVal) {
|
|
88
|
-
return false;
|
|
89
|
-
}
|
|
90
|
-
merged[key] = mergedVal;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
return { ...existing, include: merged };
|
|
94
|
-
}
|
|
95
|
-
exports.mergeIncludes = mergeIncludes;
|
|
96
|
-
//# sourceMappingURL=merge-includes.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"merge-includes.js","sourceRoot":"","sources":["../../src/util/merge-includes.ts"],"names":[],"mappings":"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"}
|
package/src/util/index.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { GraphQLNamedType, GraphQLResolveInfo } from 'graphql';
|
|
2
|
-
|
|
3
|
-
export * from './map-includes';
|
|
4
|
-
export * from './merge-includes';
|
|
5
|
-
|
|
6
|
-
export function resolveIndirectType(
|
|
7
|
-
type: GraphQLNamedType,
|
|
8
|
-
info: GraphQLResolveInfo,
|
|
9
|
-
): GraphQLNamedType {
|
|
10
|
-
const indirectInclude = type.extensions?.pothosPrismaIndirectInclude as
|
|
11
|
-
| { getType: () => string }
|
|
12
|
-
| undefined;
|
|
13
|
-
|
|
14
|
-
if (indirectInclude) {
|
|
15
|
-
const includeTypeName = indirectInclude.getType();
|
|
16
|
-
const resolvedType = info.schema.getType(includeTypeName);
|
|
17
|
-
|
|
18
|
-
if (!resolvedType) {
|
|
19
|
-
throw new Error(`Could not find type ${includeTypeName}`);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
return resolveIndirectType(resolvedType, info);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
return type;
|
|
26
|
-
}
|
package/src/util/map-includes.ts
DELETED
|
@@ -1,328 +0,0 @@
|
|
|
1
|
-
/* eslint-disable no-underscore-dangle */
|
|
2
|
-
/* eslint-disable no-param-reassign */
|
|
3
|
-
/* eslint-disable no-continue */
|
|
4
|
-
import {
|
|
5
|
-
FieldNode,
|
|
6
|
-
getNamedType,
|
|
7
|
-
GraphQLFieldMap,
|
|
8
|
-
GraphQLNamedType,
|
|
9
|
-
GraphQLObjectType,
|
|
10
|
-
GraphQLResolveInfo,
|
|
11
|
-
SelectionSetNode,
|
|
12
|
-
} from 'graphql';
|
|
13
|
-
import { getArgumentValues } from 'graphql/execution/values';
|
|
14
|
-
import { setLoaderMappings } from '../loader-map';
|
|
15
|
-
import {
|
|
16
|
-
IncludeCounts,
|
|
17
|
-
IncludeMap,
|
|
18
|
-
IndirectLoadMap,
|
|
19
|
-
LoaderMappings,
|
|
20
|
-
SubFieldInclude,
|
|
21
|
-
} from '../types';
|
|
22
|
-
import { mergeIncludes, resolveIndirectType } from '.';
|
|
23
|
-
|
|
24
|
-
export const SELF_RELATION = '@self';
|
|
25
|
-
|
|
26
|
-
function handleField(
|
|
27
|
-
ctx: object,
|
|
28
|
-
info: GraphQLResolveInfo,
|
|
29
|
-
fields: GraphQLFieldMap<unknown, unknown>,
|
|
30
|
-
selection: FieldNode,
|
|
31
|
-
includes: IncludeMap,
|
|
32
|
-
counts: IncludeCounts,
|
|
33
|
-
mappings: LoaderMappings,
|
|
34
|
-
indirectMap?: IndirectLoadMap,
|
|
35
|
-
) {
|
|
36
|
-
if (selection.name.value.startsWith('__')) {
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
const field = fields[selection.name.value];
|
|
41
|
-
|
|
42
|
-
if (!field) {
|
|
43
|
-
throw new Error(`Unknown field ${selection.name.value}`);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const countName = field.extensions?.pothosPrismaRelationCount as string | undefined;
|
|
47
|
-
const parentCountName = field.extensions?.pothosPrismaRelationCountForParent as
|
|
48
|
-
| string
|
|
49
|
-
| undefined;
|
|
50
|
-
const relationName = field.extensions?.pothosPrismaRelation as string | undefined;
|
|
51
|
-
|
|
52
|
-
if (countName) {
|
|
53
|
-
counts.current[countName] = true;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
if (parentCountName) {
|
|
57
|
-
counts.parent[parentCountName] = true;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
if (indirectMap?.subFields.length) {
|
|
61
|
-
const subField = indirectMap.subFields[0];
|
|
62
|
-
|
|
63
|
-
if (field.name === subField.name && selection.selectionSet) {
|
|
64
|
-
const type = getNamedType(field.type);
|
|
65
|
-
|
|
66
|
-
if (!(type.name !== subField.type)) {
|
|
67
|
-
throw new TypeError(`Expected ${field.name} to be ${subField.type} but got ${type.name}`);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
includesFromSelectionSet(
|
|
71
|
-
ctx,
|
|
72
|
-
type,
|
|
73
|
-
info,
|
|
74
|
-
includes,
|
|
75
|
-
counts,
|
|
76
|
-
mappings,
|
|
77
|
-
selection.selectionSet,
|
|
78
|
-
indirectMap.subFields.length > 0
|
|
79
|
-
? {
|
|
80
|
-
subFields: indirectMap.subFields.slice(1),
|
|
81
|
-
path: [...indirectMap.path, selection.alias?.value ?? selection.name.value],
|
|
82
|
-
}
|
|
83
|
-
: undefined,
|
|
84
|
-
);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
if (!relationName) {
|
|
91
|
-
return;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
const type = getNamedType(field.type);
|
|
95
|
-
const includeType = resolveIndirectType(type, info);
|
|
96
|
-
|
|
97
|
-
const newIncludes: IncludeMap = {
|
|
98
|
-
...(includeType.extensions?.pothosPrismaInclude as IncludeMap),
|
|
99
|
-
};
|
|
100
|
-
|
|
101
|
-
let query = field.extensions?.pothosPrismaQuery ?? {};
|
|
102
|
-
|
|
103
|
-
if (typeof query === 'function') {
|
|
104
|
-
const args = getArgumentValues(field, selection, info.variableValues) as Record<
|
|
105
|
-
string,
|
|
106
|
-
unknown
|
|
107
|
-
>;
|
|
108
|
-
|
|
109
|
-
query = query(args, ctx);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
const existingInclude =
|
|
113
|
-
relationName === SELF_RELATION ? { include: includes } : includes[relationName];
|
|
114
|
-
|
|
115
|
-
query = { ...(query as {}), include: newIncludes };
|
|
116
|
-
|
|
117
|
-
if (typeof existingInclude === 'object') {
|
|
118
|
-
query = mergeIncludes(existingInclude, query as Record<string, unknown>);
|
|
119
|
-
|
|
120
|
-
if (!query) {
|
|
121
|
-
return;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
if (!mappings[relationName]) {
|
|
126
|
-
mappings[relationName] = [];
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
const nestedIncludes = (query as { include: IncludeMap }).include;
|
|
130
|
-
const nestedMappings: LoaderMappings = {};
|
|
131
|
-
const nestedCounts: IncludeCounts = {
|
|
132
|
-
current: {},
|
|
133
|
-
parent: counts.current,
|
|
134
|
-
};
|
|
135
|
-
|
|
136
|
-
if (relationName === SELF_RELATION) {
|
|
137
|
-
mappings[relationName].push({
|
|
138
|
-
field: selection.name.value,
|
|
139
|
-
alias: selection.alias?.value,
|
|
140
|
-
mappings: nestedMappings,
|
|
141
|
-
indirectPath: indirectMap?.path ?? [],
|
|
142
|
-
});
|
|
143
|
-
|
|
144
|
-
const { include } = query as { include: Record<string, IncludeMap> };
|
|
145
|
-
|
|
146
|
-
if (selection.selectionSet) {
|
|
147
|
-
includesFromSelectionSet(
|
|
148
|
-
ctx,
|
|
149
|
-
type,
|
|
150
|
-
info,
|
|
151
|
-
includes,
|
|
152
|
-
counts,
|
|
153
|
-
nestedMappings,
|
|
154
|
-
selection.selectionSet,
|
|
155
|
-
);
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
Object.keys(include).forEach((key) => {
|
|
159
|
-
includes[key] = include[key];
|
|
160
|
-
});
|
|
161
|
-
|
|
162
|
-
return;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
mappings[relationName].push({
|
|
166
|
-
field: selection.name.value,
|
|
167
|
-
alias: selection.alias?.value,
|
|
168
|
-
mappings: nestedMappings,
|
|
169
|
-
indirectPath: indirectMap?.path ?? [],
|
|
170
|
-
});
|
|
171
|
-
|
|
172
|
-
if (selection.selectionSet) {
|
|
173
|
-
includesFromSelectionSet(
|
|
174
|
-
ctx,
|
|
175
|
-
type,
|
|
176
|
-
info,
|
|
177
|
-
nestedIncludes,
|
|
178
|
-
nestedCounts,
|
|
179
|
-
nestedMappings,
|
|
180
|
-
selection.selectionSet,
|
|
181
|
-
);
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
if (Object.keys(nestedCounts.current).length > 0) {
|
|
185
|
-
nestedIncludes._count = { select: nestedCounts.current };
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
if (Object.keys(nestedIncludes).length === 0) {
|
|
189
|
-
delete (query as { include?: unknown }).include;
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
includes[relationName] =
|
|
193
|
-
Object.keys(query as {}).length > 0 ? (query as Record<string, unknown>) : true;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
export function includesFromSelectionSet(
|
|
197
|
-
ctx: object,
|
|
198
|
-
type: GraphQLNamedType,
|
|
199
|
-
info: GraphQLResolveInfo,
|
|
200
|
-
includes: IncludeMap,
|
|
201
|
-
counts: IncludeCounts,
|
|
202
|
-
mappings: LoaderMappings,
|
|
203
|
-
selectionSet: SelectionSetNode,
|
|
204
|
-
prevIndirectMap?: IndirectLoadMap,
|
|
205
|
-
) {
|
|
206
|
-
const indirectInclude = type.extensions?.pothosPrismaIndirectInclude as
|
|
207
|
-
| { path: SubFieldInclude[] }
|
|
208
|
-
| undefined;
|
|
209
|
-
|
|
210
|
-
const indirectMap = prevIndirectMap
|
|
211
|
-
? {
|
|
212
|
-
path: [...prevIndirectMap.path],
|
|
213
|
-
subFields:
|
|
214
|
-
prevIndirectMap.subFields.length > 0
|
|
215
|
-
? prevIndirectMap.subFields
|
|
216
|
-
: indirectInclude?.path ?? [],
|
|
217
|
-
}
|
|
218
|
-
: indirectInclude && { subFields: indirectInclude.path ?? [], path: [] };
|
|
219
|
-
|
|
220
|
-
const firstSubFieldType =
|
|
221
|
-
indirectMap &&
|
|
222
|
-
indirectMap?.subFields.length > 0 &&
|
|
223
|
-
indirectMap.subFields?.length > 0 &&
|
|
224
|
-
indirectMap.subFields[0].type;
|
|
225
|
-
|
|
226
|
-
const expectedType = firstSubFieldType ? info.schema.getType(firstSubFieldType) : type;
|
|
227
|
-
|
|
228
|
-
if (!(expectedType instanceof GraphQLObjectType)) {
|
|
229
|
-
throw new TypeError('Expected returnType to be an object type');
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
for (const selection of selectionSet.selections) {
|
|
233
|
-
switch (selection.kind) {
|
|
234
|
-
case 'Field':
|
|
235
|
-
if (!(type === expectedType)) {
|
|
236
|
-
continue;
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
handleField(
|
|
240
|
-
ctx,
|
|
241
|
-
info,
|
|
242
|
-
type.getFields(),
|
|
243
|
-
selection,
|
|
244
|
-
includes,
|
|
245
|
-
counts,
|
|
246
|
-
mappings,
|
|
247
|
-
indirectMap,
|
|
248
|
-
);
|
|
249
|
-
break;
|
|
250
|
-
case 'FragmentSpread':
|
|
251
|
-
if (!info.fragments[selection.name.value]) {
|
|
252
|
-
throw new Error(`Missing fragment ${selection.name.value}`);
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
if (info.fragments[selection.name.value].typeCondition.name.value !== expectedType.name) {
|
|
256
|
-
continue;
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
includesFromSelectionSet(
|
|
260
|
-
ctx,
|
|
261
|
-
expectedType,
|
|
262
|
-
info,
|
|
263
|
-
includes,
|
|
264
|
-
counts,
|
|
265
|
-
mappings,
|
|
266
|
-
info.fragments[selection.name.value].selectionSet,
|
|
267
|
-
indirectMap,
|
|
268
|
-
);
|
|
269
|
-
break;
|
|
270
|
-
case 'InlineFragment':
|
|
271
|
-
if (selection.typeCondition && selection.typeCondition.name.value !== expectedType.name) {
|
|
272
|
-
continue;
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
includesFromSelectionSet(
|
|
276
|
-
ctx,
|
|
277
|
-
selection.typeCondition ? expectedType : type,
|
|
278
|
-
info,
|
|
279
|
-
includes,
|
|
280
|
-
counts,
|
|
281
|
-
mappings,
|
|
282
|
-
selection.selectionSet,
|
|
283
|
-
indirectMap,
|
|
284
|
-
);
|
|
285
|
-
break;
|
|
286
|
-
default:
|
|
287
|
-
throw new Error(`Unexpected selection kind ${(selection as { kind: string }).kind}`);
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
export function queryFromInfo(ctx: object, info: GraphQLResolveInfo, typeName?: string): {} {
|
|
293
|
-
const { fieldNodes } = info;
|
|
294
|
-
const type = typeName ? info.schema.getTypeMap()[typeName] : getNamedType(info.returnType);
|
|
295
|
-
const includeType = resolveIndirectType(type, info);
|
|
296
|
-
|
|
297
|
-
const includes: IncludeMap = {
|
|
298
|
-
...(includeType.extensions?.pothosPrismaInclude as IncludeMap),
|
|
299
|
-
};
|
|
300
|
-
|
|
301
|
-
const counts = {
|
|
302
|
-
parent: {},
|
|
303
|
-
current: {},
|
|
304
|
-
};
|
|
305
|
-
|
|
306
|
-
const mappings: LoaderMappings = {};
|
|
307
|
-
for (const node of fieldNodes) {
|
|
308
|
-
if (!node.selectionSet) {
|
|
309
|
-
continue;
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
includesFromSelectionSet(ctx, type, info, includes, counts, mappings, node.selectionSet);
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
if (Object.keys(counts.current).length > 0) {
|
|
316
|
-
includes._count = { select: counts.current };
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
if (Object.keys(includes).length > 0) {
|
|
320
|
-
if (mappings) {
|
|
321
|
-
setLoaderMappings(ctx, info.path, mappings);
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
return { include: includes };
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
return {};
|
|
328
|
-
}
|