@apollo/federation-internals 2.1.4 → 2.2.0

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 (53) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/buildSchema.d.ts.map +1 -1
  3. package/dist/buildSchema.js +7 -0
  4. package/dist/buildSchema.js.map +1 -1
  5. package/dist/error.d.ts +1 -0
  6. package/dist/error.d.ts.map +1 -1
  7. package/dist/error.js +2 -0
  8. package/dist/error.js.map +1 -1
  9. package/dist/extractSubgraphsFromSupergraph.d.ts.map +1 -1
  10. package/dist/extractSubgraphsFromSupergraph.js +16 -2
  11. package/dist/extractSubgraphsFromSupergraph.js.map +1 -1
  12. package/dist/federation.d.ts +1 -1
  13. package/dist/federation.d.ts.map +1 -1
  14. package/dist/federation.js +76 -34
  15. package/dist/federation.js.map +1 -1
  16. package/dist/federationSpec.d.ts +24 -16
  17. package/dist/federationSpec.d.ts.map +1 -1
  18. package/dist/federationSpec.js +94 -68
  19. package/dist/federationSpec.js.map +1 -1
  20. package/dist/introspection.d.ts +1 -0
  21. package/dist/introspection.d.ts.map +1 -1
  22. package/dist/introspection.js +11 -1
  23. package/dist/introspection.js.map +1 -1
  24. package/dist/operations.d.ts +1 -0
  25. package/dist/operations.d.ts.map +1 -1
  26. package/dist/operations.js +21 -2
  27. package/dist/operations.js.map +1 -1
  28. package/dist/schemaUpgrader.d.ts +7 -1
  29. package/dist/schemaUpgrader.d.ts.map +1 -1
  30. package/dist/schemaUpgrader.js +23 -3
  31. package/dist/schemaUpgrader.js.map +1 -1
  32. package/dist/utils.d.ts +1 -0
  33. package/dist/utils.d.ts.map +1 -1
  34. package/dist/utils.js +13 -1
  35. package/dist/utils.js.map +1 -1
  36. package/dist/validate.js +4 -1
  37. package/dist/validate.js.map +1 -1
  38. package/package.json +3 -3
  39. package/src/__tests__/extractSubgraphsFromSupergraph.test.ts +64 -1
  40. package/src/__tests__/schemaUpgrader.test.ts +3 -3
  41. package/src/__tests__/subgraphValidation.test.ts +60 -1
  42. package/src/buildSchema.ts +9 -0
  43. package/src/error.ts +7 -0
  44. package/src/extractSubgraphsFromSupergraph.ts +17 -2
  45. package/src/federation.ts +109 -49
  46. package/src/federationSpec.ts +102 -75
  47. package/src/introspection.ts +10 -0
  48. package/src/operations.ts +28 -3
  49. package/src/schemaUpgrader.ts +24 -2
  50. package/src/utils.ts +15 -0
  51. package/src/validate.ts +9 -2
  52. package/tsconfig.test.tsbuildinfo +1 -1
  53. package/tsconfig.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apollo/federation-internals",
3
- "version": "2.1.4",
3
+ "version": "2.2.0",
4
4
  "description": "Apollo Federation internal utilities",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -20,7 +20,7 @@
20
20
  "author": "Apollo <packages@apollographql.com>",
21
21
  "license": "SEE LICENSE IN ./LICENSE",
22
22
  "engines": {
23
- "node": ">=12.13.0"
23
+ "node": ">=14.15.0"
24
24
  },
25
25
  "dependencies": {
26
26
  "chalk": "^4.1.0",
@@ -32,5 +32,5 @@
32
32
  "peerDependencies": {
33
33
  "graphql": "^16.5.0"
34
34
  },
35
- "gitHead": "413ef7911df24c26a1150157e42539f6d4b710df"
35
+ "gitHead": "4c48e89fa215a24aacb02d68f83d2cbc7b0f5193"
36
36
  }
@@ -1,4 +1,4 @@
1
- import { buildSupergraphSchema, extractSubgraphsFromSupergraph } from "..";
1
+ import { buildSupergraphSchema, extractSubgraphsFromSupergraph, InputObjectType } from "..";
2
2
 
3
3
 
4
4
  test('handles types having no fields referenced by other objects in a subgraph correctly', () => {
@@ -534,6 +534,69 @@ test('handles unions types having no members in a subgraph correctly', () => {
534
534
  expect(a.type('D')).toBeDefined();
535
535
  })
536
536
 
537
+ test('preserves default values of input object fields', () => {
538
+ const supergraph = `
539
+ schema
540
+ @link(url: "https://specs.apollo.dev/link/v1.0")
541
+ @link(url: "https://specs.apollo.dev/join/v0.2", for: EXECUTION)
542
+ {
543
+ query: Query
544
+ }
545
+
546
+ directive @join__field(graph: join__Graph!, requires: join__FieldSet, provides: join__FieldSet, type: String, external: Boolean, override: String, usedOverridden: Boolean) repeatable on FIELD_DEFINITION | INPUT_FIELD_DEFINITION
547
+
548
+ directive @join__graph(name: String!, url: String!) on ENUM_VALUE
549
+
550
+ directive @join__implements(graph: join__Graph!, interface: String!) repeatable on OBJECT | INTERFACE
551
+
552
+ directive @join__type(graph: join__Graph!, key: join__FieldSet, extension: Boolean! = false, resolvable: Boolean! = true) repeatable on OBJECT | INTERFACE | UNION | ENUM | INPUT_OBJECT | SCALAR
553
+
554
+ directive @link(url: String, as: String, for: link__Purpose, import: [link__Import]) repeatable on SCHEMA
555
+
556
+ input Input
557
+ @join__type(graph: SERVICE)
558
+ {
559
+ a: Int! = 1234
560
+ }
561
+
562
+ scalar join__FieldSet
563
+
564
+ enum join__Graph {
565
+ SERVICE @join__graph(name: "service", url: "")
566
+ }
567
+
568
+ scalar link__Import
569
+
570
+ enum link__Purpose {
571
+ """
572
+ \`SECURITY\` features provide metadata necessary to securely resolve fields.
573
+ """
574
+ SECURITY
575
+
576
+ """
577
+ \`EXECUTION\` features provide metadata necessary for operation execution.
578
+ """
579
+ EXECUTION
580
+ }
581
+
582
+ type Query
583
+ @join__type(graph: SERVICE)
584
+ {
585
+ field(input: Input!): String
586
+ }
587
+ `;
588
+
589
+ const schema = buildSupergraphSchema(supergraph)[0];
590
+ const subgraphs = extractSubgraphsFromSupergraph(schema);
591
+
592
+ const subgraph = subgraphs.get('service')
593
+ const inputType = subgraph?.schema.type('Input') as InputObjectType | undefined
594
+ const inputFieldA = inputType?.field('a')
595
+
596
+ expect(inputFieldA?.defaultValue).toBe(1234)
597
+ })
598
+
599
+
537
600
  test('throw meaningful error for invalid federation directive fieldSet', () => {
538
601
  const supergraph = `
539
602
  schema
@@ -1,4 +1,4 @@
1
- import { FEDERATION2_LINK_WTH_FULL_IMPORTS } from '..';
1
+ import { FEDERATION2_LINK_WITH_FULL_IMPORTS } from '..';
2
2
  import { ObjectType } from '../definitions';
3
3
  import { buildSubgraph, Subgraphs } from '../federation';
4
4
  import { UpgradeChangeID, UpgradeResult, upgradeSubgraphsIfNecessary } from '../schemaUpgrader';
@@ -92,7 +92,7 @@ test('upgrade complex schema', () => {
92
92
 
93
93
  expect(res.subgraphs?.get('s1')?.toString()).toMatchString(`
94
94
  schema
95
- ${FEDERATION2_LINK_WTH_FULL_IMPORTS}
95
+ ${FEDERATION2_LINK_WITH_FULL_IMPORTS}
96
96
  {
97
97
  query: Query
98
98
  }
@@ -148,7 +148,7 @@ test('update federation directive non-string arguments', () => {
148
148
 
149
149
  expect(res.subgraphs?.get('s')?.toString()).toMatchString(`
150
150
  schema
151
- ${FEDERATION2_LINK_WTH_FULL_IMPORTS}
151
+ ${FEDERATION2_LINK_WITH_FULL_IMPORTS}
152
152
  {
153
153
  query: Query
154
154
  }
@@ -668,7 +668,7 @@ describe('@core/@link handling', () => {
668
668
 
669
669
  directive @federation__extends on OBJECT | INTERFACE
670
670
 
671
- directive @federation__shareable on OBJECT | FIELD_DEFINITION
671
+ directive @federation__shareable repeatable on OBJECT | FIELD_DEFINITION
672
672
 
673
673
  directive @federation__inaccessible on FIELD_DEFINITION | OBJECT | INTERFACE | UNION | ARGUMENT_DEFINITION | SCALAR | ENUM | ENUM_VALUE | INPUT_OBJECT | INPUT_FIELD_DEFINITION
674
674
 
@@ -1126,3 +1126,62 @@ describe('federation 1 schema', () => {
1126
1126
  ]]);
1127
1127
  });
1128
1128
  })
1129
+
1130
+ describe('@shareable', () => {
1131
+ it('can only be applied to fields of object types', () => {
1132
+ const doc = gql`
1133
+ interface I {
1134
+ a: Int @shareable
1135
+ }
1136
+ `;
1137
+
1138
+ expect(buildForErrors(doc)).toStrictEqual([[
1139
+ 'INVALID_SHAREABLE_USAGE',
1140
+ '[S] Invalid use of @shareable on field "I.a": only object type fields can be marked with @shareable'
1141
+ ]]);
1142
+ });
1143
+
1144
+ it('rejects duplicate @shareable on the same definition declaration', () => {
1145
+ const doc = gql`
1146
+ type E @shareable @key(fields: "id") @shareable {
1147
+ id: ID!
1148
+ a: Int
1149
+ }
1150
+ `;
1151
+
1152
+ expect(buildForErrors(doc)).toStrictEqual([[
1153
+ 'INVALID_SHAREABLE_USAGE',
1154
+ '[S] Invalid duplicate application of @shareable on the same type declaration of "E": @shareable is only repeatable on types so it can be used simultaneously on a type definition and its extensions, but it should not be duplicated on the same definition/extension declaration'
1155
+ ]]);
1156
+ });
1157
+
1158
+ it('rejects duplicate @shareable on the same extension declaration', () => {
1159
+ const doc = gql`
1160
+ type E @shareable {
1161
+ id: ID!
1162
+ a: Int
1163
+ }
1164
+
1165
+ extend type E @shareable @shareable {
1166
+ b: Int
1167
+ }
1168
+ `;
1169
+ expect(buildForErrors(doc)).toStrictEqual([[
1170
+ 'INVALID_SHAREABLE_USAGE',
1171
+ '[S] Invalid duplicate application of @shareable on the same type declaration of "E": @shareable is only repeatable on types so it can be used simultaneously on a type definition and its extensions, but it should not be duplicated on the same definition/extension declaration'
1172
+ ]]);
1173
+ });
1174
+
1175
+ it('rejects duplicate @shareable on a field', () => {
1176
+ const doc = gql`
1177
+ type E {
1178
+ a: Int @shareable @shareable
1179
+ }
1180
+ `;
1181
+
1182
+ expect(buildForErrors(doc)).toStrictEqual([[
1183
+ 'INVALID_SHAREABLE_USAGE',
1184
+ '[S] Invalid duplicate application of @shareable on field "E.a": @shareable is only repeatable on types so it can be used simultaneously on a type definition and its extensions, but it should not be duplicated on the same definition/extension declaration'
1185
+ ]]);
1186
+ });
1187
+ });
@@ -55,6 +55,7 @@ import {
55
55
  NamedSchemaElement,
56
56
  } from "./definitions";
57
57
  import { ERRORS, errorCauses, withModifiedErrorNodes } from "./error";
58
+ import { introspectionTypeNames } from "./introspection";
58
59
 
59
60
  function buildValue(value?: ValueNode): any {
60
61
  return value ? valueFromASTUntyped(value) : undefined;
@@ -210,6 +211,10 @@ function buildNamedTypeAndDirectivesShallow(documentNode: DocumentNode, schema:
210
211
  case 'UnionTypeDefinition':
211
212
  case 'EnumTypeDefinition':
212
213
  case 'InputObjectTypeDefinition':
214
+ // Like graphql-js, we just silently ignore definitions for introspection types
215
+ if (introspectionTypeNames.includes(definitionNode.name.value)) {
216
+ continue;
217
+ }
213
218
  typeDefinitions.push(definitionNode);
214
219
  let type = schema.type(definitionNode.name.value);
215
220
  // Note that the type may already exists due to an extension having been processed first, but we know we
@@ -240,6 +245,10 @@ function buildNamedTypeAndDirectivesShallow(documentNode: DocumentNode, schema:
240
245
  case 'UnionTypeExtension':
241
246
  case 'EnumTypeExtension':
242
247
  case 'InputObjectTypeExtension':
248
+ // Like graphql-js, we just silently ignore definitions for introspection types
249
+ if (introspectionTypeNames.includes(definitionNode.name.value)) {
250
+ continue;
251
+ }
243
252
  typeExtensions.push(definitionNode);
244
253
  const existing = schema.type(definitionNode.name.value);
245
254
  // In theory, graphQL does not let you have an extension without a corresponding definition. However,
package/src/error.ts CHANGED
@@ -405,6 +405,12 @@ const INVALID_FIELD_SHARING = makeCodeDefinition(
405
405
  'A field that is non-shareable in at least one subgraph is resolved by multiple subgraphs.'
406
406
  );
407
407
 
408
+ const INVALID_SHAREABLE_USAGE = makeCodeDefinition(
409
+ 'INVALID_SHAREABLE_USAGE',
410
+ 'The `@shareable` federation directive is used in an invalid way.',
411
+ { addedIn: '2.1.2' },
412
+ );
413
+
408
414
  const INVALID_LINK_DIRECTIVE_USAGE = makeCodeDefinition(
409
415
  'INVALID_LINK_DIRECTIVE_USAGE',
410
416
  'An application of the @link directive is invalid/does not respect the specification.'
@@ -581,6 +587,7 @@ export const ERRORS = {
581
587
  EXTERNAL_MISSING_ON_BASE,
582
588
  INTERFACE_FIELD_IMPLEM_TYPE_MISMATCH,
583
589
  INVALID_FIELD_SHARING,
590
+ INVALID_SHAREABLE_USAGE,
584
591
  INVALID_LINK_DIRECTIVE_USAGE,
585
592
  INVALID_LINK_IDENTIFIER,
586
593
  LINK_IMPORT_NAME_MISMATCH,
@@ -329,9 +329,13 @@ export function extractSubgraphsFromSupergraph(supergraph: Schema): Subgraphs {
329
329
  const ownerApplications = ownerDirective ? type.appliedDirectivesOf(ownerDirective) : [];
330
330
  if (!ownerApplications.length) {
331
331
  const fieldBaseType = baseType(field.type!);
332
+ const isShareable = isObjectType(type) && subgraphs.values().filter((s) => s.schema.type(type.name)).length > 1;
332
333
  for (const subgraph of subgraphs) {
333
334
  if (subgraph.schema.type(fieldBaseType.name)) {
334
- addSubgraphField(field, subgraph);
335
+ const subgraphField = addSubgraphField(field, subgraph);
336
+ if (subgraphField && isShareable) {
337
+ subgraphField.applyDirective(subgraph.metadata().shareableDirective());
338
+ }
335
339
  }
336
340
  }
337
341
  } else {
@@ -341,6 +345,12 @@ export function extractSubgraphsFromSupergraph(supergraph: Schema): Subgraphs {
341
345
  assert(subgraphField, () => `Found join__owner directive on ${type} but no corresponding join__type`);
342
346
  }
343
347
  } else {
348
+ const isShareable = isObjectType(type)
349
+ && (fieldApplications as Directive<any, { external?: boolean, usedOverridden?: boolean }>[]).filter((application) => {
350
+ const args = application.arguments();
351
+ return !args.external && !args.usedOverridden;
352
+ }).length > 1;
353
+
344
354
  for (const application of fieldApplications) {
345
355
  const args = application.arguments();
346
356
  const subgraph = subgraphs.get(graphEnumNameToSubgraphName.get(args.graph)!)!;
@@ -368,6 +378,9 @@ export function extractSubgraphsFromSupergraph(supergraph: Schema): Subgraphs {
368
378
  if (args.override) {
369
379
  subgraphField.applyDirective(subgraph.metadata().overrideDirective(), {'from': args.override});
370
380
  }
381
+ if (isShareable && !args.external && !args.usedOverridden) {
382
+ subgraphField.applyDirective(subgraph.metadata().shareableDirective());
383
+ }
371
384
  }
372
385
  }
373
386
  }
@@ -595,7 +608,9 @@ function addSubgraphInputField(
595
608
  const copiedType = encodedType
596
609
  ? decodeType(encodedType, subgraph.schema, subgraph.name)
597
610
  : copyType(supergraphField.type!, subgraph.schema, subgraph.name);
598
- return (subgraphType as InputObjectType).addField(supergraphField.name, copiedType);
611
+ const field = (subgraphType as InputObjectType).addField(supergraphField.name, copiedType);
612
+ field.defaultValue = supergraphField.defaultValue
613
+ return field
599
614
  } else {
600
615
  return undefined;
601
616
  }