@theguild/federation-composition 0.7.1 → 0.8.0-rc-20240126100745-b3250c8

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.
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RequiredArgumentOrFieldIsNotInaccessibleRule = void 0;
4
+ const graphql_1 = require("graphql");
5
+ function RequiredArgumentOrFieldIsNotInaccessibleRule(context) {
6
+ return {
7
+ InputObjectTypeField(inputObjectState, fieldState) {
8
+ if (fieldState.type.endsWith('!') && fieldState.inaccessible) {
9
+ context.reportError(new graphql_1.GraphQLError(`Input field "${inputObjectState.name}.${fieldState.name}" is @inaccessible but is a required input field of its type.`, {
10
+ extensions: {
11
+ code: 'REQUIRED_INACCESSIBLE',
12
+ },
13
+ }));
14
+ }
15
+ },
16
+ ObjectTypeFieldArg(objectState, fieldState, argState) {
17
+ if (argState.type.endsWith('!') && argState.inaccessible) {
18
+ context.reportError(new graphql_1.GraphQLError(`Argument "${objectState.name}.${fieldState.name}(${argState.name}:)" is @inaccessible but is a required argument of its field.`, {
19
+ extensions: {
20
+ code: 'REQUIRED_INACCESSIBLE',
21
+ },
22
+ }));
23
+ }
24
+ },
25
+ };
26
+ }
27
+ exports.RequiredArgumentOrFieldIsNotInaccessibleRule = RequiredArgumentOrFieldIsNotInaccessibleRule;
@@ -20,6 +20,7 @@ const only_inaccessible_children_rule_js_1 = require("./rules/only-inaccessible-
20
20
  const override_source_has_override_js_1 = require("./rules/override-source-has-override.js");
21
21
  const referenced_inaccessible_rule_js_1 = require("./rules/referenced-inaccessible-rule.js");
22
22
  const required_argument_missing_in_some_subgraph_rule_js_1 = require("./rules/required-argument-missing-in-some-subgraph-rule.js");
23
+ const required_argument_or_field_is_not_inaccessible_rule_js_1 = require("./rules/required-argument-or-field-is-not-inaccessible-rule.js");
23
24
  const required_input_field_missing_in_some_subgraph_rule_js_1 = require("./rules/required-input-field-missing-in-some-subgraph-rule.js");
24
25
  const required_query_rule_js_1 = require("./rules/required-query-rule.js");
25
26
  const satisfiablity_rule_js_1 = require("./rules/satisfiablity-rule.js");
@@ -64,6 +65,7 @@ function validateSupergraph(subgraphStates, state, __internal) {
64
65
  invalid_field_sharing_rule_js_1.InvalidFieldSharingRule,
65
66
  satisfiablity_rule_js_1.SatisfiabilityRule,
66
67
  subgraph_name_rule_js_1.SubgraphNameRule,
68
+ required_argument_or_field_is_not_inaccessible_rule_js_1.RequiredArgumentOrFieldIsNotInaccessibleRule,
67
69
  ];
68
70
  const supergraph = state.getSupergraphState();
69
71
  (0, visitor_js_1.visitSupergraphState)(supergraph, postSupergraphRules.map(rule => {
@@ -0,0 +1,23 @@
1
+ import { GraphQLError } from 'graphql';
2
+ export function RequiredArgumentOrFieldIsNotInaccessibleRule(context) {
3
+ return {
4
+ InputObjectTypeField(inputObjectState, fieldState) {
5
+ if (fieldState.type.endsWith('!') && fieldState.inaccessible) {
6
+ context.reportError(new GraphQLError(`Input field "${inputObjectState.name}.${fieldState.name}" is @inaccessible but is a required input field of its type.`, {
7
+ extensions: {
8
+ code: 'REQUIRED_INACCESSIBLE',
9
+ },
10
+ }));
11
+ }
12
+ },
13
+ ObjectTypeFieldArg(objectState, fieldState, argState) {
14
+ if (argState.type.endsWith('!') && argState.inaccessible) {
15
+ context.reportError(new GraphQLError(`Argument "${objectState.name}.${fieldState.name}(${argState.name}:)" is @inaccessible but is a required argument of its field.`, {
16
+ extensions: {
17
+ code: 'REQUIRED_INACCESSIBLE',
18
+ },
19
+ }));
20
+ }
21
+ },
22
+ };
23
+ }
@@ -17,6 +17,7 @@ import { OnlyInaccessibleChildrenRule } from './rules/only-inaccessible-children
17
17
  import { OverrideSourceHasOverrideRule } from './rules/override-source-has-override.js';
18
18
  import { ReferencedInaccessibleRule } from './rules/referenced-inaccessible-rule.js';
19
19
  import { RequiredArgumentMissingInSomeSubgraph } from './rules/required-argument-missing-in-some-subgraph-rule.js';
20
+ import { RequiredArgumentOrFieldIsNotInaccessibleRule } from './rules/required-argument-or-field-is-not-inaccessible-rule.js';
20
21
  import { RequiredInputFieldMissingInSomeSubgraphRule } from './rules/required-input-field-missing-in-some-subgraph-rule.js';
21
22
  import { RequiredQueryRule } from './rules/required-query-rule.js';
22
23
  import { SatisfiabilityRule } from './rules/satisfiablity-rule.js';
@@ -61,6 +62,7 @@ export function validateSupergraph(subgraphStates, state, __internal) {
61
62
  InvalidFieldSharingRule,
62
63
  SatisfiabilityRule,
63
64
  SubgraphNameRule,
65
+ RequiredArgumentOrFieldIsNotInaccessibleRule,
64
66
  ];
65
67
  const supergraph = state.getSupergraphState();
66
68
  visitSupergraphState(supergraph, postSupergraphRules.map(rule => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@theguild/federation-composition",
3
- "version": "0.7.1",
3
+ "version": "0.8.0-rc-20240126100745-b3250c8",
4
4
  "description": "Open Source Composition library for Apollo Federation",
5
5
  "peerDependencies": {
6
6
  "graphql": "^16.0.0"
@@ -0,0 +1,4 @@
1
+ import { SupergraphVisitorMap } from '../../composition/visitor.cjs';
2
+ import { SupergraphValidationContext } from '../validation-context.cjs';
3
+ export declare function RequiredArgumentOrFieldIsNotInaccessibleRule(context: SupergraphValidationContext): SupergraphVisitorMap;
4
+ //# sourceMappingURL=required-argument-or-field-is-not-inaccessible-rule.d.ts.map
@@ -0,0 +1,4 @@
1
+ import { SupergraphVisitorMap } from '../../composition/visitor.js';
2
+ import { SupergraphValidationContext } from '../validation-context.js';
3
+ export declare function RequiredArgumentOrFieldIsNotInaccessibleRule(context: SupergraphValidationContext): SupergraphVisitorMap;
4
+ //# sourceMappingURL=required-argument-or-field-is-not-inaccessible-rule.d.ts.map