@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
@@ -58,8 +58,7 @@ export function parseCompositeCursor(fields) {
58
58
  return record;
59
59
  };
60
60
  }
61
- export function prismaCursorConnectionQuery({ args: { before, after, first, last }, maxSize = DEFAULT_MAX_SIZE, defaultSize = DEFAULT_SIZE, parseCursor, }) {
62
- var _a;
61
+ export function prismaCursorConnectionQuery({ args: { before, after, first, last }, maxSize = DEFAULT_MAX_SIZE, defaultSize = DEFAULT_SIZE, parseCursor }) {
63
62
  if (first != null && first < 0) {
64
63
  throw new TypeError("Argument \"first\" must be a non-negative integer");
65
64
  }
@@ -79,48 +78,46 @@ export function prismaCursorConnectionQuery({ args: { before, after, first, last
79
78
  throw new Error("Arguments \"after\" and \"last\" are not supported at the same time");
80
79
  }
81
80
  const cursor = before !== null && before !== void 0 ? before : after;
82
- let take = Math.min((_a = first !== null && first !== void 0 ? first : last) !== null && _a !== void 0 ? _a : defaultSize, maxSize) + 1;
81
+ var ref;
82
+ let take = Math.min((ref = first !== null && first !== void 0 ? first : last) !== null && ref !== void 0 ? ref : defaultSize, maxSize) + 1;
83
83
  if (before) {
84
84
  take = -take;
85
85
  }
86
- return cursor == null
87
- ? { take, skip: 0 }
88
- : {
89
- cursor: parseCursor(cursor),
90
- take,
91
- skip: 1,
92
- };
86
+ return cursor == null ? {
87
+ take,
88
+ skip: 0
89
+ } : {
90
+ cursor: parseCursor(cursor),
91
+ take,
92
+ skip: 1
93
+ };
93
94
  }
94
95
  export function wrapConnectionResult(results, args, take, cursor, totalCount) {
95
- var _a, _b;
96
+ var ref, ref1;
96
97
  const gotFullResults = results.length === Math.abs(take);
97
98
  const hasNextPage = args.before ? true : gotFullResults;
98
99
  const hasPreviousPage = args.after ? true : args.before ? gotFullResults : false;
99
- const nodes = gotFullResults
100
- ? results.slice(take < 0 ? 1 : 0, take < 0 ? results.length : -1)
101
- : results;
102
- const edges = nodes.map((value, index) => value == null
103
- ? null
104
- : {
105
- cursor: cursor(value),
106
- node: value,
107
- });
100
+ const nodes = gotFullResults ? results.slice(take < 0 ? 1 : 0, take < 0 ? results.length : -1) : results;
101
+ const edges = nodes.map((value, index) => value == null ? null : {
102
+ cursor: cursor(value),
103
+ node: value
104
+ });
108
105
  return {
109
106
  totalCount,
110
107
  edges,
111
108
  pageInfo: {
112
- startCursor: (_a = edges[0]) === null || _a === void 0 ? void 0 : _a.cursor,
113
- endCursor: (_b = edges[edges.length - 1]) === null || _b === void 0 ? void 0 : _b.cursor,
109
+ startCursor: (ref = edges[0]) === null || ref === void 0 ? void 0 : ref.cursor,
110
+ endCursor: (ref1 = edges[edges.length - 1]) === null || ref1 === void 0 ? void 0 : ref1.cursor,
114
111
  hasPreviousPage,
115
- hasNextPage,
116
- },
112
+ hasNextPage
113
+ }
117
114
  };
118
115
  }
119
116
  export async function resolvePrismaCursorConnection(options, cursor, resolve) {
120
117
  const query = prismaCursorConnectionQuery(options);
121
118
  const results = await resolve({
122
119
  ...options.query,
123
- ...query,
120
+ ...query
124
121
  });
125
122
  return wrapConnectionResult(results, options.args, query.take, cursor, options.totalCount);
126
123
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cursors.js","sourceRoot":"","sources":["../../src/util/cursors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/util/cursors.ts"],"sourcesContent":["/* eslint-disable no-nested-ternary */\nimport { MaybePromise } from '@pothos/core';\n\nconst DEFAULT_MAX_SIZE = 100;\nconst DEFAULT_SIZE = 20;\n\nexport function formatCursorChunk(value: unknown) {\n if (value instanceof Date) {\n return `D:${String(Number(value))}`;\n }\n\n switch (typeof value) {\n case 'number':\n return `N:${value}`;\n case 'string':\n return `S:${value}`;\n default:\n throw new TypeError(`Unsupported cursor type ${typeof value}`);\n }\n}\n\nexport function formatCursor(fields: string | string[]) {\n return (value: Record<string, unknown>) => {\n if (typeof fields === 'string') {\n return Buffer.from(`GPC:${formatCursorChunk(value[fields])}`).toString('base64');\n }\n\n return Buffer.from(`GPC:J:${JSON.stringify(fields.map((name) => value[name]))}`).toString(\n 'base64',\n );\n };\n}\n\nexport function parseRawCursor(cursor: unknown) {\n if (typeof cursor !== 'string') {\n throw new TypeError('Cursor must be a string');\n }\n\n try {\n const decoded = Buffer.from(cursor, 'base64').toString();\n const [, type, value] = decoded.match(/^GPC:(\\w):(.*)/) as [string, string, string];\n\n switch (type) {\n case 'S':\n return value;\n case 'N':\n return Number.parseInt(value, 10);\n case 'D':\n return new Date(Number.parseInt(value, 10));\n case 'J':\n return JSON.parse(value) as unknown;\n default:\n throw new TypeError(`Invalid cursor type ${type}`);\n }\n } catch {\n throw new Error(`Invalid cursor: ${cursor}`);\n }\n}\n\nexport function parseCompositeCursor(fields: string[]) {\n return (cursor: string) => {\n const parsed = parseRawCursor(cursor) as unknown[];\n\n if (!Array.isArray(parsed)) {\n throw new TypeError(`Expected compound cursor to contain an array, but got ${parsed}`);\n }\n\n const record: Record<string, unknown> = {};\n\n fields.forEach((field, i) => {\n record[field] = parsed[i];\n });\n\n return record;\n };\n}\n\nexport interface PrismaCursorConnectionQueryOptions {\n args: PothosSchemaTypes.DefaultConnectionArguments;\n defaultSize?: number;\n maxSize?: number;\n parseCursor: (cursor: string) => Record<string, unknown>;\n}\n\ninterface ResolvePrismaCursorConnectionOptions extends PrismaCursorConnectionQueryOptions {\n query: {};\n totalCount?: number | (() => MaybePromise<number>);\n}\n\nexport function prismaCursorConnectionQuery({\n args: { before, after, first, last },\n maxSize = DEFAULT_MAX_SIZE,\n defaultSize = DEFAULT_SIZE,\n parseCursor,\n}: PrismaCursorConnectionQueryOptions) {\n if (first != null && first < 0) {\n throw new TypeError('Argument \"first\" must be a non-negative integer');\n }\n\n if (last != null && last < 0) {\n throw new Error('Argument \"last\" must be a non-negative integer');\n }\n\n if (before && after) {\n throw new Error('Arguments \"before\" and \"after\" are not supported at the same time');\n }\n\n if (before != null && last == null) {\n throw new Error('Argument \"last\" must be provided when using \"before\"');\n }\n\n if (before != null && first != null) {\n throw new Error('Arguments \"before\" and \"first\" are not supported at the same time');\n }\n\n if (after != null && last != null) {\n throw new Error('Arguments \"after\" and \"last\" are not supported at the same time');\n }\n\n const cursor = before ?? after;\n\n let take = Math.min(first ?? last ?? defaultSize, maxSize) + 1;\n\n if (before) {\n take = -take;\n }\n\n return cursor == null\n ? { take, skip: 0 }\n : {\n cursor: parseCursor(cursor),\n take,\n skip: 1,\n };\n}\n\nexport function wrapConnectionResult<T extends {}>(\n results: T[],\n args: PothosSchemaTypes.DefaultConnectionArguments,\n take: number,\n cursor: (node: T) => string,\n totalCount?: number | (() => MaybePromise<number>),\n) {\n const gotFullResults = results.length === Math.abs(take);\n const hasNextPage = args.before ? true : gotFullResults;\n const hasPreviousPage = args.after ? true : args.before ? gotFullResults : false;\n const nodes = gotFullResults\n ? results.slice(take < 0 ? 1 : 0, take < 0 ? results.length : -1)\n : results;\n\n const edges = nodes.map((value, index) =>\n value == null\n ? null\n : {\n cursor: cursor(value),\n node: value,\n },\n );\n\n return {\n totalCount,\n edges,\n pageInfo: {\n startCursor: edges[0]?.cursor,\n endCursor: edges[edges.length - 1]?.cursor,\n hasPreviousPage,\n hasNextPage,\n },\n };\n}\n\nexport async function resolvePrismaCursorConnection<T extends {}>(\n options: ResolvePrismaCursorConnectionOptions,\n cursor: (node: T) => string,\n resolve: (query: { include?: {}; cursor?: {}; take: number; skip: number }) => MaybePromise<T[]>,\n) {\n const query = prismaCursorConnectionQuery(options);\n const results = await resolve({\n ...options.query,\n ...query,\n });\n\n return wrapConnectionResult(results, options.args, query.take, cursor, options.totalCount);\n}\n"],"names":["DEFAULT_MAX_SIZE","DEFAULT_SIZE","formatCursorChunk","value","Date","String","Number","TypeError","formatCursor","fields","Buffer","from","toString","JSON","stringify","map","name","parseRawCursor","cursor","decoded","type","match","parseInt","parse","Error","parseCompositeCursor","parsed","Array","isArray","record","forEach","field","i","prismaCursorConnectionQuery","args","before","after","first","last","maxSize","defaultSize","parseCursor","take","Math","min","skip","wrapConnectionResult","results","totalCount","edges","gotFullResults","length","abs","hasNextPage","hasPreviousPage","nodes","slice","index","node","pageInfo","startCursor","endCursor","resolvePrismaCursorConnection","options","resolve","query"],"mappings":"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"}
@@ -27,8 +27,7 @@ export function getRelation(name, builder, relation) {
27
27
  export function getModel(name, builder) {
28
28
  const { client } = builder.options.prisma;
29
29
  // eslint-disable-next-line no-underscore-dangle
30
- const dmmf = client
31
- ._dmmf;
30
+ const dmmf = client._dmmf;
32
31
  const modelData = dmmf.modelMap[name];
33
32
  if (!modelData) {
34
33
  throw new Error(`Model '${name}' not found in DMMF`);
@@ -36,18 +35,20 @@ export function getModel(name, builder) {
36
35
  return modelData;
37
36
  }
38
37
  export function getCursorFormatter(name, builder, cursor) {
39
- var _a, _b, _c;
38
+ var ref, ref1;
40
39
  const modelData = getModel(name, builder);
41
- const primaryKey = (_b = (_a = modelData.primaryKey) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : (_c = modelData.primaryKey) === null || _c === void 0 ? void 0 : _c.fields.join("_");
40
+ var ref2;
41
+ const primaryKey = (ref2 = (ref = modelData.primaryKey) === null || ref === void 0 ? void 0 : ref.name) !== null && ref2 !== void 0 ? ref2 : (ref1 = modelData.primaryKey) === null || ref1 === void 0 ? void 0 : ref1.fields.join("_");
42
42
  return formatCursor(cursor === primaryKey ? modelData.primaryKey.fields : cursor);
43
43
  }
44
44
  export function getCursorParser(name, builder, cursor) {
45
- var _a, _b, _c;
45
+ var ref, ref3;
46
46
  const modelData = getModel(name, builder);
47
- const primaryKey = (_b = (_a = modelData.primaryKey) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : (_c = modelData.primaryKey) === null || _c === void 0 ? void 0 : _c.fields.join("_");
47
+ var ref4;
48
+ const primaryKey = (ref4 = (ref = modelData.primaryKey) === null || ref === void 0 ? void 0 : ref.name) !== null && ref4 !== void 0 ? ref4 : (ref3 = modelData.primaryKey) === null || ref3 === void 0 ? void 0 : ref3.fields.join("_");
48
49
  const parser = cursor === primaryKey ? parseCompositeCursor(modelData.primaryKey.fields) : parseRawCursor;
49
50
  return (rawCursor) => ({
50
- [cursor]: parser(rawCursor),
51
+ [cursor]: parser(rawCursor)
51
52
  });
52
53
  }
53
54
  export function getDelegateFromModel(client, model) {
@@ -1 +1 @@
1
- {"version":3,"file":"datamodel.js","sourceRoot":"","sources":["../../src/util/datamodel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/util/datamodel.ts"],"sourcesContent":["import { ObjectRef, SchemaTypes } from '@pothos/core';\nimport { Prisma } from '../../tests/client';\nimport { PrismaObjectRef } from '../object-ref';\nimport { PrismaDelegate, PrismaModelTypes } from '../types';\nimport { formatCursor, parseCompositeCursor, parseRawCursor } from './cursors';\n\nexport const refMap = new WeakMap<object, Map<string, PrismaObjectRef<PrismaModelTypes>>>();\nexport const findUniqueMap = new WeakMap<\n object,\n Map<ObjectRef<unknown>, ((args: unknown, ctx: {}) => unknown) | null>\n>();\n\nexport const includeForRefMap = new WeakMap<\n object,\n Map<ObjectRef<unknown>, Record<string, unknown> | null>\n>();\n\nexport function getRefFromModel<Types extends SchemaTypes>(\n name: string,\n builder: PothosSchemaTypes.SchemaBuilder<Types>,\n): PrismaObjectRef<PrismaModelTypes> {\n if (!refMap.has(builder)) {\n refMap.set(builder, new Map());\n }\n const cache = refMap.get(builder)!;\n\n if (!cache.has(name)) {\n cache.set(name, new PrismaObjectRef(name));\n }\n\n return cache.get(name)!;\n}\n\nexport function getRelation<Types extends SchemaTypes>(\n name: string,\n builder: PothosSchemaTypes.SchemaBuilder<Types>,\n relation: string,\n) {\n const modelData = getModel(name, builder);\n\n const fieldData = modelData.fields.find((field) => field.name === relation);\n\n if (!fieldData) {\n throw new Error(`Field '${relation}' not found in model '${name}'`);\n }\n\n if (fieldData.kind !== 'object') {\n throw new Error(`Field ${relation} of model '${name}' is not a relation (${fieldData.kind})`);\n }\n\n return fieldData;\n}\n\nexport function getModel<Types extends SchemaTypes>(\n name: string,\n builder: PothosSchemaTypes.SchemaBuilder<Types>,\n) {\n const { client } = builder.options.prisma;\n // eslint-disable-next-line no-underscore-dangle\n const dmmf = (client as unknown as { _dmmf: { modelMap: Record<string, Prisma.DMMF.Model> } })\n ._dmmf;\n const modelData = dmmf.modelMap[name];\n\n if (!modelData) {\n throw new Error(`Model '${name}' not found in DMMF`);\n }\n\n return modelData;\n}\n\nexport function getCursorFormatter<Types extends SchemaTypes>(\n name: string,\n builder: PothosSchemaTypes.SchemaBuilder<Types>,\n cursor: string,\n) {\n const modelData = getModel(name, builder);\n const primaryKey = modelData.primaryKey?.name ?? modelData.primaryKey?.fields.join('_');\n\n return formatCursor(cursor === primaryKey ? modelData.primaryKey!.fields : cursor);\n}\n\nexport function getCursorParser<Types extends SchemaTypes>(\n name: string,\n builder: PothosSchemaTypes.SchemaBuilder<Types>,\n cursor: string,\n) {\n const modelData = getModel(name, builder);\n const primaryKey = modelData.primaryKey?.name ?? modelData.primaryKey?.fields.join('_');\n\n const parser =\n cursor === primaryKey ? parseCompositeCursor(modelData.primaryKey!.fields) : parseRawCursor;\n\n return (rawCursor: string) => ({\n [cursor]: parser(rawCursor),\n });\n}\n\nexport function getDelegateFromModel(client: Record<string, unknown>, model: string) {\n const lowerCase = `${model.slice(0, 1).toLowerCase()}${model.slice(1)}`;\n\n const delegate = lowerCase in client ? client[lowerCase] : null;\n\n if (!delegate) {\n throw new Error(`Unable to find delegate for model ${model}`);\n }\n\n return delegate as PrismaDelegate;\n}\n"],"names":["PrismaObjectRef","formatCursor","parseCompositeCursor","parseRawCursor","refMap","WeakMap","findUniqueMap","includeForRefMap","getRefFromModel","name","builder","has","set","Map","cache","get","getRelation","relation","modelData","getModel","fieldData","fields","find","field","Error","kind","client","options","prisma","dmmf","_dmmf","modelMap","getCursorFormatter","cursor","primaryKey","join","getCursorParser","parser","rawCursor","getDelegateFromModel","model","lowerCase","slice","toLowerCase","delegate"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
- /* eslint-disable no-continue */
2
- export function deepEqual(left, right, ignore) {
1
+ /* eslint-disable no-continue */ export function deepEqual(left, right, ignore) {
3
2
  if (left === right) {
4
3
  return true;
5
4
  }
@@ -1 +1 @@
1
- {"version":3,"file":"deep-equal.js","sourceRoot":"","sources":["../../src/util/deep-equal.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,MAAM,UAAU,SAAS,CAAC,IAAa,EAAE,KAAc,EAAE,MAAoB;IAC3E,IAAI,IAAI,KAAK,KAAK,EAAE;QAClB,OAAO,IAAI,CAAC;KACb;IAED,IAAI,IAAI,IAAI,KAAK,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC1E,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACzB,OAAO,KAAK,CAAC;aACd;YAED,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;YAExB,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE;gBAC3B,OAAO,KAAK,CAAC;aACd;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;gBAClC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;oBACjC,OAAO,KAAK,CAAC;iBACd;aACF;YAED,OAAO,IAAI,CAAC;SACb;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;QAE9B,IAAI,SAAS,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE;YAC3C,OAAO,KAAK,CAAC;SACd;QAED,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,GAAG,CAAC,GAAG,CAAC,EAAE;gBACpB,SAAS;aACV;YAED,IACE,CAAC,SAAS,CAAE,IAAgC,CAAC,GAAG,CAAC,EAAG,KAAiC,CAAC,GAAG,CAAC,CAAC,EAC3F;gBACA,OAAO,KAAK,CAAC;aACd;SACF;QAED,OAAO,IAAI,CAAC;KACb;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"sources":["../../src/util/deep-equal.ts"],"sourcesContent":["/* eslint-disable no-continue */\nexport function deepEqual(left: unknown, right: unknown, ignore?: Set<string>) {\n if (left === right) {\n return true;\n }\n\n if (left && right && typeof left === 'object' && typeof right === 'object') {\n if (Array.isArray(left)) {\n if (!Array.isArray(right)) {\n return false;\n }\n\n const { length } = left;\n\n if (right.length !== length) {\n return false;\n }\n\n for (let i = 0; i < length; i += 1) {\n if (!deepEqual(left[i], right[i])) {\n return false;\n }\n }\n\n return true;\n }\n\n const keys = Object.keys(left);\n const keyLength = keys.length;\n\n if (keyLength !== Object.keys(right).length) {\n return false;\n }\n\n for (const key of keys) {\n if (ignore?.has(key)) {\n continue;\n }\n\n if (\n !deepEqual((left as Record<string, unknown>)[key], (right as Record<string, unknown>)[key])\n ) {\n return false;\n }\n }\n\n return true;\n }\n\n return false;\n}\n"],"names":["deepEqual","left","right","ignore","Array","isArray","length","i","keys","Object","keyLength","key","has"],"mappings":"AAAA,gCAAgC,CAChC,OAAO,SAASA,SAAS,CAACC,IAAa,EAAEC,KAAc,EAAEC,MAAoB,EAAE;IAC7E,IAAIF,IAAI,KAAKC,KAAK,EAAE;QAClB,OAAO,IAAI,CAAC;KACb;IAED,IAAID,IAAI,IAAIC,KAAK,IAAI,OAAOD,IAAI,KAAK,QAAQ,IAAI,OAAOC,KAAK,KAAK,QAAQ,EAAE;QAC1E,IAAIE,KAAK,CAACC,OAAO,CAACJ,IAAI,CAAC,EAAE;YACvB,IAAI,CAACG,KAAK,CAACC,OAAO,CAACH,KAAK,CAAC,EAAE;gBACzB,OAAO,KAAK,CAAC;aACd;YAED,MAAM,EAAEI,MAAM,CAAA,EAAE,GAAGL,IAAI,AAAC;YAExB,IAAIC,KAAK,CAACI,MAAM,KAAKA,MAAM,EAAE;gBAC3B,OAAO,KAAK,CAAC;aACd;YAED,IAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,MAAM,EAAEC,CAAC,IAAI,CAAC,CAAE;gBAClC,IAAI,CAACP,SAAS,CAACC,IAAI,CAACM,CAAC,CAAC,EAAEL,KAAK,CAACK,CAAC,CAAC,CAAC,EAAE;oBACjC,OAAO,KAAK,CAAC;iBACd;aACF;YAED,OAAO,IAAI,CAAC;SACb;QAED,MAAMC,IAAI,GAAGC,MAAM,CAACD,IAAI,CAACP,IAAI,CAAC,AAAC;QAC/B,MAAMS,SAAS,GAAGF,IAAI,CAACF,MAAM,AAAC;QAE9B,IAAII,SAAS,KAAKD,MAAM,CAACD,IAAI,CAACN,KAAK,CAAC,CAACI,MAAM,EAAE;YAC3C,OAAO,KAAK,CAAC;SACd;QAED,KAAK,MAAMK,GAAG,IAAIH,IAAI,CAAE;YACtB,IAAIL,MAAM,aAANA,MAAM,WAAK,GAAXA,KAAAA,CAAW,GAAXA,MAAM,CAAES,GAAG,CAACD,GAAG,CAAC,EAAE;gBACpB,SAAS;aACV;YAED,IACE,CAACX,SAAS,CAAC,AAACC,IAAI,AAA4B,CAACU,GAAG,CAAC,EAAE,AAACT,KAAK,AAA4B,CAACS,GAAG,CAAC,CAAC,EAC3F;gBACA,OAAO,KAAK,CAAC;aACd;SACF;QAED,OAAO,IAAI,CAAC;KACb;IAED,OAAO,KAAK,CAAC;CACd"}
@@ -19,15 +19,18 @@ export function setLoaderMappings(ctx, info, value, type) {
19
19
  Object.keys(value).forEach((field) => {
20
20
  const map = cache(ctx);
21
21
  const mapping = value[field];
22
- const subPath = [...mapping.indirectPath, field];
22
+ const subPath = [
23
+ ...mapping.indirectPath,
24
+ field
25
+ ];
23
26
  const key = cacheKey(getIndirectType(type, info).name, info.path, subPath);
24
27
  map.set(key, mapping.mappings);
25
28
  });
26
29
  }
27
30
  export function getLoaderMapping(ctx, path, type) {
28
- var _a;
29
31
  const map = cache(ctx);
30
32
  const key = cacheKey(type, path, []);
31
- return (_a = map.get(key)) !== null && _a !== void 0 ? _a : null;
33
+ var ref;
34
+ return (ref = map.get(key)) !== null && ref !== void 0 ? ref : null;
32
35
  }
33
36
  //# sourceMappingURL=loader-map.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader-map.js","sourceRoot":"","sources":["../../src/util/loader-map.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,KAAK,GAAG,kBAAkB,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,EAA0B,CAAC,CAAC;AAE7E,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,IAAgC,EAAE,OAAiB;IACxF,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,OAAO,GAA2C,IAAI,CAAC;IAE3D,OAAO,OAAO,EAAE;QACd,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,EAAE;YACnC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;SACnD;QACD,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;KACxB;IAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;QAC3B,GAAG,GAAG,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;KACzB;IAED,OAAO,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,GAAW,EACX,IAAwB,EACxB,KAAqB,EACrB,IAAsB;IAEtB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACnC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QAEvB,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7B,MAAM,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAE3E,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAW,EAAE,IAAgC,EAAE,IAAY;;IAC1F,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IAErC,OAAO,MAAA,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,mCAAI,IAAI,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"sources":["../../src/util/loader-map.ts"],"sourcesContent":["import { GraphQLNamedType, GraphQLResolveInfo } from 'graphql';\nimport { createContextCache } from '@pothos/core';\nimport { LoaderMappings } from '../types';\nimport { getIndirectType } from './map-query';\n\nconst cache = createContextCache((ctx) => new Map<string, LoaderMappings>());\n\nexport function cacheKey(type: string, path: GraphQLResolveInfo['path'], subPath: string[]) {\n let key = '';\n let current: GraphQLResolveInfo['path'] | undefined = path;\n\n while (current) {\n if (typeof current.key === 'string') {\n key = key ? `${current.key}.${key}` : current.key;\n }\n current = current.prev;\n }\n\n for (const entry of subPath) {\n key = `${key}.${entry}`;\n }\n\n return `${type}@${key}`;\n}\n\nexport function setLoaderMappings(\n ctx: object,\n info: GraphQLResolveInfo,\n value: LoaderMappings,\n type: GraphQLNamedType,\n) {\n Object.keys(value).forEach((field) => {\n const map = cache(ctx);\n\n const mapping = value[field];\n const subPath = [...mapping.indirectPath, field];\n const key = cacheKey(getIndirectType(type, info).name, info.path, subPath);\n\n map.set(key, mapping.mappings);\n });\n}\n\nexport function getLoaderMapping(ctx: object, path: GraphQLResolveInfo['path'], type: string) {\n const map = cache(ctx);\n const key = cacheKey(type, path, []);\n\n return map.get(key) ?? null;\n}\n"],"names":["createContextCache","getIndirectType","cache","ctx","Map","cacheKey","type","path","subPath","key","current","prev","entry","setLoaderMappings","info","value","Object","keys","forEach","field","map","mapping","indirectPath","name","set","mappings","getLoaderMapping","get"],"mappings":"AACA,SAASA,kBAAkB,QAAQ,cAAc,CAAC;AAElD,SAASC,eAAe,QAAQ,aAAa,CAAC;AAE9C,MAAMC,KAAK,GAAGF,kBAAkB,CAAC,CAACG,GAAG,GAAK,IAAIC,GAAG,EAA0B;AAAA,CAAC,AAAC;AAE7E,OAAO,SAASC,QAAQ,CAACC,IAAY,EAAEC,IAAgC,EAAEC,OAAiB,EAAE;IAC1F,IAAIC,GAAG,GAAG,EAAE,AAAC;IACb,IAAIC,OAAO,GAA2CH,IAAI,AAAC;IAE3D,MAAOG,OAAO,CAAE;QACd,IAAI,OAAOA,OAAO,CAACD,GAAG,KAAK,QAAQ,EAAE;YACnCA,GAAG,GAAGA,GAAG,GAAG,CAAC,EAAEC,OAAO,CAACD,GAAG,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,GAAGC,OAAO,CAACD,GAAG,CAAC;SACnD;QACDC,OAAO,GAAGA,OAAO,CAACC,IAAI,CAAC;KACxB;IAED,KAAK,MAAMC,KAAK,IAAIJ,OAAO,CAAE;QAC3BC,GAAG,GAAG,CAAC,EAAEA,GAAG,CAAC,CAAC,EAAEG,KAAK,CAAC,CAAC,CAAC;KACzB;IAED,OAAO,CAAC,EAAEN,IAAI,CAAC,CAAC,EAAEG,GAAG,CAAC,CAAC,CAAC;CACzB;AAED,OAAO,SAASI,iBAAiB,CAC/BV,GAAW,EACXW,IAAwB,EACxBC,KAAqB,EACrBT,IAAsB,EACtB;IACAU,MAAM,CAACC,IAAI,CAACF,KAAK,CAAC,CAACG,OAAO,CAAC,CAACC,KAAK,GAAK;QACpC,MAAMC,GAAG,GAAGlB,KAAK,CAACC,GAAG,CAAC,AAAC;QAEvB,MAAMkB,OAAO,GAAGN,KAAK,CAACI,KAAK,CAAC,AAAC;QAC7B,MAAMX,OAAO,GAAG;eAAIa,OAAO,CAACC,YAAY;YAAEH,KAAK;SAAC,AAAC;QACjD,MAAMV,GAAG,GAAGJ,QAAQ,CAACJ,eAAe,CAACK,IAAI,EAAEQ,IAAI,CAAC,CAACS,IAAI,EAAET,IAAI,CAACP,IAAI,EAAEC,OAAO,CAAC,AAAC;QAE3EY,GAAG,CAACI,GAAG,CAACf,GAAG,EAAEY,OAAO,CAACI,QAAQ,CAAC,CAAC;KAChC,CAAC,CAAC;CACJ;AAED,OAAO,SAASC,gBAAgB,CAACvB,GAAW,EAAEI,IAAgC,EAAED,IAAY,EAAE;IAC5F,MAAMc,GAAG,GAAGlB,KAAK,CAACC,GAAG,CAAC,AAAC;IACvB,MAAMM,GAAG,GAAGJ,QAAQ,CAACC,IAAI,EAAEC,IAAI,EAAE,EAAE,CAAC,AAAC;QAE9Ba,GAAY;IAAnB,OAAOA,CAAAA,GAAY,GAAZA,GAAG,CAACO,GAAG,CAAClB,GAAG,CAAC,cAAZW,GAAY,cAAZA,GAAY,GAAI,IAAI,CAAC;CAC7B"}
@@ -1,15 +1,13 @@
1
- /* eslint-disable no-param-reassign */
2
- /* eslint-disable no-continue */
3
- import { getNamedType, isObjectType, Kind, } from 'graphql';
1
+ /* eslint-disable no-param-reassign */ /* eslint-disable no-continue */ import { getNamedType, isObjectType, Kind } from 'graphql';
4
2
  import { getArgumentValues } from 'graphql/execution/values.js';
5
3
  import { setLoaderMappings } from './loader-map.js';
6
- import { createState, mergeSelection, selectionCompatible, selectionToQuery, } from './selections.js';
4
+ import { createState, mergeSelection, selectionCompatible, selectionToQuery } from './selections.js';
7
5
  function addTypeSelectionsForField(type, context, info, state, selection, indirectPath) {
8
- var _a;
9
6
  if (selection.name.value.startsWith("__")) {
10
7
  return;
11
8
  }
12
- const { pothosPrismaInclude, pothosPrismaSelect, pothosPrismaIndirectInclude, pothosPrismaModel, } = ((_a = type.extensions) !== null && _a !== void 0 ? _a : {});
9
+ var _extensions;
10
+ const { pothosPrismaInclude, pothosPrismaSelect, pothosPrismaIndirectInclude, pothosPrismaModel, } = (_extensions = type.extensions) !== null && _extensions !== void 0 ? _extensions : {};
13
11
  if (pothosPrismaIndirectInclude) {
14
12
  resolveIndirectInclude(type, info, selection, pothosPrismaIndirectInclude.path, indirectPath, (resolvedType, field, path) => {
15
13
  addTypeSelectionsForField(resolvedType, context, info, state, field, path);
@@ -23,8 +21,12 @@ function addTypeSelectionsForField(type, context, info, state, selection, indire
23
21
  }
24
22
  if (pothosPrismaInclude || pothosPrismaSelect) {
25
23
  mergeSelection(state, {
26
- select: pothosPrismaSelect ? { ...pothosPrismaSelect } : undefined,
27
- include: pothosPrismaInclude ? { ...pothosPrismaInclude } : undefined,
24
+ select: pothosPrismaSelect ? {
25
+ ...pothosPrismaSelect
26
+ } : undefined,
27
+ include: pothosPrismaInclude ? {
28
+ ...pothosPrismaInclude
29
+ } : undefined
28
30
  });
29
31
  }
30
32
  if (selection.selectionSet) {
@@ -32,7 +34,6 @@ function addTypeSelectionsForField(type, context, info, state, selection, indire
32
34
  }
33
35
  }
34
36
  function resolveIndirectInclude(type, info, selection, includePath, path, resolve) {
35
- var _a, _b, _c, _d;
36
37
  const [include, ...rest] = includePath;
37
38
  if (!selection.selectionSet || !include) {
38
39
  return;
@@ -43,10 +44,20 @@ function resolveIndirectInclude(type, info, selection, includePath, path, resolv
43
44
  if (sel.name.value === include.name && isObjectType(type)) {
44
45
  const returnType = getNamedType(type.getFields()[sel.name.value].type);
45
46
  if (rest.length === 0) {
46
- resolve(returnType, sel, [...path, (_b = (_a = sel.alias) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : sel.name.value]);
47
+ var ref;
48
+ var ref1;
49
+ resolve(returnType, sel, [
50
+ ...path,
51
+ (ref1 = (ref = sel.alias) === null || ref === void 0 ? void 0 : ref.value) !== null && ref1 !== void 0 ? ref1 : sel.name.value
52
+ ]);
47
53
  }
48
54
  else {
49
- resolveIndirectInclude(returnType, info, sel, rest, [...path, (_d = (_c = sel.alias) === null || _c === void 0 ? void 0 : _c.value) !== null && _d !== void 0 ? _d : sel.name.value], resolve);
55
+ var ref2;
56
+ var ref3;
57
+ resolveIndirectInclude(returnType, info, sel, rest, [
58
+ ...path,
59
+ (ref3 = (ref2 = sel.alias) === null || ref2 === void 0 ? void 0 : ref2.value) !== null && ref3 !== void 0 ? ref3 : sel.name.value
60
+ ], resolve);
50
61
  }
51
62
  }
52
63
  continue;
@@ -89,7 +100,7 @@ function addNestedSelections(type, context, info, state, selections, indirectPat
89
100
  }
90
101
  }
91
102
  function addFieldSelection(type, context, info, state, selection, indirectPath) {
92
- var _a, _b, _c, _d, _e, _f;
103
+ var ref, ref4;
93
104
  if (selection.name.value.startsWith("__")) {
94
105
  return;
95
106
  }
@@ -97,9 +108,9 @@ function addFieldSelection(type, context, info, state, selection, indirectPath)
97
108
  if (!field) {
98
109
  throw new Error(`Unknown field ${selection.name.value} on ${type.name}`);
99
110
  }
100
- const fieldSelect = (_a = field.extensions) === null || _a === void 0 ? void 0 : _a.pothosPrismaSelect;
111
+ const fieldSelect = (ref = field.extensions) === null || ref === void 0 ? void 0 : ref.pothosPrismaSelect;
101
112
  let fieldSelectionMap;
102
- const fieldParentSelect = (_b = field.extensions) === null || _b === void 0 ? void 0 : _b.pothosPrismaParentSelect;
113
+ const fieldParentSelect = (ref4 = field.extensions) === null || ref4 === void 0 ? void 0 : ref4.pothosPrismaParentSelect;
103
114
  let mappings = {};
104
115
  if (typeof fieldSelect === "function") {
105
116
  const args = getArgumentValues(field, selection, info.variableValues);
@@ -108,7 +119,10 @@ function addFieldSelection(type, context, info, state, selection, indirectPath)
108
119
  const query = typeof rawQuery === "function" ? rawQuery(args, context) : rawQuery;
109
120
  const fieldState = createStateForType(returnType, info, state);
110
121
  if (typeof query === "object" && Object.keys(query).length > 0) {
111
- mergeSelection(fieldState, { select: {}, ...query });
122
+ mergeSelection(fieldState, {
123
+ select: {},
124
+ ...query
125
+ });
112
126
  }
113
127
  addTypeSelectionsForField(returnType, context, info, fieldState, selection, []);
114
128
  // eslint-disable-next-line prefer-destructuring
@@ -117,24 +131,32 @@ function addFieldSelection(type, context, info, state, selection, indirectPath)
117
131
  });
118
132
  }
119
133
  else {
120
- fieldSelectionMap = { select: fieldSelect };
134
+ fieldSelectionMap = {
135
+ select: fieldSelect
136
+ };
121
137
  }
122
138
  if (fieldSelect && selectionCompatible(state, fieldSelectionMap, true)) {
139
+ var ref5;
123
140
  mergeSelection(state, fieldSelectionMap);
124
- state.mappings[(_d = (_c = selection.alias) === null || _c === void 0 ? void 0 : _c.value) !== null && _d !== void 0 ? _d : selection.name.value] = {
141
+ var ref6;
142
+ state.mappings[(ref6 = (ref5 = selection.alias) === null || ref5 === void 0 ? void 0 : ref5.value) !== null && ref6 !== void 0 ? ref6 : selection.name.value] = {
125
143
  field: selection.name.value,
126
144
  mappings,
127
- indirectPath,
145
+ indirectPath
128
146
  };
129
147
  }
130
- else if (fieldParentSelect &&
131
- state.parent &&
132
- selectionCompatible(state.parent, { select: fieldParentSelect }, true)) {
133
- mergeSelection(state.parent, { select: fieldParentSelect });
134
- state.mappings[(_f = (_e = selection.alias) === null || _e === void 0 ? void 0 : _e.value) !== null && _f !== void 0 ? _f : selection.name.value] = {
148
+ else if (fieldParentSelect && state.parent && selectionCompatible(state.parent, {
149
+ select: fieldParentSelect
150
+ }, true)) {
151
+ var ref7;
152
+ mergeSelection(state.parent, {
153
+ select: fieldParentSelect
154
+ });
155
+ var ref8;
156
+ state.mappings[(ref8 = (ref7 = selection.alias) === null || ref7 === void 0 ? void 0 : ref7.value) !== null && ref8 !== void 0 ? ref8 : selection.name.value] = {
135
157
  field: selection.name.value,
136
158
  mappings,
137
- indirectPath,
159
+ indirectPath
138
160
  };
139
161
  }
140
162
  }
@@ -155,16 +177,17 @@ export function selectionStateFromInfo(context, info, typeName) {
155
177
  return state;
156
178
  }
157
179
  function createStateForType(type, info, parent) {
158
- var _a, _b;
180
+ var ref, ref9;
159
181
  const targetType = getIndirectType(type, info);
160
- const fieldMap = (_a = targetType.extensions) === null || _a === void 0 ? void 0 : _a.pothosPrismaFieldMap;
161
- return createState(fieldMap, ((_b = targetType.extensions) === null || _b === void 0 ? void 0 : _b.pothosPrismaSelect) ? "select" : "include", parent);
182
+ const fieldMap = (ref = targetType.extensions) === null || ref === void 0 ? void 0 : ref.pothosPrismaFieldMap;
183
+ return createState(fieldMap, ((ref9 = targetType.extensions) === null || ref9 === void 0 ? void 0 : ref9.pothosPrismaSelect) ? "select" : "include", parent);
162
184
  }
163
185
  export function getIndirectType(type, info) {
164
- var _a, _b;
186
+ var ref;
165
187
  let targetType = type;
166
- while ((_a = targetType.extensions) === null || _a === void 0 ? void 0 : _a.pothosPrismaIndirectInclude) {
167
- targetType = info.schema.getType(((_b = targetType.extensions) === null || _b === void 0 ? void 0 : _b.pothosPrismaIndirectInclude).getType());
188
+ while ((ref = targetType.extensions) === null || ref === void 0 ? void 0 : ref.pothosPrismaIndirectInclude) {
189
+ var ref10;
190
+ targetType = info.schema.getType(((ref10 = targetType.extensions) === null || ref10 === void 0 ? void 0 : ref10.pothosPrismaIndirectInclude).getType());
168
191
  }
169
192
  return targetType;
170
193
  }
@@ -1 +1 @@
1
- {"version":3,"file":"map-query.js","sourceRoot":"","sources":["../../src/util/map-query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/util/map-query.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\n/* eslint-disable no-continue */\nimport {\n FieldNode,\n FragmentDefinitionNode,\n getNamedType,\n GraphQLNamedType,\n GraphQLObjectType,\n GraphQLResolveInfo,\n InlineFragmentNode,\n isObjectType,\n Kind,\n SelectionSetNode,\n} from 'graphql';\nimport { getArgumentValues } from 'graphql/execution/values';\nimport { setLoaderMappings } from './loader-map';\nimport { FieldMap } from './relation-map';\nimport {\n createState,\n mergeSelection,\n selectionCompatible,\n SelectionState,\n selectionToQuery,\n} from './selections';\n\nimport { FieldSelection, IncludeMap, IndirectInclude, LoaderMappings, SelectionMap } from '..';\n\nfunction addTypeSelectionsForField(\n type: GraphQLNamedType,\n context: object,\n info: GraphQLResolveInfo,\n state: SelectionState,\n selection: FieldNode,\n indirectPath: string[],\n) {\n if (selection.name.value.startsWith('__')) {\n return;\n }\n\n const {\n pothosPrismaInclude,\n pothosPrismaSelect,\n pothosPrismaIndirectInclude,\n pothosPrismaModel,\n } = (type.extensions ?? {}) as {\n pothosPrismaModel?: string;\n pothosPrismaInclude?: IncludeMap;\n pothosPrismaSelect?: IncludeMap;\n pothosPrismaIndirectInclude?: IndirectInclude;\n };\n\n if (pothosPrismaIndirectInclude) {\n resolveIndirectInclude(\n type,\n info,\n selection,\n pothosPrismaIndirectInclude.path,\n indirectPath,\n (resolvedType, field, path) => {\n addTypeSelectionsForField(resolvedType, context, info, state, field, path);\n },\n );\n }\n\n if (!isObjectType(type)) {\n return;\n }\n\n if (pothosPrismaModel && !pothosPrismaSelect) {\n state.mode = 'include';\n }\n\n if (pothosPrismaInclude || pothosPrismaSelect) {\n mergeSelection(state, {\n select: pothosPrismaSelect ? { ...pothosPrismaSelect } : undefined,\n include: pothosPrismaInclude ? { ...pothosPrismaInclude } : undefined,\n });\n }\n\n if (selection.selectionSet) {\n addNestedSelections(type, context, info, state, selection.selectionSet, indirectPath);\n }\n}\n\nfunction resolveIndirectInclude(\n type: GraphQLNamedType,\n info: GraphQLResolveInfo,\n selection: FieldNode | FragmentDefinitionNode | InlineFragmentNode,\n includePath: IndirectInclude['path'],\n path: string[],\n resolve: (type: GraphQLNamedType, field: FieldNode, path: string[]) => void,\n) {\n const [include, ...rest] = includePath;\n if (!selection.selectionSet || !include) {\n return;\n }\n\n for (const sel of selection.selectionSet.selections) {\n switch (sel.kind) {\n case Kind.FIELD:\n if (sel.name.value === include.name && isObjectType(type)) {\n const returnType = getNamedType(type.getFields()[sel.name.value].type);\n\n if (rest.length === 0) {\n resolve(returnType, sel, [...path, sel.alias?.value ?? sel.name.value]);\n } else {\n resolveIndirectInclude(\n returnType,\n info,\n sel,\n rest,\n [...path, sel.alias?.value ?? sel.name.value],\n resolve,\n );\n }\n }\n continue;\n case Kind.FRAGMENT_SPREAD:\n if (info.fragments[sel.name.value].typeCondition.name.value === include.type) {\n resolveIndirectInclude(\n info.schema.getType(include.type)!,\n info,\n info.fragments[sel.name.value],\n includePath,\n path,\n resolve,\n );\n }\n\n continue;\n\n case Kind.INLINE_FRAGMENT:\n if (!sel.typeCondition || sel.typeCondition.name.value === include.type) {\n resolveIndirectInclude(\n sel.typeCondition ? info.schema.getType(sel.typeCondition.name.value)! : type,\n info,\n sel,\n includePath,\n path,\n resolve,\n );\n }\n\n continue;\n\n default:\n throw new Error(`Unsupported selection kind ${(selection as { kind: string }).kind}`);\n }\n }\n}\n\nfunction addNestedSelections(\n type: GraphQLObjectType,\n context: object,\n info: GraphQLResolveInfo,\n state: SelectionState,\n selections: SelectionSetNode,\n indirectPath: string[],\n) {\n for (const selection of selections.selections) {\n switch (selection.kind) {\n case Kind.FIELD:\n addFieldSelection(type, context, info, state, selection, indirectPath);\n\n continue;\n case Kind.FRAGMENT_SPREAD:\n if (info.fragments[selection.name.value].typeCondition.name.value !== type.name) {\n continue;\n }\n\n addNestedSelections(\n type,\n context,\n info,\n state,\n info.fragments[selection.name.value].selectionSet,\n indirectPath,\n );\n\n continue;\n\n case Kind.INLINE_FRAGMENT:\n if (selection.typeCondition && selection.typeCondition.name.value !== type.name) {\n continue;\n }\n\n addNestedSelections(type, context, info, state, selection.selectionSet, indirectPath);\n\n continue;\n\n default:\n throw new Error(`Unsupported selection kind ${(selection as { kind: string }).kind}`);\n }\n }\n}\n\nfunction addFieldSelection(\n type: GraphQLObjectType,\n context: object,\n info: GraphQLResolveInfo,\n state: SelectionState,\n selection: FieldNode,\n indirectPath: string[],\n) {\n if (selection.name.value.startsWith('__')) {\n return;\n }\n\n const field = type.getFields()[selection.name.value];\n\n if (!field) {\n throw new Error(`Unknown field ${selection.name.value} on ${type.name}`);\n }\n\n const fieldSelect = field.extensions?.pothosPrismaSelect as FieldSelection | undefined;\n\n let fieldSelectionMap: SelectionMap;\n\n const fieldParentSelect = field.extensions?.pothosPrismaParentSelect as\n | Record<string, SelectionMap | boolean>\n | undefined;\n let mappings: LoaderMappings = {};\n\n if (typeof fieldSelect === 'function') {\n const args = getArgumentValues(field, selection, info.variableValues) as Record<\n string,\n unknown\n >;\n\n fieldSelectionMap = fieldSelect(args, context, (rawQuery) => {\n const returnType = getNamedType(field.type);\n const query = typeof rawQuery === 'function' ? rawQuery(args, context) : rawQuery;\n\n const fieldState = createStateForType(returnType, info, state);\n\n if (typeof query === 'object' && Object.keys(query).length > 0) {\n mergeSelection(fieldState, { select: {}, ...query });\n }\n\n addTypeSelectionsForField(returnType, context, info, fieldState, selection, []);\n\n // eslint-disable-next-line prefer-destructuring\n mappings = fieldState.mappings;\n\n return selectionToQuery(fieldState);\n });\n } else {\n fieldSelectionMap = { select: fieldSelect };\n }\n\n if (fieldSelect && selectionCompatible(state, fieldSelectionMap, true)) {\n mergeSelection(state, fieldSelectionMap);\n state.mappings[selection.alias?.value ?? selection.name.value] = {\n field: selection.name.value,\n mappings,\n indirectPath,\n };\n } else if (\n fieldParentSelect &&\n state.parent &&\n selectionCompatible(state.parent, { select: fieldParentSelect }, true)\n ) {\n mergeSelection(state.parent, { select: fieldParentSelect });\n state.mappings[selection.alias?.value ?? selection.name.value] = {\n field: selection.name.value,\n mappings,\n indirectPath,\n };\n }\n}\n\nexport function queryFromInfo(context: object, info: GraphQLResolveInfo, typeName?: string): {} {\n const type = typeName ? info.schema.getTypeMap()[typeName] : getNamedType(info.returnType);\n const state = createStateForType(type, info);\n\n addTypeSelectionsForField(type, context, info, state, info.fieldNodes[0], []);\n\n setLoaderMappings(context, info, state.mappings, type);\n\n return selectionToQuery(state);\n}\n\nexport function selectionStateFromInfo(\n context: object,\n info: GraphQLResolveInfo,\n typeName?: string,\n) {\n const type = typeName ? info.schema.getTypeMap()[typeName] : info.parentType;\n\n const state = createStateForType(type, info);\n\n if (!isObjectType(type)) {\n throw new Error('Prisma plugin can only resolve includes for object types');\n }\n\n addFieldSelection(type, context, info, state, info.fieldNodes[0], []);\n\n return state;\n}\n\nfunction createStateForType(\n type: GraphQLNamedType,\n info: GraphQLResolveInfo,\n parent?: SelectionState,\n) {\n const targetType = getIndirectType(type, info);\n\n const fieldMap = targetType.extensions?.pothosPrismaFieldMap as FieldMap;\n\n return createState(\n fieldMap,\n targetType.extensions?.pothosPrismaSelect ? 'select' : 'include',\n parent,\n );\n}\n\nexport function getIndirectType(type: GraphQLNamedType, info: GraphQLResolveInfo) {\n let targetType = type;\n\n while (targetType.extensions?.pothosPrismaIndirectInclude) {\n targetType = info.schema.getType(\n (targetType.extensions?.pothosPrismaIndirectInclude as IndirectInclude).getType(),\n )!;\n }\n\n return targetType;\n}\n"],"names":["getNamedType","isObjectType","Kind","getArgumentValues","setLoaderMappings","createState","mergeSelection","selectionCompatible","selectionToQuery","addTypeSelectionsForField","type","context","info","state","selection","indirectPath","name","value","startsWith","pothosPrismaInclude","pothosPrismaSelect","pothosPrismaIndirectInclude","pothosPrismaModel","extensions","resolveIndirectInclude","path","resolvedType","field","mode","select","undefined","include","selectionSet","addNestedSelections","includePath","resolve","rest","sel","selections","kind","FIELD","returnType","getFields","length","alias","FRAGMENT_SPREAD","fragments","typeCondition","schema","getType","INLINE_FRAGMENT","Error","addFieldSelection","fieldSelect","fieldSelectionMap","fieldParentSelect","pothosPrismaParentSelect","mappings","args","variableValues","rawQuery","query","fieldState","createStateForType","Object","keys","parent","queryFromInfo","typeName","getTypeMap","fieldNodes","selectionStateFromInfo","parentType","targetType","getIndirectType","fieldMap","pothosPrismaFieldMap"],"mappings":"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"}
@@ -1,11 +1,13 @@
1
1
  import { createContextCache } from '@pothos/core';
2
- export const getRelationMap = createContextCache((client) => createRelationMap(
3
- // eslint-disable-next-line no-underscore-dangle
4
- client._dmmf.datamodel));
2
+ export const getRelationMap = createContextCache((client) => createRelationMap(// eslint-disable-next-line no-underscore-dangle
3
+ (client)._dmmf.datamodel));
5
4
  export function createRelationMap({ models }) {
6
5
  const relationMap = new Map();
7
6
  models.forEach((model) => {
8
- relationMap.set(model.name, { model: model.name, relations: new Map() });
7
+ relationMap.set(model.name, {
8
+ model: model.name,
9
+ relations: new Map()
10
+ });
9
11
  });
10
12
  models.forEach((model) => {
11
13
  const map = relationMap.get(model.name).relations;
@@ -1 +1 @@
1
- {"version":3,"file":"relation-map.js","sourceRoot":"","sources":["../../src/util/relation-map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAUlD,MAAM,CAAC,MAAM,cAAc,GAAG,kBAAkB,CAAC,CAAC,MAAc,EAAE,EAAE,CAClE,iBAAiB;AACf,gDAAgD;AAC/C,MAA8D,CAAC,KAAK,CAAC,SAAS,CAChF,CACF,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,EAAE,MAAM,EAAkB;IAC1D,MAAM,WAAW,GAAgB,IAAI,GAAG,EAAE,CAAC;IAE3C,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC,SAAS,CAAC;QAEnD,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC7B,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;gBAC1D,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC,CAAC;aACnD;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC;AACrB,CAAC"}
1
+ {"version":3,"sources":["../../src/util/relation-map.ts"],"sourcesContent":["import { createContextCache } from '@pothos/core';\nimport { DMMF } from '@prisma/generator-helper';\n\nexport interface FieldMap {\n model: string;\n relations: Map<string, FieldMap>;\n}\n\nexport type RelationMap = Map<string, FieldMap>;\n\nexport const getRelationMap = createContextCache((client: object) =>\n createRelationMap(\n // eslint-disable-next-line no-underscore-dangle\n (client as unknown as { _dmmf: { datamodel: DMMF.Datamodel } })._dmmf.datamodel,\n ),\n);\n\nexport function createRelationMap({ models }: DMMF.Datamodel) {\n const relationMap: RelationMap = new Map();\n\n models.forEach((model) => {\n relationMap.set(model.name, { model: model.name, relations: new Map() });\n });\n\n models.forEach((model) => {\n const map = relationMap.get(model.name)!.relations;\n\n model.fields.forEach((field) => {\n if (field.kind === 'object' && relationMap.has(field.type)) {\n map.set(field.name, relationMap.get(field.type)!);\n }\n });\n });\n\n return relationMap;\n}\n"],"names":["createContextCache","getRelationMap","client","createRelationMap","_dmmf","datamodel","models","relationMap","Map","forEach","model","set","name","relations","map","get","fields","field","kind","has","type"],"mappings":"AAAA,SAASA,kBAAkB,QAAQ,cAAc,CAAC;AAUlD,OAAO,MAAMC,cAAc,GAAGD,kBAAkB,CAAC,CAACE,MAAc,GAC9DC,iBAAiB,CACf,gDAAgD;IAChD,CAACD,MAAM,CAAwD,CAACE,KAAK,CAACC,SAAS,CAChF;AAAA,CACF,CAAC;AAEF,OAAO,SAASF,iBAAiB,CAAC,EAAEG,MAAM,CAAA,EAAkB,EAAE;IAC5D,MAAMC,WAAW,GAAgB,IAAIC,GAAG,EAAE,AAAC;IAE3CF,MAAM,CAACG,OAAO,CAAC,CAACC,KAAK,GAAK;QACxBH,WAAW,CAACI,GAAG,CAACD,KAAK,CAACE,IAAI,EAAE;YAAEF,KAAK,EAAEA,KAAK,CAACE,IAAI;YAAEC,SAAS,EAAE,IAAIL,GAAG,EAAE;SAAE,CAAC,CAAC;KAC1E,CAAC,CAAC;IAEHF,MAAM,CAACG,OAAO,CAAC,CAACC,KAAK,GAAK;QACxB,MAAMI,GAAG,GAAGP,WAAW,CAACQ,GAAG,CAACL,KAAK,CAACE,IAAI,CAAC,CAAEC,SAAS,AAAC;QAEnDH,KAAK,CAACM,MAAM,CAACP,OAAO,CAAC,CAACQ,KAAK,GAAK;YAC9B,IAAIA,KAAK,CAACC,IAAI,KAAK,QAAQ,IAAIX,WAAW,CAACY,GAAG,CAACF,KAAK,CAACG,IAAI,CAAC,EAAE;gBAC1DN,GAAG,CAACH,GAAG,CAACM,KAAK,CAACL,IAAI,EAAEL,WAAW,CAACQ,GAAG,CAACE,KAAK,CAACG,IAAI,CAAC,CAAE,CAAC;aACnD;SACF,CAAC,CAAC;KACJ,CAAC,CAAC;IAEH,OAAOb,WAAW,CAAC;CACpB"}
@@ -1,6 +1,4 @@
1
- /* eslint-disable no-param-reassign */
2
- /* eslint-disable no-underscore-dangle */
3
- import { deepEqual } from './deep-equal.js';
1
+ /* eslint-disable no-param-reassign */ /* eslint-disable no-underscore-dangle */ import { deepEqual } from './deep-equal.js';
4
2
  export function selectionCompatible(state, selectionMap, ignoreQuery = false) {
5
3
  if (typeof selectionMap === "boolean") {
6
4
  return ignoreQuery || !selectionMap || Object.keys(state.query).length === 0;
@@ -14,10 +12,7 @@ export function selectionCompatible(state, selectionMap, ignoreQuery = false) {
14
12
  }
15
13
  return ignoreQuery || deepEqual(state.query, query);
16
14
  function compare(key, value) {
17
- return (value &&
18
- state.fieldMap.relations.has(key) &&
19
- state.relations.has(key) &&
20
- !selectionCompatible(state.relations.get(key), value));
15
+ return value && state.fieldMap.relations.has(key) && state.relations.has(key) && !selectionCompatible(state.relations.get(key), value);
21
16
  }
22
17
  }
23
18
  export function stateCompatible(state, newState, ignoreQuery = false) {
@@ -52,7 +47,7 @@ export function createState(fieldMap, mode, parent) {
52
47
  fields: new Set(),
53
48
  counts: new Set(),
54
49
  relations: new Map(),
55
- mappings: {},
50
+ mappings: {}
56
51
  };
57
52
  }
58
53
  export function mergeSelection(state, { select, include, ...query }) {
@@ -73,18 +68,20 @@ export function mergeSelection(state, { select, include, ...query }) {
73
68
  state.query = query;
74
69
  }
75
70
  function merge(key, value) {
76
- var _a;
77
71
  if (!value) {
78
72
  return;
79
73
  }
80
74
  if (key === "_count") {
81
- const counts = (_a = value.select) !== null && _a !== void 0 ? _a : {};
75
+ var _select;
76
+ const counts = (_select = value.select) !== null && _select !== void 0 ? _select : {};
82
77
  Object.keys(counts).forEach((count) => {
83
78
  state.counts.add(count);
84
79
  });
85
80
  return;
86
81
  }
87
- const selection = value === true ? { include: {} } : value;
82
+ const selection = value === true ? {
83
+ include: {}
84
+ } : value;
88
85
  const childMap = state.fieldMap.relations.get(key);
89
86
  if (childMap) {
90
87
  if (state.relations.has(key)) {
@@ -116,7 +113,7 @@ export function selectionToQuery(state) {
116
113
  counts[count] = true;
117
114
  }
118
115
  nestedIncludes._count = {
119
- select: counts,
116
+ select: counts
120
117
  };
121
118
  }
122
119
  if (state.mode === "select") {
@@ -126,14 +123,12 @@ export function selectionToQuery(state) {
126
123
  });
127
124
  return {
128
125
  ...state.query,
129
- select: nestedIncludes,
126
+ select: nestedIncludes
130
127
  };
131
128
  }
132
- return hasSelection
133
- ? {
134
- ...state.query,
135
- include: nestedIncludes,
136
- }
137
- : state.query;
129
+ return hasSelection ? {
130
+ ...state.query,
131
+ include: nestedIncludes
132
+ } : state.query;
138
133
  }
139
134
  //# sourceMappingURL=selections.js.map