@pothos/plugin-drizzle 0.0.1

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 (179) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/LICENSE +6 -0
  3. package/README.md +437 -0
  4. package/TODO.md +21 -0
  5. package/drizzle/meta/_journal.json +1 -0
  6. package/drizzle.config.ts +10 -0
  7. package/dts/drizzle-field-builder.d.ts +124 -0
  8. package/dts/drizzle-field-builder.d.ts.map +1 -0
  9. package/dts/field-builder.d.ts +2 -0
  10. package/dts/field-builder.d.ts.map +1 -0
  11. package/dts/global-types.d.ts +92 -0
  12. package/dts/global-types.d.ts.map +1 -0
  13. package/dts/index.d.ts +13 -0
  14. package/dts/index.d.ts.map +1 -0
  15. package/dts/interface-ref.d.ts +9 -0
  16. package/dts/interface-ref.d.ts.map +1 -0
  17. package/dts/model-loader.d.ts +44 -0
  18. package/dts/model-loader.d.ts.map +1 -0
  19. package/dts/node-ref.d.ts +5 -0
  20. package/dts/node-ref.d.ts.map +1 -0
  21. package/dts/object-ref.d.ts +14 -0
  22. package/dts/object-ref.d.ts.map +1 -0
  23. package/dts/schema-builder.d.ts +2 -0
  24. package/dts/schema-builder.d.ts.map +1 -0
  25. package/dts/types.d.ts +147 -0
  26. package/dts/types.d.ts.map +1 -0
  27. package/dts/utils/config.d.ts +7 -0
  28. package/dts/utils/config.d.ts.map +1 -0
  29. package/dts/utils/cursors.d.ts +58 -0
  30. package/dts/utils/cursors.d.ts.map +1 -0
  31. package/dts/utils/deep-equal.d.ts +2 -0
  32. package/dts/utils/deep-equal.d.ts.map +1 -0
  33. package/dts/utils/drizzle-graphql.d.ts +18 -0
  34. package/dts/utils/drizzle-graphql.d.ts.map +1 -0
  35. package/dts/utils/loader-map.d.ts +11 -0
  36. package/dts/utils/loader-map.d.ts.map +1 -0
  37. package/dts/utils/map-query.d.ts +30 -0
  38. package/dts/utils/map-query.d.ts.map +1 -0
  39. package/dts/utils/refs.d.ts +5 -0
  40. package/dts/utils/refs.d.ts.map +1 -0
  41. package/dts/utils/selections.d.ts +22 -0
  42. package/dts/utils/selections.d.ts.map +1 -0
  43. package/dts/utils/usage.d.ts +5 -0
  44. package/dts/utils/usage.d.ts.map +1 -0
  45. package/esm/drizzle-field-builder.d.ts +216 -0
  46. package/esm/drizzle-field-builder.d.ts.map +1 -0
  47. package/esm/field-builder.d.ts +2 -0
  48. package/esm/field-builder.d.ts.map +1 -0
  49. package/esm/global-types.d.ts +124 -0
  50. package/esm/global-types.d.ts.map +1 -0
  51. package/esm/index.d.ts +13 -0
  52. package/esm/index.d.ts.map +1 -0
  53. package/esm/interface-ref.d.ts +9 -0
  54. package/esm/interface-ref.d.ts.map +1 -0
  55. package/esm/model-loader.d.ts +45 -0
  56. package/esm/model-loader.d.ts.map +1 -0
  57. package/esm/node-ref.d.ts +5 -0
  58. package/esm/node-ref.d.ts.map +1 -0
  59. package/esm/object-ref.d.ts +14 -0
  60. package/esm/object-ref.d.ts.map +1 -0
  61. package/esm/package.json +3 -0
  62. package/esm/schema-builder.d.ts +2 -0
  63. package/esm/schema-builder.d.ts.map +1 -0
  64. package/esm/src/drizzle-field-builder.js +215 -0
  65. package/esm/src/drizzle-field-builder.js.map +1 -0
  66. package/esm/src/field-builder.js +77 -0
  67. package/esm/src/field-builder.js.map +1 -0
  68. package/esm/src/global-types.js +2 -0
  69. package/esm/src/global-types.js.map +1 -0
  70. package/esm/src/index.js +107 -0
  71. package/esm/src/index.js.map +1 -0
  72. package/esm/src/interface-ref.js +26 -0
  73. package/esm/src/interface-ref.js.map +1 -0
  74. package/esm/src/model-loader.js +168 -0
  75. package/esm/src/model-loader.js.map +1 -0
  76. package/esm/src/node-ref.js +4 -0
  77. package/esm/src/node-ref.js.map +1 -0
  78. package/esm/src/object-ref.js +38 -0
  79. package/esm/src/object-ref.js.map +1 -0
  80. package/esm/src/schema-builder.js +190 -0
  81. package/esm/src/schema-builder.js.map +1 -0
  82. package/esm/src/types.js +2 -0
  83. package/esm/src/types.js.map +1 -0
  84. package/esm/src/utils/config.js +15 -0
  85. package/esm/src/utils/config.js.map +1 -0
  86. package/esm/src/utils/cursors.js +316 -0
  87. package/esm/src/utils/cursors.js.map +1 -0
  88. package/esm/src/utils/deep-equal.js +44 -0
  89. package/esm/src/utils/deep-equal.js.map +1 -0
  90. package/esm/src/utils/drizzle-graphql.js +176 -0
  91. package/esm/src/utils/drizzle-graphql.js.map +1 -0
  92. package/esm/src/utils/loader-map.js +35 -0
  93. package/esm/src/utils/loader-map.js.map +1 -0
  94. package/esm/src/utils/map-query.js +284 -0
  95. package/esm/src/utils/map-query.js.map +1 -0
  96. package/esm/src/utils/refs.js +14 -0
  97. package/esm/src/utils/refs.js.map +1 -0
  98. package/esm/src/utils/selections.js +136 -0
  99. package/esm/src/utils/selections.js.map +1 -0
  100. package/esm/src/utils/usage.js +59 -0
  101. package/esm/src/utils/usage.js.map +1 -0
  102. package/esm/types.d.ts +161 -0
  103. package/esm/types.d.ts.map +1 -0
  104. package/esm/utils/config.d.ts +7 -0
  105. package/esm/utils/config.d.ts.map +1 -0
  106. package/esm/utils/cursors.d.ts +58 -0
  107. package/esm/utils/cursors.d.ts.map +1 -0
  108. package/esm/utils/deep-equal.d.ts +2 -0
  109. package/esm/utils/deep-equal.d.ts.map +1 -0
  110. package/esm/utils/drizzle-graphql.d.ts +18 -0
  111. package/esm/utils/drizzle-graphql.d.ts.map +1 -0
  112. package/esm/utils/loader-map.d.ts +11 -0
  113. package/esm/utils/loader-map.d.ts.map +1 -0
  114. package/esm/utils/map-query.d.ts +30 -0
  115. package/esm/utils/map-query.d.ts.map +1 -0
  116. package/esm/utils/refs.d.ts +5 -0
  117. package/esm/utils/refs.d.ts.map +1 -0
  118. package/esm/utils/selections.d.ts +22 -0
  119. package/esm/utils/selections.d.ts.map +1 -0
  120. package/esm/utils/usage.d.ts +5 -0
  121. package/esm/utils/usage.d.ts.map +1 -0
  122. package/lib/src/drizzle-field-builder.js +225 -0
  123. package/lib/src/drizzle-field-builder.js.map +1 -0
  124. package/lib/src/field-builder.js +82 -0
  125. package/lib/src/field-builder.js.map +1 -0
  126. package/lib/src/global-types.js +6 -0
  127. package/lib/src/global-types.js.map +1 -0
  128. package/lib/src/index.js +180 -0
  129. package/lib/src/index.js.map +1 -0
  130. package/lib/src/interface-ref.js +36 -0
  131. package/lib/src/interface-ref.js.map +1 -0
  132. package/lib/src/model-loader.js +176 -0
  133. package/lib/src/model-loader.js.map +1 -0
  134. package/lib/src/node-ref.js +15 -0
  135. package/lib/src/node-ref.js.map +1 -0
  136. package/lib/src/object-ref.js +56 -0
  137. package/lib/src/object-ref.js.map +1 -0
  138. package/lib/src/schema-builder.js +236 -0
  139. package/lib/src/schema-builder.js.map +1 -0
  140. package/lib/src/types.js +13 -0
  141. package/lib/src/types.js.map +1 -0
  142. package/lib/src/utils/config.js +26 -0
  143. package/lib/src/utils/config.js.map +1 -0
  144. package/lib/src/utils/cursors.js +362 -0
  145. package/lib/src/utils/cursors.js.map +1 -0
  146. package/lib/src/utils/deep-equal.js +55 -0
  147. package/lib/src/utils/deep-equal.js.map +1 -0
  148. package/lib/src/utils/drizzle-graphql.js +192 -0
  149. package/lib/src/utils/drizzle-graphql.js.map +1 -0
  150. package/lib/src/utils/loader-map.js +57 -0
  151. package/lib/src/utils/loader-map.js.map +1 -0
  152. package/lib/src/utils/map-query.js +308 -0
  153. package/lib/src/utils/map-query.js.map +1 -0
  154. package/lib/src/utils/refs.js +33 -0
  155. package/lib/src/utils/refs.js.map +1 -0
  156. package/lib/src/utils/selections.js +163 -0
  157. package/lib/src/utils/selections.js.map +1 -0
  158. package/lib/src/utils/usage.js +84 -0
  159. package/lib/src/utils/usage.js.map +1 -0
  160. package/package.json +66 -0
  161. package/src/drizzle-field-builder.ts +500 -0
  162. package/src/field-builder.ts +168 -0
  163. package/src/global-types.ts +481 -0
  164. package/src/index.ts +175 -0
  165. package/src/interface-ref.ts +24 -0
  166. package/src/model-loader.ts +235 -0
  167. package/src/node-ref.ts +8 -0
  168. package/src/object-ref.ts +51 -0
  169. package/src/schema-builder.ts +299 -0
  170. package/src/types.ts +640 -0
  171. package/src/utils/config.ts +28 -0
  172. package/src/utils/cursors.ts +446 -0
  173. package/src/utils/deep-equal.ts +58 -0
  174. package/src/utils/drizzle-graphql.ts +235 -0
  175. package/src/utils/loader-map.ts +51 -0
  176. package/src/utils/map-query.ts +582 -0
  177. package/src/utils/refs.ts +25 -0
  178. package/src/utils/selections.ts +209 -0
  179. package/src/utils/usage.ts +64 -0
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ cacheKey: function() {
13
+ return cacheKey;
14
+ },
15
+ getLoaderMapping: function() {
16
+ return getLoaderMapping;
17
+ },
18
+ setLoaderMappings: function() {
19
+ return setLoaderMappings;
20
+ }
21
+ });
22
+ const _core = require("@pothos/core");
23
+ const cache = (0, _core.createContextCache)((ctx)=>new Map());
24
+ function cacheKey(type, path, subPath = []) {
25
+ let key = '';
26
+ let current = path;
27
+ while(current){
28
+ if (typeof current.key === 'string') {
29
+ key = key ? `${current.key}.${key}` : current.key;
30
+ }
31
+ current = current.prev;
32
+ }
33
+ for (const entry of subPath){
34
+ key = `${key}.${entry}`;
35
+ }
36
+ return `${type}@${key}`;
37
+ }
38
+ function setLoaderMappings(ctx, info, value) {
39
+ Object.keys(value).forEach((field)=>{
40
+ const map = cache(ctx);
41
+ const mapping = value[field];
42
+ const subPath = [
43
+ ...mapping.indirectPath,
44
+ field
45
+ ];
46
+ const key = cacheKey(mapping.type, info.path, subPath);
47
+ map.set(key, mapping.mappings);
48
+ });
49
+ }
50
+ function getLoaderMapping(ctx, path, type) {
51
+ const map = cache(ctx);
52
+ const key = cacheKey(type, path, []);
53
+ var _map_get;
54
+ return (_map_get = map.get(key)) !== null && _map_get !== void 0 ? _map_get : null;
55
+ }
56
+
57
+ //# sourceMappingURL=loader-map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/loader-map.ts"],"names":["cacheKey","getLoaderMapping","setLoaderMappings","cache","createContextCache","ctx","Map","type","path","subPath","key","current","prev","entry","info","value","Object","keys","forEach","field","map","mapping","indirectPath","set","mappings","get"],"mappings":";;;;;;;;;;;IAegBA,QAAQ;eAARA;;IA8BAC,gBAAgB;eAAhBA;;IAZAC,iBAAiB;eAAjBA;;;sBAhCmB;AAYnC,MAAMC,QAAQC,IAAAA,wBAAkB,EAAC,CAACC,MAAQ,IAAIC;AAEvC,SAASN,SAASO,IAAY,EAAEC,IAAgC,EAAEC,UAAoB,EAAE;IAC7F,IAAIC,MAAM;IACV,IAAIC,UAAkDH;IAEtD,MAAOG,QAAS;QACd,IAAI,OAAOA,QAAQD,GAAG,KAAK,UAAU;YACnCA,MAAMA,MAAM,CAAC,EAAEC,QAAQD,GAAG,CAAC,CAAC,EAAEA,IAAI,CAAC,GAAGC,QAAQD,GAAG;QACnD;QACAC,UAAUA,QAAQC,IAAI;IACxB;IAEA,KAAK,MAAMC,SAASJ,QAAS;QAC3BC,MAAM,CAAC,EAAEA,IAAI,CAAC,EAAEG,MAAM,CAAC;IACzB;IAEA,OAAO,CAAC,EAAEN,KAAK,CAAC,EAAEG,IAAI,CAAC;AACzB;AAEO,SAASR,kBAAkBG,GAAW,EAAES,IAAwB,EAAEC,KAAqB;IAC5FC,OAAOC,IAAI,CAACF,OAAOG,OAAO,CAAC,CAACC;QAC1B,MAAMC,MAAMjB,MAAME;QAElB,MAAMgB,UAAUN,KAAK,CAACI,MAAM;QAC5B,MAAMV,UAAU;eAAIY,QAAQC,YAAY;YAAEH;SAAM;QAChD,MAAMT,MAAMV,SAASqB,QAAQd,IAAI,EAAEO,KAAKN,IAAI,EAAEC;QAE9CW,IAAIG,GAAG,CAACb,KAAKW,QAAQG,QAAQ;IAC/B;AACF;AAEO,SAASvB,iBAAiBI,GAAW,EAAEG,IAAgC,EAAED,IAAY;IAC1F,MAAMa,MAAMjB,MAAME;IAClB,MAAMK,MAAMV,SAASO,MAAMC,MAAM,EAAE;QAE5BY;IAAP,OAAOA,CAAAA,WAAAA,IAAIK,GAAG,CAACf,kBAARU,sBAAAA,WAAgB;AACzB"}
@@ -0,0 +1,308 @@
1
+ /* eslint-disable no-continue */ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ getIndirectType: function() {
13
+ return getIndirectType;
14
+ },
15
+ normalizeInclude: function() {
16
+ return normalizeInclude;
17
+ },
18
+ queryFromInfo: function() {
19
+ return queryFromInfo;
20
+ },
21
+ selectionStateFromInfo: function() {
22
+ return selectionStateFromInfo;
23
+ },
24
+ stateFromInfo: function() {
25
+ return stateFromInfo;
26
+ }
27
+ });
28
+ const _graphql = require("graphql");
29
+ const _core = require("@pothos/core");
30
+ const _loadermap = require("./loader-map");
31
+ const _selections = require("./selections");
32
+ const _usage = require("./usage");
33
+ function addTypeSelectionsForField(config, type, context, info, state, selection, indirectPath) {
34
+ if (selection.name.value.startsWith('__')) {
35
+ return;
36
+ }
37
+ var _type_extensions;
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);
45
+ });
46
+ } else if (pothosIndirectInclude) {
47
+ addTypeSelectionsForField(config, info.schema.getType(pothosIndirectInclude.getType()), context, info, state, selection, indirectPath);
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, {
55
+ ...pothosDrizzleSelect
56
+ });
57
+ }
58
+ if (selection.selectionSet) {
59
+ addNestedSelections(config, type, context, info, state, selection.selectionSet, indirectPath);
60
+ }
61
+ }
62
+ function resolveIndirectIncludePaths(type, info, selection, pathPrefix, includePaths, path, resolve) {
63
+ for (const includePath of includePaths){
64
+ if (pathPrefix.length > 0) {
65
+ resolveIndirectInclude(type, info, selection, [
66
+ ...pathPrefix,
67
+ ...includePath
68
+ ], path, resolve);
69
+ } else {
70
+ resolveIndirectInclude(type, info, selection, includePath, path, resolve);
71
+ }
72
+ }
73
+ }
74
+ function resolveIndirectInclude(type, info, selection, includePath, path, resolve) {
75
+ if (includePath.length === 0) {
76
+ resolve(type, selection, path);
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 _sel_alias;
88
+ const returnType = (0, _graphql.getNamedType)(type.getFields()[sel.name.value].type);
89
+ var _sel_alias_value;
90
+ resolveIndirectInclude(returnType, info, sel, rest, [
91
+ ...path,
92
+ (_sel_alias_value = (_sel_alias = sel.alias) === null || _sel_alias === void 0 ? void 0 : _sel_alias.value) !== null && _sel_alias_value !== void 0 ? _sel_alias_value : sel.name.value
93
+ ], resolve);
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);
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);
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) {
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);
117
+ continue;
118
+ case _graphql.Kind.FRAGMENT_SPREAD:
119
+ var _parentType_extensions;
120
+ parentType = info.schema.getType(info.fragments[selection.name.value].typeCondition.name.value);
121
+ 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) {
122
+ continue;
123
+ }
124
+ addNestedSelections(config, parentType, context, info, state, info.fragments[selection.name.value].selectionSet, indirectPath);
125
+ continue;
126
+ case _graphql.Kind.INLINE_FRAGMENT:
127
+ var _parentType_extensions1;
128
+ parentType = selection.typeCondition ? info.schema.getType(selection.typeCondition.name.value) : type;
129
+ 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) {
130
+ continue;
131
+ }
132
+ addNestedSelections(config, parentType, context, info, state, selection.selectionSet, indirectPath);
133
+ continue;
134
+ default:
135
+ throw new _core.PothosValidationError(`Unsupported selection kind ${selection.kind}`);
136
+ }
137
+ }
138
+ }
139
+ function addFieldSelection(config, type, context, info, state, selection, indirectPath) {
140
+ var _field_extensions;
141
+ if (selection.name.value.startsWith('__') || fieldSkipped(info, selection)) {
142
+ return;
143
+ }
144
+ const field = type.getFields()[selection.name.value];
145
+ if (!field) {
146
+ throw new _core.PothosValidationError(`Unknown field ${selection.name.value} on ${type.name}`);
147
+ }
148
+ const fieldSelect = (_field_extensions = field.extensions) === null || _field_extensions === void 0 ? void 0 : _field_extensions.pothosDrizzleSelect;
149
+ let fieldSelectionMap;
150
+ let mappings = {};
151
+ if (typeof fieldSelect === 'function') {
152
+ const args = (0, _graphql.getArgumentValues)(field, selection, info.variableValues);
153
+ fieldSelectionMap = fieldSelect(args, context, (rawQuery, indirectInclude, expectedType)=>{
154
+ const returnType = (0, _graphql.getNamedType)(field.type);
155
+ const query = typeof rawQuery === 'function' ? rawQuery(args, context) : rawQuery;
156
+ const normalizedIndirectInclude = Array.isArray(indirectInclude) ? normalizeInclude(indirectInclude, getIndirectType(returnType, info), expectedType ? (0, _graphql.getNamedType)(info.schema.getType(expectedType)) : undefined) : indirectInclude;
157
+ const fieldState = createStateForSelection(config, getIndirectType(normalizedIndirectInclude ? info.schema.getType(normalizedIndirectInclude.getType()) : returnType, info), state);
158
+ if (typeof query === 'object' && Object.keys(query).length > 0) {
159
+ (0, _selections.mergeSelection)(config, fieldState, {
160
+ columns: {},
161
+ ...query
162
+ });
163
+ }
164
+ 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) {
165
+ var _returnType_extensions_pothosIndirectInclude, _returnType_extensions;
166
+ var _returnType_extensions_pothosIndirectInclude_path, _normalizedIndirectInclude_paths;
167
+ resolveIndirectIncludePaths(returnType, info, selection, (_returnType_extensions_pothosIndirectInclude_path = (_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 && _returnType_extensions_pothosIndirectInclude_path !== void 0 ? _returnType_extensions_pothosIndirectInclude_path : [], (_normalizedIndirectInclude_paths = normalizedIndirectInclude.paths) !== null && _normalizedIndirectInclude_paths !== void 0 ? _normalizedIndirectInclude_paths : [
168
+ normalizedIndirectInclude.path
169
+ ], [], (resolvedType, resolvedField, path)=>{
170
+ addTypeSelectionsForField(config, resolvedType, context, info, fieldState, resolvedField, path);
171
+ });
172
+ }
173
+ addTypeSelectionsForField(config, returnType, context, info, fieldState, selection, []);
174
+ // eslint-disable-next-line prefer-destructuring
175
+ mappings = fieldState.mappings;
176
+ return (0, _selections.selectionToQuery)(fieldState);
177
+ }, (path)=>{
178
+ const returnType = (0, _graphql.getNamedType)(field.type);
179
+ let node = null;
180
+ resolveIndirectInclude(returnType, info, selection, path.map((name)=>({
181
+ name
182
+ })), [], (_, resolvedField)=>{
183
+ node = resolvedField;
184
+ });
185
+ return node;
186
+ });
187
+ } else {
188
+ fieldSelectionMap = fieldSelect;
189
+ }
190
+ if (fieldSelect && (0, _selections.selectionCompatible)(state, fieldSelectionMap, true)) {
191
+ var _selection_alias;
192
+ (0, _selections.mergeSelection)(config, state, fieldSelectionMap);
193
+ var _selection_alias_value;
194
+ // eslint-disable-next-line no-param-reassign
195
+ state.mappings[(_selection_alias_value = (_selection_alias = selection.alias) === null || _selection_alias === void 0 ? void 0 : _selection_alias.value) !== null && _selection_alias_value !== void 0 ? _selection_alias_value : selection.name.value] = {
196
+ field: selection.name.value,
197
+ type: type.name,
198
+ mappings,
199
+ indirectPath
200
+ };
201
+ }
202
+ }
203
+ function queryFromInfo({ withUsageCheck, ...options }) {
204
+ const state = stateFromInfo(options);
205
+ (0, _loadermap.setLoaderMappings)(options.context, options.info, state.mappings);
206
+ const query = (0, _selections.selectionToQuery)(state);
207
+ return withUsageCheck ? (0, _usage.wrapWithUsageCheck)(query) : query;
208
+ }
209
+ function stateFromInfo({ config, context, info, typeName, select, path = [], paths = [] }) {
210
+ const returnType = (0, _graphql.getNamedType)(info.returnType);
211
+ const type = typeName ? info.schema.getTypeMap()[typeName] : returnType;
212
+ let state;
213
+ if (path.length > 0 || paths.length > 0) {
214
+ var _returnType_extensions;
215
+ const { pothosIndirectInclude } = (_returnType_extensions = returnType.extensions) !== null && _returnType_extensions !== void 0 ? _returnType_extensions : {};
216
+ var _pothosIndirectInclude_path;
217
+ resolveIndirectInclude(returnType, info, info.fieldNodes[0], (_pothosIndirectInclude_path = pothosIndirectInclude === null || pothosIndirectInclude === void 0 ? void 0 : pothosIndirectInclude.path) !== null && _pothosIndirectInclude_path !== void 0 ? _pothosIndirectInclude_path : [], [], (indirectType, indirectField, subPath)=>{
218
+ resolveIndirectIncludePaths(indirectType, info, indirectField, [], paths.length > 0 ? paths.map((p)=>p.map((n)=>typeof n === 'string' ? {
219
+ name: n
220
+ } : n)) : [
221
+ path.map((n)=>typeof n === 'string' ? {
222
+ name: n
223
+ } : n)
224
+ ], subPath, (resolvedType, resolvedField, nested)=>{
225
+ state = createStateForSelection(config, resolvedType, undefined, select);
226
+ addTypeSelectionsForField(config, typeName ? type : resolvedType, context, info, state, resolvedField, nested);
227
+ });
228
+ });
229
+ } else {
230
+ state = createStateForSelection(config, type, undefined, select);
231
+ addTypeSelectionsForField(config, type, context, info, state, info.fieldNodes[0], []);
232
+ }
233
+ if (!state) {
234
+ state = createStateForSelection(config, type, undefined, select);
235
+ }
236
+ return state;
237
+ }
238
+ function selectionStateFromInfo(config, context, info, typeName) {
239
+ const type = typeName ? info.schema.getTypeMap()[typeName] : info.parentType;
240
+ const state = createStateForSelection(config, type);
241
+ if (!((0, _graphql.isObjectType)(type) || (0, _graphql.isInterfaceType)(type))) {
242
+ throw new _core.PothosValidationError('Drizzle plugin can only resolve selections for object and interface types');
243
+ }
244
+ addFieldSelection(config, type, context, info, state, info.fieldNodes[0], []);
245
+ return state;
246
+ }
247
+ function createStateForSelection(config, type, parent, initialSelections) {
248
+ var _type_extensions;
249
+ const { pothosDrizzleTable } = (_type_extensions = type.extensions) !== null && _type_extensions !== void 0 ? _type_extensions : {};
250
+ if (!pothosDrizzleTable) {
251
+ throw new _core.PothosValidationError(`Expected ${type.name} to have a table config`);
252
+ }
253
+ const state = (0, _selections.createState)(pothosDrizzleTable, parent);
254
+ if (initialSelections) {
255
+ (0, _selections.mergeSelection)(config, state, initialSelections);
256
+ }
257
+ return state;
258
+ }
259
+ function getIndirectType(type, info) {
260
+ var _targetType_extensions;
261
+ let targetType = type;
262
+ while((_targetType_extensions = targetType.extensions) === null || _targetType_extensions === void 0 ? void 0 : _targetType_extensions.pothosIndirectInclude){
263
+ var _targetType_extensions1;
264
+ targetType = info.schema.getType(((_targetType_extensions1 = targetType.extensions) === null || _targetType_extensions1 === void 0 ? void 0 : _targetType_extensions1.pothosIndirectInclude).getType());
265
+ }
266
+ return targetType;
267
+ }
268
+ function normalizeInclude(path, type, expectedType) {
269
+ let currentType = path.length > 0 ? type : expectedType !== null && expectedType !== void 0 ? expectedType : type;
270
+ const normalized = [];
271
+ if (!((0, _graphql.isObjectType)(currentType) || (0, _graphql.isInterfaceType)(currentType))) {
272
+ throw new _core.PothosValidationError(`Expected ${currentType} to be an Object type`);
273
+ }
274
+ for (const fieldName of path){
275
+ const field = currentType.getFields()[fieldName];
276
+ if (!field) {
277
+ throw new _core.PothosValidationError(`Expected ${currentType} to have a field ${fieldName}`);
278
+ }
279
+ currentType = (0, _graphql.getNamedType)(field.type);
280
+ if (!((0, _graphql.isObjectType)(currentType) || (0, _graphql.isInterfaceType)(currentType))) {
281
+ throw new _core.PothosValidationError(`Expected ${currentType} to be an Object or Interface type`);
282
+ }
283
+ normalized.push({
284
+ name: fieldName,
285
+ type: currentType.name
286
+ });
287
+ }
288
+ return {
289
+ getType: ()=>{
290
+ var _expectedType_name;
291
+ return (_expectedType_name = expectedType === null || expectedType === void 0 ? void 0 : expectedType.name) !== null && _expectedType_name !== void 0 ? _expectedType_name : normalized.length > 0 ? normalized[normalized.length - 1].type : type.name;
292
+ },
293
+ path: normalized
294
+ };
295
+ }
296
+ function fieldSkipped(info, selection) {
297
+ const skip = (0, _graphql.getDirectiveValues)(_graphql.GraphQLSkipDirective, selection, info.variableValues);
298
+ if ((skip === null || skip === void 0 ? void 0 : skip.if) === true) {
299
+ return true;
300
+ }
301
+ const include = (0, _graphql.getDirectiveValues)(_graphql.GraphQLIncludeDirective, selection, info.variableValues);
302
+ if ((include === null || include === void 0 ? void 0 : include.if) === false) {
303
+ return true;
304
+ }
305
+ return false;
306
+ }
307
+
308
+ //# sourceMappingURL=map-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/map-query.ts"],"names":["getIndirectType","normalizeInclude","queryFromInfo","selectionStateFromInfo","stateFromInfo","addTypeSelectionsForField","config","type","context","info","state","selection","indirectPath","name","value","startsWith","pothosDrizzleSelect","pothosIndirectInclude","extensions","path","length","paths","resolveIndirectIncludePaths","resolvedType","field","schema","getType","isObjectType","isInterfaceType","mergeSelection","selectionSet","addNestedSelections","pathPrefix","includePaths","resolve","includePath","resolveIndirectInclude","include","rest","sel","selections","kind","Kind","FIELD","fieldSkipped","returnType","getNamedType","getFields","alias","FRAGMENT_SPREAD","fragments","typeCondition","INLINE_FRAGMENT","PothosValidationError","parentType","addFieldSelection","pothosDrizzleModel","fieldSelect","fieldSelectionMap","mappings","args","getArgumentValues","variableValues","rawQuery","indirectInclude","expectedType","query","normalizedIndirectInclude","Array","isArray","undefined","fieldState","createStateForSelection","Object","keys","columns","resolvedField","selectionToQuery","node","map","_","selectionCompatible","withUsageCheck","options","setLoaderMappings","wrapWithUsageCheck","typeName","select","getTypeMap","fieldNodes","indirectType","indirectField","subPath","p","n","nested","parent","initialSelections","pothosDrizzleTable","createState","targetType","currentType","normalized","fieldName","push","skip","getDirectiveValues","GraphQLSkipDirective","if","GraphQLIncludeDirective"],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ getRefFromModel: function() {
13
+ return getRefFromModel;
14
+ },
15
+ refMap: function() {
16
+ return refMap;
17
+ }
18
+ });
19
+ const _interfaceref = require("../interface-ref");
20
+ const _objectref = require("../object-ref");
21
+ const refMap = new WeakMap();
22
+ function getRefFromModel(name, builder, type = 'object') {
23
+ if (!refMap.has(builder)) {
24
+ refMap.set(builder, new Map());
25
+ }
26
+ const cache = refMap.get(builder);
27
+ if (!cache.has(name)) {
28
+ cache.set(name, type === 'object' ? new _objectref.DrizzleObjectRef(name, name) : new _interfaceref.DrizzleInterfaceRef(name, name));
29
+ }
30
+ return cache.get(name);
31
+ }
32
+
33
+ //# sourceMappingURL=refs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/refs.ts"],"names":["getRefFromModel","refMap","WeakMap","name","builder","type","has","set","Map","cache","get","DrizzleObjectRef","DrizzleInterfaceRef"],"mappings":";;;;;;;;;;;IAMgBA,eAAe;eAAfA;;IAFHC,MAAM;eAANA;;;8BAHmC;2BACf;AAE1B,MAAMA,SAAS,IAAIC;AAEnB,SAASF,gBACdG,IAAY,EACZC,OAA+C,EAC/CC,OAA+B,QAAQ;IAEvC,IAAI,CAACJ,OAAOK,GAAG,CAACF,UAAU;QACxBH,OAAOM,GAAG,CAACH,SAAS,IAAII;IAC1B;IACA,MAAMC,QAAQR,OAAOS,GAAG,CAACN;IAEzB,IAAI,CAACK,MAAMH,GAAG,CAACH,OAAO;QACpBM,MAAMF,GAAG,CACPJ,MACAE,SAAS,WAAW,IAAIM,2BAAgB,CAACR,MAAMA,QAAQ,IAAIS,iCAAmB,CAACT,MAAMA;IAEzF;IAEA,OAAOM,MAAMC,GAAG,CAACP;AACnB"}
@@ -0,0 +1,163 @@
1
+ /* eslint-disable no-param-reassign */ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ createState: function() {
13
+ return createState;
14
+ },
15
+ mergeSelection: function() {
16
+ return mergeSelection;
17
+ },
18
+ mergeState: function() {
19
+ return mergeState;
20
+ },
21
+ selectionCompatible: function() {
22
+ return selectionCompatible;
23
+ },
24
+ selectionToQuery: function() {
25
+ return selectionToQuery;
26
+ },
27
+ stateCompatible: function() {
28
+ return stateCompatible;
29
+ }
30
+ });
31
+ const _drizzleorm = require("drizzle-orm");
32
+ const _core = require("@pothos/core");
33
+ const _deepequal = require("./deep-equal");
34
+ function selectionCompatible(state, selectionMap, ignoreQuery = false) {
35
+ if (typeof selectionMap === 'boolean') {
36
+ return ignoreQuery || !selectionMap || Object.keys(state.query).length === 0;
37
+ }
38
+ const { with: withSelection, extras, columns, ...query } = selectionMap;
39
+ if (withSelection && Object.entries(withSelection).some(([key, value])=>value && state.with.has(key) && // TODO: make sure nested extras are normalized
40
+ !selectionCompatible(state.with.get(key), value))) {
41
+ return false;
42
+ }
43
+ const resolvedExtras = typeof extras === 'function' ? extras(state.table.columns, (0, _drizzleorm.getOperators)()) : extras;
44
+ if (resolvedExtras && Object.entries(resolvedExtras).some(([key, value])=>{
45
+ const sql = state.extras.get(key);
46
+ return sql && (sql.sql !== value.sql || sql.fieldAlias !== value.fieldAlias);
47
+ })) {
48
+ return false;
49
+ }
50
+ return ignoreQuery || (0, _deepequal.deepEqual)(state.query, query);
51
+ }
52
+ function stateCompatible(state, newState, ignoreQuery = false) {
53
+ for (const [name, relationState] of newState.with){
54
+ if (state.with.has(name) && !stateCompatible(state.with.get(name), relationState)) {
55
+ return false;
56
+ }
57
+ }
58
+ return ignoreQuery || (0, _deepequal.deepEqual)(state.query, newState.query);
59
+ }
60
+ function mergeState(state, newState) {
61
+ for (const [name, relationState] of newState.with){
62
+ if (state.with.has(name)) {
63
+ mergeState(state.with.get(name), relationState);
64
+ }
65
+ }
66
+ if (!state.allColumns) {
67
+ if (newState.allColumns) {
68
+ state.allColumns = true;
69
+ } else {
70
+ for (const name of newState.columns){
71
+ state.columns.add(name);
72
+ }
73
+ }
74
+ }
75
+ for (const [name, value] of newState.extras){
76
+ state.extras.set(name, value);
77
+ }
78
+ }
79
+ function createState(table, parent) {
80
+ return {
81
+ table,
82
+ parent,
83
+ query: {},
84
+ columns: new Set(),
85
+ with: new Map(),
86
+ extras: new Map(),
87
+ mappings: {},
88
+ allColumns: false,
89
+ depth: parent ? parent.depth + 1 : 0
90
+ };
91
+ }
92
+ function mergeSelection(config, state, { with: withSelection, extras, columns, ...query }) {
93
+ if (withSelection) {
94
+ Object.entries(withSelection).forEach(([key, value])=>{
95
+ const relation = state.table.relations[key];
96
+ if (!relation) {
97
+ throw new _core.PothosValidationError(`Relation ${key} does not exist on ${state.table.dbName}`);
98
+ }
99
+ merge(config.dbToSchema[relation.referencedTableName], key, value);
100
+ });
101
+ }
102
+ if (Object.keys(query).length > 0) {
103
+ state.query = query;
104
+ }
105
+ const resolvedExtras = typeof extras === 'function' ? extras(state.table.columns, (0, _drizzleorm.getOperators)()) : extras;
106
+ if (resolvedExtras) {
107
+ for (const [key, value] of Object.entries(resolvedExtras)){
108
+ state.extras.set(key, value);
109
+ }
110
+ }
111
+ if (state.allColumns) {
112
+ return;
113
+ }
114
+ if (columns) {
115
+ for (const key of Object.keys(columns)){
116
+ state.columns.add(key);
117
+ }
118
+ } else {
119
+ state.allColumns = true;
120
+ }
121
+ function merge(table, key, value) {
122
+ if (!value) {
123
+ return;
124
+ }
125
+ const selection = value === true ? {} : value;
126
+ if (state.with.has(key)) {
127
+ mergeSelection(config, state.with.get(key), selection);
128
+ } else {
129
+ const relatedState = createState(table, state);
130
+ mergeSelection(config, relatedState, selection);
131
+ state.with.set(key, relatedState);
132
+ }
133
+ }
134
+ }
135
+ function selectionToQuery(state) {
136
+ const query = {
137
+ ...state.query,
138
+ with: {},
139
+ columns: {},
140
+ extras: {}
141
+ };
142
+ if (state.allColumns) {
143
+ for (const key of Object.keys(state.table.columns)){
144
+ query.columns[key] = true;
145
+ }
146
+ } else {
147
+ for (const key of state.columns){
148
+ query.columns[key] = true;
149
+ }
150
+ for (const { name } of state.table.primaryKey){
151
+ query.columns[name] = true;
152
+ }
153
+ }
154
+ for (const [key, value] of state.extras){
155
+ query.extras[key] = value;
156
+ }
157
+ state.with.forEach((sel, relation)=>{
158
+ query.with[relation] = selectionToQuery(sel);
159
+ });
160
+ return query;
161
+ }
162
+
163
+ //# sourceMappingURL=selections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/selections.ts"],"names":["createState","mergeSelection","mergeState","selectionCompatible","selectionToQuery","stateCompatible","state","selectionMap","ignoreQuery","Object","keys","query","length","with","withSelection","extras","columns","entries","some","key","value","has","get","resolvedExtras","table","getOperators","sql","fieldAlias","deepEqual","newState","name","relationState","allColumns","add","set","parent","Set","Map","mappings","depth","config","forEach","relation","relations","PothosValidationError","dbName","merge","dbToSchema","referencedTableName","selection","relatedState","primaryKey","sel"],"mappings":"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"}