@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,199 @@
1
+ /**
2
+ * SDK Configuration types
3
+ */
4
+ /**
5
+ * Main configuration for graphql-codegen
6
+ */
7
+ export interface GraphQLSDKConfig {
8
+ /**
9
+ * GraphQL endpoint URL (must expose _meta query)
10
+ */
11
+ endpoint: string;
12
+ /**
13
+ * Headers to include in introspection requests
14
+ */
15
+ headers?: Record<string, string>;
16
+ /**
17
+ * Output directory for generated code
18
+ * @default './generated/graphql'
19
+ */
20
+ output?: string;
21
+ /**
22
+ * Table filtering options (for table-based CRUD operations from _meta)
23
+ */
24
+ tables?: {
25
+ /** Tables to include (glob patterns supported) */
26
+ include?: string[];
27
+ /** Tables to exclude (glob patterns supported) */
28
+ exclude?: string[];
29
+ };
30
+ /**
31
+ * Query operation filtering (for ALL queries from __schema introspection)
32
+ * Glob patterns supported (e.g., 'current*', '*ByUsername')
33
+ */
34
+ queries?: {
35
+ /** Query names to include - defaults to ['*'] */
36
+ include?: string[];
37
+ /** Query names to exclude - defaults to ['_meta', 'query'] */
38
+ exclude?: string[];
39
+ };
40
+ /**
41
+ * Mutation operation filtering (for ALL mutations from __schema introspection)
42
+ * Glob patterns supported (e.g., 'create*', 'login', 'register')
43
+ */
44
+ mutations?: {
45
+ /** Mutation names to include - defaults to ['*'] */
46
+ include?: string[];
47
+ /** Mutation names to exclude */
48
+ exclude?: string[];
49
+ };
50
+ /**
51
+ * Fields to exclude globally from all tables
52
+ */
53
+ excludeFields?: string[];
54
+ /**
55
+ * Hook generation options
56
+ */
57
+ hooks?: {
58
+ /** Generate query hooks */
59
+ queries?: boolean;
60
+ /** Generate mutation hooks */
61
+ mutations?: boolean;
62
+ /** Prefix for query keys */
63
+ queryKeyPrefix?: string;
64
+ };
65
+ /**
66
+ * PostGraphile-specific options
67
+ */
68
+ postgraphile?: {
69
+ /** PostgreSQL schema to introspect */
70
+ schema?: string;
71
+ };
72
+ /**
73
+ * Code generation options
74
+ */
75
+ codegen?: {
76
+ /** Max depth for nested object field selection (default: 2) */
77
+ maxFieldDepth?: number;
78
+ /** Skip 'query' field on mutation payloads (default: true) */
79
+ skipQueryField?: boolean;
80
+ };
81
+ /**
82
+ * ORM client generation options
83
+ * When set, generates a Prisma-like ORM client in addition to or instead of React Query hooks
84
+ */
85
+ orm?: {
86
+ /**
87
+ * Output directory for generated ORM client
88
+ * @default './generated/orm'
89
+ */
90
+ output?: string;
91
+ /**
92
+ * Whether to import shared types from hooks output or generate standalone
93
+ * When true, ORM types.ts will re-export from ../graphql/types
94
+ * @default true
95
+ */
96
+ useSharedTypes?: boolean;
97
+ };
98
+ /**
99
+ * Watch mode configuration (dev-only feature)
100
+ * When enabled via CLI --watch flag, the CLI will poll the endpoint for schema changes
101
+ */
102
+ watch?: WatchConfig;
103
+ }
104
+ /**
105
+ * Watch mode configuration options
106
+ *
107
+ * Watch mode uses in-memory caching for efficiency - no file I/O during polling.
108
+ */
109
+ export interface WatchConfig {
110
+ /**
111
+ * Polling interval in milliseconds
112
+ * @default 3000
113
+ */
114
+ pollInterval?: number;
115
+ /**
116
+ * Debounce delay in milliseconds before regenerating
117
+ * Prevents rapid regeneration during schema migrations
118
+ * @default 800
119
+ */
120
+ debounce?: number;
121
+ /**
122
+ * File to touch on schema change (useful for triggering external tools like tsc/webpack)
123
+ * This is the only file I/O in watch mode.
124
+ * @example '.trigger'
125
+ */
126
+ touchFile?: string;
127
+ /**
128
+ * Clear terminal on regeneration
129
+ * @default true
130
+ */
131
+ clearScreen?: boolean;
132
+ }
133
+ /**
134
+ * Resolved watch configuration with defaults applied
135
+ */
136
+ export interface ResolvedWatchConfig {
137
+ pollInterval: number;
138
+ debounce: number;
139
+ touchFile: string | null;
140
+ clearScreen: boolean;
141
+ }
142
+ /**
143
+ * Resolved configuration with defaults applied
144
+ */
145
+ export interface ResolvedConfig extends Required<Omit<GraphQLSDKConfig, 'headers' | 'tables' | 'queries' | 'mutations' | 'hooks' | 'postgraphile' | 'codegen' | 'orm' | 'watch'>> {
146
+ headers: Record<string, string>;
147
+ tables: {
148
+ include: string[];
149
+ exclude: string[];
150
+ };
151
+ queries: {
152
+ include: string[];
153
+ exclude: string[];
154
+ };
155
+ mutations: {
156
+ include: string[];
157
+ exclude: string[];
158
+ };
159
+ hooks: {
160
+ queries: boolean;
161
+ mutations: boolean;
162
+ queryKeyPrefix: string;
163
+ };
164
+ postgraphile: {
165
+ schema: string;
166
+ };
167
+ codegen: {
168
+ maxFieldDepth: number;
169
+ skipQueryField: boolean;
170
+ };
171
+ orm: {
172
+ output: string;
173
+ useSharedTypes: boolean;
174
+ } | null;
175
+ watch: ResolvedWatchConfig;
176
+ }
177
+ /**
178
+ * Default watch configuration values
179
+ */
180
+ export declare const DEFAULT_WATCH_CONFIG: ResolvedWatchConfig;
181
+ /**
182
+ * Default configuration values
183
+ */
184
+ export declare const DEFAULT_CONFIG: Omit<ResolvedConfig, 'endpoint'>;
185
+ /**
186
+ * Default ORM configuration values
187
+ */
188
+ export declare const DEFAULT_ORM_CONFIG: {
189
+ output: string;
190
+ useSharedTypes: boolean;
191
+ };
192
+ /**
193
+ * Helper function to define configuration with type checking
194
+ */
195
+ export declare function defineConfig(config: GraphQLSDKConfig): GraphQLSDKConfig;
196
+ /**
197
+ * Resolve configuration by applying defaults
198
+ */
199
+ export declare function resolveConfig(config: GraphQLSDKConfig): ResolvedConfig;
@@ -0,0 +1,106 @@
1
+ /**
2
+ * SDK Configuration types
3
+ */
4
+ /**
5
+ * Default watch configuration values
6
+ */
7
+ export const DEFAULT_WATCH_CONFIG = {
8
+ pollInterval: 3000,
9
+ debounce: 800,
10
+ touchFile: null,
11
+ clearScreen: true,
12
+ };
13
+ /**
14
+ * Default configuration values
15
+ */
16
+ export const DEFAULT_CONFIG = {
17
+ headers: {},
18
+ output: './generated/graphql',
19
+ tables: {
20
+ include: ['*'],
21
+ exclude: [],
22
+ },
23
+ queries: {
24
+ include: ['*'],
25
+ exclude: ['_meta', 'query'], // Internal PostGraphile queries
26
+ },
27
+ mutations: {
28
+ include: ['*'],
29
+ exclude: [],
30
+ },
31
+ excludeFields: [],
32
+ hooks: {
33
+ queries: true,
34
+ mutations: true,
35
+ queryKeyPrefix: 'graphql',
36
+ },
37
+ postgraphile: {
38
+ schema: 'public',
39
+ },
40
+ codegen: {
41
+ maxFieldDepth: 2,
42
+ skipQueryField: true,
43
+ },
44
+ orm: null, // ORM generation disabled by default
45
+ watch: DEFAULT_WATCH_CONFIG,
46
+ };
47
+ /**
48
+ * Default ORM configuration values
49
+ */
50
+ export const DEFAULT_ORM_CONFIG = {
51
+ output: './generated/orm',
52
+ useSharedTypes: true,
53
+ };
54
+ /**
55
+ * Helper function to define configuration with type checking
56
+ */
57
+ export function defineConfig(config) {
58
+ return config;
59
+ }
60
+ /**
61
+ * Resolve configuration by applying defaults
62
+ */
63
+ export function resolveConfig(config) {
64
+ return {
65
+ endpoint: config.endpoint,
66
+ headers: config.headers ?? DEFAULT_CONFIG.headers,
67
+ output: config.output ?? DEFAULT_CONFIG.output,
68
+ tables: {
69
+ include: config.tables?.include ?? DEFAULT_CONFIG.tables.include,
70
+ exclude: config.tables?.exclude ?? DEFAULT_CONFIG.tables.exclude,
71
+ },
72
+ queries: {
73
+ include: config.queries?.include ?? DEFAULT_CONFIG.queries.include,
74
+ exclude: config.queries?.exclude ?? DEFAULT_CONFIG.queries.exclude,
75
+ },
76
+ mutations: {
77
+ include: config.mutations?.include ?? DEFAULT_CONFIG.mutations.include,
78
+ exclude: config.mutations?.exclude ?? DEFAULT_CONFIG.mutations.exclude,
79
+ },
80
+ excludeFields: config.excludeFields ?? DEFAULT_CONFIG.excludeFields,
81
+ hooks: {
82
+ queries: config.hooks?.queries ?? DEFAULT_CONFIG.hooks.queries,
83
+ mutations: config.hooks?.mutations ?? DEFAULT_CONFIG.hooks.mutations,
84
+ queryKeyPrefix: config.hooks?.queryKeyPrefix ?? DEFAULT_CONFIG.hooks.queryKeyPrefix,
85
+ },
86
+ postgraphile: {
87
+ schema: config.postgraphile?.schema ?? DEFAULT_CONFIG.postgraphile.schema,
88
+ },
89
+ codegen: {
90
+ maxFieldDepth: config.codegen?.maxFieldDepth ?? DEFAULT_CONFIG.codegen.maxFieldDepth,
91
+ skipQueryField: config.codegen?.skipQueryField ?? DEFAULT_CONFIG.codegen.skipQueryField,
92
+ },
93
+ orm: config.orm
94
+ ? {
95
+ output: config.orm.output ?? DEFAULT_ORM_CONFIG.output,
96
+ useSharedTypes: config.orm.useSharedTypes ?? DEFAULT_ORM_CONFIG.useSharedTypes,
97
+ }
98
+ : null,
99
+ watch: {
100
+ pollInterval: config.watch?.pollInterval ?? DEFAULT_WATCH_CONFIG.pollInterval,
101
+ debounce: config.watch?.debounce ?? DEFAULT_WATCH_CONFIG.debounce,
102
+ touchFile: config.watch?.touchFile ?? DEFAULT_WATCH_CONFIG.touchFile,
103
+ clearScreen: config.watch?.clearScreen ?? DEFAULT_WATCH_CONFIG.clearScreen,
104
+ },
105
+ };
106
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Type exports for @constructive-io/graphql-codegen
3
+ */
4
+ export type { CleanTable, CleanField, CleanFieldType, CleanRelations, CleanBelongsToRelation, CleanHasOneRelation, CleanHasManyRelation, CleanManyToManyRelation, TableInflection, TableQueryNames, TableConstraints, ConstraintInfo, ForeignKeyConstraint, } from './schema';
5
+ export type { PageInfo, ConnectionResult, QueryOptions, OrderByItem, FilterOperator, FieldFilter, RelationalFilter, Filter, } from './query';
6
+ export type { MutationOptions, CreateInput, UpdateInput, DeleteInput, MutationResult, } from './mutation';
7
+ export type { SimpleFieldSelection, FieldSelectionPreset, FieldSelection, SelectionOptions, } from './selection';
8
+ export type { GraphQLSDKConfig, ResolvedConfig, } from './config';
9
+ export { defineConfig, resolveConfig, DEFAULT_CONFIG } from './config';
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Type exports for @constructive-io/graphql-codegen
3
+ */
4
+ export { defineConfig, resolveConfig, DEFAULT_CONFIG } from './config';
@@ -0,0 +1,121 @@
1
+ /**
2
+ * GraphQL Introspection Types
3
+ *
4
+ * Standard types for GraphQL schema introspection via __schema query.
5
+ * These mirror the GraphQL introspection spec.
6
+ */
7
+ /**
8
+ * Reference to a GraphQL type - can be nested for wrappers like NON_NULL and LIST
9
+ */
10
+ export interface IntrospectionTypeRef {
11
+ kind: IntrospectionTypeKind;
12
+ name: string | null;
13
+ ofType: IntrospectionTypeRef | null;
14
+ }
15
+ export type IntrospectionTypeKind = 'SCALAR' | 'OBJECT' | 'INPUT_OBJECT' | 'ENUM' | 'LIST' | 'NON_NULL' | 'INTERFACE' | 'UNION';
16
+ /**
17
+ * Input value - used for both field arguments and INPUT_OBJECT fields
18
+ */
19
+ export interface IntrospectionInputValue {
20
+ name: string;
21
+ description: string | null;
22
+ type: IntrospectionTypeRef;
23
+ defaultValue: string | null;
24
+ }
25
+ /**
26
+ * Field on an OBJECT or INTERFACE type
27
+ */
28
+ export interface IntrospectionField {
29
+ name: string;
30
+ description: string | null;
31
+ args: IntrospectionInputValue[];
32
+ type: IntrospectionTypeRef;
33
+ isDeprecated: boolean;
34
+ deprecationReason: string | null;
35
+ }
36
+ /**
37
+ * Enum value definition
38
+ */
39
+ export interface IntrospectionEnumValue {
40
+ name: string;
41
+ description: string | null;
42
+ isDeprecated: boolean;
43
+ deprecationReason: string | null;
44
+ }
45
+ /**
46
+ * Complete type definition from introspection
47
+ */
48
+ export interface IntrospectionType {
49
+ kind: IntrospectionTypeKind;
50
+ name: string;
51
+ description: string | null;
52
+ /** Fields for OBJECT and INTERFACE types */
53
+ fields: IntrospectionField[] | null;
54
+ /** Input fields for INPUT_OBJECT types */
55
+ inputFields: IntrospectionInputValue[] | null;
56
+ /** Possible types for INTERFACE and UNION types */
57
+ possibleTypes: Array<{
58
+ name: string;
59
+ }> | null;
60
+ /** Enum values for ENUM types */
61
+ enumValues: IntrospectionEnumValue[] | null;
62
+ /** Interfaces implemented by OBJECT types */
63
+ interfaces: Array<{
64
+ name: string;
65
+ }> | null;
66
+ }
67
+ /**
68
+ * Root type references in schema
69
+ */
70
+ export interface IntrospectionRootType {
71
+ name: string;
72
+ }
73
+ /**
74
+ * Full schema introspection result
75
+ */
76
+ export interface IntrospectionSchema {
77
+ queryType: IntrospectionRootType;
78
+ mutationType: IntrospectionRootType | null;
79
+ subscriptionType: IntrospectionRootType | null;
80
+ types: IntrospectionType[];
81
+ directives: IntrospectionDirective[];
82
+ }
83
+ /**
84
+ * Directive definition
85
+ */
86
+ export interface IntrospectionDirective {
87
+ name: string;
88
+ description: string | null;
89
+ locations: string[];
90
+ args: IntrospectionInputValue[];
91
+ }
92
+ /**
93
+ * Response from introspection query
94
+ */
95
+ export interface IntrospectionQueryResponse {
96
+ __schema: IntrospectionSchema;
97
+ }
98
+ /**
99
+ * Check if type kind is a wrapper (LIST or NON_NULL)
100
+ */
101
+ export declare function isWrapperType(kind: IntrospectionTypeKind): boolean;
102
+ /**
103
+ * Check if type kind is a named type (has a name)
104
+ */
105
+ export declare function isNamedType(kind: IntrospectionTypeKind): boolean;
106
+ /**
107
+ * Unwrap a type reference to get the base named type
108
+ */
109
+ export declare function unwrapType(typeRef: IntrospectionTypeRef): IntrospectionTypeRef;
110
+ /**
111
+ * Get the base type name from a possibly wrapped type
112
+ */
113
+ export declare function getBaseTypeName(typeRef: IntrospectionTypeRef): string | null;
114
+ /**
115
+ * Check if a type reference is non-null (required)
116
+ */
117
+ export declare function isNonNull(typeRef: IntrospectionTypeRef): boolean;
118
+ /**
119
+ * Check if a type reference is a list
120
+ */
121
+ export declare function isList(typeRef: IntrospectionTypeRef): boolean;
@@ -0,0 +1,54 @@
1
+ /**
2
+ * GraphQL Introspection Types
3
+ *
4
+ * Standard types for GraphQL schema introspection via __schema query.
5
+ * These mirror the GraphQL introspection spec.
6
+ */
7
+ // ============================================================================
8
+ // Type Guards
9
+ // ============================================================================
10
+ /**
11
+ * Check if type kind is a wrapper (LIST or NON_NULL)
12
+ */
13
+ export function isWrapperType(kind) {
14
+ return kind === 'LIST' || kind === 'NON_NULL';
15
+ }
16
+ /**
17
+ * Check if type kind is a named type (has a name)
18
+ */
19
+ export function isNamedType(kind) {
20
+ return !isWrapperType(kind);
21
+ }
22
+ /**
23
+ * Unwrap a type reference to get the base named type
24
+ */
25
+ export function unwrapType(typeRef) {
26
+ let current = typeRef;
27
+ while (current.ofType) {
28
+ current = current.ofType;
29
+ }
30
+ return current;
31
+ }
32
+ /**
33
+ * Get the base type name from a possibly wrapped type
34
+ */
35
+ export function getBaseTypeName(typeRef) {
36
+ return unwrapType(typeRef).name;
37
+ }
38
+ /**
39
+ * Check if a type reference is non-null (required)
40
+ */
41
+ export function isNonNull(typeRef) {
42
+ return typeRef.kind === 'NON_NULL';
43
+ }
44
+ /**
45
+ * Check if a type reference is a list
46
+ */
47
+ export function isList(typeRef) {
48
+ if (typeRef.kind === 'LIST')
49
+ return true;
50
+ if (typeRef.kind === 'NON_NULL' && typeRef.ofType) {
51
+ return typeRef.ofType.kind === 'LIST';
52
+ }
53
+ return false;
54
+ }
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Mutation-related types
3
+ */
4
+ import type { FieldSelection } from './selection';
5
+ /**
6
+ * Options for mutation operations
7
+ */
8
+ export interface MutationOptions {
9
+ /** Fields to return after mutation */
10
+ returning?: string[];
11
+ /** Field selection for returned data */
12
+ fieldSelection?: FieldSelection;
13
+ }
14
+ /**
15
+ * Input for create mutations
16
+ * Wraps the actual data in PostGraphile's expected format
17
+ */
18
+ export interface CreateInput<T = Record<string, unknown>> {
19
+ [tableName: string]: T;
20
+ }
21
+ /**
22
+ * Input for update mutations
23
+ */
24
+ export interface UpdateInput<T = Record<string, unknown>> {
25
+ /** Primary key value */
26
+ id: string | number;
27
+ /** Fields to update */
28
+ patch: T;
29
+ }
30
+ /**
31
+ * Input for delete mutations
32
+ */
33
+ export interface DeleteInput {
34
+ /** Primary key value */
35
+ id: string | number;
36
+ }
37
+ /**
38
+ * Standard mutation result
39
+ */
40
+ export interface MutationResult<T = unknown> {
41
+ /** The affected record */
42
+ data?: T;
43
+ /** Client mutation ID (PostGraphile) */
44
+ clientMutationId?: string;
45
+ }
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Mutation-related types
3
+ */
4
+ export {};
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Query-related types for building GraphQL operations
3
+ */
4
+ import type { FieldSelection } from './selection';
5
+ /**
6
+ * Relay-style pagination info
7
+ */
8
+ export interface PageInfo {
9
+ hasNextPage: boolean;
10
+ hasPreviousPage: boolean;
11
+ startCursor?: string | null;
12
+ endCursor?: string | null;
13
+ }
14
+ /**
15
+ * Relay-style connection result
16
+ */
17
+ export interface ConnectionResult<T = unknown> {
18
+ nodes: T[];
19
+ totalCount: number;
20
+ pageInfo: PageInfo;
21
+ }
22
+ /**
23
+ * Options for building SELECT queries
24
+ */
25
+ export interface QueryOptions {
26
+ /** Number of records to fetch (alias for first) */
27
+ first?: number;
28
+ /** Alias for first */
29
+ limit?: number;
30
+ /** Offset for pagination */
31
+ offset?: number;
32
+ /** Cursor for forward pagination */
33
+ after?: string;
34
+ /** Cursor for backward pagination */
35
+ before?: string;
36
+ /** Filter conditions */
37
+ where?: Filter;
38
+ /** Sort order */
39
+ orderBy?: OrderByItem[];
40
+ /** Field selection options */
41
+ fieldSelection?: FieldSelection;
42
+ /** Include pageInfo in response */
43
+ includePageInfo?: boolean;
44
+ }
45
+ /**
46
+ * Single order by specification
47
+ */
48
+ export interface OrderByItem {
49
+ field: string;
50
+ direction: 'asc' | 'desc';
51
+ }
52
+ /**
53
+ * All supported filter operators
54
+ */
55
+ export type FilterOperator = 'isNull' | 'equalTo' | 'notEqualTo' | 'distinctFrom' | 'notDistinctFrom' | 'in' | 'notIn' | 'lessThan' | 'lessThanOrEqualTo' | 'greaterThan' | 'greaterThanOrEqualTo' | 'includes' | 'notIncludes' | 'includesInsensitive' | 'notIncludesInsensitive' | 'startsWith' | 'notStartsWith' | 'startsWithInsensitive' | 'notStartsWithInsensitive' | 'endsWith' | 'notEndsWith' | 'endsWithInsensitive' | 'notEndsWithInsensitive' | 'like' | 'notLike' | 'likeInsensitive' | 'notLikeInsensitive' | 'equalToInsensitive' | 'notEqualToInsensitive' | 'distinctFromInsensitive' | 'notDistinctFromInsensitive' | 'inInsensitive' | 'notInInsensitive' | 'contains' | 'containedBy' | 'overlaps' | 'intersects' | 'intersects3D' | 'containsProperly' | 'coveredBy' | 'covers' | 'crosses' | 'disjoint' | 'orderingEquals' | 'touches' | 'within' | 'bboxIntersects2D' | 'bboxIntersects3D' | 'bboxOverlapsOrLeftOf' | 'bboxOverlapsOrRightOf' | 'bboxOverlapsOrBelow' | 'bboxOverlapsOrAbove' | 'bboxLeftOf' | 'bboxRightOf' | 'bboxBelow' | 'bboxAbove' | 'bboxContains' | 'bboxEquals';
56
+ /**
57
+ * Filter on a single field
58
+ */
59
+ export type FieldFilter = {
60
+ [K in FilterOperator]?: unknown;
61
+ };
62
+ /**
63
+ * Filter on related records
64
+ */
65
+ export interface RelationalFilter {
66
+ /** All related records must match */
67
+ every?: Filter;
68
+ /** At least one related record must match */
69
+ some?: Filter;
70
+ /** No related records match */
71
+ none?: Filter;
72
+ }
73
+ /**
74
+ * Main filter type - can be nested
75
+ */
76
+ export type Filter = {
77
+ [field: string]: FieldFilter | RelationalFilter | Filter;
78
+ } & {
79
+ and?: Filter[];
80
+ or?: Filter[];
81
+ not?: Filter;
82
+ };
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Query-related types for building GraphQL operations
3
+ */
4
+ export {};