@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
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { ObjectRef, SchemaTypes } from '@pothos/core';
|
|
2
|
-
import { Prisma } from '
|
|
3
|
-
import { PrismaObjectRef } from '
|
|
4
|
-
import { PrismaDelegate } from '
|
|
5
|
-
import { PrismaModelTypes } from '.';
|
|
2
|
+
import { Prisma } from '../../tests/client';
|
|
3
|
+
import { PrismaObjectRef } from '../object-ref';
|
|
4
|
+
import { PrismaDelegate, PrismaModelTypes } from '../types';
|
|
6
5
|
export declare const refMap: WeakMap<object, Map<string, PrismaObjectRef<PrismaModelTypes, {}>>>;
|
|
7
6
|
export declare const findUniqueMap: WeakMap<object, Map<ObjectRef<unknown, unknown>, ((args: unknown, ctx: {}) => unknown) | null>>;
|
|
8
7
|
export declare const includeForRefMap: WeakMap<object, Map<ObjectRef<unknown, unknown>, Record<string, unknown> | null>>;
|
|
9
8
|
export declare function getRefFromModel<Types extends SchemaTypes>(name: string, builder: PothosSchemaTypes.SchemaBuilder<Types>): PrismaObjectRef<PrismaModelTypes>;
|
|
10
|
-
export declare function getFindUniqueForRef<Types extends SchemaTypes>(ref: ObjectRef<unknown>, builder: PothosSchemaTypes.SchemaBuilder<Types>): ((args: unknown, context: Types['Context']) => unknown) | null;
|
|
11
|
-
export declare function setFindUniqueForRef<Types extends SchemaTypes>(ref: ObjectRef<unknown>, builder: PothosSchemaTypes.SchemaBuilder<Types>, findUnique: ((args: any, context: Types['Context']) => unknown) | null): void;
|
|
12
9
|
export declare function getRelation<Types extends SchemaTypes>(name: string, builder: PothosSchemaTypes.SchemaBuilder<Types>, relation: string): Prisma.DMMF.Field;
|
|
13
|
-
export declare function
|
|
10
|
+
export declare function getModel<Types extends SchemaTypes>(name: string, builder: PothosSchemaTypes.SchemaBuilder<Types>): Prisma.DMMF.Model;
|
|
11
|
+
export declare function getCursorFormatter<Types extends SchemaTypes>(name: string, builder: PothosSchemaTypes.SchemaBuilder<Types>, cursor: string): (value: Record<string, unknown>) => string;
|
|
12
|
+
export declare function getCursorParser<Types extends SchemaTypes>(name: string, builder: PothosSchemaTypes.SchemaBuilder<Types>, cursor: string): (rawCursor: string) => {
|
|
13
|
+
[x: string]: unknown;
|
|
14
|
+
};
|
|
14
15
|
export declare function getDelegateFromModel(client: Record<string, unknown>, model: string): PrismaDelegate;
|
|
15
|
-
//# sourceMappingURL=
|
|
16
|
+
//# sourceMappingURL=datamodel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datamodel.d.ts","sourceRoot":"","sources":["../../src/util/datamodel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAG5D,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,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,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,kBAUlF"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getDelegateFromModel = exports.
|
|
4
|
-
const object_ref_1 = require("
|
|
3
|
+
exports.getDelegateFromModel = exports.getCursorParser = exports.getCursorFormatter = exports.getModel = exports.getRelation = exports.getRefFromModel = exports.includeForRefMap = exports.findUniqueMap = exports.refMap = void 0;
|
|
4
|
+
const object_ref_1 = require("../object-ref");
|
|
5
|
+
const cursors_1 = require("./cursors");
|
|
5
6
|
exports.refMap = new WeakMap();
|
|
6
7
|
exports.findUniqueMap = new WeakMap();
|
|
7
8
|
exports.includeForRefMap = new WeakMap();
|
|
@@ -16,28 +17,19 @@ function getRefFromModel(name, builder) {
|
|
|
16
17
|
return cache.get(name);
|
|
17
18
|
}
|
|
18
19
|
exports.getRefFromModel = getRefFromModel;
|
|
19
|
-
function
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
if (!cache.has(ref)) {
|
|
25
|
-
return null;
|
|
20
|
+
function getRelation(name, builder, relation) {
|
|
21
|
+
const modelData = getModel(name, builder);
|
|
22
|
+
const fieldData = modelData.fields.find((field) => field.name === relation);
|
|
23
|
+
if (!fieldData) {
|
|
24
|
+
throw new Error(`Field '${relation}' not found in model '${name}'`);
|
|
26
25
|
}
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
exports.getFindUniqueForRef = getFindUniqueForRef;
|
|
30
|
-
function setFindUniqueForRef(ref, builder,
|
|
31
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
32
|
-
findUnique) {
|
|
33
|
-
if (!exports.findUniqueMap.has(builder)) {
|
|
34
|
-
exports.findUniqueMap.set(builder, new Map());
|
|
26
|
+
if (fieldData.kind !== 'object') {
|
|
27
|
+
throw new Error(`Field ${relation} of model '${name}' is not a relation (${fieldData.kind})`);
|
|
35
28
|
}
|
|
36
|
-
|
|
37
|
-
cache.set(ref, findUnique);
|
|
29
|
+
return fieldData;
|
|
38
30
|
}
|
|
39
|
-
exports.
|
|
40
|
-
function
|
|
31
|
+
exports.getRelation = getRelation;
|
|
32
|
+
function getModel(name, builder) {
|
|
41
33
|
const { client } = builder.options.prisma;
|
|
42
34
|
// eslint-disable-next-line no-underscore-dangle
|
|
43
35
|
const dmmf = client
|
|
@@ -46,21 +38,26 @@ function getRelation(name, builder, relation) {
|
|
|
46
38
|
if (!modelData) {
|
|
47
39
|
throw new Error(`Model '${name}' not found in DMMF`);
|
|
48
40
|
}
|
|
49
|
-
|
|
50
|
-
if (!fieldData) {
|
|
51
|
-
throw new Error(`Field '${relation}' not found in model '${name}'`);
|
|
52
|
-
}
|
|
53
|
-
if (fieldData.kind !== 'object') {
|
|
54
|
-
throw new Error(`Field ${relation} of model '${name}' is not a relation (${fieldData.kind})`);
|
|
55
|
-
}
|
|
56
|
-
return fieldData;
|
|
41
|
+
return modelData;
|
|
57
42
|
}
|
|
58
|
-
exports.
|
|
59
|
-
function
|
|
60
|
-
|
|
61
|
-
|
|
43
|
+
exports.getModel = getModel;
|
|
44
|
+
function getCursorFormatter(name, builder, cursor) {
|
|
45
|
+
var _a, _b, _c;
|
|
46
|
+
const modelData = getModel(name, builder);
|
|
47
|
+
const primaryKey = (_b = (_a = modelData.primaryKey) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : (_c = modelData.primaryKey) === null || _c === void 0 ? void 0 : _c.fields.join('_');
|
|
48
|
+
return (0, cursors_1.formatCursor)(cursor === primaryKey ? modelData.primaryKey.fields : cursor);
|
|
49
|
+
}
|
|
50
|
+
exports.getCursorFormatter = getCursorFormatter;
|
|
51
|
+
function getCursorParser(name, builder, cursor) {
|
|
52
|
+
var _a, _b, _c;
|
|
53
|
+
const modelData = getModel(name, builder);
|
|
54
|
+
const primaryKey = (_b = (_a = modelData.primaryKey) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : (_c = modelData.primaryKey) === null || _c === void 0 ? void 0 : _c.fields.join('_');
|
|
55
|
+
const parser = cursor === primaryKey ? (0, cursors_1.parseCompositeCursor)(modelData.primaryKey.fields) : cursors_1.parseRawCursor;
|
|
56
|
+
return (rawCursor) => ({
|
|
57
|
+
[cursor]: parser(rawCursor),
|
|
58
|
+
});
|
|
62
59
|
}
|
|
63
|
-
exports.
|
|
60
|
+
exports.getCursorParser = getCursorParser;
|
|
64
61
|
function getDelegateFromModel(client, model) {
|
|
65
62
|
const lowerCase = `${model.slice(0, 1).toLowerCase()}${model.slice(1)}`;
|
|
66
63
|
const delegate = lowerCase in client ? client[lowerCase] : null;
|
|
@@ -70,4 +67,4 @@ function getDelegateFromModel(client, model) {
|
|
|
70
67
|
return delegate;
|
|
71
68
|
}
|
|
72
69
|
exports.getDelegateFromModel = getDelegateFromModel;
|
|
73
|
-
//# sourceMappingURL=
|
|
70
|
+
//# sourceMappingURL=datamodel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datamodel.js","sourceRoot":"","sources":["../../src/util/datamodel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deep-equal.d.ts","sourceRoot":"","sources":["../../src/util/deep-equal.ts"],"names":[],"mappings":"AACA,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,WAiD5E"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
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
|
+
//# sourceMappingURL=deep-equal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deep-equal.js","sourceRoot":"","sources":["../../src/util/deep-equal.ts"],"names":[],"mappings":";;;AAAA,gCAAgC;AAChC,SAAgB,SAAS,CAAC,IAAa,EAAE,KAAc,EAAE,MAAoB;IAC3E,IAAI,IAAI,KAAK,KAAK,EAAE;QAClB,OAAO,IAAI,CAAC;KACb;IAED,IAAI,IAAI,IAAI,KAAK,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC1E,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACzB,OAAO,KAAK,CAAC;aACd;YAED,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;YAExB,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE;gBAC3B,OAAO,KAAK,CAAC;aACd;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;gBAClC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;oBACjC,OAAO,KAAK,CAAC;iBACd;aACF;YAED,OAAO,IAAI,CAAC;SACb;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;QAE9B,IAAI,SAAS,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE;YAC3C,OAAO,KAAK,CAAC;SACd;QAED,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,GAAG,CAAC,GAAG,CAAC,EAAE;gBACpB,SAAS;aACV;YAED,IACE,CAAC,SAAS,CAAE,IAAgC,CAAC,GAAG,CAAC,EAAG,KAAiC,CAAC,GAAG,CAAC,CAAC,EAC3F;gBACA,OAAO,KAAK,CAAC;aACd;SACF;QAED,OAAO,IAAI,CAAC;KACb;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAjDD,8BAiDC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { GraphQLNamedType, GraphQLResolveInfo } from 'graphql';
|
|
2
|
+
import { LoaderMappings } from '../types';
|
|
3
|
+
export declare function cacheKey(type: string, path: GraphQLResolveInfo['path'], subPath: string[]): string;
|
|
4
|
+
export declare function setLoaderMappings(ctx: object, info: GraphQLResolveInfo, value: LoaderMappings, type: GraphQLNamedType): void;
|
|
5
|
+
export declare function getLoaderMapping(ctx: object, path: GraphQLResolveInfo['path'], type: string): LoaderMappings | null;
|
|
6
|
+
//# sourceMappingURL=loader-map.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader-map.d.ts","sourceRoot":"","sources":["../../src/util/loader-map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE/D,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAK1C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,UAgBzF;AAED,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,kBAAkB,EACxB,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,gBAAgB,QAWvB;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,yBAK3F"}
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getLoaderMapping = exports.setLoaderMappings = exports.cacheKey = void 0;
|
|
4
4
|
const core_1 = require("@pothos/core");
|
|
5
|
+
const map_query_1 = require("./map-query");
|
|
5
6
|
const cache = (0, core_1.createContextCache)((ctx) => new Map());
|
|
6
|
-
function cacheKey(path, subPath) {
|
|
7
|
+
function cacheKey(type, path, subPath) {
|
|
7
8
|
let key = '';
|
|
8
9
|
let current = path;
|
|
9
10
|
while (current) {
|
|
@@ -15,26 +16,23 @@ function cacheKey(path, subPath) {
|
|
|
15
16
|
for (const entry of subPath) {
|
|
16
17
|
key = `${key}.${entry}`;
|
|
17
18
|
}
|
|
18
|
-
return key
|
|
19
|
+
return `${type}@${key}`;
|
|
19
20
|
}
|
|
20
21
|
exports.cacheKey = cacheKey;
|
|
21
|
-
function setLoaderMappings(ctx,
|
|
22
|
+
function setLoaderMappings(ctx, info, value, type) {
|
|
22
23
|
Object.keys(value).forEach((field) => {
|
|
23
|
-
var _a;
|
|
24
24
|
const map = cache(ctx);
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
map.set(key, mapping.mappings);
|
|
30
|
-
}
|
|
25
|
+
const mapping = value[field];
|
|
26
|
+
const subPath = [...mapping.indirectPath, field];
|
|
27
|
+
const key = cacheKey((0, map_query_1.getIndirectType)(type, info).name, info.path, subPath);
|
|
28
|
+
map.set(key, mapping.mappings);
|
|
31
29
|
});
|
|
32
30
|
}
|
|
33
31
|
exports.setLoaderMappings = setLoaderMappings;
|
|
34
|
-
function getLoaderMapping(ctx, path) {
|
|
32
|
+
function getLoaderMapping(ctx, path, type) {
|
|
35
33
|
var _a;
|
|
36
34
|
const map = cache(ctx);
|
|
37
|
-
const key = cacheKey(path, []);
|
|
35
|
+
const key = cacheKey(type, path, []);
|
|
38
36
|
return (_a = map.get(key)) !== null && _a !== void 0 ? _a : null;
|
|
39
37
|
}
|
|
40
38
|
exports.getLoaderMapping = getLoaderMapping;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader-map.js","sourceRoot":"","sources":["../../src/util/loader-map.ts"],"names":[],"mappings":";;;AACA,uCAAkD;AAElD,2CAA8C;AAE9C,MAAM,KAAK,GAAG,IAAA,yBAAkB,EAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,EAA0B,CAAC,CAAC;AAE7E,SAAgB,QAAQ,CAAC,IAAY,EAAE,IAAgC,EAAE,OAAiB;IACxF,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,IAAI,IAAI,GAAG,EAAE,CAAC;AAC1B,CAAC;AAhBD,4BAgBC;AAED,SAAgB,iBAAiB,CAC/B,GAAW,EACX,IAAwB,EACxB,KAAqB,EACrB,IAAsB;IAEtB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACnC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QAEvB,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7B,MAAM,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAA,2BAAe,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAE3E,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC;AAfD,8CAeC;AAED,SAAgB,gBAAgB,CAAC,GAAW,EAAE,IAAgC,EAAE,IAAY;;IAC1F,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IAErC,OAAO,MAAA,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,mCAAI,IAAI,CAAC;AAC9B,CAAC;AALD,4CAKC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { GraphQLNamedType, GraphQLResolveInfo } from 'graphql';
|
|
2
|
+
import { SelectionState } from './selections';
|
|
3
|
+
export declare function queryFromInfo(context: object, info: GraphQLResolveInfo, typeName?: string): {};
|
|
4
|
+
export declare function selectionStateFromInfo(context: object, info: GraphQLResolveInfo, typeName?: string): SelectionState;
|
|
5
|
+
export declare function getIndirectType(type: GraphQLNamedType, info: GraphQLResolveInfo): GraphQLNamedType;
|
|
6
|
+
//# sourceMappingURL=map-query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map-query.d.ts","sourceRoot":"","sources":["../../src/util/map-query.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,gBAAgB,EAEhB,kBAAkB,EAKnB,MAAM,SAAS,CAAC;AAIjB,OAAO,EAIL,cAAc,EAEf,MAAM,cAAc,CAAC;AAwPtB,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,EAAE,CAS9F;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,kBAAkB,EACxB,QAAQ,CAAC,EAAE,MAAM,kBAalB;AAkBD,wBAAgB,eAAe,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,kBAAkB,oBAU/E"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getIndirectType = exports.selectionStateFromInfo = exports.queryFromInfo = void 0;
|
|
4
|
+
/* eslint-disable no-param-reassign */
|
|
5
|
+
/* eslint-disable no-continue */
|
|
6
|
+
const graphql_1 = require("graphql");
|
|
7
|
+
const values_1 = require("graphql/execution/values");
|
|
8
|
+
const loader_map_1 = require("./loader-map");
|
|
9
|
+
const selections_1 = require("./selections");
|
|
10
|
+
function addTypeSelectionsForField(type, context, info, state, selection, indirectPath) {
|
|
11
|
+
var _a;
|
|
12
|
+
if (selection.name.value.startsWith('__')) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
const { pothosPrismaInclude, pothosPrismaSelect, pothosPrismaIndirectInclude, pothosPrismaModel, } = ((_a = type.extensions) !== null && _a !== void 0 ? _a : {});
|
|
16
|
+
if (pothosPrismaIndirectInclude) {
|
|
17
|
+
resolveIndirectInclude(type, info, selection, pothosPrismaIndirectInclude.path, indirectPath, (resolvedType, field, path) => {
|
|
18
|
+
addTypeSelectionsForField(resolvedType, context, info, state, field, path);
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
if (!(0, graphql_1.isObjectType)(type)) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
if (pothosPrismaModel && !pothosPrismaSelect) {
|
|
25
|
+
state.mode = 'include';
|
|
26
|
+
}
|
|
27
|
+
if (pothosPrismaInclude || pothosPrismaSelect) {
|
|
28
|
+
(0, selections_1.mergeSelection)(state, {
|
|
29
|
+
select: pothosPrismaSelect ? { ...pothosPrismaSelect } : undefined,
|
|
30
|
+
include: pothosPrismaInclude ? { ...pothosPrismaInclude } : undefined,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
if (selection.selectionSet) {
|
|
34
|
+
addNestedSelections(type, context, info, state, selection.selectionSet, indirectPath);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function resolveIndirectInclude(type, info, selection, includePath, path, resolve) {
|
|
38
|
+
var _a, _b, _c, _d;
|
|
39
|
+
const [include, ...rest] = includePath;
|
|
40
|
+
if (!selection.selectionSet || !include) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
for (const sel of selection.selectionSet.selections) {
|
|
44
|
+
switch (sel.kind) {
|
|
45
|
+
case graphql_1.Kind.FIELD:
|
|
46
|
+
if (sel.name.value === include.name && (0, graphql_1.isObjectType)(type)) {
|
|
47
|
+
const returnType = (0, graphql_1.getNamedType)(type.getFields()[sel.name.value].type);
|
|
48
|
+
if (rest.length === 0) {
|
|
49
|
+
resolve(returnType, sel, [...path, (_b = (_a = sel.alias) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : sel.name.value]);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
resolveIndirectInclude(returnType, info, sel, rest, [...path, (_d = (_c = sel.alias) === null || _c === void 0 ? void 0 : _c.value) !== null && _d !== void 0 ? _d : sel.name.value], resolve);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
continue;
|
|
56
|
+
case graphql_1.Kind.FRAGMENT_SPREAD:
|
|
57
|
+
if (info.fragments[sel.name.value].typeCondition.name.value === include.type) {
|
|
58
|
+
resolveIndirectInclude(info.schema.getType(include.type), info, info.fragments[sel.name.value], includePath, path, resolve);
|
|
59
|
+
}
|
|
60
|
+
continue;
|
|
61
|
+
case graphql_1.Kind.INLINE_FRAGMENT:
|
|
62
|
+
if (!sel.typeCondition || sel.typeCondition.name.value === include.type) {
|
|
63
|
+
resolveIndirectInclude(sel.typeCondition ? info.schema.getType(sel.typeCondition.name.value) : type, info, sel, includePath, path, resolve);
|
|
64
|
+
}
|
|
65
|
+
continue;
|
|
66
|
+
default:
|
|
67
|
+
throw new Error(`Unsupported selection kind ${selection.kind}`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
function addNestedSelections(type, context, info, state, selections, indirectPath) {
|
|
72
|
+
for (const selection of selections.selections) {
|
|
73
|
+
switch (selection.kind) {
|
|
74
|
+
case graphql_1.Kind.FIELD:
|
|
75
|
+
addFieldSelection(type, context, info, state, selection, indirectPath);
|
|
76
|
+
continue;
|
|
77
|
+
case graphql_1.Kind.FRAGMENT_SPREAD:
|
|
78
|
+
if (info.fragments[selection.name.value].typeCondition.name.value !== type.name) {
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
addNestedSelections(type, context, info, state, info.fragments[selection.name.value].selectionSet, indirectPath);
|
|
82
|
+
continue;
|
|
83
|
+
case graphql_1.Kind.INLINE_FRAGMENT:
|
|
84
|
+
if (selection.typeCondition && selection.typeCondition.name.value !== type.name) {
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
addNestedSelections(type, context, info, state, selection.selectionSet, indirectPath);
|
|
88
|
+
continue;
|
|
89
|
+
default:
|
|
90
|
+
throw new Error(`Unsupported selection kind ${selection.kind}`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
function addFieldSelection(type, context, info, state, selection, indirectPath) {
|
|
95
|
+
var _a, _b, _c, _d, _e, _f;
|
|
96
|
+
if (selection.name.value.startsWith('__')) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const field = type.getFields()[selection.name.value];
|
|
100
|
+
if (!field) {
|
|
101
|
+
throw new Error(`Unknown field ${selection.name.value} on ${type.name}`);
|
|
102
|
+
}
|
|
103
|
+
const fieldSelect = (_a = field.extensions) === null || _a === void 0 ? void 0 : _a.pothosPrismaSelect;
|
|
104
|
+
let fieldSelectionMap;
|
|
105
|
+
const fieldParentSelect = (_b = field.extensions) === null || _b === void 0 ? void 0 : _b.pothosPrismaParentSelect;
|
|
106
|
+
let mappings = {};
|
|
107
|
+
if (typeof fieldSelect === 'function') {
|
|
108
|
+
const args = (0, values_1.getArgumentValues)(field, selection, info.variableValues);
|
|
109
|
+
fieldSelectionMap = fieldSelect(args, context, (rawQuery) => {
|
|
110
|
+
const returnType = (0, graphql_1.getNamedType)(field.type);
|
|
111
|
+
const query = typeof rawQuery === 'function' ? rawQuery(args, context) : rawQuery;
|
|
112
|
+
const fieldState = createStateForType(returnType, info, state);
|
|
113
|
+
if (typeof query === 'object' && Object.keys(query).length > 0) {
|
|
114
|
+
(0, selections_1.mergeSelection)(fieldState, { select: {}, ...query });
|
|
115
|
+
}
|
|
116
|
+
addTypeSelectionsForField(returnType, context, info, fieldState, selection, []);
|
|
117
|
+
// eslint-disable-next-line prefer-destructuring
|
|
118
|
+
mappings = fieldState.mappings;
|
|
119
|
+
return (0, selections_1.selectionToQuery)(fieldState);
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
fieldSelectionMap = { select: fieldSelect };
|
|
124
|
+
}
|
|
125
|
+
if (fieldSelect && (0, selections_1.selectionCompatible)(state, fieldSelectionMap, true)) {
|
|
126
|
+
(0, selections_1.mergeSelection)(state, fieldSelectionMap);
|
|
127
|
+
state.mappings[(_d = (_c = selection.alias) === null || _c === void 0 ? void 0 : _c.value) !== null && _d !== void 0 ? _d : selection.name.value] = {
|
|
128
|
+
field: selection.name.value,
|
|
129
|
+
mappings,
|
|
130
|
+
indirectPath,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
else if (fieldParentSelect &&
|
|
134
|
+
state.parent &&
|
|
135
|
+
(0, selections_1.selectionCompatible)(state.parent, { select: fieldParentSelect }, true)) {
|
|
136
|
+
(0, selections_1.mergeSelection)(state.parent, { select: fieldParentSelect });
|
|
137
|
+
state.mappings[(_f = (_e = selection.alias) === null || _e === void 0 ? void 0 : _e.value) !== null && _f !== void 0 ? _f : selection.name.value] = {
|
|
138
|
+
field: selection.name.value,
|
|
139
|
+
mappings,
|
|
140
|
+
indirectPath,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
function queryFromInfo(context, info, typeName) {
|
|
145
|
+
const type = typeName ? info.schema.getTypeMap()[typeName] : (0, graphql_1.getNamedType)(info.returnType);
|
|
146
|
+
const state = createStateForType(type, info);
|
|
147
|
+
addTypeSelectionsForField(type, context, info, state, info.fieldNodes[0], []);
|
|
148
|
+
(0, loader_map_1.setLoaderMappings)(context, info, state.mappings, type);
|
|
149
|
+
return (0, selections_1.selectionToQuery)(state);
|
|
150
|
+
}
|
|
151
|
+
exports.queryFromInfo = queryFromInfo;
|
|
152
|
+
function selectionStateFromInfo(context, info, typeName) {
|
|
153
|
+
const type = typeName ? info.schema.getTypeMap()[typeName] : info.parentType;
|
|
154
|
+
const state = createStateForType(type, info);
|
|
155
|
+
if (!(0, graphql_1.isObjectType)(type)) {
|
|
156
|
+
throw new Error('Prisma plugin can only resolve includes for object types');
|
|
157
|
+
}
|
|
158
|
+
addFieldSelection(type, context, info, state, info.fieldNodes[0], []);
|
|
159
|
+
return state;
|
|
160
|
+
}
|
|
161
|
+
exports.selectionStateFromInfo = selectionStateFromInfo;
|
|
162
|
+
function createStateForType(type, info, parent) {
|
|
163
|
+
const targetType = getIndirectType(type, info);
|
|
164
|
+
const fieldMap = targetType.extensions.pothosPrismaFieldMap;
|
|
165
|
+
return (0, selections_1.createState)(fieldMap, targetType.extensions.pothosPrismaSelect ? 'select' : 'include', parent);
|
|
166
|
+
}
|
|
167
|
+
function getIndirectType(type, info) {
|
|
168
|
+
let targetType = type;
|
|
169
|
+
while (targetType.extensions.pothosPrismaIndirectInclude) {
|
|
170
|
+
targetType = info.schema.getType(targetType.extensions.pothosPrismaIndirectInclude.getType());
|
|
171
|
+
}
|
|
172
|
+
return targetType;
|
|
173
|
+
}
|
|
174
|
+
exports.getIndirectType = getIndirectType;
|
|
175
|
+
//# sourceMappingURL=map-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map-query.js","sourceRoot":"","sources":["../../src/util/map-query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { DMMF } from '@prisma/generator-helper';
|
|
2
|
+
export interface FieldMap {
|
|
3
|
+
model: string;
|
|
4
|
+
relations: Map<string, FieldMap>;
|
|
5
|
+
}
|
|
6
|
+
export declare type RelationMap = Map<string, FieldMap>;
|
|
7
|
+
export declare const getRelationMap: import("@pothos/core").ContextCache<RelationMap, object, []>;
|
|
8
|
+
export declare function createRelationMap({ models }: DMMF.Datamodel): RelationMap;
|
|
9
|
+
//# sourceMappingURL=relation-map.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relation-map.d.ts","sourceRoot":"","sources":["../../src/util/relation-map.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAEhD,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CAClC;AAED,oBAAY,WAAW,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAEhD,eAAO,MAAM,cAAc,8DAK1B,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,SAAS,eAkB3D"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createRelationMap = exports.getRelationMap = void 0;
|
|
4
|
+
const core_1 = require("@pothos/core");
|
|
5
|
+
exports.getRelationMap = (0, core_1.createContextCache)((client) => createRelationMap(
|
|
6
|
+
// eslint-disable-next-line no-underscore-dangle
|
|
7
|
+
client._dmmf.datamodel));
|
|
8
|
+
function createRelationMap({ models }) {
|
|
9
|
+
const relationMap = new Map();
|
|
10
|
+
models.forEach((model) => {
|
|
11
|
+
relationMap.set(model.name, { model: model.name, relations: new Map() });
|
|
12
|
+
});
|
|
13
|
+
models.forEach((model) => {
|
|
14
|
+
const map = relationMap.get(model.name).relations;
|
|
15
|
+
model.fields.forEach((field) => {
|
|
16
|
+
if (field.kind === 'object' && relationMap.has(field.type)) {
|
|
17
|
+
map.set(field.name, relationMap.get(field.type));
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
return relationMap;
|
|
22
|
+
}
|
|
23
|
+
exports.createRelationMap = createRelationMap;
|
|
24
|
+
//# sourceMappingURL=relation-map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relation-map.js","sourceRoot":"","sources":["../../src/util/relation-map.ts"],"names":[],"mappings":";;;AAAA,uCAAkD;AAUrC,QAAA,cAAc,GAAG,IAAA,yBAAkB,EAAC,CAAC,MAAc,EAAE,EAAE,CAClE,iBAAiB;AACf,gDAAgD;AAC/C,MAA8D,CAAC,KAAK,CAAC,SAAS,CAChF,CACF,CAAC;AAEF,SAAgB,iBAAiB,CAAC,EAAE,MAAM,EAAkB;IAC1D,MAAM,WAAW,GAAgB,IAAI,GAAG,EAAE,CAAC;IAE3C,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC,SAAS,CAAC;QAEnD,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC7B,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;gBAC1D,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC,CAAC;aACnD;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC;AACrB,CAAC;AAlBD,8CAkBC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { FieldMap } from './relation-map';
|
|
2
|
+
import { LoaderMappings, SelectionMap } from '..';
|
|
3
|
+
export declare type SelectionMode = 'select' | 'include';
|
|
4
|
+
export interface SelectionState {
|
|
5
|
+
fieldMap: FieldMap;
|
|
6
|
+
query: object;
|
|
7
|
+
mode: SelectionMode;
|
|
8
|
+
fields: Set<string>;
|
|
9
|
+
counts: Set<string>;
|
|
10
|
+
relations: Map<string, SelectionState>;
|
|
11
|
+
mappings: LoaderMappings;
|
|
12
|
+
parent?: SelectionState;
|
|
13
|
+
}
|
|
14
|
+
export declare function selectionCompatible(state: SelectionState, selectionMap: SelectionMap | boolean, ignoreQuery?: boolean): boolean;
|
|
15
|
+
export declare function stateCompatible(state: SelectionState, newState: SelectionState, ignoreQuery?: boolean): boolean;
|
|
16
|
+
export declare function mergeState(state: SelectionState, newState: SelectionState): void;
|
|
17
|
+
export declare function createState(fieldMap: FieldMap, mode: SelectionMode, parent?: SelectionState): SelectionState;
|
|
18
|
+
export declare function mergeSelection(state: SelectionState, { select, include, ...query }: SelectionMap): void;
|
|
19
|
+
export declare function selectionToQuery(state: SelectionState): SelectionMap;
|
|
20
|
+
//# sourceMappingURL=selections.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selections.d.ts","sourceRoot":"","sources":["../../src/util/selections.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAElD,oBAAY,aAAa,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEjD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACpB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACpB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACvC,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,cAAc,EACrB,YAAY,EAAE,YAAY,GAAG,OAAO,EACpC,WAAW,UAAQ,GAClB,OAAO,CAyBT;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,cAAc,EACxB,WAAW,UAAQ,GAClB,OAAO,CAQT;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,QAczE;AAED,wBAAgB,WAAW,CACzB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,aAAa,EACnB,MAAM,CAAC,EAAE,cAAc,GACtB,cAAc,CAWhB;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,QAkDhG;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,GAAG,YAAY,CAyCpE"}
|