@pothos/plugin-drizzle 0.18.0 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/CHANGELOG.md +351 -0
  2. package/README.md +784 -221
  3. package/dts/connection-helpers.d.ts +18 -8
  4. package/dts/connection-helpers.d.ts.map +1 -1
  5. package/dts/drizzle-field-builder.d.ts +4 -11
  6. package/dts/drizzle-field-builder.d.ts.map +1 -1
  7. package/dts/global-types.d.ts.map +1 -1
  8. package/dts/index.d.ts.map +1 -1
  9. package/dts/model-loader.d.ts +18 -17
  10. package/dts/model-loader.d.ts.map +1 -1
  11. package/dts/types.d.ts +81 -20
  12. package/dts/types.d.ts.map +1 -1
  13. package/dts/utils/adapter.d.ts +39 -0
  14. package/dts/utils/adapter.d.ts.map +1 -0
  15. package/dts/utils/await-selections.d.ts +12 -0
  16. package/dts/utils/await-selections.d.ts.map +1 -0
  17. package/dts/utils/config.d.ts +23 -3
  18. package/dts/utils/config.d.ts.map +1 -1
  19. package/dts/utils/cursors.d.ts +6 -6
  20. package/dts/utils/cursors.d.ts.map +1 -1
  21. package/dts/utils/map-query.d.ts +22 -21
  22. package/dts/utils/map-query.d.ts.map +1 -1
  23. package/dts/utils/path-info.d.ts +13 -0
  24. package/dts/utils/path-info.d.ts.map +1 -0
  25. package/dts/utils/relation-filter.d.ts +48 -0
  26. package/dts/utils/relation-filter.d.ts.map +1 -0
  27. package/dts/utils/selections.d.ts +2 -21
  28. package/dts/utils/selections.d.ts.map +1 -1
  29. package/esm/connection-helpers.d.ts +18 -8
  30. package/esm/connection-helpers.d.ts.map +1 -1
  31. package/esm/connection-helpers.js +52 -19
  32. package/esm/connection-helpers.js.map +1 -1
  33. package/esm/drizzle-field-builder.d.ts +4 -11
  34. package/esm/drizzle-field-builder.d.ts.map +1 -1
  35. package/esm/drizzle-field-builder.js +138 -96
  36. package/esm/drizzle-field-builder.js.map +1 -1
  37. package/esm/field-builder.js +61 -47
  38. package/esm/field-builder.js.map +1 -1
  39. package/esm/global-types.d.ts.map +1 -1
  40. package/esm/index.d.ts.map +1 -1
  41. package/esm/index.js +37 -61
  42. package/esm/index.js.map +1 -1
  43. package/esm/model-loader.d.ts +18 -17
  44. package/esm/model-loader.d.ts.map +1 -1
  45. package/esm/model-loader.js +76 -45
  46. package/esm/model-loader.js.map +1 -1
  47. package/esm/schema-builder.js +40 -149
  48. package/esm/schema-builder.js.map +1 -1
  49. package/esm/types.d.ts +81 -20
  50. package/esm/types.d.ts.map +1 -1
  51. package/esm/types.js +1 -0
  52. package/esm/types.js.map +1 -1
  53. package/esm/utils/adapter.d.ts +39 -0
  54. package/esm/utils/adapter.d.ts.map +1 -0
  55. package/esm/utils/adapter.js +137 -0
  56. package/esm/utils/adapter.js.map +1 -0
  57. package/esm/utils/await-selections.d.ts +12 -0
  58. package/esm/utils/await-selections.d.ts.map +1 -0
  59. package/esm/utils/await-selections.js +19 -0
  60. package/esm/utils/await-selections.js.map +1 -0
  61. package/esm/utils/config.d.ts +23 -3
  62. package/esm/utils/config.d.ts.map +1 -1
  63. package/esm/utils/config.js +1 -4
  64. package/esm/utils/config.js.map +1 -1
  65. package/esm/utils/cursors.d.ts +6 -6
  66. package/esm/utils/cursors.d.ts.map +1 -1
  67. package/esm/utils/cursors.js +55 -90
  68. package/esm/utils/cursors.js.map +1 -1
  69. package/esm/utils/map-query.d.ts +22 -21
  70. package/esm/utils/map-query.d.ts.map +1 -1
  71. package/esm/utils/map-query.js +40 -336
  72. package/esm/utils/map-query.js.map +1 -1
  73. package/esm/utils/path-info.d.ts +13 -0
  74. package/esm/utils/path-info.d.ts.map +1 -0
  75. package/esm/utils/path-info.js +37 -0
  76. package/esm/utils/path-info.js.map +1 -0
  77. package/esm/utils/relation-filter.d.ts +48 -0
  78. package/esm/utils/relation-filter.d.ts.map +1 -0
  79. package/esm/utils/relation-filter.js +92 -0
  80. package/esm/utils/relation-filter.js.map +1 -0
  81. package/esm/utils/selections.d.ts +2 -21
  82. package/esm/utils/selections.d.ts.map +1 -1
  83. package/esm/utils/selections.js +1 -133
  84. package/esm/utils/selections.js.map +1 -1
  85. package/lib/connection-helpers.js +51 -18
  86. package/lib/connection-helpers.js.map +1 -1
  87. package/lib/drizzle-field-builder.js +136 -94
  88. package/lib/drizzle-field-builder.js.map +1 -1
  89. package/lib/field-builder.js +58 -44
  90. package/lib/field-builder.js.map +1 -1
  91. package/lib/index.js +36 -60
  92. package/lib/index.js.map +1 -1
  93. package/lib/model-loader.js +76 -45
  94. package/lib/model-loader.js.map +1 -1
  95. package/lib/schema-builder.js +40 -149
  96. package/lib/schema-builder.js.map +1 -1
  97. package/lib/types.js +4 -0
  98. package/lib/types.js.map +1 -1
  99. package/lib/utils/adapter.js +147 -0
  100. package/lib/utils/adapter.js.map +1 -0
  101. package/lib/utils/await-selections.js +20 -0
  102. package/lib/utils/await-selections.js.map +1 -0
  103. package/lib/utils/config.js +1 -4
  104. package/lib/utils/config.js.map +1 -1
  105. package/lib/utils/cursors.js +47 -88
  106. package/lib/utils/cursors.js.map +1 -1
  107. package/lib/utils/map-query.js +28 -341
  108. package/lib/utils/map-query.js.map +1 -1
  109. package/lib/utils/path-info.js +39 -0
  110. package/lib/utils/path-info.js.map +1 -0
  111. package/lib/utils/relation-filter.js +91 -0
  112. package/lib/utils/relation-filter.js.map +1 -0
  113. package/lib/utils/selections.js +3 -158
  114. package/lib/utils/selections.js.map +1 -1
  115. package/package.json +8 -6
  116. package/src/connection-helpers.ts +167 -53
  117. package/src/drizzle-field-builder.ts +296 -176
  118. package/src/field-builder.ts +110 -77
  119. package/src/global-types.ts +0 -32
  120. package/src/index.ts +42 -68
  121. package/src/model-loader.ts +110 -71
  122. package/src/schema-builder.ts +76 -169
  123. package/src/types.ts +176 -44
  124. package/src/utils/adapter.ts +197 -0
  125. package/src/utils/await-selections.ts +31 -0
  126. package/src/utils/config.ts +1 -5
  127. package/src/utils/cursors.ts +53 -81
  128. package/src/utils/map-query.ts +51 -708
  129. package/src/utils/path-info.ts +40 -0
  130. package/src/utils/relation-filter.ts +185 -0
  131. package/src/utils/selections.ts +2 -207
  132. package/dts/utils/deep-equal.d.ts +0 -2
  133. package/dts/utils/deep-equal.d.ts.map +0 -1
  134. package/dts/utils/drizzle-graphql.d.ts +0 -2
  135. package/dts/utils/drizzle-graphql.d.ts.map +0 -1
  136. package/dts/utils/loader-map.d.ts +0 -11
  137. package/dts/utils/loader-map.d.ts.map +0 -1
  138. package/dts/utils/usage.d.ts +0 -5
  139. package/dts/utils/usage.d.ts.map +0 -1
  140. package/esm/utils/deep-equal.d.ts +0 -2
  141. package/esm/utils/deep-equal.d.ts.map +0 -1
  142. package/esm/utils/deep-equal.js +0 -45
  143. package/esm/utils/deep-equal.js.map +0 -1
  144. package/esm/utils/drizzle-graphql.d.ts +0 -2
  145. package/esm/utils/drizzle-graphql.d.ts.map +0 -1
  146. package/esm/utils/drizzle-graphql.js +0 -232
  147. package/esm/utils/drizzle-graphql.js.map +0 -1
  148. package/esm/utils/loader-map.d.ts +0 -11
  149. package/esm/utils/loader-map.d.ts.map +0 -1
  150. package/esm/utils/loader-map.js +0 -35
  151. package/esm/utils/loader-map.js.map +0 -1
  152. package/esm/utils/usage.d.ts +0 -5
  153. package/esm/utils/usage.d.ts.map +0 -1
  154. package/esm/utils/usage.js +0 -59
  155. package/esm/utils/usage.js.map +0 -1
  156. package/lib/utils/deep-equal.js +0 -55
  157. package/lib/utils/deep-equal.js.map +0 -1
  158. package/lib/utils/drizzle-graphql.js +0 -236
  159. package/lib/utils/drizzle-graphql.js.map +0 -1
  160. package/lib/utils/loader-map.js +0 -56
  161. package/lib/utils/loader-map.js.map +0 -1
  162. package/lib/utils/usage.js +0 -83
  163. package/lib/utils/usage.js.map +0 -1
  164. package/src/utils/deep-equal.ts +0 -57
  165. package/src/utils/drizzle-graphql.ts +0 -274
  166. package/src/utils/loader-map.ts +0 -49
  167. package/src/utils/usage.ts +0 -62
@@ -9,360 +9,47 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
- get getIndirectType () {
13
- return getIndirectType;
14
- },
15
- get normalizeInclude () {
16
- return normalizeInclude;
12
+ get planFromInfo () {
13
+ return planFromInfo;
17
14
  },
18
15
  get queryFromInfo () {
19
16
  return queryFromInfo;
20
17
  },
21
- get selectionStateFromInfo () {
22
- return selectionStateFromInfo;
23
- },
24
- get stateFromInfo () {
25
- return stateFromInfo;
18
+ get queryFromPlan () {
19
+ return queryFromPlan;
26
20
  }
27
21
  });
28
22
  const _core = require("@pothos/core");
29
- const _graphql = require("graphql");
30
- const _loadermap = require("./loader-map.js");
31
- const _selections = require("./selections.js");
32
- const _usage = require("./usage.js");
33
- function addTypeSelectionsForField(config, type, context, info, state, selection, indirectPath, deferred, segments = []) {
34
- var _type_extensions;
35
- if (selection.name.value.startsWith('__')) {
36
- return;
37
- }
38
- const { pothosDrizzleSelect, pothosIndirectInclude } = (_type_extensions = type.extensions) !== null && _type_extensions !== void 0 ? _type_extensions : {};
39
- if (!!(pothosIndirectInclude === null || pothosIndirectInclude === void 0 ? void 0 : pothosIndirectInclude.path) && pothosIndirectInclude.path.length > 0 || !!(pothosIndirectInclude === null || pothosIndirectInclude === void 0 ? void 0 : pothosIndirectInclude.paths) && pothosIndirectInclude.paths.length === 0) {
40
- var _pothosIndirectInclude_paths;
41
- resolveIndirectIncludePaths(type, info, selection, [], (_pothosIndirectInclude_paths = pothosIndirectInclude.paths) !== null && _pothosIndirectInclude_paths !== void 0 ? _pothosIndirectInclude_paths : [
42
- pothosIndirectInclude.path
43
- ], indirectPath, (resolvedType, field, path)=>{
44
- addTypeSelectionsForField(config, resolvedType, context, info, state, field, path, deferred, segments);
45
- }, deferred);
46
- } else if (pothosIndirectInclude) {
47
- addTypeSelectionsForField(config, info.schema.getType(pothosIndirectInclude.getType()), context, info, state, selection, indirectPath, deferred, segments);
48
- return;
49
- }
50
- if (!((0, _graphql.isObjectType)(type) || (0, _graphql.isInterfaceType)(type))) {
51
- return;
52
- }
53
- if (pothosDrizzleSelect) {
54
- (0, _selections.mergeSelection)(config, state, pothosDrizzleSelect === true ? true : {
55
- ...pothosDrizzleSelect
56
- });
57
- }
58
- if (selection.selectionSet && (!deferred || !state.skipDeferredFragments)) {
59
- addNestedSelections(config, type, context, info, state, selection.selectionSet, indirectPath, segments);
60
- }
61
- }
62
- function resolveIndirectIncludePaths(type, info, selection, pathPrefix, includePaths, path, resolve, deferred) {
63
- for (const includePath of includePaths){
64
- if (pathPrefix.length > 0) {
65
- resolveIndirectInclude(type, info, selection, [
66
- ...pathPrefix,
67
- ...includePath
68
- ], path, resolve, deferred);
69
- } else {
70
- resolveIndirectInclude(type, info, selection, includePath, path, resolve, deferred);
71
- }
72
- }
73
- }
74
- function resolveIndirectInclude(type, info, selection, includePath, path, resolve, deferred = false) {
75
- if (includePath.length === 0) {
76
- resolve(type, selection, path, deferred);
77
- return;
78
- }
79
- const [include, ...rest] = includePath;
80
- if (!selection.selectionSet || !include) {
81
- return;
82
- }
83
- for (const sel of selection.selectionSet.selections){
84
- switch(sel.kind){
85
- case _graphql.Kind.FIELD:
86
- if (!fieldSkipped(info, sel) && sel.name.value === include.name && ((0, _graphql.isObjectType)(type) || (0, _graphql.isInterfaceType)(type))) {
87
- var _ref;
88
- var _sel_alias;
89
- const returnType = (0, _graphql.getNamedType)(type.getFields()[sel.name.value].type);
90
- resolveIndirectInclude(returnType, info, sel, rest, [
91
- ...path,
92
- (_ref = (_sel_alias = sel.alias) === null || _sel_alias === void 0 ? void 0 : _sel_alias.value) !== null && _ref !== void 0 ? _ref : sel.name.value
93
- ], resolve, deferred);
94
- }
95
- continue;
96
- case _graphql.Kind.FRAGMENT_SPREAD:
97
- if (!include.type || info.fragments[sel.name.value].typeCondition.name.value === include.type) {
98
- resolveIndirectInclude(include.type ? info.schema.getType(include.type) : type, info, info.fragments[sel.name.value], includePath, path, resolve, deferred || isDeferredFragment(sel, info));
99
- }
100
- continue;
101
- case _graphql.Kind.INLINE_FRAGMENT:
102
- if (!sel.typeCondition || !include.type || sel.typeCondition.name.value === include.type) {
103
- resolveIndirectInclude(sel.typeCondition ? info.schema.getType(sel.typeCondition.name.value) : type, info, sel, includePath, path, resolve, deferred || isDeferredFragment(sel, info));
104
- }
105
- continue;
106
- default:
107
- throw new _core.PothosValidationError(`Unsupported selection kind ${selection.kind}`);
108
- }
109
- }
110
- }
111
- function addNestedSelections(config, type, context, info, state, selections, indirectPath, segments = []) {
112
- let parentType = type;
113
- for (const selection of selections.selections){
114
- switch(selection.kind){
115
- case _graphql.Kind.FIELD:
116
- addFieldSelection(config, type, context, info, state, selection, indirectPath, segments);
117
- continue;
118
- case _graphql.Kind.FRAGMENT_SPREAD:
119
- var _parentType_extensions;
120
- if (state.skipDeferredFragments && isDeferredFragment(selection, info)) {
121
- continue;
122
- }
123
- parentType = info.schema.getType(info.fragments[selection.name.value].typeCondition.name.value);
124
- if ((0, _graphql.isObjectType)(type) ? parentType.name !== type.name : ((_parentType_extensions = parentType.extensions) === null || _parentType_extensions === void 0 ? void 0 : _parentType_extensions.pothosDrizzleModel) !== type.extensions.pothosDrizzleModel) {
125
- continue;
126
- }
127
- addNestedSelections(config, parentType, context, info, state, info.fragments[selection.name.value].selectionSet, indirectPath, segments);
128
- continue;
129
- case _graphql.Kind.INLINE_FRAGMENT:
130
- var _parentType_extensions1;
131
- if (state.skipDeferredFragments && isDeferredFragment(selection, info)) {
132
- continue;
133
- }
134
- parentType = selection.typeCondition ? info.schema.getType(selection.typeCondition.name.value) : type;
135
- if ((0, _graphql.isObjectType)(type) ? parentType.name !== type.name : ((_parentType_extensions1 = parentType.extensions) === null || _parentType_extensions1 === void 0 ? void 0 : _parentType_extensions1.pothosDrizzleModel) !== type.extensions.pothosDrizzleModel) {
136
- continue;
137
- }
138
- addNestedSelections(config, parentType, context, info, state, selection.selectionSet, indirectPath, segments);
139
- continue;
140
- default:
141
- throw new _core.PothosValidationError(`Unsupported selection kind ${selection.kind}`);
142
- }
23
+ const _selectionmapper = require("@pothos/selection-mapper");
24
+ const _adapter = require("./adapter.js");
25
+ function queryFromInfo({ config, select, ...options }) {
26
+ const plan = _selectionmapper.Plan.fromInfo((0, _adapter.drizzleAdapter)(config), {
27
+ ...options,
28
+ // A `select` without `columns` merges as "no columns yet", not "every column".
29
+ initial: select ? {
30
+ columns: {},
31
+ ...select
32
+ } : undefined
33
+ });
34
+ if (!plan) {
35
+ // Nothing is planned under the paths: the caller gets its own selection back untouched.
36
+ return select !== null && select !== void 0 ? select : {};
143
37
  }
38
+ return (0, _core.isThenable)(plan) ? plan.then((settled)=>settled.query()) : plan.query();
144
39
  }
145
- function addFieldSelection(config, type, context, info, state, selection, indirectPath, segments = []) {
146
- var _ref;
147
- var _selection_alias, _field_extensions;
148
- if (selection.name.value.startsWith('__') || fieldSkipped(info, selection)) {
149
- return;
150
- }
151
- const field = type.getFields()[selection.name.value];
152
- if (!field) {
153
- throw new _core.PothosValidationError(`Unknown field ${selection.name.value} on ${type.name}`);
154
- }
155
- const allSegments = [
156
- ...segments,
157
- {
158
- field: selection.name.value,
159
- alias: (_ref = (_selection_alias = selection.alias) === null || _selection_alias === void 0 ? void 0 : _selection_alias.value) !== null && _ref !== void 0 ? _ref : selection.name.value,
160
- parentType: type.name,
161
- isList: (0, _graphql.isListType)(field.type) || (0, _graphql.isListType)((0, _graphql.getNamedType)(field.type))
162
- }
163
- ];
164
- const fieldSelect = (_field_extensions = field.extensions) === null || _field_extensions === void 0 ? void 0 : _field_extensions.pothosDrizzleSelect;
165
- let fieldSelectionMap;
166
- let mappings = {};
167
- if (typeof fieldSelect === 'function') {
168
- const pathInfo = {
169
- path: allSegments.map((s)=>`${s.parentType}.${s.field}`),
170
- segments: allSegments
171
- };
172
- const args = (0, _core.getMappedArgumentValues)(field, selection, context, info);
173
- fieldSelectionMap = fieldSelect(args, context, (rawQuery, indirectInclude, expectedType)=>{
174
- const returnType = (0, _graphql.getNamedType)(field.type);
175
- const query = typeof rawQuery === 'function' ? rawQuery(args, context) : rawQuery;
176
- const normalizedIndirectInclude = Array.isArray(indirectInclude) ? normalizeInclude(indirectInclude, getIndirectType(returnType, info), expectedType ? (0, _graphql.getNamedType)(info.schema.getType(expectedType)) : undefined) : indirectInclude;
177
- const fieldState = createStateForSelection(config, info, normalizedIndirectInclude ? info.schema.getType(normalizedIndirectInclude.getType()) : returnType, state);
178
- if (typeof query === 'object' && Object.keys(query).length > 0) {
179
- (0, _selections.mergeSelection)(config, fieldState, {
180
- columns: {},
181
- ...query
182
- });
183
- }
184
- if (!!(normalizedIndirectInclude === null || normalizedIndirectInclude === void 0 ? void 0 : normalizedIndirectInclude.path) && normalizedIndirectInclude.path.length > 0 || !!(normalizedIndirectInclude === null || normalizedIndirectInclude === void 0 ? void 0 : normalizedIndirectInclude.paths) && normalizedIndirectInclude.paths.length > 0) {
185
- var _ref, _normalizedIndirectInclude_paths;
186
- var _returnType_extensions_pothosIndirectInclude, _returnType_extensions;
187
- resolveIndirectIncludePaths(returnType, info, selection, (_ref = (_returnType_extensions = returnType.extensions) === null || _returnType_extensions === void 0 ? void 0 : (_returnType_extensions_pothosIndirectInclude = _returnType_extensions.pothosIndirectInclude) === null || _returnType_extensions_pothosIndirectInclude === void 0 ? void 0 : _returnType_extensions_pothosIndirectInclude.path) !== null && _ref !== void 0 ? _ref : [], (_normalizedIndirectInclude_paths = normalizedIndirectInclude.paths) !== null && _normalizedIndirectInclude_paths !== void 0 ? _normalizedIndirectInclude_paths : [
188
- normalizedIndirectInclude.path
189
- ], [], (resolvedType, resolvedField, path, deferred)=>{
190
- addTypeSelectionsForField(config, resolvedType, context, info, fieldState, resolvedField, path, deferred, allSegments);
191
- });
192
- }
193
- addTypeSelectionsForField(config, returnType, context, info, fieldState, selection, [], undefined, allSegments);
194
- mappings = fieldState.mappings;
195
- return (0, _selections.selectionToQuery)(config, fieldState);
196
- }, (path)=>{
197
- const returnType = (0, _graphql.getNamedType)(field.type);
198
- let node = null;
199
- resolveIndirectInclude(returnType, info, selection, path.map((name)=>({
200
- name
201
- })), [], (_, resolvedField)=>{
202
- node = resolvedField;
203
- });
204
- return node;
205
- }, pathInfo);
206
- } else {
207
- fieldSelectionMap = fieldSelect;
208
- }
209
- if (fieldSelect && (0, _selections.selectionCompatible)(state, fieldSelectionMap, true)) {
210
- var _ref1;
211
- var _selection_alias1;
212
- (0, _selections.mergeSelection)(config, state, fieldSelectionMap);
213
- state.mappings = mergeMappings(state.mappings, {
214
- [(_ref1 = (_selection_alias1 = selection.alias) === null || _selection_alias1 === void 0 ? void 0 : _selection_alias1.value) !== null && _ref1 !== void 0 ? _ref1 : selection.name.value]: {
215
- field: selection.name.value,
216
- type: type.name,
217
- mappings,
218
- indirectPath
219
- }
220
- });
221
- }
40
+ function planFromInfo({ config, ...options }) {
41
+ return _selectionmapper.Plan.fromInfo((0, _adapter.drizzleAdapter)(config), options);
222
42
  }
223
- function mergeMappings(existing, incoming) {
224
- const result = {
225
- ...existing
226
- };
227
- for (const [key, value] of Object.entries(incoming)){
228
- if (result[key]) {
229
- result[key] = {
230
- ...result[key],
231
- mappings: mergeMappings(result[key].mappings, value.mappings)
232
- };
233
- } else {
234
- result[key] = value;
235
- }
43
+ function queryFromPlan(plan, select) {
44
+ if (!plan) {
45
+ // Nothing is selected under the paths: the caller gets its own selection back.
46
+ return select !== null && select !== void 0 ? select : {};
236
47
  }
237
- return result;
238
- }
239
- function queryFromInfo({ withUsageCheck, ...options }) {
240
- const state = stateFromInfo(options);
241
- (0, _loadermap.setLoaderMappings)(options.context, options.info, state.mappings);
242
- const query = (0, _selections.selectionToQuery)(options.config, state);
243
- return withUsageCheck ? (0, _usage.wrapWithUsageCheck)(query) : query;
244
- }
245
- function stateFromInfo({ config, context, info, typeName, select, path = [], paths = [] }) {
246
- const returnType = (0, _graphql.getNamedType)(info.returnType);
247
- const type = typeName ? info.schema.getTypeMap()[typeName] : returnType;
248
- const initialSelection = select ? {
48
+ // A `select` without `columns` merges as "no columns yet", not "every column".
49
+ return plan.query(select ? {
249
50
  columns: {},
250
51
  ...select
251
- } : undefined;
252
- let state;
253
- if (path.length > 0 || paths.length > 0) {
254
- var _returnType_extensions, _ref;
255
- const { pothosIndirectInclude } = (_returnType_extensions = returnType.extensions) !== null && _returnType_extensions !== void 0 ? _returnType_extensions : {};
256
- resolveIndirectInclude(returnType, info, info.fieldNodes[0], (_ref = pothosIndirectInclude === null || pothosIndirectInclude === void 0 ? void 0 : pothosIndirectInclude.path) !== null && _ref !== void 0 ? _ref : [], [], (indirectType, indirectField, subPath, deferred)=>{
257
- resolveIndirectIncludePaths(indirectType, info, indirectField, [], paths.length > 0 ? paths.map((p)=>p.map((n)=>typeof n === 'string' ? {
258
- name: n
259
- } : n)) : [
260
- path.map((n)=>typeof n === 'string' ? {
261
- name: n
262
- } : n)
263
- ], subPath, (resolvedType, resolvedField, nested, deferred)=>{
264
- state = createStateForSelection(config, info, resolvedType, undefined, initialSelection);
265
- addTypeSelectionsForField(config, typeName ? type : resolvedType, context, info, state, resolvedField, nested, deferred);
266
- }, deferred);
267
- });
268
- } else {
269
- var _ref1;
270
- var _rootFieldNode_alias;
271
- state = createStateForSelection(config, info, type, undefined, initialSelection);
272
- // Create initial segment for the root query field
273
- const rootFieldNode = info.fieldNodes[0];
274
- const rootField = info.parentType.getFields()[rootFieldNode.name.value];
275
- const initialSegments = rootField ? [
276
- {
277
- field: rootFieldNode.name.value,
278
- alias: (_ref1 = (_rootFieldNode_alias = rootFieldNode.alias) === null || _rootFieldNode_alias === void 0 ? void 0 : _rootFieldNode_alias.value) !== null && _ref1 !== void 0 ? _ref1 : rootFieldNode.name.value,
279
- parentType: info.parentType.name,
280
- isList: (0, _graphql.isListType)(rootField.type) || (0, _graphql.isListType)((0, _graphql.getNamedType)(rootField.type))
281
- }
282
- ] : [];
283
- addTypeSelectionsForField(config, type, context, info, state, info.fieldNodes[0], [], undefined, initialSegments);
284
- }
285
- if (!state) {
286
- state = createStateForSelection(config, info, type, undefined, initialSelection);
287
- }
288
- return state;
289
- }
290
- function selectionStateFromInfo(config, context, info, typeName) {
291
- const type = typeName ? info.schema.getTypeMap()[typeName] : info.parentType;
292
- const state = createStateForSelection(config, info, type);
293
- if (!((0, _graphql.isObjectType)(type) || (0, _graphql.isInterfaceType)(type))) {
294
- throw new _core.PothosValidationError('Drizzle plugin can only resolve selections for object and interface types');
295
- }
296
- addFieldSelection(config, type, context, info, state, info.fieldNodes[0], []);
297
- return state;
298
- }
299
- function createStateForSelection(config, info, type, parent, initialSelections) {
300
- var _targetType_extensions, _ref;
301
- const targetType = getIndirectType(type, info);
302
- const { pothosDrizzleTable } = (_targetType_extensions = targetType.extensions) !== null && _targetType_extensions !== void 0 ? _targetType_extensions : {};
303
- if (!pothosDrizzleTable) {
304
- throw new _core.PothosValidationError(`Expected ${targetType.name} to have a table config`);
305
- }
306
- const state = (0, _selections.createState)(pothosDrizzleTable, (_ref = parent === null || parent === void 0 ? void 0 : parent.skipDeferredFragments) !== null && _ref !== void 0 ? _ref : config.skipDeferredFragments, parent);
307
- if (initialSelections) {
308
- (0, _selections.mergeSelection)(config, state, initialSelections);
309
- }
310
- return state;
311
- }
312
- function getIndirectType(type, info) {
313
- var _targetType_extensions;
314
- let targetType = type;
315
- while((_targetType_extensions = targetType.extensions) === null || _targetType_extensions === void 0 ? void 0 : _targetType_extensions.pothosIndirectInclude){
316
- targetType = info.schema.getType(targetType.extensions.pothosIndirectInclude.getType());
317
- }
318
- return targetType;
319
- }
320
- function normalizeInclude(path, type, expectedType) {
321
- let currentType = path.length > 0 ? type : expectedType !== null && expectedType !== void 0 ? expectedType : type;
322
- const normalized = [];
323
- if (!((0, _graphql.isObjectType)(currentType) || (0, _graphql.isInterfaceType)(currentType))) {
324
- throw new _core.PothosValidationError(`Expected ${currentType} to be an Object type`);
325
- }
326
- for (const fieldName of path){
327
- const field = currentType.getFields()[fieldName];
328
- if (!field) {
329
- throw new _core.PothosValidationError(`Expected ${currentType} to have a field ${fieldName}`);
330
- }
331
- currentType = (0, _graphql.getNamedType)(field.type);
332
- if (!((0, _graphql.isObjectType)(currentType) || (0, _graphql.isInterfaceType)(currentType))) {
333
- throw new _core.PothosValidationError(`Expected ${currentType} to be an Object or Interface type`);
334
- }
335
- normalized.push({
336
- name: fieldName,
337
- type: currentType.name
338
- });
339
- }
340
- return {
341
- getType: ()=>{
342
- var _ref;
343
- return (_ref = expectedType === null || expectedType === void 0 ? void 0 : expectedType.name) !== null && _ref !== void 0 ? _ref : normalized.length > 0 ? normalized[normalized.length - 1].type : type.name;
344
- },
345
- path: normalized
346
- };
347
- }
348
- function fieldSkipped(info, selection) {
349
- const skip = (0, _graphql.getDirectiveValues)(_graphql.GraphQLSkipDirective, selection, info.variableValues);
350
- if ((skip === null || skip === void 0 ? void 0 : skip.if) === true) {
351
- return true;
352
- }
353
- const include = (0, _graphql.getDirectiveValues)(_graphql.GraphQLIncludeDirective, selection, info.variableValues);
354
- if ((include === null || include === void 0 ? void 0 : include.if) === false) {
355
- return true;
356
- }
357
- return false;
358
- }
359
- function isDeferredFragment(node, info) {
360
- const deferDirective = info.schema.getDirective('defer');
361
- if (!deferDirective) {
362
- return false;
363
- }
364
- const defer = (0, _graphql.getDirectiveValues)(deferDirective, node, info.variableValues);
365
- return !!defer && defer.if !== false;
52
+ } : undefined);
366
53
  }
367
54
 
368
55
  //# sourceMappingURL=map-query.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/map-query.ts"],"names":["getIndirectType","normalizeInclude","queryFromInfo","selectionStateFromInfo","stateFromInfo","addTypeSelectionsForField","config","type","context","info","state","selection","indirectPath","deferred","segments","name","value","startsWith","pothosDrizzleSelect","pothosIndirectInclude","extensions","path","length","paths","resolveIndirectIncludePaths","resolvedType","field","schema","getType","isObjectType","isInterfaceType","mergeSelection","selectionSet","skipDeferredFragments","addNestedSelections","pathPrefix","includePaths","resolve","includePath","resolveIndirectInclude","include","rest","sel","selections","kind","Kind","FIELD","fieldSkipped","returnType","getNamedType","getFields","alias","FRAGMENT_SPREAD","fragments","typeCondition","isDeferredFragment","INLINE_FRAGMENT","PothosValidationError","parentType","addFieldSelection","pothosDrizzleModel","allSegments","isList","isListType","fieldSelect","fieldSelectionMap","mappings","pathInfo","map","s","args","getMappedArgumentValues","rawQuery","indirectInclude","expectedType","query","normalizedIndirectInclude","Array","isArray","undefined","fieldState","createStateForSelection","Object","keys","columns","resolvedField","selectionToQuery","node","_","selectionCompatible","mergeMappings","existing","incoming","result","key","entries","withUsageCheck","options","setLoaderMappings","wrapWithUsageCheck","typeName","select","getTypeMap","initialSelection","fieldNodes","indirectType","indirectField","subPath","p","n","nested","rootFieldNode","rootField","initialSegments","parent","initialSelections","targetType","pothosDrizzleTable","createState","currentType","normalized","fieldName","push","skip","getDirectiveValues","GraphQLSkipDirective","variableValues","if","GraphQLIncludeDirective","deferDirective","getDirective","defer"],"mappings":";;;;;;;;;;;QA4oBgBA;eAAAA;;QAYAC;eAAAA;;QAjLAC;eAAAA;;QAmHAC;eAAAA;;QAtGAC;eAAAA;;;sBApf+C;yBAqBxD;2BAGgD;4BAQhD;uBAC4B;AAQnC,SAASC,0BACPC,MAAiC,EACjCC,IAAsB,EACtBC,OAAe,EACfC,IAAwB,EACxBC,KAAqB,EACrBC,SAAoB,EACpBC,YAAsB,EACtBC,QAAkB,EAClBC,WAA4B,EAAE;QAM0BP;IAJxD,IAAII,UAAUI,IAAI,CAACC,KAAK,CAACC,UAAU,CAAC,OAAO;QACzC;IACF;IAEA,MAAM,EAAEC,mBAAmB,EAAEC,qBAAqB,EAAE,IAAIZ,mBAAAA,KAAKa,UAAU,cAAfb,8BAAAA,mBAAmB,CAAC;IAK5E,IACE,AAAC,CAAC,EAACY,kCAAAA,4CAAAA,sBAAuBE,IAAI,KAAIF,sBAAsBE,IAAI,CAACC,MAAM,GAAG,KACrE,CAAC,EAACH,kCAAAA,4CAAAA,sBAAuBI,KAAK,KAAIJ,sBAAsBI,KAAK,CAACD,MAAM,KAAK,GAC1E;YAMEH;QALFK,4BACEjB,MACAE,MACAE,WACA,EAAE,GACFQ,+BAAAA,sBAAsBI,KAAK,cAA3BJ,0CAAAA,+BAA+B;YAACA,sBAAsBE,IAAI;SAAE,EAC5DT,cACA,CAACa,cAAcC,OAAOL;YACpBhB,0BACEC,QACAmB,cACAjB,SACAC,MACAC,OACAgB,OACAL,MACAR,UACAC;QAEJ,GACAD;IAEJ,OAAO,IAAIM,uBAAuB;QAChCd,0BACEC,QACAG,KAAKkB,MAAM,CAACC,OAAO,CAACT,sBAAsBS,OAAO,KACjDpB,SACAC,MACAC,OACAC,WACAC,cACAC,UACAC;QAEF;IACF;IAEA,IAAI,CAAEe,CAAAA,IAAAA,qBAAY,EAACtB,SAASuB,IAAAA,wBAAe,EAACvB,KAAI,GAAI;QAClD;IACF;IAEA,IAAIW,qBAAqB;QACvBa,IAAAA,0BAAc,EAACzB,QAAQI,OAAOQ,wBAAwB,OAAO,OAAO;YAAE,GAAGA,mBAAmB;QAAC;IAC/F;IAEA,IAAIP,UAAUqB,YAAY,IAAK,CAAA,CAACnB,YAAY,CAACH,MAAMuB,qBAAqB,AAAD,GAAI;QACzEC,oBACE5B,QACAC,MACAC,SACAC,MACAC,OACAC,UAAUqB,YAAY,EACtBpB,cACAE;IAEJ;AACF;AAEA,SAASU,4BACPjB,IAAsB,EACtBE,IAAwB,EACxBE,SAAkE,EAClEwB,UAA6C,EAC7CC,YAAiD,EACjDf,IAAc,EACdgB,OAA8F,EAC9FxB,QAAkB;IAElB,KAAK,MAAMyB,eAAeF,aAAc;QACtC,IAAID,WAAWb,MAAM,GAAG,GAAG;YACzBiB,uBACEhC,MACAE,MACAE,WACA;mBAAIwB;mBAAeG;aAAY,EAC/BjB,MACAgB,SACAxB;QAEJ,OAAO;YACL0B,uBAAuBhC,MAAME,MAAME,WAAW2B,aAAajB,MAAMgB,SAASxB;QAC5E;IACF;AACF;AAEA,SAAS0B,uBACPhC,IAAsB,EACtBE,IAAwB,EACxBE,SAAkE,EAClE2B,WAA8C,EAC9CjB,IAAc,EACdgB,OAA8F,EAC9FxB,WAAW,KAAK;IAEhB,IAAIyB,YAAYhB,MAAM,KAAK,GAAG;QAC5Be,QAAQ9B,MAAMI,WAAwBU,MAAMR;QAC5C;IACF;IAEA,MAAM,CAAC2B,SAAS,GAAGC,KAAK,GAAGH;IAC3B,IAAI,CAAC3B,UAAUqB,YAAY,IAAI,CAACQ,SAAS;QACvC;IACF;IAEA,KAAK,MAAME,OAAO/B,UAAUqB,YAAY,CAACW,UAAU,CAAE;QACnD,OAAQD,IAAIE,IAAI;YACd,KAAKC,aAAI,CAACC,KAAK;gBACb,IACE,CAACC,aAAatC,MAAMiC,QACpBA,IAAI3B,IAAI,CAACC,KAAK,KAAKwB,QAAQzB,IAAI,IAC9Bc,CAAAA,IAAAA,qBAAY,EAACtB,SAASuB,IAAAA,wBAAe,EAACvB,KAAI,GAC3C;;wBAQYmC;oBAPZ,MAAMM,aAAaC,IAAAA,qBAAY,EAAC1C,KAAK2C,SAAS,EAAE,CAACR,IAAI3B,IAAI,CAACC,KAAK,CAAC,CAACT,IAAI;oBAErEgC,uBACES,YACAvC,MACAiC,KACAD,MACA;2BAAIpB;iCAAMqB,aAAAA,IAAIS,KAAK,cAATT,iCAAAA,WAAW1B,KAAK,uCAAI0B,IAAI3B,IAAI,CAACC,KAAK;qBAAC,EAC7CqB,SACAxB;gBAEJ;gBACA;YACF,KAAKgC,aAAI,CAACO,eAAe;gBACvB,IACE,CAACZ,QAAQjC,IAAI,IACbE,KAAK4C,SAAS,CAACX,IAAI3B,IAAI,CAACC,KAAK,CAAC,CAACsC,aAAa,CAACvC,IAAI,CAACC,KAAK,KAAKwB,QAAQjC,IAAI,EACxE;oBACAgC,uBACEC,QAAQjC,IAAI,GAAGE,KAAKkB,MAAM,CAACC,OAAO,CAACY,QAAQjC,IAAI,IAAKA,MACpDE,MACAA,KAAK4C,SAAS,CAACX,IAAI3B,IAAI,CAACC,KAAK,CAAC,EAC9BsB,aACAjB,MACAgB,SACAxB,YAAY0C,mBAAmBb,KAAKjC;gBAExC;gBAEA;YAEF,KAAKoC,aAAI,CAACW,eAAe;gBACvB,IAAI,CAACd,IAAIY,aAAa,IAAI,CAACd,QAAQjC,IAAI,IAAImC,IAAIY,aAAa,CAACvC,IAAI,CAACC,KAAK,KAAKwB,QAAQjC,IAAI,EAAE;oBACxFgC,uBACEG,IAAIY,aAAa,GAAG7C,KAAKkB,MAAM,CAACC,OAAO,CAACc,IAAIY,aAAa,CAACvC,IAAI,CAACC,KAAK,IAAKT,MACzEE,MACAiC,KACAJ,aACAjB,MACAgB,SACAxB,YAAY0C,mBAAmBb,KAAKjC;gBAExC;gBAEA;YAEF;gBACE,MAAM,IAAIgD,2BAAqB,CAC7B,CAAC,2BAA2B,EAAE,AAAC9C,UAA+BiC,IAAI,EAAE;QAE1E;IACF;AACF;AAEA,SAASV,oBACP5B,MAAiC,EACjCC,IAA8C,EAC9CC,OAAe,EACfC,IAAwB,EACxBC,KAAqB,EACrBiC,UAA4B,EAC5B/B,YAAsB,EACtBE,WAA4B,EAAE;IAE9B,IAAI4C,aAAanD;IACjB,KAAK,MAAMI,aAAagC,WAAWA,UAAU,CAAE;QAC7C,OAAQhC,UAAUiC,IAAI;YACpB,KAAKC,aAAI,CAACC,KAAK;gBACba,kBAAkBrD,QAAQC,MAAMC,SAASC,MAAMC,OAAOC,WAAWC,cAAcE;gBAE/E;YACF,KAAK+B,aAAI,CAACO,eAAe;oBAWjBM;gBAVN,IAAIhD,MAAMuB,qBAAqB,IAAIsB,mBAAmB5C,WAAWF,OAAO;oBACtE;gBACF;gBAEAiD,aAAajD,KAAKkB,MAAM,CAACC,OAAO,CAC9BnB,KAAK4C,SAAS,CAAC1C,UAAUI,IAAI,CAACC,KAAK,CAAC,CAACsC,aAAa,CAACvC,IAAI,CAACC,KAAK;gBAE/D,IACEa,IAAAA,qBAAY,EAACtB,QACTmD,WAAW3C,IAAI,KAAKR,KAAKQ,IAAI,GAC7B2C,EAAAA,yBAAAA,WAAWtC,UAAU,cAArBsC,6CAAAA,uBAAuBE,kBAAkB,MAAKrD,KAAKa,UAAU,CAACwC,kBAAkB,EACpF;oBACA;gBACF;gBAEA1B,oBACE5B,QACAoD,YACAlD,SACAC,MACAC,OACAD,KAAK4C,SAAS,CAAC1C,UAAUI,IAAI,CAACC,KAAK,CAAC,CAACgB,YAAY,EACjDpB,cACAE;gBAGF;YAEF,KAAK+B,aAAI,CAACW,eAAe;oBAWjBE;gBAVN,IAAIhD,MAAMuB,qBAAqB,IAAIsB,mBAAmB5C,WAAWF,OAAO;oBACtE;gBACF;gBAEAiD,aAAa/C,UAAU2C,aAAa,GAC/B7C,KAAKkB,MAAM,CAACC,OAAO,CAACjB,UAAU2C,aAAa,CAACvC,IAAI,CAACC,KAAK,IACvDT;gBACJ,IACEsB,IAAAA,qBAAY,EAACtB,QACTmD,WAAW3C,IAAI,KAAKR,KAAKQ,IAAI,GAC7B2C,EAAAA,0BAAAA,WAAWtC,UAAU,cAArBsC,8CAAAA,wBAAuBE,kBAAkB,MAAKrD,KAAKa,UAAU,CAACwC,kBAAkB,EACpF;oBACA;gBACF;gBAEA1B,oBACE5B,QACAoD,YACAlD,SACAC,MACAC,OACAC,UAAUqB,YAAY,EACtBpB,cACAE;gBAGF;YAEF;gBACE,MAAM,IAAI2C,2BAAqB,CAC7B,CAAC,2BAA2B,EAAE,AAAC9C,UAA+BiC,IAAI,EAAE;QAE1E;IACF;AACF;AAEA,SAASe,kBACPrD,MAAiC,EACjCC,IAA8C,EAC9CC,OAAe,EACfC,IAAwB,EACxBC,KAAqB,EACrBC,SAAoB,EACpBC,YAAsB,EACtBE,WAA4B,EAAE;;QAcnBH,kBAMSe;IAlBpB,IAAIf,UAAUI,IAAI,CAACC,KAAK,CAACC,UAAU,CAAC,SAAS8B,aAAatC,MAAME,YAAY;QAC1E;IACF;IACA,MAAMe,QAAQnB,KAAK2C,SAAS,EAAE,CAACvC,UAAUI,IAAI,CAACC,KAAK,CAAC;IACpD,IAAI,CAACU,OAAO;QACV,MAAM,IAAI+B,2BAAqB,CAAC,CAAC,cAAc,EAAE9C,UAAUI,IAAI,CAACC,KAAK,CAAC,IAAI,EAAET,KAAKQ,IAAI,EAAE;IACzF;IAEA,MAAM8C,cAAc;WACf/C;QACH;YACEY,OAAOf,UAAUI,IAAI,CAACC,KAAK;YAC3BmC,KAAK,WAAExC,mBAAAA,UAAUwC,KAAK,cAAfxC,uCAAAA,iBAAiBK,KAAK,uCAAIL,UAAUI,IAAI,CAACC,KAAK;YACrD0C,YAAYnD,KAAKQ,IAAI;YACrB+C,QAAQC,IAAAA,mBAAU,EAACrC,MAAMnB,IAAI,KAAKwD,IAAAA,mBAAU,EAACd,IAAAA,qBAAY,EAACvB,MAAMnB,IAAI;QACtE;KACD;IAED,MAAMyD,eAActC,oBAAAA,MAAMN,UAAU,cAAhBM,wCAAAA,kBAAkBR,mBAAmB;IAEzD,IAAI+C;IACJ,IAAIC,WAA2B,CAAC;IAChC,IAAI,OAAOF,gBAAgB,YAAY;QACrC,MAAMG,WAAqB;YACzB9C,MAAMwC,YAAYO,GAAG,CAAC,CAACC,IAAM,GAAGA,EAAEX,UAAU,CAAC,CAAC,EAAEW,EAAE3C,KAAK,EAAE;YACzDZ,UAAU+C;QACZ;QAEA,MAAMS,OAAOC,IAAAA,6BAAuB,EAAC7C,OAAOf,WAAWH,SAASC;QAIhEwD,oBAAoBD,YAClBM,MACA9D,SACA,CAACgE,UAAUC,iBAAiBC;YAC1B,MAAM1B,aAAaC,IAAAA,qBAAY,EAACvB,MAAMnB,IAAI;YAC1C,MAAMoE,QAAQ,OAAOH,aAAa,aAAaA,SAASF,MAAM9D,WAAWgE;YACzE,MAAMI,4BAA4BC,MAAMC,OAAO,CAACL,mBAC5CxE,iBACEwE,iBACAzE,gBAAgBgD,YAAYvC,OAC5BiE,eAAezB,IAAAA,qBAAY,EAACxC,KAAKkB,MAAM,CAACC,OAAO,CAAC8C,iBAAiBK,aAEnEN;YACJ,MAAMO,aAAaC,wBACjB3E,QACAG,MACAmE,4BACInE,KAAKkB,MAAM,CAACC,OAAO,CAACgD,0BAA0BhD,OAAO,MACrDoB,YACJtC;YAGF,IAAI,OAAOiE,UAAU,YAAYO,OAAOC,IAAI,CAACR,OAAOrD,MAAM,GAAG,GAAG;gBAC9DS,IAAAA,0BAAc,EAACzB,QAAQ0E,YAAY;oBAAEI,SAAS,CAAC;oBAAG,GAAGT,KAAK;gBAAC;YAC7D;YACA,IACE,AAAC,CAAC,EAACC,sCAAAA,gDAAAA,0BAA2BvD,IAAI,KAAIuD,0BAA0BvD,IAAI,CAACC,MAAM,GAAG,KAC7E,CAAC,EAACsD,sCAAAA,gDAAAA,0BAA2BrD,KAAK,KAAIqD,0BAA0BrD,KAAK,CAACD,MAAM,GAAG,GAChF;0BAMEsD;oBADC5B,8CAAAA;gBAJHxB,4BACEwB,YACAvC,MACAE,oBACCqC,yBAAAA,WAAW5B,UAAU,cAArB4B,8CAAAA,+CAAAA,uBAAuB7B,qBAAqB,cAA5C6B,mEAAD,AAACA,6CAA+D3B,IAAI,uCAAI,EAAE,GAC1EuD,mCAAAA,0BAA0BrD,KAAK,cAA/BqD,8CAAAA,mCAAmC;oBAACA,0BAA0BvD,IAAI;iBAAE,EACpE,EAAE,EACF,CAACI,cAAc4D,eAAehE,MAAMR;oBAClCR,0BACEC,QACAmB,cACAjB,SACAC,MACAuE,YACAK,eACAhE,MACAR,UACAgD;gBAEJ;YAEJ;YACAxD,0BACEC,QACA0C,YACAxC,SACAC,MACAuE,YACArE,WACA,EAAE,EACFoE,WACAlB;YAEFK,WAAWc,WAAWd,QAAQ;YAC9B,OAAOoB,IAAAA,4BAAgB,EAAChF,QAAQ0E;QAClC,GACA,CAAC3D;YACC,MAAM2B,aAAaC,IAAAA,qBAAY,EAACvB,MAAMnB,IAAI;YAC1C,IAAIgF,OAAyB;YAC7BhD,uBACES,YACAvC,MACAE,WACAU,KAAK+C,GAAG,CAAC,CAACrD,OAAU,CAAA;oBAClBA;gBACF,CAAA,IACA,EAAE,EACF,CAACyE,GAAGH;gBACFE,OAAOF;YACT;YAEF,OAAOE;QACT,GACApB;IAEJ,OAAO;QACLF,oBAAoBD;IACtB;IAEA,IAAIA,eAAeyB,IAAAA,+BAAmB,EAAC/E,OAAOuD,mBAAmB,OAAO;;YAInEtD;QAHHoB,IAAAA,0BAAc,EAACzB,QAAQI,OAAOuD;QAE9BvD,MAAMwD,QAAQ,GAAGwB,cAAchF,MAAMwD,QAAQ,EAAE;YAC7C,WAACvD,oBAAAA,UAAUwC,KAAK,cAAfxC,wCAAAA,kBAAiBK,KAAK,yCAAIL,UAAUI,IAAI,CAACC,KAAK,CAAC,EAAE;gBAChDU,OAAOf,UAAUI,IAAI,CAACC,KAAK;gBAC3BT,MAAMA,KAAKQ,IAAI;gBACfmD;gBACAtD;YACF;QACF;IACF;AACF;AAEA,SAAS8E,cAAcC,QAAwB,EAAEC,QAAwB;IACvE,MAAMC,SAAyB;QAAE,GAAGF,QAAQ;IAAC;IAE7C,KAAK,MAAM,CAACG,KAAK9E,MAAM,IAAIkE,OAAOa,OAAO,CAACH,UAAW;QACnD,IAAIC,MAAM,CAACC,IAAI,EAAE;YACfD,MAAM,CAACC,IAAI,GAAG;gBACZ,GAAGD,MAAM,CAACC,IAAI;gBACd5B,UAAUwB,cAAcG,MAAM,CAACC,IAAI,CAAC5B,QAAQ,EAAElD,MAAMkD,QAAQ;YAC9D;QACF,OAAO;YACL2B,MAAM,CAACC,IAAI,GAAG9E;QAChB;IACF;IAEA,OAAO6E;AACT;AAaO,SAAS3F,cAAsC,EACpD8F,cAAc,EACd,GAAGC,SACqB;IACxB,MAAMvF,QAAQN,cAAc6F;IAE5BC,IAAAA,4BAAiB,EAACD,QAAQzF,OAAO,EAAEyF,QAAQxF,IAAI,EAAEC,MAAMwD,QAAQ;IAE/D,MAAMS,QAAQW,IAAAA,4BAAgB,EAACW,QAAQ3F,MAAM,EAAEI;IAE/C,OAAOsF,iBAAiBG,IAAAA,yBAAkB,EAACxB,SAASA;AACtD;AAEO,SAASvE,cAAsC,EACpDE,MAAM,EACNE,OAAO,EACPC,IAAI,EACJ2F,QAAQ,EACRC,MAAM,EACNhF,OAAO,EAAE,EACTE,QAAQ,EAAE,EACc;IACxB,MAAMyB,aAAaC,IAAAA,qBAAY,EAACxC,KAAKuC,UAAU;IAC/C,MAAMzC,OAAO6F,WAAW3F,KAAKkB,MAAM,CAAC2E,UAAU,EAAE,CAACF,SAAS,GAAGpD;IAC7D,MAAMuD,mBAAmBF,SACrB;QACEjB,SAAS,CAAC;QACV,GAAGiB,MAAM;IACX,IACAtB;IAEJ,IAAIrE;IAEJ,IAAIW,KAAKC,MAAM,GAAG,KAAKC,MAAMD,MAAM,GAAG,GAAG;YACJ0B;QAAnC,MAAM,EAAE7B,qBAAqB,EAAE,IAAI6B,yBAAAA,WAAW5B,UAAU,cAArB4B,oCAAAA,yBAAyB,CAAC;QAI7DT,uBACES,YACAvC,MACAA,KAAK+F,UAAU,CAAC,EAAE,UAClBrF,kCAAAA,4CAAAA,sBAAuBE,IAAI,uCAAI,EAAE,EACjC,EAAE,EACF,CAACoF,cAAcC,eAAeC,SAAS9F;YACrCW,4BACEiF,cACAhG,MACAiG,eACA,EAAE,EACFnF,MAAMD,MAAM,GAAG,IACXC,MAAM6C,GAAG,CAAC,CAACwC,IAAMA,EAAExC,GAAG,CAAC,CAACyC,IAAO,OAAOA,MAAM,WAAW;wBAAE9F,MAAM8F;oBAAE,IAAIA,MACrE;gBAACxF,KAAK+C,GAAG,CAAC,CAACyC,IAAO,OAAOA,MAAM,WAAW;wBAAE9F,MAAM8F;oBAAE,IAAIA;aAAI,EAChEF,SACA,CAAClF,cAAc4D,eAAeyB,QAAQjG;gBACpCH,QAAQuE,wBACN3E,QACAG,MACAgB,cACAsD,WACAwB;gBAGFlG,0BACEC,QACA8F,WAAW7F,OAAOkB,cAClBjB,SACAC,MACAC,OACA2E,eACAyB,QACAjG;YAEJ,GACAA;QAEJ;IAEJ,OAAO;;YAUUkG;QATfrG,QAAQuE,wBAAwB3E,QAAQG,MAAMF,MAAMwE,WAAWwB;QAE/D,kDAAkD;QAClD,MAAMQ,gBAAgBtG,KAAK+F,UAAU,CAAC,EAAE;QACxC,MAAMQ,YAAYvG,KAAKiD,UAAU,CAACR,SAAS,EAAE,CAAC6D,cAAchG,IAAI,CAACC,KAAK,CAAC;QACvE,MAAMiG,kBAAmCD,YACrC;YACE;gBACEtF,OAAOqF,cAAchG,IAAI,CAACC,KAAK;gBAC/BmC,KAAK,YAAE4D,uBAAAA,cAAc5D,KAAK,cAAnB4D,2CAAAA,qBAAqB/F,KAAK,yCAAI+F,cAAchG,IAAI,CAACC,KAAK;gBAC7D0C,YAAYjD,KAAKiD,UAAU,CAAC3C,IAAI;gBAChC+C,QAAQC,IAAAA,mBAAU,EAACiD,UAAUzG,IAAI,KAAKwD,IAAAA,mBAAU,EAACd,IAAAA,qBAAY,EAAC+D,UAAUzG,IAAI;YAC9E;SACD,GACD,EAAE;QAENF,0BACEC,QACAC,MACAC,SACAC,MACAC,OACAD,KAAK+F,UAAU,CAAC,EAAE,EAClB,EAAE,EACFzB,WACAkC;IAEJ;IAEA,IAAI,CAACvG,OAAO;QACVA,QAAQuE,wBAAwB3E,QAAQG,MAAMF,MAAMwE,WAAWwB;IACjE;IAEA,OAAO7F;AACT;AAEO,SAASP,uBACdG,MAAiC,EACjCE,OAAe,EACfC,IAAwB,EACxB2F,QAAiB;IAEjB,MAAM7F,OAAO6F,WAAW3F,KAAKkB,MAAM,CAAC2E,UAAU,EAAE,CAACF,SAAS,GAAG3F,KAAKiD,UAAU;IAE5E,MAAMhD,QAAQuE,wBAAwB3E,QAAQG,MAAMF;IAEpD,IAAI,CAAEsB,CAAAA,IAAAA,qBAAY,EAACtB,SAASuB,IAAAA,wBAAe,EAACvB,KAAI,GAAI;QAClD,MAAM,IAAIkD,2BAAqB,CAC7B;IAEJ;IAEAE,kBAAkBrD,QAAQC,MAAMC,SAASC,MAAMC,OAAOD,KAAK+F,UAAU,CAAC,EAAE,EAAE,EAAE;IAE5E,OAAO9F;AACT;AAEA,SAASuE,wBACP3E,MAAiC,EACjCG,IAAwB,EACxBF,IAAsB,EACtB2G,MAAuB,EACvBC,iBAAgC;QAGAC;IADhC,MAAMA,aAAapH,gBAAgBO,MAAME;IACzC,MAAM,EAAE4G,kBAAkB,EAAE,IAAID,yBAAAA,WAAWhG,UAAU,cAArBgG,oCAAAA,yBAAyB,CAAC;IAI1D,IAAI,CAACC,oBAAoB;QACvB,MAAM,IAAI5D,2BAAqB,CAAC,CAAC,SAAS,EAAE2D,WAAWrG,IAAI,CAAC,uBAAuB,CAAC;IACtF;IAEA,MAAML,QAAQ4G,IAAAA,uBAAW,EACvBD,4BACAH,mBAAAA,6BAAAA,OAAQjF,qBAAqB,uCAAI3B,OAAO2B,qBAAqB,EAC7DiF;IAGF,IAAIC,mBAAmB;QACrBpF,IAAAA,0BAAc,EAACzB,QAAQI,OAAOyG;IAChC;IAEA,OAAOzG;AACT;AAEO,SAASV,gBAAgBO,IAAsB,EAAEE,IAAwB;QAGvE2G;IAFP,IAAIA,aAAa7G;IAEjB,OAAO6G,yBAAAA,WAAWhG,UAAU,cAArBgG,6CAAAA,uBAAuBjG,qBAAqB,CAAE;QACnDiG,aAAa3G,KAAKkB,MAAM,CAACC,OAAO,CAC9B,AAACwF,WAAWhG,UAAU,CAACD,qBAAqB,CAAqBS,OAAO;IAE5E;IAEA,OAAOwF;AACT;AAEO,SAASnH,iBACdoB,IAAc,EACdd,IAAsB,EACtBmE,YAA+B;IAE/B,IAAI6C,cAAclG,KAAKC,MAAM,GAAG,IAAIf,OAAQmE,yBAAAA,0BAAAA,eAAgBnE;IAE5D,MAAMiH,aAA+C,EAAE;IAEvD,IAAI,CAAE3F,CAAAA,IAAAA,qBAAY,EAAC0F,gBAAgBzF,IAAAA,wBAAe,EAACyF,YAAW,GAAI;QAChE,MAAM,IAAI9D,2BAAqB,CAAC,CAAC,SAAS,EAAE8D,YAAY,qBAAqB,CAAC;IAChF;IAEA,KAAK,MAAME,aAAapG,KAAM;QAC5B,MAAMK,QAAwC6F,YAAYrE,SAAS,EAAE,CAACuE,UAAU;QAEhF,IAAI,CAAC/F,OAAO;YACV,MAAM,IAAI+B,2BAAqB,CAAC,CAAC,SAAS,EAAE8D,YAAY,iBAAiB,EAAEE,WAAW;QACxF;QAEAF,cAActE,IAAAA,qBAAY,EAACvB,MAAMnB,IAAI;QAErC,IAAI,CAAEsB,CAAAA,IAAAA,qBAAY,EAAC0F,gBAAgBzF,IAAAA,wBAAe,EAACyF,YAAW,GAAI;YAChE,MAAM,IAAI9D,2BAAqB,CAAC,CAAC,SAAS,EAAE8D,YAAY,kCAAkC,CAAC;QAC7F;QAEAC,WAAWE,IAAI,CAAC;YAAE3G,MAAM0G;YAAWlH,MAAMgH,YAAYxG,IAAI;QAAC;IAC5D;IAEA,OAAO;QACLa,SAAS;;2BACP8C,yBAAAA,mCAAAA,aAAc3D,IAAI,uCACjByG,WAAWlG,MAAM,GAAG,IAAIkG,UAAU,CAACA,WAAWlG,MAAM,GAAG,EAAE,CAACf,IAAI,GAAGA,KAAKQ,IAAI;;QAC7EM,MAAMmG;IACR;AACF;AAEA,SAASzE,aAAatC,IAAwB,EAAEE,SAAoB;IAClE,MAAMgH,OAAOC,IAAAA,2BAAkB,EAACC,6BAAoB,EAAElH,WAAWF,KAAKqH,cAAc;IACpF,IAAIH,CAAAA,iBAAAA,2BAAAA,KAAMI,EAAE,MAAK,MAAM;QACrB,OAAO;IACT;IAEA,MAAMvF,UAAUoF,IAAAA,2BAAkB,EAACI,gCAAuB,EAAErH,WAAWF,KAAKqH,cAAc;IAC1F,IAAItF,CAAAA,oBAAAA,8BAAAA,QAASuF,EAAE,MAAK,OAAO;QACzB,OAAO;IACT;IAEA,OAAO;AACT;AAEA,SAASxE,mBACPgC,IAA6C,EAC7C9E,IAAwB;IAExB,MAAMwH,iBAAiBxH,KAAKkB,MAAM,CAACuG,YAAY,CAAC;IAChD,IAAI,CAACD,gBAAgB;QACnB,OAAO;IACT;IAEA,MAAME,QAAQP,IAAAA,2BAAkB,EAACK,gBAAgB1C,MAAM9E,KAAKqH,cAAc;IAC1E,OAAO,CAAC,CAACK,SAASA,MAAMJ,EAAE,KAAK;AACjC"}
1
+ {"version":3,"sources":["../../src/utils/map-query.ts"],"names":["planFromInfo","queryFromInfo","queryFromPlan","config","select","options","plan","Plan","fromInfo","drizzleAdapter","initial","columns","undefined","isThenable","then","settled","query"],"mappings":";;;;;;;;;;;QA4CgBA;eAAAA;;QA3BAC;eAAAA;;QAyCAC;eAAAA;;;sBA1DW;iCACY;yBAEU;AAc1C,SAASD,cAAsC,EACpDE,MAAM,EACNC,MAAM,EACN,GAAGC,SACqB;IACxB,MAAMC,OAAOC,qBAAI,CAACC,QAAQ,CAACC,IAAAA,uBAAc,EAACN,SAAS;QACjD,GAAGE,OAAO;QACV,+EAA+E;QAC/EK,SAASN,SAAS;YAAEO,SAAS,CAAC;YAAG,GAAGP,MAAM;QAAC,IAAIQ;IACjD;IAEA,IAAI,CAACN,MAAM;QACT,wFAAwF;QACxF,OAAQF,mBAAAA,oBAAAA,SAAU,CAAC;IACrB;IAEA,OACES,IAAAA,gBAAU,EAACP,QAAQA,KAAKQ,IAAI,CAAC,CAACC,UAAY,AAACA,QAAwBC,KAAK,MAAMV,KAAKU,KAAK;AAE5F;AAQO,SAAShB,aAAa,EAC3BG,MAAM,EACN,GAAGE,SACgD;IACnD,OAAOE,qBAAI,CAACC,QAAQ,CAACC,IAAAA,uBAAc,EAACN,SAASE;AAC/C;AASO,SAASH,cACdI,IAA6B,EAC7BF,MAAU;IAEV,IAAI,CAACE,MAAM;QACT,+EAA+E;QAC/E,OAAQF,mBAAAA,oBAAAA,SAAU,CAAC;IACrB;IAEA,+EAA+E;IAC/E,OAAOE,KAAKU,KAAK,CAACZ,SAAS;QAAEO,SAAS,CAAC;QAAG,GAAGP,MAAM;IAAC,IAAIQ;AAC1D"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "pathInfoFor", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return pathInfoFor;
9
+ }
10
+ });
11
+ const _graphql = require("graphql");
12
+ function pathInfoFor(position) {
13
+ if (!position) {
14
+ return undefined;
15
+ }
16
+ const path = [];
17
+ const segments = [];
18
+ for(let at = position; at; at = at.parent){
19
+ var _ref;
20
+ var _at_node_alias;
21
+ const field = at.node.name.value;
22
+ path.push(`${at.type.name}.${field}`);
23
+ segments.push({
24
+ field,
25
+ alias: (_ref = (_at_node_alias = at.node.alias) === null || _at_node_alias === void 0 ? void 0 : _at_node_alias.value) !== null && _ref !== void 0 ? _ref : field,
26
+ parentType: at.type.name,
27
+ isList: isListField(at.field.type)
28
+ });
29
+ }
30
+ return {
31
+ path: path.reverse(),
32
+ segments: segments.reverse()
33
+ };
34
+ }
35
+ /** A list field, whether or not the list itself is non-null (`[Post!]!`). */ function isListField(type) {
36
+ return (0, _graphql.isListType)(type) || (0, _graphql.isNonNullType)(type) && (0, _graphql.isListType)(type.ofType);
37
+ }
38
+
39
+ //# sourceMappingURL=path-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/path-info.ts"],"names":["pathInfoFor","position","undefined","path","segments","at","parent","field","node","name","value","push","type","alias","parentType","isList","isListField","reverse","isListType","isNonNullType","ofType"],"mappings":";;;;+BAagBA;;;eAAAA;;;yBAZkD;AAY3D,SAASA,YAAYC,QAA8B;IACxD,IAAI,CAACA,UAAU;QACb,OAAOC;IACT;IAEA,MAAMC,OAAiB,EAAE;IACzB,MAAMC,WAA4B,EAAE;IAEpC,IAAK,IAAIC,KAA2BJ,UAAUI,IAAIA,KAAKA,GAAGC,MAAM,CAAE;;YAMvDD;QALT,MAAME,QAAQF,GAAGG,IAAI,CAACC,IAAI,CAACC,KAAK;QAEhCP,KAAKQ,IAAI,CAAC,GAAGN,GAAGO,IAAI,CAACH,IAAI,CAAC,CAAC,EAAEF,OAAO;QACpCH,SAASO,IAAI,CAAC;YACZJ;YACAM,KAAK,WAAER,iBAAAA,GAAGG,IAAI,CAACK,KAAK,cAAbR,qCAAAA,eAAeK,KAAK,uCAAIH;YAC/BO,YAAYT,GAAGO,IAAI,CAACH,IAAI;YACxBM,QAAQC,YAAYX,GAAGE,KAAK,CAACK,IAAI;QACnC;IACF;IAEA,OAAO;QAAET,MAAMA,KAAKc,OAAO;QAAIb,UAAUA,SAASa,OAAO;IAAG;AAC9D;AAEA,2EAA2E,GAC3E,SAASD,YAAYJ,IAAuB;IAC1C,OAAOM,IAAAA,mBAAU,EAACN,SAAUO,IAAAA,sBAAa,EAACP,SAASM,IAAAA,mBAAU,EAACN,KAAKQ,MAAM;AAC3E"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "buildRelationFilter", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return buildRelationFilter;
9
+ }
10
+ });
11
+ const _drizzleorm = require("drizzle-orm");
12
+ const _sqlitecore = require("drizzle-orm/sqlite-core");
13
+ // `select 1`, for an `exists` that only has to find a row.
14
+ const one = {
15
+ one: (0, _drizzleorm.sql)`1`
16
+ };
17
+ function buildRelationFilter(client, relation, parentTable, targetKey) {
18
+ const targetTable = relation.targetTable;
19
+ const throughTable = relation.throughTable;
20
+ // `filter` correlates the parent to the target, or to the junction table when there is one, in
21
+ // which case `joinCondition` is what carries the junction the rest of the way to the target.
22
+ const { filter, joinCondition } = (0, _drizzleorm.relationToSQL)(relation, parentTable, targetTable, throughTable);
23
+ if (!throughTable || !joinCondition) {
24
+ // Without a junction table every related row is a distinct target row, so the two counts are
25
+ // the same query.
26
+ const countRows = (where)=>countOf(client.select(countStar()).from(targetTable).where((0, _drizzleorm.and)(where, filter)));
27
+ return {
28
+ filter,
29
+ countRows,
30
+ countDistinctRows: (_key, where)=>countRows(where)
31
+ };
32
+ }
33
+ const relatedRows = (aggregate, where)=>countOf(client.select(aggregate).from(targetTable).innerJoin(throughTable, joinCondition).where((0, _drizzleorm.and)(where, filter)));
34
+ return {
35
+ // SQLite needs the identity lookup to avoid target scans. PostgreSQL can plan EXISTS as
36
+ // a semijoin; projecting identities adds a target join its planner may not eliminate.
37
+ filter: (targetKey === null || targetKey === void 0 ? void 0 : targetKey.length) && (0, _drizzleorm.is)(targetTable, _sqlitecore.SQLiteTable) ? targetIdentityInRelation(client, relation, parentTable, targetTable, throughTable, targetKey) : (0, _drizzleorm.exists)(client.select(one).from(throughTable).where((0, _drizzleorm.and)(filter, joinCondition))),
38
+ countRows: (where)=>relatedRows(countStar(), where),
39
+ countDistinctRows: (key, where)=>relatedRows({
40
+ count: (0, _drizzleorm.countDistinct)(key)
41
+ }, where)
42
+ };
43
+ }
44
+ /**
45
+ * Project a non-null unique target key through the original relation join, then compare that
46
+ * key with itself. Comparing the target key directly with a junction column would change
47
+ * SQLite's collation precedence. Keeping the join also handles composite relation keys and
48
+ * excludes null junction keys without special truth-table guards.
49
+ *
50
+ * `key` must be a database-enforced unique constraint whose columns are all NOT NULL. That
51
+ * makes membership identify exactly one target row and keeps negation two-valued. SQLite can
52
+ * allow nulls even in primary keys, so callers must check notNull, not just primary.
53
+ *
54
+ * Build object restrictions and RAW callbacks against the inner target alias. Static RAW SQL
55
+ * is passed through by Drizzle: references to the outer target can still force a target scan.
56
+ * A RAW callback must use its supplied table to benefit from the identity lookup.
57
+ */ function targetIdentityInRelation(client, relation, parentTable, targetTable, throughTable, key) {
58
+ const names = new Set([
59
+ parentTable,
60
+ targetTable,
61
+ throughTable
62
+ ].map(_drizzleorm.getTableName));
63
+ let alias = '_pothos_related';
64
+ while(names.has(alias)){
65
+ alias += '_';
66
+ }
67
+ const matchedTable = (0, _drizzleorm.aliasedTable)(targetTable, alias);
68
+ const { filter, joinCondition } = (0, _drizzleorm.relationToSQL)(relation, parentTable, matchedTable, throughTable);
69
+ const fields = Object.fromEntries(key.map((column, i)=>[
70
+ String(i),
71
+ (0, _drizzleorm.sql)`${(0, _drizzleorm.aliasedTableColumn)(column, alias)}`
72
+ ]));
73
+ const columns = key.map((column)=>(0, _drizzleorm.sql)`${column}`);
74
+ const identity = columns.length === 1 ? columns[0] : (0, _drizzleorm.sql)`(${_drizzleorm.sql.join(columns, (0, _drizzleorm.sql)`, `)})`;
75
+ return (0, _drizzleorm.inArray)(identity, client.select(fields).from(throughTable).innerJoin(matchedTable, joinCondition).where(filter));
76
+ }
77
+ // A fresh `count(*)` each time: `mapWith` mutates the `SQL` it is called on, so a shared one
78
+ // would be re-decoded by every query that selected it.
79
+ function countStar() {
80
+ return {
81
+ count: (0, _drizzleorm.count)()
82
+ };
83
+ }
84
+ // The count as a value the surrounding query can select. `count()` carries drizzle's `Number`
85
+ // decoder, but a `select` built around it decodes as the row it returns, so the mapping is
86
+ // restored here and the count comes back as a number on every dialect.
87
+ function countOf(rows) {
88
+ return (0, _drizzleorm.sql)`${rows.getSQL()}`.mapWith(Number);
89
+ }
90
+
91
+ //# sourceMappingURL=relation-filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/relation-filter.ts"],"names":["buildRelationFilter","one","sql","client","relation","parentTable","targetKey","targetTable","throughTable","filter","joinCondition","relationToSQL","countRows","where","countOf","select","countStar","from","and","countDistinctRows","_key","relatedRows","aggregate","innerJoin","length","is","SQLiteTable","targetIdentityInRelation","exists","key","count","countDistinct","names","Set","map","getTableName","alias","has","matchedTable","aliasedTable","fields","Object","fromEntries","column","i","String","aliasedTableColumn","columns","identity","join","inArray","rows","getSQL","mapWith","Number"],"mappings":"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"}