@pothos/plugin-prisma 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/.turbo/turbo-build.log +17 -0
  2. package/.turbo/turbo-test.log +17 -0
  3. package/CHANGELOG.md +312 -0
  4. package/LICENSE +6 -0
  5. package/README.md +808 -0
  6. package/babel.config.js +3 -0
  7. package/bin/generator.js +2 -0
  8. package/esm/cursors.d.ts +55 -0
  9. package/esm/cursors.d.ts.map +1 -0
  10. package/esm/cursors.js +106 -0
  11. package/esm/cursors.js.map +1 -0
  12. package/esm/field-builder.d.ts +2 -0
  13. package/esm/field-builder.d.ts.map +1 -0
  14. package/esm/field-builder.js +51 -0
  15. package/esm/field-builder.js.map +1 -0
  16. package/esm/generator.d.ts +2 -0
  17. package/esm/generator.d.ts.map +1 -0
  18. package/esm/generator.js +82 -0
  19. package/esm/generator.js.map +1 -0
  20. package/esm/global-types.d.ts +52 -0
  21. package/esm/global-types.d.ts.map +1 -0
  22. package/esm/global-types.js +2 -0
  23. package/esm/global-types.js.map +1 -0
  24. package/esm/index.d.ts +11 -0
  25. package/esm/index.d.ts.map +1 -0
  26. package/esm/index.js +14 -0
  27. package/esm/index.js.map +1 -0
  28. package/esm/loader-map.d.ts +6 -0
  29. package/esm/loader-map.d.ts.map +1 -0
  30. package/esm/loader-map.js +35 -0
  31. package/esm/loader-map.js.map +1 -0
  32. package/esm/model-loader.d.ts +17 -0
  33. package/esm/model-loader.d.ts.map +1 -0
  34. package/esm/model-loader.js +89 -0
  35. package/esm/model-loader.js.map +1 -0
  36. package/esm/node-ref.d.ts +10 -0
  37. package/esm/node-ref.d.ts.map +1 -0
  38. package/esm/node-ref.js +18 -0
  39. package/esm/node-ref.js.map +1 -0
  40. package/esm/package.json +3 -0
  41. package/esm/prisma-field-builder.d.ts +22 -0
  42. package/esm/prisma-field-builder.d.ts.map +1 -0
  43. package/esm/prisma-field-builder.js +178 -0
  44. package/esm/prisma-field-builder.js.map +1 -0
  45. package/esm/refs.d.ts +13 -0
  46. package/esm/refs.d.ts.map +1 -0
  47. package/esm/refs.js +63 -0
  48. package/esm/refs.js.map +1 -0
  49. package/esm/schema-builder.d.ts +2 -0
  50. package/esm/schema-builder.d.ts.map +1 -0
  51. package/esm/schema-builder.js +69 -0
  52. package/esm/schema-builder.js.map +1 -0
  53. package/esm/types.d.ts +164 -0
  54. package/esm/types.d.ts.map +1 -0
  55. package/esm/types.js +2 -0
  56. package/esm/types.js.map +1 -0
  57. package/esm/util/index.d.ts +5 -0
  58. package/esm/util/index.d.ts.map +1 -0
  59. package/esm/util/index.js +16 -0
  60. package/esm/util/index.js.map +1 -0
  61. package/esm/util/map-includes.d.ts +5 -0
  62. package/esm/util/map-includes.d.ts.map +1 -0
  63. package/esm/util/map-includes.js +168 -0
  64. package/esm/util/map-includes.js.map +1 -0
  65. package/esm/util/merge-includes.d.ts +3 -0
  66. package/esm/util/merge-includes.d.ts.map +1 -0
  67. package/esm/util/merge-includes.js +91 -0
  68. package/esm/util/merge-includes.js.map +1 -0
  69. package/generated.ts +54 -0
  70. package/lib/cursors.d.ts +55 -0
  71. package/lib/cursors.d.ts.map +1 -0
  72. package/lib/cursors.js +112 -0
  73. package/lib/cursors.js.map +1 -0
  74. package/lib/field-builder.d.ts +2 -0
  75. package/lib/field-builder.d.ts.map +1 -0
  76. package/lib/field-builder.js +63 -0
  77. package/lib/field-builder.js.map +1 -0
  78. package/lib/generator.d.ts +2 -0
  79. package/lib/generator.d.ts.map +1 -0
  80. package/lib/generator.js +103 -0
  81. package/lib/generator.js.map +1 -0
  82. package/lib/global-types.d.ts +52 -0
  83. package/lib/global-types.d.ts.map +1 -0
  84. package/lib/global-types.js +3 -0
  85. package/lib/global-types.js.map +1 -0
  86. package/lib/index.d.ts +11 -0
  87. package/lib/index.d.ts.map +1 -0
  88. package/lib/index.js +40 -0
  89. package/lib/index.js.map +1 -0
  90. package/lib/loader-map.d.ts +6 -0
  91. package/lib/loader-map.d.ts.map +1 -0
  92. package/lib/loader-map.js +41 -0
  93. package/lib/loader-map.js.map +1 -0
  94. package/lib/model-loader.d.ts +17 -0
  95. package/lib/model-loader.d.ts.map +1 -0
  96. package/lib/model-loader.js +93 -0
  97. package/lib/model-loader.js.map +1 -0
  98. package/lib/node-ref.d.ts +10 -0
  99. package/lib/node-ref.d.ts.map +1 -0
  100. package/lib/node-ref.js +21 -0
  101. package/lib/node-ref.js.map +1 -0
  102. package/lib/prisma-field-builder.d.ts +22 -0
  103. package/lib/prisma-field-builder.d.ts.map +1 -0
  104. package/lib/prisma-field-builder.js +182 -0
  105. package/lib/prisma-field-builder.js.map +1 -0
  106. package/lib/refs.d.ts +13 -0
  107. package/lib/refs.d.ts.map +1 -0
  108. package/lib/refs.js +72 -0
  109. package/lib/refs.js.map +1 -0
  110. package/lib/schema-builder.d.ts +2 -0
  111. package/lib/schema-builder.d.ts.map +1 -0
  112. package/lib/schema-builder.js +93 -0
  113. package/lib/schema-builder.js.map +1 -0
  114. package/lib/types.d.ts +164 -0
  115. package/lib/types.d.ts.map +1 -0
  116. package/lib/types.js +4 -0
  117. package/lib/types.js.map +1 -0
  118. package/lib/util/index.d.ts +5 -0
  119. package/lib/util/index.d.ts.map +1 -0
  120. package/lib/util/index.js +30 -0
  121. package/lib/util/index.js.map +1 -0
  122. package/lib/util/map-includes.d.ts +5 -0
  123. package/lib/util/map-includes.d.ts.map +1 -0
  124. package/lib/util/map-includes.js +173 -0
  125. package/lib/util/map-includes.js.map +1 -0
  126. package/lib/util/merge-includes.d.ts +3 -0
  127. package/lib/util/merge-includes.d.ts.map +1 -0
  128. package/lib/util/merge-includes.js +96 -0
  129. package/lib/util/merge-includes.js.map +1 -0
  130. package/package.json +70 -0
  131. package/src/cursors.ts +159 -0
  132. package/src/field-builder.ts +115 -0
  133. package/src/generator.ts +184 -0
  134. package/src/global-types.ts +180 -0
  135. package/src/index.ts +18 -0
  136. package/src/loader-map.ts +48 -0
  137. package/src/model-loader.ts +135 -0
  138. package/src/node-ref.ts +29 -0
  139. package/src/prisma-field-builder.ts +324 -0
  140. package/src/refs.ts +110 -0
  141. package/src/schema-builder.ts +124 -0
  142. package/src/types.ts +470 -0
  143. package/src/util/index.ts +26 -0
  144. package/src/util/map-includes.ts +298 -0
  145. package/src/util/merge-includes.ts +121 -0
  146. package/tsconfig.json +21 -0
  147. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ const core_1 = require("@pothos/core");
14
+ const cursors_1 = require("./cursors");
15
+ const refs_1 = require("./refs");
16
+ const util_1 = require("./util");
17
+ __exportStar(require("./prisma-field-builder"), exports);
18
+ const fieldBuilderProto = core_1.RootFieldBuilder.prototype;
19
+ fieldBuilderProto.prismaField = function prismaField({ type, resolve, ...options }) {
20
+ const model = Array.isArray(type) ? type[0] : type;
21
+ const typeRef = (0, refs_1.getRefFromModel)(model, this.builder);
22
+ const typeParam = Array.isArray(type) ? [typeRef] : typeRef;
23
+ return this.field({
24
+ ...options,
25
+ type: typeParam,
26
+ resolve: (parent, args, ctx, info) => {
27
+ const query = (0, util_1.queryFromInfo)(ctx, info);
28
+ return resolve(query, parent, args, ctx, info);
29
+ },
30
+ });
31
+ };
32
+ fieldBuilderProto.prismaConnection = function prismaConnection({ type, cursor, maxSize, defaultSize, resolve, ...options }, connectionOptions, edgeOptions) {
33
+ var _a;
34
+ const ref = (0, refs_1.getRefFromModel)(type, this.builder);
35
+ let typeName;
36
+ const fieldRef = this.connection({
37
+ ...options,
38
+ type: ref,
39
+ resolve: (parent, args, ctx, info) => (0, cursors_1.resolvePrismaCursorConnection)({
40
+ query: (0, util_1.queryFromInfo)(ctx, info),
41
+ column: cursor,
42
+ maxSize,
43
+ defaultSize,
44
+ args,
45
+ }, (query) => resolve(query, parent, args, ctx, info)),
46
+ }, {
47
+ ...connectionOptions,
48
+ extensions: {
49
+ ...(_a = connectionOptions) === null || _a === void 0 ? void 0 : _a.extensions,
50
+ pothosPrismaIndirectInclude: {
51
+ getType: () => {
52
+ if (!typeName) {
53
+ typeName = this.builder.configStore.getTypeConfig(ref).name;
54
+ }
55
+ return typeName;
56
+ },
57
+ path: [{ name: 'edges' }, { name: 'node' }],
58
+ },
59
+ },
60
+ }, edgeOptions);
61
+ return fieldRef;
62
+ };
63
+ //# sourceMappingURL=field-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-builder.js","sourceRoot":"","sources":["../src/field-builder.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,uCAQsB;AACtB,uCAA0D;AAC1D,iCAAyC;AAEzC,iCAAuC;AAEvC,yDAAuC;AAEvC,MAAM,iBAAiB,GAAG,uBAAgB,CAAC,SAI1C,CAAC;AAEF,iBAAiB,CAAC,WAAW,GAAG,SAAS,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE;IAChF,MAAM,KAAK,GAAW,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3D,MAAM,OAAO,GAAG,IAAA,sBAAe,EAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,SAAS,GAA2B,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAEpF,OAAO,IAAI,CAAC,KAAK,CAAC;QAChB,GAAG,OAAO;QACV,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,CAAC,MAAe,EAAE,IAAa,EAAE,GAAO,EAAE,IAAwB,EAAE,EAAE;YAC7E,MAAM,KAAK,GAAG,IAAA,oBAAa,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAEvC,OAAO,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAa,EAAE,GAAG,EAAE,IAAI,CAAU,CAAC;QACnE,CAAC;KACF,CAAU,CAAC;AACd,CAAC,CAAC;AAEF,iBAAiB,CAAC,gBAAgB,GAAG,SAAS,gBAAgB,CAQ5D,EACE,IAAI,EACJ,MAAM,EACN,OAAO,EACP,WAAW,EACX,OAAO,EACP,GAAG,OAAO,EAWX,EACD,iBAAqB,EACrB,WAAe;;IAEf,MAAM,GAAG,GAAG,IAAA,sBAAe,EAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,QAA4B,CAAC;IAEjC,MAAM,QAAQ,GACZ,IACD,CAAC,UAAU,CACV;QACE,GAAG,OAAO;QACV,IAAI,EAAE,GAAG;QACT,OAAO,EAAE,CACP,MAAe,EACf,IAAkD,EAClD,GAAO,EACP,IAAwB,EACxB,EAAE,CACF,IAAA,uCAA6B,EAC3B;YACE,KAAK,EAAE,IAAA,oBAAa,EAAC,GAAG,EAAE,IAAI,CAAC;YAC/B,MAAM,EAAE,MAAM;YACd,OAAO;YACP,WAAW;YACX,IAAI;SACL,EACD,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAc,EAAE,MAAM,EAAE,IAAa,EAAE,GAAG,EAAE,IAAI,CAAC,CACrE;KACJ,EACD;QACE,GAAG,iBAAiB;QACpB,UAAU,EAAE;YACV,GAAG,MAAC,iBAAoD,0CAAE,UAAU;YACpE,2BAA2B,EAAE;gBAC3B,OAAO,EAAE,GAAG,EAAE;oBACZ,IAAI,CAAC,QAAQ,EAAE;wBACb,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;qBAC7D;oBAED,OAAO,QAAQ,CAAC;gBAClB,CAAC;gBACD,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;aAC5C;SACF;KACF,EACD,WAAW,CACZ,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAU,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":""}
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ /* eslint-disable no-nested-ternary */
23
+ const fs_1 = require("fs");
24
+ const path_1 = require("path");
25
+ const typescript_1 = __importStar(require("typescript"));
26
+ const generator_helper_1 = require("@prisma/generator-helper");
27
+ (0, generator_helper_1.generatorHandler)({
28
+ onManifest: () => ({
29
+ prettyName: 'Pothos integration',
30
+ defaultOutput: 'node_modules/@pothos/plugin-prisma/generated.ts',
31
+ requiresGenerators: ['prisma-client-js'],
32
+ }),
33
+ onGenerate: async (options) => {
34
+ var _a;
35
+ const config = options.generator.config;
36
+ const prismaLocation = (_a = config.clientOutput) !== null && _a !== void 0 ? _a : options.otherGenerators.find((gen) => gen.provider.value === 'prisma-client-js').output
37
+ .value;
38
+ const importStatement = typescript_1.default.factory.createImportDeclaration([], [], typescript_1.default.factory.createImportClause(true, undefined, typescript_1.default.factory.createNamedImports([
39
+ typescript_1.default.factory.createImportSpecifier(false, undefined, typescript_1.default.factory.createIdentifier('Prisma')),
40
+ ...options.dmmf.datamodel.models.map((model) => typescript_1.default.factory.createImportSpecifier(false, undefined, typescript_1.default.factory.createIdentifier(model.name))),
41
+ ])), typescript_1.default.factory.createStringLiteral(prismaLocation));
42
+ const modelTypes = options.dmmf.datamodel.models.map((model) => {
43
+ const relations = model.fields.filter((field) => !!field.relationName);
44
+ const listRelations = model.fields.filter((field) => !!field.relationName && field.isList);
45
+ return typescript_1.default.factory.createPropertySignature([], model.name, undefined, typescript_1.default.factory.createTypeLiteralNode([
46
+ typescript_1.default.factory.createPropertySignature([], 'Shape', undefined, typescript_1.default.factory.createTypeReferenceNode(model.name)),
47
+ typescript_1.default.factory.createPropertySignature([], 'Include', undefined, relations.length > 0
48
+ ? typescript_1.default.factory.createTypeReferenceNode(`Prisma.${model.name}Include`)
49
+ : typescript_1.default.factory.createTypeReferenceNode('never')),
50
+ typescript_1.default.factory.createPropertySignature([], 'Where', undefined, typescript_1.default.factory.createTypeReferenceNode(`Prisma.${model.name}WhereUniqueInput`)),
51
+ typescript_1.default.factory.createPropertySignature([], 'Fields', undefined, relations.length > 0
52
+ ? typescript_1.default.factory.createUnionTypeNode(relations.map((field) => typescript_1.default.factory.createLiteralTypeNode(typescript_1.default.factory.createStringLiteral(field.name))))
53
+ : typescript_1.default.factory.createTypeReferenceNode('never')),
54
+ typescript_1.default.factory.createPropertySignature([], 'ListRelations', undefined, listRelations.length > 0
55
+ ? typescript_1.default.factory.createUnionTypeNode(listRelations.map((field) => typescript_1.default.factory.createLiteralTypeNode(typescript_1.default.factory.createStringLiteral(field.name))))
56
+ : typescript_1.default.factory.createTypeReferenceNode('never')),
57
+ typescript_1.default.factory.createPropertySignature([], 'Relations', undefined, typescript_1.default.factory.createTypeLiteralNode(relations.map((field) => {
58
+ const typeName = typeof field.type === 'string' ? field.type : field.type.name;
59
+ return typescript_1.default.factory.createPropertySignature([], field.name, undefined, typescript_1.default.factory.createTypeLiteralNode([
60
+ typescript_1.default.factory.createPropertySignature([], 'Shape', undefined, field.isList
61
+ ? typescript_1.default.factory.createArrayTypeNode(typescript_1.default.factory.createTypeReferenceNode(typeName))
62
+ : field.isRequired
63
+ ? typescript_1.default.factory.createTypeReferenceNode(typeName)
64
+ : typescript_1.default.factory.createUnionTypeNode([
65
+ typescript_1.default.factory.createTypeReferenceNode(typeName),
66
+ typescript_1.default.factory.createLiteralTypeNode(typescript_1.default.factory.createNull()),
67
+ ])),
68
+ typescript_1.default.factory.createPropertySignature([], 'Types', undefined, typescript_1.default.factory.createIndexedAccessTypeNode(typescript_1.default.factory.createTypeReferenceNode('PrismaTypes'), typescript_1.default.factory.createLiteralTypeNode(typescript_1.default.factory.createStringLiteral(typeName)))),
69
+ ]));
70
+ }))),
71
+ ]));
72
+ });
73
+ const prismaTypes = typescript_1.default.factory.createInterfaceDeclaration([], [
74
+ typescript_1.default.factory.createModifier(typescript_1.SyntaxKind.ExportKeyword),
75
+ typescript_1.default.factory.createModifier(typescript_1.SyntaxKind.DefaultKeyword),
76
+ ], 'PrismaTypes', [], [], modelTypes);
77
+ const printer = typescript_1.default.createPrinter({});
78
+ const sourcefile = typescript_1.default.createSourceFile(options.generator.output.value, '', typescript_1.ScriptTarget.ESNext, false, typescript_1.ScriptKind.TS);
79
+ const nodes = typescript_1.default.factory.createNodeArray([importStatement, prismaTypes]);
80
+ const result = printer.printList(typescript_1.ListFormat.SourceFileStatements, nodes, sourcefile);
81
+ await new Promise((resolve, reject) => {
82
+ (0, fs_1.mkdir)((0, path_1.dirname)(sourcefile.fileName), { recursive: true }, (err) => {
83
+ if (err) {
84
+ reject(err);
85
+ }
86
+ else {
87
+ resolve();
88
+ }
89
+ });
90
+ });
91
+ return new Promise((resolve, reject) => {
92
+ (0, fs_1.writeFile)(sourcefile.fileName, result, (err) => {
93
+ if (err) {
94
+ reject(err);
95
+ }
96
+ else {
97
+ resolve();
98
+ }
99
+ });
100
+ });
101
+ },
102
+ });
103
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import { FieldKind, FieldNullability, FieldRef, InputFieldMap, InterfaceParam, NormalizeArgs, OutputType, PluginName, SchemaTypes, ShapeFromTypeParam } from '@pothos/core';
2
+ import PrismaNodeRef from './node-ref';
3
+ import { PrismaConnectionFieldOptions, PrismaFieldOptions, PrismaModelTypes, PrismaNodeOptions, PrismaObjectTypeOptions, ShapeWithInclude } from './types';
4
+ import { PrismaPlugin } from '.';
5
+ declare global {
6
+ export namespace PothosSchemaTypes {
7
+ interface Plugins<Types extends SchemaTypes> {
8
+ prisma: PrismaPlugin<Types>;
9
+ }
10
+ interface SchemaBuilderOptions<Types extends SchemaTypes> {
11
+ prisma: {
12
+ client: {
13
+ $connect: () => Promise<void>;
14
+ };
15
+ };
16
+ }
17
+ interface UserSchemaTypes {
18
+ PrismaTypes: {};
19
+ }
20
+ interface ExtendDefaultTypes<PartialTypes extends Partial<UserSchemaTypes>> {
21
+ PrismaTypes: undefined extends PartialTypes['PrismaTypes'] ? {} : PartialTypes['PrismaTypes'] & {};
22
+ }
23
+ interface SchemaBuilder<Types extends SchemaTypes> {
24
+ prismaObject: <Name extends keyof Types['PrismaTypes'], Interfaces extends InterfaceParam<Types>[], FindUnique, Model extends PrismaModelTypes & Types['PrismaTypes'][Name], Include extends Model['Include'] = {}, Shape extends object = ShapeWithInclude<Model, Include>>(name: Name, options: PrismaObjectTypeOptions<Types, Model, Interfaces, FindUnique, Include, Shape>) => ObjectRef<Shape>;
25
+ prismaNode: 'relay' extends PluginName ? <Name extends keyof Types['PrismaTypes'], Interfaces extends InterfaceParam<Types>[], Model extends PrismaModelTypes & Types['PrismaTypes'][Name], Include extends Model['Include'] = {}, Shape extends object = ShapeWithInclude<Model, Include>>(name: Name, options: PrismaNodeOptions<Types, Model, Interfaces, Include, Shape>) => PrismaNodeRef<Shape> : '@pothos/plugin-relay is required to use this method';
26
+ }
27
+ interface RootFieldBuilder<Types extends SchemaTypes, ParentShape, Kind extends FieldKind = FieldKind> {
28
+ prismaField: <Args extends InputFieldMap, TypeParam extends keyof Types['PrismaTypes'] | [keyof Types['PrismaTypes']], Nullable extends FieldNullability<Type>, ResolveReturnShape, Type extends TypeParam extends [keyof Types['PrismaTypes']] ? [ObjectRef<Model['Shape']>] : ObjectRef<Model['Shape']>, Model extends PrismaModelTypes = PrismaModelTypes & (TypeParam extends [keyof Types['PrismaTypes']] ? Types['PrismaTypes'][TypeParam[0]] : TypeParam extends keyof Types['PrismaTypes'] ? Types['PrismaTypes'][TypeParam] : never)>(options: PrismaFieldOptions<Types, ParentShape, TypeParam, Model, Type, Args, Nullable, ResolveReturnShape, Kind>) => FieldRef<ShapeFromTypeParam<Types, Type, Nullable>>;
29
+ prismaConnection: 'relay' extends PluginName ? <Type extends keyof Types['PrismaTypes'], Nullable extends boolean, ResolveReturnShape, Args extends InputFieldMap = {}, Model extends PrismaModelTypes = PrismaModelTypes & Types['PrismaTypes'][Type]>(...args: NormalizeArgs<[
30
+ options: PrismaConnectionFieldOptions<Types, ParentShape, Type, Model, ObjectRef<Model['Shape']>, Nullable, Args, ResolveReturnShape, Kind>,
31
+ connectionOptions?: ConnectionObjectOptions<Types, ObjectRef<Model['Shape']>, ResolveReturnShape>,
32
+ edgeOptions?: ConnectionEdgeObjectOptions<Types, ObjectRef<Model['Shape']>, ResolveReturnShape>
33
+ ]>) => FieldRef<ConnectionShapeHelper<Types, Model['Shape'], Nullable>['shape']> : '@pothos/plugin-relay is required to use this method';
34
+ }
35
+ interface ConnectionFieldOptions<Types extends SchemaTypes, ParentShape, Type extends OutputType<Types>, Nullable extends boolean, Args extends InputFieldMap, ResolveReturnShape> {
36
+ }
37
+ interface ConnectionObjectOptions<Types extends SchemaTypes, Type extends OutputType<Types>, Resolved> {
38
+ }
39
+ interface ConnectionEdgeObjectOptions<Types extends SchemaTypes, Type extends OutputType<Types>, Resolved> {
40
+ }
41
+ interface DefaultConnectionArguments {
42
+ first?: number | null | undefined;
43
+ last?: number | null | undefined;
44
+ before?: string | null | undefined;
45
+ after?: string | null | undefined;
46
+ }
47
+ interface ConnectionShapeHelper<Types extends SchemaTypes, T, Nullable> {
48
+ shape: unknown;
49
+ }
50
+ }
51
+ }
52
+ //# sourceMappingURL=global-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-types.d.ts","sourceRoot":"","sources":["../src/global-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=global-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-types.js","sourceRoot":"","sources":["../src/global-types.ts"],"names":[],"mappings":""}
package/lib/index.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ import './global-types';
2
+ import './field-builder';
3
+ import './schema-builder';
4
+ import { BasePlugin, BuildCache, SchemaTypes } from '@pothos/core';
5
+ export * from './types';
6
+ declare const pluginName: "prisma";
7
+ export default pluginName;
8
+ export declare class PrismaPlugin<Types extends SchemaTypes> extends BasePlugin<Types> {
9
+ constructor(cache: BuildCache<Types>);
10
+ }
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,CAAC;AACxB,OAAO,iBAAiB,CAAC;AACzB,OAAO,kBAAkB,CAAC;AAC1B,OAAsB,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAElF,cAAc,SAAS,CAAC;AAExB,QAAA,MAAM,UAAU,UAAoB,CAAC;AAErC,eAAe,UAAU,CAAC;AAE1B,qBAAa,YAAY,CAAC,KAAK,SAAS,WAAW,CAAE,SAAQ,UAAU,CAAC,KAAK,CAAC;gBAChE,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC;CAGrC"}
package/lib/index.js ADDED
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
22
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.PrismaPlugin = void 0;
26
+ require("./global-types");
27
+ require("./field-builder");
28
+ require("./schema-builder");
29
+ const core_1 = __importStar(require("@pothos/core"));
30
+ __exportStar(require("./types"), exports);
31
+ const pluginName = 'prisma';
32
+ exports.default = pluginName;
33
+ class PrismaPlugin extends core_1.BasePlugin {
34
+ constructor(cache) {
35
+ super(cache, pluginName);
36
+ }
37
+ }
38
+ exports.PrismaPlugin = PrismaPlugin;
39
+ core_1.default.registerPlugin(pluginName, PrismaPlugin);
40
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0BAAwB;AACxB,2BAAyB;AACzB,4BAA0B;AAC1B,qDAAkF;AAElF,0CAAwB;AAExB,MAAM,UAAU,GAAG,QAAiB,CAAC;AAErC,kBAAe,UAAU,CAAC;AAE1B,MAAa,YAAwC,SAAQ,iBAAiB;IAC5E,YAAY,KAAwB;QAClC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAC3B,CAAC;CACF;AAJD,oCAIC;AAED,cAAa,CAAC,cAAc,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { GraphQLResolveInfo } from 'graphql';
2
+ import { LoaderMappings } from './types';
3
+ export declare function cacheKey(path: GraphQLResolveInfo['path'], subPath: string[]): string;
4
+ export declare function setLoaderMappings(ctx: object, path: GraphQLResolveInfo['path'], value: LoaderMappings): void;
5
+ export declare function getLoaderMapping(ctx: object, path: GraphQLResolveInfo['path']): LoaderMappings | null;
6
+ //# sourceMappingURL=loader-map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader-map.d.ts","sourceRoot":"","sources":["../src/loader-map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAIzC,wBAAgB,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,UAgB3E;AAED,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAChC,KAAK,EAAE,cAAc,QAatB;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,yBAK7E"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getLoaderMapping = exports.setLoaderMappings = exports.cacheKey = void 0;
4
+ const core_1 = require("@pothos/core");
5
+ const cache = (0, core_1.createContextCache)((ctx) => new Map());
6
+ function cacheKey(path, subPath) {
7
+ let key = '';
8
+ let current = path;
9
+ while (current) {
10
+ if (typeof current.key === 'string') {
11
+ key = key ? `${current.key}.${key}` : current.key;
12
+ }
13
+ current = current.prev;
14
+ }
15
+ for (const entry of subPath) {
16
+ key = `${key}.${entry}`;
17
+ }
18
+ return key;
19
+ }
20
+ exports.cacheKey = cacheKey;
21
+ function setLoaderMappings(ctx, path, value) {
22
+ Object.keys(value).forEach((field) => {
23
+ var _a;
24
+ const map = cache(ctx);
25
+ for (const mapping of value[field]) {
26
+ const selectionName = (_a = mapping.alias) !== null && _a !== void 0 ? _a : mapping.field;
27
+ const subPath = [...mapping.indirectPath, selectionName];
28
+ const key = cacheKey(path, subPath);
29
+ map.set(key, mapping.mappings);
30
+ }
31
+ });
32
+ }
33
+ exports.setLoaderMappings = setLoaderMappings;
34
+ function getLoaderMapping(ctx, path) {
35
+ var _a;
36
+ const map = cache(ctx);
37
+ const key = cacheKey(path, []);
38
+ return (_a = map.get(key)) !== null && _a !== void 0 ? _a : null;
39
+ }
40
+ exports.getLoaderMapping = getLoaderMapping;
41
+ //# sourceMappingURL=loader-map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader-map.js","sourceRoot":"","sources":["../src/loader-map.ts"],"names":[],"mappings":";;;AACA,uCAAkD;AAGlD,MAAM,KAAK,GAAG,IAAA,yBAAkB,EAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,EAA0B,CAAC,CAAC;AAE7E,SAAgB,QAAQ,CAAC,IAAgC,EAAE,OAAiB;IAC1E,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,OAAO,GAA2C,IAAI,CAAC;IAE3D,OAAO,OAAO,EAAE;QACd,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,EAAE;YACnC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;SACnD;QACD,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;KACxB;IAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;QAC3B,GAAG,GAAG,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;KACzB;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAhBD,4BAgBC;AAED,SAAgB,iBAAiB,CAC/B,GAAW,EACX,IAAgC,EAChC,KAAqB;IAErB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;;QACnC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QAEvB,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;YAClC,MAAM,aAAa,GAAG,MAAA,OAAO,CAAC,KAAK,mCAAI,OAAO,CAAC,KAAK,CAAC;YACrD,MAAM,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;YACzD,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAEpC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;SAChC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAhBD,8CAgBC;AAED,SAAgB,gBAAgB,CAAC,GAAW,EAAE,IAAgC;;IAC5E,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAE/B,OAAO,MAAA,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,mCAAI,IAAI,CAAC;AAC9B,CAAC;AALD,4CAKC"}
@@ -0,0 +1,17 @@
1
+ import { SchemaTypes } from '@pothos/core';
2
+ import { PrismaDelegate } from './types';
3
+ export declare class ModelLoader {
4
+ model: object;
5
+ delegate: PrismaDelegate;
6
+ findUnique: (args: unknown, ctx: {}) => unknown;
7
+ staged: Set<{
8
+ promise: Promise<Record<string, unknown>>;
9
+ include: Record<string, unknown>;
10
+ }>;
11
+ constructor(model: object, delegate: PrismaDelegate, findUnique: (args: unknown, ctx: {}) => unknown);
12
+ static forModel<Types extends SchemaTypes>(modelName: string, builder: PothosSchemaTypes.SchemaBuilder<Types>): (model: object) => ModelLoader;
13
+ loadCount(relation: string, context: {}): Promise<number>;
14
+ loadRelation(relation: string, include: unknown, context: {}): Promise<unknown>;
15
+ initLoad(relation: string, includeArg: unknown, context: {}, count?: boolean): Promise<Record<string, unknown>>;
16
+ }
17
+ //# sourceMappingURL=model-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-loader.d.ts","sourceRoot":"","sources":["../src/model-loader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,WAAW,EAAE,MAAM,cAAc,CAAC;AAE/D,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAKzC,qBAAa,WAAW;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,cAAc,CAAC;IACzB,UAAU,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,KAAK,OAAO,CAAC;IAEhD,MAAM;iBACK,QAAQ,OAAO,MAAM,EAAE,OAAO,CAAC,CAAC;iBAChC,OAAO,MAAM,EAAE,OAAO,CAAC;OAC7B;gBAGH,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,cAAc,EACxB,UAAU,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,KAAK,OAAO;IAOjD,MAAM,CAAC,QAAQ,CAAC,KAAK,SAAS,WAAW,EACvC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC;IAiB3C,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAoBzD,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;IA8B5D,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,UAAQ;CAoCjF"}
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModelLoader = void 0;
4
+ /* eslint-disable prefer-destructuring */
5
+ /* eslint-disable no-underscore-dangle */
6
+ const core_1 = require("@pothos/core");
7
+ const refs_1 = require("./refs");
8
+ const util_1 = require("./util");
9
+ const loaderCache = new WeakMap();
10
+ class ModelLoader {
11
+ constructor(model, delegate, findUnique) {
12
+ this.staged = new Set();
13
+ this.model = model;
14
+ this.delegate = delegate;
15
+ this.findUnique = findUnique;
16
+ }
17
+ static forModel(modelName, builder) {
18
+ const delegate = (0, refs_1.getDelegateFromModel)(builder.options.prisma.client, modelName);
19
+ if (!loaderCache.has(delegate)) {
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);
25
+ }
26
+ async loadCount(relation, context) {
27
+ let promise;
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 loadRelation(relation, include, context) {
43
+ let promise;
44
+ for (const entry of this.staged) {
45
+ if (entry.include[relation] === undefined) {
46
+ promise = entry.promise;
47
+ entry.include[relation] = include;
48
+ break;
49
+ }
50
+ const merged = (0, util_1.mergeIncludes)(entry.include[relation], include);
51
+ if (merged) {
52
+ entry.include[relation] = merged;
53
+ break;
54
+ }
55
+ }
56
+ if (!promise) {
57
+ promise = this.initLoad(relation, include, context);
58
+ }
59
+ const result = await promise;
60
+ return result[relation];
61
+ }
62
+ async initLoad(relation, includeArg, context, count = false) {
63
+ const include = count
64
+ ? {
65
+ _count: {
66
+ select: {
67
+ [relation]: true,
68
+ },
69
+ },
70
+ }
71
+ : {
72
+ [relation]: includeArg,
73
+ };
74
+ const promise = new Promise((resolve, reject) => {
75
+ setTimeout(() => {
76
+ this.staged.delete(entry);
77
+ resolve(this.delegate.findUnique({
78
+ rejectOnNotFound: true,
79
+ where: { ...this.findUnique(this.model, context) },
80
+ include,
81
+ }));
82
+ }, 0);
83
+ });
84
+ const entry = {
85
+ promise,
86
+ include,
87
+ };
88
+ this.staged.add(entry);
89
+ return promise;
90
+ }
91
+ }
92
+ exports.ModelLoader = ModelLoader;
93
+ //# sourceMappingURL=model-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-loader.js","sourceRoot":"","sources":["../src/model-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { abstractReturnShapeKey, ObjectRef } from '@pothos/core';
2
+ import { WithBrand } from './types';
3
+ export default class PrismaNodeRef<T> extends ObjectRef<T, T> {
4
+ [abstractReturnShapeKey]: WithBrand<T>;
5
+ addBrand<V extends T | T[]>(value: V): V extends T[] ? {
6
+ [K in keyof V]: WithBrand<V[K]>;
7
+ } : WithBrand<V>;
8
+ hasBrand(value: unknown): boolean;
9
+ }
10
+ //# sourceMappingURL=node-ref.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-ref.d.ts","sourceRoot":"","sources":["../src/node-ref.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAiB,SAAS,EAAgB,MAAM,cAAc,CAAC;AAC9F,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,MAAM,CAAC,OAAO,OAAO,aAAa,CAAC,CAAC,CAAE,SAAQ,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3D,CAAC,sBAAsB,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAEvC,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EACxB,KAAK,EAAE,CAAC,GACP,CAAC,SAAS,CAAC,EAAE,GAAG;SAAG,CAAC,IAAI,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAAE,GAAG,SAAS,CAAC,CAAC,CAAC;IAYrE,QAAQ,CAAC,KAAK,EAAE,OAAO;CAQxB"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@pothos/core");
4
+ class PrismaNodeRef extends core_1.ObjectRef {
5
+ addBrand(value) {
6
+ if (Array.isArray(value)) {
7
+ value.forEach((val) => void (0, core_1.brandWithType)(val, this.name));
8
+ return value;
9
+ }
10
+ (0, core_1.brandWithType)(value, this.name);
11
+ return value;
12
+ }
13
+ hasBrand(value) {
14
+ return (typeof value === 'object' &&
15
+ value !== null &&
16
+ core_1.typeBrandKey in value &&
17
+ value[core_1.typeBrandKey] === this.name);
18
+ }
19
+ }
20
+ exports.default = PrismaNodeRef;
21
+ //# sourceMappingURL=node-ref.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-ref.js","sourceRoot":"","sources":["../src/node-ref.ts"],"names":[],"mappings":";;AAAA,uCAA8F;AAG9F,MAAqB,aAAiB,SAAQ,gBAAe;IAG3D,QAAQ,CACN,KAAQ;QAER,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACxB,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,IAAA,oBAAa,EAAC,GAAG,EAAE,IAAI,CAAC,IAAa,CAAC,CAAC,CAAC;YAEpE,OAAO,KAAc,CAAC;SACvB;QAED,IAAA,oBAAa,EAAC,KAAK,EAAE,IAAI,CAAC,IAAa,CAAC,CAAC;QAEzC,OAAO,KAAc,CAAC;IACxB,CAAC;IAED,QAAQ,CAAC,KAAc;QACrB,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;YACzB,KAAK,KAAK,IAAI;YACd,mBAAY,IAAI,KAAK;YACpB,KAAsC,CAAC,mBAAY,CAAC,KAAK,IAAI,CAAC,IAAI,CACpE,CAAC;IACJ,CAAC;CACF;AAzBD,gCAyBC"}
@@ -0,0 +1,22 @@
1
+ import { FieldRef, InputFieldMap, NormalizeArgs, ObjectFieldBuilder, ObjectRef, PluginName, SchemaTypes } from '@pothos/core';
2
+ import { PrismaDelegate, PrismaModelTypes, RelatedConnectionOptions, RelatedFieldOptions, RelationCountOptions } from './types';
3
+ export declare class PrismaObjectFieldBuilder<Types extends SchemaTypes, Model extends PrismaModelTypes, NeedsResolve extends boolean, Shape extends object = Model['Shape']> extends ObjectFieldBuilder<Types, Shape> {
4
+ delegate: PrismaDelegate;
5
+ model: string;
6
+ relatedConnection: 'relay' extends PluginName ? <Field extends Model['ListRelations'], Nullable extends boolean, Args extends InputFieldMap, ResolveReturnShape>(...args: NormalizeArgs<[
7
+ field: Field,
8
+ options: RelatedConnectionOptions<Types, Model, Field, Nullable, Args, NeedsResolve>,
9
+ connectionOptions?: PothosSchemaTypes.ConnectionObjectOptions<Types, ObjectRef<Shape>, ResolveReturnShape>,
10
+ edgeOptions?: PothosSchemaTypes.ConnectionEdgeObjectOptions<Types, ObjectRef<Shape>, ResolveReturnShape>
11
+ ]>) => FieldRef<PothosSchemaTypes.ConnectionShapeHelper<Types, Shape, Nullable>['shape']> : '@pothos/plugin-relay is required to use this method';
12
+ constructor(name: string, builder: PothosSchemaTypes.SchemaBuilder<Types>, model: string);
13
+ relation<Field extends Model['Fields'], Nullable extends boolean, Args extends InputFieldMap, ResolveReturnShape>(...allArgs: NormalizeArgs<[
14
+ name: Field,
15
+ options?: RelatedFieldOptions<Types, Model, Field, Nullable, Args, ResolveReturnShape, NeedsResolve, Shape>
16
+ ]>): FieldRef<Model['Relations'][Field]['Shape'], 'Object'>;
17
+ relationCount<Field extends Model['Fields']>(...allArgs: NormalizeArgs<[
18
+ name: Field,
19
+ options?: RelationCountOptions<Types, Shape, NeedsResolve>
20
+ ]>): FieldRef<number, 'Object'>;
21
+ }
22
+ //# sourceMappingURL=prisma-field-builder.d.ts.map
@@ -0,0 +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,kBAAkB,EAClB,SAAS,EACT,UAAU,EACV,WAAW,EACZ,MAAM,cAAc,CAAC;AAKtB,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,wBAAwB,EACxB,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,SAAS,CAAC;AAGjB,qBAAa,wBAAwB,CACnC,KAAK,SAAS,WAAW,EACzB,KAAK,SAAS,gBAAgB,EAC9B,YAAY,SAAS,OAAO,EAC5B,KAAK,SAAS,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CACrC,SAAQ,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC;IACxC,QAAQ,EAAE,cAAc,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IAEd,iBAAiB,EAAE,OAAO,SAAS,UAAU,GACzC,CACE,KAAK,SAAS,KAAK,CAAC,eAAe,CAAC,EACpC,QAAQ,SAAS,OAAO,EACxB,IAAI,SAAS,aAAa,EAC1B,kBAAkB,EAElB,GAAG,IAAI,EAAE,aAAa,CACpB;QACE,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,wBAAwB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC;QACpF,iBAAiB,CAAC,EAAE,iBAAiB,CAAC,uBAAuB,CAC3D,KAAK,EACL,SAAS,CAAC,KAAK,CAAC,EAChB,kBAAkB,CACnB;QACD,WAAW,CAAC,EAAE,iBAAiB,CAAC,2BAA2B,CACzD,KAAK,EACL,SAAS,CAAC,KAAK,CAAC,EAChB,kBAAkB,CACnB;KACF,CACF,KACE,QAAQ,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,GACvF,qDAAqD,CA4I9C;gBAEC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM;IAOxF,QAAQ,CACN,KAAK,SAAS,KAAK,CAAC,QAAQ,CAAC,EAC7B,QAAQ,SAAS,OAAO,EACxB,IAAI,SAAS,aAAa,EAC1B,kBAAkB,EAElB,GAAG,OAAO,EAAE,aAAa,CACvB;QACE,IAAI,EAAE,KAAK;QACX,OAAO,CAAC,EAAE,mBAAmB,CAC3B,KAAK,EACL,KAAK,EACL,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,kBAAkB,EAClB,YAAY,EACZ,KAAK,CACN;KACF,CACF,GACA,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC;IAwDzD,aAAa,CAAC,KAAK,SAAS,KAAK,CAAC,QAAQ,CAAC,EACzC,GAAG,OAAO,EAAE,aAAa,CACvB;QAAC,IAAI,EAAE,KAAK;QAAE,OAAO,CAAC,EAAE,oBAAoB,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC;KAAC,CAC1E,GACA,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;CAmC9B"}