@apollo/federation-internals 2.0.0-preview.4 → 2.0.0-preview.8

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 (63) hide show
  1. package/CHANGELOG.md +13 -3
  2. package/dist/buildSchema.d.ts.map +1 -1
  3. package/dist/buildSchema.js +50 -40
  4. package/dist/buildSchema.js.map +1 -1
  5. package/dist/coreSpec.d.ts +4 -2
  6. package/dist/coreSpec.d.ts.map +1 -1
  7. package/dist/coreSpec.js +107 -19
  8. package/dist/coreSpec.js.map +1 -1
  9. package/dist/definitions.d.ts +3 -0
  10. package/dist/definitions.d.ts.map +1 -1
  11. package/dist/definitions.js +72 -6
  12. package/dist/definitions.js.map +1 -1
  13. package/dist/error.d.ts +5 -0
  14. package/dist/error.d.ts.map +1 -1
  15. package/dist/error.js +29 -1
  16. package/dist/error.js.map +1 -1
  17. package/dist/federation.d.ts +4 -0
  18. package/dist/federation.d.ts.map +1 -1
  19. package/dist/federation.js +41 -11
  20. package/dist/federation.js.map +1 -1
  21. package/dist/federationSpec.d.ts +4 -0
  22. package/dist/federationSpec.d.ts.map +1 -1
  23. package/dist/federationSpec.js +20 -2
  24. package/dist/federationSpec.js.map +1 -1
  25. package/dist/inaccessibleSpec.d.ts +3 -0
  26. package/dist/inaccessibleSpec.d.ts.map +1 -1
  27. package/dist/inaccessibleSpec.js +22 -3
  28. package/dist/inaccessibleSpec.js.map +1 -1
  29. package/dist/index.d.ts +1 -0
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +1 -0
  32. package/dist/index.js.map +1 -1
  33. package/dist/joinSpec.d.ts +1 -0
  34. package/dist/joinSpec.d.ts.map +1 -1
  35. package/dist/joinSpec.js +18 -0
  36. package/dist/joinSpec.js.map +1 -1
  37. package/dist/knownCoreFeatures.d.ts +4 -0
  38. package/dist/knownCoreFeatures.d.ts.map +1 -0
  39. package/dist/knownCoreFeatures.js +16 -0
  40. package/dist/knownCoreFeatures.js.map +1 -0
  41. package/dist/tagSpec.d.ts +1 -0
  42. package/dist/tagSpec.d.ts.map +1 -1
  43. package/dist/tagSpec.js +6 -0
  44. package/dist/tagSpec.js.map +1 -1
  45. package/package.json +2 -2
  46. package/src/__tests__/coreSpec.test.ts +100 -0
  47. package/src/__tests__/definitions.test.ts +75 -0
  48. package/src/__tests__/removeInaccessibleElements.test.ts +1 -1
  49. package/src/__tests__/schemaUpgrader.test.ts +3 -2
  50. package/src/__tests__/subgraphValidation.test.ts +63 -4
  51. package/src/buildSchema.ts +97 -50
  52. package/src/coreSpec.ts +124 -21
  53. package/src/definitions.ts +99 -7
  54. package/src/error.ts +46 -0
  55. package/src/federation.ts +67 -12
  56. package/src/federationSpec.ts +27 -1
  57. package/src/inaccessibleSpec.ts +26 -10
  58. package/src/index.ts +1 -0
  59. package/src/joinSpec.ts +19 -0
  60. package/src/knownCoreFeatures.ts +13 -0
  61. package/src/tagSpec.ts +8 -0
  62. package/tsconfig.test.tsbuildinfo +1 -1
  63. package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md CHANGED
@@ -1,10 +1,20 @@
1
1
  # CHANGELOG for `@apollo/federation-internals`
2
2
 
3
- ## vNEXT
3
+ ## v2.0.0-preview.8
4
4
 
5
- > The changes noted within this `vNEXT` section have not been released yet. New PRs and commits which introduce changes should include an entry in this `vNEXT` section as part of their development. When a release is being prepared, a new header will be (manually) created below and the appropriate changes within that release will be moved into the new section.
5
+ - Released in sync with other federation packages but no changes to this package.
6
6
 
7
- - _Nothing yet! Stay tuned!_
7
+ ## v2.0.0-preview.7
8
+
9
+ - Released in sync with other federation packages but no changes to this package.
10
+
11
+ ## v2.0.0-preview.6
12
+
13
+ - Released in sync with other federation packages but no changes to this package.
14
+
15
+ ## v2.0.0-preview.5
16
+
17
+ - Fix propagation of `@tag` to the supergraph and allows @tag to be repeated. Additionally, merged directives (only `@tag` and `@deprecated` currently) are not allowed on external fields anymore [PR #1592](https://github.com/apollographql/federation/pull/1592).
8
18
 
9
19
  ## v2.0.0-preview.4
10
20
 
@@ -1 +1 @@
1
- {"version":3,"file":"buildSchema.d.ts","sourceRoot":"","sources":["../src/buildSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,YAAY,EAMZ,MAAM,EAUP,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,eAAe,EACf,MAAM,EASN,IAAI,EAcL,MAAM,eAAe,CAAC;AAMvB,oBAAY,kBAAkB,GAAG;IAC/B,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAA;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAEzF;AAED,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,YAAY,EAC1B,OAAO,CAAC,EAAE,kBAAkB,GAC3B,MAAM,CAuDR;AAsOD,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAE5E"}
1
+ {"version":3,"file":"buildSchema.d.ts","sourceRoot":"","sources":["../src/buildSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,YAAY,EAMZ,MAAM,EAUP,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,eAAe,EACf,MAAM,EASN,IAAI,EAgBL,MAAM,eAAe,CAAC;AAMvB,oBAAY,kBAAkB,GAAG;IAC/B,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAA;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAEzF;AAED,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,YAAY,EAC1B,OAAO,CAAC,EAAE,kBAAkB,GAC3B,MAAM,CAkER;AA4PD,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAE5E"}
@@ -13,30 +13,32 @@ function buildSchema(source, options) {
13
13
  exports.buildSchema = buildSchema;
14
14
  function buildSchemaFromAST(documentNode, options) {
15
15
  var _a;
16
+ const errors = [];
16
17
  const schema = new definitions_1.Schema(options === null || options === void 0 ? void 0 : options.blueprint);
17
18
  const { directiveDefinitions, schemaDefinitions, schemaExtensions } = buildNamedTypeAndDirectivesShallow(documentNode, schema);
18
19
  for (const directiveDefinitionNode of directiveDefinitions) {
19
- buildDirectiveDefinitionInner(directiveDefinitionNode, schema.directive(directiveDefinitionNode.name.value));
20
+ buildDirectiveDefinitionInner(directiveDefinitionNode, schema.directive(directiveDefinitionNode.name.value), errors);
20
21
  }
21
22
  for (const schemaDefinition of schemaDefinitions) {
22
- buildSchemaDefinitionInner(schemaDefinition, schema.schemaDefinition);
23
+ buildSchemaDefinitionInner(schemaDefinition, schema.schemaDefinition, errors);
23
24
  }
24
25
  for (const schemaExtension of schemaExtensions) {
25
- buildSchemaDefinitionInner(schemaExtension, schema.schemaDefinition, schema.schemaDefinition.newExtension());
26
+ buildSchemaDefinitionInner(schemaExtension, schema.schemaDefinition, errors, schema.schemaDefinition.newExtension());
26
27
  }
27
28
  schema.blueprint.onDirectiveDefinitionAndSchemaParsed(schema);
28
29
  for (const definitionNode of documentNode.definitions) {
29
30
  switch (definitionNode.kind) {
30
31
  case 'OperationDefinition':
31
32
  case 'FragmentDefinition':
32
- throw new graphql_1.GraphQLError("Invalid executable definition found while building schema", definitionNode);
33
+ errors.push(new graphql_1.GraphQLError("Invalid executable definition found while building schema", definitionNode));
34
+ continue;
33
35
  case 'ScalarTypeDefinition':
34
36
  case 'ObjectTypeDefinition':
35
37
  case 'InterfaceTypeDefinition':
36
38
  case 'UnionTypeDefinition':
37
39
  case 'EnumTypeDefinition':
38
40
  case 'InputObjectTypeDefinition':
39
- buildNamedTypeInner(definitionNode, schema.type(definitionNode.name.value), schema.blueprint);
41
+ buildNamedTypeInner(definitionNode, schema.type(definitionNode.name.value), schema.blueprint, errors);
40
42
  break;
41
43
  case 'ScalarTypeExtension':
42
44
  case 'ObjectTypeExtension':
@@ -47,10 +49,13 @@ function buildSchemaFromAST(documentNode, options) {
47
49
  const toExtend = schema.type(definitionNode.name.value);
48
50
  const extension = toExtend.newExtension();
49
51
  extension.sourceAST = definitionNode;
50
- buildNamedTypeInner(definitionNode, toExtend, schema.blueprint, extension);
52
+ buildNamedTypeInner(definitionNode, toExtend, schema.blueprint, errors, extension);
51
53
  break;
52
54
  }
53
55
  }
56
+ if (errors.length > 0) {
57
+ throw (0, definitions_1.ErrGraphQLValidationFailed)(errors);
58
+ }
54
59
  if ((_a = options === null || options === void 0 ? void 0 : options.validate) !== null && _a !== void 0 ? _a : true) {
55
60
  schema.validate();
56
61
  }
@@ -109,39 +114,42 @@ function getReferencedType(node, schema) {
109
114
  }
110
115
  return type;
111
116
  }
112
- function withNodeAttachedToError(operation, node) {
117
+ function withNodeAttachedToError(operation, node, errors) {
113
118
  try {
114
119
  operation();
115
120
  }
116
121
  catch (e) {
117
- if (e instanceof graphql_1.GraphQLError) {
118
- const allNodes = e.nodes ? [node, ...e.nodes] : node;
119
- throw new graphql_1.GraphQLError(e.message, allNodes, e.source, e.positions, e.path, e, e.extensions);
122
+ const causes = (0, definitions_1.errorCauses)(e);
123
+ if (causes) {
124
+ for (const cause of causes) {
125
+ const allNodes = cause.nodes ? [node, ...cause.nodes] : node;
126
+ errors.push(new graphql_1.GraphQLError(cause.message, allNodes, cause.source, cause.positions, cause.path, cause, cause.extensions));
127
+ }
120
128
  }
121
129
  else {
122
130
  throw e;
123
131
  }
124
132
  }
125
133
  }
126
- function buildSchemaDefinitionInner(schemaNode, schemaDefinition, extension) {
134
+ function buildSchemaDefinitionInner(schemaNode, schemaDefinition, errors, extension) {
127
135
  var _a, _b;
128
136
  for (const opTypeNode of (_a = schemaNode.operationTypes) !== null && _a !== void 0 ? _a : []) {
129
- withNodeAttachedToError(() => schemaDefinition.setRoot(opTypeNode.operation, opTypeNode.type.name.value).setOfExtension(extension), opTypeNode);
137
+ withNodeAttachedToError(() => schemaDefinition.setRoot(opTypeNode.operation, opTypeNode.type.name.value).setOfExtension(extension), opTypeNode, errors);
130
138
  }
131
139
  schemaDefinition.sourceAST = schemaNode;
132
140
  if ('description' in schemaNode) {
133
141
  schemaDefinition.description = (_b = schemaNode.description) === null || _b === void 0 ? void 0 : _b.value;
134
142
  }
135
- buildAppliedDirectives(schemaNode, schemaDefinition, extension);
143
+ buildAppliedDirectives(schemaNode, schemaDefinition, errors, extension);
136
144
  }
137
- function buildAppliedDirectives(elementNode, element, extension) {
145
+ function buildAppliedDirectives(elementNode, element, errors, extension) {
138
146
  var _a;
139
147
  for (const directive of (_a = elementNode.directives) !== null && _a !== void 0 ? _a : []) {
140
148
  withNodeAttachedToError(() => {
141
149
  const d = element.applyDirective(directive.name.value, buildArgs(directive));
142
150
  d.setOfExtension(extension);
143
151
  d.sourceAST = directive;
144
- }, directive);
152
+ }, directive, errors);
145
153
  }
146
154
  }
147
155
  function buildArgs(argumentsNode) {
@@ -152,7 +160,7 @@ function buildArgs(argumentsNode) {
152
160
  }
153
161
  return args;
154
162
  }
155
- function buildNamedTypeInner(definitionNode, type, blueprint, extension) {
163
+ function buildNamedTypeInner(definitionNode, type, blueprint, errors, extension) {
156
164
  var _a, _b, _c, _d, _e;
157
165
  switch (definitionNode.kind) {
158
166
  case 'ObjectTypeDefinition':
@@ -166,16 +174,16 @@ function buildNamedTypeInner(definitionNode, type, blueprint, extension) {
166
174
  }
167
175
  const field = fieldBasedType.addField(fieldNode.name.value);
168
176
  field.setOfExtension(extension);
169
- buildFieldDefinitionInner(fieldNode, field);
177
+ buildFieldDefinitionInner(fieldNode, field, errors);
170
178
  }
171
179
  for (const itfNode of (_b = definitionNode.interfaces) !== null && _b !== void 0 ? _b : []) {
172
180
  withNodeAttachedToError(() => {
173
181
  const itfName = itfNode.name.value;
174
182
  if (fieldBasedType.implementsInterface(itfName)) {
175
- throw new graphql_1.GraphQLError(`Type ${type} can only implement ${itfName} once.`);
183
+ throw new graphql_1.GraphQLError(`Type "${type}" can only implement "${itfName}" once.`);
176
184
  }
177
185
  fieldBasedType.addImplementedInterface(itfName).setOfExtension(extension);
178
- }, itfNode);
186
+ }, itfNode, errors);
179
187
  }
180
188
  break;
181
189
  case 'UnionTypeDefinition':
@@ -185,10 +193,10 @@ function buildNamedTypeInner(definitionNode, type, blueprint, extension) {
185
193
  withNodeAttachedToError(() => {
186
194
  const name = namedType.name.value;
187
195
  if (unionType.hasTypeMember(name)) {
188
- throw new graphql_1.GraphQLError(`Union type ${unionType} can only include type ${name} once.`);
196
+ throw new graphql_1.GraphQLError(`Union type "${unionType}" can only include type "${name}" once.`);
189
197
  }
190
198
  unionType.addType(name).setOfExtension(extension);
191
- }, namedType);
199
+ }, namedType, errors);
192
200
  }
193
201
  break;
194
202
  case 'EnumTypeDefinition':
@@ -200,7 +208,7 @@ function buildNamedTypeInner(definitionNode, type, blueprint, extension) {
200
208
  v.description = enumVal.description.value;
201
209
  }
202
210
  v.setOfExtension(extension);
203
- buildAppliedDirectives(enumVal, v);
211
+ buildAppliedDirectives(enumVal, v, errors);
204
212
  }
205
213
  break;
206
214
  case 'InputObjectTypeDefinition':
@@ -209,41 +217,43 @@ function buildNamedTypeInner(definitionNode, type, blueprint, extension) {
209
217
  for (const fieldNode of (_e = definitionNode.fields) !== null && _e !== void 0 ? _e : []) {
210
218
  const field = inputObjectType.addField(fieldNode.name.value);
211
219
  field.setOfExtension(extension);
212
- buildInputFieldDefinitionInner(fieldNode, field);
220
+ buildInputFieldDefinitionInner(fieldNode, field, errors);
213
221
  }
214
222
  break;
215
223
  }
216
- buildAppliedDirectives(definitionNode, type, extension);
224
+ buildAppliedDirectives(definitionNode, type, errors, extension);
217
225
  if (definitionNode.description) {
218
226
  type.description = definitionNode.description.value;
219
227
  }
220
228
  type.sourceAST = definitionNode;
221
229
  }
222
- function buildFieldDefinitionInner(fieldNode, field) {
230
+ function buildFieldDefinitionInner(fieldNode, field, errors) {
223
231
  var _a, _b;
224
232
  const type = buildTypeReferenceFromAST(fieldNode.type, field.schema());
225
- field.type = ensureOutputType(type, field.coordinate, fieldNode);
233
+ field.type = validateOutputType(type, field.coordinate, fieldNode, errors);
226
234
  for (const inputValueDef of (_a = fieldNode.arguments) !== null && _a !== void 0 ? _a : []) {
227
- buildArgumentDefinitionInner(inputValueDef, field.addArgument(inputValueDef.name.value));
235
+ buildArgumentDefinitionInner(inputValueDef, field.addArgument(inputValueDef.name.value), errors);
228
236
  }
229
- buildAppliedDirectives(fieldNode, field);
237
+ buildAppliedDirectives(fieldNode, field, errors);
230
238
  field.description = (_b = fieldNode.description) === null || _b === void 0 ? void 0 : _b.value;
231
239
  field.sourceAST = fieldNode;
232
240
  }
233
- function ensureOutputType(type, what, node) {
241
+ function validateOutputType(type, what, node, errors) {
234
242
  if ((0, definitions_1.isOutputType)(type)) {
235
243
  return type;
236
244
  }
237
245
  else {
238
- throw new graphql_1.GraphQLError(`The type of ${what} must be Output Type but got: ${type}, a ${type.kind}.`, node);
246
+ errors.push(new graphql_1.GraphQLError(`The type of "${what}" must be Output Type but got "${type}", a ${type.kind}.`, node));
247
+ return undefined;
239
248
  }
240
249
  }
241
- function ensureInputType(type, what, node) {
250
+ function validateInputType(type, what, node, errors) {
242
251
  if ((0, definitions_1.isInputType)(type)) {
243
252
  return type;
244
253
  }
245
254
  else {
246
- throw new graphql_1.GraphQLError(`The type of ${what} must be Input Type but got: ${type}, a ${type.kind}.`, node);
255
+ errors.push(new graphql_1.GraphQLError(`The type of "${what}" must be Input Type but got "${type}", a ${type.kind}.`, node));
256
+ return undefined;
247
257
  }
248
258
  }
249
259
  function builtTypeReference(encodedType, schema) {
@@ -264,28 +274,28 @@ function buildTypeReferenceFromAST(typeNode, schema) {
264
274
  return getReferencedType(typeNode, schema);
265
275
  }
266
276
  }
267
- function buildArgumentDefinitionInner(inputNode, arg) {
277
+ function buildArgumentDefinitionInner(inputNode, arg, errors) {
268
278
  var _a;
269
279
  const type = buildTypeReferenceFromAST(inputNode.type, arg.schema());
270
- arg.type = ensureInputType(type, arg.coordinate, inputNode);
280
+ arg.type = validateInputType(type, arg.coordinate, inputNode, errors);
271
281
  arg.defaultValue = buildValue(inputNode.defaultValue);
272
- buildAppliedDirectives(inputNode, arg);
282
+ buildAppliedDirectives(inputNode, arg, errors);
273
283
  arg.description = (_a = inputNode.description) === null || _a === void 0 ? void 0 : _a.value;
274
284
  arg.sourceAST = inputNode;
275
285
  }
276
- function buildInputFieldDefinitionInner(fieldNode, field) {
286
+ function buildInputFieldDefinitionInner(fieldNode, field, errors) {
277
287
  var _a;
278
288
  const type = buildTypeReferenceFromAST(fieldNode.type, field.schema());
279
- field.type = ensureInputType(type, field.coordinate, fieldNode);
289
+ field.type = validateInputType(type, field.coordinate, fieldNode, errors);
280
290
  field.defaultValue = buildValue(fieldNode.defaultValue);
281
- buildAppliedDirectives(fieldNode, field);
291
+ buildAppliedDirectives(fieldNode, field, errors);
282
292
  field.description = (_a = fieldNode.description) === null || _a === void 0 ? void 0 : _a.value;
283
293
  field.sourceAST = fieldNode;
284
294
  }
285
- function buildDirectiveDefinitionInner(directiveNode, directive) {
295
+ function buildDirectiveDefinitionInner(directiveNode, directive, errors) {
286
296
  var _a, _b;
287
297
  for (const inputValueDef of (_a = directiveNode.arguments) !== null && _a !== void 0 ? _a : []) {
288
- buildArgumentDefinitionInner(inputValueDef, directive.addArgument(inputValueDef.name.value));
298
+ buildArgumentDefinitionInner(inputValueDef, directive.addArgument(inputValueDef.name.value), errors);
289
299
  }
290
300
  directive.repeatable = directiveNode.repeatable;
291
301
  const locations = directiveNode.locations.map(({ value }) => value);
@@ -1 +1 @@
1
- {"version":3,"file":"buildSchema.js","sourceRoot":"","sources":["../src/buildSchema.ts"],"names":[],"mappings":";;;AAAA,qCAqBiB;AAEjB,qCAA+C;AAC/C,+CAyBuB;AAEvB,SAAS,UAAU,CAAC,KAAiB;IACnC,OAAO,KAAK,CAAC,CAAC,CAAC,IAAA,4BAAmB,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACxD,CAAC;AAOD,SAAgB,WAAW,CAAC,MAAuB,EAAE,OAA4B;IAC/E,OAAO,kBAAkB,CAAC,IAAA,eAAK,EAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;AACpD,CAAC;AAFD,kCAEC;AAED,SAAgB,kBAAkB,CAChC,YAA0B,EAC1B,OAA4B;;IAE5B,MAAM,MAAM,GAAG,IAAI,oBAAM,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,CAAC,CAAC;IAG9C,MAAM,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,GAAG,kCAAkC,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAO/H,KAAK,MAAM,uBAAuB,IAAI,oBAAoB,EAAE;QAC1D,6BAA6B,CAAC,uBAAuB,EAAE,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAE,CAAC,CAAC;KAC/G;IACD,KAAK,MAAM,gBAAgB,IAAI,iBAAiB,EAAE;QAChD,0BAA0B,CAAC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;KACvE;IACD,KAAK,MAAM,eAAe,IAAI,gBAAgB,EAAE;QAC9C,0BAA0B,CAAC,eAAe,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,CAAC;KAC9G;IAED,MAAM,CAAC,SAAS,CAAC,oCAAoC,CAAC,MAAM,CAAC,CAAC;IAE9D,KAAK,MAAM,cAAc,IAAI,YAAY,CAAC,WAAW,EAAE;QACrD,QAAQ,cAAc,CAAC,IAAI,EAAE;YAC3B,KAAK,qBAAqB,CAAC;YAC3B,KAAK,oBAAoB;gBACvB,MAAM,IAAI,sBAAY,CAAC,2DAA2D,EAAE,cAAc,CAAC,CAAC;YACtG,KAAK,sBAAsB,CAAC;YAC5B,KAAK,sBAAsB,CAAC;YAC5B,KAAK,yBAAyB,CAAC;YAC/B,KAAK,qBAAqB,CAAC;YAC3B,KAAK,oBAAoB,CAAC;YAC1B,KAAK,2BAA2B;gBAC9B,mBAAmB,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAE,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;gBAC/F,MAAM;YACR,KAAK,qBAAqB,CAAC;YAC3B,KAAK,qBAAqB,CAAC;YAC3B,KAAK,wBAAwB,CAAC;YAC9B,KAAK,oBAAoB,CAAC;YAC1B,KAAK,mBAAmB,CAAC;YACzB,KAAK,0BAA0B;gBAC7B,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAE,CAAC;gBACzD,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC;gBAC1C,SAAS,CAAC,SAAS,GAAG,cAAc,CAAC;gBACrC,mBAAmB,CAAC,cAAc,EAAE,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBAC3E,MAAM;SACT;KACF;IAED,IAAI,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,mCAAI,IAAI,EAAE;QAC7B,MAAM,CAAC,QAAQ,EAAE,CAAC;KACnB;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AA1DD,gDA0DC;AAED,SAAS,kCAAkC,CAAC,YAA0B,EAAE,MAAc;IAKpF,MAAM,oBAAoB,GAAG,EAAE,CAAC;IAChC,MAAM,iBAAiB,GAAG,EAAE,CAAC;IAC7B,MAAM,gBAAgB,GAAG,EAAE,CAAC;IAC5B,KAAK,MAAM,cAAc,IAAI,YAAY,CAAC,WAAW,EAAE;QACrD,QAAQ,cAAc,CAAC,IAAI,EAAE;YAC3B,KAAK,kBAAkB;gBACrB,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBACvC,MAAM;YACR,KAAK,iBAAiB;gBACpB,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBACtC,MAAM;YACR,KAAK,sBAAsB,CAAC;YAC5B,KAAK,sBAAsB,CAAC;YAC5B,KAAK,yBAAyB,CAAC;YAC/B,KAAK,qBAAqB,CAAC;YAC3B,KAAK,oBAAoB,CAAC;YAC1B,KAAK,2BAA2B,CAAC;YACjC,KAAK,qBAAqB,CAAC;YAC3B,KAAK,qBAAqB,CAAC;YAC3B,KAAK,wBAAwB,CAAC;YAC9B,KAAK,oBAAoB,CAAC;YAC1B,KAAK,mBAAmB,CAAC;YACzB,KAAK,0BAA0B;gBAG7B,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACxD,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,SAAS,EAAE;oBACnC,MAAM,CAAC,OAAO,CAAC,IAAA,0BAAY,EAAC,yBAAyB,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;iBACzG;gBACD,MAAM;YACR,KAAK,qBAAqB;gBACxB,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAC1C,MAAM,CAAC,sBAAsB,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACzD,MAAM;SACT;KACF;IACD,OAAO;QACL,oBAAoB;QACpB,iBAAiB;QACjB,gBAAgB;KACjB,CAAA;AACH,CAAC;AAMD,SAAS,yBAAyB,CAAC,GAAW;IAC5C,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC;IAC1E,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAkB,CAAC;AACtE,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAmB,EAAE,MAAc;IAC5D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,CAAC,IAAI,EAAE;QACT,MAAM,IAAI,sBAAY,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;KACjE;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,uBAAuB,CAAC,SAAqB,EAAE,IAAa;IACnE,IAAI;QACF,SAAS,EAAE,CAAC;KACb;IAAC,OAAO,CAAC,EAAE;QACV,IAAI,CAAC,YAAY,sBAAY,EAAE;YAC7B,MAAM,QAAQ,GAAwB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC1E,MAAM,IAAI,sBAAY,CACpB,CAAC,CAAC,OAAO,EACT,QAAQ,EACR,CAAC,CAAC,MAAM,EACR,CAAC,CAAC,SAAS,EACX,CAAC,CAAC,IAAI,EACN,CAAC,EACD,CAAC,CAAC,UAAU,CACb,CAAC;SACH;aAAM;YACL,MAAM,CAAC,CAAC;SACT;KACF;AACH,CAAC;AAED,SAAS,0BAA0B,CACjC,UAAsD,EACtD,gBAAkC,EAClC,SAAuC;;IAEvC,KAAK,MAAM,UAAU,IAAI,MAAA,UAAU,CAAC,cAAc,mCAAI,EAAE,EAAE;QACxD,uBAAuB,CACrB,GAAG,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,EAC1G,UAAU,CAAC,CAAC;KACf;IACD,gBAAgB,CAAC,SAAS,GAAG,UAAU,CAAC;IACxC,IAAI,aAAa,IAAI,UAAU,EAAE;QAC/B,gBAAgB,CAAC,WAAW,GAAG,MAAA,UAAU,CAAC,WAAW,0CAAE,KAAK,CAAC;KAC9D;IACD,sBAAsB,CAAC,UAAU,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,sBAAsB,CAC7B,WAA+B,EAC/B,OAAgC,EAChC,SAA0B;;IAE1B,KAAK,MAAM,SAAS,IAAI,MAAA,WAAW,CAAC,UAAU,mCAAI,EAAE,EAAE;QACpD,uBAAuB,CAAC,GAAG,EAAE;YAC3B,MAAM,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;YAC7E,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YAC5B,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC;QAC1B,CAAC,EAAE,SAAS,CAAC,CAAC;KACf;AACH,CAAC;AAED,SAAS,SAAS,CAAC,aAAgC;;IACjD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjC,KAAK,MAAM,OAAO,IAAI,MAAA,aAAa,CAAC,SAAS,mCAAI,EAAE,EAAE;QACnD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KACtD;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,mBAAmB,CAC1B,cAAyE,EACzE,IAAe,EACf,SAA0B,EAC1B,SAA0B;;IAE1B,QAAQ,cAAc,CAAC,IAAI,EAAE;QAC3B,KAAK,sBAAsB,CAAC;QAC5B,KAAK,qBAAqB,CAAC;QAC3B,KAAK,yBAAyB,CAAC;QAC/B,KAAK,wBAAwB;YAC3B,MAAM,cAAc,GAAG,IAAkC,CAAC;YAC1D,KAAK,MAAM,SAAS,IAAI,MAAA,cAAc,CAAC,MAAM,mCAAI,EAAE,EAAE;gBACnD,IAAI,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;oBAC3D,SAAS;iBACV;gBACD,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC5D,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;gBAChC,yBAAyB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;aAC7C;YACD,KAAK,MAAM,OAAO,IAAI,MAAA,cAAc,CAAC,UAAU,mCAAI,EAAE,EAAE;gBACrD,uBAAuB,CACrB,GAAG,EAAE;oBACH,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;oBACnC,IAAI,cAAc,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE;wBAC/C,MAAM,IAAI,sBAAY,CAAC,QAAQ,IAAI,uBAAuB,OAAO,QAAQ,CAAC,CAAC;qBAC5E;oBACD,cAAc,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC5E,CAAC,EACD,OAAO,CAAC,CAAC;aACZ;YACD,MAAM;QACR,KAAK,qBAAqB,CAAC;QAC3B,KAAK,oBAAoB;YACvB,MAAM,SAAS,GAAG,IAAiB,CAAC;YACpC,KAAK,MAAM,SAAS,IAAI,MAAA,cAAc,CAAC,KAAK,mCAAI,EAAE,EAAE;gBAClD,uBAAuB,CACrB,GAAG,EAAE;oBACH,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;oBAClC,IAAI,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;wBACjC,MAAM,IAAI,sBAAY,CAAC,cAAc,SAAS,0BAA0B,IAAI,QAAQ,CAAC,CAAC;qBACvF;oBACD,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;gBACpD,CAAC,EACD,SAAS,CAAC,CAAC;aACd;YACD,MAAM;QACR,KAAK,oBAAoB,CAAC;QAC1B,KAAK,mBAAmB;YACtB,MAAM,QAAQ,GAAG,IAAgB,CAAC;YAClC,KAAK,MAAM,OAAO,IAAI,MAAA,cAAc,CAAC,MAAM,mCAAI,EAAE,EAAE;gBACjD,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAChD,IAAI,OAAO,CAAC,WAAW,EAAE;oBACvB,CAAC,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC;iBAC3C;gBACD,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC5B,sBAAsB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;aACpC;YACD,MAAM;QACR,KAAK,2BAA2B,CAAC;QACjC,KAAK,0BAA0B;YAC7B,MAAM,eAAe,GAAG,IAAuB,CAAC;YAChD,KAAK,MAAM,SAAS,IAAI,MAAA,cAAc,CAAC,MAAM,mCAAI,EAAE,EAAE;gBACnD,MAAM,KAAK,GAAG,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC7D,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;gBAChC,8BAA8B,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;aAClD;YACD,MAAM;KACT;IACD,sBAAsB,CAAC,cAAc,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IACxD,IAAI,cAAc,CAAC,WAAW,EAAE;QAC9B,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC;KACrD;IACD,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC;AAClC,CAAC;AAED,SAAS,yBAAyB,CAAC,SAA8B,EAAE,KAA2B;;IAC5F,MAAM,IAAI,GAAG,yBAAyB,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACvE,KAAK,CAAC,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACjE,KAAK,MAAM,aAAa,IAAI,MAAA,SAAS,CAAC,SAAS,mCAAI,EAAE,EAAE;QACrD,4BAA4B,CAAC,aAAa,EAAE,KAAK,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;KAC1F;IACD,sBAAsB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACzC,KAAK,CAAC,WAAW,GAAG,MAAA,SAAS,CAAC,WAAW,0CAAE,KAAK,CAAC;IACjD,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;AAC9B,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAU,EAAE,IAAY,EAAE,IAAa;IAC/D,IAAI,IAAA,0BAAY,EAAC,IAAI,CAAC,EAAE;QACtB,OAAO,IAAI,CAAC;KACb;SAAM;QACL,MAAM,IAAI,sBAAY,CAAC,eAAe,IAAI,iCAAiC,IAAI,OAAO,IAAI,CAAC,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC;KAC3G;AACH,CAAC;AAED,SAAS,eAAe,CAAC,IAAU,EAAE,IAAY,EAAE,IAAa;IAC9D,IAAI,IAAA,yBAAW,EAAC,IAAI,CAAC,EAAE;QACrB,OAAO,IAAI,CAAC;KACb;SAAM;QACL,MAAM,IAAI,sBAAY,CAAC,eAAe,IAAI,gCAAgC,IAAI,OAAO,IAAI,CAAC,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC;KAC1G;AACH,CAAC;AAED,SAAgB,kBAAkB,CAAC,WAAmB,EAAE,MAAc;IACpE,OAAO,yBAAyB,CAAC,IAAA,mBAAS,EAAC,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC;AACnE,CAAC;AAFD,gDAEC;AAED,SAAS,yBAAyB,CAAC,QAAkB,EAAE,MAAc;IACnE,QAAQ,QAAQ,CAAC,IAAI,EAAE;QACrB,KAAK,cAAI,CAAC,SAAS;YACjB,OAAO,IAAI,sBAAQ,CAAC,yBAAyB,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACxE,KAAK,cAAI,CAAC,aAAa;YACrB,MAAM,OAAO,GAAG,yBAAyB,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACjE,IAAI,OAAO,CAAC,IAAI,IAAI,cAAI,CAAC,aAAa,EAAE;gBACtC,MAAM,IAAI,sBAAY,CAAC,+DAA+D,EAAE,QAAQ,CAAC,CAAC;aACnG;YACD,OAAO,IAAI,yBAAW,CAAC,OAAO,CAAC,CAAC;QAClC;YACE,OAAO,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;KAC9C;AACH,CAAC;AAED,SAAS,4BAA4B,CAAC,SAAmC,EAAE,GAA4B;;IACrG,MAAM,IAAI,GAAG,yBAAyB,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACrE,GAAG,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAC5D,GAAG,CAAC,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IACtD,sBAAsB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACvC,GAAG,CAAC,WAAW,GAAG,MAAA,SAAS,CAAC,WAAW,0CAAE,KAAK,CAAC;IAC/C,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;AAC5B,CAAC;AAED,SAAS,8BAA8B,CAAC,SAAmC,EAAE,KAA2B;;IACtG,MAAM,IAAI,GAAG,yBAAyB,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACvE,KAAK,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAChE,KAAK,CAAC,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IACxD,sBAAsB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACzC,KAAK,CAAC,WAAW,GAAG,MAAA,SAAS,CAAC,WAAW,0CAAE,KAAK,CAAC;IACjD,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;AAC9B,CAAC;AAED,SAAS,6BAA6B,CAAC,aAAsC,EAAE,SAA8B;;IAC3G,KAAK,MAAM,aAAa,IAAI,MAAA,aAAa,CAAC,SAAS,mCAAI,EAAE,EAAE;QACzD,4BAA4B,CAAC,aAAa,EAAE,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;KAC9F;IACD,SAAS,CAAC,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC;IAChD,MAAM,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAA0B,CAAC,CAAC;IACzF,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC;IACrC,SAAS,CAAC,WAAW,GAAG,MAAA,aAAa,CAAC,WAAW,0CAAE,KAAK,CAAC;IACzD,SAAS,CAAC,SAAS,GAAG,aAAa,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"buildSchema.js","sourceRoot":"","sources":["../src/buildSchema.ts"],"names":[],"mappings":"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"}
@@ -17,9 +17,10 @@ export declare abstract class FeatureDefinition {
17
17
  isSpecType(type: NamedType): boolean;
18
18
  isSpecDirective(directive: DirectiveDefinition): boolean;
19
19
  abstract addElementsToSchema(schema: Schema): void;
20
+ abstract allElementNames(): string[];
20
21
  protected nameInSchema(schema: Schema): string | undefined;
21
22
  protected directiveNameInSchema(schema: Schema, directiveName: string): string | undefined;
22
- protected typeNameInSchema(schema: Schema, directiveName: string): string | undefined;
23
+ protected typeNameInSchema(schema: Schema, typeName: string): string | undefined;
23
24
  protected rootDirective<TApplicationArgs extends {
24
25
  [key: string]: any;
25
26
  }>(schema: Schema): DirectiveDefinition<TApplicationArgs> | undefined;
@@ -52,12 +53,13 @@ export declare type CoreImport = {
52
53
  name: string;
53
54
  as?: string;
54
55
  };
55
- export declare function extractCoreFeatureImports(directive: Directive<SchemaDefinition, CoreOrLinkDirectiveArgs>): CoreImport[];
56
+ export declare function extractCoreFeatureImports(url: FeatureUrl, directive: Directive<SchemaDefinition, CoreOrLinkDirectiveArgs>): CoreImport[];
56
57
  export declare function isCoreSpecDirectiveApplication(directive: Directive<SchemaDefinition, any>): directive is Directive<SchemaDefinition, CoreOrLinkDirectiveArgs>;
57
58
  export declare class CoreSpecDefinition extends FeatureDefinition {
58
59
  constructor(version: FeatureVersion, identity?: string, name?: string);
59
60
  addElementsToSchema(_: Schema): void;
60
61
  addToSchema(schema: Schema, as?: string): void;
62
+ allElementNames(): string[];
61
63
  private supportPurposes;
62
64
  private supportImport;
63
65
  private extractFeature;
@@ -1 +1 @@
1
- {"version":3,"file":"coreSpec.d.ts","sourceRoot":"","sources":["../src/coreSpec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coreSpec.d.ts","sourceRoot":"","sources":["../src/coreSpec.ts"],"names":[],"mappings":"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"}
package/dist/coreSpec.js CHANGED
@@ -8,6 +8,9 @@ const types_1 = require("./types");
8
8
  const core_schema_1 = require("@apollo/core-schema");
9
9
  const utils_1 = require("./utils");
10
10
  const error_1 = require("./error");
11
+ const values_1 = require("./values");
12
+ const knownCoreFeatures_1 = require("./knownCoreFeatures");
13
+ const suggestions_1 = require("./suggestions");
11
14
  exports.coreIdentity = 'https://specs.apollo.dev/core';
12
15
  exports.linkIdentity = 'https://specs.apollo.dev/link';
13
16
  exports.linkDirectiveDefaultName = 'link';
@@ -55,9 +58,9 @@ class FeatureDefinition {
55
58
  const feature = this.featureInSchema(schema);
56
59
  return feature ? feature.directiveNameInSchema(directiveName) : undefined;
57
60
  }
58
- typeNameInSchema(schema, directiveName) {
61
+ typeNameInSchema(schema, typeName) {
59
62
  const feature = this.featureInSchema(schema);
60
- return feature ? feature.typeNameInSchema(directiveName) : undefined;
63
+ return feature ? feature.typeNameInSchema(typeName) : undefined;
61
64
  }
62
65
  rootDirective(schema) {
63
66
  const name = this.nameInSchema(schema);
@@ -95,33 +98,109 @@ class FeatureDefinition {
95
98
  }
96
99
  }
97
100
  exports.FeatureDefinition = FeatureDefinition;
98
- function extractCoreFeatureImports(directive) {
101
+ function extractCoreFeatureImports(url, directive) {
99
102
  const args = directive.arguments();
100
- if (!('import' in args)) {
103
+ if (!('import' in args) || !args.import) {
101
104
  return [];
102
105
  }
103
- const importArg = args.import;
104
- const imports = importArg ? importArg.map((a) => typeof a === 'string' ? { name: a } : a) : [];
105
- for (const i of imports) {
106
- if (!i.as) {
106
+ const importArgValue = args.import;
107
+ const definition = (0, knownCoreFeatures_1.coreFeatureDefinitionIfKnown)(url);
108
+ const knownElements = definition === null || definition === void 0 ? void 0 : definition.allElementNames();
109
+ const errors = [];
110
+ const imports = [];
111
+ importArgLoop: for (const elt of importArgValue) {
112
+ if (typeof elt === 'string') {
113
+ imports.push({ name: elt });
114
+ validateImportedName(elt, knownElements, errors, directive);
107
115
  continue;
108
116
  }
109
- if (i.name.charAt(0) === '@' && i.as.charAt(0) !== '@') {
110
- throw error_1.ERRORS.INVALID_LINK_DIRECTIVE_USAGE.err({
111
- message: `Invalid @link import renaming: directive ${i.name} imported name should starts with a '@' character, but got "${i.as}"`,
117
+ if (typeof elt !== 'object') {
118
+ errors.push(error_1.ERRORS.INVALID_LINK_DIRECTIVE_USAGE.err({
119
+ message: `Invalid sub-value ${(0, values_1.valueToString)(elt)} for @link(import:) argument: values should be either strings or input object values of the form { name: "<importedElement>", as: "<alias>" }.`,
112
120
  nodes: directive.sourceAST
113
- });
121
+ }));
122
+ continue;
123
+ }
124
+ let name;
125
+ for (const [key, value] of Object.entries(elt)) {
126
+ switch (key) {
127
+ case 'name':
128
+ if (typeof value !== 'string') {
129
+ errors.push(error_1.ERRORS.INVALID_LINK_DIRECTIVE_USAGE.err({
130
+ message: `Invalid value for the "name" field for sub-value ${(0, values_1.valueToString)(elt)} of @link(import:) argument: must be a string.`,
131
+ nodes: directive.sourceAST
132
+ }));
133
+ continue importArgLoop;
134
+ }
135
+ name = value;
136
+ break;
137
+ case 'as':
138
+ if (typeof value !== 'string') {
139
+ errors.push(error_1.ERRORS.INVALID_LINK_DIRECTIVE_USAGE.err({
140
+ message: `Invalid value for the "as" field for sub-value ${(0, values_1.valueToString)(elt)} of @link(import:) argument: must be a string.`,
141
+ nodes: directive.sourceAST
142
+ }));
143
+ continue importArgLoop;
144
+ }
145
+ break;
146
+ default:
147
+ errors.push(error_1.ERRORS.INVALID_LINK_DIRECTIVE_USAGE.err({
148
+ message: `Unknown field "${key}" for sub-value ${(0, values_1.valueToString)(elt)} of @link(import:) argument.`,
149
+ nodes: directive.sourceAST
150
+ }));
151
+ continue importArgLoop;
152
+ }
153
+ }
154
+ if (name) {
155
+ const i = elt;
156
+ imports.push(i);
157
+ if (i.as) {
158
+ if (i.name.charAt(0) === '@' && i.as.charAt(0) !== '@') {
159
+ errors.push(error_1.ERRORS.INVALID_LINK_DIRECTIVE_USAGE.err({
160
+ message: `Invalid @link import renaming: directive "${i.name}" imported name should start with a '@' character, but got "${i.as}".`,
161
+ nodes: directive.sourceAST
162
+ }));
163
+ }
164
+ else if (i.name.charAt(0) !== '@' && i.as.charAt(0) === '@') {
165
+ errors.push(error_1.ERRORS.INVALID_LINK_DIRECTIVE_USAGE.err({
166
+ message: `Invalid @link import renaming: type "${i.name}" imported name should not start with a '@' character, but got "${i.as}" (or, if @${i.name} is a directive, then it should be referred to with a '@').`,
167
+ nodes: directive.sourceAST
168
+ }));
169
+ }
170
+ }
171
+ validateImportedName(name, knownElements, errors, directive);
114
172
  }
115
- if (i.name.charAt(0) !== '@' && i.as.charAt(0) === '@') {
116
- throw error_1.ERRORS.INVALID_LINK_DIRECTIVE_USAGE.err({
117
- message: `Invalid @link import renaming: type ${i.name} imported name should not starts with a '@' character, but got "${i.as}" (or, if @${i.name} is a directive, then it should be refered to with a '@')`,
173
+ else {
174
+ errors.push(error_1.ERRORS.INVALID_LINK_DIRECTIVE_USAGE.err({
175
+ message: `Invalid sub-value ${(0, values_1.valueToString)(elt)} for @link(import:) argument: missing mandatory "name" field.`,
118
176
  nodes: directive.sourceAST
119
- });
177
+ }));
120
178
  }
121
179
  }
180
+ if (errors.length > 0) {
181
+ throw (0, definitions_1.ErrGraphQLValidationFailed)(errors);
182
+ }
122
183
  return imports;
123
184
  }
124
185
  exports.extractCoreFeatureImports = extractCoreFeatureImports;
186
+ function validateImportedName(name, knownElements, errors, directive) {
187
+ if (knownElements && !knownElements.includes(name)) {
188
+ let details = '';
189
+ if (!name.startsWith('@') && knownElements.includes('@' + name)) {
190
+ details = ` Did you mean directive "@${name}"?`;
191
+ }
192
+ else {
193
+ const suggestions = (0, suggestions_1.suggestionList)(name, knownElements);
194
+ if (suggestions) {
195
+ details = (0, suggestions_1.didYouMean)(suggestions);
196
+ }
197
+ }
198
+ errors.push(error_1.ERRORS.INVALID_LINK_DIRECTIVE_USAGE.err({
199
+ message: `Cannot import unknown element "${name}".${details}`,
200
+ nodes: directive.sourceAST
201
+ }));
202
+ }
203
+ }
125
204
  function isCoreSpecDirectiveApplication(directive) {
126
205
  var _a, _b, _c;
127
206
  const definition = directive.definition;
@@ -183,9 +262,6 @@ class CoreSpecDefinition extends FeatureDefinition {
183
262
  core.addArgument('for', purposeEnum);
184
263
  }
185
264
  if (this.supportImport()) {
186
- if (schema.type(`${nameInSchema}__Import`)) {
187
- console.trace();
188
- }
189
265
  const importType = schema.addType(new definitions_1.ScalarType(`${nameInSchema}__Import`));
190
266
  core.addArgument('import', new definitions_1.ListType(importType));
191
267
  }
@@ -195,6 +271,16 @@ class CoreSpecDefinition extends FeatureDefinition {
195
271
  }
196
272
  schema.schemaDefinition.applyDirective(nameInSchema, args);
197
273
  }
274
+ allElementNames() {
275
+ const names = [`@${this.url.name}`];
276
+ if (this.supportPurposes()) {
277
+ names.push('Purpose');
278
+ }
279
+ if (this.supportImport()) {
280
+ names.push('Import');
281
+ }
282
+ return names;
283
+ }
198
284
  supportPurposes() {
199
285
  return this.version.strictlyGreaterThan(new FeatureVersion(0, 1));
200
286
  }
@@ -393,6 +479,8 @@ exports.CORE_VERSIONS = new FeatureDefinitions(exports.coreIdentity)
393
479
  .add(new CoreSpecDefinition(new FeatureVersion(0, 2), exports.coreIdentity, 'core'));
394
480
  exports.LINK_VERSIONS = new FeatureDefinitions(exports.linkIdentity)
395
481
  .add(new CoreSpecDefinition(new FeatureVersion(1, 0)));
482
+ (0, knownCoreFeatures_1.registerKnownFeature)(exports.CORE_VERSIONS);
483
+ (0, knownCoreFeatures_1.registerKnownFeature)(exports.LINK_VERSIONS);
396
484
  function removeFeatureElements(schema, feature) {
397
485
  const featureDirectives = schema.directives().filter(d => feature.isFeatureDefinition(d));
398
486
  featureDirectives.forEach(d => d.remove().forEach(application => application.remove()));