@constructive-io/graphql-codegen 4.9.0 → 4.13.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 (59) hide show
  1. package/core/codegen/cli/arg-mapper.d.ts +1 -1
  2. package/core/codegen/cli/arg-mapper.js +15 -11
  3. package/core/codegen/cli/command-map-generator.d.ts +1 -0
  4. package/core/codegen/cli/command-map-generator.js +4 -0
  5. package/core/codegen/cli/config-command-generator.d.ts +11 -0
  6. package/core/codegen/cli/config-command-generator.js +458 -0
  7. package/core/codegen/cli/custom-command-generator.js +4 -3
  8. package/core/codegen/cli/docs-generator.d.ts +6 -5
  9. package/core/codegen/cli/docs-generator.js +167 -64
  10. package/core/codegen/cli/helpers-generator.d.ts +15 -0
  11. package/core/codegen/cli/helpers-generator.js +119 -0
  12. package/core/codegen/cli/index.d.ts +4 -0
  13. package/core/codegen/cli/index.js +21 -3
  14. package/core/codegen/cli/table-command-generator.d.ts +15 -0
  15. package/core/codegen/cli/table-command-generator.js +20 -1
  16. package/core/codegen/docs-utils.d.ts +26 -1
  17. package/core/codegen/docs-utils.js +105 -0
  18. package/core/codegen/orm/index.js +3 -2
  19. package/core/codegen/orm/input-types-generator.d.ts +3 -1
  20. package/core/codegen/orm/input-types-generator.js +123 -17
  21. package/core/codegen/orm/model-generator.d.ts +6 -2
  22. package/core/codegen/orm/model-generator.js +59 -29
  23. package/core/codegen/orm/select-types.d.ts +4 -2
  24. package/core/codegen/scalars.js +8 -0
  25. package/core/codegen/templates/cli-entry.ts +2 -2
  26. package/core/codegen/templates/cli-utils.ts +28 -0
  27. package/core/codegen/templates/query-builder.ts +28 -5
  28. package/core/codegen/templates/select-types.ts +4 -2
  29. package/core/generate.js +14 -4
  30. package/esm/core/codegen/cli/arg-mapper.d.ts +1 -1
  31. package/esm/core/codegen/cli/arg-mapper.js +15 -11
  32. package/esm/core/codegen/cli/command-map-generator.d.ts +1 -0
  33. package/esm/core/codegen/cli/command-map-generator.js +4 -0
  34. package/esm/core/codegen/cli/config-command-generator.d.ts +11 -0
  35. package/esm/core/codegen/cli/config-command-generator.js +422 -0
  36. package/esm/core/codegen/cli/custom-command-generator.js +4 -3
  37. package/esm/core/codegen/cli/docs-generator.d.ts +6 -5
  38. package/esm/core/codegen/cli/docs-generator.js +168 -65
  39. package/esm/core/codegen/cli/helpers-generator.d.ts +15 -0
  40. package/esm/core/codegen/cli/helpers-generator.js +83 -0
  41. package/esm/core/codegen/cli/index.d.ts +4 -0
  42. package/esm/core/codegen/cli/index.js +18 -2
  43. package/esm/core/codegen/cli/table-command-generator.d.ts +15 -0
  44. package/esm/core/codegen/cli/table-command-generator.js +20 -3
  45. package/esm/core/codegen/docs-utils.d.ts +26 -1
  46. package/esm/core/codegen/docs-utils.js +102 -0
  47. package/esm/core/codegen/orm/index.js +3 -2
  48. package/esm/core/codegen/orm/input-types-generator.d.ts +3 -1
  49. package/esm/core/codegen/orm/input-types-generator.js +123 -17
  50. package/esm/core/codegen/orm/model-generator.d.ts +6 -2
  51. package/esm/core/codegen/orm/model-generator.js +59 -29
  52. package/esm/core/codegen/orm/select-types.d.ts +4 -2
  53. package/esm/core/codegen/scalars.js +8 -0
  54. package/esm/core/generate.js +14 -4
  55. package/esm/types/config.d.ts +9 -0
  56. package/esm/types/config.js +1 -0
  57. package/package.json +11 -11
  58. package/types/config.d.ts +9 -0
  59. package/types/config.js +1 -0
@@ -5,5 +5,9 @@ export interface GeneratedModelFile {
5
5
  modelName: string;
6
6
  tableName: string;
7
7
  }
8
- export declare function generateModelFile(table: CleanTable, _useSharedTypes: boolean): GeneratedModelFile;
9
- export declare function generateAllModelFiles(tables: CleanTable[], useSharedTypes: boolean): GeneratedModelFile[];
8
+ export declare function generateModelFile(table: CleanTable, _useSharedTypes: boolean, options?: {
9
+ condition?: boolean;
10
+ }): GeneratedModelFile;
11
+ export declare function generateAllModelFiles(tables: CleanTable[], useSharedTypes: boolean, options?: {
12
+ condition?: boolean;
13
+ }): GeneratedModelFile[];
@@ -65,7 +65,8 @@ function strictSelectGuard(selectTypeName) {
65
65
  t.tsTypeReference(t.identifier(selectTypeName)),
66
66
  ]));
67
67
  }
68
- export function generateModelFile(table, _useSharedTypes) {
68
+ export function generateModelFile(table, _useSharedTypes, options) {
69
+ const conditionEnabled = options?.condition !== false;
69
70
  const { typeName, singularName, pluralName } = getTableNames(table);
70
71
  const modelName = `${typeName}Model`;
71
72
  const baseFileName = lcFirst(typeName);
@@ -74,6 +75,7 @@ export function generateModelFile(table, _useSharedTypes) {
74
75
  const selectTypeName = `${typeName}Select`;
75
76
  const relationTypeName = `${typeName}WithRelations`;
76
77
  const whereTypeName = getFilterTypeName(table);
78
+ const conditionTypeName = conditionEnabled ? `${typeName}Condition` : undefined;
77
79
  const orderByTypeName = getOrderByTypeName(table);
78
80
  const createInputTypeName = `Create${typeName}Input`;
79
81
  const updateInputTypeName = `Update${typeName}Input`;
@@ -108,16 +110,18 @@ export function generateModelFile(table, _useSharedTypes) {
108
110
  'InferSelectResult',
109
111
  'StrictSelect',
110
112
  ], true));
111
- statements.push(createImportDeclaration('../input-types', [
113
+ const inputTypeImports = [
112
114
  typeName,
113
115
  relationTypeName,
114
116
  selectTypeName,
115
117
  whereTypeName,
118
+ ...(conditionTypeName ? [conditionTypeName] : []),
116
119
  orderByTypeName,
117
120
  createInputTypeName,
118
121
  updateInputTypeName,
119
122
  patchTypeName,
120
- ], true));
123
+ ];
124
+ statements.push(createImportDeclaration('../input-types', inputTypeImports, true));
121
125
  statements.push(createImportDeclaration('../input-types', ['connectionFieldsMap']));
122
126
  const classBody = [];
123
127
  // Constructor
@@ -131,11 +135,15 @@ export function generateModelFile(table, _useSharedTypes) {
131
135
  const pkTsType = () => tsTypeFromPrimitive(pkField.tsType);
132
136
  // ── findMany ───────────────────────────────────────────────────────────
133
137
  {
134
- const argsType = (sel) => t.tsTypeReference(t.identifier('FindManyArgs'), t.tsTypeParameterInstantiation([
135
- sel,
136
- t.tsTypeReference(t.identifier(whereTypeName)),
137
- t.tsTypeReference(t.identifier(orderByTypeName)),
138
- ]));
138
+ const findManyTypeArgs = [
139
+ (sel) => sel,
140
+ () => t.tsTypeReference(t.identifier(whereTypeName)),
141
+ ...(conditionTypeName
142
+ ? [() => t.tsTypeReference(t.identifier(conditionTypeName))]
143
+ : []),
144
+ () => t.tsTypeReference(t.identifier(orderByTypeName)),
145
+ ];
146
+ const argsType = (sel) => t.tsTypeReference(t.identifier('FindManyArgs'), t.tsTypeParameterInstantiation(findManyTypeArgs.map(fn => fn(sel))));
139
147
  const retType = (sel) => t.tsTypeAnnotation(t.tsTypeReference(t.identifier('QueryBuilder'), t.tsTypeParameterInstantiation([
140
148
  t.tsTypeLiteral([
141
149
  t.tsPropertySignature(t.identifier(pluralQueryName), t.tsTypeAnnotation(t.tsTypeReference(t.identifier('ConnectionResult'), t.tsTypeParameterInstantiation([
@@ -153,34 +161,47 @@ export function generateModelFile(table, _useSharedTypes) {
153
161
  strictSelectGuard(selectTypeName),
154
162
  ]));
155
163
  const selectExpr = t.memberExpression(t.identifier('args'), t.identifier('select'));
164
+ const findManyObjProps = [
165
+ t.objectProperty(t.identifier('where'), t.optionalMemberExpression(t.identifier('args'), t.identifier('where'), false, true)),
166
+ ...(conditionTypeName
167
+ ? [
168
+ t.objectProperty(t.identifier('condition'), t.optionalMemberExpression(t.identifier('args'), t.identifier('condition'), false, true)),
169
+ ]
170
+ : []),
171
+ t.objectProperty(t.identifier('orderBy'), t.tsAsExpression(t.optionalMemberExpression(t.identifier('args'), t.identifier('orderBy'), false, true), t.tsUnionType([
172
+ t.tsArrayType(t.tsStringKeyword()),
173
+ t.tsUndefinedKeyword(),
174
+ ]))),
175
+ t.objectProperty(t.identifier('first'), t.optionalMemberExpression(t.identifier('args'), t.identifier('first'), false, true)),
176
+ t.objectProperty(t.identifier('last'), t.optionalMemberExpression(t.identifier('args'), t.identifier('last'), false, true)),
177
+ t.objectProperty(t.identifier('after'), t.optionalMemberExpression(t.identifier('args'), t.identifier('after'), false, true)),
178
+ t.objectProperty(t.identifier('before'), t.optionalMemberExpression(t.identifier('args'), t.identifier('before'), false, true)),
179
+ t.objectProperty(t.identifier('offset'), t.optionalMemberExpression(t.identifier('args'), t.identifier('offset'), false, true)),
180
+ ];
156
181
  const bodyArgs = [
157
182
  t.stringLiteral(typeName),
158
183
  t.stringLiteral(pluralQueryName),
159
184
  selectExpr,
160
- t.objectExpression([
161
- t.objectProperty(t.identifier('where'), t.optionalMemberExpression(t.identifier('args'), t.identifier('where'), false, true)),
162
- t.objectProperty(t.identifier('orderBy'), t.tsAsExpression(t.optionalMemberExpression(t.identifier('args'), t.identifier('orderBy'), false, true), t.tsUnionType([
163
- t.tsArrayType(t.tsStringKeyword()),
164
- t.tsUndefinedKeyword(),
165
- ]))),
166
- t.objectProperty(t.identifier('first'), t.optionalMemberExpression(t.identifier('args'), t.identifier('first'), false, true)),
167
- t.objectProperty(t.identifier('last'), t.optionalMemberExpression(t.identifier('args'), t.identifier('last'), false, true)),
168
- t.objectProperty(t.identifier('after'), t.optionalMemberExpression(t.identifier('args'), t.identifier('after'), false, true)),
169
- t.objectProperty(t.identifier('before'), t.optionalMemberExpression(t.identifier('args'), t.identifier('before'), false, true)),
170
- t.objectProperty(t.identifier('offset'), t.optionalMemberExpression(t.identifier('args'), t.identifier('offset'), false, true)),
171
- ]),
185
+ t.objectExpression(findManyObjProps),
172
186
  t.stringLiteral(whereTypeName),
173
187
  t.stringLiteral(orderByTypeName),
174
188
  t.identifier('connectionFieldsMap'),
189
+ ...(conditionTypeName
190
+ ? [t.stringLiteral(conditionTypeName)]
191
+ : []),
175
192
  ];
176
193
  classBody.push(createClassMethod('findMany', createTypeParam(selectTypeName), [implParam], retType(sRef()), buildMethodBody('buildFindManyDocument', bodyArgs, 'query', typeName, pluralQueryName)));
177
194
  }
178
195
  // ── findFirst ──────────────────────────────────────────────────────────
179
196
  {
180
- const argsType = (sel) => t.tsTypeReference(t.identifier('FindFirstArgs'), t.tsTypeParameterInstantiation([
181
- sel,
182
- t.tsTypeReference(t.identifier(whereTypeName)),
183
- ]));
197
+ const findFirstTypeArgs = [
198
+ (sel) => sel,
199
+ () => t.tsTypeReference(t.identifier(whereTypeName)),
200
+ ...(conditionTypeName
201
+ ? [() => t.tsTypeReference(t.identifier(conditionTypeName))]
202
+ : []),
203
+ ];
204
+ const argsType = (sel) => t.tsTypeReference(t.identifier('FindFirstArgs'), t.tsTypeParameterInstantiation(findFirstTypeArgs.map(fn => fn(sel))));
184
205
  const retType = (sel) => t.tsTypeAnnotation(t.tsTypeReference(t.identifier('QueryBuilder'), t.tsTypeParameterInstantiation([
185
206
  t.tsTypeLiteral([
186
207
  t.tsPropertySignature(t.identifier(pluralQueryName), t.tsTypeAnnotation(t.tsTypeLiteral([
@@ -198,15 +219,24 @@ export function generateModelFile(table, _useSharedTypes) {
198
219
  strictSelectGuard(selectTypeName),
199
220
  ]));
200
221
  const selectExpr = t.memberExpression(t.identifier('args'), t.identifier('select'));
222
+ const findFirstObjProps = [
223
+ t.objectProperty(t.identifier('where'), t.optionalMemberExpression(t.identifier('args'), t.identifier('where'), false, true)),
224
+ ...(conditionTypeName
225
+ ? [
226
+ t.objectProperty(t.identifier('condition'), t.optionalMemberExpression(t.identifier('args'), t.identifier('condition'), false, true)),
227
+ ]
228
+ : []),
229
+ ];
201
230
  const bodyArgs = [
202
231
  t.stringLiteral(typeName),
203
232
  t.stringLiteral(pluralQueryName),
204
233
  selectExpr,
205
- t.objectExpression([
206
- t.objectProperty(t.identifier('where'), t.optionalMemberExpression(t.identifier('args'), t.identifier('where'), false, true)),
207
- ]),
234
+ t.objectExpression(findFirstObjProps),
208
235
  t.stringLiteral(whereTypeName),
209
236
  t.identifier('connectionFieldsMap'),
237
+ ...(conditionTypeName
238
+ ? [t.stringLiteral(conditionTypeName)]
239
+ : []),
210
240
  ];
211
241
  classBody.push(createClassMethod('findFirst', createTypeParam(selectTypeName), [implParam], retType(sRef()), buildMethodBody('buildFindFirstDocument', bodyArgs, 'query', typeName, pluralQueryName)));
212
242
  }
@@ -410,6 +440,6 @@ export function generateModelFile(table, _useSharedTypes) {
410
440
  tableName: table.name,
411
441
  };
412
442
  }
413
- export function generateAllModelFiles(tables, useSharedTypes) {
414
- return tables.map((table) => generateModelFile(table, useSharedTypes));
443
+ export function generateAllModelFiles(tables, useSharedTypes, options) {
444
+ return tables.map((table) => generateModelFile(table, useSharedTypes, options));
415
445
  }
@@ -150,9 +150,10 @@ export interface PageInfo {
150
150
  /**
151
151
  * Arguments for findMany operations
152
152
  */
153
- export interface FindManyArgs<TSelect, TWhere, TOrderBy> {
153
+ export interface FindManyArgs<TSelect, TWhere, TCondition, TOrderBy> {
154
154
  select?: TSelect;
155
155
  where?: TWhere;
156
+ condition?: TCondition;
156
157
  orderBy?: TOrderBy[];
157
158
  first?: number;
158
159
  last?: number;
@@ -163,9 +164,10 @@ export interface FindManyArgs<TSelect, TWhere, TOrderBy> {
163
164
  /**
164
165
  * Arguments for findFirst/findUnique operations
165
166
  */
166
- export interface FindFirstArgs<TSelect, TWhere> {
167
+ export interface FindFirstArgs<TSelect, TWhere, TCondition> {
167
168
  select?: TSelect;
168
169
  where?: TWhere;
170
+ condition?: TCondition;
169
171
  }
170
172
  /**
171
173
  * Arguments for create operations
@@ -33,6 +33,8 @@ export const SCALAR_TS_MAP = {
33
33
  MacAddr: 'string',
34
34
  TsVector: 'string',
35
35
  TsQuery: 'string',
36
+ // Vector types (pgvector) — serialized as [Float] in GraphQL
37
+ Vector: 'number[]',
36
38
  // File upload
37
39
  Upload: 'File',
38
40
  };
@@ -51,6 +53,12 @@ export const SCALAR_FILTER_MAP = {
51
53
  BigFloat: 'BigFloatFilter',
52
54
  BitString: 'BitStringFilter',
53
55
  InternetAddress: 'InternetAddressFilter',
56
+ // VectorFilter provides equality/distinct operators (isNull, equalTo, etc.) for vector
57
+ // columns on Filter types. While similarity search is done via condition types
58
+ // (e.g., embeddingNearby on ContactCondition), postgraphile-plugin-connection-filter
59
+ // may still auto-generate a filter type for vector columns. Without this mapping,
60
+ // those fields would be silently omitted from the generated SDK.
61
+ Vector: 'VectorFilter',
54
62
  FullText: 'FullTextFilter',
55
63
  Interval: 'StringFilter',
56
64
  };
@@ -274,18 +274,18 @@ export async function generate(options = {}, internalOptions) {
274
274
  ? config.cli.toolName
275
275
  : 'app';
276
276
  if (docsConfig.readme) {
277
- const readme = generateCliReadme(tables, allCustomOps, toolName);
277
+ const readme = generateCliReadme(tables, allCustomOps, toolName, customOperations.typeRegistry);
278
278
  filesToWrite.push({ path: path.posix.join('cli', readme.fileName), content: readme.content });
279
279
  }
280
280
  if (docsConfig.agents) {
281
- const agents = generateCliAgentsDocs(tables, allCustomOps, toolName);
281
+ const agents = generateCliAgentsDocs(tables, allCustomOps, toolName, customOperations.typeRegistry);
282
282
  filesToWrite.push({ path: path.posix.join('cli', agents.fileName), content: agents.content });
283
283
  }
284
284
  if (docsConfig.mcp) {
285
- allMcpTools.push(...getCliMcpTools(tables, allCustomOps, toolName));
285
+ allMcpTools.push(...getCliMcpTools(tables, allCustomOps, toolName, customOperations.typeRegistry));
286
286
  }
287
287
  if (docsConfig.skills) {
288
- for (const skill of generateCliSkills(tables, allCustomOps, toolName, targetName)) {
288
+ for (const skill of generateCliSkills(tables, allCustomOps, toolName, targetName, customOperations.typeRegistry)) {
289
289
  skillsToWrite.push({ path: skill.fileName, content: skill.content });
290
290
  }
291
291
  }
@@ -574,9 +574,19 @@ export async function generateMulti(options) {
574
574
  const docsConfig = resolveDocsConfig(firstTargetDocsConfig);
575
575
  const { resolveBuiltinNames } = await import('./codegen/cli');
576
576
  const builtinNames = resolveBuiltinNames(cliTargets.map((t) => t.name), cliConfig.builtinNames);
577
+ // Merge all target type registries into a combined registry for docs generation
578
+ const combinedRegistry = new Map();
579
+ for (const t of cliTargets) {
580
+ if (t.typeRegistry) {
581
+ for (const [key, value] of t.typeRegistry) {
582
+ combinedRegistry.set(key, value);
583
+ }
584
+ }
585
+ }
577
586
  const docsInput = {
578
587
  toolName,
579
588
  builtinNames,
589
+ registry: combinedRegistry.size > 0 ? combinedRegistry : undefined,
580
590
  targets: cliTargets.map((t) => ({
581
591
  name: t.name,
582
592
  endpoint: t.endpoint,
@@ -153,6 +153,7 @@ export interface DocsConfig {
153
153
  export interface BuiltinNames {
154
154
  auth?: string;
155
155
  context?: string;
156
+ config?: string;
156
157
  }
157
158
  /**
158
159
  * CLI generation configuration
@@ -285,6 +286,14 @@ export interface GraphQLSDKConfigTarget {
285
286
  * @default true
286
287
  */
287
288
  comments?: boolean;
289
+ /**
290
+ * Generate condition types and condition arguments on findMany/findFirst.
291
+ * PostGraphile's native `condition` argument provides simple equality filtering.
292
+ * Set to `true` to include condition types and arguments in generated code.
293
+ * Set to `false` to omit them (e.g., when using connection-filter's `filter` argument exclusively).
294
+ * @default false
295
+ */
296
+ condition?: boolean;
288
297
  };
289
298
  /**
290
299
  * Whether to generate ORM client
@@ -61,6 +61,7 @@ export const DEFAULT_CONFIG = {
61
61
  codegen: {
62
62
  skipQueryField: true,
63
63
  comments: true,
64
+ condition: false,
64
65
  },
65
66
  orm: false,
66
67
  reactQuery: false,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@constructive-io/graphql-codegen",
3
- "version": "4.9.0",
3
+ "version": "4.13.0",
4
4
  "description": "GraphQL SDK generator for Constructive databases with React Query hooks",
5
5
  "keywords": [
6
6
  "graphql",
@@ -56,25 +56,25 @@
56
56
  "@0no-co/graphql.web": "^1.1.2",
57
57
  "@babel/generator": "^7.29.1",
58
58
  "@babel/types": "^7.29.0",
59
- "@constructive-io/graphql-query": "^3.3.4",
60
- "@constructive-io/graphql-types": "^3.1.2",
59
+ "@constructive-io/graphql-query": "^3.5.3",
60
+ "@constructive-io/graphql-types": "^3.3.2",
61
61
  "@inquirerer/utils": "^3.3.1",
62
- "@pgpmjs/core": "^6.4.2",
62
+ "@pgpmjs/core": "^6.6.2",
63
63
  "ajv": "^8.18.0",
64
64
  "deepmerge": "^4.3.1",
65
65
  "find-and-require-package-json": "^0.9.1",
66
- "gql-ast": "^3.1.1",
67
- "graphile-schema": "^1.3.4",
66
+ "gql-ast": "^3.3.2",
67
+ "graphile-schema": "^1.5.3",
68
68
  "graphql": "^16.13.0",
69
69
  "inflekt": "^0.3.3",
70
70
  "inquirerer": "^4.5.2",
71
71
  "jiti": "^2.6.1",
72
72
  "komoji": "^0.8.1",
73
73
  "oxfmt": "^0.36.0",
74
- "pg-cache": "^3.1.1",
75
- "pg-env": "^1.5.0",
76
- "pgsql-client": "^3.3.2",
77
- "pgsql-seed": "^2.3.2",
74
+ "pg-cache": "^3.3.2",
75
+ "pg-env": "^1.7.2",
76
+ "pgsql-client": "^3.5.2",
77
+ "pgsql-seed": "^2.5.2",
78
78
  "undici": "^7.22.0"
79
79
  },
80
80
  "peerDependencies": {
@@ -101,5 +101,5 @@
101
101
  "tsx": "^4.21.0",
102
102
  "typescript": "^5.9.3"
103
103
  },
104
- "gitHead": "f1f05509f0168497f17c3dbbddb131d6aa5310e1"
104
+ "gitHead": "67218366027bc6370e07a1b96d8bf25adba18f42"
105
105
  }
package/types/config.d.ts CHANGED
@@ -153,6 +153,7 @@ export interface DocsConfig {
153
153
  export interface BuiltinNames {
154
154
  auth?: string;
155
155
  context?: string;
156
+ config?: string;
156
157
  }
157
158
  /**
158
159
  * CLI generation configuration
@@ -285,6 +286,14 @@ export interface GraphQLSDKConfigTarget {
285
286
  * @default true
286
287
  */
287
288
  comments?: boolean;
289
+ /**
290
+ * Generate condition types and condition arguments on findMany/findFirst.
291
+ * PostGraphile's native `condition` argument provides simple equality filtering.
292
+ * Set to `true` to include condition types and arguments in generated code.
293
+ * Set to `false` to omit them (e.g., when using connection-filter's `filter` argument exclusively).
294
+ * @default false
295
+ */
296
+ condition?: boolean;
288
297
  };
289
298
  /**
290
299
  * Whether to generate ORM client
package/types/config.js CHANGED
@@ -70,6 +70,7 @@ exports.DEFAULT_CONFIG = {
70
70
  codegen: {
71
71
  skipQueryField: true,
72
72
  comments: true,
73
+ condition: false,
73
74
  },
74
75
  orm: false,
75
76
  reactQuery: false,