@apollo/federation-internals 2.7.3-testing.0 → 2.7.3

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/dist/index.d.ts CHANGED
@@ -24,5 +24,4 @@ export * from './specs/authenticatedSpec';
24
24
  export * from './specs/requiresScopesSpec';
25
25
  export * from './specs/policySpec';
26
26
  export * from './specs/sourceSpec';
27
- export * from './specs/connectSpec';
28
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAChD,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACnE,cAAc,iCAAiC,CAAC;AAChD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAChD,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACnE,cAAc,iCAAiC,CAAC;AAChD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC"}
package/dist/index.js CHANGED
@@ -42,5 +42,4 @@ __exportStar(require("./specs/authenticatedSpec"), exports);
42
42
  __exportStar(require("./specs/requiresScopesSpec"), exports);
43
43
  __exportStar(require("./specs/policySpec"), exports);
44
44
  __exportStar(require("./specs/sourceSpec"), exports);
45
- __exportStar(require("./specs/connectSpec"), exports);
46
45
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,gDAA8B;AAC9B,0CAAwB;AACxB,2CAAyB;AACzB,+CAA6B;AAC7B,0CAAwB;AACxB,+CAA6B;AAC7B,0CAAwB;AACxB,0CAAwB;AACxB,mDAAiC;AACjC,mDAAiC;AACjC,kDAAgC;AAChC,2DAAyC;AACzC,yDAAuC;AACvC,gDAA8B;AAC9B,0CAAwB;AACxB,mDAAiC;AACjC,gDAA8B;AAC9B,yDAAuC;AACvC,kEAAgD;AAChD,yDAAmE;AAA1D,iIAAA,4BAA4B,OAAA;AACrC,kEAAgD;AAChD,4DAA0C;AAC1C,6DAA2C;AAC3C,qDAAmC;AACnC,qDAAmC;AACnC,sDAAoC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,gDAA8B;AAC9B,0CAAwB;AACxB,2CAAyB;AACzB,+CAA6B;AAC7B,0CAAwB;AACxB,+CAA6B;AAC7B,0CAAwB;AACxB,0CAAwB;AACxB,mDAAiC;AACjC,mDAAiC;AACjC,kDAAgC;AAChC,2DAAyC;AACzC,yDAAuC;AACvC,gDAA8B;AAC9B,0CAAwB;AACxB,mDAAiC;AACjC,gDAA8B;AAC9B,yDAAuC;AACvC,kEAAgD;AAChD,yDAAmE;AAA1D,iIAAA,4BAA4B,OAAA;AACrC,kEAAgD;AAChD,4DAA0C;AAC1C,6DAA2C;AAC3C,qDAAmC;AACnC,qDAAmC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apollo/federation-internals",
3
- "version": "2.7.3-testing.0",
3
+ "version": "2.7.3",
4
4
  "description": "Apollo Federation internal utilities",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/src/index.ts CHANGED
@@ -24,4 +24,3 @@ export * from './specs/authenticatedSpec';
24
24
  export * from './specs/requiresScopesSpec';
25
25
  export * from './specs/policySpec';
26
26
  export * from './specs/sourceSpec';
27
- export * from './specs/connectSpec';
@@ -1,12 +0,0 @@
1
- import { GraphQLError } from 'graphql';
2
- import { CorePurpose, FeatureDefinition, FeatureDefinitions, FeatureVersion } from "./coreSpec";
3
- import { Schema } from '../definitions';
4
- export declare const connectIdentity = "https://specs.apollo.dev/connect";
5
- export declare class ConnectSpecDefinition extends FeatureDefinition {
6
- readonly minimumFederationVersion: FeatureVersion;
7
- constructor(version: FeatureVersion, minimumFederationVersion: FeatureVersion);
8
- addElementsToSchema(schema: Schema): GraphQLError[];
9
- get defaultCorePurpose(): CorePurpose;
10
- }
11
- export declare const CONNECT_VERSIONS: FeatureDefinitions<ConnectSpecDefinition>;
12
- //# sourceMappingURL=connectSpec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"connectSpec.d.ts","sourceRoot":"","sources":["../../src/specs/connectSpec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,YAAY,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,kBAAkB,EAAc,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5G,OAAO,EACL,MAAM,EAKP,MAAM,gBAAgB,CAAC;AAIxB,eAAO,MAAM,eAAe,qCAAqC,CAAC;AAUlE,qBAAa,qBAAsB,SAAQ,iBAAiB;IACrB,QAAQ,CAAC,wBAAwB,EAAE,cAAc;gBAA1E,OAAO,EAAE,cAAc,EAAW,wBAAwB,EAAE,cAAc;IA2BtF,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE;IAuFnD,IAAI,kBAAkB,IAAI,WAAW,CAEpC;CACF;AAED,eAAO,MAAM,gBAAgB,2CACwD,CAAC"}
@@ -1,82 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CONNECT_VERSIONS = exports.ConnectSpecDefinition = exports.connectIdentity = void 0;
4
- const graphql_1 = require("graphql");
5
- const coreSpec_1 = require("./coreSpec");
6
- const definitions_1 = require("../definitions");
7
- const knownCoreFeatures_1 = require("../knownCoreFeatures");
8
- const directiveAndTypeSpecification_1 = require("../directiveAndTypeSpecification");
9
- exports.connectIdentity = 'https://specs.apollo.dev/connect';
10
- const CONNECT = "connect";
11
- const SOURCE = "source";
12
- const URL_PATH_TEMPLATE = "URLPathTemplate";
13
- const JSON_SELECTION = "JSONSelection";
14
- const CONNECT_HTTP = "ConnectHTTP";
15
- const SOURCE_HTTP = "SourceHTTP";
16
- const HTTP_HEADER_MAPPING = "HTTPHeaderMapping";
17
- class ConnectSpecDefinition extends coreSpec_1.FeatureDefinition {
18
- constructor(version, minimumFederationVersion) {
19
- super(new coreSpec_1.FeatureUrl(exports.connectIdentity, 'connect', version), minimumFederationVersion);
20
- this.minimumFederationVersion = minimumFederationVersion;
21
- this.registerDirective((0, directiveAndTypeSpecification_1.createDirectiveSpecification)({
22
- name: CONNECT,
23
- locations: [graphql_1.DirectiveLocation.FIELD_DEFINITION],
24
- repeatable: true,
25
- composes: false,
26
- }));
27
- this.registerDirective((0, directiveAndTypeSpecification_1.createDirectiveSpecification)({
28
- name: SOURCE,
29
- locations: [graphql_1.DirectiveLocation.SCHEMA],
30
- repeatable: true,
31
- composes: false,
32
- }));
33
- this.registerType({ name: URL_PATH_TEMPLATE, checkOrAdd: () => [] });
34
- this.registerType({ name: JSON_SELECTION, checkOrAdd: () => [] });
35
- this.registerType({ name: CONNECT_HTTP, checkOrAdd: () => [] });
36
- this.registerType({ name: SOURCE_HTTP, checkOrAdd: () => [] });
37
- this.registerType({ name: HTTP_HEADER_MAPPING, checkOrAdd: () => [] });
38
- }
39
- addElementsToSchema(schema) {
40
- const URLPathTemplate = this.addScalarType(schema, URL_PATH_TEMPLATE);
41
- const JSONSelection = this.addScalarType(schema, JSON_SELECTION);
42
- const connect = this.addDirective(schema, CONNECT).addLocations(graphql_1.DirectiveLocation.FIELD_DEFINITION);
43
- connect.repeatable = true;
44
- connect.addArgument(SOURCE, schema.stringType());
45
- const HTTPHeaderMapping = schema.addType(new definitions_1.InputObjectType(this.typeNameInSchema(schema, HTTP_HEADER_MAPPING)));
46
- HTTPHeaderMapping.addField(new definitions_1.InputFieldDefinition('name')).type =
47
- new definitions_1.NonNullType(schema.stringType());
48
- HTTPHeaderMapping.addField(new definitions_1.InputFieldDefinition('as')).type =
49
- schema.stringType();
50
- HTTPHeaderMapping.addField(new definitions_1.InputFieldDefinition('value')).type =
51
- schema.stringType();
52
- const ConnectHTTP = schema.addType(new definitions_1.InputObjectType(this.typeNameInSchema(schema, CONNECT_HTTP)));
53
- ConnectHTTP.addField(new definitions_1.InputFieldDefinition('GET')).type = URLPathTemplate;
54
- ConnectHTTP.addField(new definitions_1.InputFieldDefinition('POST')).type = URLPathTemplate;
55
- ConnectHTTP.addField(new definitions_1.InputFieldDefinition('PUT')).type = URLPathTemplate;
56
- ConnectHTTP.addField(new definitions_1.InputFieldDefinition('PATCH')).type = URLPathTemplate;
57
- ConnectHTTP.addField(new definitions_1.InputFieldDefinition('DELETE')).type = URLPathTemplate;
58
- ConnectHTTP.addField(new definitions_1.InputFieldDefinition('body')).type = JSONSelection;
59
- ConnectHTTP.addField(new definitions_1.InputFieldDefinition('headers')).type =
60
- new definitions_1.ListType(new definitions_1.NonNullType(HTTPHeaderMapping));
61
- connect.addArgument('http', ConnectHTTP);
62
- connect.addArgument('selection', JSONSelection);
63
- const source = this.addDirective(schema, SOURCE).addLocations(graphql_1.DirectiveLocation.SCHEMA);
64
- source.repeatable = true;
65
- source.addArgument('name', new definitions_1.NonNullType(schema.stringType()));
66
- const SourceHTTP = schema.addType(new definitions_1.InputObjectType(this.typeNameInSchema(schema, SOURCE_HTTP)));
67
- SourceHTTP.addField(new definitions_1.InputFieldDefinition('baseURL')).type =
68
- new definitions_1.NonNullType(schema.stringType());
69
- SourceHTTP.addField(new definitions_1.InputFieldDefinition('headers')).type =
70
- new definitions_1.ListType(new definitions_1.NonNullType(HTTPHeaderMapping));
71
- source.addArgument('http', SourceHTTP);
72
- return [];
73
- }
74
- get defaultCorePurpose() {
75
- return 'EXECUTION';
76
- }
77
- }
78
- exports.ConnectSpecDefinition = ConnectSpecDefinition;
79
- exports.CONNECT_VERSIONS = new coreSpec_1.FeatureDefinitions(exports.connectIdentity)
80
- .add(new ConnectSpecDefinition(new coreSpec_1.FeatureVersion(0, 1), new coreSpec_1.FeatureVersion(2, 8)));
81
- (0, knownCoreFeatures_1.registerKnownFeature)(exports.CONNECT_VERSIONS);
82
- //# sourceMappingURL=connectSpec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"connectSpec.js","sourceRoot":"","sources":["../../src/specs/connectSpec.ts"],"names":[],"mappings":"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"}
@@ -1,146 +0,0 @@
1
- import { DirectiveLocation, GraphQLError } from 'graphql';
2
- import { CorePurpose, FeatureDefinition, FeatureDefinitions, FeatureUrl, FeatureVersion } from "./coreSpec";
3
- import {
4
- Schema,
5
- NonNullType,
6
- InputObjectType,
7
- InputFieldDefinition,
8
- ListType,
9
- } from '../definitions';
10
- import { registerKnownFeature } from '../knownCoreFeatures';
11
- import { createDirectiveSpecification } from '../directiveAndTypeSpecification';
12
-
13
- export const connectIdentity = 'https://specs.apollo.dev/connect';
14
-
15
- const CONNECT = "connect";
16
- const SOURCE = "source";
17
- const URL_PATH_TEMPLATE = "URLPathTemplate";
18
- const JSON_SELECTION = "JSONSelection";
19
- const CONNECT_HTTP = "ConnectHTTP";
20
- const SOURCE_HTTP = "SourceHTTP";
21
- const HTTP_HEADER_MAPPING = "HTTPHeaderMapping";
22
-
23
- export class ConnectSpecDefinition extends FeatureDefinition {
24
- constructor(version: FeatureVersion, readonly minimumFederationVersion: FeatureVersion) {
25
- super(new FeatureUrl(connectIdentity, 'connect', version), minimumFederationVersion);
26
-
27
- this.registerDirective(createDirectiveSpecification({
28
- name: CONNECT,
29
- locations: [DirectiveLocation.FIELD_DEFINITION],
30
- repeatable: true,
31
- // We "compose" these directives using the `@join__directive` mechanism,
32
- // so they do not need to be composed in the way passing `composes: true`
33
- // here implies.
34
- composes: false,
35
- }));
36
-
37
- this.registerDirective(createDirectiveSpecification({
38
- name: SOURCE,
39
- locations: [DirectiveLocation.SCHEMA],
40
- repeatable: true,
41
- composes: false,
42
- }));
43
-
44
- this.registerType({ name: URL_PATH_TEMPLATE, checkOrAdd: () => [] });
45
- this.registerType({ name: JSON_SELECTION, checkOrAdd: () => [] });
46
- this.registerType({ name: CONNECT_HTTP, checkOrAdd: () => [] });
47
- this.registerType({ name: SOURCE_HTTP, checkOrAdd: () => [] });
48
- this.registerType({ name: HTTP_HEADER_MAPPING, checkOrAdd: () => [] });
49
- }
50
-
51
- addElementsToSchema(schema: Schema): GraphQLError[] {
52
- /* scalar URLPathTemplate */
53
- const URLPathTemplate = this.addScalarType(schema, URL_PATH_TEMPLATE);
54
-
55
- /* scalar JSONSelection */
56
- const JSONSelection = this.addScalarType(schema, JSON_SELECTION);
57
-
58
- /*
59
- directive @connect(
60
- source: String
61
- http: ConnectHTTP
62
- selection: JSONSelection!
63
- ) repeatable on FIELD_DEFINITION
64
- */
65
- const connect = this.addDirective(schema, CONNECT).addLocations(DirectiveLocation.FIELD_DEFINITION);
66
- connect.repeatable = true;
67
-
68
- connect.addArgument(SOURCE, schema.stringType());
69
-
70
- /*
71
- input HTTPHeaderMapping {
72
- name: String!
73
- as: String
74
- value: String
75
- }
76
- */
77
- const HTTPHeaderMapping = schema.addType(new InputObjectType(this.typeNameInSchema(schema, HTTP_HEADER_MAPPING)!));
78
- HTTPHeaderMapping.addField(new InputFieldDefinition('name')).type =
79
- new NonNullType(schema.stringType());
80
- HTTPHeaderMapping.addField(new InputFieldDefinition('as')).type =
81
- schema.stringType();
82
- HTTPHeaderMapping.addField(new InputFieldDefinition('value')).type =
83
- schema.stringType();
84
-
85
- /*
86
- input ConnectHTTP {
87
- GET: URLPathTemplate
88
- POST: URLPathTemplate
89
- PUT: URLPathTemplate
90
- PATCH: URLPathTemplate
91
- DELETE: URLPathTemplate
92
- body: JSONSelection
93
- headers: [HTTPHeaderMapping!]
94
- }
95
- */
96
- const ConnectHTTP = schema.addType(new InputObjectType(this.typeNameInSchema(schema, CONNECT_HTTP)!));
97
- ConnectHTTP.addField(new InputFieldDefinition('GET')).type = URLPathTemplate;
98
- ConnectHTTP.addField(new InputFieldDefinition('POST')).type = URLPathTemplate;
99
- ConnectHTTP.addField(new InputFieldDefinition('PUT')).type = URLPathTemplate;
100
- ConnectHTTP.addField(new InputFieldDefinition('PATCH')).type = URLPathTemplate;
101
- ConnectHTTP.addField(new InputFieldDefinition('DELETE')).type = URLPathTemplate;
102
- ConnectHTTP.addField(new InputFieldDefinition('body')).type = JSONSelection;
103
- ConnectHTTP.addField(new InputFieldDefinition('headers')).type =
104
- new ListType(new NonNullType(HTTPHeaderMapping));
105
- connect.addArgument('http', ConnectHTTP);
106
-
107
- connect.addArgument('selection', JSONSelection);
108
-
109
- /*
110
- directive @source(
111
- name: String!
112
- http: ConnectHTTP
113
- ) repeatable on SCHEMA
114
- */
115
- const source = this.addDirective(schema, SOURCE).addLocations(
116
- DirectiveLocation.SCHEMA,
117
- );
118
- source.repeatable = true;
119
- source.addArgument('name', new NonNullType(schema.stringType()));
120
-
121
- /*
122
- input SourceHTTP {
123
- baseURL: String!
124
- headers: [HTTPHeaderMapping!]
125
- }
126
- */
127
- const SourceHTTP = schema.addType(new InputObjectType(this.typeNameInSchema(schema, SOURCE_HTTP)!));
128
- SourceHTTP.addField(new InputFieldDefinition('baseURL')).type =
129
- new NonNullType(schema.stringType());
130
- SourceHTTP.addField(new InputFieldDefinition('headers')).type =
131
- new ListType(new NonNullType(HTTPHeaderMapping));
132
-
133
- source.addArgument('http', SourceHTTP);
134
-
135
- return [];
136
- }
137
-
138
- get defaultCorePurpose(): CorePurpose {
139
- return 'EXECUTION';
140
- }
141
- }
142
-
143
- export const CONNECT_VERSIONS = new FeatureDefinitions<ConnectSpecDefinition>(connectIdentity)
144
- .add(new ConnectSpecDefinition(new FeatureVersion(0, 1), new FeatureVersion(2, 8)));
145
-
146
- registerKnownFeature(CONNECT_VERSIONS);