composition/src/v1/utils/constants.ts (803 lines of code) (raw):
import {
DEFAULT_DEPRECATION_REASON,
DirectiveDefinitionNode,
InputObjectTypeDefinitionNode,
Kind,
ScalarTypeDefinitionNode,
TypeNode,
} from 'graphql';
import { stringArrayToNameNodeArray, stringToNamedTypeNode, stringToNameNode } from '../../ast/utils';
import {
MutableDirectiveDefinitionNode,
MutableEnumNode,
MutableInputObjectNode,
MutableScalarNode,
} from '../../schema-building/ast';
import { DEFAULT_CONSUMER_INACTIVE_THRESHOLD } from './integer-constants';
import {
AND_UPPER,
ARGUMENT_DEFINITION_UPPER,
AS,
AUTHENTICATED,
BOOLEAN_SCALAR,
COMPOSE_DIRECTIVE,
CONDITION,
CONFIGURE_CHILD_DESCRIPTIONS,
CONFIGURE_DESCRIPTION,
CONSUMER_INACTIVE_THRESHOLD,
CONSUMER_NAME,
DEFAULT_EDFS_PROVIDER_ID,
DEPRECATED,
DESCRIPTION_OVERRIDE,
EDFS_KAFKA_PUBLISH,
EDFS_KAFKA_SUBSCRIBE,
EDFS_NATS_PUBLISH,
EDFS_NATS_REQUEST,
EDFS_NATS_STREAM_CONFIGURATION,
EDFS_NATS_SUBSCRIBE,
ENUM_UPPER,
ENUM_VALUE_UPPER,
EXECUTION,
EXTENDS,
EXTERNAL,
FIELD_DEFINITION_UPPER,
FIELD_PATH,
FIELD_SET_SCALAR,
FIELDS,
FLOAT_SCALAR,
FOR,
FROM,
ID_SCALAR,
IMPORT,
IN_UPPER,
INACCESSIBLE,
INPUT_FIELD_DEFINITION_UPPER,
INPUT_OBJECT_UPPER,
INT_SCALAR,
INTERFACE_OBJECT,
INTERFACE_UPPER,
KEY,
LINK,
LINK_IMPORT,
LINK_PURPOSE,
NAME,
NOT_UPPER,
OBJECT_UPPER,
OR_UPPER,
OVERRIDE,
PROPAGATE,
PROVIDER_ID,
PROVIDES,
REASON,
REQUIRES,
REQUIRES_SCOPES,
RESOLVABLE,
SCALAR_UPPER,
SCHEMA_UPPER,
SCOPE_SCALAR,
SCOPES,
SECURITY,
SHAREABLE,
SPECIFIED_BY,
STREAM_CONFIGURATION,
STREAM_NAME,
STRING_SCALAR,
SUBJECT,
SUBJECTS,
SUBSCRIPTION_FIELD_CONDITION,
SUBSCRIPTION_FILTER,
SUBSCRIPTION_FILTER_CONDITION,
SUBSCRIPTION_FILTER_VALUE,
TAG,
TOPIC,
TOPICS,
UNION_UPPER,
URL_LOWER,
VALUES,
} from '../../utils/string-constants';
export const REQUIRED_STRING_TYPE_NODE: TypeNode = {
kind: Kind.NON_NULL_TYPE,
type: stringToNamedTypeNode(STRING_SCALAR),
};
export const BASE_SCALARS = new Set<string>([
'_Any',
'_Entities',
BOOLEAN_SCALAR,
FLOAT_SCALAR,
ID_SCALAR,
INT_SCALAR,
FIELD_SET_SCALAR,
SCOPE_SCALAR,
STRING_SCALAR,
]);
/* directive @deprecated(reason: String = "No longer supported") on ARGUMENT_DEFINITION | ENUM_VALUE |
FIELD_DEFINITION | INPUT_FIELD_DEFINITION
*/
export const DEPRECATED_DEFINITION: MutableDirectiveDefinitionNode = {
arguments: [
{
directives: [],
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(REASON),
type: stringToNamedTypeNode(STRING_SCALAR),
defaultValue: {
kind: Kind.STRING,
value: DEFAULT_DEPRECATION_REASON,
},
},
],
kind: Kind.DIRECTIVE_DEFINITION,
locations: stringArrayToNameNodeArray([
ARGUMENT_DEFINITION_UPPER,
ENUM_VALUE_UPPER,
FIELD_DEFINITION_UPPER,
INPUT_FIELD_DEFINITION_UPPER,
]),
name: stringToNameNode(DEPRECATED),
repeatable: false,
};
// directive @extends on INTERFACE | OBJECT
export const EXTENDS_DEFINITION: DirectiveDefinitionNode = {
kind: Kind.DIRECTIVE_DEFINITION,
locations: stringArrayToNameNodeArray([INTERFACE_UPPER, OBJECT_UPPER]),
name: stringToNameNode(EXTENDS),
repeatable: false,
};
// directive @external on FIELD_DEFINITION | OBJECT
export const EXTERNAL_DEFINITION: DirectiveDefinitionNode = {
kind: Kind.DIRECTIVE_DEFINITION,
locations: stringArrayToNameNodeArray([FIELD_DEFINITION_UPPER, OBJECT_UPPER]),
name: stringToNameNode(EXTERNAL),
repeatable: false,
};
// directive @edfs__kafkaPublish(topic: String!, providerId: String! = "default") on FIELD_DEFINITION
export const EDFS_KAFKA_PUBLISH_DEFINITION: DirectiveDefinitionNode = {
arguments: [
{
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(TOPIC),
type: REQUIRED_STRING_TYPE_NODE,
},
{
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(PROVIDER_ID),
type: REQUIRED_STRING_TYPE_NODE,
defaultValue: {
kind: Kind.STRING,
value: DEFAULT_EDFS_PROVIDER_ID,
},
},
],
kind: Kind.DIRECTIVE_DEFINITION,
locations: [stringToNameNode(FIELD_DEFINITION_UPPER)],
name: stringToNameNode(EDFS_KAFKA_PUBLISH),
repeatable: false,
};
// directive @edfs__kafkaSubscribe(topics: [String!]!, providerId: String! = "default") on FIELD_DEFINITION
export const EDFS_KAFKA_SUBSCRIBE_DEFINITION: DirectiveDefinitionNode = {
arguments: [
{
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(TOPICS),
type: {
kind: Kind.NON_NULL_TYPE,
type: {
kind: Kind.LIST_TYPE,
type: REQUIRED_STRING_TYPE_NODE,
},
},
},
{
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(PROVIDER_ID),
type: REQUIRED_STRING_TYPE_NODE,
defaultValue: {
kind: Kind.STRING,
value: DEFAULT_EDFS_PROVIDER_ID,
},
},
],
kind: Kind.DIRECTIVE_DEFINITION,
locations: [stringToNameNode(FIELD_DEFINITION_UPPER)],
name: stringToNameNode(EDFS_KAFKA_SUBSCRIBE),
repeatable: false,
};
// directive @edfs__natsPublish(subject: String!, providerId: String! = "default") on FIELD_DEFINITION
export const EDFS_NATS_PUBLISH_DEFINITION: DirectiveDefinitionNode = {
arguments: [
{
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(SUBJECT),
type: REQUIRED_STRING_TYPE_NODE,
},
{
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(PROVIDER_ID),
type: {
kind: Kind.NON_NULL_TYPE,
type: stringToNamedTypeNode(STRING_SCALAR),
},
defaultValue: {
kind: Kind.STRING,
value: DEFAULT_EDFS_PROVIDER_ID,
},
},
],
kind: Kind.DIRECTIVE_DEFINITION,
locations: [stringToNameNode(FIELD_DEFINITION_UPPER)],
name: stringToNameNode(EDFS_NATS_PUBLISH),
repeatable: false,
};
// directive @edfs__natsRequest(subject: String!, providerId String! = "default") on FIELD_DEFINITION
export const EDFS_NATS_REQUEST_DEFINITION: DirectiveDefinitionNode = {
arguments: [
{
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(SUBJECT),
type: {
kind: Kind.NON_NULL_TYPE,
type: stringToNamedTypeNode(STRING_SCALAR),
},
},
{
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(PROVIDER_ID),
type: {
kind: Kind.NON_NULL_TYPE,
type: stringToNamedTypeNode(STRING_SCALAR),
},
defaultValue: {
kind: Kind.STRING,
value: DEFAULT_EDFS_PROVIDER_ID,
},
},
],
kind: Kind.DIRECTIVE_DEFINITION,
locations: [stringToNameNode(FIELD_DEFINITION_UPPER)],
name: stringToNameNode(EDFS_NATS_REQUEST),
repeatable: false,
};
/* directive @edfs__natsSubscribe(
* subjects: [String!]!, providerId: String! = "default",
* streamConfiguration: edfs__NatsStreamConfiguration
* ) on FIELD_DEFINITION
*/
export const EDFS_NATS_SUBSCRIBE_DEFINITION: DirectiveDefinitionNode = {
arguments: [
{
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(SUBJECTS),
type: {
kind: Kind.NON_NULL_TYPE,
type: {
kind: Kind.LIST_TYPE,
type: REQUIRED_STRING_TYPE_NODE,
},
},
},
{
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(PROVIDER_ID),
type: REQUIRED_STRING_TYPE_NODE,
defaultValue: {
kind: Kind.STRING,
value: DEFAULT_EDFS_PROVIDER_ID,
},
},
{
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(STREAM_CONFIGURATION),
type: stringToNamedTypeNode(EDFS_NATS_STREAM_CONFIGURATION),
},
],
kind: Kind.DIRECTIVE_DEFINITION,
locations: [stringToNameNode(FIELD_DEFINITION_UPPER)],
name: stringToNameNode(EDFS_NATS_SUBSCRIBE),
repeatable: false,
};
export const REQUIRED_FIELDSET_TYPE_NODE: TypeNode = {
kind: Kind.NON_NULL_TYPE,
type: stringToNamedTypeNode(FIELD_SET_SCALAR),
};
// directive @key(fields: openfed__FieldSet!, resolvable: Boolean = true) repeatable on INTERFACE | OBJECT
export const KEY_DEFINITION: DirectiveDefinitionNode = {
arguments: [
{
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(FIELDS),
type: REQUIRED_FIELDSET_TYPE_NODE,
},
{
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(RESOLVABLE),
type: stringToNamedTypeNode(BOOLEAN_SCALAR),
defaultValue: {
kind: Kind.BOOLEAN,
value: true,
},
},
],
kind: Kind.DIRECTIVE_DEFINITION,
locations: stringArrayToNameNodeArray([INTERFACE_UPPER, OBJECT_UPPER]),
name: stringToNameNode(KEY),
repeatable: true,
};
// directive @provides(fields: openfed__FieldSet!) on FIELD_DEFINITION
export const PROVIDES_DEFINITION: DirectiveDefinitionNode = {
arguments: [
{
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(FIELDS),
type: REQUIRED_FIELDSET_TYPE_NODE,
},
],
kind: Kind.DIRECTIVE_DEFINITION,
locations: [stringToNameNode(FIELD_DEFINITION_UPPER)],
name: stringToNameNode(PROVIDES),
repeatable: false,
};
// directive @requires(fields: openfed__FieldSet!) on FIELD_DEFINITION
export const REQUIRES_DEFINITION: DirectiveDefinitionNode = {
arguments: [
{
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(FIELDS),
type: {
kind: Kind.NON_NULL_TYPE,
type: stringToNamedTypeNode(FIELD_SET_SCALAR),
},
},
],
kind: Kind.DIRECTIVE_DEFINITION,
locations: [stringToNameNode(FIELD_DEFINITION_UPPER)],
name: stringToNameNode(REQUIRES),
repeatable: false,
};
// directive @specifiedBy(url: String!) on SCALAR
export const SPECIFIED_BY_DEFINITION: DirectiveDefinitionNode = {
arguments: [
{
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(URL_LOWER),
type: REQUIRED_STRING_TYPE_NODE,
},
],
kind: Kind.DIRECTIVE_DEFINITION,
locations: stringArrayToNameNodeArray([SCALAR_UPPER]),
name: stringToNameNode(SPECIFIED_BY),
repeatable: false,
};
/* directive @tag(name: String!) repeatable on ARGUMENT_DEFINITION | ENUM | ENUM_VALUE | FIELD_DEFINITION
| INPUT_FIELD_DEFINITION | INPUT_OBJECT | INTERFACE | OBJECT | SCALAR | UNION
*/
export const TAG_DEFINITION: MutableDirectiveDefinitionNode = {
arguments: [
{
directives: [],
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(NAME),
type: {
kind: Kind.NON_NULL_TYPE,
type: stringToNamedTypeNode(STRING_SCALAR),
},
},
],
kind: Kind.DIRECTIVE_DEFINITION,
locations: stringArrayToNameNodeArray([
ARGUMENT_DEFINITION_UPPER,
ENUM_UPPER,
ENUM_VALUE_UPPER,
FIELD_DEFINITION_UPPER,
INPUT_FIELD_DEFINITION_UPPER,
INPUT_OBJECT_UPPER,
INTERFACE_UPPER,
OBJECT_UPPER,
SCALAR_UPPER,
UNION_UPPER,
]),
name: stringToNameNode(TAG),
repeatable: true,
};
export const BASE_DIRECTIVE_DEFINITION_BY_DIRECTIVE_NAME = new Map<string, DirectiveDefinitionNode>([
[DEPRECATED, DEPRECATED_DEFINITION],
[EXTENDS, EXTENDS_DEFINITION],
[EXTERNAL, EXTERNAL_DEFINITION],
[EDFS_KAFKA_PUBLISH, EDFS_KAFKA_PUBLISH_DEFINITION],
[EDFS_KAFKA_SUBSCRIBE, EDFS_KAFKA_SUBSCRIBE_DEFINITION],
[EDFS_NATS_PUBLISH, EDFS_NATS_PUBLISH_DEFINITION],
[EDFS_NATS_REQUEST, EDFS_NATS_REQUEST_DEFINITION],
[EDFS_NATS_SUBSCRIBE, EDFS_NATS_SUBSCRIBE_DEFINITION],
[KEY, KEY_DEFINITION],
[PROVIDES, PROVIDES_DEFINITION],
[REQUIRES, REQUIRES_DEFINITION],
[SPECIFIED_BY, SPECIFIED_BY_DEFINITION],
[TAG, TAG_DEFINITION],
]);
export const ALL_IN_BUILT_DIRECTIVE_NAMES = new Set<string>([
AUTHENTICATED,
COMPOSE_DIRECTIVE,
CONFIGURE_DESCRIPTION,
CONFIGURE_CHILD_DESCRIPTIONS,
DEPRECATED,
EDFS_NATS_PUBLISH,
EDFS_NATS_REQUEST,
EDFS_NATS_SUBSCRIBE,
EDFS_KAFKA_PUBLISH,
EDFS_KAFKA_SUBSCRIBE,
EXTENDS,
EXTERNAL,
INACCESSIBLE,
INTERFACE_OBJECT,
KEY,
LINK,
OVERRIDE,
PROVIDES,
REQUIRES,
REQUIRES_SCOPES,
SHAREABLE,
SPECIFIED_BY,
SUBSCRIPTION_FILTER,
TAG,
]);
// @authenticated on ENUM | FIELD_DEFINITION | INTERFACE | OBJECT | SCALAR
export const AUTHENTICATED_DEFINITION: MutableDirectiveDefinitionNode = {
arguments: [],
kind: Kind.DIRECTIVE_DEFINITION,
locations: stringArrayToNameNodeArray([
ENUM_UPPER,
FIELD_DEFINITION_UPPER,
INTERFACE_UPPER,
OBJECT_UPPER,
SCALAR_UPPER,
]),
name: stringToNameNode(AUTHENTICATED),
repeatable: false,
};
// @composeDirective is currently unimplemented
/* directive @composeDirective(name: String!) repeatable on SCHEMA */
export const COMPOSE_DIRECTIVE_DEFINITION: DirectiveDefinitionNode = {
arguments: [
{
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(NAME),
type: REQUIRED_STRING_TYPE_NODE,
},
],
kind: Kind.DIRECTIVE_DEFINITION,
locations: stringArrayToNameNodeArray([SCHEMA_UPPER]),
name: stringToNameNode(COMPOSE_DIRECTIVE),
repeatable: true,
};
/* directive @inaccessible on ARGUMENT_DEFINITION | ENUM | ENUM_VALUE | FIELD_DEFINITION | INPUT_OBJECT |
INPUT_FIELD_DEFINITION | INTERFACE | OBJECT | SCALAR | UNION
*/
export const INACCESSIBLE_DEFINITION: MutableDirectiveDefinitionNode = {
arguments: [],
kind: Kind.DIRECTIVE_DEFINITION,
locations: stringArrayToNameNodeArray([
ARGUMENT_DEFINITION_UPPER,
ENUM_UPPER,
ENUM_VALUE_UPPER,
FIELD_DEFINITION_UPPER,
INPUT_FIELD_DEFINITION_UPPER,
INPUT_OBJECT_UPPER,
INTERFACE_UPPER,
OBJECT_UPPER,
SCALAR_UPPER,
UNION_UPPER,
]),
name: stringToNameNode(INACCESSIBLE),
repeatable: false,
};
// directive @interfaceObject on OBJECT
export const INTERFACE_OBJECT_DEFINITION: DirectiveDefinitionNode = {
kind: Kind.DIRECTIVE_DEFINITION,
locations: stringArrayToNameNodeArray([OBJECT_UPPER]),
name: stringToNameNode(INTERFACE_OBJECT),
repeatable: false,
};
export const LINK_IMPORT_DEFINITION: MutableScalarNode = {
kind: Kind.SCALAR_TYPE_DEFINITION,
name: stringToNameNode(LINK_IMPORT),
};
export const LINK_PURPOSE_DEFINITION: MutableEnumNode = {
kind: Kind.ENUM_TYPE_DEFINITION,
name: stringToNameNode(LINK_PURPOSE),
values: [
{
directives: [],
kind: Kind.ENUM_VALUE_DEFINITION,
name: stringToNameNode(EXECUTION),
},
{
directives: [],
kind: Kind.ENUM_VALUE_DEFINITION,
name: stringToNameNode(SECURITY),
},
],
};
// directive @link(url: String!, as: String!, for: String, import: [String]) repeatable on SCHEMA
export const LINK_DEFINITION: DirectiveDefinitionNode = {
arguments: [
{
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(URL_LOWER),
type: {
kind: Kind.NON_NULL_TYPE,
type: stringToNamedTypeNode(STRING_SCALAR),
},
},
{
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(AS),
type: stringToNamedTypeNode(STRING_SCALAR),
},
{
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(FOR),
type: stringToNamedTypeNode(LINK_PURPOSE),
},
{
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(IMPORT),
type: {
kind: Kind.LIST_TYPE,
type: stringToNamedTypeNode(LINK_IMPORT),
},
},
],
kind: Kind.DIRECTIVE_DEFINITION,
locations: stringArrayToNameNodeArray([SCHEMA_UPPER]),
name: stringToNameNode(LINK),
repeatable: true,
};
// directive @override(from: String!) on FIELD_DEFINITION
export const OVERRIDE_DEFINITION: DirectiveDefinitionNode = {
arguments: [
{
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(FROM),
type: {
kind: Kind.NON_NULL_TYPE,
type: stringToNamedTypeNode(STRING_SCALAR),
},
},
],
kind: Kind.DIRECTIVE_DEFINITION,
locations: stringArrayToNameNodeArray([FIELD_DEFINITION_UPPER]),
name: stringToNameNode(OVERRIDE),
repeatable: false,
};
// @requiresScopes(scopes: [[openfed__Scope!]!]!) on ENUM | FIELD_DEFINITION | INTERFACE | OBJECT | SCALAR
export const REQUIRES_SCOPES_DEFINITION: MutableDirectiveDefinitionNode = {
arguments: [
{
directives: [],
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(SCOPES),
type: {
kind: Kind.NON_NULL_TYPE,
type: {
kind: Kind.LIST_TYPE,
type: {
kind: Kind.NON_NULL_TYPE,
type: {
kind: Kind.LIST_TYPE,
type: {
kind: Kind.NON_NULL_TYPE,
type: stringToNamedTypeNode(SCOPE_SCALAR),
},
},
},
},
},
},
],
kind: Kind.DIRECTIVE_DEFINITION,
locations: stringArrayToNameNodeArray([
ENUM_UPPER,
FIELD_DEFINITION_UPPER,
INTERFACE_UPPER,
OBJECT_UPPER,
SCALAR_UPPER,
]),
name: stringToNameNode(REQUIRES_SCOPES),
repeatable: false,
};
// directive @shareable on FIELD_DEFINITION | OBJECT
export const SHAREABLE_DEFINITION: DirectiveDefinitionNode = {
kind: Kind.DIRECTIVE_DEFINITION,
locations: stringArrayToNameNodeArray([FIELD_DEFINITION_UPPER, OBJECT_UPPER]),
name: stringToNameNode(SHAREABLE),
repeatable: true,
};
// directive @openfed__subscriptionFilter(condition: openfed__SubscriptionFilterCondition!) on FIELD_DEFINITION
export const SUBSCRIPTION_FILTER_DEFINITION: DirectiveDefinitionNode = {
arguments: [
{
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(CONDITION),
type: {
kind: Kind.NON_NULL_TYPE,
type: stringToNamedTypeNode(SUBSCRIPTION_FILTER_CONDITION),
},
},
],
kind: Kind.DIRECTIVE_DEFINITION,
locations: stringArrayToNameNodeArray([FIELD_DEFINITION_UPPER]),
name: stringToNameNode(SUBSCRIPTION_FILTER),
repeatable: false,
};
/* input openfed__SubscriptionFilterCondition {
* AND: [openfed__SubscriptionFilterCondition!]
* IN: openfed__SubscriptionFieldCondition
* NOT: openfed__SubscriptionFilterCondition
* OR: [openfed__SubscriptionFilterCondition!]
* }
*/
export const SUBSCRIPTION_FILTER_CONDITION_DEFINITION: InputObjectTypeDefinitionNode = {
fields: [
{
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(AND_UPPER),
type: {
kind: Kind.LIST_TYPE,
type: {
kind: Kind.NON_NULL_TYPE,
type: stringToNamedTypeNode(SUBSCRIPTION_FILTER_CONDITION),
},
},
},
{
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(IN_UPPER),
type: stringToNamedTypeNode(SUBSCRIPTION_FIELD_CONDITION),
},
{
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(OR_UPPER),
type: {
kind: Kind.LIST_TYPE,
type: {
kind: Kind.NON_NULL_TYPE,
type: stringToNamedTypeNode(SUBSCRIPTION_FILTER_CONDITION),
},
},
},
{
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(NOT_UPPER),
type: stringToNamedTypeNode(SUBSCRIPTION_FILTER_CONDITION),
},
],
kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,
name: stringToNameNode(SUBSCRIPTION_FILTER_CONDITION),
};
// scalar openfed__SubscriptionFilterValue
export const SUBSCRIPTION_FILTER_VALUE_DEFINITION: MutableScalarNode = {
kind: Kind.SCALAR_TYPE_DEFINITION,
name: stringToNameNode(SUBSCRIPTION_FILTER_VALUE),
};
/* input openfed__SubscriptionFieldCondition {
* fieldPath: String!
* values: [openfed__SubscriptionFilterValue]!
* }
*/
export const SUBSCRIPTION_FIELD_CONDITION_DEFINITION: InputObjectTypeDefinitionNode = {
fields: [
{
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(FIELD_PATH),
type: {
kind: Kind.NON_NULL_TYPE,
type: stringToNamedTypeNode(STRING_SCALAR),
},
},
{
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(VALUES),
type: {
kind: Kind.NON_NULL_TYPE,
type: {
kind: Kind.LIST_TYPE,
type: stringToNamedTypeNode(SUBSCRIPTION_FILTER_VALUE),
},
},
},
],
kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,
name: stringToNameNode(SUBSCRIPTION_FIELD_CONDITION),
};
export const V2_DIRECTIVE_DEFINITION_BY_DIRECTIVE_NAME = new Map<string, DirectiveDefinitionNode>([
[AUTHENTICATED, AUTHENTICATED_DEFINITION],
[COMPOSE_DIRECTIVE, COMPOSE_DIRECTIVE_DEFINITION],
[INACCESSIBLE, INACCESSIBLE_DEFINITION],
[INTERFACE_OBJECT, INTERFACE_OBJECT_DEFINITION],
[LINK, LINK_DEFINITION],
[OVERRIDE, OVERRIDE_DEFINITION],
[REQUIRES_SCOPES, REQUIRES_SCOPES_DEFINITION],
[SHAREABLE, SHAREABLE_DEFINITION],
]);
export const BASE_DIRECTIVE_DEFINITIONS: DirectiveDefinitionNode[] = [
DEPRECATED_DEFINITION,
EXTENDS_DEFINITION,
EXTERNAL_DEFINITION,
KEY_DEFINITION,
PROVIDES_DEFINITION,
REQUIRES_DEFINITION,
SPECIFIED_BY_DEFINITION,
TAG_DEFINITION,
];
export const EVENT_DRIVEN_DIRECTIVE_DEFINITIONS_BY_DIRECTIVE_NAME = new Map<string, DirectiveDefinitionNode>([
[EDFS_KAFKA_PUBLISH, EDFS_KAFKA_PUBLISH_DEFINITION],
[EDFS_KAFKA_SUBSCRIBE, EDFS_KAFKA_SUBSCRIBE_DEFINITION],
[EDFS_NATS_PUBLISH, EDFS_NATS_PUBLISH_DEFINITION],
[EDFS_NATS_REQUEST, EDFS_NATS_REQUEST_DEFINITION],
[EDFS_NATS_SUBSCRIBE, EDFS_NATS_SUBSCRIBE_DEFINITION],
]);
export const VERSION_TWO_DIRECTIVE_DEFINITIONS: DirectiveDefinitionNode[] = [
AUTHENTICATED_DEFINITION,
COMPOSE_DIRECTIVE_DEFINITION,
INACCESSIBLE_DEFINITION,
INTERFACE_OBJECT_DEFINITION,
OVERRIDE_DEFINITION,
REQUIRES_SCOPES_DEFINITION,
SHAREABLE_DEFINITION,
];
export const FIELD_SET_SCALAR_DEFINITION: ScalarTypeDefinitionNode = {
kind: Kind.SCALAR_TYPE_DEFINITION,
name: stringToNameNode(FIELD_SET_SCALAR),
};
// scalar openfed__Scope
export const SCOPE_SCALAR_DEFINITION: MutableScalarNode = {
kind: Kind.SCALAR_TYPE_DEFINITION,
name: stringToNameNode(SCOPE_SCALAR),
};
/*
* input edfs__NatsStreamConfiguration {
* consumerInactiveThreshold : Int! = 30
* consumerName: String!
* streamName: String!
* }
* */
export const EDFS_NATS_STREAM_CONFIGURATION_DEFINITION: MutableInputObjectNode = {
kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,
name: stringToNameNode(EDFS_NATS_STREAM_CONFIGURATION),
fields: [
{
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(CONSUMER_NAME),
type: {
kind: Kind.NON_NULL_TYPE,
type: stringToNamedTypeNode(STRING_SCALAR),
},
},
{
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(STREAM_NAME),
type: {
kind: Kind.NON_NULL_TYPE,
type: stringToNamedTypeNode(STRING_SCALAR),
},
},
{
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(CONSUMER_INACTIVE_THRESHOLD),
type: {
kind: Kind.NON_NULL_TYPE,
type: stringToNamedTypeNode(INT_SCALAR),
},
defaultValue: {
kind: Kind.INT,
value: DEFAULT_CONSUMER_INACTIVE_THRESHOLD.toString(),
},
},
],
};
/*
* directive @openfed__configureDescription(
* propagate: Boolean! = true
* descriptionOverride: String
* ) on ARGUMENT_DEFINITION | FIELD_DEFINITION | INPUT_OBJECT | INPUT_FIELD_DEFINITION | ENUM | ENUM_VALUE |
* INTERFACE | OBJECT | SCALAR | SCHEMA | UNION
* */
export const CONFIGURE_DESCRIPTION_DEFINITION: MutableDirectiveDefinitionNode = {
arguments: [
{
directives: [],
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(PROPAGATE),
type: {
kind: Kind.NON_NULL_TYPE,
type: stringToNamedTypeNode(BOOLEAN_SCALAR),
},
defaultValue: {
kind: Kind.BOOLEAN,
value: true,
},
},
{
directives: [],
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(DESCRIPTION_OVERRIDE),
type: stringToNamedTypeNode(STRING_SCALAR),
},
],
kind: Kind.DIRECTIVE_DEFINITION,
locations: stringArrayToNameNodeArray([
ARGUMENT_DEFINITION_UPPER,
ENUM_UPPER,
ENUM_VALUE_UPPER,
FIELD_DEFINITION_UPPER,
INTERFACE_UPPER,
INPUT_OBJECT_UPPER,
INPUT_FIELD_DEFINITION_UPPER,
OBJECT_UPPER,
SCALAR_UPPER,
SCHEMA_UPPER,
UNION_UPPER,
]),
name: stringToNameNode(CONFIGURE_DESCRIPTION),
repeatable: false,
};
/*
* directive @openfed__configureChildDescriptions(
* propagate: Boolean! = true
* ) on ENUM | INPUT_OBJECT | INTERFACE | OBJECT
*/
export const CONFIGURE_CHILD_DESCRIPTIONS_DEFINITION: MutableDirectiveDefinitionNode = {
arguments: [
{
directives: [],
kind: Kind.INPUT_VALUE_DEFINITION,
name: stringToNameNode(PROPAGATE),
type: {
kind: Kind.NON_NULL_TYPE,
type: stringToNamedTypeNode(BOOLEAN_SCALAR),
},
defaultValue: {
kind: Kind.BOOLEAN,
value: true,
},
},
],
kind: Kind.DIRECTIVE_DEFINITION,
locations: stringArrayToNameNodeArray([ENUM_UPPER, INPUT_OBJECT_UPPER, INTERFACE_UPPER, OBJECT_UPPER]),
name: stringToNameNode(CONFIGURE_CHILD_DESCRIPTIONS),
repeatable: false,
};
export const EDFS_ARGS_REGEXP = /{{\s*args\.([a-zA-Z0-9_]+)\s*}}/g;