@vladimirdev635/gql-codegen 0.0.92 → 0.0.94

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.
@@ -33,7 +33,10 @@ function generateZodInputField(scalarsMapping, field) {
33
33
  return invokeMethod(invokeMethod(expression, 'nullable', []), 'optional', []);
34
34
  }
35
35
  function isFieldLazy(spec) {
36
- return spec.type._type === 'InputType';
36
+ switch (spec._type) {
37
+ case 'literal': return spec.type._type === 'InputType';
38
+ case 'array': return isFieldLazy(spec.type);
39
+ }
37
40
  }
38
41
  export function generateInputTypeDefinitionFields(scalarsMapping, fields) {
39
42
  return Object.entries(fields).map(([name, field]) => {
@@ -3,6 +3,7 @@ import { getScalarSpecFromMapping } from './scalars/mapping.js';
3
3
  import ts from 'typescript';
4
4
  import { generateSchemaName, generateZodInferTypeAlias } from './shared.js';
5
5
  import { assertUnreachable } from '../../../../../utils.js';
6
+ import { invokeMethod } from '../../../shared.js';
6
7
  function generateZodObjectTypeSpec(scalarsMapping, type) {
7
8
  switch (type._type) {
8
9
  case 'Enum': {
@@ -50,7 +51,10 @@ export function generateZodObjectFieldSpec(scalarsMapping, field) {
50
51
  assertUnreachable(field.spec);
51
52
  }
52
53
  }
53
- return expression;
54
+ if (!field.nullable) {
55
+ return expression;
56
+ }
57
+ return invokeMethod(invokeMethod(expression, 'nullable', []), 'optional', []);
54
58
  }
55
59
  const lazyTypes = [
56
60
  'ObjectType',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vladimirdev635/gql-codegen",
3
- "version": "0.0.92",
3
+ "version": "0.0.94",
4
4
  "type": "module",
5
5
  "main": "./index.js",
6
6
  "types": "./index.d.ts",
package/schema/utils.js CHANGED
@@ -100,10 +100,10 @@ function extractFieldFromNonCallableFieldSpec(spec) {
100
100
  ;
101
101
  function buildInputFieldSpec(spec) {
102
102
  switch (spec._type) {
103
- case 'literal': return spec.type._type;
103
+ case 'literal': return spec.type.name;
104
104
  case 'array':
105
105
  return '[' + buildInputFieldSpec(spec.type) +
106
- spec.nullable ? '' : '!' + ']';
106
+ (spec.nullable ? '' : '!') + ']';
107
107
  }
108
108
  }
109
109
  function buildInputField(field) {
@@ -117,11 +117,11 @@ function buildInputField(field) {
117
117
  ;
118
118
  function extractTypeFromObjectFieldSpec(spec) {
119
119
  switch (spec._type) {
120
- case 'literal':
120
+ case 'literal': return spec.type;
121
121
  case 'array':
122
- return spec.type;
122
+ return extractTypeFromObjectFieldSpec(spec.type);
123
123
  case 'callable':
124
- return spec.returnType.type;
124
+ return extractTypeFromObjectFieldSpec(spec.returnType);
125
125
  }
126
126
  }
127
127
  function generateObjectFragmentSpecText(object, onlyField = null) {
@@ -157,28 +157,24 @@ function generateUnionFragmentSpecText(union) {
157
157
  }
158
158
  export function buildSelectionFromFieldSpec(spec) {
159
159
  const type = extractTypeFromObjectFieldSpec(spec);
160
- if (type._type === 'array')
161
- return buildSelectionFromFieldSpec(type.type);
162
- if (type._type !== 'literal')
163
- throw new Error('Unexpected condition');
164
- switch (type.type._type) {
160
+ switch (type._type) {
165
161
  case 'Enum':
166
162
  case 'Scalar': return null;
167
163
  case 'ObjectType':
168
164
  case 'InterfaceType':
169
165
  return {
170
166
  _type: 'ObjectFragmentSpec',
171
- name: type.type.name,
167
+ name: type.name,
172
168
  selections: [
173
- { _type: 'SpreadSelection', fragment: type.type.name }
169
+ { _type: 'SpreadSelection', fragment: type.name }
174
170
  ]
175
171
  };
176
172
  case 'Union':
177
173
  return {
178
174
  _type: 'UnionFragmentSpec',
179
- name: type.type.name,
175
+ name: type.name,
180
176
  selections: [
181
- { _type: 'SpreadSelection', fragment: type.type.name }
177
+ { _type: 'SpreadSelection', fragment: type.name }
182
178
  ]
183
179
  };
184
180
  }