@pothos/plugin-prisma 0.18.0 → 3.1.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 +18 -0
- package/README.md +420 -315
- package/esm/field-builder.d.ts.map +1 -1
- package/esm/field-builder.js +19 -6
- 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 +18 -78
- 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 -118
- 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 +74 -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} +5 -5
- 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.d.ts.map +1 -1
- package/lib/field-builder.js +30 -13
- package/lib/field-builder.js.map +1 -1
- package/lib/generator.js +9 -1
- 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 +50 -1
- 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 +19 -79
- 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 +92 -124
- package/lib/prisma-field-builder.js.map +1 -1
- package/lib/schema-builder.js +22 -8
- package/lib/schema-builder.js.map +1 -1
- package/lib/types.d.ts +74 -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} +5 -5
- 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 +8 -8
- package/src/field-builder.ts +22 -5
- package/src/generator.ts +18 -0
- package/src/global-types.ts +59 -12
- package/src/index.ts +75 -1
- package/src/model-loader.ts +27 -106
- package/src/prisma-field-builder.ts +195 -152
- package/src/schema-builder.ts +28 -7
- package/src/types.ts +155 -102
- package/src/{cursors.ts → util/cursors.ts} +3 -3
- 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
package/lib/model-loader.js
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ModelLoader = void 0;
|
|
4
|
-
/* eslint-disable prefer-destructuring */
|
|
5
|
-
/* eslint-disable no-underscore-dangle */
|
|
6
4
|
const core_1 = require("@pothos/core");
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const loaderCache = new WeakMap();
|
|
5
|
+
const datamodel_1 = require("./util/datamodel");
|
|
6
|
+
const selections_1 = require("./util/selections");
|
|
10
7
|
class ModelLoader {
|
|
11
8
|
constructor(model, delegate, findUnique) {
|
|
12
9
|
this.staged = new Set();
|
|
@@ -14,91 +11,34 @@ class ModelLoader {
|
|
|
14
11
|
this.delegate = delegate;
|
|
15
12
|
this.findUnique = findUnique;
|
|
16
13
|
}
|
|
17
|
-
static
|
|
18
|
-
const delegate = (0,
|
|
19
|
-
|
|
20
|
-
const ref = (0, refs_1.getRefFromModel)(modelName, builder);
|
|
21
|
-
const findUnique = (0, refs_1.getFindUniqueForRef)(ref, builder);
|
|
22
|
-
loaderCache.set(delegate, (0, core_1.createContextCache)((model) => new ModelLoader(model, delegate, findUnique)));
|
|
23
|
-
}
|
|
24
|
-
return loaderCache.get(delegate);
|
|
14
|
+
static forRef(modelName, findUnique, builder) {
|
|
15
|
+
const delegate = (0, datamodel_1.getDelegateFromModel)(builder.options.prisma.client, modelName);
|
|
16
|
+
return (0, core_1.createContextCache)((model) => new ModelLoader(model, delegate, findUnique));
|
|
25
17
|
}
|
|
26
|
-
async
|
|
27
|
-
|
|
28
|
-
const entry = [...this.staged][0];
|
|
29
|
-
if (entry) {
|
|
30
|
-
if (!entry.include._count) {
|
|
31
|
-
entry.include._count = { select: {} };
|
|
32
|
-
}
|
|
33
|
-
entry.include._count.select[relation] = true;
|
|
34
|
-
promise = entry.promise;
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
promise = this.initLoad(relation, null, context, true);
|
|
38
|
-
}
|
|
39
|
-
const result = await promise;
|
|
40
|
-
return result._count[relation];
|
|
41
|
-
}
|
|
42
|
-
async loadSelf(include, context) {
|
|
18
|
+
async loadSelection(selection, context) {
|
|
19
|
+
const query = (0, selections_1.selectionToQuery)(selection);
|
|
43
20
|
for (const entry of this.staged) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
entry.include = merged;
|
|
21
|
+
if ((0, selections_1.selectionCompatible)(entry.state, query)) {
|
|
22
|
+
(0, selections_1.mergeSelection)(entry.state, query);
|
|
47
23
|
return entry.promise;
|
|
48
24
|
}
|
|
49
25
|
}
|
|
50
|
-
return this.initLoad(
|
|
26
|
+
return this.initLoad(selection, context);
|
|
51
27
|
}
|
|
52
|
-
async
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
if (entry.include[relation] === undefined) {
|
|
56
|
-
promise = entry.promise;
|
|
57
|
-
entry.include[relation] = include;
|
|
58
|
-
break;
|
|
59
|
-
}
|
|
60
|
-
const merged = (0, util_1.mergeIncludes)(entry.include[relation], include);
|
|
61
|
-
if (merged) {
|
|
62
|
-
entry.include[relation] = merged;
|
|
63
|
-
break;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
if (!promise) {
|
|
67
|
-
promise = this.initLoad(relation, include, context);
|
|
68
|
-
}
|
|
69
|
-
const result = await promise;
|
|
70
|
-
return result[relation];
|
|
71
|
-
}
|
|
72
|
-
async initLoad(relation, includeArg, context, count = false) {
|
|
73
|
-
const include = (relation &&
|
|
74
|
-
(count
|
|
75
|
-
? {
|
|
76
|
-
_count: {
|
|
77
|
-
select: {
|
|
78
|
-
[relation]: true,
|
|
79
|
-
},
|
|
80
|
-
},
|
|
81
|
-
}
|
|
82
|
-
: {
|
|
83
|
-
[relation]: includeArg,
|
|
84
|
-
})) ||
|
|
85
|
-
{};
|
|
86
|
-
const promise = new Promise((resolve, reject) => {
|
|
87
|
-
setTimeout(() => {
|
|
28
|
+
async initLoad(state, context) {
|
|
29
|
+
const entry = {
|
|
30
|
+
promise: Promise.resolve().then(() => {
|
|
88
31
|
this.staged.delete(entry);
|
|
89
|
-
|
|
32
|
+
return this.delegate.findUnique({
|
|
90
33
|
rejectOnNotFound: true,
|
|
34
|
+
...(0, selections_1.selectionToQuery)(state),
|
|
91
35
|
where: { ...this.findUnique(this.model, context) },
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
});
|
|
96
|
-
const entry = {
|
|
97
|
-
promise,
|
|
98
|
-
include,
|
|
36
|
+
});
|
|
37
|
+
}),
|
|
38
|
+
state,
|
|
99
39
|
};
|
|
100
40
|
this.staged.add(entry);
|
|
101
|
-
return promise;
|
|
41
|
+
return entry.promise;
|
|
102
42
|
}
|
|
103
43
|
}
|
|
104
44
|
exports.ModelLoader = ModelLoader;
|
package/lib/model-loader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-loader.js","sourceRoot":"","sources":["../src/model-loader.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"model-loader.js","sourceRoot":"","sources":["../src/model-loader.ts"],"names":[],"mappings":";;;AAAA,uCAA+D;AAE/D,gDAAwD;AACxD,kDAK2B;AAE3B,MAAa,WAAW;IAUtB,YACE,KAAa,EACb,QAAwB,EACxB,UAA+C;QARjD,WAAM,GAAG,IAAI,GAAG,EAGZ,CAAC;QAOH,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,MAAM,CACX,SAAiB,EACjB,UAA+C,EAC/C,OAA+C;QAE/C,MAAM,QAAQ,GAAG,IAAA,gCAAoB,EAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAEhF,OAAO,IAAA,yBAAkB,EAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;IACrF,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAAyB,EAAE,OAAe;QAC5D,MAAM,KAAK,GAAG,IAAA,6BAAgB,EAAC,SAAS,CAAC,CAAC;QAE1C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;YAC/B,IAAI,IAAA,gCAAmB,EAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;gBAC3C,IAAA,2BAAc,EAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBAEnC,OAAO,KAAK,CAAC,OAAO,CAAC;aACtB;SACF;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAqB,EAAE,OAAW;QAC/C,MAAM,KAAK,GAAG;YACZ,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;gBACnC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAE1B,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;oBAC9B,gBAAgB,EAAE,IAAI;oBACtB,GAAG,IAAA,6BAAgB,EAAC,KAAK,CAAC;oBAC1B,KAAK,EAAE,EAAE,GAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAQ,EAAE;iBAClD,CAAqC,CAAC;YAClD,CAAC,CAAC;YACF,KAAK;SACN,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAEvB,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;CACF;AA9DD,kCA8DC"}
|
|
@@ -1,17 +1,30 @@
|
|
|
1
|
-
import { FieldRef, InputFieldMap, NormalizeArgs,
|
|
1
|
+
import { CompatibleTypes, FieldKind, FieldRef, InputFieldMap, NormalizeArgs, ObjectRef, PluginName, SchemaTypes, TypeParam } from '@pothos/core';
|
|
2
2
|
import { PrismaObjectRef } from './object-ref';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
import { PrismaModelTypes, RelatedConnectionOptions, RelatedFieldOptions, RelationCountOptions, ShapeFromConnection, VariantFieldOptions } from './types';
|
|
4
|
+
import { FieldMap } from './util/relation-map';
|
|
5
|
+
declare const RootBuilder: {
|
|
6
|
+
new <Types extends SchemaTypes, Shape, Kind extends FieldKind>(name: string, builder: PothosSchemaTypes.SchemaBuilder<Types>, kind: FieldKind, graphqlKind: PothosSchemaTypes.PothosKindToGraphQLType[FieldKind]): PothosSchemaTypes.RootFieldBuilder<Types, Shape, Kind>;
|
|
7
|
+
};
|
|
8
|
+
export declare class PrismaObjectFieldBuilder<Types extends SchemaTypes, Model extends PrismaModelTypes, NeedsResolve extends boolean, Shape extends object = Model['Shape']> extends RootBuilder<Types, Shape, 'PrismaObject'> {
|
|
7
9
|
model: string;
|
|
10
|
+
prismaFieldMap: FieldMap;
|
|
11
|
+
exposeBoolean: <Nullable extends boolean, ResolveReturnShape, Name extends CompatibleTypes<Types, Model["Shape"], "Boolean", Nullable>>(...args: NormalizeArgs<[name: Name, options?: Omit<PothosSchemaTypes.ObjectFieldOptions<Types, Shape, "Boolean", Nullable, {}, ResolveReturnShape>, "type" | "resolve" | "select"> | undefined]>) => FieldRef<import("@pothos/core").FieldNullability<"Boolean"> extends Nullable ? Types["DefaultFieldNullability"] extends true ? ("Boolean" extends keyof Types["outputShapes"] ? Types["outputShapes"][keyof Types["outputShapes"] & "Boolean"] : never) | null | undefined : "Boolean" extends keyof Types["outputShapes"] ? Types["outputShapes"][keyof Types["outputShapes"] & "Boolean"] : never : Nullable extends true ? ("Boolean" extends keyof Types["outputShapes"] ? Types["outputShapes"][keyof Types["outputShapes"] & "Boolean"] : never) | null | undefined : "Boolean" extends keyof Types["outputShapes"] ? Types["outputShapes"][keyof Types["outputShapes"] & "Boolean"] : never, "PrismaObject">;
|
|
12
|
+
exposeFloat: <Nullable extends boolean, ResolveReturnShape, Name extends CompatibleTypes<Types, Model["Shape"], "Float", Nullable>>(...args: NormalizeArgs<[name: Name, options?: Omit<PothosSchemaTypes.ObjectFieldOptions<Types, Shape, "Float", Nullable, {}, ResolveReturnShape>, "type" | "resolve" | "select"> | undefined]>) => FieldRef<import("@pothos/core").FieldNullability<"Float"> extends Nullable ? Types["DefaultFieldNullability"] extends true ? ("Float" extends keyof Types["outputShapes"] ? Types["outputShapes"][keyof Types["outputShapes"] & "Float"] : never) | null | undefined : "Float" extends keyof Types["outputShapes"] ? Types["outputShapes"][keyof Types["outputShapes"] & "Float"] : never : Nullable extends true ? ("Float" extends keyof Types["outputShapes"] ? Types["outputShapes"][keyof Types["outputShapes"] & "Float"] : never) | null | undefined : "Float" extends keyof Types["outputShapes"] ? Types["outputShapes"][keyof Types["outputShapes"] & "Float"] : never, "PrismaObject">;
|
|
13
|
+
exposeInt: <Nullable extends boolean, ResolveReturnShape, Name extends CompatibleTypes<Types, Model["Shape"], "Int", Nullable>>(...args: NormalizeArgs<[name: Name, options?: Omit<PothosSchemaTypes.ObjectFieldOptions<Types, Shape, "Int", Nullable, {}, ResolveReturnShape>, "type" | "resolve" | "select"> | undefined]>) => FieldRef<import("@pothos/core").FieldNullability<"Int"> extends Nullable ? Types["DefaultFieldNullability"] extends true ? ("Int" extends keyof Types["outputShapes"] ? Types["outputShapes"][keyof Types["outputShapes"] & "Int"] : never) | null | undefined : "Int" extends keyof Types["outputShapes"] ? Types["outputShapes"][keyof Types["outputShapes"] & "Int"] : never : Nullable extends true ? ("Int" extends keyof Types["outputShapes"] ? Types["outputShapes"][keyof Types["outputShapes"] & "Int"] : never) | null | undefined : "Int" extends keyof Types["outputShapes"] ? Types["outputShapes"][keyof Types["outputShapes"] & "Int"] : never, "PrismaObject">;
|
|
14
|
+
exposeID: <Nullable extends boolean, ResolveReturnShape, Name extends CompatibleTypes<Types, Model["Shape"], "ID", Nullable>>(...args: NormalizeArgs<[name: Name, options?: Omit<PothosSchemaTypes.ObjectFieldOptions<Types, Shape, "ID", Nullable, {}, ResolveReturnShape>, "type" | "resolve" | "select"> | undefined]>) => FieldRef<import("@pothos/core").FieldNullability<"ID"> extends Nullable ? Types["DefaultFieldNullability"] extends true ? ("ID" extends keyof Types["outputShapes"] ? Types["outputShapes"][keyof Types["outputShapes"] & "ID"] : never) | null | undefined : "ID" extends keyof Types["outputShapes"] ? Types["outputShapes"][keyof Types["outputShapes"] & "ID"] : never : Nullable extends true ? ("ID" extends keyof Types["outputShapes"] ? Types["outputShapes"][keyof Types["outputShapes"] & "ID"] : never) | null | undefined : "ID" extends keyof Types["outputShapes"] ? Types["outputShapes"][keyof Types["outputShapes"] & "ID"] : never, "PrismaObject">;
|
|
15
|
+
exposeString: <Nullable extends boolean, ResolveReturnShape, Name extends CompatibleTypes<Types, Model["Shape"], "String", Nullable>>(...args: NormalizeArgs<[name: Name, options?: Omit<PothosSchemaTypes.ObjectFieldOptions<Types, Shape, "String", Nullable, {}, ResolveReturnShape>, "type" | "resolve" | "select"> | undefined]>) => FieldRef<import("@pothos/core").FieldNullability<"String"> extends Nullable ? Types["DefaultFieldNullability"] extends true ? ("String" extends keyof Types["outputShapes"] ? Types["outputShapes"][keyof Types["outputShapes"] & "String"] : never) | null | undefined : "String" extends keyof Types["outputShapes"] ? Types["outputShapes"][keyof Types["outputShapes"] & "String"] : never : Nullable extends true ? ("String" extends keyof Types["outputShapes"] ? Types["outputShapes"][keyof Types["outputShapes"] & "String"] : never) | null | undefined : "String" extends keyof Types["outputShapes"] ? Types["outputShapes"][keyof Types["outputShapes"] & "String"] : never, "PrismaObject">;
|
|
16
|
+
exposeBooleanList: <Nullable extends boolean, ResolveReturnShape, Name extends CompatibleTypes<Types, Model["Shape"], ["Boolean"], Nullable>>(...args: NormalizeArgs<[name: Name, options?: Omit<PothosSchemaTypes.ObjectFieldOptions<Types, Shape, ["Boolean"], Nullable, {}, ResolveReturnShape>, "type" | "resolve" | "select"> | undefined]>) => FieldRef<import("@pothos/core").ShapeFromTypeParam<Types, ["Boolean"], Nullable>, "PrismaObject">;
|
|
17
|
+
exposeFloatList: <Nullable extends boolean, ResolveReturnShape, Name extends CompatibleTypes<Types, Model["Shape"], ["Float"], Nullable>>(...args: NormalizeArgs<[name: Name, options?: Omit<PothosSchemaTypes.ObjectFieldOptions<Types, Shape, ["Float"], Nullable, {}, ResolveReturnShape>, "type" | "resolve" | "select"> | undefined]>) => FieldRef<import("@pothos/core").ShapeFromTypeParam<Types, ["Float"], Nullable>, "PrismaObject">;
|
|
18
|
+
exposeIntList: <Nullable extends boolean, ResolveReturnShape, Name extends CompatibleTypes<Types, Model["Shape"], ["Int"], Nullable>>(...args: NormalizeArgs<[name: Name, options?: Omit<PothosSchemaTypes.ObjectFieldOptions<Types, Shape, ["Int"], Nullable, {}, ResolveReturnShape>, "type" | "resolve" | "select"> | undefined]>) => FieldRef<import("@pothos/core").ShapeFromTypeParam<Types, ["Int"], Nullable>, "PrismaObject">;
|
|
19
|
+
exposeIDList: <Nullable extends boolean, ResolveReturnShape, Name extends CompatibleTypes<Types, Model["Shape"], ["ID"], Nullable>>(...args: NormalizeArgs<[name: Name, options?: Omit<PothosSchemaTypes.ObjectFieldOptions<Types, Shape, ["ID"], Nullable, {}, ResolveReturnShape>, "type" | "resolve" | "select"> | undefined]>) => FieldRef<import("@pothos/core").ShapeFromTypeParam<Types, ["ID"], Nullable>, "PrismaObject">;
|
|
20
|
+
exposeStringList: <Nullable extends boolean, ResolveReturnShape, Name extends CompatibleTypes<Types, Model["Shape"], ["String"], Nullable>>(...args: NormalizeArgs<[name: Name, options?: Omit<PothosSchemaTypes.ObjectFieldOptions<Types, Shape, ["String"], Nullable, {}, ResolveReturnShape>, "type" | "resolve" | "select"> | undefined]>) => FieldRef<import("@pothos/core").ShapeFromTypeParam<Types, ["String"], Nullable>, "PrismaObject">;
|
|
8
21
|
relatedConnection: 'relay' extends PluginName ? <Field extends Model['ListRelations'], Nullable extends boolean, Args extends InputFieldMap, ResolveReturnShape>(...args: NormalizeArgs<[
|
|
9
22
|
field: Field,
|
|
10
23
|
options: RelatedConnectionOptions<Types, Model, Field, Nullable, Args, NeedsResolve>,
|
|
11
24
|
connectionOptions?: PothosSchemaTypes.ConnectionObjectOptions<Types, ObjectRef<Shape>, false, false, ResolveReturnShape>,
|
|
12
25
|
edgeOptions?: PothosSchemaTypes.ConnectionEdgeObjectOptions<Types, ObjectRef<Shape>, false, ResolveReturnShape>
|
|
13
26
|
]>) => FieldRef<ShapeFromConnection<PothosSchemaTypes.ConnectionShapeHelper<Types, Shape, Nullable>>> : '@pothos/plugin-relay is required to use this method';
|
|
14
|
-
constructor(name: string, builder: PothosSchemaTypes.SchemaBuilder<Types>, model: string);
|
|
27
|
+
constructor(name: string, builder: PothosSchemaTypes.SchemaBuilder<Types>, model: string, fieldMap: FieldMap);
|
|
15
28
|
relation<Field extends Model['Fields'], Nullable extends boolean, Args extends InputFieldMap, ResolveReturnShape>(...allArgs: NormalizeArgs<[
|
|
16
29
|
name: Field,
|
|
17
30
|
options?: RelatedFieldOptions<Types, Model, Field, Nullable, Args, ResolveReturnShape, NeedsResolve, Shape>
|
|
@@ -24,5 +37,11 @@ export declare class PrismaObjectFieldBuilder<Types extends SchemaTypes, Model e
|
|
|
24
37
|
variant: Variant,
|
|
25
38
|
options?: VariantFieldOptions<Types, Model, Variant extends PrismaObjectRef<Model> ? Variant : PrismaObjectRef<Model>>
|
|
26
39
|
]>): FieldRef<Model['Shape'], 'Object'>;
|
|
40
|
+
expose<Type extends TypeParam<Types>, Nullable extends boolean, ResolveReturnShape, Name extends CompatibleTypes<Types, Model['Shape'], Type, Nullable>>(...args: NormalizeArgs<[
|
|
41
|
+
name: Name,
|
|
42
|
+
options?: Omit<PothosSchemaTypes.ObjectFieldOptions<Types, Shape, Type, Nullable, {}, ResolveReturnShape>, 'resolve' | 'select'>
|
|
43
|
+
]>): FieldRef<import("@pothos/core").ShapeFromTypeParam<Types, Type, Nullable>, "PrismaObject">;
|
|
44
|
+
private createExpose;
|
|
27
45
|
}
|
|
46
|
+
export {};
|
|
28
47
|
//# sourceMappingURL=prisma-field-builder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prisma-field-builder.d.ts","sourceRoot":"","sources":["../src/prisma-field-builder.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,QAAQ,EACR,aAAa,EAEb,aAAa,EACb,
|
|
1
|
+
{"version":3,"file":"prisma-field-builder.d.ts","sourceRoot":"","sources":["../src/prisma-field-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,24 +2,30 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PrismaObjectFieldBuilder = void 0;
|
|
4
4
|
const core_1 = require("@pothos/core");
|
|
5
|
-
const cursors_1 = require("./cursors");
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
5
|
+
const cursors_1 = require("./util/cursors");
|
|
6
|
+
const datamodel_1 = require("./util/datamodel");
|
|
7
|
+
// Workaround for FieldKind not being extended on Builder classes
|
|
8
|
+
const RootBuilder = core_1.RootFieldBuilder;
|
|
9
|
+
class PrismaObjectFieldBuilder extends RootBuilder {
|
|
10
|
+
constructor(name, builder, model, fieldMap) {
|
|
11
|
+
super(name, builder, 'PrismaObject', 'Object');
|
|
12
|
+
this.exposeBoolean = this.createExpose('Boolean');
|
|
13
|
+
this.exposeFloat = this.createExpose('Float');
|
|
14
|
+
this.exposeInt = this.createExpose('Int');
|
|
15
|
+
this.exposeID = this.createExpose('ID');
|
|
16
|
+
this.exposeString = this.createExpose('String');
|
|
17
|
+
this.exposeBooleanList = this.createExpose(['Boolean']);
|
|
18
|
+
this.exposeFloatList = this.createExpose(['Float']);
|
|
19
|
+
this.exposeIntList = this.createExpose(['Int']);
|
|
20
|
+
this.exposeIDList = this.createExpose(['ID']);
|
|
21
|
+
this.exposeStringList = this.createExpose(['String']);
|
|
13
22
|
this.relatedConnection = function relatedConnection(name, { maxSize, defaultSize, cursor, query, resolve, extensions, totalCount, ...options }, connectionOptions = {}, edgeOptions = {}) {
|
|
14
|
-
var _a
|
|
15
|
-
const relationField = (0,
|
|
16
|
-
const
|
|
17
|
-
const ref = (_a = options.type) !== null && _a !== void 0 ? _a : (0, refs_1.getRefFromModel)(relationField.type, this.builder);
|
|
18
|
-
const findUnique = (0, refs_1.getFindUniqueForRef)(parentRef, this.builder);
|
|
19
|
-
const loaderCache = model_loader_1.ModelLoader.forModel(this.model, this.builder);
|
|
23
|
+
var _a;
|
|
24
|
+
const relationField = (0, datamodel_1.getRelation)(this.model, this.builder, name);
|
|
25
|
+
const ref = (_a = options.type) !== null && _a !== void 0 ? _a : (0, datamodel_1.getRefFromModel)(relationField.type, this.builder);
|
|
20
26
|
let typeName;
|
|
21
|
-
const formatCursor = (0,
|
|
22
|
-
const parseCursor = (0,
|
|
27
|
+
const formatCursor = (0, datamodel_1.getCursorFormatter)(relationField.type, this.builder, cursor);
|
|
28
|
+
const parseCursor = (0, datamodel_1.getCursorParser)(relationField.type, this.builder, cursor);
|
|
23
29
|
const getQuery = (args, ctx) => ({
|
|
24
30
|
...(typeof query === 'function' ? query(args, ctx) : query),
|
|
25
31
|
...(0, cursors_1.prismaCursorConnectionQuery)({
|
|
@@ -29,40 +35,36 @@ class PrismaObjectFieldBuilder extends core_1.ObjectFieldBuilder {
|
|
|
29
35
|
args,
|
|
30
36
|
}),
|
|
31
37
|
});
|
|
38
|
+
const relationSelect = (args, context, nestedQuery) => ({
|
|
39
|
+
select: {
|
|
40
|
+
[name]: nestedQuery({
|
|
41
|
+
...(typeof query === 'function' ? query(args, context) : query),
|
|
42
|
+
...(0, cursors_1.prismaCursorConnectionQuery)({
|
|
43
|
+
parseCursor,
|
|
44
|
+
maxSize,
|
|
45
|
+
defaultSize,
|
|
46
|
+
args,
|
|
47
|
+
}),
|
|
48
|
+
}),
|
|
49
|
+
},
|
|
50
|
+
});
|
|
32
51
|
const fieldRef = this.connection({
|
|
33
52
|
...options,
|
|
34
53
|
extensions: {
|
|
35
54
|
...extensions,
|
|
36
|
-
|
|
37
|
-
|
|
55
|
+
pothosPrismaSelect: relationSelect,
|
|
56
|
+
pothosPrismaLoaded: (value) => value[name] !== undefined,
|
|
57
|
+
pothosPrismaFallback: resolve &&
|
|
58
|
+
((q, parent, args, context, info) => Promise.resolve(resolve({
|
|
59
|
+
...q,
|
|
60
|
+
...(typeof query === 'function' ? query(args, context) : query),
|
|
61
|
+
}, parent, args, context, info)).then((result) => (0, cursors_1.wrapConnectionResult)(result, args, q.take, formatCursor))),
|
|
38
62
|
},
|
|
39
63
|
type: ref,
|
|
40
|
-
resolve:
|
|
64
|
+
resolve: (parent, args, context) => {
|
|
41
65
|
var _a;
|
|
42
66
|
const connectionQuery = getQuery(args, context);
|
|
43
|
-
|
|
44
|
-
const mapping = (0, loader_map_1.getLoaderMapping)(context, info.path);
|
|
45
|
-
const loadedValue = parent[name];
|
|
46
|
-
if (
|
|
47
|
-
// if we attempted to load the relation, and its missing it will be null
|
|
48
|
-
// undefined means that the query was not constructed in a way that requested the relation
|
|
49
|
-
loadedValue !== undefined &&
|
|
50
|
-
mapping) {
|
|
51
|
-
if (loadedValue !== null && loadedValue !== undefined) {
|
|
52
|
-
(0, loader_map_1.setLoaderMappings)(context, info.path, mapping);
|
|
53
|
-
}
|
|
54
|
-
return loadedValue;
|
|
55
|
-
}
|
|
56
|
-
if (!resolve && !findUnique) {
|
|
57
|
-
throw new Error(`Missing findUnique for Prisma type ${this.model}`);
|
|
58
|
-
}
|
|
59
|
-
const mergedQuery = { ...(0, util_1.queryFromInfo)(context, info), ...connectionQuery };
|
|
60
|
-
if (resolve) {
|
|
61
|
-
return resolve(mergedQuery, parent, args, context, info);
|
|
62
|
-
}
|
|
63
|
-
return loaderCache(parent).loadRelation(name, mergedQuery, context);
|
|
64
|
-
};
|
|
65
|
-
return (0, cursors_1.wrapConnectionResult)(await getResult(), args, connectionQuery.take, formatCursor, (_a = parent._count) === null || _a === void 0 ? void 0 : _a[name]);
|
|
67
|
+
return (0, cursors_1.wrapConnectionResult)(parent[name], args, connectionQuery.take, formatCursor, (_a = parent._count) === null || _a === void 0 ? void 0 : _a[name]);
|
|
66
68
|
},
|
|
67
69
|
}, {
|
|
68
70
|
...connectionOptions,
|
|
@@ -71,23 +73,18 @@ class PrismaObjectFieldBuilder extends core_1.ObjectFieldBuilder {
|
|
|
71
73
|
var _a, _b;
|
|
72
74
|
return ({
|
|
73
75
|
totalCount: t.int({
|
|
76
|
+
nullable: false,
|
|
74
77
|
extensions: {
|
|
75
|
-
|
|
76
|
-
},
|
|
77
|
-
resolve: (parent, args, context) => {
|
|
78
|
-
const loadedValue = parent.totalCount;
|
|
79
|
-
if (loadedValue !== undefined) {
|
|
80
|
-
return loadedValue;
|
|
81
|
-
}
|
|
82
|
-
return loaderCache(parent).loadCount(name, context);
|
|
78
|
+
pothosPrismaParentSelect: { _count: { select: { [name]: true } } },
|
|
83
79
|
},
|
|
80
|
+
resolve: (parent, args, context) => parent.totalCount,
|
|
84
81
|
}),
|
|
85
82
|
...(_b = (_a = connectionOptions).fields) === null || _b === void 0 ? void 0 : _b.call(_a, t),
|
|
86
83
|
});
|
|
87
84
|
}
|
|
88
85
|
: connectionOptions.fields,
|
|
89
86
|
extensions: {
|
|
90
|
-
...
|
|
87
|
+
...connectionOptions === null || connectionOptions === void 0 ? void 0 : connectionOptions.extensions,
|
|
91
88
|
pothosPrismaIndirectInclude: {
|
|
92
89
|
getType: () => {
|
|
93
90
|
if (!typeName) {
|
|
@@ -102,109 +99,80 @@ class PrismaObjectFieldBuilder extends core_1.ObjectFieldBuilder {
|
|
|
102
99
|
return fieldRef;
|
|
103
100
|
};
|
|
104
101
|
this.model = model;
|
|
105
|
-
this.
|
|
102
|
+
this.prismaFieldMap = fieldMap;
|
|
106
103
|
}
|
|
107
104
|
relation(...allArgs) {
|
|
108
105
|
var _a;
|
|
109
106
|
const [name, options = {}] = allArgs;
|
|
110
|
-
const relationField = (0,
|
|
111
|
-
const
|
|
112
|
-
const
|
|
113
|
-
const
|
|
114
|
-
const loaderCache = model_loader_1.ModelLoader.forModel(this.model, this.builder);
|
|
115
|
-
const { query = {}, resolve, ...rest } = options;
|
|
107
|
+
const relationField = (0, datamodel_1.getRelation)(this.model, this.builder, name);
|
|
108
|
+
const ref = (_a = options.type) !== null && _a !== void 0 ? _a : (0, datamodel_1.getRefFromModel)(relationField.type, this.builder);
|
|
109
|
+
const { query = {}, resolve, extensions, ...rest } = options;
|
|
110
|
+
const relationSelect = (args, context, nestedQuery) => ({ select: { [name]: nestedQuery(query) } });
|
|
116
111
|
return this.field({
|
|
117
112
|
...rest,
|
|
118
113
|
type: relationField.isList ? [ref] : ref,
|
|
119
114
|
extensions: {
|
|
120
|
-
...
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
const mapping = (0, loader_map_1.getLoaderMapping)(context, info.path);
|
|
126
|
-
const loadedValue = parent[name];
|
|
127
|
-
if (
|
|
128
|
-
// if we attempted to load the relation, and its missing it will be null
|
|
129
|
-
// undefined means that the query was not constructed in a way that requested the relation
|
|
130
|
-
loadedValue !== undefined &&
|
|
131
|
-
mapping) {
|
|
132
|
-
if (loadedValue !== null && loadedValue !== undefined) {
|
|
133
|
-
(0, loader_map_1.setLoaderMappings)(context, info.path, mapping);
|
|
134
|
-
}
|
|
135
|
-
return loadedValue;
|
|
136
|
-
}
|
|
137
|
-
const queryOptions = {
|
|
138
|
-
...(typeof query === 'function' ? query(args, context) : query),
|
|
139
|
-
...(0, util_1.queryFromInfo)(context, info),
|
|
140
|
-
};
|
|
141
|
-
if (resolve) {
|
|
142
|
-
return resolve(queryOptions, parent, args, context, info);
|
|
143
|
-
}
|
|
144
|
-
if (!findUnique) {
|
|
145
|
-
throw new Error(`Missing findUnique for Prisma type ${this.model}`);
|
|
146
|
-
}
|
|
147
|
-
return loaderCache(parent).loadRelation(name, queryOptions, context);
|
|
115
|
+
...extensions,
|
|
116
|
+
pothosPrismaSelect: relationSelect,
|
|
117
|
+
pothosPrismaLoaded: (value) => value[name] !== undefined,
|
|
118
|
+
pothosPrismaFallback: resolve &&
|
|
119
|
+
((q, parent, args, context, info) => resolve({ ...q, ...(typeof query === 'function' ? query(args, context) : query) }, parent, args, context, info)),
|
|
148
120
|
},
|
|
121
|
+
resolve: (parent) => parent[name],
|
|
149
122
|
});
|
|
150
123
|
}
|
|
151
124
|
relationCount(...allArgs) {
|
|
152
125
|
const [name, options = {}] = allArgs;
|
|
153
|
-
const parentRef = (0, refs_1.getRefFromModel)(this.model, this.builder);
|
|
154
|
-
const findUnique = (0, refs_1.getFindUniqueForRef)(parentRef, this.builder);
|
|
155
|
-
const loaderCache = model_loader_1.ModelLoader.forModel(this.model, this.builder);
|
|
156
126
|
const { resolve, ...rest } = options;
|
|
127
|
+
const countSelect = {
|
|
128
|
+
_count: {
|
|
129
|
+
select: { [name]: true },
|
|
130
|
+
},
|
|
131
|
+
};
|
|
157
132
|
return this.field({
|
|
158
133
|
...rest,
|
|
159
134
|
type: 'Int',
|
|
160
135
|
nullable: false,
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
pothosPrismaRelationCount: name,
|
|
164
|
-
},
|
|
165
|
-
resolve: (parent, args, context, info) => {
|
|
166
|
-
var _a;
|
|
167
|
-
const loadedValue = (_a = parent._count) === null || _a === void 0 ? void 0 : _a[name];
|
|
168
|
-
if (loadedValue !== undefined) {
|
|
169
|
-
return loadedValue;
|
|
170
|
-
}
|
|
171
|
-
if (resolve) {
|
|
172
|
-
return resolve(parent, args, context, info);
|
|
173
|
-
}
|
|
174
|
-
if (!findUnique) {
|
|
175
|
-
throw new Error(`Missing findUnique for Prisma type ${this.model}`);
|
|
176
|
-
}
|
|
177
|
-
return loaderCache(parent).loadCount(name, context);
|
|
178
|
-
},
|
|
136
|
+
select: countSelect,
|
|
137
|
+
resolve: (parent, args, context, info) => { var _a; return (_a = parent._count) === null || _a === void 0 ? void 0 : _a[name]; },
|
|
179
138
|
});
|
|
180
139
|
}
|
|
181
140
|
variant(...allArgs) {
|
|
182
141
|
const [variant, options = {}] = allArgs;
|
|
183
|
-
const ref = typeof variant === 'string' ? (0,
|
|
184
|
-
const
|
|
185
|
-
const findUnique = (0, refs_1.getFindUniqueForRef)(parentRef, this.builder);
|
|
186
|
-
const loaderCache = model_loader_1.ModelLoader.forModel(this.model, this.builder);
|
|
142
|
+
const ref = typeof variant === 'string' ? (0, datamodel_1.getRefFromModel)(variant, this.builder) : variant;
|
|
143
|
+
const selfSelect = (args, context, nestedQuery) => nestedQuery({});
|
|
187
144
|
return this.field({
|
|
188
145
|
...options,
|
|
189
146
|
type: ref,
|
|
147
|
+
select: selfSelect,
|
|
148
|
+
resolve: (parent, args, context, info) => parent,
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
expose(...args) {
|
|
152
|
+
var _a;
|
|
153
|
+
const [name, options = {}] = args;
|
|
154
|
+
const typeConfig = this.builder.configStore.getTypeConfig(this.typename, 'Object');
|
|
155
|
+
const usingSelect = !!((_a = typeConfig.extensions) === null || _a === void 0 ? void 0 : _a.pothosPrismaSelect);
|
|
156
|
+
return this.exposeField(name, {
|
|
157
|
+
...options,
|
|
190
158
|
extensions: {
|
|
191
159
|
...options.extensions,
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
if (mapping) {
|
|
197
|
-
(0, loader_map_1.setLoaderMappings)(context, info.path, mapping);
|
|
198
|
-
return parent;
|
|
199
|
-
}
|
|
200
|
-
const queryOptions = (0, util_1.queryFromInfo)(context, info);
|
|
201
|
-
if (!findUnique) {
|
|
202
|
-
throw new Error(`Missing findUnique for Prisma type ${this.model}`);
|
|
203
|
-
}
|
|
204
|
-
return loaderCache(parent).loadSelf(queryOptions, context);
|
|
160
|
+
pothosPrismaVariant: name,
|
|
161
|
+
pothosPrismaSelect: usingSelect && {
|
|
162
|
+
[name]: true,
|
|
163
|
+
},
|
|
205
164
|
},
|
|
206
165
|
});
|
|
207
166
|
}
|
|
167
|
+
createExpose(type) {
|
|
168
|
+
return (...args) => {
|
|
169
|
+
const [name, options = {}] = args;
|
|
170
|
+
return this.expose(name, {
|
|
171
|
+
...options,
|
|
172
|
+
type,
|
|
173
|
+
});
|
|
174
|
+
};
|
|
175
|
+
}
|
|
208
176
|
}
|
|
209
177
|
exports.PrismaObjectFieldBuilder = PrismaObjectFieldBuilder;
|
|
210
178
|
//# sourceMappingURL=prisma-field-builder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prisma-field-builder.js","sourceRoot":"","sources":["../src/prisma-field-builder.ts"],"names":[],"mappings":";;;AAEA,
|
|
1
|
+
{"version":3,"file":"prisma-field-builder.js","sourceRoot":"","sources":["../src/prisma-field-builder.ts"],"names":[],"mappings":"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"}
|