@apollo/federation-internals 2.4.4 → 2.4.5
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/CHANGELOG.md +6 -0
- 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 +415 -0
- package/dist/operations.d.ts.map +1 -0
- package/dist/operations.js +2040 -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/tsconfig.tsbuildinfo +1 -0
|
@@ -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":";;;AAIA,+CAYuB;AAEV,QAAA,mBAAmB,GAAG;IACjC,QAAiB;IACjB,uBAAgC;IAChC,cAAuB;IACvB,kBAA2B;IAC3B,yBAAkC;CACnC,CAAC;AAKW,QAAA,uBAAuB,GAAG,2BAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC;AAc7F,SAAgB,QAAQ,CAAC,EAAQ,EAAE,EAAQ;IACzC,QAAQ,EAAE,CAAC,IAAI,EAAE;QACf,KAAK,UAAU;YACb,OAAO,IAAA,wBAAU,EAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;QAC1D,KAAK,aAAa;YAChB,OAAO,IAAA,2BAAa,EAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;QAC7D;YACE,OAAO,IAAA,yBAAW,EAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,CAAC;KACjD;AACH,CAAC;AATD,4BASC;AAgBD,SAAgB,eAAe,CAC7B,IAAkB,EAClB,YAAwC,EACxC,wBAAgF,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAC5G,4BAA2G,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAE7I,IAAI,IAAA,yBAAW,EAAC,IAAI,CAAC,EAAE;QACrB,OAAO,IAAA,0BAAY,EAAC,YAAY,CAAC,IAAI,qBAAqB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;KAChF;IACD,OAAO,yBAAyB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AACvD,CAAC;AAVD,0CAUC;AAkBD,SAAgB,SAAS,CACvB,IAAU,EACV,YAAkB,EAClB,eAAgC,+BAAuB,EACvD,wBAAgF,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAC5G,4BAA2G,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAE7I,OAAO,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,yBAAyB,CAAC,CAAC;AAC7I,CAAC;AARD,8BAQC;AAQD,SAAgB,eAAe,CAC7B,IAAU,EACV,YAAkB,EAClB,eAAgC,+BAAuB,EACvD,wBAAgF,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAC5G,4BAA2G,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAE7I,QAAQ,YAAY,CAAC,IAAI,EAAE;QACzB,KAAK,UAAU;YACb,OAAO,YAAY,CAAC,QAAQ,CAAC,kBAAkB,CAAC;mBAC3C,IAAA,wBAAU,EAAC,IAAI,CAAC;mBAChB,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,qBAAqB,EAAE,yBAAyB,CAAC,CAAC;QACnH,KAAK,aAAa;YAChB,IAAI,IAAA,2BAAa,EAAC,IAAI,CAAC,EAAE;gBACvB,OAAO,YAAY,CAAC,QAAQ,CAAC,yBAAyB,CAAC;uBAClD,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,qBAAqB,EAAE,yBAAyB,CAAC,CAAC;aAClH;YACD,OAAO,YAAY,CAAC,QAAQ,CAAC,uBAAuB,CAAC;mBAChD,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,qBAAqB,EAAE,yBAAyB,CAAC,CAAC;QAC5G,KAAK,YAAY,CAAC;QAClB,KAAK,eAAe;YAClB,IAAI,IAAA,wBAAU,EAAC,IAAI,CAAC,EAAE;gBACpB,OAAO,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC;uBACvC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,yBAAyB,CAAC,CAAC;aAC3G;YACD,OAAO,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC;mBACjC,CAAC,IAAA,6BAAe,EAAC,IAAI,CAAC,IAAI,IAAA,yBAAW,EAAC,IAAI,CAAC,CAAC;mBAC5C,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,qBAAqB,EAAE,yBAAyB,CAAC,CAAC;QAC7F;YACE,OAAO,IAAA,wBAAU,EAAC,IAAI,CAAC;mBAClB,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC;mBACrC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,yBAAyB,CAAC,CAAC;KAC7G;AACH,CAAC;AAjCD,0CAiCC"}
|
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]-?: 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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"}
|