Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions cli/src/commands/router/commands/compose.ts
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,9 @@ export default (opts: BaseCommandOptions) => {
definitions: parse(s.sdl),
};
}),
options.disableResolvabilityValidation,
{
disableResolvabilityValidation: options.disableResolvabilityValidation,
},
);

if (!result.success) {
Expand Down Expand Up @@ -587,7 +589,9 @@ async function buildFeatureFlagsConfig(
url: normalizeURL(s.routingUrl),
definitions: parse(s.sdl),
})),
options.disableResolvabilityValidation,
{
disableResolvabilityValidation: options.disableResolvabilityValidation,
},
);

if (!featureResult.success) {
Expand Down
5 changes: 3 additions & 2 deletions cli/src/utils.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
/* eslint-disable import/named */
import { existsSync, readFileSync, writeFileSync } from 'node:fs';
import {
CompositionOptions,
federateSubgraphs,
FederationResult,
ROUTER_COMPATIBILITY_VERSION_ONE,
Expand Down Expand Up @@ -179,9 +180,9 @@ export const introspectSubgraph = async ({
/**
* Composes a list of subgraphs into a single schema.
*/
export function composeSubgraphs(subgraphs: Subgraph[], disableResolvabilityValidation?: boolean): FederationResult {
export function composeSubgraphs(subgraphs: Subgraph[], options?: CompositionOptions): FederationResult {
// @TODO get router compatibility version programmatically
return federateSubgraphs({ disableResolvabilityValidation, subgraphs, version: ROUTER_COMPATIBILITY_VERSION_ONE });
return federateSubgraphs({ options, subgraphs, version: ROUTER_COMPATIBILITY_VERSION_ONE });
}

export type ConfigData = Partial<KeycloakToken & { organizationSlug: string; lastUpdateCheck: number }>;
Expand Down
278 changes: 139 additions & 139 deletions composition-go/index.global.js

Large diffs are not rendered by default.

12 changes: 6 additions & 6 deletions composition/src/federation/federation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,40 +13,40 @@ import {
import { ROUTER_COMPATIBILITY_VERSION_ONE } from '../router-compatibility-version/router-compatibility-version';

export function federateSubgraphs({
disableResolvabilityValidation,
options,
subgraphs,
version = ROUTER_COMPATIBILITY_VERSION_ONE,
}: FederateSubgraphsParams): FederationResult {
switch (version) {
default: {
return federateSubgraphsV1({ disableResolvabilityValidation, subgraphs });
return federateSubgraphsV1({ options, subgraphs });
}
}
}

// the flow when publishing a subgraph that also has contracts
export function federateSubgraphsWithContracts({
disableResolvabilityValidation,
options,
subgraphs,
tagOptionsByContractName,
version = ROUTER_COMPATIBILITY_VERSION_ONE,
}: FederateSubgraphsWithContractsParams): FederationResultWithContracts {
switch (version) {
default: {
return federateSubgraphsWithContractsV1({ disableResolvabilityValidation, subgraphs, tagOptionsByContractName });
return federateSubgraphsWithContractsV1({ options, subgraphs, tagOptionsByContractName });
}
}
}

export function federateSubgraphsContract({
contractTagOptions,
disableResolvabilityValidation,
options,
subgraphs,
version = ROUTER_COMPATIBILITY_VERSION_ONE,
}: FederateSubgraphsContractParams): FederationResult {
switch (version) {
default: {
return federateSubgraphsContractV1({ disableResolvabilityValidation, subgraphs, contractTagOptions });
return federateSubgraphsContractV1({ contractTagOptions, options, subgraphs });
}
}
}
6 changes: 4 additions & 2 deletions composition/src/federation/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import { FieldConfiguration } from '../router-configuration/types';
import { Subgraph, SubgraphConfig } from '../subgraph/types';
import { SupportedRouterCompatibilityVersion } from '../router-compatibility-version/router-compatibility-version';
import { ContractName, DirectiveName, SubgraphName, TypeName } from '../types/types';
import { CompositionOptions } from '../types/params';

export type FederationFailure = {
errors: Array<Error>;
Expand Down Expand Up @@ -71,19 +72,20 @@ export type MutualParentDefinitionData = {
export type FederateSubgraphsParams = {
subgraphs: Array<Subgraph>;
disableResolvabilityValidation?: boolean;
options?: CompositionOptions;
version?: SupportedRouterCompatibilityVersion;
};

export type FederateSubgraphsWithContractsParams = {
subgraphs: Array<Subgraph>;
tagOptionsByContractName: Map<ContractName, ContractTagOptions>;
disableResolvabilityValidation?: boolean;
options?: CompositionOptions;
version?: SupportedRouterCompatibilityVersion;
};

export type FederateSubgraphsContractParams = {
contractTagOptions: ContractTagOptions;
subgraphs: Array<Subgraph>;
disableResolvabilityValidation?: boolean;
options?: CompositionOptions;
version?: SupportedRouterCompatibilityVersion;
};
4 changes: 3 additions & 1 deletion composition/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ export * from './errors/types';
export * from './federation/federation';
export * from './federation/types';
export * from './normalization/normalization';
export * from './normalization/params';
export * from './normalization/types';
export * from './resolvability-graph/graph';
export * from './resolvability-graph/graph-nodes';
Expand All @@ -19,6 +20,7 @@ export * from './schema-building/ast';
export * from './schema-building/types';
export * from './schema-building/utils';
export * from './subgraph/types';
export * from './types/params';
export * from './types/types';
export * from './utils/composition-version';
export * from './utils/params';
Expand All @@ -34,9 +36,9 @@ export * from './v1/constants/integers';
export * from './v1/constants/non-directive-definitions';
export * from './v1/constants/strings';
export * from './v1/constants/type-nodes';
export * from './v1/federation/params';
export * from './v1/federation/utils';
export * from './v1/federation/walkers';
export * from './v1/federation/types';
export * from './v1/normalization/directive-definition-data';
export * from './v1/normalization/utils';
export * from './v1/normalization/types';
Expand Down
46 changes: 22 additions & 24 deletions composition/src/normalization/normalization.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,47 +3,45 @@ import {
normalizeSubgraph as normalizeSubgraphV1,
normalizeSubgraphFromString as normalizeSubgraphFromStringV1,
} from '../v1/normalization/normalization-factory';
import {
ROUTER_COMPATIBILITY_VERSION_ONE,
SupportedRouterCompatibilityVersion,
} from '../router-compatibility-version/router-compatibility-version';
import { ROUTER_COMPATIBILITY_VERSION_ONE } from '../router-compatibility-version/router-compatibility-version';
import { BatchNormalizationResult, NormalizationResult } from './types';
import { DocumentNode } from 'graphql';
import { Graph } from '../resolvability-graph/graph';
import { Subgraph } from '../subgraph/types';
import { BatchNormalizeParams, NormalizeSubgraphFromStringParams, NormalizeSubgraphParams } from './params';

export function normalizeSubgraphFromString(
schema: string,
export function normalizeSubgraphFromString({
noLocation = true,
version: SupportedRouterCompatibilityVersion = ROUTER_COMPATIBILITY_VERSION_ONE,
): NormalizationResult {
options,
sdlString,
version = ROUTER_COMPATIBILITY_VERSION_ONE,
}: NormalizeSubgraphFromStringParams): NormalizationResult {
switch (version) {
default: {
return normalizeSubgraphFromStringV1(schema, noLocation);
return normalizeSubgraphFromStringV1({ noLocation, options, sdlString });
}
}
}

export function normalizeSubgraph(
document: DocumentNode,
subgraphName?: string,
internalGraph?: Graph,
version: SupportedRouterCompatibilityVersion = ROUTER_COMPATIBILITY_VERSION_ONE,
): NormalizationResult {
export function normalizeSubgraph({
document,
internalGraph,
options,
subgraphName,
version = ROUTER_COMPATIBILITY_VERSION_ONE,
}: NormalizeSubgraphParams): NormalizationResult {
switch (version) {
default: {
return normalizeSubgraphV1(document, subgraphName, internalGraph);
return normalizeSubgraphV1({ document, internalGraph, options, subgraphName });
}
}
}

export function batchNormalize(
subgraphs: Array<Subgraph>,
version: SupportedRouterCompatibilityVersion = ROUTER_COMPATIBILITY_VERSION_ONE,
): BatchNormalizationResult {
export function batchNormalize({
options,
subgraphs,
version = ROUTER_COMPATIBILITY_VERSION_ONE,
}: BatchNormalizeParams): BatchNormalizationResult {
switch (version) {
default: {
return batchNormalizeV1(subgraphs);
return batchNormalizeV1({ options, subgraphs });
}
}
}
27 changes: 27 additions & 0 deletions composition/src/normalization/params.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import { Subgraph } from '../subgraph/types';
import { SupportedRouterCompatibilityVersion } from '../router-compatibility-version/router-compatibility-version';
import { CompositionOptions } from '../types/params';
import { DocumentNode } from 'graphql';
import { Graph } from '../resolvability-graph/graph';
import { SubgraphName } from '../types/types';

export type BatchNormalizeParams = {
subgraphs: Array<Subgraph>;
options?: CompositionOptions;
version?: SupportedRouterCompatibilityVersion;
};

export type NormalizeSubgraphParams = {
document: DocumentNode;
internalGraph?: Graph;
options?: CompositionOptions;
subgraphName?: SubgraphName;
version?: SupportedRouterCompatibilityVersion;
};

export type NormalizeSubgraphFromStringParams = {
sdlString: string;
noLocation?: boolean;
options?: CompositionOptions;
version?: SupportedRouterCompatibilityVersion;
};
4 changes: 4 additions & 0 deletions composition/src/types/params.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
export type CompositionOptions = {
disableResolvabilityValidation?: boolean;
ignoreExternalKeys?: boolean;
};
Loading
Loading