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 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 resolver = this._resolversInfo[type.name]?.[f.name];
368
- if (type instanceof graphql.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;
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
- let 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.arrow(jen.id("source").op(":").any).id("source").dot(f.name);
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
- 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.parens(jen.params(jen.prop("next", this._gql("GraphQLFieldResolver").types(jen.any, jen.any))).op(":")
395
- .add(this._gql("GraphQLFieldResolver"))
396
- .types(jen.any, jen.any, jen.id(type.name).dot(pascalCase(f.name + "_args")))
397
- .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);
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 resolver = this._resolversInfo[type.name]?.[f.name];
366
- if (type instanceof GraphQLObjectType && !resolver) {
367
- // try to find resolver in interface in the declaration order
368
- for (const iface of type.getInterfaces()) {
369
- if ((resolver = this._resolversInfo[iface.name]?.[f.name])) {
370
- break;
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
- let resolveFn = resolver && renderSymbolReference(this._pkgs, resolver);
375
- if (f.astNode?.directives?.length) {
376
- // apply directives in reverse order
377
- for (const directive of Array.from(f.astNode.directives).reverse()) {
378
- const ref = this._fieldDirectivesInfo[directive.name.value];
379
- if (!ref) {
380
- continue;
381
- }
382
- if (!resolveFn) {
383
- resolveFn = jen$1.arrow(jen$1.id("source").op(":").any).id("source").dot(f.name);
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
- if (resolveFn) {
389
- // args probably don't need to be transformed if there's no resolver
390
- const argsWithDirectives = truthify(f.args?.map((arg) => this._findInputDirectiveInfoFromArgOrField(arg, inputFieldDirectives)) ?? []);
391
- if (argsWithDirectives.length) {
392
- resolveFn = jen$1.parens(jen$1.params(jen$1.prop("next", this._gql("GraphQLFieldResolver").types(jen$1.any, jen$1.any))).op(":")
393
- .add(this._gql("GraphQLFieldResolver"))
394
- .types(jen$1.any, jen$1.any, jen$1.id(type.name).dot(pascalCase(f.name + "_args")))
395
- .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);
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
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "graphql-jerky",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Jerky is a schema-first static graphql schema lightweight code generator.",
5
5
  "type": "module",
6
6
  "bin": "./build/bin/jerky.cjs",