@apollo/federation-internals 2.4.4 → 2.4.6
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/Subgraph.d.ts +1 -0
- package/dist/Subgraph.d.ts.map +1 -0
- package/dist/Subgraph.js +2 -0
- package/dist/Subgraph.js.map +1 -0
- package/dist/argumentCompositionStrategies.d.ts +34 -0
- package/dist/argumentCompositionStrategies.d.ts.map +1 -0
- package/dist/argumentCompositionStrategies.js +35 -0
- package/dist/argumentCompositionStrategies.js.map +1 -0
- package/dist/buildSchema.d.ts +10 -0
- package/dist/buildSchema.d.ts.map +1 -0
- package/dist/buildSchema.js +362 -0
- package/dist/buildSchema.js.map +1 -0
- package/dist/coreSpec.d.ts +127 -0
- package/dist/coreSpec.d.ts.map +1 -0
- package/dist/coreSpec.js +590 -0
- package/dist/coreSpec.js.map +1 -0
- package/dist/debug.d.ts +15 -0
- package/dist/debug.d.ts.map +1 -0
- package/dist/debug.js +122 -0
- package/dist/debug.js.map +1 -0
- package/dist/definitions.d.ts +663 -0
- package/dist/definitions.d.ts.map +1 -0
- package/dist/definitions.js +2841 -0
- package/dist/definitions.js.map +1 -0
- package/dist/directiveAndTypeSpecification.d.ts +67 -0
- package/dist/directiveAndTypeSpecification.d.ts.map +1 -0
- package/dist/directiveAndTypeSpecification.js +271 -0
- package/dist/directiveAndTypeSpecification.js.map +1 -0
- package/dist/error.d.ts +128 -0
- package/dist/error.d.ts.map +1 -0
- package/dist/error.js +315 -0
- package/dist/error.js.map +1 -0
- package/dist/extractSubgraphsFromSupergraph.d.ts +8 -0
- package/dist/extractSubgraphsFromSupergraph.d.ts.map +1 -0
- package/dist/extractSubgraphsFromSupergraph.js +576 -0
- package/dist/extractSubgraphsFromSupergraph.js.map +1 -0
- package/dist/federation.d.ts +175 -0
- package/dist/federation.d.ts.map +1 -0
- package/dist/federation.js +1414 -0
- package/dist/federation.js.map +1 -0
- package/dist/federationSpec.d.ts +25 -0
- package/dist/federationSpec.d.ts.map +1 -0
- package/dist/federationSpec.js +125 -0
- package/dist/federationSpec.js.map +1 -0
- package/dist/genErrorCodeDoc.d.ts +2 -0
- package/dist/genErrorCodeDoc.d.ts.map +1 -0
- package/dist/genErrorCodeDoc.js +61 -0
- package/dist/genErrorCodeDoc.js.map +1 -0
- package/dist/graphQLJSSchemaToAST.d.ts +8 -0
- package/dist/graphQLJSSchemaToAST.d.ts.map +1 -0
- package/dist/graphQLJSSchemaToAST.js +96 -0
- package/dist/graphQLJSSchemaToAST.js.map +1 -0
- package/dist/inaccessibleSpec.d.ts +18 -0
- package/dist/inaccessibleSpec.d.ts.map +1 -0
- package/dist/inaccessibleSpec.js +655 -0
- package/dist/inaccessibleSpec.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +42 -0
- package/dist/index.js.map +1 -0
- package/dist/introspection.d.ts +6 -0
- package/dist/introspection.d.ts.map +1 -0
- package/dist/introspection.js +96 -0
- package/dist/introspection.js.map +1 -0
- package/dist/joinSpec.d.ts +51 -0
- package/dist/joinSpec.d.ts.map +1 -0
- package/dist/joinSpec.js +160 -0
- package/dist/joinSpec.js.map +1 -0
- package/dist/knownCoreFeatures.d.ts +5 -0
- package/dist/knownCoreFeatures.d.ts.map +1 -0
- package/dist/knownCoreFeatures.js +20 -0
- package/dist/knownCoreFeatures.js.map +1 -0
- package/dist/operations.d.ts +418 -0
- package/dist/operations.d.ts.map +1 -0
- package/dist/operations.js +2068 -0
- package/dist/operations.js.map +1 -0
- package/dist/precompute.d.ts +3 -0
- package/dist/precompute.d.ts.map +1 -0
- package/dist/precompute.js +54 -0
- package/dist/precompute.js.map +1 -0
- package/dist/print.d.ts +28 -0
- package/dist/print.d.ts.map +1 -0
- package/dist/print.js +299 -0
- package/dist/print.js.map +1 -0
- package/dist/schemaUpgrader.d.ts +121 -0
- package/dist/schemaUpgrader.d.ts.map +1 -0
- package/dist/schemaUpgrader.js +570 -0
- package/dist/schemaUpgrader.js.map +1 -0
- package/dist/suggestions.d.ts +3 -0
- package/dist/suggestions.d.ts.map +1 -0
- package/dist/suggestions.js +44 -0
- package/dist/suggestions.js.map +1 -0
- package/dist/supergraphs.d.ts +10 -0
- package/dist/supergraphs.d.ts.map +1 -0
- package/dist/supergraphs.js +76 -0
- package/dist/supergraphs.js.map +1 -0
- package/dist/tagSpec.d.ts +19 -0
- package/dist/tagSpec.d.ts.map +1 -0
- package/dist/tagSpec.js +66 -0
- package/dist/tagSpec.js.map +1 -0
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +64 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +64 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +326 -0
- package/dist/utils.js.map +1 -0
- package/dist/validate.d.ts +4 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/validate.js +239 -0
- package/dist/validate.js.map +1 -0
- package/dist/validation/KnownTypeNamesInFederationRule.d.ts +4 -0
- package/dist/validation/KnownTypeNamesInFederationRule.d.ts.map +1 -0
- package/dist/validation/KnownTypeNamesInFederationRule.js +41 -0
- package/dist/validation/KnownTypeNamesInFederationRule.js.map +1 -0
- package/dist/values.d.ts +23 -0
- package/dist/values.d.ts.map +1 -0
- package/dist/values.js +580 -0
- package/dist/values.js.map +1 -0
- package/package.json +1 -1
- package/src/operations.ts +145 -20
- package/src/utils.ts +1 -1
- package/CHANGELOG.md +0 -205
- package/jest.config.js +0 -11
- package/src/__tests__/coreSpec.test.ts +0 -212
- package/src/__tests__/definitions.test.ts +0 -982
- package/src/__tests__/directiveAndTypeSpecifications.test.ts +0 -41
- package/src/__tests__/extractSubgraphsFromSupergraph.test.ts +0 -748
- package/src/__tests__/federation.test.ts +0 -31
- package/src/__tests__/graphQLJSSchemaToAST.test.ts +0 -156
- package/src/__tests__/matchers/index.ts +0 -1
- package/src/__tests__/matchers/toMatchString.ts +0 -87
- package/src/__tests__/operations.test.ts +0 -1266
- package/src/__tests__/removeInaccessibleElements.test.ts +0 -2471
- package/src/__tests__/schemaUpgrader.test.ts +0 -287
- package/src/__tests__/subgraphValidation.test.ts +0 -1254
- package/src/__tests__/supergraphSdl.graphql +0 -281
- package/src/__tests__/testUtils.ts +0 -28
- package/src/__tests__/toAPISchema.test.ts +0 -53
- package/src/__tests__/tsconfig.json +0 -7
- package/src/__tests__/utils.test.ts +0 -92
- package/src/__tests__/values.test.ts +0 -390
- package/tsconfig.json +0 -10
- package/tsconfig.test.json +0 -8
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { DocumentNode } from "graphql";
|
|
2
|
+
import { CoreFeatures, Schema } from "./definitions";
|
|
3
|
+
import { JoinSpecDefinition } from "./joinSpec";
|
|
4
|
+
export declare function buildSupergraphSchema(supergraphSdl: string | DocumentNode): [Schema, {
|
|
5
|
+
name: string;
|
|
6
|
+
url: string;
|
|
7
|
+
}[]];
|
|
8
|
+
export declare function validateSupergraph(supergraph: Schema): [CoreFeatures, JoinSpecDefinition];
|
|
9
|
+
export declare function isFed1Supergraph(supergraph: Schema): boolean;
|
|
10
|
+
//# sourceMappingURL=supergraphs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supergraphs.d.ts","sourceRoot":"","sources":["../src/supergraphs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAgB,MAAM,SAAS,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,EAAc,MAAM,eAAe,CAAC;AACjE,OAAO,EAAgB,kBAAkB,EAAiB,MAAM,YAAY,CAAC;AAoB7E,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,YAAY,GAAG,CAAC,MAAM,EAAE;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAC,EAAE,CAAC,CAUnH;AAsCD,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAezF;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAE5D"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isFed1Supergraph = exports.validateSupergraph = exports.buildSupergraphSchema = void 0;
|
|
4
|
+
const coreSpec_1 = require("./coreSpec");
|
|
5
|
+
const definitions_1 = require("./definitions");
|
|
6
|
+
const joinSpec_1 = require("./joinSpec");
|
|
7
|
+
const buildSchema_1 = require("./buildSchema");
|
|
8
|
+
const extractSubgraphsFromSupergraph_1 = require("./extractSubgraphsFromSupergraph");
|
|
9
|
+
const error_1 = require("./error");
|
|
10
|
+
const SUPPORTED_FEATURES = new Set([
|
|
11
|
+
'https://specs.apollo.dev/core/v0.1',
|
|
12
|
+
'https://specs.apollo.dev/core/v0.2',
|
|
13
|
+
'https://specs.apollo.dev/join/v0.1',
|
|
14
|
+
'https://specs.apollo.dev/join/v0.2',
|
|
15
|
+
'https://specs.apollo.dev/join/v0.3',
|
|
16
|
+
'https://specs.apollo.dev/tag/v0.1',
|
|
17
|
+
'https://specs.apollo.dev/tag/v0.2',
|
|
18
|
+
'https://specs.apollo.dev/tag/v0.3',
|
|
19
|
+
'https://specs.apollo.dev/inaccessible/v0.1',
|
|
20
|
+
'https://specs.apollo.dev/inaccessible/v0.2',
|
|
21
|
+
]);
|
|
22
|
+
const coreVersionZeroDotOneUrl = coreSpec_1.FeatureUrl.parse('https://specs.apollo.dev/core/v0.1');
|
|
23
|
+
function buildSupergraphSchema(supergraphSdl) {
|
|
24
|
+
const schema = typeof supergraphSdl === 'string'
|
|
25
|
+
? (0, buildSchema_1.buildSchema)(supergraphSdl, { validate: false })
|
|
26
|
+
: (0, buildSchema_1.buildSchemaFromAST)(supergraphSdl, { validate: false });
|
|
27
|
+
const [coreFeatures] = validateSupergraph(schema);
|
|
28
|
+
checkFeatureSupport(coreFeatures);
|
|
29
|
+
schema.validate();
|
|
30
|
+
return [schema, (0, extractSubgraphsFromSupergraph_1.extractSubgraphsNamesAndUrlsFromSupergraph)(schema)];
|
|
31
|
+
}
|
|
32
|
+
exports.buildSupergraphSchema = buildSupergraphSchema;
|
|
33
|
+
function checkFeatureSupport(coreFeatures) {
|
|
34
|
+
const errors = [];
|
|
35
|
+
const coreItself = coreFeatures.coreItself;
|
|
36
|
+
if (coreItself.url.equals(coreVersionZeroDotOneUrl)) {
|
|
37
|
+
const purposefulFeatures = [...coreFeatures.allFeatures()].filter(f => f.purpose);
|
|
38
|
+
if (purposefulFeatures.length > 0) {
|
|
39
|
+
errors.push(error_1.ERRORS.UNSUPPORTED_LINKED_FEATURE.err(`the \`for:\` argument is unsupported by version ${coreItself.url.version} ` +
|
|
40
|
+
`of the core spec. Please upgrade to at least @core v0.2 (https://specs.apollo.dev/core/v0.2).`, {
|
|
41
|
+
nodes: (0, definitions_1.sourceASTs)(coreItself.directive, ...purposefulFeatures.map(f => f.directive))
|
|
42
|
+
}));
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
for (const feature of coreFeatures.allFeatures()) {
|
|
46
|
+
if (feature.url.equals(coreVersionZeroDotOneUrl) || feature.purpose === 'EXECUTION' || feature.purpose === 'SECURITY') {
|
|
47
|
+
if (!SUPPORTED_FEATURES.has(feature.url.base.toString())) {
|
|
48
|
+
errors.push(error_1.ERRORS.UNSUPPORTED_LINKED_FEATURE.err(`feature ${feature.url} is for: ${feature.purpose} but is unsupported`, { nodes: feature.directive.sourceAST }));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (errors.length > 0) {
|
|
53
|
+
throw (0, coreSpec_1.ErrCoreCheckFailed)(errors);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
function validateSupergraph(supergraph) {
|
|
57
|
+
const coreFeatures = supergraph.coreFeatures;
|
|
58
|
+
if (!coreFeatures) {
|
|
59
|
+
throw error_1.ERRORS.INVALID_FEDERATION_SUPERGRAPH.err("Invalid supergraph: must be a core schema");
|
|
60
|
+
}
|
|
61
|
+
const joinFeature = coreFeatures.getByIdentity(joinSpec_1.joinIdentity);
|
|
62
|
+
if (!joinFeature) {
|
|
63
|
+
throw error_1.ERRORS.INVALID_FEDERATION_SUPERGRAPH.err("Invalid supergraph: must use the join spec");
|
|
64
|
+
}
|
|
65
|
+
const joinSpec = joinSpec_1.JOIN_VERSIONS.find(joinFeature.url.version);
|
|
66
|
+
if (!joinSpec) {
|
|
67
|
+
throw error_1.ERRORS.INVALID_FEDERATION_SUPERGRAPH.err(`Invalid supergraph: uses unsupported join spec version ${joinFeature.url.version} (supported versions: ${joinSpec_1.JOIN_VERSIONS.versions().join(', ')})`);
|
|
68
|
+
}
|
|
69
|
+
return [coreFeatures, joinSpec];
|
|
70
|
+
}
|
|
71
|
+
exports.validateSupergraph = validateSupergraph;
|
|
72
|
+
function isFed1Supergraph(supergraph) {
|
|
73
|
+
return validateSupergraph(supergraph)[1].version.equals(new coreSpec_1.FeatureVersion(0, 1));
|
|
74
|
+
}
|
|
75
|
+
exports.isFed1Supergraph = isFed1Supergraph;
|
|
76
|
+
//# sourceMappingURL=supergraphs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supergraphs.js","sourceRoot":"","sources":["../src/supergraphs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { DirectiveLocation, GraphQLError } from "graphql";
|
|
2
|
+
import { FeatureDefinition, FeatureDefinitions, FeatureVersion } from "./coreSpec";
|
|
3
|
+
import { DirectiveDefinition, Schema } from "./definitions";
|
|
4
|
+
import { DirectiveSpecification } from "./directiveAndTypeSpecification";
|
|
5
|
+
export declare const tagIdentity = "https://specs.apollo.dev/tag";
|
|
6
|
+
export declare class TagSpecDefinition extends FeatureDefinition {
|
|
7
|
+
readonly tagLocations: DirectiveLocation[];
|
|
8
|
+
readonly tagDirectiveSpec: DirectiveSpecification;
|
|
9
|
+
private readonly printedTagDefinition;
|
|
10
|
+
constructor(version: FeatureVersion);
|
|
11
|
+
private isV01;
|
|
12
|
+
private isV02;
|
|
13
|
+
tagDirective(schema: Schema): DirectiveDefinition<{
|
|
14
|
+
name: string;
|
|
15
|
+
}>;
|
|
16
|
+
checkCompatibleDirective(definition: DirectiveDefinition): GraphQLError | undefined;
|
|
17
|
+
}
|
|
18
|
+
export declare const TAG_VERSIONS: FeatureDefinitions<TagSpecDefinition>;
|
|
19
|
+
//# sourceMappingURL=tagSpec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tagSpec.d.ts","sourceRoot":"","sources":["../src/tagSpec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAc,cAAc,EAAE,MAAM,YAAY,CAAC;AAC/F,OAAO,EAAE,mBAAmB,EAAe,MAAM,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,EAAgC,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAKvG,eAAO,MAAM,WAAW,iCAAiC,CAAC;AAE1D,qBAAa,iBAAkB,SAAQ,iBAAiB;IACtD,SAAgB,YAAY,EAAE,iBAAiB,EAAE,CAAC;IAClD,SAAgB,gBAAgB,EAAE,sBAAsB,CAAC;IACzD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;gBAElC,OAAO,EAAE,cAAc;IAmCnC,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,KAAK;IAIb,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,CAAC;IAIjE,wBAAwB,CAAC,UAAU,EAAE,mBAAmB,GAAG,YAAY,GAAG,SAAS;CAYpF;AAED,eAAO,MAAM,YAAY,uCAG8B,CAAC"}
|
package/dist/tagSpec.js
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TAG_VERSIONS = exports.TagSpecDefinition = exports.tagIdentity = void 0;
|
|
4
|
+
const graphql_1 = require("graphql");
|
|
5
|
+
const coreSpec_1 = require("./coreSpec");
|
|
6
|
+
const definitions_1 = require("./definitions");
|
|
7
|
+
const directiveAndTypeSpecification_1 = require("./directiveAndTypeSpecification");
|
|
8
|
+
const error_1 = require("./error");
|
|
9
|
+
const knownCoreFeatures_1 = require("./knownCoreFeatures");
|
|
10
|
+
const types_1 = require("./types");
|
|
11
|
+
exports.tagIdentity = 'https://specs.apollo.dev/tag';
|
|
12
|
+
class TagSpecDefinition extends coreSpec_1.FeatureDefinition {
|
|
13
|
+
constructor(version) {
|
|
14
|
+
super(new coreSpec_1.FeatureUrl(exports.tagIdentity, 'tag', version));
|
|
15
|
+
this.tagLocations = [
|
|
16
|
+
graphql_1.DirectiveLocation.FIELD_DEFINITION,
|
|
17
|
+
graphql_1.DirectiveLocation.OBJECT,
|
|
18
|
+
graphql_1.DirectiveLocation.INTERFACE,
|
|
19
|
+
graphql_1.DirectiveLocation.UNION,
|
|
20
|
+
];
|
|
21
|
+
this.printedTagDefinition = 'directive @tag(name: String!) repeatable on FIELD_DEFINITION | INTERFACE | OBJECT | UNION';
|
|
22
|
+
if (!this.isV01()) {
|
|
23
|
+
this.tagLocations.push(graphql_1.DirectiveLocation.ARGUMENT_DEFINITION, graphql_1.DirectiveLocation.SCALAR, graphql_1.DirectiveLocation.ENUM, graphql_1.DirectiveLocation.ENUM_VALUE, graphql_1.DirectiveLocation.INPUT_OBJECT, graphql_1.DirectiveLocation.INPUT_FIELD_DEFINITION);
|
|
24
|
+
this.printedTagDefinition = 'directive @tag(name: String!) repeatable on FIELD_DEFINITION | INTERFACE | OBJECT | UNION | ARGUMENT_DEFINITION | SCALAR | ENUM | ENUM_VALUE | INPUT_OBJECT | INPUT_FIELD_DEFINITION';
|
|
25
|
+
if (!this.isV02()) {
|
|
26
|
+
this.tagLocations.push(graphql_1.DirectiveLocation.SCHEMA);
|
|
27
|
+
this.printedTagDefinition = 'directive @tag(name: String!) repeatable on FIELD_DEFINITION | INTERFACE | OBJECT | UNION | ARGUMENT_DEFINITION | SCALAR | ENUM | ENUM_VALUE | INPUT_OBJECT | INPUT_FIELD_DEFINITION | SCHEMA';
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
this.tagDirectiveSpec = (0, directiveAndTypeSpecification_1.createDirectiveSpecification)({
|
|
31
|
+
name: 'tag',
|
|
32
|
+
locations: this.tagLocations,
|
|
33
|
+
repeatable: true,
|
|
34
|
+
args: [{ name: 'name', type: (schema) => new definitions_1.NonNullType(schema.stringType()) }],
|
|
35
|
+
composes: true,
|
|
36
|
+
supergraphSpecification: () => exports.TAG_VERSIONS.latest(),
|
|
37
|
+
});
|
|
38
|
+
this.registerDirective(this.tagDirectiveSpec);
|
|
39
|
+
}
|
|
40
|
+
isV01() {
|
|
41
|
+
return this.version.equals(new coreSpec_1.FeatureVersion(0, 1));
|
|
42
|
+
}
|
|
43
|
+
isV02() {
|
|
44
|
+
return this.version.equals(new coreSpec_1.FeatureVersion(0, 2));
|
|
45
|
+
}
|
|
46
|
+
tagDirective(schema) {
|
|
47
|
+
return this.directive(schema, 'tag');
|
|
48
|
+
}
|
|
49
|
+
checkCompatibleDirective(definition) {
|
|
50
|
+
const hasUnknownArguments = Object.keys(definition.arguments()).length > 1;
|
|
51
|
+
const nameArg = definition.argument('name');
|
|
52
|
+
const hasValidNameArg = nameArg && (0, types_1.sameType)(nameArg.type, new definitions_1.NonNullType(definition.schema().stringType()));
|
|
53
|
+
const hasValidLocations = definition.locations.every(loc => this.tagLocations.includes(loc));
|
|
54
|
+
if (hasUnknownArguments || !hasValidNameArg || !hasValidLocations) {
|
|
55
|
+
return error_1.ERRORS.DIRECTIVE_DEFINITION_INVALID.err(`Found invalid @tag directive definition. Please ensure the directive definition in your schema's definitions matches the following:\n\t${this.printedTagDefinition}`);
|
|
56
|
+
}
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
exports.TagSpecDefinition = TagSpecDefinition;
|
|
61
|
+
exports.TAG_VERSIONS = new coreSpec_1.FeatureDefinitions(exports.tagIdentity)
|
|
62
|
+
.add(new TagSpecDefinition(new coreSpec_1.FeatureVersion(0, 1)))
|
|
63
|
+
.add(new TagSpecDefinition(new coreSpec_1.FeatureVersion(0, 2)))
|
|
64
|
+
.add(new TagSpecDefinition(new coreSpec_1.FeatureVersion(0, 3)));
|
|
65
|
+
(0, knownCoreFeatures_1.registerKnownFeature)(exports.TAG_VERSIONS);
|
|
66
|
+
//# sourceMappingURL=tagSpec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tagSpec.js","sourceRoot":"","sources":["../src/tagSpec.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AbstractType, InterfaceType, ObjectType, Type, UnionType } from "./definitions";
|
|
2
|
+
export declare const ALL_SUBTYPING_RULES: ("direct" | "nonNullable_downgrade" | "list_upgrade" | "list_propagation" | "nonNullable_propagation")[];
|
|
3
|
+
export type SubtypingRule = typeof ALL_SUBTYPING_RULES[number];
|
|
4
|
+
export declare const DEFAULT_SUBTYPING_RULES: ("direct" | "nonNullable_downgrade" | "list_upgrade" | "list_propagation" | "nonNullable_propagation")[];
|
|
5
|
+
export declare function sameType(t1: Type, t2: Type): boolean;
|
|
6
|
+
export declare function isDirectSubtype(type: AbstractType, maybeSubType: ObjectType | InterfaceType, unionMembershipTester?: (union: UnionType, maybeMember: ObjectType) => boolean, implementsInterfaceTester?: (maybeImplementer: ObjectType | InterfaceType, itf: InterfaceType) => boolean): boolean;
|
|
7
|
+
export declare function isSubtype(type: Type, maybeSubType: Type, allowedRules?: SubtypingRule[], unionMembershipTester?: (union: UnionType, maybeMember: ObjectType) => boolean, implementsInterfaceTester?: (maybeImplementer: ObjectType | InterfaceType, itf: InterfaceType) => boolean): boolean;
|
|
8
|
+
export declare function isStrictSubtype(type: Type, maybeSubType: Type, allowedRules?: SubtypingRule[], unionMembershipTester?: (union: UnionType, maybeMember: ObjectType) => boolean, implementsInterfaceTester?: (maybeImplementer: ObjectType | InterfaceType, itf: InterfaceType) => boolean): boolean;
|
|
9
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,YAAY,EACd,aAAa,EAOb,UAAU,EACV,IAAI,EACJ,SAAS,EACV,MAAM,eAAe,CAAC;AAEvB,eAAO,MAAM,mBAAmB,0GAM/B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAG/D,eAAO,MAAM,uBAAuB,0GAAwD,CAAC;AAc7F,wBAAgB,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO,CASpD;AAgBD,wBAAgB,eAAe,CAC7B,IAAI,EAAE,YAAY,EAClB,YAAY,EAAE,UAAU,GAAG,aAAa,EACxC,qBAAqB,GAAE,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,KAAK,OAAsC,EAC5G,yBAAyB,GAAE,CAAC,gBAAgB,EAAE,UAAU,GAAG,aAAa,EAAE,GAAG,EAAE,aAAa,KAAK,OAA4C,GAC5I,OAAO,CAKT;AAkBD,wBAAgB,SAAS,CACvB,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,IAAI,EAClB,YAAY,GAAE,aAAa,EAA4B,EACvD,qBAAqB,GAAE,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,KAAK,OAAsC,EAC5G,yBAAyB,GAAE,CAAC,gBAAgB,EAAE,UAAU,GAAG,aAAa,EAAE,GAAG,EAAE,aAAa,KAAK,OAA4C,GAC5I,OAAO,CAET;AAQD,wBAAgB,eAAe,CAC7B,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,IAAI,EAClB,YAAY,GAAE,aAAa,EAA4B,EACvD,qBAAqB,GAAE,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,KAAK,OAAsC,EAC5G,yBAAyB,GAAE,CAAC,gBAAgB,EAAE,UAAU,GAAG,aAAa,EAAE,GAAG,EAAE,aAAa,KAAK,OAA4C,GAC5I,OAAO,CA2BT"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isStrictSubtype = exports.isSubtype = exports.isDirectSubtype = exports.sameType = exports.DEFAULT_SUBTYPING_RULES = exports.ALL_SUBTYPING_RULES = void 0;
|
|
4
|
+
const definitions_1 = require("./definitions");
|
|
5
|
+
exports.ALL_SUBTYPING_RULES = [
|
|
6
|
+
'direct',
|
|
7
|
+
'nonNullable_downgrade',
|
|
8
|
+
'list_upgrade',
|
|
9
|
+
'list_propagation',
|
|
10
|
+
'nonNullable_propagation'
|
|
11
|
+
];
|
|
12
|
+
exports.DEFAULT_SUBTYPING_RULES = exports.ALL_SUBTYPING_RULES.filter(r => r !== "list_upgrade");
|
|
13
|
+
function sameType(t1, t2) {
|
|
14
|
+
switch (t1.kind) {
|
|
15
|
+
case 'ListType':
|
|
16
|
+
return (0, definitions_1.isListType)(t2) && sameType(t1.ofType, t2.ofType);
|
|
17
|
+
case 'NonNullType':
|
|
18
|
+
return (0, definitions_1.isNonNullType)(t2) && sameType(t1.ofType, t2.ofType);
|
|
19
|
+
default:
|
|
20
|
+
return (0, definitions_1.isNamedType)(t2) && t1.name === t2.name;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.sameType = sameType;
|
|
24
|
+
function isDirectSubtype(type, maybeSubType, unionMembershipTester = (u, m) => u.hasTypeMember(m), implementsInterfaceTester = (m, i) => m.implementsInterface(i)) {
|
|
25
|
+
if ((0, definitions_1.isUnionType)(type)) {
|
|
26
|
+
return (0, definitions_1.isObjectType)(maybeSubType) && unionMembershipTester(type, maybeSubType);
|
|
27
|
+
}
|
|
28
|
+
return implementsInterfaceTester(maybeSubType, type);
|
|
29
|
+
}
|
|
30
|
+
exports.isDirectSubtype = isDirectSubtype;
|
|
31
|
+
function isSubtype(type, maybeSubType, allowedRules = exports.DEFAULT_SUBTYPING_RULES, unionMembershipTester = (u, m) => u.hasTypeMember(m), implementsInterfaceTester = (m, i) => m.implementsInterface(i)) {
|
|
32
|
+
return sameType(type, maybeSubType) || isStrictSubtype(type, maybeSubType, allowedRules, unionMembershipTester, implementsInterfaceTester);
|
|
33
|
+
}
|
|
34
|
+
exports.isSubtype = isSubtype;
|
|
35
|
+
function isStrictSubtype(type, maybeSubType, allowedRules = exports.DEFAULT_SUBTYPING_RULES, unionMembershipTester = (u, m) => u.hasTypeMember(m), implementsInterfaceTester = (m, i) => m.implementsInterface(i)) {
|
|
36
|
+
switch (maybeSubType.kind) {
|
|
37
|
+
case 'ListType':
|
|
38
|
+
return allowedRules.includes('list_propagation')
|
|
39
|
+
&& (0, definitions_1.isListType)(type)
|
|
40
|
+
&& isSubtype(type.ofType, maybeSubType.ofType, allowedRules, unionMembershipTester, implementsInterfaceTester);
|
|
41
|
+
case 'NonNullType':
|
|
42
|
+
if ((0, definitions_1.isNonNullType)(type)) {
|
|
43
|
+
return allowedRules.includes('nonNullable_propagation')
|
|
44
|
+
&& isSubtype(type.ofType, maybeSubType.ofType, allowedRules, unionMembershipTester, implementsInterfaceTester);
|
|
45
|
+
}
|
|
46
|
+
return allowedRules.includes('nonNullable_downgrade')
|
|
47
|
+
&& isSubtype(type, maybeSubType.ofType, allowedRules, unionMembershipTester, implementsInterfaceTester);
|
|
48
|
+
case 'ObjectType':
|
|
49
|
+
case 'InterfaceType':
|
|
50
|
+
if ((0, definitions_1.isListType)(type)) {
|
|
51
|
+
return allowedRules.includes('list_upgrade')
|
|
52
|
+
&& isSubtype(type.ofType, maybeSubType, allowedRules, unionMembershipTester, implementsInterfaceTester);
|
|
53
|
+
}
|
|
54
|
+
return allowedRules.includes('direct')
|
|
55
|
+
&& ((0, definitions_1.isInterfaceType)(type) || (0, definitions_1.isUnionType)(type))
|
|
56
|
+
&& isDirectSubtype(type, maybeSubType, unionMembershipTester, implementsInterfaceTester);
|
|
57
|
+
default:
|
|
58
|
+
return (0, definitions_1.isListType)(type)
|
|
59
|
+
&& allowedRules.includes('list_upgrade')
|
|
60
|
+
&& isSubtype(type.ofType, maybeSubType, allowedRules, unionMembershipTester, implementsInterfaceTester);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
exports.isStrictSubtype = isStrictSubtype;
|
|
64
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
export declare function assert(condition: any, message: string | (() => string)): asserts condition;
|
|
2
|
+
export declare function assertUnreachable(_: never): never;
|
|
3
|
+
export declare class MultiMap<K, V> extends Map<K, V[]> {
|
|
4
|
+
add(key: K, value: V): this;
|
|
5
|
+
addAll(otherMap: MultiMap<K, V>): this;
|
|
6
|
+
}
|
|
7
|
+
export declare class SetMultiMap<K, V> extends Map<K, Set<V>> {
|
|
8
|
+
add(key: K, value: V): this;
|
|
9
|
+
addAll(otherMap: SetMultiMap<K, V>): this;
|
|
10
|
+
}
|
|
11
|
+
export declare class OrderedMap<K, V> {
|
|
12
|
+
private _keys;
|
|
13
|
+
private _values;
|
|
14
|
+
private _compareFn;
|
|
15
|
+
private static defaultCompareFn;
|
|
16
|
+
constructor(compareFn?: (a: K, b: K) => number);
|
|
17
|
+
add(key: K, value: V): void;
|
|
18
|
+
get(key: K): V | undefined;
|
|
19
|
+
has(key: K): boolean;
|
|
20
|
+
get size(): number;
|
|
21
|
+
keys(): K[];
|
|
22
|
+
values(): V[];
|
|
23
|
+
private insertKeyInOrder;
|
|
24
|
+
[Symbol.iterator](): Generator<NonNullable<V>, void, unknown>;
|
|
25
|
+
}
|
|
26
|
+
export declare function arrayEquals<T>(a: readonly T[], b: readonly T[], equalFct?: (e1: T, e2: T) => boolean): boolean;
|
|
27
|
+
export declare function isSubset<T>(superset: Set<T>, maybeSubset: Set<T>): boolean;
|
|
28
|
+
export declare function firstOf<T>(iterable: Iterable<T>): T | undefined;
|
|
29
|
+
export declare function mapValues<V>(map: ReadonlyMap<any, V>): V[];
|
|
30
|
+
export declare function mapKeys<K>(map: ReadonlyMap<K, any>): K[];
|
|
31
|
+
export declare function mapEntries<K, V>(map: ReadonlyMap<K, V>): [K, V][];
|
|
32
|
+
export declare function setValues<V>(set: ReadonlySet<V>): V[];
|
|
33
|
+
export declare class MapWithCachedArrays<K, V> {
|
|
34
|
+
private readonly map;
|
|
35
|
+
private cachedKeys?;
|
|
36
|
+
private cachedValues?;
|
|
37
|
+
private clearCaches;
|
|
38
|
+
get size(): number;
|
|
39
|
+
has(key: K): boolean;
|
|
40
|
+
get(key: K): V | undefined;
|
|
41
|
+
set(key: K, value: V): this;
|
|
42
|
+
delete(key: K): boolean;
|
|
43
|
+
clear(): void;
|
|
44
|
+
keys(): readonly K[];
|
|
45
|
+
values(): readonly V[];
|
|
46
|
+
}
|
|
47
|
+
export declare function copyWitNewLength<T>(arr: T[], newLength: number): T[];
|
|
48
|
+
export declare function validateStringContainsBoolean(str?: string): boolean | undefined;
|
|
49
|
+
export declare function joinStrings(toJoin: string[], sep?: string, firstSep?: string, lastSep?: string): string;
|
|
50
|
+
export declare function printHumanReadableList(names: string[], { emptyValue, prefix, prefixPlural, lastSeparator, cutoff_output_length, }: {
|
|
51
|
+
emptyValue?: string;
|
|
52
|
+
prefix?: string;
|
|
53
|
+
prefixPlural?: string;
|
|
54
|
+
lastSeparator?: string;
|
|
55
|
+
cutoff_output_length?: number;
|
|
56
|
+
}): string;
|
|
57
|
+
export type Concrete<Type> = {
|
|
58
|
+
[Property in keyof Type]-?: Concrete<Type[Property]>;
|
|
59
|
+
};
|
|
60
|
+
export declare const isDefined: <T>(t: T | undefined) => t is T;
|
|
61
|
+
export declare function removeArrayElement<T>(element: T, array: T[]): boolean;
|
|
62
|
+
export type NonEmptyArray<T> = [T, ...T[]];
|
|
63
|
+
export declare function isNonEmptyArray<T>(array: T[]): array is NonEmptyArray<T>;
|
|
64
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|