@constructive-io/graphql-codegen 2.19.0 → 2.20.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 (301) hide show
  1. package/README.md +1818 -113
  2. package/__tests__/codegen/input-types-generator.test.d.ts +1 -0
  3. package/__tests__/codegen/input-types-generator.test.js +635 -0
  4. package/cli/codegen/barrel.d.ts +27 -0
  5. package/cli/codegen/barrel.js +163 -0
  6. package/cli/codegen/client.d.ts +4 -0
  7. package/cli/codegen/client.js +170 -0
  8. package/cli/codegen/custom-mutations.d.ts +38 -0
  9. package/cli/codegen/custom-mutations.js +149 -0
  10. package/cli/codegen/custom-queries.d.ts +38 -0
  11. package/cli/codegen/custom-queries.js +358 -0
  12. package/cli/codegen/filters.d.ts +27 -0
  13. package/cli/codegen/filters.js +357 -0
  14. package/cli/codegen/gql-ast.d.ts +41 -0
  15. package/cli/codegen/gql-ast.js +329 -0
  16. package/cli/codegen/index.d.ts +71 -0
  17. package/cli/codegen/index.js +147 -0
  18. package/cli/codegen/mutations.d.ts +30 -0
  19. package/cli/codegen/mutations.js +410 -0
  20. package/cli/codegen/orm/barrel.d.ts +18 -0
  21. package/cli/codegen/orm/barrel.js +48 -0
  22. package/cli/codegen/orm/client-generator.d.ts +45 -0
  23. package/cli/codegen/orm/client-generator.js +646 -0
  24. package/cli/codegen/orm/custom-ops-generator.d.ts +30 -0
  25. package/cli/codegen/orm/custom-ops-generator.js +350 -0
  26. package/cli/codegen/orm/index.d.ts +38 -0
  27. package/cli/codegen/orm/index.js +88 -0
  28. package/cli/codegen/orm/input-types-generator.d.ts +21 -0
  29. package/cli/codegen/orm/input-types-generator.js +705 -0
  30. package/cli/codegen/orm/input-types-generator.test.d.ts +1 -0
  31. package/cli/codegen/orm/input-types-generator.test.js +75 -0
  32. package/cli/codegen/orm/model-generator.d.ts +32 -0
  33. package/cli/codegen/orm/model-generator.js +264 -0
  34. package/cli/codegen/orm/query-builder.d.ts +161 -0
  35. package/cli/codegen/orm/query-builder.js +366 -0
  36. package/cli/codegen/orm/select-types.d.ts +169 -0
  37. package/cli/codegen/orm/select-types.js +16 -0
  38. package/cli/codegen/orm/select-types.test.d.ts +11 -0
  39. package/cli/codegen/orm/select-types.test.js +22 -0
  40. package/cli/codegen/queries.d.ts +25 -0
  41. package/cli/codegen/queries.js +438 -0
  42. package/cli/codegen/scalars.d.ts +12 -0
  43. package/cli/codegen/scalars.js +71 -0
  44. package/cli/codegen/schema-gql-ast.d.ts +51 -0
  45. package/cli/codegen/schema-gql-ast.js +385 -0
  46. package/cli/codegen/ts-ast.d.ts +122 -0
  47. package/cli/codegen/ts-ast.js +280 -0
  48. package/cli/codegen/type-resolver.d.ts +96 -0
  49. package/cli/codegen/type-resolver.js +246 -0
  50. package/cli/codegen/types.d.ts +12 -0
  51. package/cli/codegen/types.js +69 -0
  52. package/cli/codegen/utils.d.ts +163 -0
  53. package/cli/codegen/utils.js +326 -0
  54. package/cli/commands/generate-orm.d.ts +37 -0
  55. package/cli/commands/generate-orm.js +195 -0
  56. package/cli/commands/generate.d.ts +39 -0
  57. package/cli/commands/generate.js +299 -0
  58. package/cli/commands/index.d.ts +7 -0
  59. package/cli/commands/index.js +12 -0
  60. package/cli/commands/init.d.ts +35 -0
  61. package/cli/commands/init.js +176 -0
  62. package/cli/index.d.ts +4 -0
  63. package/cli/index.js +291 -0
  64. package/cli/introspect/fetch-meta.d.ts +31 -0
  65. package/cli/introspect/fetch-meta.js +108 -0
  66. package/cli/introspect/fetch-schema.d.ts +21 -0
  67. package/cli/introspect/fetch-schema.js +86 -0
  68. package/cli/introspect/index.d.ts +8 -0
  69. package/cli/introspect/index.js +16 -0
  70. package/cli/introspect/meta-query.d.ts +111 -0
  71. package/cli/introspect/meta-query.js +191 -0
  72. package/cli/introspect/schema-query.d.ts +20 -0
  73. package/cli/introspect/schema-query.js +123 -0
  74. package/cli/introspect/transform-schema.d.ts +74 -0
  75. package/cli/introspect/transform-schema.js +269 -0
  76. package/cli/introspect/transform-schema.test.d.ts +1 -0
  77. package/cli/introspect/transform-schema.test.js +67 -0
  78. package/cli/introspect/transform.d.ts +21 -0
  79. package/cli/introspect/transform.js +216 -0
  80. package/cli/watch/cache.d.ts +45 -0
  81. package/cli/watch/cache.js +111 -0
  82. package/cli/watch/debounce.d.ts +19 -0
  83. package/cli/watch/debounce.js +89 -0
  84. package/cli/watch/hash.d.ts +17 -0
  85. package/cli/watch/hash.js +48 -0
  86. package/cli/watch/index.d.ts +10 -0
  87. package/cli/watch/index.js +22 -0
  88. package/cli/watch/orchestrator.d.ts +63 -0
  89. package/cli/watch/orchestrator.js +228 -0
  90. package/cli/watch/poller.d.ts +65 -0
  91. package/cli/watch/poller.js +203 -0
  92. package/cli/watch/types.d.ts +67 -0
  93. package/cli/watch/types.js +5 -0
  94. package/client/error.d.ts +95 -0
  95. package/client/error.js +255 -0
  96. package/client/execute.d.ts +57 -0
  97. package/client/execute.js +124 -0
  98. package/client/index.d.ts +6 -0
  99. package/client/index.js +18 -0
  100. package/client/typed-document.d.ts +31 -0
  101. package/client/typed-document.js +44 -0
  102. package/core/ast.d.ts +10 -0
  103. package/core/ast.js +593 -0
  104. package/core/custom-ast.d.ts +35 -0
  105. package/core/custom-ast.js +204 -0
  106. package/core/index.d.ts +8 -0
  107. package/core/index.js +33 -0
  108. package/core/meta-object/convert.d.ts +65 -0
  109. package/core/meta-object/convert.js +63 -0
  110. package/core/meta-object/format.json +93 -0
  111. package/core/meta-object/index.d.ts +2 -0
  112. package/core/meta-object/index.js +18 -0
  113. package/core/meta-object/validate.d.ts +9 -0
  114. package/core/meta-object/validate.js +34 -0
  115. package/core/query-builder.d.ts +46 -0
  116. package/core/query-builder.js +412 -0
  117. package/core/types.d.ts +139 -0
  118. package/core/types.js +28 -0
  119. package/esm/__tests__/codegen/input-types-generator.test.d.ts +1 -0
  120. package/esm/__tests__/codegen/input-types-generator.test.js +633 -0
  121. package/esm/cli/codegen/barrel.d.ts +27 -0
  122. package/esm/cli/codegen/barrel.js +156 -0
  123. package/esm/cli/codegen/client.d.ts +4 -0
  124. package/esm/cli/codegen/client.js +167 -0
  125. package/esm/cli/codegen/custom-mutations.d.ts +38 -0
  126. package/esm/cli/codegen/custom-mutations.js +145 -0
  127. package/esm/cli/codegen/custom-queries.d.ts +38 -0
  128. package/esm/cli/codegen/custom-queries.js +354 -0
  129. package/esm/cli/codegen/filters.d.ts +27 -0
  130. package/esm/cli/codegen/filters.js +351 -0
  131. package/esm/cli/codegen/gql-ast.d.ts +41 -0
  132. package/esm/cli/codegen/gql-ast.js +288 -0
  133. package/esm/cli/codegen/index.d.ts +71 -0
  134. package/esm/cli/codegen/index.js +124 -0
  135. package/esm/cli/codegen/mutations.d.ts +30 -0
  136. package/esm/cli/codegen/mutations.js +404 -0
  137. package/esm/cli/codegen/orm/barrel.d.ts +18 -0
  138. package/esm/cli/codegen/orm/barrel.js +44 -0
  139. package/esm/cli/codegen/orm/client-generator.d.ts +45 -0
  140. package/esm/cli/codegen/orm/client-generator.js +640 -0
  141. package/esm/cli/codegen/orm/custom-ops-generator.d.ts +30 -0
  142. package/esm/cli/codegen/orm/custom-ops-generator.js +346 -0
  143. package/esm/cli/codegen/orm/index.d.ts +38 -0
  144. package/esm/cli/codegen/orm/index.js +75 -0
  145. package/esm/cli/codegen/orm/input-types-generator.d.ts +21 -0
  146. package/esm/cli/codegen/orm/input-types-generator.js +700 -0
  147. package/esm/cli/codegen/orm/input-types-generator.test.d.ts +1 -0
  148. package/esm/cli/codegen/orm/input-types-generator.test.js +73 -0
  149. package/esm/cli/codegen/orm/model-generator.d.ts +32 -0
  150. package/esm/cli/codegen/orm/model-generator.js +260 -0
  151. package/esm/cli/codegen/orm/query-builder.d.ts +161 -0
  152. package/esm/cli/codegen/orm/query-builder.js +353 -0
  153. package/esm/cli/codegen/orm/select-types.d.ts +169 -0
  154. package/esm/cli/codegen/orm/select-types.js +15 -0
  155. package/esm/cli/codegen/orm/select-types.test.d.ts +11 -0
  156. package/esm/cli/codegen/orm/select-types.test.js +21 -0
  157. package/esm/cli/codegen/queries.d.ts +25 -0
  158. package/esm/cli/codegen/queries.js +433 -0
  159. package/esm/cli/codegen/scalars.d.ts +12 -0
  160. package/esm/cli/codegen/scalars.js +66 -0
  161. package/esm/cli/codegen/schema-gql-ast.d.ts +51 -0
  162. package/esm/cli/codegen/schema-gql-ast.js +343 -0
  163. package/esm/cli/codegen/ts-ast.d.ts +122 -0
  164. package/esm/cli/codegen/ts-ast.js +260 -0
  165. package/esm/cli/codegen/type-resolver.d.ts +96 -0
  166. package/esm/cli/codegen/type-resolver.js +224 -0
  167. package/esm/cli/codegen/types.d.ts +12 -0
  168. package/esm/cli/codegen/types.js +65 -0
  169. package/esm/cli/codegen/utils.d.ts +163 -0
  170. package/esm/cli/codegen/utils.js +288 -0
  171. package/esm/cli/commands/generate-orm.d.ts +37 -0
  172. package/esm/cli/commands/generate-orm.js +192 -0
  173. package/esm/cli/commands/generate.d.ts +39 -0
  174. package/esm/cli/commands/generate.js +262 -0
  175. package/esm/cli/commands/index.d.ts +7 -0
  176. package/esm/cli/commands/index.js +5 -0
  177. package/esm/cli/commands/init.d.ts +35 -0
  178. package/esm/cli/commands/init.js +138 -0
  179. package/esm/cli/index.d.ts +4 -0
  180. package/esm/cli/index.js +256 -0
  181. package/esm/cli/introspect/fetch-meta.d.ts +31 -0
  182. package/esm/cli/introspect/fetch-meta.js +104 -0
  183. package/esm/cli/introspect/fetch-schema.d.ts +21 -0
  184. package/esm/cli/introspect/fetch-schema.js +83 -0
  185. package/esm/cli/introspect/index.d.ts +8 -0
  186. package/esm/cli/introspect/index.js +6 -0
  187. package/esm/cli/introspect/meta-query.d.ts +111 -0
  188. package/esm/cli/introspect/meta-query.js +188 -0
  189. package/esm/cli/introspect/schema-query.d.ts +20 -0
  190. package/esm/cli/introspect/schema-query.js +120 -0
  191. package/esm/cli/introspect/transform-schema.d.ts +74 -0
  192. package/esm/cli/introspect/transform-schema.js +259 -0
  193. package/esm/cli/introspect/transform-schema.test.d.ts +1 -0
  194. package/esm/cli/introspect/transform-schema.test.js +65 -0
  195. package/esm/cli/introspect/transform.d.ts +21 -0
  196. package/esm/cli/introspect/transform.js +210 -0
  197. package/esm/cli/watch/cache.d.ts +45 -0
  198. package/esm/cli/watch/cache.js +73 -0
  199. package/esm/cli/watch/debounce.d.ts +19 -0
  200. package/esm/cli/watch/debounce.js +85 -0
  201. package/esm/cli/watch/hash.d.ts +17 -0
  202. package/esm/cli/watch/hash.js +43 -0
  203. package/esm/cli/watch/index.d.ts +10 -0
  204. package/esm/cli/watch/index.js +8 -0
  205. package/esm/cli/watch/orchestrator.d.ts +63 -0
  206. package/esm/cli/watch/orchestrator.js +223 -0
  207. package/esm/cli/watch/poller.d.ts +65 -0
  208. package/esm/cli/watch/poller.js +198 -0
  209. package/esm/cli/watch/types.d.ts +67 -0
  210. package/esm/cli/watch/types.js +4 -0
  211. package/esm/client/error.d.ts +95 -0
  212. package/esm/client/error.js +249 -0
  213. package/esm/client/execute.d.ts +57 -0
  214. package/esm/client/execute.js +120 -0
  215. package/esm/client/index.d.ts +6 -0
  216. package/esm/client/index.js +6 -0
  217. package/esm/client/typed-document.d.ts +31 -0
  218. package/esm/client/typed-document.js +40 -0
  219. package/esm/core/ast.d.ts +10 -0
  220. package/esm/core/ast.js +549 -0
  221. package/esm/core/custom-ast.d.ts +35 -0
  222. package/esm/core/custom-ast.js +161 -0
  223. package/esm/core/index.d.ts +8 -0
  224. package/esm/core/index.js +12 -0
  225. package/esm/core/meta-object/convert.d.ts +65 -0
  226. package/esm/core/meta-object/convert.js +60 -0
  227. package/esm/core/meta-object/format.json +93 -0
  228. package/esm/core/meta-object/index.d.ts +2 -0
  229. package/esm/core/meta-object/index.js +2 -0
  230. package/esm/core/meta-object/validate.d.ts +9 -0
  231. package/esm/core/meta-object/validate.js +28 -0
  232. package/esm/core/query-builder.d.ts +46 -0
  233. package/esm/core/query-builder.js +375 -0
  234. package/esm/core/types.d.ts +139 -0
  235. package/esm/core/types.js +24 -0
  236. package/esm/generators/field-selector.d.ts +30 -0
  237. package/esm/generators/field-selector.js +355 -0
  238. package/esm/generators/index.d.ts +6 -0
  239. package/esm/generators/index.js +9 -0
  240. package/esm/generators/mutations.d.ts +31 -0
  241. package/esm/generators/mutations.js +197 -0
  242. package/esm/generators/select.d.ts +50 -0
  243. package/esm/generators/select.js +636 -0
  244. package/esm/index.d.ts +12 -0
  245. package/esm/index.js +17 -3
  246. package/esm/react/index.d.ts +5 -0
  247. package/esm/react/index.js +6 -0
  248. package/esm/types/config.d.ts +199 -0
  249. package/esm/types/config.js +106 -0
  250. package/esm/types/index.d.ts +9 -0
  251. package/esm/types/index.js +4 -0
  252. package/esm/types/introspection.d.ts +121 -0
  253. package/esm/types/introspection.js +54 -0
  254. package/esm/types/mutation.d.ts +45 -0
  255. package/esm/types/mutation.js +4 -0
  256. package/esm/types/query.d.ts +82 -0
  257. package/esm/types/query.js +4 -0
  258. package/esm/types/schema.d.ts +253 -0
  259. package/esm/types/schema.js +5 -0
  260. package/esm/types/selection.d.ts +43 -0
  261. package/esm/types/selection.js +4 -0
  262. package/esm/utils/index.d.ts +4 -0
  263. package/esm/utils/index.js +4 -0
  264. package/generators/field-selector.d.ts +30 -0
  265. package/generators/field-selector.js +361 -0
  266. package/generators/index.d.ts +6 -0
  267. package/generators/index.js +27 -0
  268. package/generators/mutations.d.ts +31 -0
  269. package/generators/mutations.js +235 -0
  270. package/generators/select.d.ts +50 -0
  271. package/generators/select.js +679 -0
  272. package/index.d.ts +12 -3
  273. package/index.js +19 -3
  274. package/package.json +59 -38
  275. package/react/index.d.ts +5 -0
  276. package/react/index.js +9 -0
  277. package/types/config.d.ts +199 -0
  278. package/types/config.js +111 -0
  279. package/types/index.d.ts +9 -0
  280. package/types/index.js +10 -0
  281. package/types/introspection.d.ts +121 -0
  282. package/types/introspection.js +62 -0
  283. package/types/mutation.d.ts +45 -0
  284. package/types/mutation.js +5 -0
  285. package/types/query.d.ts +82 -0
  286. package/types/query.js +5 -0
  287. package/types/schema.d.ts +253 -0
  288. package/types/schema.js +6 -0
  289. package/types/selection.d.ts +43 -0
  290. package/types/selection.js +5 -0
  291. package/utils/index.d.ts +4 -0
  292. package/utils/index.js +7 -0
  293. package/codegen.d.ts +0 -13
  294. package/codegen.js +0 -293
  295. package/esm/codegen.js +0 -253
  296. package/esm/gql.js +0 -939
  297. package/esm/options.js +0 -27
  298. package/gql.d.ts +0 -188
  299. package/gql.js +0 -992
  300. package/options.d.ts +0 -45
  301. package/options.js +0 -31
@@ -0,0 +1,329 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.buildListQueryAST = buildListQueryAST;
37
+ exports.buildSingleQueryAST = buildSingleQueryAST;
38
+ exports.buildCreateMutationAST = buildCreateMutationAST;
39
+ exports.buildUpdateMutationAST = buildUpdateMutationAST;
40
+ exports.buildDeleteMutationAST = buildDeleteMutationAST;
41
+ exports.printGraphQL = printGraphQL;
42
+ /**
43
+ * GraphQL AST builders using gql-ast
44
+ *
45
+ * Provides utilities for generating GraphQL queries and mutations via AST
46
+ * instead of string concatenation.
47
+ */
48
+ const t = __importStar(require("gql-ast"));
49
+ const graphql_1 = require("graphql");
50
+ const utils_1 = require("./utils");
51
+ // ============================================================================
52
+ // Field selection builders
53
+ // ============================================================================
54
+ /**
55
+ * Create field selections from CleanField array
56
+ */
57
+ function createFieldSelections(fields) {
58
+ return fields.map((field) => t.field({ name: field.name }));
59
+ }
60
+ /**
61
+ * Create pageInfo selection
62
+ */
63
+ function createPageInfoSelection() {
64
+ return t.field({
65
+ name: 'pageInfo',
66
+ selectionSet: t.selectionSet({
67
+ selections: [
68
+ t.field({ name: 'hasNextPage' }),
69
+ t.field({ name: 'hasPreviousPage' }),
70
+ t.field({ name: 'startCursor' }),
71
+ t.field({ name: 'endCursor' }),
72
+ ],
73
+ }),
74
+ });
75
+ }
76
+ /**
77
+ * Build a list query AST for a table
78
+ */
79
+ function buildListQueryAST(config) {
80
+ const { table } = config;
81
+ const queryName = (0, utils_1.getAllRowsQueryName)(table);
82
+ const filterType = (0, utils_1.getFilterTypeName)(table);
83
+ const orderByType = (0, utils_1.getOrderByTypeName)(table);
84
+ const scalarFields = (0, utils_1.getScalarFields)(table);
85
+ // Variable definitions
86
+ const variableDefinitions = [
87
+ t.variableDefinition({
88
+ variable: t.variable({ name: 'first' }),
89
+ type: t.namedType({ type: 'Int' }),
90
+ }),
91
+ t.variableDefinition({
92
+ variable: t.variable({ name: 'offset' }),
93
+ type: t.namedType({ type: 'Int' }),
94
+ }),
95
+ t.variableDefinition({
96
+ variable: t.variable({ name: 'filter' }),
97
+ type: t.namedType({ type: filterType }),
98
+ }),
99
+ t.variableDefinition({
100
+ variable: t.variable({ name: 'orderBy' }),
101
+ type: t.listType({
102
+ type: t.nonNullType({ type: t.namedType({ type: orderByType }) }),
103
+ }),
104
+ }),
105
+ ];
106
+ // Query arguments
107
+ const args = [
108
+ t.argument({ name: 'first', value: t.variable({ name: 'first' }) }),
109
+ t.argument({ name: 'offset', value: t.variable({ name: 'offset' }) }),
110
+ t.argument({ name: 'filter', value: t.variable({ name: 'filter' }) }),
111
+ t.argument({ name: 'orderBy', value: t.variable({ name: 'orderBy' }) }),
112
+ ];
113
+ // Field selections
114
+ const fieldSelections = createFieldSelections(scalarFields);
115
+ // Connection fields
116
+ const connectionFields = [
117
+ t.field({ name: 'totalCount' }),
118
+ t.field({
119
+ name: 'nodes',
120
+ selectionSet: t.selectionSet({ selections: fieldSelections }),
121
+ }),
122
+ createPageInfoSelection(),
123
+ ];
124
+ return t.document({
125
+ definitions: [
126
+ t.operationDefinition({
127
+ operation: 'query',
128
+ name: `${(0, utils_1.ucFirst)(queryName)}Query`,
129
+ variableDefinitions,
130
+ selectionSet: t.selectionSet({
131
+ selections: [
132
+ t.field({
133
+ name: queryName,
134
+ args,
135
+ selectionSet: t.selectionSet({ selections: connectionFields }),
136
+ }),
137
+ ],
138
+ }),
139
+ }),
140
+ ],
141
+ });
142
+ }
143
+ /**
144
+ * Build a single item query AST for a table
145
+ */
146
+ function buildSingleQueryAST(config) {
147
+ const { table } = config;
148
+ const queryName = (0, utils_1.getSingleRowQueryName)(table);
149
+ const scalarFields = (0, utils_1.getScalarFields)(table);
150
+ // Variable definitions - assume UUID primary key
151
+ const variableDefinitions = [
152
+ t.variableDefinition({
153
+ variable: t.variable({ name: 'id' }),
154
+ type: t.nonNullType({ type: t.namedType({ type: 'UUID' }) }),
155
+ }),
156
+ ];
157
+ // Query arguments
158
+ const args = [
159
+ t.argument({ name: 'id', value: t.variable({ name: 'id' }) }),
160
+ ];
161
+ // Field selections
162
+ const fieldSelections = createFieldSelections(scalarFields);
163
+ return t.document({
164
+ definitions: [
165
+ t.operationDefinition({
166
+ operation: 'query',
167
+ name: `${(0, utils_1.ucFirst)(queryName)}Query`,
168
+ variableDefinitions,
169
+ selectionSet: t.selectionSet({
170
+ selections: [
171
+ t.field({
172
+ name: queryName,
173
+ args,
174
+ selectionSet: t.selectionSet({ selections: fieldSelections }),
175
+ }),
176
+ ],
177
+ }),
178
+ }),
179
+ ],
180
+ });
181
+ }
182
+ /**
183
+ * Build a create mutation AST for a table
184
+ */
185
+ function buildCreateMutationAST(config) {
186
+ const { table } = config;
187
+ const { typeName, singularName } = (0, utils_1.getTableNames)(table);
188
+ const mutationName = (0, utils_1.getCreateMutationName)(table);
189
+ const inputTypeName = `Create${typeName}Input`;
190
+ const scalarFields = (0, utils_1.getScalarFields)(table);
191
+ // Variable definitions
192
+ const variableDefinitions = [
193
+ t.variableDefinition({
194
+ variable: t.variable({ name: 'input' }),
195
+ type: t.nonNullType({ type: t.namedType({ type: inputTypeName }) }),
196
+ }),
197
+ ];
198
+ // Mutation arguments
199
+ const args = [
200
+ t.argument({ name: 'input', value: t.variable({ name: 'input' }) }),
201
+ ];
202
+ // Field selections
203
+ const fieldSelections = createFieldSelections(scalarFields);
204
+ return t.document({
205
+ definitions: [
206
+ t.operationDefinition({
207
+ operation: 'mutation',
208
+ name: `${(0, utils_1.ucFirst)(mutationName)}Mutation`,
209
+ variableDefinitions,
210
+ selectionSet: t.selectionSet({
211
+ selections: [
212
+ t.field({
213
+ name: mutationName,
214
+ args,
215
+ selectionSet: t.selectionSet({
216
+ selections: [
217
+ t.field({
218
+ name: singularName,
219
+ selectionSet: t.selectionSet({ selections: fieldSelections }),
220
+ }),
221
+ ],
222
+ }),
223
+ }),
224
+ ],
225
+ }),
226
+ }),
227
+ ],
228
+ });
229
+ }
230
+ /**
231
+ * Build an update mutation AST for a table
232
+ */
233
+ function buildUpdateMutationAST(config) {
234
+ const { table } = config;
235
+ const { typeName, singularName } = (0, utils_1.getTableNames)(table);
236
+ const mutationName = (0, utils_1.getUpdateMutationName)(table);
237
+ const inputTypeName = `Update${typeName}Input`;
238
+ const scalarFields = (0, utils_1.getScalarFields)(table);
239
+ // Variable definitions
240
+ const variableDefinitions = [
241
+ t.variableDefinition({
242
+ variable: t.variable({ name: 'input' }),
243
+ type: t.nonNullType({ type: t.namedType({ type: inputTypeName }) }),
244
+ }),
245
+ ];
246
+ // Mutation arguments
247
+ const args = [
248
+ t.argument({ name: 'input', value: t.variable({ name: 'input' }) }),
249
+ ];
250
+ // Field selections
251
+ const fieldSelections = createFieldSelections(scalarFields);
252
+ return t.document({
253
+ definitions: [
254
+ t.operationDefinition({
255
+ operation: 'mutation',
256
+ name: `${(0, utils_1.ucFirst)(mutationName)}Mutation`,
257
+ variableDefinitions,
258
+ selectionSet: t.selectionSet({
259
+ selections: [
260
+ t.field({
261
+ name: mutationName,
262
+ args,
263
+ selectionSet: t.selectionSet({
264
+ selections: [
265
+ t.field({
266
+ name: singularName,
267
+ selectionSet: t.selectionSet({ selections: fieldSelections }),
268
+ }),
269
+ ],
270
+ }),
271
+ }),
272
+ ],
273
+ }),
274
+ }),
275
+ ],
276
+ });
277
+ }
278
+ /**
279
+ * Build a delete mutation AST for a table
280
+ */
281
+ function buildDeleteMutationAST(config) {
282
+ const { table } = config;
283
+ const { typeName } = (0, utils_1.getTableNames)(table);
284
+ const mutationName = (0, utils_1.getDeleteMutationName)(table);
285
+ const inputTypeName = `Delete${typeName}Input`;
286
+ // Variable definitions
287
+ const variableDefinitions = [
288
+ t.variableDefinition({
289
+ variable: t.variable({ name: 'input' }),
290
+ type: t.nonNullType({ type: t.namedType({ type: inputTypeName }) }),
291
+ }),
292
+ ];
293
+ // Mutation arguments
294
+ const args = [
295
+ t.argument({ name: 'input', value: t.variable({ name: 'input' }) }),
296
+ ];
297
+ return t.document({
298
+ definitions: [
299
+ t.operationDefinition({
300
+ operation: 'mutation',
301
+ name: `${(0, utils_1.ucFirst)(mutationName)}Mutation`,
302
+ variableDefinitions,
303
+ selectionSet: t.selectionSet({
304
+ selections: [
305
+ t.field({
306
+ name: mutationName,
307
+ args,
308
+ selectionSet: t.selectionSet({
309
+ selections: [
310
+ t.field({ name: 'clientMutationId' }),
311
+ t.field({ name: 'deletedId' }),
312
+ ],
313
+ }),
314
+ }),
315
+ ],
316
+ }),
317
+ }),
318
+ ],
319
+ });
320
+ }
321
+ // ============================================================================
322
+ // Print utilities
323
+ // ============================================================================
324
+ /**
325
+ * Print AST to GraphQL string
326
+ */
327
+ function printGraphQL(ast) {
328
+ return (0, graphql_1.print)(ast);
329
+ }
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Code generation orchestrator
3
+ *
4
+ * Coordinates all code generators to produce the complete SDK output.
5
+ *
6
+ * Output structure:
7
+ * generated/
8
+ * index.ts - Main barrel export
9
+ * client.ts - GraphQL client with configure() and execute()
10
+ * types.ts - Entity interfaces and filter types
11
+ * queries/
12
+ * index.ts - Query hooks barrel
13
+ * useCarsQuery.ts - List query hook (table-based)
14
+ * useCarQuery.ts - Single item query hook (table-based)
15
+ * useCurrentUserQuery.ts - Custom query hook
16
+ * ...
17
+ * mutations/
18
+ * index.ts - Mutation hooks barrel
19
+ * useCreateCarMutation.ts - Table-based CRUD
20
+ * useUpdateCarMutation.ts
21
+ * useDeleteCarMutation.ts
22
+ * useLoginMutation.ts - Custom mutation
23
+ * useRegisterMutation.ts
24
+ * ...
25
+ */
26
+ import type { CleanTable, CleanOperation, TypeRegistry } from '../../types/schema';
27
+ import type { ResolvedConfig } from '../../types/config';
28
+ export interface GeneratedFile {
29
+ /** Relative path from output directory */
30
+ path: string;
31
+ /** File content */
32
+ content: string;
33
+ }
34
+ export interface GenerateResult {
35
+ files: GeneratedFile[];
36
+ stats: {
37
+ tables: number;
38
+ queryHooks: number;
39
+ mutationHooks: number;
40
+ customQueryHooks: number;
41
+ customMutationHooks: number;
42
+ totalFiles: number;
43
+ };
44
+ }
45
+ export interface GenerateOptions {
46
+ /** Tables from _meta introspection */
47
+ tables: CleanTable[];
48
+ /** Custom operations from __schema introspection */
49
+ customOperations?: {
50
+ queries: CleanOperation[];
51
+ mutations: CleanOperation[];
52
+ typeRegistry: TypeRegistry;
53
+ };
54
+ /** Resolved configuration */
55
+ config: ResolvedConfig;
56
+ }
57
+ /**
58
+ * Generate all SDK files for tables only (legacy function signature)
59
+ */
60
+ export declare function generateAllFiles(tables: CleanTable[], config: ResolvedConfig): GenerateResult;
61
+ /**
62
+ * Generate all SDK files with full support for custom operations
63
+ */
64
+ export declare function generate(options: GenerateOptions): GenerateResult;
65
+ export { generateClientFile } from './client';
66
+ export { generateTypesFile } from './types';
67
+ export { generateAllQueryHooks, generateListQueryHook, generateSingleQueryHook } from './queries';
68
+ export { generateAllMutationHooks, generateCreateMutationHook, generateUpdateMutationHook, generateDeleteMutationHook, } from './mutations';
69
+ export { generateAllCustomQueryHooks, generateCustomQueryHook } from './custom-queries';
70
+ export { generateAllCustomMutationHooks, generateCustomMutationHook } from './custom-mutations';
71
+ export { generateQueriesBarrel, generateMutationsBarrel, generateMainBarrel, generateCustomQueriesBarrel, generateCustomMutationsBarrel, } from './barrel';
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateCustomMutationsBarrel = exports.generateCustomQueriesBarrel = exports.generateMainBarrel = exports.generateMutationsBarrel = exports.generateQueriesBarrel = exports.generateCustomMutationHook = exports.generateAllCustomMutationHooks = exports.generateCustomQueryHook = exports.generateAllCustomQueryHooks = exports.generateDeleteMutationHook = exports.generateUpdateMutationHook = exports.generateCreateMutationHook = exports.generateAllMutationHooks = exports.generateSingleQueryHook = exports.generateListQueryHook = exports.generateAllQueryHooks = exports.generateTypesFile = exports.generateClientFile = void 0;
4
+ exports.generateAllFiles = generateAllFiles;
5
+ exports.generate = generate;
6
+ const client_1 = require("./client");
7
+ const types_1 = require("./types");
8
+ const queries_1 = require("./queries");
9
+ const mutations_1 = require("./mutations");
10
+ const custom_queries_1 = require("./custom-queries");
11
+ const custom_mutations_1 = require("./custom-mutations");
12
+ const barrel_1 = require("./barrel");
13
+ // ============================================================================
14
+ // Main orchestrator
15
+ // ============================================================================
16
+ /**
17
+ * Generate all SDK files for tables only (legacy function signature)
18
+ */
19
+ function generateAllFiles(tables, config) {
20
+ return generate({ tables, config });
21
+ }
22
+ /**
23
+ * Generate all SDK files with full support for custom operations
24
+ */
25
+ function generate(options) {
26
+ const { tables, customOperations, config } = options;
27
+ const files = [];
28
+ // Extract codegen options
29
+ const maxDepth = config.codegen.maxFieldDepth;
30
+ const skipQueryField = config.codegen.skipQueryField;
31
+ // 1. Generate client.ts
32
+ files.push({
33
+ path: 'client.ts',
34
+ content: (0, client_1.generateClientFile)(),
35
+ });
36
+ // 2. Generate types.ts
37
+ files.push({
38
+ path: 'types.ts',
39
+ content: (0, types_1.generateTypesFile)(tables),
40
+ });
41
+ // 3. Generate table-based query hooks (queries/*.ts)
42
+ const queryHooks = (0, queries_1.generateAllQueryHooks)(tables);
43
+ for (const hook of queryHooks) {
44
+ files.push({
45
+ path: `queries/${hook.fileName}`,
46
+ content: hook.content,
47
+ });
48
+ }
49
+ // 4. Generate custom query hooks if available
50
+ let customQueryHooks = [];
51
+ if (customOperations && customOperations.queries.length > 0) {
52
+ customQueryHooks = (0, custom_queries_1.generateAllCustomQueryHooks)({
53
+ operations: customOperations.queries,
54
+ typeRegistry: customOperations.typeRegistry,
55
+ maxDepth,
56
+ skipQueryField,
57
+ });
58
+ for (const hook of customQueryHooks) {
59
+ files.push({
60
+ path: `queries/${hook.fileName}`,
61
+ content: hook.content,
62
+ });
63
+ }
64
+ }
65
+ // 5. Generate queries/index.ts barrel (includes both table and custom queries)
66
+ files.push({
67
+ path: 'queries/index.ts',
68
+ content: customQueryHooks.length > 0
69
+ ? (0, barrel_1.generateCustomQueriesBarrel)(tables, customQueryHooks.map((h) => h.operationName))
70
+ : (0, barrel_1.generateQueriesBarrel)(tables),
71
+ });
72
+ // 6. Generate table-based mutation hooks (mutations/*.ts)
73
+ const mutationHooks = (0, mutations_1.generateAllMutationHooks)(tables);
74
+ for (const hook of mutationHooks) {
75
+ files.push({
76
+ path: `mutations/${hook.fileName}`,
77
+ content: hook.content,
78
+ });
79
+ }
80
+ // 7. Generate custom mutation hooks if available
81
+ let customMutationHooks = [];
82
+ if (customOperations && customOperations.mutations.length > 0) {
83
+ customMutationHooks = (0, custom_mutations_1.generateAllCustomMutationHooks)({
84
+ operations: customOperations.mutations,
85
+ typeRegistry: customOperations.typeRegistry,
86
+ maxDepth,
87
+ skipQueryField,
88
+ });
89
+ for (const hook of customMutationHooks) {
90
+ files.push({
91
+ path: `mutations/${hook.fileName}`,
92
+ content: hook.content,
93
+ });
94
+ }
95
+ }
96
+ // 8. Generate mutations/index.ts barrel (includes both table and custom mutations)
97
+ files.push({
98
+ path: 'mutations/index.ts',
99
+ content: customMutationHooks.length > 0
100
+ ? (0, barrel_1.generateCustomMutationsBarrel)(tables, customMutationHooks.map((h) => h.operationName))
101
+ : (0, barrel_1.generateMutationsBarrel)(tables),
102
+ });
103
+ // 9. Generate main index.ts barrel
104
+ files.push({
105
+ path: 'index.ts',
106
+ content: (0, barrel_1.generateMainBarrel)(tables),
107
+ });
108
+ return {
109
+ files,
110
+ stats: {
111
+ tables: tables.length,
112
+ queryHooks: queryHooks.length,
113
+ mutationHooks: mutationHooks.length,
114
+ customQueryHooks: customQueryHooks.length,
115
+ customMutationHooks: customMutationHooks.length,
116
+ totalFiles: files.length,
117
+ },
118
+ };
119
+ }
120
+ // ============================================================================
121
+ // Re-exports for convenience
122
+ // ============================================================================
123
+ var client_2 = require("./client");
124
+ Object.defineProperty(exports, "generateClientFile", { enumerable: true, get: function () { return client_2.generateClientFile; } });
125
+ var types_2 = require("./types");
126
+ Object.defineProperty(exports, "generateTypesFile", { enumerable: true, get: function () { return types_2.generateTypesFile; } });
127
+ var queries_2 = require("./queries");
128
+ Object.defineProperty(exports, "generateAllQueryHooks", { enumerable: true, get: function () { return queries_2.generateAllQueryHooks; } });
129
+ Object.defineProperty(exports, "generateListQueryHook", { enumerable: true, get: function () { return queries_2.generateListQueryHook; } });
130
+ Object.defineProperty(exports, "generateSingleQueryHook", { enumerable: true, get: function () { return queries_2.generateSingleQueryHook; } });
131
+ var mutations_2 = require("./mutations");
132
+ Object.defineProperty(exports, "generateAllMutationHooks", { enumerable: true, get: function () { return mutations_2.generateAllMutationHooks; } });
133
+ Object.defineProperty(exports, "generateCreateMutationHook", { enumerable: true, get: function () { return mutations_2.generateCreateMutationHook; } });
134
+ Object.defineProperty(exports, "generateUpdateMutationHook", { enumerable: true, get: function () { return mutations_2.generateUpdateMutationHook; } });
135
+ Object.defineProperty(exports, "generateDeleteMutationHook", { enumerable: true, get: function () { return mutations_2.generateDeleteMutationHook; } });
136
+ var custom_queries_2 = require("./custom-queries");
137
+ Object.defineProperty(exports, "generateAllCustomQueryHooks", { enumerable: true, get: function () { return custom_queries_2.generateAllCustomQueryHooks; } });
138
+ Object.defineProperty(exports, "generateCustomQueryHook", { enumerable: true, get: function () { return custom_queries_2.generateCustomQueryHook; } });
139
+ var custom_mutations_2 = require("./custom-mutations");
140
+ Object.defineProperty(exports, "generateAllCustomMutationHooks", { enumerable: true, get: function () { return custom_mutations_2.generateAllCustomMutationHooks; } });
141
+ Object.defineProperty(exports, "generateCustomMutationHook", { enumerable: true, get: function () { return custom_mutations_2.generateCustomMutationHook; } });
142
+ var barrel_2 = require("./barrel");
143
+ Object.defineProperty(exports, "generateQueriesBarrel", { enumerable: true, get: function () { return barrel_2.generateQueriesBarrel; } });
144
+ Object.defineProperty(exports, "generateMutationsBarrel", { enumerable: true, get: function () { return barrel_2.generateMutationsBarrel; } });
145
+ Object.defineProperty(exports, "generateMainBarrel", { enumerable: true, get: function () { return barrel_2.generateMainBarrel; } });
146
+ Object.defineProperty(exports, "generateCustomQueriesBarrel", { enumerable: true, get: function () { return barrel_2.generateCustomQueriesBarrel; } });
147
+ Object.defineProperty(exports, "generateCustomMutationsBarrel", { enumerable: true, get: function () { return barrel_2.generateCustomMutationsBarrel; } });
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Mutation hook generators using AST-based code generation
3
+ *
4
+ * Output structure:
5
+ * mutations/
6
+ * useCreateCarMutation.ts
7
+ * useUpdateCarMutation.ts
8
+ * useDeleteCarMutation.ts
9
+ */
10
+ import type { CleanTable } from '../../types/schema';
11
+ export interface GeneratedMutationFile {
12
+ fileName: string;
13
+ content: string;
14
+ }
15
+ /**
16
+ * Generate create mutation hook file content using AST
17
+ */
18
+ export declare function generateCreateMutationHook(table: CleanTable): GeneratedMutationFile;
19
+ /**
20
+ * Generate update mutation hook file content using AST
21
+ */
22
+ export declare function generateUpdateMutationHook(table: CleanTable): GeneratedMutationFile | null;
23
+ /**
24
+ * Generate delete mutation hook file content using AST
25
+ */
26
+ export declare function generateDeleteMutationHook(table: CleanTable): GeneratedMutationFile | null;
27
+ /**
28
+ * Generate all mutation hook files for all tables
29
+ */
30
+ export declare function generateAllMutationHooks(tables: CleanTable[]): GeneratedMutationFile[];