@theguild/federation-composition 0.8.2 → 0.9.0-alpha-20240226114817-be912f4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/cjs/compose.js CHANGED
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.compositionHasErrors = exports.assertCompositionFailure = exports.assertCompositionSuccess = exports.composeServices = void 0;
4
4
  const graphql_1 = require("graphql");
5
5
  const printer_js_1 = require("./graphql/printer.js");
6
+ const transform_supergraph_to_public_schema_js_1 = require("./graphql/transform-supergraph-to-public-schema.js");
6
7
  const authenticated_js_1 = require("./specifications/authenticated.js");
7
8
  const inaccessible_js_1 = require("./specifications/inaccessible.js");
8
9
  const join_js_1 = require("./specifications/join.js");
@@ -44,6 +45,7 @@ function composeServices(services, __internal) {
44
45
  const usedPolicySpec = validationResult.specs.policy;
45
46
  const usedRequiresScopesSpec = validationResult.specs.requiresScopes;
46
47
  const usedAuthenticatedSpec = validationResult.specs.authenticated;
48
+ let _publicSdl;
47
49
  return {
48
50
  supergraphSdl: `
49
51
  schema
@@ -80,6 +82,16 @@ ${(0, printer_js_1.print)({
80
82
  definitions: validationResult.supergraph,
81
83
  })}
82
84
  `,
85
+ get publicSdl() {
86
+ if (_publicSdl) {
87
+ return _publicSdl;
88
+ }
89
+ _publicSdl = (0, printer_js_1.print)((0, transform_supergraph_to_public_schema_js_1.transformSupergraphToPublicSchema)({
90
+ kind: graphql_1.Kind.DOCUMENT,
91
+ definitions: validationResult.supergraph,
92
+ }));
93
+ return _publicSdl;
94
+ },
83
95
  };
84
96
  }
85
97
  exports.composeServices = composeServices;
@@ -1,26 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.transformSupergraphToPublicSchema = exports.federationDirectives = exports.federationEnums = exports.federationScalars = void 0;
3
+ exports.transformSupergraphToPublicSchema = void 0;
4
4
  const graphql_1 = require("graphql");
5
- exports.federationScalars = new Set([
6
- '_FieldSet',
7
- 'link__Import',
8
- 'join__FieldSet',
9
- 'join__DirectiveArguments',
10
- 'policy__Policy',
11
- 'requiresScopes__Scope',
12
- ]);
13
- exports.federationEnums = new Set(['core__Purpose', 'join__Graph', 'link__Purpose']);
14
- exports.federationDirectives = new Set([
5
+ const federationScalars = new Set(['_FieldSet', 'link__Import', 'join__FieldSet']);
6
+ const federationEnums = new Set(['core__Purpose', 'join__Graph', 'link__Purpose']);
7
+ const federationDirectives = new Set([
15
8
  'link',
16
- 'core',
17
9
  'tag',
18
10
  'join__graph',
19
11
  'join__type',
20
- 'join__owner',
21
12
  'join__implements',
22
13
  'join__unionMember',
23
- 'join__directive',
24
14
  'join__enumValue',
25
15
  'join__field',
26
16
  'inaccessible',
@@ -68,7 +58,7 @@ function transformSupergraphToPublicSchema(documentNode) {
68
58
  const additionalFederationDirectives = getAdditionalDirectivesToStrip(documentNode);
69
59
  const inaccessibleDirectiveName = getInaccessibleDirectiveName(documentNode);
70
60
  function removeFederationOrSpecifiedDirectives(node) {
71
- if (exports.federationDirectives.has(node.name.value) ||
61
+ if (federationDirectives.has(node.name.value) ||
72
62
  additionalFederationDirectives?.has(node.name.value) ||
73
63
  (node.kind === graphql_1.Kind.DIRECTIVE_DEFINITION && specifiedDirectives.has(node.name.value))) {
74
64
  return null;
@@ -88,12 +78,12 @@ function transformSupergraphToPublicSchema(documentNode) {
88
78
  [graphql_1.Kind.SCHEMA_EXTENSION]: () => null,
89
79
  [graphql_1.Kind.SCHEMA_DEFINITION]: () => null,
90
80
  [graphql_1.Kind.SCALAR_TYPE_DEFINITION](node) {
91
- if (exports.federationScalars.has(node.name.value) || hasInaccessibleDirective(node)) {
81
+ if (federationScalars.has(node.name.value) || hasInaccessibleDirective(node)) {
92
82
  return null;
93
83
  }
94
84
  },
95
85
  [graphql_1.Kind.ENUM_TYPE_DEFINITION](node) {
96
- if (exports.federationEnums.has(node.name.value) || hasInaccessibleDirective(node)) {
86
+ if (federationEnums.has(node.name.value) || hasInaccessibleDirective(node)) {
97
87
  return null;
98
88
  }
99
89
  },
package/cjs/index.js CHANGED
@@ -14,13 +14,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.sortSDL = exports.containsSupergraphSpec = exports.transformSupergraphToPublicSchema = void 0;
17
+ exports.sortSDL = exports.transformSupergraphToPublicSchema = void 0;
18
18
  __exportStar(require("./compose.js"), exports);
19
19
  __exportStar(require("./types.js"), exports);
20
20
  __exportStar(require("./validate.js"), exports);
21
21
  var transform_supergraph_to_public_schema_js_1 = require("./graphql/transform-supergraph-to-public-schema.js");
22
22
  Object.defineProperty(exports, "transformSupergraphToPublicSchema", { enumerable: true, get: function () { return transform_supergraph_to_public_schema_js_1.transformSupergraphToPublicSchema; } });
23
- var contains_supergraph_spec_js_1 = require("./graphql/contains-supergraph-spec.js");
24
- Object.defineProperty(exports, "containsSupergraphSpec", { enumerable: true, get: function () { return contains_supergraph_spec_js_1.containsSupergraphSpec; } });
25
23
  var sort_sdl_js_1 = require("./graphql/sort-sdl.js");
26
24
  Object.defineProperty(exports, "sortSDL", { enumerable: true, get: function () { return sort_sdl_js_1.sortSDL; } });
package/esm/compose.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { Kind } from 'graphql';
2
2
  import { print } from './graphql/printer.js';
3
+ import { transformSupergraphToPublicSchema } from './graphql/transform-supergraph-to-public-schema.js';
3
4
  import { sdl as authenticatedSDL } from './specifications/authenticated.js';
4
5
  import { sdl as inaccessibleSDL } from './specifications/inaccessible.js';
5
6
  import { sdl as joinSDL } from './specifications/join.js';
@@ -41,6 +42,7 @@ export function composeServices(services, __internal) {
41
42
  const usedPolicySpec = validationResult.specs.policy;
42
43
  const usedRequiresScopesSpec = validationResult.specs.requiresScopes;
43
44
  const usedAuthenticatedSpec = validationResult.specs.authenticated;
45
+ let _publicSdl;
44
46
  return {
45
47
  supergraphSdl: `
46
48
  schema
@@ -77,6 +79,16 @@ ${print({
77
79
  definitions: validationResult.supergraph,
78
80
  })}
79
81
  `,
82
+ get publicSdl() {
83
+ if (_publicSdl) {
84
+ return _publicSdl;
85
+ }
86
+ _publicSdl = print(transformSupergraphToPublicSchema({
87
+ kind: Kind.DOCUMENT,
88
+ definitions: validationResult.supergraph,
89
+ }));
90
+ return _publicSdl;
91
+ },
80
92
  };
81
93
  }
82
94
  export function assertCompositionSuccess(compositionResult, message) {
@@ -1,23 +1,13 @@
1
1
  import { Kind, specifiedDirectives as specifiedDirectivesArray, visit, } from 'graphql';
2
- export const federationScalars = new Set([
3
- '_FieldSet',
4
- 'link__Import',
5
- 'join__FieldSet',
6
- 'join__DirectiveArguments',
7
- 'policy__Policy',
8
- 'requiresScopes__Scope',
9
- ]);
10
- export const federationEnums = new Set(['core__Purpose', 'join__Graph', 'link__Purpose']);
11
- export const federationDirectives = new Set([
2
+ const federationScalars = new Set(['_FieldSet', 'link__Import', 'join__FieldSet']);
3
+ const federationEnums = new Set(['core__Purpose', 'join__Graph', 'link__Purpose']);
4
+ const federationDirectives = new Set([
12
5
  'link',
13
- 'core',
14
6
  'tag',
15
7
  'join__graph',
16
8
  'join__type',
17
- 'join__owner',
18
9
  'join__implements',
19
10
  'join__unionMember',
20
- 'join__directive',
21
11
  'join__enumValue',
22
12
  'join__field',
23
13
  'inaccessible',
package/esm/index.js CHANGED
@@ -2,5 +2,4 @@ export * from './compose.js';
2
2
  export * from './types.js';
3
3
  export * from './validate.js';
4
4
  export { transformSupergraphToPublicSchema } from './graphql/transform-supergraph-to-public-schema.js';
5
- export { containsSupergraphSpec } from './graphql/contains-supergraph-spec.js';
6
5
  export { sortSDL } from './graphql/sort-sdl.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@theguild/federation-composition",
3
- "version": "0.8.2",
3
+ "version": "0.9.0-alpha-20240226114817-be912f4",
4
4
  "description": "Open Source Composition library for Apollo Federation",
5
5
  "peerDependencies": {
6
6
  "graphql": "^16.0.0"
@@ -10,6 +10,7 @@ export interface CompositionFailure {
10
10
  }
11
11
  export interface CompositionSuccess {
12
12
  supergraphSdl: string;
13
+ publicSdl: string;
13
14
  errors?: undefined;
14
15
  }
15
16
  export declare function assertCompositionSuccess(compositionResult: CompositionResult, message?: string): asserts compositionResult is CompositionSuccess;
@@ -10,6 +10,7 @@ export interface CompositionFailure {
10
10
  }
11
11
  export interface CompositionSuccess {
12
12
  supergraphSdl: string;
13
+ publicSdl: string;
13
14
  errors?: undefined;
14
15
  }
15
16
  export declare function assertCompositionSuccess(compositionResult: CompositionResult, message?: string): asserts compositionResult is CompositionSuccess;
@@ -1,6 +1,3 @@
1
1
  import { type DocumentNode } from 'graphql';
2
- export declare const federationScalars: Set<string>;
3
- export declare const federationEnums: Set<string>;
4
- export declare const federationDirectives: Set<string>;
5
2
  export declare function transformSupergraphToPublicSchema(documentNode: DocumentNode): DocumentNode;
6
3
  //# sourceMappingURL=transform-supergraph-to-public-schema.d.ts.map
@@ -1,6 +1,3 @@
1
1
  import { type DocumentNode } from 'graphql';
2
- export declare const federationScalars: Set<string>;
3
- export declare const federationEnums: Set<string>;
4
- export declare const federationDirectives: Set<string>;
5
2
  export declare function transformSupergraphToPublicSchema(documentNode: DocumentNode): DocumentNode;
6
3
  //# sourceMappingURL=transform-supergraph-to-public-schema.d.ts.map
@@ -2,6 +2,5 @@ export * from './compose.cjs';
2
2
  export * from './types.cjs';
3
3
  export * from './validate.cjs';
4
4
  export { transformSupergraphToPublicSchema } from './graphql/transform-supergraph-to-public-schema.cjs';
5
- export { containsSupergraphSpec } from './graphql/contains-supergraph-spec.cjs';
6
5
  export { sortSDL } from './graphql/sort-sdl.cjs';
7
6
  //# sourceMappingURL=index.d.ts.map
@@ -2,6 +2,5 @@ export * from './compose.js';
2
2
  export * from './types.js';
3
3
  export * from './validate.js';
4
4
  export { transformSupergraphToPublicSchema } from './graphql/transform-supergraph-to-public-schema.js';
5
- export { containsSupergraphSpec } from './graphql/contains-supergraph-spec.js';
6
5
  export { sortSDL } from './graphql/sort-sdl.js';
7
6
  //# sourceMappingURL=index.d.ts.map
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.containsSupergraphSpec = void 0;
4
- const transform_supergraph_to_public_schema_js_1 = require("./transform-supergraph-to-public-schema.js");
5
- const supergraphSpecDetectionRegex = new RegExp(Array.from(transform_supergraph_to_public_schema_js_1.federationScalars)
6
- .concat(Array.from(transform_supergraph_to_public_schema_js_1.federationEnums))
7
- .map(name => [`\\[${name}`, `\\s${name}`])
8
- .flat(2)
9
- .concat(Array.from(transform_supergraph_to_public_schema_js_1.federationDirectives).map(name => `@${name}`))
10
- .join('|'));
11
- function containsSupergraphSpec(sdl) {
12
- return supergraphSpecDetectionRegex.test(sdl);
13
- }
14
- exports.containsSupergraphSpec = containsSupergraphSpec;
@@ -1,10 +0,0 @@
1
- import { federationDirectives, federationEnums, federationScalars } from "./transform-supergraph-to-public-schema.js";
2
- const supergraphSpecDetectionRegex = new RegExp(Array.from(federationScalars)
3
- .concat(Array.from(federationEnums))
4
- .map(name => [`\\[${name}`, `\\s${name}`])
5
- .flat(2)
6
- .concat(Array.from(federationDirectives).map(name => `@${name}`))
7
- .join('|'));
8
- export function containsSupergraphSpec(sdl) {
9
- return supergraphSpecDetectionRegex.test(sdl);
10
- }
@@ -1,2 +0,0 @@
1
- export declare function containsSupergraphSpec(sdl: string): boolean;
2
- //# sourceMappingURL=contains-supergraph-spec.d.ts.map
@@ -1,2 +0,0 @@
1
- export declare function containsSupergraphSpec(sdl: string): boolean;
2
- //# sourceMappingURL=contains-supergraph-spec.d.ts.map