@pothos/plugin-prisma 3.1.2 → 3.2.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 (144) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/{esm → dts}/field-builder.d.ts +0 -0
  3. package/{esm → dts}/field-builder.d.ts.map +0 -0
  4. package/{esm → dts}/generator.d.ts +0 -0
  5. package/{esm → dts}/generator.d.ts.map +0 -0
  6. package/{esm → dts}/global-types.d.ts +0 -0
  7. package/{esm → dts}/global-types.d.ts.map +0 -0
  8. package/{esm → dts}/index.d.ts +0 -0
  9. package/{esm → dts}/index.d.ts.map +0 -0
  10. package/{esm → dts}/model-loader.d.ts +0 -0
  11. package/{esm → dts}/model-loader.d.ts.map +0 -0
  12. package/{esm → dts}/node-ref.d.ts +0 -0
  13. package/{esm → dts}/node-ref.d.ts.map +0 -0
  14. package/{esm → dts}/object-ref.d.ts +0 -0
  15. package/{esm → dts}/object-ref.d.ts.map +0 -0
  16. package/{esm → dts}/prisma-field-builder.d.ts +0 -0
  17. package/{esm → dts}/prisma-field-builder.d.ts.map +0 -0
  18. package/{esm → dts}/schema-builder.d.ts +0 -0
  19. package/{esm → dts}/schema-builder.d.ts.map +0 -0
  20. package/{esm → dts}/types.d.ts +0 -0
  21. package/{esm → dts}/types.d.ts.map +0 -0
  22. package/{esm → dts}/util/cursors.d.ts +0 -0
  23. package/{esm → dts}/util/cursors.d.ts.map +0 -0
  24. package/{esm → dts}/util/datamodel.d.ts +0 -0
  25. package/{esm → dts}/util/datamodel.d.ts.map +0 -0
  26. package/{esm → dts}/util/deep-equal.d.ts +0 -0
  27. package/{esm → dts}/util/deep-equal.d.ts.map +0 -0
  28. package/{esm → dts}/util/loader-map.d.ts +0 -0
  29. package/{esm → dts}/util/loader-map.d.ts.map +0 -0
  30. package/{esm → dts}/util/map-query.d.ts +0 -0
  31. package/{esm → dts}/util/map-query.d.ts.map +0 -0
  32. package/{esm → dts}/util/relation-map.d.ts +0 -0
  33. package/{esm → dts}/util/relation-map.d.ts.map +0 -0
  34. package/{esm → dts}/util/selections.d.ts +0 -0
  35. package/{esm → dts}/util/selections.d.ts.map +0 -0
  36. package/esm/field-builder.js +37 -29
  37. package/esm/field-builder.js.map +1 -1
  38. package/esm/generator.js +27 -31
  39. package/esm/generator.js.map +1 -1
  40. package/esm/global-types.js +1 -1
  41. package/esm/global-types.js.map +1 -1
  42. package/esm/index.js +12 -14
  43. package/esm/index.js.map +1 -1
  44. package/esm/model-loader.js +11 -9
  45. package/esm/model-loader.js.map +1 -1
  46. package/esm/node-ref.js +3 -5
  47. package/esm/node-ref.js.map +1 -1
  48. package/esm/object-ref.js.map +1 -1
  49. package/esm/prisma-field-builder.js +147 -113
  50. package/esm/prisma-field-builder.js.map +1 -1
  51. package/esm/schema-builder.js +24 -21
  52. package/esm/schema-builder.js.map +1 -1
  53. package/esm/types.js +0 -1
  54. package/esm/types.js.map +1 -1
  55. package/esm/util/cursors.js +22 -25
  56. package/esm/util/cursors.js.map +1 -1
  57. package/esm/util/datamodel.js +8 -7
  58. package/esm/util/datamodel.js.map +1 -1
  59. package/esm/util/deep-equal.js +1 -2
  60. package/esm/util/deep-equal.js.map +1 -1
  61. package/esm/util/loader-map.js +6 -3
  62. package/esm/util/loader-map.js.map +1 -1
  63. package/esm/util/map-query.js +53 -30
  64. package/esm/util/map-query.js.map +1 -1
  65. package/esm/util/relation-map.js +6 -4
  66. package/esm/util/relation-map.js.map +1 -1
  67. package/esm/util/selections.js +14 -19
  68. package/esm/util/selections.js.map +1 -1
  69. package/jest.config.js +6 -0
  70. package/lib/field-builder.js +92 -61
  71. package/lib/field-builder.js.map +1 -1
  72. package/lib/generator.js +94 -94
  73. package/lib/generator.js.map +1 -1
  74. package/lib/global-types.js +4 -1
  75. package/lib/global-types.js.map +1 -1
  76. package/lib/index.js +76 -53
  77. package/lib/index.js.map +1 -1
  78. package/lib/model-loader.js +26 -21
  79. package/lib/model-loader.js.map +1 -1
  80. package/lib/node-ref.js +12 -10
  81. package/lib/node-ref.js.map +1 -1
  82. package/lib/object-ref.js +9 -5
  83. package/lib/object-ref.js.map +1 -1
  84. package/lib/prisma-field-builder.js +169 -124
  85. package/lib/prisma-field-builder.js.map +1 -1
  86. package/lib/schema-builder.js +76 -71
  87. package/lib/schema-builder.js.map +1 -1
  88. package/lib/types.js +6 -3
  89. package/lib/types.js.map +1 -1
  90. package/lib/util/cursors.js +41 -41
  91. package/lib/util/cursors.js.map +1 -1
  92. package/lib/util/datamodel.js +39 -30
  93. package/lib/util/datamodel.js.map +1 -1
  94. package/lib/util/deep-equal.js +8 -7
  95. package/lib/util/deep-equal.js.map +1 -1
  96. package/lib/util/loader-map.js +21 -15
  97. package/lib/util/loader-map.js.map +1 -1
  98. package/lib/util/map-query.js +89 -67
  99. package/lib/util/map-query.js.map +1 -1
  100. package/lib/util/relation-map.js +19 -12
  101. package/lib/util/relation-map.js.map +1 -1
  102. package/lib/util/selections.js +44 -48
  103. package/lib/util/selections.js.map +1 -1
  104. package/package.json +18 -17
  105. package/src/field-builder.ts +1 -1
  106. package/src/prisma-field-builder.ts +4 -4
  107. package/src/schema-builder.ts +1 -10
  108. package/tsconfig.json +7 -14
  109. package/tsconfig.type.json +10 -0
  110. package/tsconfig.type.tsbuildinfo +1 -0
  111. package/lib/field-builder.d.ts +0 -2
  112. package/lib/field-builder.d.ts.map +0 -1
  113. package/lib/generator.d.ts +0 -2
  114. package/lib/generator.d.ts.map +0 -1
  115. package/lib/global-types.d.ts +0 -70
  116. package/lib/global-types.d.ts.map +0 -1
  117. package/lib/index.d.ts +0 -14
  118. package/lib/index.d.ts.map +0 -1
  119. package/lib/model-loader.d.ts +0 -17
  120. package/lib/model-loader.d.ts.map +0 -1
  121. package/lib/node-ref.d.ts +0 -12
  122. package/lib/node-ref.d.ts.map +0 -1
  123. package/lib/object-ref.d.ts +0 -7
  124. package/lib/object-ref.d.ts.map +0 -1
  125. package/lib/prisma-field-builder.d.ts +0 -47
  126. package/lib/prisma-field-builder.d.ts.map +0 -1
  127. package/lib/schema-builder.d.ts +0 -2
  128. package/lib/schema-builder.d.ts.map +0 -1
  129. package/lib/types.d.ts +0 -174
  130. package/lib/types.d.ts.map +0 -1
  131. package/lib/util/cursors.d.ts +0 -57
  132. package/lib/util/cursors.d.ts.map +0 -1
  133. package/lib/util/datamodel.d.ts +0 -16
  134. package/lib/util/datamodel.d.ts.map +0 -1
  135. package/lib/util/deep-equal.d.ts +0 -2
  136. package/lib/util/deep-equal.d.ts.map +0 -1
  137. package/lib/util/loader-map.d.ts +0 -6
  138. package/lib/util/loader-map.d.ts.map +0 -1
  139. package/lib/util/map-query.d.ts +0 -6
  140. package/lib/util/map-query.d.ts.map +0 -1
  141. package/lib/util/relation-map.d.ts +0 -9
  142. package/lib/util/relation-map.d.ts.map +0 -1
  143. package/lib/util/selections.d.ts +0 -20
  144. package/lib/util/selections.d.ts.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # Change Log
2
2
 
3
+ ## 3.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 6279235f: Update build process to use swc and move type definitions to dts directory
8
+
9
+ ### Patch Changes
10
+
11
+ - 21a2454e: update dev dependencies
12
+
3
13
  ## 3.1.2
4
14
 
5
15
  ### Patch Changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,4 +1,4 @@
1
- import { RootFieldBuilder, } from '@pothos/core';
1
+ import { RootFieldBuilder } from '@pothos/core';
2
2
  import { resolvePrismaCursorConnection } from './util/cursors.js';
3
3
  import { getCursorFormatter, getCursorParser, getRefFromModel } from './util/datamodel.js';
4
4
  import { queryFromInfo } from './util/map-query.js';
@@ -6,58 +6,66 @@ export * from './prisma-field-builder.js';
6
6
  const fieldBuilderProto = RootFieldBuilder.prototype;
7
7
  fieldBuilderProto.prismaField = function prismaField({ type, resolve, ...options }) {
8
8
  const modelOrRef = Array.isArray(type) ? type[0] : type;
9
- const typeRef = typeof modelOrRef === "string"
10
- ? getRefFromModel(modelOrRef, this.builder)
11
- : modelOrRef;
12
- const typeParam = Array.isArray(type) ? [typeRef] : typeRef;
9
+ const typeRef = typeof modelOrRef === "string" ? getRefFromModel(modelOrRef, this.builder) : modelOrRef;
10
+ const typeParam = Array.isArray(type) ? [
11
+ typeRef
12
+ ] : typeRef;
13
13
  return this.field({
14
14
  ...options,
15
15
  type: typeParam,
16
16
  resolve: (parent, args, ctx, info) => {
17
17
  const query = queryFromInfo(ctx, info);
18
18
  return resolve(query, parent, args, ctx, info);
19
- },
19
+ }
20
20
  });
21
21
  };
22
22
  fieldBuilderProto.prismaConnection = function prismaConnection({ type, cursor, maxSize, defaultSize, resolve, totalCount, ...options }, connectionOptions = {}, edgeOptions = {}) {
23
- var _a;
24
- const ref = typeof type === "string" ? getRefFromModel(type, this.builder) : type;
25
- const typeName = this.builder.configStore.getTypeConfig(ref).name;
26
- const model = (_a = this.builder.configStore.getTypeConfig(ref).extensions) === null || _a === void 0 ? void 0 : _a.pothosPrismaModel;
23
+ var ref3, ref1;
24
+ const ref2 = typeof type === "string" ? getRefFromModel(type, this.builder) : type;
25
+ const typeName = this.builder.configStore.getTypeConfig(ref2).name;
26
+ const model = (ref3 = this.builder.configStore.getTypeConfig(ref2).extensions) === null || ref3 === void 0 ? void 0 : ref3.pothosPrismaModel;
27
27
  const formatCursor = getCursorFormatter(model, this.builder, cursor);
28
28
  const parseCursor = getCursorParser(model, this.builder, cursor);
29
29
  const fieldRef = this.connection({
30
30
  ...options,
31
- type: ref,
31
+ type: ref2,
32
32
  resolve: (parent, args, ctx, info) => resolvePrismaCursorConnection({
33
33
  query: queryFromInfo(ctx, info),
34
34
  parseCursor,
35
35
  maxSize,
36
36
  defaultSize,
37
37
  args,
38
- totalCount: totalCount && (() => totalCount(parent, args, ctx, info)),
39
- }, formatCursor, (query) => resolve(query, parent, args, ctx, info)),
38
+ totalCount: totalCount && (() => totalCount(parent, args, ctx, info))
39
+ }, formatCursor, (query) => resolve(query, parent, args, ctx, info))
40
40
  }, {
41
41
  ...connectionOptions,
42
- fields: totalCount
43
- ? (t) => {
44
- var _a, _b;
45
- return ({
46
- totalCount: t.int({
47
- nullable: false,
48
- resolve: (parent, args, context) => { var _a; return (_a = parent.totalCount) === null || _a === void 0 ? void 0 : _a.call(parent); },
49
- }),
50
- ...(_b = (_a = connectionOptions).fields) === null || _b === void 0 ? void 0 : _b.call(_a, t),
51
- });
52
- }
53
- : connectionOptions.fields,
42
+ fields: totalCount ? (t) => {
43
+ var _obj, ref4;
44
+ return {
45
+ totalCount: t.int({
46
+ nullable: false,
47
+ resolve: (parent, args, context) => {
48
+ var ref;
49
+ return (ref = parent.totalCount) === null || ref === void 0 ? void 0 : ref.call(parent);
50
+ }
51
+ }),
52
+ ...(ref4 = (_obj = connectionOptions).fields) === null || ref4 === void 0 ? void 0 : ref4.call(_obj, t)
53
+ };
54
+ } : connectionOptions.fields,
54
55
  extensions: {
55
- ...connectionOptions === null || connectionOptions === void 0 ? void 0 : connectionOptions.extensions,
56
+ ...(ref1 = connectionOptions) === null || ref1 === void 0 ? void 0 : ref1.extensions,
56
57
  pothosPrismaIndirectInclude: {
57
58
  getType: () => typeName,
58
- path: [{ name: "edges" }, { name: "node" }],
59
- },
60
- },
59
+ path: [
60
+ {
61
+ name: "edges"
62
+ },
63
+ {
64
+ name: "node"
65
+ }
66
+ ]
67
+ }
68
+ }
61
69
  }, edgeOptions);
62
70
  return fieldRef;
63
71
  };
@@ -1 +1 @@
1
- {"version":3,"file":"field-builder.js","sourceRoot":"","sources":["../src/field-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../src/field-builder.ts"],"sourcesContent":["import { GraphQLResolveInfo } from 'graphql';\nimport {\n FieldKind,\n FieldRef,\n InputFieldMap,\n MaybePromise,\n ObjectRef,\n RootFieldBuilder,\n SchemaTypes,\n} from '@pothos/core';\nimport { PrismaConnectionFieldOptions, PrismaModelTypes } from './types';\nimport { resolvePrismaCursorConnection } from './util/cursors';\nimport { getCursorFormatter, getCursorParser, getRefFromModel } from './util/datamodel';\nimport { queryFromInfo } from './util/map-query';\n\nexport * from './prisma-field-builder';\n\nconst fieldBuilderProto = RootFieldBuilder.prototype as PothosSchemaTypes.RootFieldBuilder<\n SchemaTypes,\n unknown,\n FieldKind\n>;\n\nfieldBuilderProto.prismaField = function prismaField({ type, resolve, ...options }) {\n const modelOrRef = Array.isArray(type) ? type[0] : type;\n const typeRef =\n typeof modelOrRef === 'string'\n ? getRefFromModel(modelOrRef, this.builder)\n : (modelOrRef as ObjectRef<unknown>);\n const typeParam = Array.isArray(type) ? ([typeRef] as [ObjectRef<unknown>]) : typeRef;\n\n return this.field({\n ...(options as {}),\n type: typeParam,\n resolve: (parent: unknown, args: unknown, ctx: {}, info: GraphQLResolveInfo) => {\n const query = queryFromInfo(ctx, info);\n\n return resolve(query, parent, args as never, ctx, info) as never;\n },\n }) as never;\n};\n\nfieldBuilderProto.prismaConnection = function prismaConnection<\n Type extends keyof SchemaTypes['PrismaTypes'],\n Nullable extends boolean,\n ResolveReturnShape,\n Args extends InputFieldMap,\n Model extends PrismaModelTypes,\n>(\n this: typeof fieldBuilderProto,\n {\n type,\n cursor,\n maxSize,\n defaultSize,\n resolve,\n totalCount,\n ...options\n }: PrismaConnectionFieldOptions<\n SchemaTypes,\n unknown,\n Type,\n Model,\n ObjectRef<{}>,\n Nullable,\n Args,\n ResolveReturnShape,\n FieldKind\n >,\n connectionOptions: {} = {},\n edgeOptions: {} = {},\n) {\n const ref = typeof type === 'string' ? getRefFromModel(type, this.builder) : type;\n const typeName = this.builder.configStore.getTypeConfig(ref).name;\n\n const model = this.builder.configStore.getTypeConfig(ref).extensions?.pothosPrismaModel as string;\n\n const formatCursor = getCursorFormatter(model, this.builder, cursor);\n const parseCursor = getCursorParser(model, this.builder, cursor);\n\n const fieldRef = (\n this as typeof fieldBuilderProto & { connection: (...args: unknown[]) => FieldRef<unknown> }\n ).connection(\n {\n ...options,\n type: ref,\n resolve: (\n parent: unknown,\n args: PothosSchemaTypes.DefaultConnectionArguments,\n ctx: {},\n info: GraphQLResolveInfo,\n ) =>\n resolvePrismaCursorConnection(\n {\n query: queryFromInfo(ctx, info),\n parseCursor,\n maxSize,\n defaultSize,\n args,\n totalCount: totalCount && (() => totalCount(parent, args as never, ctx, info)),\n },\n formatCursor,\n (query) => resolve(query as never, parent, args as never, ctx, info),\n ),\n },\n {\n ...connectionOptions,\n fields: totalCount\n ? (\n t: PothosSchemaTypes.ObjectFieldBuilder<\n SchemaTypes,\n { totalCount?: () => MaybePromise<number> }\n >,\n ) => ({\n totalCount: t.int({\n nullable: false,\n resolve: (parent, args, context) => parent.totalCount?.(),\n }),\n ...(connectionOptions as { fields?: (t: unknown) => {} }).fields?.(t),\n })\n : (connectionOptions as { fields: undefined }).fields,\n extensions: {\n ...(connectionOptions as Record<string, {}> | undefined)?.extensions,\n pothosPrismaIndirectInclude: {\n getType: () => typeName,\n path: [{ name: 'edges' }, { name: 'node' }],\n },\n },\n },\n edgeOptions,\n );\n\n return fieldRef;\n} as never;\n"],"names":["RootFieldBuilder","resolvePrismaCursorConnection","getCursorFormatter","getCursorParser","getRefFromModel","queryFromInfo","fieldBuilderProto","prototype","prismaField","type","resolve","options","modelOrRef","Array","isArray","typeRef","builder","typeParam","field","parent","args","ctx","info","query","prismaConnection","cursor","maxSize","defaultSize","totalCount","connectionOptions","edgeOptions","ref","typeName","configStore","getTypeConfig","name","model","extensions","pothosPrismaModel","formatCursor","parseCursor","fieldRef","connection","fields","t","int","nullable","context","pothosPrismaIndirectInclude","getType","path"],"mappings":"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"}
package/esm/generator.js CHANGED
@@ -1,10 +1,12 @@
1
- /* eslint-disable no-magic-numbers */
2
- /* eslint-disable no-nested-ternary */
3
- import { mkdir, writeFile } from 'fs';
1
+ /* eslint-disable no-magic-numbers */ /* eslint-disable no-nested-ternary */ import { mkdir, writeFile } from 'fs';
4
2
  import { dirname } from 'path';
5
3
  import ts, { ListFormat, ScriptKind, ScriptTarget, SyntaxKind, version } from 'typescript';
6
4
  import { generatorHandler } from '@prisma/generator-helper';
7
- const MIN_TS_VERSION = [4, 5, 2];
5
+ const MIN_TS_VERSION = [
6
+ 4,
7
+ 5,
8
+ 2
9
+ ];
8
10
  function checkTSVersion() {
9
11
  const versionParts = version.split(/[.-]/g);
10
12
  for (let i = 0; i < 3; i += 1) {
@@ -21,14 +23,15 @@ generatorHandler({
21
23
  onManifest: () => ({
22
24
  prettyName: "Pothos integration",
23
25
  defaultOutput: "node_modules/@pothos/plugin-prisma/generated.ts",
24
- requiresGenerators: ["prisma-client-js"],
26
+ requiresGenerators: [
27
+ "prisma-client-js"
28
+ ]
25
29
  }),
26
30
  onGenerate: async (options) => {
27
- var _a;
28
31
  checkTSVersion();
29
32
  const config = options.generator.config;
30
- const prismaLocation = (_a = config.clientOutput) !== null && _a !== void 0 ? _a : options.otherGenerators.find((gen) => gen.provider.value === "prisma-client-js").output
31
- .value;
33
+ var _clientOutput;
34
+ const prismaLocation = (_clientOutput = config.clientOutput) !== null && _clientOutput !== void 0 ? _clientOutput : options.otherGenerators.find((gen) => gen.provider.value === "prisma-client-js").output.value;
32
35
  const importStatement = ts.factory.createImportDeclaration([], [], ts.factory.createImportClause(true, undefined, ts.factory.createNamedImports([
33
36
  ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier("Prisma")),
34
37
  ...options.dmmf.datamodel.models.map((model) => ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier(model.name))),
@@ -39,31 +42,19 @@ generatorHandler({
39
42
  return ts.factory.createPropertySignature([], model.name, undefined, ts.factory.createTypeLiteralNode([
40
43
  ts.factory.createPropertySignature([], "Name", undefined, ts.factory.createLiteralTypeNode(ts.factory.createStringLiteral(model.name))),
41
44
  ts.factory.createPropertySignature([], "Shape", undefined, ts.factory.createTypeReferenceNode(model.name)),
42
- ts.factory.createPropertySignature([], "Include", undefined, relations.length > 0
43
- ? ts.factory.createTypeReferenceNode(`Prisma.${model.name}Include`)
44
- : ts.factory.createTypeReferenceNode("never")),
45
+ ts.factory.createPropertySignature([], "Include", undefined, relations.length > 0 ? ts.factory.createTypeReferenceNode(`Prisma.${model.name}Include`) : ts.factory.createTypeReferenceNode("never")),
45
46
  ts.factory.createPropertySignature([], "Select", undefined, ts.factory.createTypeReferenceNode(`Prisma.${model.name}Select`)),
46
47
  ts.factory.createPropertySignature([], "Where", undefined, ts.factory.createTypeReferenceNode(`Prisma.${model.name}WhereUniqueInput`)),
47
- ts.factory.createPropertySignature([], "Fields", undefined, relations.length > 0
48
- ? ts.factory.createUnionTypeNode(relations.map((field) => ts.factory.createLiteralTypeNode(ts.factory.createStringLiteral(field.name))))
49
- : ts.factory.createTypeReferenceNode("never")),
50
- ts.factory.createPropertySignature([], "RelationName", undefined, relations.length > 0
51
- ? ts.factory.createUnionTypeNode(relations.map((field) => ts.factory.createLiteralTypeNode(ts.factory.createStringLiteral(field.name))))
52
- : ts.factory.createTypeReferenceNode("never")),
53
- ts.factory.createPropertySignature([], "ListRelations", undefined, listRelations.length > 0
54
- ? ts.factory.createUnionTypeNode(listRelations.map((field) => ts.factory.createLiteralTypeNode(ts.factory.createStringLiteral(field.name))))
55
- : ts.factory.createTypeReferenceNode("never")),
48
+ ts.factory.createPropertySignature([], "Fields", undefined, relations.length > 0 ? ts.factory.createUnionTypeNode(relations.map((field) => ts.factory.createLiteralTypeNode(ts.factory.createStringLiteral(field.name)))) : ts.factory.createTypeReferenceNode("never")),
49
+ ts.factory.createPropertySignature([], "RelationName", undefined, relations.length > 0 ? ts.factory.createUnionTypeNode(relations.map((field) => ts.factory.createLiteralTypeNode(ts.factory.createStringLiteral(field.name)))) : ts.factory.createTypeReferenceNode("never")),
50
+ ts.factory.createPropertySignature([], "ListRelations", undefined, listRelations.length > 0 ? ts.factory.createUnionTypeNode(listRelations.map((field) => ts.factory.createLiteralTypeNode(ts.factory.createStringLiteral(field.name)))) : ts.factory.createTypeReferenceNode("never")),
56
51
  ts.factory.createPropertySignature([], "Relations", undefined, ts.factory.createTypeLiteralNode(relations.map((field) => {
57
52
  const typeName = field.type;
58
53
  return ts.factory.createPropertySignature([], field.name, undefined, ts.factory.createTypeLiteralNode([
59
- ts.factory.createPropertySignature([], "Shape", undefined, field.isList
60
- ? ts.factory.createArrayTypeNode(ts.factory.createTypeReferenceNode(typeName))
61
- : field.isRequired
62
- ? ts.factory.createTypeReferenceNode(typeName)
63
- : ts.factory.createUnionTypeNode([
64
- ts.factory.createTypeReferenceNode(typeName),
65
- ts.factory.createLiteralTypeNode(ts.factory.createNull()),
66
- ])),
54
+ ts.factory.createPropertySignature([], "Shape", undefined, field.isList ? ts.factory.createArrayTypeNode(ts.factory.createTypeReferenceNode(typeName)) : field.isRequired ? ts.factory.createTypeReferenceNode(typeName) : ts.factory.createUnionTypeNode([
55
+ ts.factory.createTypeReferenceNode(typeName),
56
+ ts.factory.createLiteralTypeNode(ts.factory.createNull()),
57
+ ])),
67
58
  ts.factory.createPropertySignature([], "Types", undefined, ts.factory.createIndexedAccessTypeNode(ts.factory.createTypeReferenceNode("PrismaTypes"), ts.factory.createLiteralTypeNode(ts.factory.createStringLiteral(typeName)))),
68
59
  ]));
69
60
  }))),
@@ -75,10 +66,15 @@ generatorHandler({
75
66
  ], "PrismaTypes", [], [], modelTypes);
76
67
  const printer = ts.createPrinter({});
77
68
  const sourcefile = ts.createSourceFile(options.generator.output.value, "", ScriptTarget.ESNext, false, ScriptKind.TS);
78
- const nodes = ts.factory.createNodeArray([importStatement, prismaTypes]);
69
+ const nodes = ts.factory.createNodeArray([
70
+ importStatement,
71
+ prismaTypes
72
+ ]);
79
73
  const result = printer.printList(ListFormat.SourceFileStatements, nodes, sourcefile);
80
74
  await new Promise((resolve, reject) => {
81
- mkdir(dirname(sourcefile.fileName), { recursive: true }, (err) => {
75
+ mkdir(dirname(sourcefile.fileName), {
76
+ recursive: true
77
+ }, (err) => {
82
78
  if (err) {
83
79
  reject(err);
84
80
  }
@@ -97,6 +93,6 @@ generatorHandler({
97
93
  }
98
94
  });
99
95
  });
100
- },
96
+ }
101
97
  });
102
98
  //# sourceMappingURL=generator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../src/generator.ts"],"sourcesContent":["/* eslint-disable no-magic-numbers */\n/* eslint-disable no-nested-ternary */\nimport { mkdir, writeFile } from 'fs';\nimport { dirname } from 'path';\nimport ts, { ListFormat, ScriptKind, ScriptTarget, SyntaxKind, version } from 'typescript';\nimport { generatorHandler } from '@prisma/generator-helper';\n\nconst MIN_TS_VERSION = [4, 5, 2];\n\nfunction checkTSVersion() {\n const versionParts = version.split(/[.-]/g);\n\n for (let i = 0; i < 3; i += 1) {\n const part = Number.parseInt(versionParts[i], 10);\n if (part < MIN_TS_VERSION[i]) {\n throw new Error(\n `@pothos/plugin-prisma requires typescript version >${MIN_TS_VERSION.join('.')}`,\n );\n }\n\n if (part > MIN_TS_VERSION[i]) {\n return;\n }\n }\n}\n\ngeneratorHandler({\n onManifest: () => ({\n prettyName: 'Pothos integration',\n defaultOutput: 'node_modules/@pothos/plugin-prisma/generated.ts',\n requiresGenerators: ['prisma-client-js'],\n }),\n onGenerate: async (options) => {\n checkTSVersion();\n const config = options.generator.config as { clientOutput?: string };\n const prismaLocation =\n config.clientOutput ??\n options.otherGenerators.find((gen) => gen.provider.value === 'prisma-client-js')!.output!\n .value;\n\n const importStatement = ts.factory.createImportDeclaration(\n [],\n [],\n ts.factory.createImportClause(\n true,\n undefined,\n ts.factory.createNamedImports([\n ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier('Prisma')),\n ...options.dmmf.datamodel.models.map((model) =>\n ts.factory.createImportSpecifier(\n false,\n undefined,\n ts.factory.createIdentifier(model.name),\n ),\n ),\n ]),\n ),\n ts.factory.createStringLiteral(prismaLocation),\n );\n\n const modelTypes = options.dmmf.datamodel.models.map((model) => {\n const relations = model.fields.filter((field) => !!field.relationName);\n const listRelations = model.fields.filter((field) => !!field.relationName && field.isList);\n\n return ts.factory.createPropertySignature(\n [],\n model.name,\n undefined,\n\n ts.factory.createTypeLiteralNode([\n ts.factory.createPropertySignature(\n [],\n 'Name',\n undefined,\n ts.factory.createLiteralTypeNode(ts.factory.createStringLiteral(model.name)),\n ),\n ts.factory.createPropertySignature(\n [],\n 'Shape',\n undefined,\n ts.factory.createTypeReferenceNode(model.name),\n ),\n ts.factory.createPropertySignature(\n [],\n 'Include',\n undefined,\n relations.length > 0\n ? ts.factory.createTypeReferenceNode(`Prisma.${model.name}Include`)\n : ts.factory.createTypeReferenceNode('never'),\n ),\n ts.factory.createPropertySignature(\n [],\n 'Select',\n undefined,\n ts.factory.createTypeReferenceNode(`Prisma.${model.name}Select`),\n ),\n ts.factory.createPropertySignature(\n [],\n 'Where',\n undefined,\n ts.factory.createTypeReferenceNode(`Prisma.${model.name}WhereUniqueInput`),\n ),\n ts.factory.createPropertySignature(\n [],\n 'Fields',\n undefined,\n relations.length > 0\n ? ts.factory.createUnionTypeNode(\n relations.map((field) =>\n ts.factory.createLiteralTypeNode(ts.factory.createStringLiteral(field.name)),\n ),\n )\n : ts.factory.createTypeReferenceNode('never'),\n ),\n ts.factory.createPropertySignature(\n [],\n 'RelationName',\n undefined,\n relations.length > 0\n ? ts.factory.createUnionTypeNode(\n relations.map((field) =>\n ts.factory.createLiteralTypeNode(ts.factory.createStringLiteral(field.name)),\n ),\n )\n : ts.factory.createTypeReferenceNode('never'),\n ),\n ts.factory.createPropertySignature(\n [],\n 'ListRelations',\n undefined,\n listRelations.length > 0\n ? ts.factory.createUnionTypeNode(\n listRelations.map((field) =>\n ts.factory.createLiteralTypeNode(ts.factory.createStringLiteral(field.name)),\n ),\n )\n : ts.factory.createTypeReferenceNode('never'),\n ),\n ts.factory.createPropertySignature(\n [],\n 'Relations',\n undefined,\n ts.factory.createTypeLiteralNode(\n relations.map((field) => {\n const typeName = field.type;\n\n return ts.factory.createPropertySignature(\n [],\n field.name,\n undefined,\n ts.factory.createTypeLiteralNode([\n ts.factory.createPropertySignature(\n [],\n 'Shape',\n undefined,\n field.isList\n ? ts.factory.createArrayTypeNode(\n ts.factory.createTypeReferenceNode(typeName),\n )\n : field.isRequired\n ? ts.factory.createTypeReferenceNode(typeName)\n : ts.factory.createUnionTypeNode([\n ts.factory.createTypeReferenceNode(typeName),\n ts.factory.createLiteralTypeNode(ts.factory.createNull()),\n ]),\n ),\n ts.factory.createPropertySignature(\n [],\n 'Types',\n undefined,\n ts.factory.createIndexedAccessTypeNode(\n ts.factory.createTypeReferenceNode('PrismaTypes'),\n ts.factory.createLiteralTypeNode(ts.factory.createStringLiteral(typeName)),\n ),\n ),\n ]),\n );\n }),\n ),\n ),\n ]),\n );\n });\n\n const prismaTypes = ts.factory.createInterfaceDeclaration(\n [],\n [\n ts.factory.createModifier(SyntaxKind.ExportKeyword),\n ts.factory.createModifier(SyntaxKind.DefaultKeyword),\n ],\n 'PrismaTypes',\n [],\n [],\n modelTypes,\n );\n const printer = ts.createPrinter({});\n\n const sourcefile = ts.createSourceFile(\n options.generator.output!.value,\n '',\n ScriptTarget.ESNext,\n false,\n ScriptKind.TS,\n );\n\n const nodes = ts.factory.createNodeArray([importStatement, prismaTypes]);\n\n const result = printer.printList(ListFormat.SourceFileStatements, nodes, sourcefile);\n\n await new Promise<void>((resolve, reject) => {\n mkdir(dirname(sourcefile.fileName), { recursive: true }, (err) => {\n if (err) {\n reject(err);\n } else {\n resolve();\n }\n });\n });\n\n return new Promise<void>((resolve, reject) => {\n writeFile(sourcefile.fileName, result, (err) => {\n if (err) {\n reject(err);\n } else {\n resolve();\n }\n });\n });\n },\n});\n"],"names":["mkdir","writeFile","dirname","ts","ListFormat","ScriptKind","ScriptTarget","SyntaxKind","version","generatorHandler","MIN_TS_VERSION","checkTSVersion","versionParts","split","i","part","Number","parseInt","Error","join","onManifest","prettyName","defaultOutput","requiresGenerators","onGenerate","options","config","generator","prismaLocation","clientOutput","otherGenerators","find","gen","provider","value","output","importStatement","factory","createImportDeclaration","createImportClause","undefined","createNamedImports","createImportSpecifier","createIdentifier","dmmf","datamodel","models","map","model","name","createStringLiteral","modelTypes","relations","fields","filter","field","relationName","listRelations","isList","createPropertySignature","createTypeLiteralNode","createLiteralTypeNode","createTypeReferenceNode","length","createUnionTypeNode","typeName","type","createArrayTypeNode","isRequired","createNull","createIndexedAccessTypeNode","prismaTypes","createInterfaceDeclaration","createModifier","ExportKeyword","DefaultKeyword","printer","createPrinter","sourcefile","createSourceFile","ESNext","TS","nodes","createNodeArray","result","printList","SourceFileStatements","Promise","resolve","reject","fileName","recursive","err"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export {};
1
+ /* eslint-disable @typescript-eslint/no-unused-vars */ /* eslint-disable @typescript-eslint/no-empty-interface */ export {};
2
2
  //# sourceMappingURL=global-types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"global-types.js","sourceRoot":"","sources":["../src/global-types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"sources":["../src/global-types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-empty-interface */\nimport {\n FieldKind,\n FieldNullability,\n FieldRef,\n InputFieldMap,\n InterfaceParam,\n NormalizeArgs,\n OutputType,\n PluginName,\n SchemaTypes,\n ShapeFromTypeParam,\n TypeParam,\n} from '@pothos/core';\nimport PrismaNodeRef from './node-ref';\nimport { prismaModelKey, PrismaObjectRef } from './object-ref';\nimport {\n PrismaConnectionFieldOptions,\n PrismaFieldOptions,\n PrismaModelTypes,\n PrismaNodeOptions,\n PrismaObjectTypeOptions,\n} from './types';\nimport { PrismaObjectFieldOptions, PrismaPlugin, ShapeFromConnection, ShapeFromSelection } from '.';\n\ndeclare global {\n export namespace PothosSchemaTypes {\n export interface Plugins<Types extends SchemaTypes> {\n prisma: PrismaPlugin<Types>;\n }\n\n export interface SchemaBuilderOptions<Types extends SchemaTypes> {\n prisma: {\n client: {\n $connect: () => Promise<void>;\n };\n };\n }\n\n export interface UserSchemaTypes {\n PrismaTypes: {};\n }\n\n export interface ExtendDefaultTypes<PartialTypes extends Partial<UserSchemaTypes>> {\n PrismaTypes: undefined extends PartialTypes['PrismaTypes']\n ? {}\n : PartialTypes['PrismaTypes'] & {};\n }\n\n export interface PothosKindToGraphQLType {\n PrismaObject: 'Object';\n }\n\n export interface FieldOptionsByKind<\n Types extends SchemaTypes,\n ParentShape,\n Type extends TypeParam<Types>,\n Nullable extends FieldNullability<Type>,\n Args extends InputFieldMap,\n ResolveShape,\n ResolveReturnShape,\n > {\n PrismaObject: PrismaObjectFieldOptions<\n Types,\n ParentShape,\n Type,\n Nullable,\n Args,\n ResolveShape,\n ResolveReturnShape\n >;\n }\n\n export interface SchemaBuilder<Types extends SchemaTypes> {\n prismaObject: <\n Name extends keyof Types['PrismaTypes'],\n Interfaces extends InterfaceParam<Types>[],\n FindUnique,\n Model extends PrismaModelTypes & Types['PrismaTypes'][Name],\n Include = unknown,\n Select = unknown,\n >(\n name: Name,\n options: PrismaObjectTypeOptions<\n Types,\n Model,\n Interfaces,\n FindUnique,\n Include,\n Select,\n ShapeFromSelection<Model, { select: Select; include: Include }>\n >,\n ) => PrismaObjectRef<Model, ShapeFromSelection<Model, { select: Select; include: Include }>>;\n\n prismaNode: 'relay' extends PluginName\n ? <\n Name extends keyof Types['PrismaTypes'],\n Interfaces extends InterfaceParam<Types>[] = [],\n Include = unknown,\n Select = unknown,\n >(\n name: Name,\n options: PrismaNodeOptions<\n Types,\n Types['PrismaTypes'][Name] & PrismaModelTypes,\n Interfaces,\n Include,\n Select,\n ShapeFromSelection<\n PrismaModelTypes & Types['PrismaTypes'][Name],\n { select: Select; include: Include }\n >\n >,\n ) => PrismaNodeRef<\n Types['PrismaTypes'][Name] & PrismaModelTypes,\n ShapeFromSelection<\n PrismaModelTypes & Types['PrismaTypes'][Name],\n { select: Select; include: Include }\n >\n >\n : '@pothos/plugin-relay is required to use this method';\n }\n\n export interface RootFieldBuilder<\n Types extends SchemaTypes,\n ParentShape,\n Kind extends FieldKind = FieldKind,\n > {\n prismaField: <\n Args extends InputFieldMap,\n TypeParam extends\n | PrismaObjectRef<PrismaModelTypes>\n | keyof Types['PrismaTypes']\n | [keyof Types['PrismaTypes']]\n | [PrismaObjectRef<PrismaModelTypes>],\n Nullable extends FieldNullability<Type>,\n ResolveReturnShape,\n Type extends TypeParam extends [unknown]\n ? [ObjectRef<Model['Shape']>]\n : ObjectRef<Model['Shape']>,\n Model extends PrismaModelTypes = PrismaModelTypes &\n (TypeParam extends [keyof Types['PrismaTypes']]\n ? Types['PrismaTypes'][TypeParam[0]]\n : TypeParam extends [PrismaObjectRef<PrismaModelTypes>]\n ? TypeParam[0][typeof prismaModelKey]\n : TypeParam extends PrismaObjectRef<PrismaModelTypes>\n ? TypeParam[typeof prismaModelKey]\n : TypeParam extends keyof Types['PrismaTypes']\n ? Types['PrismaTypes'][TypeParam]\n : never),\n >(\n options: PrismaFieldOptions<\n Types,\n ParentShape,\n TypeParam,\n Model,\n Type,\n Args,\n Nullable,\n ResolveReturnShape,\n Kind\n >,\n ) => FieldRef<ShapeFromTypeParam<Types, Type, Nullable>>;\n\n prismaConnection: 'relay' extends PluginName\n ? <\n Type extends PrismaObjectRef<PrismaModelTypes> | keyof Types['PrismaTypes'],\n Nullable extends boolean,\n ResolveReturnShape,\n Args extends InputFieldMap = {},\n Model extends PrismaModelTypes = Type extends PrismaObjectRef<infer T>\n ? T\n : PrismaModelTypes & Types['PrismaTypes'][Type & keyof Types['PrismaTypes']],\n >(\n ...args: NormalizeArgs<\n [\n options: PrismaConnectionFieldOptions<\n Types,\n ParentShape,\n Type,\n Model,\n ObjectRef<Model['Shape']>,\n Nullable,\n Args,\n ResolveReturnShape,\n Kind\n >,\n connectionOptions?: ConnectionObjectOptions<\n Types,\n ObjectRef<Model['Shape']>,\n false,\n false,\n ResolveReturnShape\n >,\n edgeOptions?: ConnectionEdgeObjectOptions<\n Types,\n ObjectRef<Model['Shape']>,\n false,\n ResolveReturnShape\n >,\n ]\n >\n ) => FieldRef<ShapeFromConnection<ConnectionShapeHelper<Types, Model['Shape'], Nullable>>>\n : '@pothos/plugin-relay is required to use this method';\n }\n\n export interface ConnectionFieldOptions<\n Types extends SchemaTypes,\n ParentShape,\n Type extends OutputType<Types>,\n Nullable extends boolean,\n EdgeNullability extends FieldNullability<[unknown]>,\n NodeNullability extends boolean,\n Args extends InputFieldMap,\n ResolveReturnShape,\n > {}\n\n export interface ConnectionObjectOptions<\n Types extends SchemaTypes,\n Type extends OutputType<Types>,\n EdgeNullability extends FieldNullability<[unknown]>,\n NodeNullability extends boolean,\n Resolved,\n > {}\n\n export interface ConnectionEdgeObjectOptions<\n Types extends SchemaTypes,\n Type extends OutputType<Types>,\n NodeNullability extends boolean,\n Resolved,\n > {}\n\n export interface DefaultConnectionArguments {\n first?: number | null | undefined;\n last?: number | null | undefined;\n before?: string | null | undefined;\n after?: string | null | undefined;\n }\n\n export interface ConnectionShapeHelper<Types extends SchemaTypes, T, Nullable> {}\n }\n}\n"],"names":[],"mappings":"AAAA,sDAAsD,CACtD,0DAA0D,CAC1D,WAgPC"}
package/esm/index.js CHANGED
@@ -2,37 +2,34 @@ import './global-types.js';
2
2
  import './field-builder.js';
3
3
  import './schema-builder.js';
4
4
  import { getNamedType } from 'graphql';
5
- import SchemaBuilder, { BasePlugin, } from '@pothos/core';
5
+ import SchemaBuilder, { BasePlugin } from '@pothos/core';
6
6
  import { getLoaderMapping, setLoaderMappings } from './util/loader-map.js';
7
7
  import { queryFromInfo, selectionStateFromInfo } from './util/map-query.js';
8
8
  export * from './types.js';
9
9
  const pluginName = "prisma";
10
10
  export default pluginName;
11
11
  export class PrismaPlugin extends BasePlugin {
12
- constructor(cache) {
13
- super(cache, pluginName);
14
- }
15
12
  onOutputFieldConfig(fieldConfig) {
16
13
  if (fieldConfig.kind === "PrismaObject" && fieldConfig.pothosOptions.select) {
17
14
  return {
18
15
  ...fieldConfig,
19
16
  extensions: {
20
17
  ...fieldConfig.extensions,
21
- pothosPrismaSelect: fieldConfig.pothosOptions.select,
22
- },
18
+ pothosPrismaSelect: fieldConfig.pothosOptions.select
19
+ }
23
20
  };
24
21
  }
25
22
  return fieldConfig;
26
23
  }
27
24
  wrapResolve(resolver, fieldConfig) {
28
- var _a, _b, _c, _d;
29
- if (fieldConfig.kind !== "PrismaObject" || !((_a = fieldConfig.extensions) === null || _a === void 0 ? void 0 : _a.pothosPrismaSelect)) {
25
+ var ref, ref1, ref2, ref3;
26
+ if (fieldConfig.kind !== "PrismaObject" || !((ref = fieldConfig.extensions) === null || ref === void 0 ? void 0 : ref.pothosPrismaSelect)) {
30
27
  return resolver;
31
28
  }
32
29
  const parentConfig = this.buildCache.getTypeConfig(fieldConfig.parentType, "Object");
33
- const loadedCheck = (_b = fieldConfig.extensions) === null || _b === void 0 ? void 0 : _b.pothosPrismaLoaded;
34
- const loaderCache = (_c = parentConfig.extensions) === null || _c === void 0 ? void 0 : _c.pothosPrismaLoader;
35
- const fallback = (_d = fieldConfig.extensions) === null || _d === void 0 ? void 0 : _d.pothosPrismaFallback;
30
+ const loadedCheck = (ref1 = fieldConfig.extensions) === null || ref1 === void 0 ? void 0 : ref1.pothosPrismaLoaded;
31
+ const loaderCache = (ref2 = parentConfig.extensions) === null || ref2 === void 0 ? void 0 : ref2.pothosPrismaLoader;
32
+ const fallback = (ref3 = fieldConfig.extensions) === null || ref3 === void 0 ? void 0 : ref3.pothosPrismaFallback;
36
33
  return (parent, args, context, info) => {
37
34
  const mapping = getLoaderMapping(context, info.path, info.parentType.name);
38
35
  if ((!loadedCheck || loadedCheck(parent)) && mapping) {
@@ -43,9 +40,7 @@ export class PrismaPlugin extends BasePlugin {
43
40
  return fallback(queryFromInfo(context, info), parent, args, context, info);
44
41
  }
45
42
  const selectionState = selectionStateFromInfo(context, info);
46
- return loaderCache(parent)
47
- .loadSelection(selectionState, context)
48
- .then((result) => {
43
+ return loaderCache(parent).loadSelection(selectionState, context).then((result) => {
49
44
  const mappings = selectionState.mappings[info.path.key];
50
45
  if (mappings) {
51
46
  setLoaderMappings(context, info, mappings.mappings, getNamedType(info.returnType));
@@ -54,6 +49,9 @@ export class PrismaPlugin extends BasePlugin {
54
49
  });
55
50
  };
56
51
  }
52
+ constructor(cache) {
53
+ super(cache, pluginName);
54
+ }
57
55
  }
58
56
  SchemaBuilder.registerPlugin(pluginName, PrismaPlugin);
59
57
  //# sourceMappingURL=index.js.map
package/esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import './global-types';\nimport './field-builder';\nimport './schema-builder';\nimport { getNamedType, GraphQLFieldResolver } from 'graphql';\nimport SchemaBuilder, {\n BasePlugin,\n BuildCache,\n PothosOutputFieldConfig,\n SchemaTypes,\n} from '@pothos/core';\nimport { ModelLoader } from './model-loader';\nimport { getLoaderMapping, setLoaderMappings } from './util/loader-map';\nimport { queryFromInfo, selectionStateFromInfo } from './util/map-query';\n\nexport * from './types';\n\nconst pluginName = 'prisma' as const;\n\nexport default pluginName;\n\nexport class PrismaPlugin<Types extends SchemaTypes> extends BasePlugin<Types> {\n constructor(cache: BuildCache<Types>) {\n super(cache, pluginName);\n }\n\n override onOutputFieldConfig(\n fieldConfig: PothosOutputFieldConfig<Types>,\n ): PothosOutputFieldConfig<Types> | null {\n if (fieldConfig.kind === 'PrismaObject' && fieldConfig.pothosOptions.select) {\n return {\n ...fieldConfig,\n extensions: {\n ...fieldConfig.extensions,\n pothosPrismaSelect: fieldConfig.pothosOptions.select,\n },\n };\n }\n\n return fieldConfig;\n }\n\n override wrapResolve(\n resolver: GraphQLFieldResolver<unknown, Types['Context'], object, unknown>,\n fieldConfig: PothosOutputFieldConfig<Types>,\n ): GraphQLFieldResolver<unknown, Types['Context'], object> {\n if (fieldConfig.kind !== 'PrismaObject' || !fieldConfig.extensions?.pothosPrismaSelect) {\n return resolver;\n }\n\n const parentConfig = this.buildCache.getTypeConfig(fieldConfig.parentType, 'Object');\n const loadedCheck = fieldConfig.extensions?.pothosPrismaLoaded as\n | undefined\n | ((val: unknown) => boolean);\n const loaderCache = parentConfig.extensions?.pothosPrismaLoader as (\n model: unknown,\n ) => ModelLoader;\n\n const fallback = fieldConfig.extensions?.pothosPrismaFallback as\n | undefined\n | ((query: {}, parent: unknown, args: {}, context: {}, info: {}) => unknown);\n\n return (parent, args, context, info) => {\n const mapping = getLoaderMapping(context, info.path, info.parentType.name);\n\n if ((!loadedCheck || loadedCheck(parent)) && mapping) {\n setLoaderMappings(context, info, mapping, getNamedType(info.returnType));\n\n return resolver(parent, args, context, info);\n }\n\n if (fallback) {\n return fallback(queryFromInfo(context, info), parent, args, context, info);\n }\n\n const selectionState = selectionStateFromInfo(context, info);\n\n return loaderCache(parent)\n .loadSelection(selectionState, context)\n .then((result) => {\n const mappings = selectionState.mappings[info.path.key];\n\n if (mappings) {\n setLoaderMappings(context, info, mappings.mappings, getNamedType(info.returnType));\n }\n\n return resolver(result, args, context, info);\n });\n };\n }\n}\n\nSchemaBuilder.registerPlugin(pluginName, PrismaPlugin);\n"],"names":["getNamedType","SchemaBuilder","BasePlugin","getLoaderMapping","setLoaderMappings","queryFromInfo","selectionStateFromInfo","pluginName","PrismaPlugin","onOutputFieldConfig","fieldConfig","kind","pothosOptions","select","extensions","pothosPrismaSelect","wrapResolve","resolver","parentConfig","buildCache","getTypeConfig","parentType","loadedCheck","pothosPrismaLoaded","loaderCache","pothosPrismaLoader","fallback","pothosPrismaFallback","parent","args","context","info","mapping","path","name","returnType","selectionState","loadSelection","then","result","mappings","key","constructor","cache","registerPlugin"],"mappings":"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"}
@@ -1,13 +1,7 @@
1
1
  import { createContextCache } from '@pothos/core';
2
2
  import { getDelegateFromModel } from './util/datamodel.js';
3
- import { mergeSelection, selectionCompatible, selectionToQuery, } from './util/selections.js';
3
+ import { mergeSelection, selectionCompatible, selectionToQuery } from './util/selections.js';
4
4
  export class ModelLoader {
5
- constructor(model, delegate, findUnique) {
6
- this.staged = new Set();
7
- this.model = model;
8
- this.delegate = delegate;
9
- this.findUnique = findUnique;
10
- }
11
5
  static forRef(modelName, findUnique, builder) {
12
6
  const delegate = getDelegateFromModel(builder.options.prisma.client, modelName);
13
7
  return createContextCache((model) => new ModelLoader(model, delegate, findUnique));
@@ -29,13 +23,21 @@ export class ModelLoader {
29
23
  return this.delegate.findUnique({
30
24
  rejectOnNotFound: true,
31
25
  ...selectionToQuery(state),
32
- where: { ...this.findUnique(this.model, context) },
26
+ where: {
27
+ ...this.findUnique(this.model, context)
28
+ }
33
29
  });
34
30
  }),
35
- state,
31
+ state
36
32
  };
37
33
  this.staged.add(entry);
38
34
  return entry.promise;
39
35
  }
36
+ constructor(model, delegate, findUnique) {
37
+ this.staged = new Set();
38
+ this.model = model;
39
+ this.delegate = delegate;
40
+ this.findUnique = findUnique;
41
+ }
40
42
  }
41
43
  //# sourceMappingURL=model-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"model-loader.js","sourceRoot":"","sources":["../src/model-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAe,MAAM,cAAc,CAAC;AAE/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EACL,cAAc,EACd,mBAAmB,EAEnB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,OAAO,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,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAEhF,OAAO,kBAAkB,CAAC,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,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAE1C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;YAC/B,IAAI,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;gBAC3C,cAAc,CAAC,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,gBAAgB,CAAC,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"}
1
+ {"version":3,"sources":["../src/model-loader.ts"],"sourcesContent":["import { createContextCache, SchemaTypes } from '@pothos/core';\nimport { PrismaDelegate } from './types';\nimport { getDelegateFromModel } from './util/datamodel';\nimport {\n mergeSelection,\n selectionCompatible,\n SelectionState,\n selectionToQuery,\n} from './util/selections';\n\nexport class ModelLoader {\n model: object;\n delegate: PrismaDelegate;\n findUnique: (args: unknown, ctx: {}) => unknown;\n\n staged = new Set<{\n promise: Promise<Record<string, unknown>>;\n state: SelectionState;\n }>();\n\n constructor(\n model: object,\n delegate: PrismaDelegate,\n findUnique: (args: unknown, ctx: {}) => unknown,\n ) {\n this.model = model;\n this.delegate = delegate;\n this.findUnique = findUnique;\n }\n\n static forRef<Types extends SchemaTypes>(\n modelName: string,\n findUnique: (args: unknown, ctx: {}) => unknown,\n builder: PothosSchemaTypes.SchemaBuilder<Types>,\n ) {\n const delegate = getDelegateFromModel(builder.options.prisma.client, modelName);\n\n return createContextCache((model) => new ModelLoader(model, delegate, findUnique));\n }\n\n async loadSelection(selection: SelectionState, context: object) {\n const query = selectionToQuery(selection);\n\n for (const entry of this.staged) {\n if (selectionCompatible(entry.state, query)) {\n mergeSelection(entry.state, query);\n\n return entry.promise;\n }\n }\n\n return this.initLoad(selection, context);\n }\n\n async initLoad(state: SelectionState, context: {}) {\n const entry = {\n promise: Promise.resolve().then(() => {\n this.staged.delete(entry);\n\n return this.delegate.findUnique({\n rejectOnNotFound: true,\n ...selectionToQuery(state),\n where: { ...(this.findUnique(this.model, context) as {}) },\n } as never) as Promise<Record<string, unknown>>;\n }),\n state,\n };\n\n this.staged.add(entry);\n\n return entry.promise;\n }\n}\n"],"names":["createContextCache","getDelegateFromModel","mergeSelection","selectionCompatible","selectionToQuery","ModelLoader","forRef","modelName","findUnique","builder","delegate","options","prisma","client","model","loadSelection","selection","context","query","entry","staged","state","promise","initLoad","Promise","resolve","then","delete","rejectOnNotFound","where","add","constructor","Set"],"mappings":"AAAA,SAASA,kBAAkB,QAAqB,cAAc,CAAC;AAE/D,SAASC,oBAAoB,QAAQ,kBAAkB,CAAC;AACxD,SACEC,cAAc,EACdC,mBAAmB,EAEnBC,gBAAgB,QACX,mBAAmB,CAAC;AAE3B,OAAO,MAAMC,WAAW;IAoBtB,OAAOC,MAAM,CACXC,SAAiB,EACjBC,UAA+C,EAC/CC,OAA+C,EAC/C;QACA,MAAMC,QAAQ,GAAGT,oBAAoB,CAACQ,OAAO,CAACE,OAAO,CAACC,MAAM,CAACC,MAAM,EAAEN,SAAS,CAAC,AAAC;QAEhF,OAAOP,kBAAkB,CAAC,CAACc,KAAK,GAAK,IAAIT,WAAW,CAACS,KAAK,EAAEJ,QAAQ,EAAEF,UAAU,CAAC;QAAA,CAAC,CAAC;KACpF;IAED,MAAMO,aAAa,CAACC,SAAyB,EAAEC,OAAe,EAAE;QAC9D,MAAMC,KAAK,GAAGd,gBAAgB,CAACY,SAAS,CAAC,AAAC;QAE1C,KAAK,MAAMG,KAAK,IAAI,IAAI,CAACC,MAAM,CAAE;YAC/B,IAAIjB,mBAAmB,CAACgB,KAAK,CAACE,KAAK,EAAEH,KAAK,CAAC,EAAE;gBAC3ChB,cAAc,CAACiB,KAAK,CAACE,KAAK,EAAEH,KAAK,CAAC,CAAC;gBAEnC,OAAOC,KAAK,CAACG,OAAO,CAAC;aACtB;SACF;QAED,OAAO,IAAI,CAACC,QAAQ,CAACP,SAAS,EAAEC,OAAO,CAAC,CAAC;KAC1C;IAED,MAAMM,QAAQ,CAACF,KAAqB,EAAEJ,OAAW,EAAE;QACjD,MAAME,KAAK,GAAG;YACZG,OAAO,EAAEE,OAAO,CAACC,OAAO,EAAE,CAACC,IAAI,CAAC,IAAM;gBACpC,IAAI,CAACN,MAAM,CAACO,MAAM,CAACR,KAAK,CAAC,CAAC;gBAE1B,OAAO,IAAI,CAACT,QAAQ,CAACF,UAAU,CAAC;oBAC9BoB,gBAAgB,EAAE,IAAI;oBACtB,GAAGxB,gBAAgB,CAACiB,KAAK,CAAC;oBAC1BQ,KAAK,EAAE;wBAAE,GAAI,IAAI,CAACrB,UAAU,CAAC,IAAI,CAACM,KAAK,EAAEG,OAAO,CAAC;qBAAS;iBAC3D,CAAU,CAAqC;aACjD,CAAC;YACFI,KAAK;SACN,AAAC;QAEF,IAAI,CAACD,MAAM,CAACU,GAAG,CAACX,KAAK,CAAC,CAAC;QAEvB,OAAOA,KAAK,CAACG,OAAO,CAAC;KACtB;IAnDDS,YACEjB,KAAa,EACbJ,QAAwB,EACxBF,UAA+C,CAC/C;QATFY,KAAAA,MAAM,GAAG,IAAIY,GAAG,EAGZ,AAAC,AAlBP,CAkBO;QAOH,IAAI,CAAClB,KAAK,GAAGA,KAAK,CAAC;QACnB,IAAI,CAACJ,QAAQ,GAAGA,QAAQ,CAAC;QACzB,IAAI,CAACF,UAAU,GAAGA,UAAU,CAAC;KAC9B;CA4CF"}