@apollo/federation-internals 2.11.2 → 2.11.4

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.
Files changed (44) hide show
  1. package/dist/argumentCompositionStrategies.d.ts +6 -0
  2. package/dist/argumentCompositionStrategies.d.ts.map +1 -1
  3. package/dist/argumentCompositionStrategies.js +77 -0
  4. package/dist/argumentCompositionStrategies.js.map +1 -1
  5. package/dist/buildSchema.d.ts.map +1 -1
  6. package/dist/buildSchema.js +42 -2
  7. package/dist/buildSchema.js.map +1 -1
  8. package/dist/directiveAndTypeSpecification.d.ts +8 -3
  9. package/dist/directiveAndTypeSpecification.d.ts.map +1 -1
  10. package/dist/directiveAndTypeSpecification.js +2 -1
  11. package/dist/directiveAndTypeSpecification.js.map +1 -1
  12. package/dist/error.d.ts +2 -0
  13. package/dist/error.d.ts.map +1 -1
  14. package/dist/error.js +4 -0
  15. package/dist/error.js.map +1 -1
  16. package/dist/federation.d.ts.map +1 -1
  17. package/dist/federation.js +37 -8
  18. package/dist/federation.js.map +1 -1
  19. package/dist/specs/authenticatedSpec.d.ts +2 -0
  20. package/dist/specs/authenticatedSpec.d.ts.map +1 -1
  21. package/dist/specs/authenticatedSpec.js +3 -0
  22. package/dist/specs/authenticatedSpec.js.map +1 -1
  23. package/dist/specs/connectSpec.d.ts +0 -3
  24. package/dist/specs/connectSpec.d.ts.map +1 -1
  25. package/dist/specs/connectSpec.js +228 -60
  26. package/dist/specs/connectSpec.js.map +1 -1
  27. package/dist/specs/policySpec.d.ts +4 -0
  28. package/dist/specs/policySpec.d.ts.map +1 -1
  29. package/dist/specs/policySpec.js +4 -1
  30. package/dist/specs/policySpec.js.map +1 -1
  31. package/dist/specs/requiresScopesSpec.d.ts +4 -0
  32. package/dist/specs/requiresScopesSpec.d.ts.map +1 -1
  33. package/dist/specs/requiresScopesSpec.js +4 -1
  34. package/dist/specs/requiresScopesSpec.js.map +1 -1
  35. package/package.json +1 -1
  36. package/src/argumentCompositionStrategies.ts +114 -2
  37. package/src/buildSchema.ts +51 -0
  38. package/src/directiveAndTypeSpecification.ts +8 -2
  39. package/src/error.ts +14 -0
  40. package/src/federation.ts +45 -8
  41. package/src/specs/authenticatedSpec.ts +5 -0
  42. package/src/specs/connectSpec.ts +364 -122
  43. package/src/specs/policySpec.ts +6 -2
  44. package/src/specs/requiresScopesSpec.ts +6 -2
@@ -6,6 +6,10 @@ const coreSpec_1 = require("./coreSpec");
6
6
  const definitions_1 = require("../definitions");
7
7
  const knownCoreFeatures_1 = require("../knownCoreFeatures");
8
8
  const directiveAndTypeSpecification_1 = require("../directiveAndTypeSpecification");
9
+ const error_1 = require("../error");
10
+ const types_1 = require("../types");
11
+ const utils_1 = require("../utils");
12
+ const values_1 = require("../values");
9
13
  exports.connectIdentity = 'https://specs.apollo.dev/connect';
10
14
  const CONNECT = 'connect';
11
15
  const SOURCE = 'source';
@@ -20,10 +24,165 @@ class ConnectSpecDefinition extends coreSpec_1.FeatureDefinition {
20
24
  constructor(version, minimumFederationVersion) {
21
25
  super(new coreSpec_1.FeatureUrl(exports.connectIdentity, CONNECT, version), minimumFederationVersion);
22
26
  this.minimumFederationVersion = minimumFederationVersion;
27
+ function lookupFeatureTypeInSchema(name, kind, schema, feature) {
28
+ (0, utils_1.assert)(feature, `Shouldn't be added without being attached to a @connect spec`);
29
+ const typeName = feature.typeNameInSchema(name);
30
+ const type = schema.typeOfKind(typeName, kind);
31
+ (0, utils_1.assert)(type, () => `Expected "${typeName}" to be defined`);
32
+ return type;
33
+ }
34
+ this.registerType((0, directiveAndTypeSpecification_1.createScalarTypeSpecification)({ name: URL_PATH_TEMPLATE }));
35
+ this.registerType((0, directiveAndTypeSpecification_1.createScalarTypeSpecification)({ name: JSON_SELECTION }));
36
+ this.registerType(createInputObjectTypeSpecification({
37
+ name: CONNECTOR_ERRORS,
38
+ inputFieldsFct: (schema, feature) => {
39
+ const jsonSelectionType = lookupFeatureTypeInSchema(JSON_SELECTION, 'ScalarType', schema, feature);
40
+ return [
41
+ {
42
+ name: 'message',
43
+ type: jsonSelectionType
44
+ },
45
+ {
46
+ name: 'extensions',
47
+ type: jsonSelectionType
48
+ },
49
+ ];
50
+ }
51
+ }));
52
+ this.registerType(createInputObjectTypeSpecification({
53
+ name: HTTP_HEADER_MAPPING,
54
+ inputFieldsFct: (schema) => [
55
+ {
56
+ name: 'name',
57
+ type: new definitions_1.NonNullType(schema.stringType())
58
+ },
59
+ {
60
+ name: 'from',
61
+ type: schema.stringType()
62
+ },
63
+ {
64
+ name: 'value',
65
+ type: schema.stringType()
66
+ },
67
+ ]
68
+ }));
69
+ this.registerType(createInputObjectTypeSpecification({
70
+ name: CONNECT_BATCH,
71
+ inputFieldsFct: (schema) => [
72
+ {
73
+ name: 'maxSize',
74
+ type: schema.intType()
75
+ }
76
+ ]
77
+ }));
78
+ this.registerType(createInputObjectTypeSpecification({
79
+ name: SOURCE_HTTP,
80
+ inputFieldsFct: (schema, feature) => {
81
+ const jsonSelectionType = lookupFeatureTypeInSchema(JSON_SELECTION, 'ScalarType', schema, feature);
82
+ const httpHeaderMappingType = lookupFeatureTypeInSchema(HTTP_HEADER_MAPPING, 'InputObjectType', schema, feature);
83
+ return [
84
+ {
85
+ name: 'baseURL',
86
+ type: new definitions_1.NonNullType(schema.stringType())
87
+ },
88
+ {
89
+ name: 'headers',
90
+ type: new definitions_1.ListType(new definitions_1.NonNullType(httpHeaderMappingType))
91
+ },
92
+ {
93
+ name: 'path',
94
+ type: jsonSelectionType
95
+ },
96
+ {
97
+ name: 'queryParams',
98
+ type: jsonSelectionType
99
+ }
100
+ ];
101
+ }
102
+ }));
103
+ this.registerType(createInputObjectTypeSpecification({
104
+ name: CONNECT_HTTP,
105
+ inputFieldsFct: (schema, feature) => {
106
+ const urlPathTemplateType = lookupFeatureTypeInSchema(URL_PATH_TEMPLATE, 'ScalarType', schema, feature);
107
+ const jsonSelectionType = lookupFeatureTypeInSchema(JSON_SELECTION, 'ScalarType', schema, feature);
108
+ const httpHeaderMappingType = lookupFeatureTypeInSchema(HTTP_HEADER_MAPPING, 'InputObjectType', schema, feature);
109
+ return [
110
+ {
111
+ name: 'GET',
112
+ type: urlPathTemplateType
113
+ },
114
+ {
115
+ name: 'POST',
116
+ type: urlPathTemplateType
117
+ },
118
+ {
119
+ name: 'PUT',
120
+ type: urlPathTemplateType
121
+ },
122
+ {
123
+ name: 'PATCH',
124
+ type: urlPathTemplateType
125
+ },
126
+ {
127
+ name: 'DELETE',
128
+ type: urlPathTemplateType
129
+ },
130
+ {
131
+ name: 'body',
132
+ type: jsonSelectionType
133
+ },
134
+ {
135
+ name: 'headers',
136
+ type: new definitions_1.ListType(new definitions_1.NonNullType(httpHeaderMappingType))
137
+ },
138
+ {
139
+ name: 'path',
140
+ type: jsonSelectionType
141
+ },
142
+ {
143
+ name: 'queryParams',
144
+ type: jsonSelectionType
145
+ },
146
+ ];
147
+ }
148
+ }));
23
149
  this.registerDirective((0, directiveAndTypeSpecification_1.createDirectiveSpecification)({
24
150
  name: CONNECT,
25
- locations: [graphql_1.DirectiveLocation.FIELD_DEFINITION],
151
+ locations: [graphql_1.DirectiveLocation.FIELD_DEFINITION, graphql_1.DirectiveLocation.OBJECT],
26
152
  repeatable: true,
153
+ args: [
154
+ {
155
+ name: 'source',
156
+ type: (schema) => schema.stringType()
157
+ },
158
+ {
159
+ name: 'http',
160
+ type: (schema, feature) => {
161
+ const connectHttpType = lookupFeatureTypeInSchema(CONNECT_HTTP, 'InputObjectType', schema, feature);
162
+ return new definitions_1.NonNullType(connectHttpType);
163
+ }
164
+ },
165
+ {
166
+ name: 'batch',
167
+ type: (schema, feature) => lookupFeatureTypeInSchema(CONNECT_BATCH, 'InputObjectType', schema, feature)
168
+ },
169
+ {
170
+ name: 'errors',
171
+ type: (schema, feature) => lookupFeatureTypeInSchema(CONNECTOR_ERRORS, 'InputObjectType', schema, feature)
172
+ },
173
+ {
174
+ name: 'selection',
175
+ type: (schema, feature) => {
176
+ const jsonSelectionType = lookupFeatureTypeInSchema(JSON_SELECTION, 'ScalarType', schema, feature);
177
+ return new definitions_1.NonNullType(jsonSelectionType);
178
+ }
179
+ },
180
+ {
181
+ name: 'entity',
182
+ type: (schema) => schema.booleanType(),
183
+ defaultValue: false
184
+ }
185
+ ],
27
186
  composes: false,
28
187
  }));
29
188
  this.registerDirective((0, directiveAndTypeSpecification_1.createDirectiveSpecification)({
@@ -31,66 +190,24 @@ class ConnectSpecDefinition extends coreSpec_1.FeatureDefinition {
31
190
  locations: [graphql_1.DirectiveLocation.SCHEMA],
32
191
  repeatable: true,
33
192
  composes: false,
193
+ args: [
194
+ {
195
+ name: 'name',
196
+ type: (schema) => new definitions_1.NonNullType(schema.stringType())
197
+ },
198
+ {
199
+ name: 'http',
200
+ type: (schema, feature) => {
201
+ const sourceHttpType = lookupFeatureTypeInSchema(SOURCE_HTTP, 'InputObjectType', schema, feature);
202
+ return new definitions_1.NonNullType(sourceHttpType);
203
+ }
204
+ },
205
+ {
206
+ name: 'errors',
207
+ type: (schema, feature) => lookupFeatureTypeInSchema(CONNECTOR_ERRORS, 'InputObjectType', schema, feature)
208
+ }
209
+ ]
34
210
  }));
35
- this.registerType((0, directiveAndTypeSpecification_1.createScalarTypeSpecification)({ name: URL_PATH_TEMPLATE }));
36
- this.registerType((0, directiveAndTypeSpecification_1.createScalarTypeSpecification)({ name: JSON_SELECTION }));
37
- this.registerType({ name: CONNECT_HTTP, checkOrAdd: () => [] });
38
- this.registerType({ name: SOURCE_HTTP, checkOrAdd: () => [] });
39
- this.registerType({ name: HTTP_HEADER_MAPPING, checkOrAdd: () => [] });
40
- }
41
- addElementsToSchema(schema) {
42
- const URLPathTemplate = this.addScalarType(schema, URL_PATH_TEMPLATE);
43
- const JSONSelection = this.addScalarType(schema, JSON_SELECTION);
44
- const connect = this.addDirective(schema, CONNECT).addLocations(graphql_1.DirectiveLocation.FIELD_DEFINITION, graphql_1.DirectiveLocation.OBJECT);
45
- connect.repeatable = true;
46
- connect.addArgument(SOURCE, schema.stringType());
47
- const HTTPHeaderMapping = schema.addType(new definitions_1.InputObjectType(this.typeNameInSchema(schema, HTTP_HEADER_MAPPING)));
48
- HTTPHeaderMapping.addField(new definitions_1.InputFieldDefinition('name')).type =
49
- new definitions_1.NonNullType(schema.stringType());
50
- HTTPHeaderMapping.addField(new definitions_1.InputFieldDefinition('from')).type =
51
- schema.stringType();
52
- HTTPHeaderMapping.addField(new definitions_1.InputFieldDefinition('value')).type =
53
- schema.stringType();
54
- const ConnectHTTP = schema.addType(new definitions_1.InputObjectType(this.typeNameInSchema(schema, CONNECT_HTTP)));
55
- ConnectHTTP.addField(new definitions_1.InputFieldDefinition('GET')).type =
56
- URLPathTemplate;
57
- ConnectHTTP.addField(new definitions_1.InputFieldDefinition('POST')).type =
58
- URLPathTemplate;
59
- ConnectHTTP.addField(new definitions_1.InputFieldDefinition('PUT')).type =
60
- URLPathTemplate;
61
- ConnectHTTP.addField(new definitions_1.InputFieldDefinition('PATCH')).type =
62
- URLPathTemplate;
63
- ConnectHTTP.addField(new definitions_1.InputFieldDefinition('DELETE')).type =
64
- URLPathTemplate;
65
- ConnectHTTP.addField(new definitions_1.InputFieldDefinition('body')).type = JSONSelection;
66
- ConnectHTTP.addField(new definitions_1.InputFieldDefinition('headers')).type =
67
- new definitions_1.ListType(new definitions_1.NonNullType(HTTPHeaderMapping));
68
- ConnectHTTP.addField(new definitions_1.InputFieldDefinition('path')).type = JSONSelection;
69
- ConnectHTTP.addField(new definitions_1.InputFieldDefinition('queryParams')).type =
70
- JSONSelection;
71
- connect.addArgument('http', new definitions_1.NonNullType(ConnectHTTP));
72
- const ConnectBatch = schema.addType(new definitions_1.InputObjectType(this.typeNameInSchema(schema, CONNECT_BATCH)));
73
- ConnectBatch.addField(new definitions_1.InputFieldDefinition('maxSize')).type = schema.intType();
74
- connect.addArgument('batch', ConnectBatch);
75
- const ConnectorErrors = schema.addType(new definitions_1.InputObjectType(this.typeNameInSchema(schema, CONNECTOR_ERRORS)));
76
- ConnectorErrors.addField(new definitions_1.InputFieldDefinition('message')).type = JSONSelection;
77
- ConnectorErrors.addField(new definitions_1.InputFieldDefinition('extensions')).type = JSONSelection;
78
- connect.addArgument('errors', ConnectorErrors);
79
- connect.addArgument('selection', new definitions_1.NonNullType(JSONSelection));
80
- connect.addArgument('entity', schema.booleanType(), false);
81
- const source = this.addDirective(schema, SOURCE).addLocations(graphql_1.DirectiveLocation.SCHEMA);
82
- source.repeatable = true;
83
- source.addArgument('name', new definitions_1.NonNullType(schema.stringType()));
84
- const SourceHTTP = schema.addType(new definitions_1.InputObjectType(this.typeNameInSchema(schema, SOURCE_HTTP)));
85
- SourceHTTP.addField(new definitions_1.InputFieldDefinition('baseURL')).type =
86
- new definitions_1.NonNullType(schema.stringType());
87
- SourceHTTP.addField(new definitions_1.InputFieldDefinition('headers')).type =
88
- new definitions_1.ListType(new definitions_1.NonNullType(HTTPHeaderMapping));
89
- SourceHTTP.addField(new definitions_1.InputFieldDefinition('path')).type = JSONSelection;
90
- SourceHTTP.addField(new definitions_1.InputFieldDefinition('queryParams')).type = JSONSelection;
91
- source.addArgument('http', new definitions_1.NonNullType(SourceHTTP));
92
- source.addArgument('errors', ConnectorErrors);
93
- return [];
94
211
  }
95
212
  get defaultCorePurpose() {
96
213
  return 'EXECUTION';
@@ -101,4 +218,55 @@ exports.CONNECT_VERSIONS = new coreSpec_1.FeatureDefinitions(exports.connectIden
101
218
  .add(new ConnectSpecDefinition(new coreSpec_1.FeatureVersion(0, 1), new coreSpec_1.FeatureVersion(2, 10)))
102
219
  .add(new ConnectSpecDefinition(new coreSpec_1.FeatureVersion(0, 2), new coreSpec_1.FeatureVersion(2, 10)));
103
220
  (0, knownCoreFeatures_1.registerKnownFeature)(exports.CONNECT_VERSIONS);
221
+ function createInputObjectTypeSpecification({ name, inputFieldsFct, }) {
222
+ return {
223
+ name,
224
+ checkOrAdd: (schema, feature, asBuiltIn) => {
225
+ var _a;
226
+ const actualName = (_a = feature === null || feature === void 0 ? void 0 : feature.typeNameInSchema(name)) !== null && _a !== void 0 ? _a : name;
227
+ const expectedFields = inputFieldsFct(schema, feature);
228
+ const existing = schema.type(actualName);
229
+ if (existing) {
230
+ let errors = (0, directiveAndTypeSpecification_1.ensureSameTypeKind)('InputObjectType', existing);
231
+ if (errors.length > 0) {
232
+ return errors;
233
+ }
234
+ (0, utils_1.assert)((0, definitions_1.isInputObjectType)(existing), 'Should be an input object type');
235
+ for (const { name: fieldName, type, defaultValue } of expectedFields) {
236
+ const existingField = existing.field(fieldName);
237
+ if (!existingField) {
238
+ if ((0, definitions_1.isNonNullType)(type) && defaultValue === undefined) {
239
+ errors.push(error_1.ERRORS.TYPE_DEFINITION_INVALID.err(`Invalid definition for type ${name}: missing required input field "${fieldName}"`, { nodes: existing.sourceAST }));
240
+ }
241
+ continue;
242
+ }
243
+ let existingType = existingField.type;
244
+ if ((0, definitions_1.isNonNullType)(existingType) && !(0, definitions_1.isNonNullType)(type)) {
245
+ existingType = existingType.ofType;
246
+ }
247
+ if (!(0, types_1.sameType)(type, existingType)) {
248
+ errors.push(error_1.ERRORS.TYPE_DEFINITION_INVALID.err(`Invalid definition for type ${name}: input field "${fieldName}" should have type "${type}" but found type "${existingField.type}"`, { nodes: existingField.sourceAST }));
249
+ }
250
+ else if (!(0, values_1.valueEquals)(defaultValue, existingField.defaultValue)) {
251
+ errors.push(error_1.ERRORS.TYPE_DEFINITION_INVALID.err(`Invalid definition type ${name}: input field "${fieldName}" should have default value ${(0, values_1.valueToString)(defaultValue)} but found default value ${(0, values_1.valueToString)(existingField.defaultValue)}`, { nodes: existingField.sourceAST }));
252
+ }
253
+ }
254
+ for (const existingField of existing.fields()) {
255
+ if (!expectedFields.some((field) => field.name === existingField.name)) {
256
+ errors.push(error_1.ERRORS.TYPE_DEFINITION_INVALID.err(`Invalid definition for type ${name}: unknown/unsupported input field "${existingField.name}"`, { nodes: existingField.sourceAST }));
257
+ }
258
+ }
259
+ return errors;
260
+ }
261
+ else {
262
+ const createdType = schema.addType(new definitions_1.InputObjectType(actualName, asBuiltIn));
263
+ for (const { name, type, defaultValue } of expectedFields) {
264
+ const newField = createdType.addField(name, type);
265
+ newField.defaultValue = defaultValue;
266
+ }
267
+ return [];
268
+ }
269
+ },
270
+ };
271
+ }
104
272
  //# sourceMappingURL=connectSpec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"connectSpec.js","sourceRoot":"","sources":["../../src/specs/connectSpec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connectSpec.js","sourceRoot":"","sources":["../../src/specs/connectSpec.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { CorePurpose, FeatureDefinition, FeatureDefinitions, FeatureVersion } from "./coreSpec";
2
+ import { DirectiveDefinition, Schema } from "../definitions";
2
3
  export declare enum PolicyTypeName {
3
4
  POLICY = "Policy"
4
5
  }
@@ -6,6 +7,9 @@ export declare class PolicySpecDefinition extends FeatureDefinition {
6
7
  static readonly directiveName = "policy";
7
8
  static readonly identity: string;
8
9
  constructor(version: FeatureVersion);
10
+ policyDirective(schema: Schema): DirectiveDefinition<{
11
+ policies: string[][];
12
+ }> | undefined;
9
13
  get defaultCorePurpose(): CorePurpose;
10
14
  }
11
15
  export declare const POLICY_VERSIONS: FeatureDefinitions<PolicySpecDefinition>;
@@ -1 +1 @@
1
- {"version":3,"file":"policySpec.d.ts","sourceRoot":"","sources":["../../src/specs/policySpec.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAElB,cAAc,EACf,MAAM,YAAY,CAAC;AAOpB,oBAAY,cAAc;IACxB,MAAM,WAAW;CAClB;AACD,qBAAa,oBAAqB,SAAQ,iBAAiB;IACzD,gBAAuB,aAAa,YAAY;IAChD,gBAAuB,QAAQ,SACoC;gBAEvD,OAAO,EAAE,cAAc;IAoCnC,IAAI,kBAAkB,IAAI,WAAW,CAEpC;CACF;AAED,eAAO,MAAM,eAAe,0CAG+B,CAAC"}
1
+ {"version":3,"file":"policySpec.d.ts","sourceRoot":"","sources":["../../src/specs/policySpec.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAElB,cAAc,EACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAC,mBAAmB,EAAyB,MAAM,EAAC,MAAM,gBAAgB,CAAC;AAMlF,oBAAY,cAAc;IACxB,MAAM,WAAW;CAClB;AACD,qBAAa,oBAAqB,SAAQ,iBAAiB;IACzD,gBAAuB,aAAa,YAAY;IAChD,gBAAuB,QAAQ,SACoC;gBAEvD,OAAO,EAAE,cAAc;IAoCnC,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAA;KAAC,CAAC,GAAG,SAAS;IAIxF,IAAI,kBAAkB,IAAI,WAAW,CAEpC;CACF;AAED,eAAO,MAAM,eAAe,0CAG+B,CAAC"}
@@ -27,7 +27,7 @@ class PolicySpecDefinition extends coreSpec_1.FeatureDefinition {
27
27
  (0, utils_1.assert)(PolicyType, () => `Expected "${policyName}" to be defined`);
28
28
  return new definitions_1.NonNullType(new definitions_1.ListType(new definitions_1.NonNullType(new definitions_1.ListType(new definitions_1.NonNullType(PolicyType)))));
29
29
  },
30
- compositionStrategy: argumentCompositionStrategies_1.ARGUMENT_COMPOSITION_STRATEGIES.UNION,
30
+ compositionStrategy: argumentCompositionStrategies_1.ARGUMENT_COMPOSITION_STRATEGIES.DNF_CONJUNCTION,
31
31
  }],
32
32
  locations: [
33
33
  graphql_1.DirectiveLocation.FIELD_DEFINITION,
@@ -40,6 +40,9 @@ class PolicySpecDefinition extends coreSpec_1.FeatureDefinition {
40
40
  supergraphSpecification: () => exports.POLICY_VERSIONS.latest(),
41
41
  }));
42
42
  }
43
+ policyDirective(schema) {
44
+ return this.directive(schema, PolicySpecDefinition.directiveName);
45
+ }
43
46
  get defaultCorePurpose() {
44
47
  return 'SECURITY';
45
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"policySpec.js","sourceRoot":"","sources":["../../src/specs/policySpec.ts"],"names":[],"mappings":";;;AAAA,qCAA4C;AAC5C,yCAMoB;AACpB,gDAAuD;AACvD,oFAA+G;AAC/G,4DAA4D;AAC5D,oFAAmF;AACnF,oCAAkC;AAElC,IAAY,cAEX;AAFD,WAAY,cAAc;IACxB,mCAAiB,CAAA;AACnB,CAAC,EAFW,cAAc,8BAAd,cAAc,QAEzB;AACD,MAAa,oBAAqB,SAAQ,4BAAiB;IAKzD,YAAY,OAAuB;QACjC,KAAK,CACH,IAAI,qBAAU,CACZ,oBAAoB,CAAC,QAAQ,EAC7B,oBAAoB,CAAC,aAAa,EAClC,OAAO,CACR,CACF,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,IAAA,6DAA6B,EAAC,EAAE,IAAI,EAAE,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAElF,IAAI,CAAC,iBAAiB,CAAC,IAAA,4DAA4B,EAAC;YAClD,IAAI,EAAE,oBAAoB,CAAC,aAAa;YACxC,IAAI,EAAE,CAAC;oBACL,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;wBACxB,IAAA,cAAM,EAAC,OAAO,EAAE,2DAA2D,CAAC,CAAC;wBAC7E,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;wBACnE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;wBAC3C,IAAA,cAAM,EAAC,UAAU,EAAE,GAAG,EAAE,CAAC,aAAa,UAAU,iBAAiB,CAAC,CAAC;wBACnE,OAAO,IAAI,yBAAW,CAAC,IAAI,sBAAQ,CAAC,IAAI,yBAAW,CAAC,IAAI,sBAAQ,CAAC,IAAI,yBAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnG,CAAC;oBACD,mBAAmB,EAAE,+DAA+B,CAAC,KAAK;iBAC3D,CAAC;YACF,SAAS,EAAE;gBACT,2BAAiB,CAAC,gBAAgB;gBAClC,2BAAiB,CAAC,MAAM;gBACxB,2BAAiB,CAAC,SAAS;gBAC3B,2BAAiB,CAAC,MAAM;gBACxB,2BAAiB,CAAC,IAAI;aACvB;YACD,QAAQ,EAAE,IAAI;YACd,uBAAuB,EAAE,GAAG,EAAE,CAAC,uBAAe,CAAC,MAAM,EAAE;SACxD,CAAC,CAAC,CAAC;IACN,CAAC;IAED,IAAI,kBAAkB;QACpB,OAAO,UAAU,CAAC;IACpB,CAAC;;AA3CH,oDA4CC;AA3CwB,kCAAa,GAAG,QAAQ,CAAC;AACzB,6BAAQ,GAC7B,4BAA4B,oBAAoB,CAAC,aAAa,EAAE,CAAC;AA2CxD,QAAA,eAAe,GAC1B,IAAI,6BAAkB,CACpB,oBAAoB,CAAC,QAAQ,CAC9B,CAAC,GAAG,CAAC,IAAI,oBAAoB,CAAC,IAAI,yBAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAE5D,IAAA,wCAAoB,EAAC,uBAAe,CAAC,CAAC"}
1
+ {"version":3,"file":"policySpec.js","sourceRoot":"","sources":["../../src/specs/policySpec.ts"],"names":[],"mappings":";;;AAAA,qCAA4C;AAC5C,yCAMoB;AACpB,gDAAkF;AAClF,oFAA+G;AAC/G,4DAA4D;AAC5D,oFAAmF;AACnF,oCAAkC;AAElC,IAAY,cAEX;AAFD,WAAY,cAAc;IACxB,mCAAiB,CAAA;AACnB,CAAC,EAFW,cAAc,8BAAd,cAAc,QAEzB;AACD,MAAa,oBAAqB,SAAQ,4BAAiB;IAKzD,YAAY,OAAuB;QACjC,KAAK,CACH,IAAI,qBAAU,CACZ,oBAAoB,CAAC,QAAQ,EAC7B,oBAAoB,CAAC,aAAa,EAClC,OAAO,CACR,CACF,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,IAAA,6DAA6B,EAAC,EAAE,IAAI,EAAE,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAElF,IAAI,CAAC,iBAAiB,CAAC,IAAA,4DAA4B,EAAC;YAClD,IAAI,EAAE,oBAAoB,CAAC,aAAa;YACxC,IAAI,EAAE,CAAC;oBACL,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;wBACxB,IAAA,cAAM,EAAC,OAAO,EAAE,2DAA2D,CAAC,CAAC;wBAC7E,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;wBACnE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;wBAC3C,IAAA,cAAM,EAAC,UAAU,EAAE,GAAG,EAAE,CAAC,aAAa,UAAU,iBAAiB,CAAC,CAAC;wBACnE,OAAO,IAAI,yBAAW,CAAC,IAAI,sBAAQ,CAAC,IAAI,yBAAW,CAAC,IAAI,sBAAQ,CAAC,IAAI,yBAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnG,CAAC;oBACD,mBAAmB,EAAE,+DAA+B,CAAC,eAAe;iBACrE,CAAC;YACF,SAAS,EAAE;gBACT,2BAAiB,CAAC,gBAAgB;gBAClC,2BAAiB,CAAC,MAAM;gBACxB,2BAAiB,CAAC,SAAS;gBAC3B,2BAAiB,CAAC,MAAM;gBACxB,2BAAiB,CAAC,IAAI;aACvB;YACD,QAAQ,EAAE,IAAI;YACd,uBAAuB,EAAE,GAAG,EAAE,CAAC,uBAAe,CAAC,MAAM,EAAE;SACxD,CAAC,CAAC,CAAC;IACN,CAAC;IAED,eAAe,CAAC,MAAc;QAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,oBAAoB,CAAC,aAAa,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,kBAAkB;QACpB,OAAO,UAAU,CAAC;IACpB,CAAC;;AA/CH,oDAgDC;AA/CwB,kCAAa,GAAG,QAAQ,CAAC;AACzB,6BAAQ,GAC7B,4BAA4B,oBAAoB,CAAC,aAAa,EAAE,CAAC;AA+CxD,QAAA,eAAe,GAC1B,IAAI,6BAAkB,CACpB,oBAAoB,CAAC,QAAQ,CAC9B,CAAC,GAAG,CAAC,IAAI,oBAAoB,CAAC,IAAI,yBAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAE5D,IAAA,wCAAoB,EAAC,uBAAe,CAAC,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { CorePurpose, FeatureDefinition, FeatureDefinitions, FeatureVersion } from "./coreSpec";
2
+ import { DirectiveDefinition, Schema } from "../definitions";
2
3
  export declare enum RequiresScopesTypeName {
3
4
  SCOPE = "Scope"
4
5
  }
@@ -6,6 +7,9 @@ export declare class RequiresScopesSpecDefinition extends FeatureDefinition {
6
7
  static readonly directiveName = "requiresScopes";
7
8
  static readonly identity: string;
8
9
  constructor(version: FeatureVersion);
10
+ requiresScopesDirective(schema: Schema): DirectiveDefinition<{
11
+ scopes: string[][];
12
+ }> | undefined;
9
13
  get defaultCorePurpose(): CorePurpose;
10
14
  }
11
15
  export declare const REQUIRES_SCOPES_VERSIONS: FeatureDefinitions<RequiresScopesSpecDefinition>;
@@ -1 +1 @@
1
- {"version":3,"file":"requiresScopesSpec.d.ts","sourceRoot":"","sources":["../../src/specs/requiresScopesSpec.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAElB,cAAc,EACf,MAAM,YAAY,CAAC;AAOpB,oBAAY,sBAAsB;IAChC,KAAK,UAAU;CAChB;AAED,qBAAa,4BAA6B,SAAQ,iBAAiB;IACjE,gBAAuB,aAAa,oBAAoB;IACxD,gBAAuB,QAAQ,SAC4C;gBAE/D,OAAO,EAAE,cAAc;IAoCnC,IAAI,kBAAkB,IAAI,WAAW,CAEpC;CACF;AAED,eAAO,MAAM,wBAAwB,kDAG8B,CAAC"}
1
+ {"version":3,"file":"requiresScopesSpec.d.ts","sourceRoot":"","sources":["../../src/specs/requiresScopesSpec.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAElB,cAAc,EACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAC,mBAAmB,EAAyB,MAAM,EAAC,MAAM,gBAAgB,CAAC;AAMlF,oBAAY,sBAAsB;IAChC,KAAK,UAAU;CAChB;AAED,qBAAa,4BAA6B,SAAQ,iBAAiB;IACjE,gBAAuB,aAAa,oBAAoB;IACxD,gBAAuB,QAAQ,SAC4C;gBAE/D,OAAO,EAAE,cAAc;IAoCnC,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAA;KAAC,CAAC,GAAG,SAAS;IAI9F,IAAI,kBAAkB,IAAI,WAAW,CAEpC;CACF;AAED,eAAO,MAAM,wBAAwB,kDAG8B,CAAC"}
@@ -27,7 +27,7 @@ class RequiresScopesSpecDefinition extends coreSpec_1.FeatureDefinition {
27
27
  (0, utils_1.assert)(scopeType, () => `Expected "${scopeName}" to be defined`);
28
28
  return new definitions_1.NonNullType(new definitions_1.ListType(new definitions_1.NonNullType(new definitions_1.ListType(new definitions_1.NonNullType(scopeType)))));
29
29
  },
30
- compositionStrategy: argumentCompositionStrategies_1.ARGUMENT_COMPOSITION_STRATEGIES.UNION,
30
+ compositionStrategy: argumentCompositionStrategies_1.ARGUMENT_COMPOSITION_STRATEGIES.DNF_CONJUNCTION,
31
31
  }],
32
32
  locations: [
33
33
  graphql_1.DirectiveLocation.FIELD_DEFINITION,
@@ -40,6 +40,9 @@ class RequiresScopesSpecDefinition extends coreSpec_1.FeatureDefinition {
40
40
  supergraphSpecification: () => exports.REQUIRES_SCOPES_VERSIONS.latest(),
41
41
  }));
42
42
  }
43
+ requiresScopesDirective(schema) {
44
+ return this.directive(schema, RequiresScopesSpecDefinition.directiveName);
45
+ }
43
46
  get defaultCorePurpose() {
44
47
  return 'SECURITY';
45
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"requiresScopesSpec.js","sourceRoot":"","sources":["../../src/specs/requiresScopesSpec.ts"],"names":[],"mappings":";;;AAAA,qCAA4C;AAC5C,yCAMoB;AACpB,gDAAuD;AACvD,oFAA+G;AAC/G,4DAA4D;AAC5D,oFAAmF;AACnF,oCAAkC;AAElC,IAAY,sBAEX;AAFD,WAAY,sBAAsB;IAChC,yCAAe,CAAA;AACjB,CAAC,EAFW,sBAAsB,sCAAtB,sBAAsB,QAEjC;AAED,MAAa,4BAA6B,SAAQ,4BAAiB;IAKjE,YAAY,OAAuB;QACjC,KAAK,CACH,IAAI,qBAAU,CACZ,4BAA4B,CAAC,QAAQ,EACrC,4BAA4B,CAAC,aAAa,EAC1C,OAAO,CACR,CACF,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,IAAA,6DAA6B,EAAC,EAAE,IAAI,EAAE,sBAAsB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAEzF,IAAI,CAAC,iBAAiB,CAAC,IAAA,4DAA4B,EAAC;YAClD,IAAI,EAAE,4BAA4B,CAAC,aAAa;YAChD,IAAI,EAAE,CAAC;oBACL,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;wBACxB,IAAA,cAAM,EAAC,OAAO,EAAE,2DAA2D,CAAC,CAAC;wBAC7E,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;wBACzE,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;wBACzC,IAAA,cAAM,EAAC,SAAS,EAAE,GAAG,EAAE,CAAC,aAAa,SAAS,iBAAiB,CAAC,CAAC;wBACjE,OAAO,IAAI,yBAAW,CAAC,IAAI,sBAAQ,CAAC,IAAI,yBAAW,CAAC,IAAI,sBAAQ,CAAC,IAAI,yBAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAClG,CAAC;oBACD,mBAAmB,EAAE,+DAA+B,CAAC,KAAK;iBAC3D,CAAC;YACF,SAAS,EAAE;gBACT,2BAAiB,CAAC,gBAAgB;gBAClC,2BAAiB,CAAC,MAAM;gBACxB,2BAAiB,CAAC,SAAS;gBAC3B,2BAAiB,CAAC,MAAM;gBACxB,2BAAiB,CAAC,IAAI;aACvB;YACD,QAAQ,EAAE,IAAI;YACd,uBAAuB,EAAE,GAAG,EAAE,CAAC,gCAAwB,CAAC,MAAM,EAAE;SACjE,CAAC,CAAC,CAAC;IACN,CAAC;IAED,IAAI,kBAAkB;QACpB,OAAO,UAAU,CAAC;IACpB,CAAC;;AA3CH,oEA4CC;AA3CwB,0CAAa,GAAG,gBAAgB,CAAC;AACjC,qCAAQ,GAC7B,4BAA4B,4BAA4B,CAAC,aAAa,EAAE,CAAC;AA2ChE,QAAA,wBAAwB,GACnC,IAAI,6BAAkB,CACpB,4BAA4B,CAAC,QAAQ,CACtC,CAAC,GAAG,CAAC,IAAI,4BAA4B,CAAC,IAAI,yBAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAEpE,IAAA,wCAAoB,EAAC,gCAAwB,CAAC,CAAC"}
1
+ {"version":3,"file":"requiresScopesSpec.js","sourceRoot":"","sources":["../../src/specs/requiresScopesSpec.ts"],"names":[],"mappings":";;;AAAA,qCAA4C;AAC5C,yCAMoB;AACpB,gDAAkF;AAClF,oFAA+G;AAC/G,4DAA4D;AAC5D,oFAAmF;AACnF,oCAAkC;AAElC,IAAY,sBAEX;AAFD,WAAY,sBAAsB;IAChC,yCAAe,CAAA;AACjB,CAAC,EAFW,sBAAsB,sCAAtB,sBAAsB,QAEjC;AAED,MAAa,4BAA6B,SAAQ,4BAAiB;IAKjE,YAAY,OAAuB;QACjC,KAAK,CACH,IAAI,qBAAU,CACZ,4BAA4B,CAAC,QAAQ,EACrC,4BAA4B,CAAC,aAAa,EAC1C,OAAO,CACR,CACF,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,IAAA,6DAA6B,EAAC,EAAE,IAAI,EAAE,sBAAsB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAEzF,IAAI,CAAC,iBAAiB,CAAC,IAAA,4DAA4B,EAAC;YAClD,IAAI,EAAE,4BAA4B,CAAC,aAAa;YAChD,IAAI,EAAE,CAAC;oBACL,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;wBACxB,IAAA,cAAM,EAAC,OAAO,EAAE,2DAA2D,CAAC,CAAC;wBAC7E,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;wBACzE,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;wBACzC,IAAA,cAAM,EAAC,SAAS,EAAE,GAAG,EAAE,CAAC,aAAa,SAAS,iBAAiB,CAAC,CAAC;wBACjE,OAAO,IAAI,yBAAW,CAAC,IAAI,sBAAQ,CAAC,IAAI,yBAAW,CAAC,IAAI,sBAAQ,CAAC,IAAI,yBAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAClG,CAAC;oBACD,mBAAmB,EAAE,+DAA+B,CAAC,eAAe;iBACrE,CAAC;YACF,SAAS,EAAE;gBACT,2BAAiB,CAAC,gBAAgB;gBAClC,2BAAiB,CAAC,MAAM;gBACxB,2BAAiB,CAAC,SAAS;gBAC3B,2BAAiB,CAAC,MAAM;gBACxB,2BAAiB,CAAC,IAAI;aACvB;YACD,QAAQ,EAAE,IAAI;YACd,uBAAuB,EAAE,GAAG,EAAE,CAAC,gCAAwB,CAAC,MAAM,EAAE;SACjE,CAAC,CAAC,CAAC;IACN,CAAC;IAED,uBAAuB,CAAC,MAAc;QACpC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,4BAA4B,CAAC,aAAa,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,kBAAkB;QACpB,OAAO,UAAU,CAAC;IACpB,CAAC;;AA/CH,oEAgDC;AA/CwB,0CAAa,GAAG,gBAAgB,CAAC;AACjC,qCAAQ,GAC7B,4BAA4B,4BAA4B,CAAC,aAAa,EAAE,CAAC;AA+ChE,QAAA,wBAAwB,GACnC,IAAI,6BAAkB,CACpB,4BAA4B,CAAC,QAAQ,CACtC,CAAC,GAAG,CAAC,IAAI,4BAA4B,CAAC,IAAI,yBAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAEpE,IAAA,wCAAoB,EAAC,gCAAwB,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apollo/federation-internals",
3
- "version": "2.11.2",
3
+ "version": "2.11.4",
4
4
  "description": "Apollo Federation internal utilities",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1,4 +1,4 @@
1
- import { InputType, NonNullType, Schema, isListType, isNonNullType } from "./definitions"
1
+ import {InputType, NonNullType, Schema, isListType, isNonNullType} from "./definitions"
2
2
  import { sameType } from "./types";
3
3
  import { valueEquals } from "./values";
4
4
 
@@ -19,6 +19,14 @@ function supportFixedTypes(types: (schema: Schema) => InputType[]): TypeSupportV
19
19
  };
20
20
  }
21
21
 
22
+ function supportAnyNonNullNestedArray(): TypeSupportValidator {
23
+ return (_, type) =>
24
+ isNonNullType(type) && isListType(type.ofType)
25
+ && isNonNullType(type.ofType.ofType) && isListType(type.ofType.ofType.ofType)
26
+ ? { valid: true }
27
+ : { valid: false, supportedMsg: 'non nullable nested list types of any type' }
28
+ }
29
+
22
30
  function supportAnyNonNullArray(): TypeSupportValidator {
23
31
  return (_, type) => isNonNullType(type) && isListType(type.ofType)
24
32
  ? { valid: true }
@@ -54,6 +62,104 @@ function unionValues(values: any[]): any {
54
62
  }, []);
55
63
  }
56
64
 
65
+ /**
66
+ * Performs conjunction of 2d arrays that represent conditions in Disjunctive Normal Form.
67
+ *
68
+ * * Each inner array is interpreted as the conjunction of the conditions in the array.
69
+ * * The top-level array is interpreted as the disjunction of the inner arrays
70
+ *
71
+ * Algorithm
72
+ * * filter out duplicate entries to limit the amount of necessary computations
73
+ * * calculate cartesian product of the arrays to find all possible combinations
74
+ * * simplify combinations by dropping duplicate conditions (i.e. p ^ p = p, p ^ q = q ^ p)
75
+ * * eliminate entries that are subsumed by others (i.e. (p ^ q) subsumes (p ^ q ^ r))
76
+ */
77
+ function dnfConjunction<T>(values: T[][][]): T[][] {
78
+ // should never be the case
79
+ if (values.length == 0) {
80
+ return [];
81
+ }
82
+
83
+ // we first filter out duplicate values from candidates
84
+ // this avoids exponential computation of exactly the same conditions
85
+ const filtered = filterNestedArrayDuplicates(values);
86
+
87
+ // initialize with first entry
88
+ let result: T[][] = filtered[0];
89
+ // perform cartesian product to find all possible entries
90
+ for (let i = 1; i < filtered.length; i++) {
91
+ const current = filtered[i];
92
+ const accumulator: T[][] = [];
93
+ const seen = new Set<string>;
94
+
95
+ for (const accElement of result) {
96
+ for (const currentElement of current) {
97
+ // filter out elements that are already present in accElement
98
+ const filteredElement = currentElement.filter((e) => !accElement.includes(e));
99
+ const candidate = [...accElement, ...filteredElement].sort();
100
+ const key = JSON.stringify(candidate);
101
+ // only add entries which has not been seen yet
102
+ if (!seen.has(key)) {
103
+ seen.add(key);
104
+ accumulator.push(candidate);
105
+ }
106
+ }
107
+ }
108
+ // Now we need to deduplicate the results. Given that
109
+ // - outer array implies OR requirements
110
+ // - inner array implies AND requirements
111
+ // We can filter out any inner arrays that fully contain other inner arrays, i.e.
112
+ // A OR B OR (A AND B) OR (A AND B AND C) => A OR B
113
+ result = deduplicateSubsumedValues(accumulator);
114
+ }
115
+ return result;
116
+ }
117
+
118
+ function filterNestedArrayDuplicates<T>(values: T[][][]): T[][][] {
119
+ const filtered: T[][][] = [];
120
+ const seen = new Set<string>;
121
+ values.forEach((value) => {
122
+ value.sort();
123
+ const key = JSON.stringify(value);
124
+ if (!seen.has(key)) {
125
+ seen.add(key);
126
+ filtered.push(value);
127
+ }
128
+ });
129
+ return filtered;
130
+ }
131
+
132
+ function deduplicateSubsumedValues<T>(values: T[][]): T[][] {
133
+ const result: T[][] = [];
134
+ // we first sort by length as the longer ones might be dropped
135
+ values.sort((first, second) => {
136
+ if (first.length < second.length) {
137
+ return -1;
138
+ } else if (first.length > second.length) {
139
+ return 1;
140
+ } else {
141
+ return 0;
142
+ }
143
+ });
144
+
145
+ for (const candidate of values) {
146
+ const entry = new Set(candidate);
147
+ let redundant = false;
148
+ for (const r of result) {
149
+ if (r.every(e => entry.has(e))) {
150
+ // if `r` is a subset of a `candidate` then it means `candidate` is redundant
151
+ redundant = true;
152
+ break;
153
+ }
154
+ }
155
+
156
+ if (!redundant) {
157
+ result.push(candidate);
158
+ }
159
+ }
160
+ return result;
161
+ }
162
+
57
163
  export const ARGUMENT_COMPOSITION_STRATEGIES = {
58
164
  MAX: {
59
165
  name: 'MAX',
@@ -95,7 +201,8 @@ export const ARGUMENT_COMPOSITION_STRATEGIES = {
95
201
  schema.booleanType(),
96
202
  new NonNullType(schema.booleanType())
97
203
  ]),
98
- mergeValues: mergeNullableValues(
204
+ mergeValues:
205
+ mergeNullableValues(
99
206
  (values: boolean[]) => values.every((v) => v)
100
207
  ),
101
208
  },
@@ -113,5 +220,10 @@ export const ARGUMENT_COMPOSITION_STRATEGIES = {
113
220
  name: 'NULLABLE_UNION',
114
221
  isTypeSupported: supportAnyArray(),
115
222
  mergeValues: mergeNullableValues(unionValues),
223
+ },
224
+ DNF_CONJUNCTION: {
225
+ name: 'DNF_CONJUNCTION',
226
+ isTypeSupported: supportAnyNonNullNestedArray(),
227
+ mergeValues: dnfConjunction
116
228
  }
117
229
  }