graphql-jerky 1.0.0 → 1.0.1
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/build/lib.cjs +34 -31
- package/build/lib.mjs +34 -31
- package/package.json +1 -1
package/build/lib.cjs
CHANGED
|
@@ -363,38 +363,41 @@ class GeneratorContext {
|
|
|
363
363
|
_renderArgumentNodes(nodes) {
|
|
364
364
|
return jen.obj(...Array.from(nodes ?? [], (arg) => jen.prop(arg.name.value, this._renderValueNode(arg.value))));
|
|
365
365
|
}
|
|
366
|
-
_renderFieldObject(type, f, inputFieldDirectives) {
|
|
367
|
-
let
|
|
368
|
-
if (
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
366
|
+
_renderFieldObject(type, f, inputFieldDirectives, noresolver) {
|
|
367
|
+
let resolveFn;
|
|
368
|
+
if (!noresolver) {
|
|
369
|
+
let resolver = this._resolversInfo[type.name]?.[f.name];
|
|
370
|
+
if (type instanceof graphql.GraphQLObjectType && !resolver) {
|
|
371
|
+
// try to find resolver in interface in the declaration order
|
|
372
|
+
for (const iface of type.getInterfaces()) {
|
|
373
|
+
if ((resolver = this._resolversInfo[iface.name]?.[f.name])) {
|
|
374
|
+
break;
|
|
375
|
+
}
|
|
373
376
|
}
|
|
374
377
|
}
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
378
|
+
resolveFn = resolver && renderSymbolReference(this._pkgs, resolver);
|
|
379
|
+
if (f.astNode?.directives?.length) {
|
|
380
|
+
// apply directives in reverse order
|
|
381
|
+
for (const directive of Array.from(f.astNode.directives).reverse()) {
|
|
382
|
+
const ref = this._fieldDirectivesInfo[directive.name.value];
|
|
383
|
+
if (!ref) {
|
|
384
|
+
continue;
|
|
385
|
+
}
|
|
386
|
+
if (!resolveFn) {
|
|
387
|
+
resolveFn = jen.arrow(jen.id("source").op(":").any).id("source").dot(f.name);
|
|
388
|
+
}
|
|
389
|
+
resolveFn = renderSymbolReference(this._pkgs, ref, `apply${pascalCase(directive.name.value)}FieldDirective`).call(resolveFn, ...(directive.arguments?.length ? [this._renderArgumentNodes(directive.arguments)] : []));
|
|
386
390
|
}
|
|
387
|
-
resolveFn = renderSymbolReference(this._pkgs, ref, `apply${pascalCase(directive.name.value)}FieldDirective`).call(resolveFn, ...(directive.arguments?.length ? [this._renderArgumentNodes(directive.arguments)] : []));
|
|
388
391
|
}
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
392
|
+
if (resolveFn) {
|
|
393
|
+
// args probably don't need to be transformed if there's no resolver
|
|
394
|
+
const argsWithDirectives = truthify(f.args?.map((arg) => this._findInputDirectiveInfoFromArgOrField(arg, inputFieldDirectives)) ?? []);
|
|
395
|
+
if (argsWithDirectives.length) {
|
|
396
|
+
resolveFn = jen.parens(jen.params(jen.prop("next", this._gql("GraphQLFieldResolver").types(jen.any, jen.any))).op(":")
|
|
397
|
+
.add(this._gql("GraphQLFieldResolver"))
|
|
398
|
+
.types(jen.any, jen.any, jen.id(type.name).dot(pascalCase(f.name + "_args")))
|
|
399
|
+
.op("=>").arrow(jen.id("source"), jen.id("args"), jen.id("context"), jen.id("info")).id("next").call(jen.id("source"), this._renderInputFieldsWithDirectives(jen.id("args"), argsWithDirectives, argsWithDirectives.length < f.args.length), jen.id("context"), jen.id("info"))).call(resolveFn);
|
|
400
|
+
}
|
|
398
401
|
}
|
|
399
402
|
}
|
|
400
403
|
// NOTE: The way subscribers work in the graphql-js is by calling `subscribe` on the top level fields, and then
|
|
@@ -419,10 +422,10 @@ class GeneratorContext {
|
|
|
419
422
|
subscriber && jen.prop("subscribe", renderSymbolReference(this._pkgs, subscriber)),
|
|
420
423
|
]));
|
|
421
424
|
}
|
|
422
|
-
_renderFieldsThunk(type, inputFieldDirectives) {
|
|
425
|
+
_renderFieldsThunk(type, inputFieldDirectives, noresolver) {
|
|
423
426
|
return jen.arrow().parens(jen.obj(...Object.values(type.getFields())
|
|
424
427
|
.sort(compareName)
|
|
425
|
-
.map((field) => jen.prop(field.name, this._renderFieldObject(type, field, inputFieldDirectives)))));
|
|
428
|
+
.map((field) => jen.prop(field.name, this._renderFieldObject(type, field, inputFieldDirectives, noresolver)))));
|
|
426
429
|
}
|
|
427
430
|
_renderOptionalGraphQLTypeType(type) {
|
|
428
431
|
if (type instanceof graphql.GraphQLNonNull) {
|
|
@@ -623,7 +626,7 @@ class GeneratorContext {
|
|
|
623
626
|
}));
|
|
624
627
|
}
|
|
625
628
|
_renderGraphQLInputObjectTypeDefinition(type, { inputFieldDirectives }) {
|
|
626
|
-
return jen.new.add(this._gql("GraphQLInputObjectType")).call(jen.obj(jen.prop("name", jen.lit(type.name)), jen.prop("fields", this._renderFieldsThunk(type, inputFieldDirectives)), ...truthify([
|
|
629
|
+
return jen.new.add(this._gql("GraphQLInputObjectType")).call(jen.obj(jen.prop("name", jen.lit(type.name)), jen.prop("fields", this._renderFieldsThunk(type, inputFieldDirectives, true)), ...truthify([
|
|
627
630
|
type.description && jen.prop("description", jen.lit(type.description)),
|
|
628
631
|
])));
|
|
629
632
|
}
|
package/build/lib.mjs
CHANGED
|
@@ -361,38 +361,41 @@ class GeneratorContext {
|
|
|
361
361
|
_renderArgumentNodes(nodes) {
|
|
362
362
|
return jen$1.obj(...Array.from(nodes ?? [], (arg) => jen$1.prop(arg.name.value, this._renderValueNode(arg.value))));
|
|
363
363
|
}
|
|
364
|
-
_renderFieldObject(type, f, inputFieldDirectives) {
|
|
365
|
-
let
|
|
366
|
-
if (
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
364
|
+
_renderFieldObject(type, f, inputFieldDirectives, noresolver) {
|
|
365
|
+
let resolveFn;
|
|
366
|
+
if (!noresolver) {
|
|
367
|
+
let resolver = this._resolversInfo[type.name]?.[f.name];
|
|
368
|
+
if (type instanceof GraphQLObjectType && !resolver) {
|
|
369
|
+
// try to find resolver in interface in the declaration order
|
|
370
|
+
for (const iface of type.getInterfaces()) {
|
|
371
|
+
if ((resolver = this._resolversInfo[iface.name]?.[f.name])) {
|
|
372
|
+
break;
|
|
373
|
+
}
|
|
371
374
|
}
|
|
372
375
|
}
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
376
|
+
resolveFn = resolver && renderSymbolReference(this._pkgs, resolver);
|
|
377
|
+
if (f.astNode?.directives?.length) {
|
|
378
|
+
// apply directives in reverse order
|
|
379
|
+
for (const directive of Array.from(f.astNode.directives).reverse()) {
|
|
380
|
+
const ref = this._fieldDirectivesInfo[directive.name.value];
|
|
381
|
+
if (!ref) {
|
|
382
|
+
continue;
|
|
383
|
+
}
|
|
384
|
+
if (!resolveFn) {
|
|
385
|
+
resolveFn = jen$1.arrow(jen$1.id("source").op(":").any).id("source").dot(f.name);
|
|
386
|
+
}
|
|
387
|
+
resolveFn = renderSymbolReference(this._pkgs, ref, `apply${pascalCase(directive.name.value)}FieldDirective`).call(resolveFn, ...(directive.arguments?.length ? [this._renderArgumentNodes(directive.arguments)] : []));
|
|
384
388
|
}
|
|
385
|
-
resolveFn = renderSymbolReference(this._pkgs, ref, `apply${pascalCase(directive.name.value)}FieldDirective`).call(resolveFn, ...(directive.arguments?.length ? [this._renderArgumentNodes(directive.arguments)] : []));
|
|
386
389
|
}
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
390
|
+
if (resolveFn) {
|
|
391
|
+
// args probably don't need to be transformed if there's no resolver
|
|
392
|
+
const argsWithDirectives = truthify(f.args?.map((arg) => this._findInputDirectiveInfoFromArgOrField(arg, inputFieldDirectives)) ?? []);
|
|
393
|
+
if (argsWithDirectives.length) {
|
|
394
|
+
resolveFn = jen$1.parens(jen$1.params(jen$1.prop("next", this._gql("GraphQLFieldResolver").types(jen$1.any, jen$1.any))).op(":")
|
|
395
|
+
.add(this._gql("GraphQLFieldResolver"))
|
|
396
|
+
.types(jen$1.any, jen$1.any, jen$1.id(type.name).dot(pascalCase(f.name + "_args")))
|
|
397
|
+
.op("=>").arrow(jen$1.id("source"), jen$1.id("args"), jen$1.id("context"), jen$1.id("info")).id("next").call(jen$1.id("source"), this._renderInputFieldsWithDirectives(jen$1.id("args"), argsWithDirectives, argsWithDirectives.length < f.args.length), jen$1.id("context"), jen$1.id("info"))).call(resolveFn);
|
|
398
|
+
}
|
|
396
399
|
}
|
|
397
400
|
}
|
|
398
401
|
// NOTE: The way subscribers work in the graphql-js is by calling `subscribe` on the top level fields, and then
|
|
@@ -417,10 +420,10 @@ class GeneratorContext {
|
|
|
417
420
|
subscriber && jen$1.prop("subscribe", renderSymbolReference(this._pkgs, subscriber)),
|
|
418
421
|
]));
|
|
419
422
|
}
|
|
420
|
-
_renderFieldsThunk(type, inputFieldDirectives) {
|
|
423
|
+
_renderFieldsThunk(type, inputFieldDirectives, noresolver) {
|
|
421
424
|
return jen$1.arrow().parens(jen$1.obj(...Object.values(type.getFields())
|
|
422
425
|
.sort(compareName)
|
|
423
|
-
.map((field) => jen$1.prop(field.name, this._renderFieldObject(type, field, inputFieldDirectives)))));
|
|
426
|
+
.map((field) => jen$1.prop(field.name, this._renderFieldObject(type, field, inputFieldDirectives, noresolver)))));
|
|
424
427
|
}
|
|
425
428
|
_renderOptionalGraphQLTypeType(type) {
|
|
426
429
|
if (type instanceof GraphQLNonNull) {
|
|
@@ -621,7 +624,7 @@ class GeneratorContext {
|
|
|
621
624
|
}));
|
|
622
625
|
}
|
|
623
626
|
_renderGraphQLInputObjectTypeDefinition(type, { inputFieldDirectives }) {
|
|
624
|
-
return jen$1.new.add(this._gql("GraphQLInputObjectType")).call(jen$1.obj(jen$1.prop("name", jen$1.lit(type.name)), jen$1.prop("fields", this._renderFieldsThunk(type, inputFieldDirectives)), ...truthify([
|
|
627
|
+
return jen$1.new.add(this._gql("GraphQLInputObjectType")).call(jen$1.obj(jen$1.prop("name", jen$1.lit(type.name)), jen$1.prop("fields", this._renderFieldsThunk(type, inputFieldDirectives, true)), ...truthify([
|
|
625
628
|
type.description && jen$1.prop("description", jen$1.lit(type.description)),
|
|
626
629
|
])));
|
|
627
630
|
}
|