@apollo/federation-internals 2.9.0-connectors.9 → 2.9.1
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/argumentCompositionStrategies.d.ts +17 -6
- package/dist/argumentCompositionStrategies.d.ts.map +1 -1
- package/dist/argumentCompositionStrategies.js +57 -19
- package/dist/argumentCompositionStrategies.js.map +1 -1
- package/dist/definitions.d.ts +1 -0
- package/dist/definitions.d.ts.map +1 -1
- package/dist/definitions.js +12 -10
- package/dist/definitions.js.map +1 -1
- package/dist/error.d.ts +19 -0
- package/dist/error.d.ts.map +1 -1
- package/dist/error.js +38 -0
- package/dist/error.js.map +1 -1
- package/dist/extractSubgraphsFromSupergraph.d.ts.map +1 -1
- package/dist/extractSubgraphsFromSupergraph.js +77 -21
- package/dist/extractSubgraphsFromSupergraph.js.map +1 -1
- package/dist/federation.d.ts +9 -2
- package/dist/federation.d.ts.map +1 -1
- package/dist/federation.js +42 -5
- package/dist/federation.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/knownCoreFeatures.d.ts +3 -0
- package/dist/knownCoreFeatures.d.ts.map +1 -1
- package/dist/knownCoreFeatures.js +12 -1
- package/dist/knownCoreFeatures.js.map +1 -1
- package/dist/operations.d.ts +3 -1
- package/dist/operations.d.ts.map +1 -1
- package/dist/operations.js +26 -5
- package/dist/operations.js.map +1 -1
- package/dist/schemaUpgrader.d.ts.map +1 -1
- package/dist/schemaUpgrader.js +50 -31
- package/dist/schemaUpgrader.js.map +1 -1
- package/dist/specs/coreSpec.d.ts +3 -1
- package/dist/specs/coreSpec.d.ts.map +1 -1
- package/dist/specs/coreSpec.js +19 -3
- package/dist/specs/coreSpec.js.map +1 -1
- package/dist/specs/costSpec.d.ts +20 -0
- package/dist/specs/costSpec.d.ts.map +1 -0
- package/dist/specs/costSpec.js +55 -0
- package/dist/specs/costSpec.js.map +1 -0
- package/dist/specs/federationSpec.d.ts +6 -1
- package/dist/specs/federationSpec.d.ts.map +1 -1
- package/dist/specs/federationSpec.js +15 -1
- package/dist/specs/federationSpec.js.map +1 -1
- package/dist/specs/sourceSpec.d.ts +69 -0
- package/dist/specs/sourceSpec.d.ts.map +1 -0
- package/dist/specs/sourceSpec.js +345 -0
- package/dist/specs/sourceSpec.js.map +1 -0
- package/dist/supergraphs.d.ts +9 -2
- package/dist/supergraphs.d.ts.map +1 -1
- package/dist/supergraphs.js +21 -2
- package/dist/supergraphs.js.map +1 -1
- package/dist/values.d.ts.map +1 -1
- package/dist/values.js +14 -5
- package/dist/values.js.map +1 -1
- package/package.json +1 -1
- package/src/argumentCompositionStrategies.ts +77 -22
- package/src/definitions.ts +25 -9
- package/src/error.ts +137 -4
- package/src/extractSubgraphsFromSupergraph.ts +90 -22
- package/src/federation.ts +89 -33
- package/src/index.ts +2 -1
- package/src/knownCoreFeatures.ts +15 -0
- package/src/operations.ts +41 -4
- package/src/schemaUpgrader.ts +55 -31
- package/src/specs/coreSpec.ts +33 -6
- package/src/specs/costSpec.ts +68 -0
- package/src/specs/federationSpec.ts +17 -1
- package/src/specs/sourceSpec.ts +607 -0
- package/src/supergraphs.ts +33 -4
- package/src/values.ts +13 -5
- package/dist/specs/connectSpec.d.ts +0 -42
- package/dist/specs/connectSpec.d.ts.map +0 -1
- package/dist/specs/connectSpec.js +0 -83
- package/dist/specs/connectSpec.js.map +0 -1
- package/src/specs/connectSpec.ts +0 -183
package/src/values.ts
CHANGED
|
@@ -135,8 +135,10 @@ export function valueEquals(a: any, b: any): boolean {
|
|
|
135
135
|
if (Array.isArray(a)) {
|
|
136
136
|
return Array.isArray(b) && arrayValueEquals(a, b) ;
|
|
137
137
|
}
|
|
138
|
-
|
|
139
|
-
|
|
138
|
+
// Note that typeof null === 'object', so we have to manually rule that out
|
|
139
|
+
// here.
|
|
140
|
+
if (a !== null && typeof a === 'object') {
|
|
141
|
+
return b !== null && typeof b === 'object' && objectEquals(a, b);
|
|
140
142
|
}
|
|
141
143
|
return a === b;
|
|
142
144
|
}
|
|
@@ -224,8 +226,10 @@ function applyDefaultValues(value: any, type: InputType): any {
|
|
|
224
226
|
if (fieldValue === undefined) {
|
|
225
227
|
if (field.defaultValue !== undefined) {
|
|
226
228
|
updated[field.name] = applyDefaultValues(field.defaultValue, field.type);
|
|
227
|
-
} else if (isNonNullType(field.type)) {
|
|
228
|
-
|
|
229
|
+
} else if (!isNonNullType(field.type)) {
|
|
230
|
+
updated[field.name] = null;
|
|
231
|
+
} else {
|
|
232
|
+
throw ERRORS.INVALID_GRAPHQL.err(`Required field "${field.name}" of type ${type} was not provided.`);
|
|
229
233
|
}
|
|
230
234
|
} else {
|
|
231
235
|
updated[field.name] = applyDefaultValues(fieldValue, field.type);
|
|
@@ -249,8 +253,12 @@ export function withDefaultValues(value: any, argument: ArgumentDefinition<any>)
|
|
|
249
253
|
throw buildError(`Cannot compute default value for argument ${argument} as the type is undefined`);
|
|
250
254
|
}
|
|
251
255
|
if (value === undefined) {
|
|
252
|
-
if (argument.defaultValue) {
|
|
256
|
+
if (argument.defaultValue !== undefined) {
|
|
253
257
|
return applyDefaultValues(argument.defaultValue, argument.type);
|
|
258
|
+
} else if (!isNonNullType(argument.type)) {
|
|
259
|
+
return null;
|
|
260
|
+
} else {
|
|
261
|
+
throw ERRORS.INVALID_GRAPHQL.err(`Required argument "${argument.coordinate}" was not provided.`);
|
|
254
262
|
}
|
|
255
263
|
}
|
|
256
264
|
return applyDefaultValues(value, argument.type);
|
|
@@ -1,42 +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 type SourceDirectiveArgs = {
|
|
12
|
-
name: string;
|
|
13
|
-
http: SourceDirectiveHTTP;
|
|
14
|
-
};
|
|
15
|
-
export type SourceDirectiveHTTP = {
|
|
16
|
-
baseURL: string;
|
|
17
|
-
headers?: HTTPHeaderMapping[];
|
|
18
|
-
};
|
|
19
|
-
type HTTPHeaderMapping = {
|
|
20
|
-
name: string;
|
|
21
|
-
as?: string;
|
|
22
|
-
value?: string;
|
|
23
|
-
};
|
|
24
|
-
type URLPathTemplate = string;
|
|
25
|
-
type JSONSelection = string;
|
|
26
|
-
export type ConnectDirectiveArgs = {
|
|
27
|
-
source: string;
|
|
28
|
-
http: ConnectDirectiveHTTP;
|
|
29
|
-
selection?: JSONSelection;
|
|
30
|
-
};
|
|
31
|
-
export type ConnectDirectiveHTTP = {
|
|
32
|
-
GET?: URLPathTemplate;
|
|
33
|
-
POST?: URLPathTemplate;
|
|
34
|
-
PUT?: URLPathTemplate;
|
|
35
|
-
PATCH?: URLPathTemplate;
|
|
36
|
-
DELETE?: URLPathTemplate;
|
|
37
|
-
body?: JSONSelection;
|
|
38
|
-
headers?: HTTPHeaderMapping[];
|
|
39
|
-
};
|
|
40
|
-
export declare const CONNECT_VERSIONS: FeatureDefinitions<ConnectSpecDefinition>;
|
|
41
|
-
export {};
|
|
42
|
-
//# 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,EAAoB,YAAY,EAAC,MAAM,SAAS,CAAC;AACxD,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;IAyFnD,IAAI,kBAAkB,IAAI,WAAW,CAEpC;CACF;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,mBAAmB,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAC/B,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,eAAe,GAAG,MAAM,CAAC;AAC9B,KAAK,aAAa,GAAG,MAAM,CAAC;AAE5B,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,oBAAoB,CAAC;IAC3B,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,GAAG,CAAC,EAAE,eAAe,CAAC;IACtB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,GAAG,CAAC,EAAE,eAAe,CAAC;IACtB,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,gBAAgB,2CACwD,CAAC"}
|
|
@@ -1,83 +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('from')).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', new definitions_1.NonNullType(ConnectHTTP));
|
|
62
|
-
connect.addArgument('selection', new definitions_1.NonNullType(JSONSelection));
|
|
63
|
-
connect.addArgument('entity', schema.booleanType(), false);
|
|
64
|
-
const source = this.addDirective(schema, SOURCE).addLocations(graphql_1.DirectiveLocation.SCHEMA);
|
|
65
|
-
source.repeatable = true;
|
|
66
|
-
source.addArgument('name', new definitions_1.NonNullType(schema.stringType()));
|
|
67
|
-
const SourceHTTP = schema.addType(new definitions_1.InputObjectType(this.typeNameInSchema(schema, SOURCE_HTTP)));
|
|
68
|
-
SourceHTTP.addField(new definitions_1.InputFieldDefinition('baseURL')).type =
|
|
69
|
-
new definitions_1.NonNullType(schema.stringType());
|
|
70
|
-
SourceHTTP.addField(new definitions_1.InputFieldDefinition('headers')).type =
|
|
71
|
-
new definitions_1.ListType(new definitions_1.NonNullType(HTTPHeaderMapping));
|
|
72
|
-
source.addArgument('http', new definitions_1.NonNullType(SourceHTTP));
|
|
73
|
-
return [];
|
|
74
|
-
}
|
|
75
|
-
get defaultCorePurpose() {
|
|
76
|
-
return 'EXECUTION';
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
exports.ConnectSpecDefinition = ConnectSpecDefinition;
|
|
80
|
-
exports.CONNECT_VERSIONS = new coreSpec_1.FeatureDefinitions(exports.connectIdentity)
|
|
81
|
-
.add(new ConnectSpecDefinition(new coreSpec_1.FeatureVersion(0, 1), new coreSpec_1.FeatureVersion(2, 9)));
|
|
82
|
-
(0, knownCoreFeatures_1.registerKnownFeature)(exports.CONNECT_VERSIONS);
|
|
83
|
-
//# 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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"}
|
package/src/specs/connectSpec.ts
DELETED
|
@@ -1,183 +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
|
-
entity: Boolean = false
|
|
64
|
-
) repeatable on FIELD_DEFINITION
|
|
65
|
-
*/
|
|
66
|
-
const connect = this.addDirective(schema, CONNECT).addLocations(DirectiveLocation.FIELD_DEFINITION);
|
|
67
|
-
connect.repeatable = true;
|
|
68
|
-
|
|
69
|
-
connect.addArgument(SOURCE, schema.stringType());
|
|
70
|
-
|
|
71
|
-
/*
|
|
72
|
-
input HTTPHeaderMapping {
|
|
73
|
-
name: String!
|
|
74
|
-
from: String
|
|
75
|
-
value: String
|
|
76
|
-
}
|
|
77
|
-
*/
|
|
78
|
-
const HTTPHeaderMapping = schema.addType(new InputObjectType(this.typeNameInSchema(schema, HTTP_HEADER_MAPPING)!));
|
|
79
|
-
HTTPHeaderMapping.addField(new InputFieldDefinition('name')).type =
|
|
80
|
-
new NonNullType(schema.stringType());
|
|
81
|
-
HTTPHeaderMapping.addField(new InputFieldDefinition('from')).type =
|
|
82
|
-
schema.stringType();
|
|
83
|
-
HTTPHeaderMapping.addField(new InputFieldDefinition('value')).type =
|
|
84
|
-
schema.stringType();
|
|
85
|
-
|
|
86
|
-
/*
|
|
87
|
-
input ConnectHTTP {
|
|
88
|
-
GET: URLPathTemplate
|
|
89
|
-
POST: URLPathTemplate
|
|
90
|
-
PUT: URLPathTemplate
|
|
91
|
-
PATCH: URLPathTemplate
|
|
92
|
-
DELETE: URLPathTemplate
|
|
93
|
-
body: JSONSelection
|
|
94
|
-
headers: [HTTPHeaderMapping!]
|
|
95
|
-
}
|
|
96
|
-
*/
|
|
97
|
-
const ConnectHTTP = schema.addType(new InputObjectType(this.typeNameInSchema(schema, CONNECT_HTTP)!));
|
|
98
|
-
ConnectHTTP.addField(new InputFieldDefinition('GET')).type = URLPathTemplate;
|
|
99
|
-
ConnectHTTP.addField(new InputFieldDefinition('POST')).type = URLPathTemplate;
|
|
100
|
-
ConnectHTTP.addField(new InputFieldDefinition('PUT')).type = URLPathTemplate;
|
|
101
|
-
ConnectHTTP.addField(new InputFieldDefinition('PATCH')).type = URLPathTemplate;
|
|
102
|
-
ConnectHTTP.addField(new InputFieldDefinition('DELETE')).type = URLPathTemplate;
|
|
103
|
-
ConnectHTTP.addField(new InputFieldDefinition('body')).type = JSONSelection;
|
|
104
|
-
ConnectHTTP.addField(new InputFieldDefinition('headers')).type =
|
|
105
|
-
new ListType(new NonNullType(HTTPHeaderMapping));
|
|
106
|
-
connect.addArgument('http', new NonNullType(ConnectHTTP));
|
|
107
|
-
|
|
108
|
-
connect.addArgument('selection', new NonNullType(JSONSelection));
|
|
109
|
-
connect.addArgument('entity', schema.booleanType(), false);
|
|
110
|
-
|
|
111
|
-
/*
|
|
112
|
-
directive @source(
|
|
113
|
-
name: String!
|
|
114
|
-
http: ConnectHTTP
|
|
115
|
-
) repeatable on SCHEMA
|
|
116
|
-
*/
|
|
117
|
-
const source = this.addDirective(schema, SOURCE).addLocations(
|
|
118
|
-
DirectiveLocation.SCHEMA,
|
|
119
|
-
);
|
|
120
|
-
source.repeatable = true;
|
|
121
|
-
source.addArgument('name', new NonNullType(schema.stringType()));
|
|
122
|
-
|
|
123
|
-
/*
|
|
124
|
-
input SourceHTTP {
|
|
125
|
-
baseURL: String!
|
|
126
|
-
headers: [HTTPHeaderMapping!]
|
|
127
|
-
}
|
|
128
|
-
*/
|
|
129
|
-
const SourceHTTP = schema.addType(new InputObjectType(this.typeNameInSchema(schema, SOURCE_HTTP)!));
|
|
130
|
-
SourceHTTP.addField(new InputFieldDefinition('baseURL')).type =
|
|
131
|
-
new NonNullType(schema.stringType());
|
|
132
|
-
SourceHTTP.addField(new InputFieldDefinition('headers')).type =
|
|
133
|
-
new ListType(new NonNullType(HTTPHeaderMapping));
|
|
134
|
-
|
|
135
|
-
source.addArgument('http', new NonNullType(SourceHTTP));
|
|
136
|
-
|
|
137
|
-
return [];
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
get defaultCorePurpose(): CorePurpose {
|
|
141
|
-
return 'EXECUTION';
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
export type SourceDirectiveArgs = {
|
|
146
|
-
name: string;
|
|
147
|
-
http: SourceDirectiveHTTP;
|
|
148
|
-
};
|
|
149
|
-
|
|
150
|
-
export type SourceDirectiveHTTP = {
|
|
151
|
-
baseURL: string;
|
|
152
|
-
headers?: HTTPHeaderMapping[];
|
|
153
|
-
};
|
|
154
|
-
|
|
155
|
-
type HTTPHeaderMapping = {
|
|
156
|
-
name: string;
|
|
157
|
-
as?: string;
|
|
158
|
-
value?: string;
|
|
159
|
-
};
|
|
160
|
-
|
|
161
|
-
type URLPathTemplate = string;
|
|
162
|
-
type JSONSelection = string;
|
|
163
|
-
|
|
164
|
-
export type ConnectDirectiveArgs = {
|
|
165
|
-
source: string;
|
|
166
|
-
http: ConnectDirectiveHTTP;
|
|
167
|
-
selection?: JSONSelection;
|
|
168
|
-
};
|
|
169
|
-
|
|
170
|
-
export type ConnectDirectiveHTTP = {
|
|
171
|
-
GET?: URLPathTemplate;
|
|
172
|
-
POST?: URLPathTemplate;
|
|
173
|
-
PUT?: URLPathTemplate;
|
|
174
|
-
PATCH?: URLPathTemplate;
|
|
175
|
-
DELETE?: URLPathTemplate;
|
|
176
|
-
body?: JSONSelection;
|
|
177
|
-
headers?: HTTPHeaderMapping[];
|
|
178
|
-
};
|
|
179
|
-
|
|
180
|
-
export const CONNECT_VERSIONS = new FeatureDefinitions<ConnectSpecDefinition>(connectIdentity)
|
|
181
|
-
.add(new ConnectSpecDefinition(new FeatureVersion(0, 1), new FeatureVersion(2, 9)));
|
|
182
|
-
|
|
183
|
-
registerKnownFeature(CONNECT_VERSIONS);
|