@vladimirdev635/gql-codegen 0.0.97 → 0.0.99
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.
- package/actors/ts/formatters/eslint/index.d.ts +1 -1
- package/actors/ts/formatters/index.d.ts +1 -0
- package/actors/ts/formatters/index.js +1 -0
- package/actors/ts/formatters/oxfmt/formatter.d.ts +3 -0
- package/actors/ts/formatters/oxfmt/formatter.js +20 -0
- package/actors/ts/formatters/oxfmt/index.d.ts +2 -0
- package/actors/ts/formatters/oxfmt/index.js +1 -0
- package/actors/ts/formatters/oxfmt/types.d.ts +20 -0
- package/actors/ts/formatters/oxfmt/types.js +1 -0
- package/actors/ts/gql-client/actor.js +1 -1
- package/actors/ts/gql-client/generators/main.js +25 -21
- package/actors/ts/gql-client/index.d.ts +1 -1
- package/actors/ts/gql-client/index.js +1 -1
- package/actors/ts/gql-client-react/actor.js +1 -1
- package/actors/ts/gql-client-react/generators/main.js +20 -14
- package/actors/ts/gql-client-react/index.d.ts +1 -1
- package/actors/ts/gql-client-react/index.js +1 -1
- package/actors/ts/graphql/actor.js +1 -1
- package/actors/ts/graphql/generators/client/fragments.js +53 -31
- package/actors/ts/graphql/generators/client/main.js +5 -5
- package/actors/ts/graphql/generators/client/operations.js +29 -13
- package/actors/ts/graphql/generators/main.js +2 -2
- package/actors/ts/graphql/generators/server/enums.js +1 -1
- package/actors/ts/graphql/generators/server/inputs.js +11 -8
- package/actors/ts/graphql/generators/server/main.js +13 -10
- package/actors/ts/graphql/generators/server/objects.js +15 -11
- package/actors/ts/graphql/generators/server/scalars/additional.js +23 -5
- package/actors/ts/graphql/generators/server/scalars/index.d.ts +1 -1
- package/actors/ts/graphql/generators/server/scalars/index.js +1 -1
- package/actors/ts/graphql/generators/server/scalars/mapping.js +1 -1
- package/actors/ts/graphql/generators/server/shared.js +6 -4
- package/actors/ts/graphql/generators/server/unions.js +5 -5
- package/actors/ts/graphql/generators/shared.js +6 -6
- package/actors/ts/graphql/index.d.ts +1 -1
- package/actors/ts/graphql/index.js +1 -1
- package/actors/ts/utils.js +3 -3
- package/config.d.ts +0 -2
- package/index.d.ts +1 -1
- package/index.js +1 -1
- package/package.json +23 -21
- package/schema/client/argument.d.ts +2 -2
- package/schema/client/argument.js +3 -3
- package/schema/client/directive.d.ts +2 -2
- package/schema/client/directive.js +1 -1
- package/schema/client/fragment.d.ts +5 -5
- package/schema/client/fragment.js +10 -10
- package/schema/client/operation.d.ts +3 -3
- package/schema/client/root.d.ts +6 -6
- package/schema/client/root.js +1 -1
- package/schema/server.d.ts +36 -36
- package/schema/server.js +13 -13
- package/schema/shared.d.ts +6 -6
- package/schema/shared.js +7 -7
- package/schema/test-client.json +52031 -1
- package/schema/test-server.json +38289 -1
- package/schema/utils.js +78 -67
- package/utils.js +1 -2
package/schema/utils.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* eslint-disable max-lines */
|
|
2
2
|
import { readFileSync } from 'fs';
|
|
3
|
-
import { serverSchema } from './server.js';
|
|
3
|
+
import { serverSchema, } from './server.js';
|
|
4
4
|
import { clientSchema } from './client/root.js';
|
|
5
5
|
import { exec } from 'node:child_process';
|
|
6
6
|
export function loadSchemaFromFile(p, schema) {
|
|
@@ -18,12 +18,10 @@ export async function loadServerSchemaFromGQLSubprocess(gqlPath = 'gql', gqlArgs
|
|
|
18
18
|
if (err !== null) {
|
|
19
19
|
reject(err);
|
|
20
20
|
}
|
|
21
|
-
;
|
|
22
21
|
if (stderr !== '') {
|
|
23
22
|
reject(err);
|
|
24
23
|
}
|
|
25
|
-
;
|
|
26
|
-
resolve(stdout.split('\n').filter(s => s !== '')[0]);
|
|
24
|
+
resolve(stdout.split('\n').filter((s) => s !== '')[0]);
|
|
27
25
|
});
|
|
28
26
|
});
|
|
29
27
|
return serverSchema.parse(JSON.parse(output));
|
|
@@ -34,12 +32,10 @@ export async function loadRootSchemaFromGQLSubprocess(gqlPath = 'gql', gqlArgs =
|
|
|
34
32
|
if (err !== null) {
|
|
35
33
|
reject(err);
|
|
36
34
|
}
|
|
37
|
-
;
|
|
38
35
|
if (stderr !== '') {
|
|
39
36
|
reject(err);
|
|
40
37
|
}
|
|
41
|
-
;
|
|
42
|
-
resolve(stdout.split('\n').filter(s => s !== ''));
|
|
38
|
+
resolve(stdout.split('\n').filter((s) => s !== ''));
|
|
43
39
|
});
|
|
44
40
|
});
|
|
45
41
|
return {
|
|
@@ -60,11 +56,11 @@ function buildFragmentSpecFromUnion(union) {
|
|
|
60
56
|
_type: 'ObjectFragmentSpec',
|
|
61
57
|
name: item,
|
|
62
58
|
selections: [
|
|
63
|
-
{ _type: 'SpreadSelection', fragment: item }
|
|
64
|
-
]
|
|
65
|
-
}
|
|
66
|
-
}))
|
|
67
|
-
]
|
|
59
|
+
{ _type: 'SpreadSelection', fragment: item },
|
|
60
|
+
],
|
|
61
|
+
},
|
|
62
|
+
})),
|
|
63
|
+
],
|
|
68
64
|
};
|
|
69
65
|
}
|
|
70
66
|
function generateFragmentText(name, specText) {
|
|
@@ -75,35 +71,38 @@ export function buildFragmentFromUnion(union) {
|
|
|
75
71
|
spec: buildFragmentSpecFromUnion(union),
|
|
76
72
|
sourceText: generateFragmentText(union.name,
|
|
77
73
|
// eslint-disable-next-line no-use-before-define
|
|
78
|
-
generateUnionFragmentSpecText(union))
|
|
74
|
+
generateUnionFragmentSpecText(union)),
|
|
79
75
|
};
|
|
80
76
|
}
|
|
81
|
-
;
|
|
82
77
|
function extractFieldFromObjectLiteralFieldSpec(spec) {
|
|
83
78
|
switch (spec.type._type) {
|
|
84
|
-
case 'Enum':
|
|
85
|
-
|
|
79
|
+
case 'Enum':
|
|
80
|
+
return '';
|
|
81
|
+
case 'Scalar':
|
|
82
|
+
return '';
|
|
86
83
|
case 'Union':
|
|
87
84
|
case 'ObjectType':
|
|
88
85
|
case 'InterfaceType':
|
|
89
86
|
return '{...' + spec.type.name + '}';
|
|
90
87
|
}
|
|
91
|
-
;
|
|
92
88
|
}
|
|
93
|
-
;
|
|
94
89
|
function extractFieldFromNonCallableFieldSpec(spec) {
|
|
95
90
|
switch (spec._type) {
|
|
96
|
-
case 'literal':
|
|
97
|
-
|
|
91
|
+
case 'literal':
|
|
92
|
+
return extractFieldFromObjectLiteralFieldSpec(spec);
|
|
93
|
+
case 'array':
|
|
94
|
+
return extractFieldFromNonCallableFieldSpec(spec.type);
|
|
98
95
|
}
|
|
99
96
|
}
|
|
100
|
-
;
|
|
101
97
|
function buildInputFieldSpec(spec) {
|
|
102
98
|
switch (spec._type) {
|
|
103
|
-
case 'literal':
|
|
99
|
+
case 'literal':
|
|
100
|
+
return spec.type.name;
|
|
104
101
|
case 'array':
|
|
105
|
-
return '[' +
|
|
106
|
-
(spec.
|
|
102
|
+
return ('[' +
|
|
103
|
+
buildInputFieldSpec(spec.type) +
|
|
104
|
+
(spec.nullable ? '' : '!') +
|
|
105
|
+
']');
|
|
107
106
|
}
|
|
108
107
|
}
|
|
109
108
|
function buildInputField(field) {
|
|
@@ -111,13 +110,12 @@ function buildInputField(field) {
|
|
|
111
110
|
if (!field.nullable) {
|
|
112
111
|
str += '!';
|
|
113
112
|
}
|
|
114
|
-
;
|
|
115
113
|
return str;
|
|
116
114
|
}
|
|
117
|
-
;
|
|
118
115
|
function extractTypeFromObjectFieldSpec(spec) {
|
|
119
116
|
switch (spec._type) {
|
|
120
|
-
case 'literal':
|
|
117
|
+
case 'literal':
|
|
118
|
+
return spec.type;
|
|
121
119
|
case 'array':
|
|
122
120
|
return extractTypeFromObjectFieldSpec(spec.type);
|
|
123
121
|
case 'callable':
|
|
@@ -125,7 +123,8 @@ function extractTypeFromObjectFieldSpec(spec) {
|
|
|
125
123
|
}
|
|
126
124
|
}
|
|
127
125
|
function generateObjectFragmentSpecText(object, onlyField = null) {
|
|
128
|
-
return '{' +
|
|
126
|
+
return ('{' +
|
|
127
|
+
(onlyField !== null ? '' : '__typename ') +
|
|
129
128
|
Object.entries(object.fields)
|
|
130
129
|
.filter(([name]) => onlyField === null || onlyField === name)
|
|
131
130
|
// eslint-disable-next-line array-callback-return
|
|
@@ -140,58 +139,65 @@ function generateObjectFragmentSpecText(object, onlyField = null) {
|
|
|
140
139
|
const fieldText = extractFieldFromNonCallableFieldSpec(field.spec.returnType);
|
|
141
140
|
return [
|
|
142
141
|
`${name}(` +
|
|
143
|
-
Object.keys(field.spec.arguments)
|
|
142
|
+
Object.keys(field.spec.arguments)
|
|
143
|
+
.map((aName) => `${aName}:$${aName}`)
|
|
144
|
+
.join(',') +
|
|
144
145
|
')',
|
|
145
|
-
fieldText
|
|
146
|
+
fieldText,
|
|
146
147
|
].join('');
|
|
147
148
|
}
|
|
149
|
+
default:
|
|
150
|
+
throw new Error('Unreachable');
|
|
148
151
|
}
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
'}';
|
|
152
|
+
})
|
|
153
|
+
.join(' ') +
|
|
154
|
+
'}');
|
|
152
155
|
}
|
|
153
156
|
function generateUnionFragmentSpecText(union) {
|
|
154
157
|
return ('{__typename' +
|
|
155
|
-
Object.keys(union.items)
|
|
158
|
+
Object.keys(union.items)
|
|
159
|
+
.map((item) => `... on ${item}{...${item}}`)
|
|
160
|
+
.join(' ') +
|
|
156
161
|
'}');
|
|
157
162
|
}
|
|
158
163
|
export function buildSelectionFromFieldSpec(spec) {
|
|
159
164
|
const type = extractTypeFromObjectFieldSpec(spec);
|
|
160
165
|
switch (type._type) {
|
|
161
166
|
case 'Enum':
|
|
162
|
-
case 'Scalar':
|
|
167
|
+
case 'Scalar':
|
|
168
|
+
return null;
|
|
163
169
|
case 'ObjectType':
|
|
164
170
|
case 'InterfaceType':
|
|
165
171
|
return {
|
|
166
172
|
_type: 'ObjectFragmentSpec',
|
|
167
173
|
name: type.name,
|
|
168
|
-
selections: [
|
|
169
|
-
{ _type: 'SpreadSelection', fragment: type.name }
|
|
170
|
-
]
|
|
174
|
+
selections: [{ _type: 'SpreadSelection', fragment: type.name }],
|
|
171
175
|
};
|
|
172
176
|
case 'Union':
|
|
173
177
|
return {
|
|
174
178
|
_type: 'UnionFragmentSpec',
|
|
175
179
|
name: type.name,
|
|
176
|
-
selections: [
|
|
177
|
-
{ _type: 'SpreadSelection', fragment: type.name }
|
|
178
|
-
]
|
|
180
|
+
selections: [{ _type: 'SpreadSelection', fragment: type.name }],
|
|
179
181
|
};
|
|
180
182
|
}
|
|
181
183
|
}
|
|
182
184
|
export function buildArgumentFromFieldSpec(spec) {
|
|
183
185
|
switch (spec._type) {
|
|
184
186
|
case 'array':
|
|
185
|
-
case 'literal':
|
|
187
|
+
case 'literal':
|
|
188
|
+
return {};
|
|
186
189
|
case 'callable':
|
|
187
|
-
return Object.fromEntries(Object.keys(spec.arguments).map(name => {
|
|
188
|
-
return [
|
|
190
|
+
return Object.fromEntries(Object.keys(spec.arguments).map((name) => {
|
|
191
|
+
return [
|
|
192
|
+
name,
|
|
193
|
+
{
|
|
189
194
|
name,
|
|
190
195
|
value: {
|
|
191
196
|
_type: 'ref',
|
|
192
|
-
name: '$' + name
|
|
193
|
-
}
|
|
194
|
-
}
|
|
197
|
+
name: '$' + name,
|
|
198
|
+
},
|
|
199
|
+
},
|
|
200
|
+
];
|
|
195
201
|
}));
|
|
196
202
|
}
|
|
197
203
|
}
|
|
@@ -201,27 +207,25 @@ export function buildFieldSelection(name, field) {
|
|
|
201
207
|
name,
|
|
202
208
|
alias: name,
|
|
203
209
|
arguments: buildArgumentFromFieldSpec(field.spec),
|
|
204
|
-
selection: buildSelectionFromFieldSpec(field.spec)
|
|
210
|
+
selection: buildSelectionFromFieldSpec(field.spec),
|
|
205
211
|
};
|
|
206
212
|
}
|
|
207
|
-
;
|
|
208
213
|
function buildFragmentSpecFromObject(object) {
|
|
209
214
|
return {
|
|
210
215
|
_type: 'ObjectFragmentSpec',
|
|
211
216
|
name: object.name,
|
|
212
217
|
selections: [
|
|
213
218
|
{ _type: 'TypenameField', alias: null },
|
|
214
|
-
...Object.entries(object.fields).map(([name, field]) => buildFieldSelection(name, field))
|
|
215
|
-
]
|
|
219
|
+
...Object.entries(object.fields).map(([name, field]) => buildFieldSelection(name, field)),
|
|
220
|
+
],
|
|
216
221
|
};
|
|
217
222
|
}
|
|
218
223
|
export function buildFragmentFromObject(object) {
|
|
219
224
|
return {
|
|
220
225
|
spec: buildFragmentSpecFromObject(object),
|
|
221
|
-
sourceText: generateFragmentText(object.name, generateObjectFragmentSpecText(object))
|
|
226
|
+
sourceText: generateFragmentText(object.name, generateObjectFragmentSpecText(object)),
|
|
222
227
|
};
|
|
223
228
|
}
|
|
224
|
-
;
|
|
225
229
|
function buildParameters(field) {
|
|
226
230
|
const parameters = {};
|
|
227
231
|
if (field._type === 'callable') {
|
|
@@ -235,13 +239,18 @@ function buildOperationSourceText(opType, object, name, fieldName, spec) {
|
|
|
235
239
|
let argumentsText = '';
|
|
236
240
|
if (spec._type === 'callable') {
|
|
237
241
|
argumentsText += '(';
|
|
238
|
-
argumentsText += Object.entries(spec.arguments)
|
|
242
|
+
argumentsText += Object.entries(spec.arguments)
|
|
243
|
+
.map(([aName, arg]) => {
|
|
239
244
|
return `$${aName}:${buildInputField(arg)}`;
|
|
240
|
-
})
|
|
245
|
+
})
|
|
246
|
+
.join(',');
|
|
241
247
|
argumentsText += ')';
|
|
242
248
|
}
|
|
243
|
-
return opType.toLowerCase() +
|
|
244
|
-
|
|
249
|
+
return (opType.toLowerCase() +
|
|
250
|
+
' ' +
|
|
251
|
+
name +
|
|
252
|
+
argumentsText +
|
|
253
|
+
generateObjectFragmentSpecText(object, fieldName));
|
|
245
254
|
}
|
|
246
255
|
function buildFragmentSpecFromField(opType, name, field) {
|
|
247
256
|
return {
|
|
@@ -253,9 +262,9 @@ function buildFragmentSpecFromField(opType, name, field) {
|
|
|
253
262
|
name,
|
|
254
263
|
alias: name,
|
|
255
264
|
arguments: buildArgumentFromFieldSpec(field.spec),
|
|
256
|
-
selection: buildSelectionFromFieldSpec(field.spec)
|
|
257
|
-
}
|
|
258
|
-
]
|
|
265
|
+
selection: buildSelectionFromFieldSpec(field.spec),
|
|
266
|
+
},
|
|
267
|
+
],
|
|
259
268
|
};
|
|
260
269
|
}
|
|
261
270
|
function buildOperation(type, object, fieldName, field) {
|
|
@@ -293,18 +302,20 @@ function buildOperations(server) {
|
|
|
293
302
|
export function buildClientSchemaFromServerSchema(server) {
|
|
294
303
|
return {
|
|
295
304
|
fragments: Object.fromEntries([
|
|
296
|
-
...Object.values(server.unions)
|
|
297
|
-
.map(union => [
|
|
305
|
+
...Object.values(server.unions).map((union) => [
|
|
298
306
|
union.name,
|
|
299
|
-
buildFragmentFromUnion(union)
|
|
307
|
+
buildFragmentFromUnion(union),
|
|
300
308
|
]),
|
|
301
309
|
...Object.values(server.objects)
|
|
302
|
-
.filter(object => object.name !== 'Query' &&
|
|
310
|
+
.filter((object) => object.name !== 'Query' &&
|
|
303
311
|
object.name !== 'Mutation' &&
|
|
304
|
-
object.name !== 'Subscription')
|
|
312
|
+
object.name !== 'Subscription')
|
|
313
|
+
.map((object) => [
|
|
314
|
+
object.name,
|
|
315
|
+
buildFragmentFromObject(object),
|
|
316
|
+
]),
|
|
305
317
|
]),
|
|
306
318
|
operations: buildOperations(server),
|
|
307
|
-
directives: {}
|
|
319
|
+
directives: {},
|
|
308
320
|
};
|
|
309
321
|
}
|
|
310
|
-
;
|
package/utils.js
CHANGED
|
@@ -7,8 +7,7 @@ export function entries(obj) {
|
|
|
7
7
|
export function fromEntries(eList) {
|
|
8
8
|
return Object.fromEntries(eList);
|
|
9
9
|
}
|
|
10
|
-
;
|
|
11
10
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
12
11
|
export function assertUnreachable(_) {
|
|
13
|
-
throw new Error(
|
|
12
|
+
throw new Error("Didn't expect to get here");
|
|
14
13
|
}
|