From 69f5af6f08ad7059c2d1b5f633c79329232eedc9 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Fri, 19 Jun 2026 11:50:14 +0530 Subject: [PATCH 01/65] feat(composition): @openfed__entityCache directive --- .../directive-definition-data.ts | 72 +- composition/src/errors/errors.ts | 12 + composition/src/router-configuration/types.ts | 24 + composition/src/utils/string-constants.ts | 6 + composition/src/v1/constants/constants.ts | 3 + .../src/v1/constants/directive-definitions.ts | 47 +- composition/src/v1/constants/type-nodes.ts | 7 +- .../v1/normalization/normalization-factory.ts | 98 ++ .../src/v1/normalization/types/types.ts | 17 + composition/src/v1/normalization/utils.ts | 3 + .../tests/v1/directives/entity-cache.test.ts | 145 +++ .../gen/proto/wg/cosmo/node/v1/node.pb.go | 842 +++++++++++------- connect/src/wg/cosmo/node/v1/node_pb.ts | 127 +++ proto/wg/cosmo/node/v1/node.proto | 25 + router/gen/proto/wg/cosmo/node/v1/node.pb.go | 842 +++++++++++------- shared/src/router-config/builder.ts | 40 + 16 files changed, 1627 insertions(+), 683 deletions(-) create mode 100644 composition/tests/v1/directives/entity-cache.test.ts diff --git a/composition/src/directive-definition-data/directive-definition-data.ts b/composition/src/directive-definition-data/directive-definition-data.ts index c3d8e0af4e..20bb517d09 100644 --- a/composition/src/directive-definition-data/directive-definition-data.ts +++ b/composition/src/directive-definition-data/directive-definition-data.ts @@ -81,6 +81,12 @@ import { UNION_UPPER, URL_LOWER, WEIGHT, + ENTITY_CACHE, + INCLUDE_HEADERS, + MAX_AGE, + NEGATIVE_CACHE_TTL, + PARTIAL_CACHE_LOAD, + SHADOW_MODE, } from '../utils/string-constants'; import { AUTHENTICATED_DEFINITION, @@ -112,11 +118,16 @@ import { REQUIRES_SCOPES_DEFINITION, SEMANTIC_NON_NULL_DEFINITION, SHAREABLE_DEFINITION, + ENTITY_CACHE_DEFINITION, SPECIFIED_BY_DEFINITION, SUBSCRIPTION_FILTER_DEFINITION, TAG_DEFINITION, } from '../v1/constants/directive-definitions'; -import { REQUIRED_FIELDSET_TYPE_NODE, REQUIRED_STRING_TYPE_NODE } from '../v1/constants/type-nodes'; +import { + REQUIRED_FIELDSET_TYPE_NODE, + REQUIRED_INT_TYPE_NODE, + REQUIRED_STRING_TYPE_NODE, +} from '../v1/constants/type-nodes'; import { type ArgumentName, type DirectiveLocation } from '../types/types'; import { newDirectiveArgumentData, newDirectiveDefinitionData } from './utils'; import { type DirectiveArgumentData, DirectiveDefinitionData } from './types/types'; @@ -945,3 +956,62 @@ export const TAG_DEFINITION_DATA = newDirectiveDefinitionData({ node: TAG_DEFINITION, requiredArgumentNames: new Set([NAME]), }); + +export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ + argumentDataByName: new Map([ + [ + MAX_AGE, + newDirectiveArgumentData({ + directive: `@${ENTITY_CACHE}`, + name: MAX_AGE, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: REQUIRED_INT_TYPE_NODE, + }), + ], + [ + NEGATIVE_CACHE_TTL, + newDirectiveArgumentData({ + directive: `@${ENTITY_CACHE}`, + defaultValue: { kind: Kind.INT, value: '0' }, + name: NEGATIVE_CACHE_TTL, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: stringToNamedTypeNode(INT_SCALAR), + }), + ], + [ + INCLUDE_HEADERS, + newDirectiveArgumentData({ + directive: `@${ENTITY_CACHE}`, + defaultValue: { kind: Kind.BOOLEAN, value: false }, + name: INCLUDE_HEADERS, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: stringToNamedTypeNode(BOOLEAN_SCALAR), + }), + ], + [ + PARTIAL_CACHE_LOAD, + newDirectiveArgumentData({ + directive: `@${ENTITY_CACHE}`, + defaultValue: { kind: Kind.BOOLEAN, value: false }, + name: PARTIAL_CACHE_LOAD, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: stringToNamedTypeNode(BOOLEAN_SCALAR), + }), + ], + [ + SHADOW_MODE, + newDirectiveArgumentData({ + directive: `@${ENTITY_CACHE}`, + defaultValue: { kind: Kind.BOOLEAN, value: false }, + name: SHADOW_MODE, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: stringToNamedTypeNode(BOOLEAN_SCALAR), + }), + ], + ]), + locations: new Set([OBJECT_UPPER]), + name: ENTITY_CACHE, + node: ENTITY_CACHE_DEFINITION, + optionalArgumentNames: new Set([NEGATIVE_CACHE_TTL, INCLUDE_HEADERS, PARTIAL_CACHE_LOAD, SHADOW_MODE]), + requiredArgumentNames: new Set([MAX_AGE]), +}); diff --git a/composition/src/errors/errors.ts b/composition/src/errors/errors.ts index 3d9258b484..97d6dd3567 100644 --- a/composition/src/errors/errors.ts +++ b/composition/src/errors/errors.ts @@ -2050,3 +2050,15 @@ export function nonEqualComposeDirectiveMajorVersionError(directiveName: Directi export function unknownSubgraphNameError(subgraphName: SubgraphName): Error { return new Error(`Internal Error: Expected subgraph "${subgraphName}" to be a valid record.`); } + +export function entityCacheWithoutKeyErrorMessage(typeName: string): string { + return `Type "${typeName}" has @openfed__entityCache but no @key directive.`; +} + +export function maxAgeNotPositiveIntegerErrorMessage(directiveName: string, value: number): string { + return `@${directiveName} maxAge must be a positive integer, got "${value}".`; +} + +export function negativeCacheTTLNotNonNegativeIntegerErrorMessage(directiveName: string, value: number): string { + return `@${directiveName} negativeCacheTTL must be zero or a positive integer, got "${value}".`; +} diff --git a/composition/src/router-configuration/types.ts b/composition/src/router-configuration/types.ts index c731aa506e..28cbd91120 100644 --- a/composition/src/router-configuration/types.ts +++ b/composition/src/router-configuration/types.ts @@ -98,6 +98,30 @@ export type ConfigurationData = { keys?: RequiredFieldConfiguration[]; requireFetchReasonsFieldNames?: Array; requires?: RequiredFieldConfiguration[]; + entityCaching?: EntityCachingConfiguration; +}; + +// Extracted from @openfed__entityCache(maxAge: Int!, negativeCacheTTL: Int, includeHeaders: Boolean, +// partialCacheLoad: Boolean, shadowMode: Boolean) on OBJECT types. Defines per-entity cache TTL and behavior. +export type EntityCacheConfig = { + typeName: TypeName; + maxAgeSeconds: number; + // TTL (in seconds) for caching "not found" entity responses (entity returned null + // from _entities without errors). 0 disables negative caching; composition rejects + // negative values at validation time. + notFoundCacheTtlSeconds: number; + // When true, request headers are included in the cache key (useful for user-specific entities). + includeHeaders: boolean; + // When true, allows partial cache hits — the router fetches only missing entities from the subgraph. + partialCacheLoad: boolean; + // When true, the cache runs in shadow mode — cache reads/writes happen but responses always come + // from the subgraph. Useful for warming caches or validating correctness without affecting traffic. + shadowMode: boolean; +}; + +export type EntityCachingConfiguration = { + // Attached to an entity type's ConfigurationData (e.g. "Product") from @openfed__entityCache. + entityCacheConfigurations?: Array; }; export type Costs = { diff --git a/composition/src/utils/string-constants.ts b/composition/src/utils/string-constants.ts index 92dacd6029..4177ca6b70 100644 --- a/composition/src/utils/string-constants.ts +++ b/composition/src/utils/string-constants.ts @@ -41,6 +41,7 @@ export const EDFS_REDIS_PUBLISH = 'edfs__redisPublish'; export const EDFS_REDIS_SUBSCRIBE = 'edfs__redisSubscribe'; export const ENTITIES = 'entities'; export const ENTITIES_FIELD = '_entities'; +export const ENTITY_CACHE = 'openfed__entityCache'; export const ENTITY_UNION = '_Entity'; export const ENUM = 'Enum'; export const ENUM_UPPER = 'ENUM'; @@ -65,6 +66,7 @@ export const FROM = 'from'; export const HYPHEN_JOIN = `\n -`; export const ID_SCALAR = 'ID'; export const IMPORT = 'import'; +export const INCLUDE_HEADERS = 'includeHeaders'; export const IN_UPPER = 'IN'; export const INACCESSIBLE = 'inaccessible'; export const INLINE_FRAGMENT = 'inlineFragment'; @@ -91,6 +93,7 @@ export const LITERAL_AT = '@'; export const LITERAL_SPACE = ' '; export const LITERAL_NEW_LINE = '\n'; export const LITERAL_PERIOD = '.'; +export const MAX_AGE = 'maxAge'; export const NUMBER = 'number'; export const MUTATION = 'Mutation'; export const MUTATION_UPPER = 'MUTATION'; @@ -100,6 +103,7 @@ export const PROVIDER_TYPE_NATS = 'nats'; export const PROVIDER_TYPE_REDIS = 'redis'; export const NOT_APPLICABLE = 'N/A'; export const NAME = 'name'; +export const NEGATIVE_CACHE_TTL = 'negativeCacheTTL'; export const NON_NULLABLE_EDFS_PUBLISH_EVENT_RESULT = 'edfs__PublishResult!'; export const NON_NULLABLE_BOOLEAN = 'Boolean!'; export const NON_NULLABLE_INT = 'Int!'; @@ -112,6 +116,7 @@ export const OBJECT = 'Object'; export const OBJECT_UPPER = 'OBJECT'; export const OR_UPPER = 'OR'; export const OVERRIDE = 'override'; +export const PARTIAL_CACHE_LOAD = 'partialCacheLoad'; export const PARENT_DEFINITION_DATA = 'parentDefinitionDataByTypeName'; export const PARENT_DEFINITION_DATA_MAP = 'parentDefinitionDataByParentTypeName'; export const PARENT_EXTENSION_DATA_MAP = 'parentExtensionDataByParentTypeName'; @@ -139,6 +144,7 @@ export const SELECTION_REPRESENTATION = ' { ... }'; export const SEMANTIC_NON_NULL = 'semanticNonNull'; export const SERVICE_OBJECT = '_Service'; export const SERVICE_FIELD = '_service'; +export const SHADOW_MODE = 'shadowMode'; export const SHAREABLE = 'shareable'; export const SIZED_FIELDS = 'sizedFields'; export const SLICING_ARGUMENTS = 'slicingArguments'; diff --git a/composition/src/v1/constants/constants.ts b/composition/src/v1/constants/constants.ts index a9139c23c8..0ef018d365 100644 --- a/composition/src/v1/constants/constants.ts +++ b/composition/src/v1/constants/constants.ts @@ -7,6 +7,7 @@ import { CONFIGURE_DESCRIPTION, CONNECT_FIELD_RESOLVER, COST, + ENTITY_CACHE, DEPRECATED, EDFS_KAFKA_PUBLISH, EDFS_KAFKA_SUBSCRIBE, @@ -74,6 +75,7 @@ import { SPECIFIED_BY_DEFINITION, SUBSCRIPTION_FILTER_DEFINITION, TAG_DEFINITION, + ENTITY_CACHE_DEFINITION, } from './directive-definitions'; export const DIRECTIVE_DEFINITION_BY_NAME: ReadonlyMap = new Map< @@ -86,6 +88,7 @@ export const DIRECTIVE_DEFINITION_BY_NAME: ReadonlyMap(); + // Cached entity configs keyed by type name, populated by extractEntityCacheDirectives() from + // @openfed__entityCache. Future caching directives (@openfed__queryCache etc.) use this as a lookup + // to verify a field's return type is a cached entity. + entityCacheConfigByTypeName = new Map(); errors = new Array(); entityDataByTypeName = new Map(); entityInterfaceDataByTypeName = new Map(); @@ -3984,6 +4000,85 @@ export class NormalizationFactory { } } + extractEntityCacheDirectives() { + for (const [typeName, parentData] of this.parentDefinitionDataByTypeName) { + if (parentData.kind !== Kind.OBJECT_TYPE_DEFINITION) { + continue; + } + const entityCacheDirectives = parentData.directivesByName.get(ENTITY_CACHE); + if (!entityCacheDirectives) { + continue; + } + if (!this.keyFieldSetDatasByTypeName.has(typeName)) { + this.errors.push( + invalidDirectiveError(ENTITY_CACHE, typeName, FIRST_ORDINAL, [entityCacheWithoutKeyErrorMessage(typeName)]), + ); + continue; + } + // validateDirectives() (run earlier in normalize()) has already guaranteed each argument's type — + // Int for maxAge/negativeCacheTTL, Boolean for the flags — so the generic ConstDirectiveNode is + // narrowed once to the precise typed node, mirroring RequestScopedDirectiveNode/ComposeDirectiveNode. + // Optional arguments may be absent (definition defaults are not materialized onto the usage AST), + // so the config starts at the directive's documented defaults and each present argument overrides it. + const directive = entityCacheDirectives[0] as EntityCacheDirectiveNode; + const config: EntityCacheConfig = { + typeName, + maxAgeSeconds: 0, + notFoundCacheTtlSeconds: 0, + includeHeaders: false, + partialCacheLoad: false, + shadowMode: false, + }; + + for (const { name, value } of directive.arguments ?? []) { + switch (name.value) { + case MAX_AGE: + if (value.kind === Kind.INT) config.maxAgeSeconds = parseInt(value.value, 10); + break; + case NEGATIVE_CACHE_TTL: + if (value.kind === Kind.INT) config.notFoundCacheTtlSeconds = parseInt(value.value, 10); + break; + case INCLUDE_HEADERS: + if (value.kind === Kind.BOOLEAN) config.includeHeaders = value.value; + break; + case PARTIAL_CACHE_LOAD: + if (value.kind === Kind.BOOLEAN) config.partialCacheLoad = value.value; + break; + case SHADOW_MODE: + if (value.kind === Kind.BOOLEAN) config.shadowMode = value.value; + break; + } + } + + if (config.maxAgeSeconds <= 0) { + this.errors.push( + invalidDirectiveError(ENTITY_CACHE, typeName, FIRST_ORDINAL, [ + maxAgeNotPositiveIntegerErrorMessage(ENTITY_CACHE, config.maxAgeSeconds), + ]), + ); + continue; + } + + if (config.notFoundCacheTtlSeconds < 0) { + this.errors.push( + invalidDirectiveError(ENTITY_CACHE, typeName, FIRST_ORDINAL, [ + negativeCacheTTLNotNonNegativeIntegerErrorMessage(ENTITY_CACHE, config.notFoundCacheTtlSeconds), + ]), + ); + continue; + } + + this.entityCacheConfigByTypeName.set(typeName, config); + const configurationData = getValueOrDefault(this.configurationDataByTypeName, typeName, () => + newConfigurationData(true, typeName), + ); + configurationData.entityCaching = { + ...configurationData.entityCaching, + entityCacheConfigurations: [...(configurationData.entityCaching?.entityCacheConfigurations ?? []), config], + }; + } + } + addFieldNamesToConfigurationData(fieldDataByFieldName: Map, configurationData: ConfigurationData) { const externalFieldNames = new Set(); for (const [fieldName, fieldData] of fieldDataByFieldName) { @@ -4251,6 +4346,9 @@ export class NormalizationFactory { this.addValidConditionalFieldSetConfigurations(); // this is where @key configurations are added to the ConfigurationData this.addValidKeyFieldSetConfigurations(); + // this is where @openfed__entityCache configurations are added to the ConfigurationData + // (runs after key-field-set configs so keyFieldSetDatasByTypeName is populated for the @key check) + this.extractEntityCacheDirectives(); // Check that explicitly defined operations types are valid objects and that their fields are also valid for (const operationType of Object.values(OperationTypeNode)) { const operationTypeNode = this.schemaData.operationTypes.get(operationType); diff --git a/composition/src/v1/normalization/types/types.ts b/composition/src/v1/normalization/types/types.ts index a40b958767..f8870f7a43 100644 --- a/composition/src/v1/normalization/types/types.ts +++ b/composition/src/v1/normalization/types/types.ts @@ -7,9 +7,11 @@ import { type SchemaData, } from '../../../schema-building/types/types'; import { + type BooleanValueNode, type ConstDirectiveNode, type DocumentNode, type InputValueDefinitionNode, + type IntValueNode, type Kind, type Location, type NameNode, @@ -137,6 +139,21 @@ export type ComposeDirectiveArgumentNode = { readonly loc?: Location; }; +export type EntityCacheDirectiveNode = { + readonly arguments: ReadonlyArray; + readonly kind: Kind.DIRECTIVE; + readonly name: NameNode; + readonly loc?: Location; +}; + +export type EntityCacheArgumentNode = { + readonly kind: Kind.ARGUMENT; + readonly name: NameNode; + // maxAge/negativeCacheTTL are Int; includeHeaders/partialCacheLoad/shadowMode are Boolean. + // validateDirectives() guarantees each argument's value matches its declared type. + readonly value: IntValueNode | BooleanValueNode; + readonly loc?: Location; +}; export type LinkImportData = { name: DirectiveName; coreUrl: string; diff --git a/composition/src/v1/normalization/utils.ts b/composition/src/v1/normalization/utils.ts index 62b77eeac3..668739a790 100644 --- a/composition/src/v1/normalization/utils.ts +++ b/composition/src/v1/normalization/utils.ts @@ -76,6 +76,7 @@ import { SPECIFIED_BY_DEFINITION_DATA, SUBSCRIPTION_FILTER_DEFINITION_DATA, TAG_DEFINITION_DATA, + ENTITY_CACHE_DEFINITION_DATA, } from '../../directive-definition-data/directive-definition-data'; import { AS, @@ -85,6 +86,7 @@ import { CONFIGURE_DESCRIPTION, CONNECT_FIELD_RESOLVER, COST, + ENTITY_CACHE, DEPRECATED, EDFS_KAFKA_PUBLISH, EDFS_KAFKA_SUBSCRIBE, @@ -473,6 +475,7 @@ export function initializeDirectiveDefinitionDatas(): Map { + describe('validation', () => { + test('errors without @key — the router needs @key fields to construct cache keys', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { product(id: ID!): Product } + # Product has @openfed__entityCache but no @key — there's no cache key to use + type Product @openfed__entityCache(maxAge: 60) { + id: ID! + name: String! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors).toHaveLength(1); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_ENTITY_CACHE, 'Product', FIRST_ORDINAL, [ + entityCacheWithoutKeyErrorMessage('Product'), + ]), + ); + }); + + test('rejects a maxAge of zero — TTL must be at least 1 second', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { product(id: ID!): Product } + type Product @key(fields: "id") @openfed__entityCache(maxAge: 0) { + id: ID! + name: String! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors).toHaveLength(1); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_ENTITY_CACHE, 'Product', FIRST_ORDINAL, [ + maxAgeNotPositiveIntegerErrorMessage(OPENFED_ENTITY_CACHE, 0), + ]), + ); + }); + + test('rejects a negative maxAge', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { product(id: ID!): Product } + type Product @key(fields: "id") @openfed__entityCache(maxAge: -5) { + id: ID! + name: String! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors).toHaveLength(1); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_ENTITY_CACHE, 'Product', FIRST_ORDINAL, [ + maxAgeNotPositiveIntegerErrorMessage(OPENFED_ENTITY_CACHE, -5), + ]), + ); + }); + + test('rejects a negative negativeCacheTTL', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { product(id: ID!): Product } + type Product @key(fields: "id") @openfed__entityCache(maxAge: 300, negativeCacheTTL: -1) { + id: ID! + name: String! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors.some((e) => e.message.includes('negativeCacheTTL must be a non-negative integer'))).toBe(true); + }); + }); + + describe('configuration extraction', () => { + test('with defaults produces the correct EntityCacheConfig', () => { + // Only maxAge is required; includeHeaders, partialCacheLoad, shadowMode default to false + const configs = getEntityCacheConfigs( + ` + type Query { product(id: ID!): Product } + type Product @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + name: String! + } + `, + 'Product', + ); + expect(configs).toStrictEqual([ + { + typeName: 'Product', + maxAgeSeconds: 60, + notFoundCacheTtlSeconds: 0, + includeHeaders: false, + partialCacheLoad: false, + shadowMode: false, + }, + ] satisfies EntityCacheConfig[]); + }); + + test('every argument propagates to the EntityCacheConfig', () => { + const configs = getEntityCacheConfigs( + ` + type Query { product(id: ID!): Product } + type Product @key(fields: "id") @openfed__entityCache(maxAge: 120, negativeCacheTTL: 10, includeHeaders: true, partialCacheLoad: true, shadowMode: true) { + id: ID! + name: String! + } + `, + 'Product', + ); + expect(configs).toStrictEqual([ + { + typeName: 'Product', + maxAgeSeconds: 120, + notFoundCacheTtlSeconds: 10, + includeHeaders: true, + partialCacheLoad: true, + shadowMode: true, + }, + ] satisfies EntityCacheConfig[]); + }); + }); +}); + +// Helper: normalizes the subgraph and returns the entityCache config array attached to `typeName`. +// On this branch entity-caching config is nested under ConfigurationData.entityCaching. +function getEntityCacheConfigs(sdl: string, typeName: string): Array | undefined { + const result = normalizeSubgraphSuccess(createSubgraphWithDefault(sdl), ROUTER_COMPATIBILITY_VERSION_ONE); + return result.configurationDataByTypeName.get(typeName)?.entityCaching?.entityCacheConfigurations; +} diff --git a/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go b/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go index 2df6fa273b..7d3e790f61 100644 --- a/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go +++ b/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go @@ -1070,8 +1070,10 @@ type DataSourceConfiguration struct { EntityInterfaces []*EntityInterfaceConfiguration `protobuf:"bytes,14,rep,name=entity_interfaces,json=entityInterfaces,proto3" json:"entity_interfaces,omitempty"` InterfaceObjects []*EntityInterfaceConfiguration `protobuf:"bytes,15,rep,name=interface_objects,json=interfaceObjects,proto3" json:"interface_objects,omitempty"` CostConfiguration *CostConfiguration `protobuf:"bytes,16,opt,name=cost_configuration,json=costConfiguration,proto3" json:"cost_configuration,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // Entity caching configuration (e.g. request-scoped fields from @openfed__requestScoped). + EntityCaching *EntityCaching `protobuf:"bytes,17,opt,name=entity_caching,json=entityCaching,proto3" json:"entity_caching,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DataSourceConfiguration) Reset() { @@ -1216,6 +1218,151 @@ func (x *DataSourceConfiguration) GetCostConfiguration() *CostConfiguration { return nil } +func (x *DataSourceConfiguration) GetEntityCaching() *EntityCaching { + if x != nil { + return x.EntityCaching + } + return nil +} + +// Entity caching configuration for a subgraph data source. +type EntityCaching struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Per-entity cache configurations (from @openfed__entityCache directive) + EntityCacheConfigurations []*EntityCacheConfiguration `protobuf:"bytes,1,rep,name=entity_cache_configurations,json=entityCacheConfigurations,proto3" json:"entity_cache_configurations,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *EntityCaching) Reset() { + *x = EntityCaching{} + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *EntityCaching) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EntityCaching) ProtoMessage() {} + +func (x *EntityCaching) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EntityCaching.ProtoReflect.Descriptor instead. +func (*EntityCaching) Descriptor() ([]byte, []int) { + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{12} +} + +func (x *EntityCaching) GetEntityCacheConfigurations() []*EntityCacheConfiguration { + if x != nil { + return x.EntityCacheConfigurations + } + return nil +} + +// Per-entity declaration for @openfed__entityCache. Marks a @key entity type as cacheable so the +// router can store/serve resolved entities from an external store (e.g. Redis). +type EntityCacheConfiguration struct { + state protoimpl.MessageState `protogen:"open.v1"` + TypeName string `protobuf:"bytes,1,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` + // TTL for cached entity values. Required: composition rejects values <= 0, + // so omit (zero) does not occur in practice. Interpreted in seconds. + MaxAgeSeconds int64 `protobuf:"varint,2,opt,name=max_age_seconds,json=maxAgeSeconds,proto3" json:"max_age_seconds,omitempty"` + IncludeHeaders bool `protobuf:"varint,3,opt,name=include_headers,json=includeHeaders,proto3" json:"include_headers,omitempty"` + PartialCacheLoad bool `protobuf:"varint,4,opt,name=partial_cache_load,json=partialCacheLoad,proto3" json:"partial_cache_load,omitempty"` + ShadowMode bool `protobuf:"varint,5,opt,name=shadow_mode,json=shadowMode,proto3" json:"shadow_mode,omitempty"` + // TTL for caching "not found" entity responses (entity returned null from + // _entities without errors). Omit or 0 disables negative caching and null + // responses are not cached. Positive values are seconds. Composition rejects + // negative values at schema validation time. + NotFoundCacheTtlSeconds int64 `protobuf:"varint,6,opt,name=not_found_cache_ttl_seconds,json=notFoundCacheTtlSeconds,proto3" json:"not_found_cache_ttl_seconds,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *EntityCacheConfiguration) Reset() { + *x = EntityCacheConfiguration{} + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *EntityCacheConfiguration) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EntityCacheConfiguration) ProtoMessage() {} + +func (x *EntityCacheConfiguration) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EntityCacheConfiguration.ProtoReflect.Descriptor instead. +func (*EntityCacheConfiguration) Descriptor() ([]byte, []int) { + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{13} +} + +func (x *EntityCacheConfiguration) GetTypeName() string { + if x != nil { + return x.TypeName + } + return "" +} + +func (x *EntityCacheConfiguration) GetMaxAgeSeconds() int64 { + if x != nil { + return x.MaxAgeSeconds + } + return 0 +} + +func (x *EntityCacheConfiguration) GetIncludeHeaders() bool { + if x != nil { + return x.IncludeHeaders + } + return false +} + +func (x *EntityCacheConfiguration) GetPartialCacheLoad() bool { + if x != nil { + return x.PartialCacheLoad + } + return false +} + +func (x *EntityCacheConfiguration) GetShadowMode() bool { + if x != nil { + return x.ShadowMode + } + return false +} + +func (x *EntityCacheConfiguration) GetNotFoundCacheTtlSeconds() int64 { + if x != nil { + return x.NotFoundCacheTtlSeconds + } + return 0 +} + type CostConfiguration struct { state protoimpl.MessageState `protogen:"open.v1"` FieldWeights []*FieldWeightConfiguration `protobuf:"bytes,1,rep,name=field_weights,json=fieldWeights,proto3" json:"field_weights,omitempty"` @@ -1228,7 +1375,7 @@ type CostConfiguration struct { func (x *CostConfiguration) Reset() { *x = CostConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[12] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1240,7 +1387,7 @@ func (x *CostConfiguration) String() string { func (*CostConfiguration) ProtoMessage() {} func (x *CostConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[12] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1253,7 +1400,7 @@ func (x *CostConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use CostConfiguration.ProtoReflect.Descriptor instead. func (*CostConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{12} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{14} } func (x *CostConfiguration) GetFieldWeights() []*FieldWeightConfiguration { @@ -1297,7 +1444,7 @@ type FieldWeightConfiguration struct { func (x *FieldWeightConfiguration) Reset() { *x = FieldWeightConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[13] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1309,7 +1456,7 @@ func (x *FieldWeightConfiguration) String() string { func (*FieldWeightConfiguration) ProtoMessage() {} func (x *FieldWeightConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[13] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1322,7 +1469,7 @@ func (x *FieldWeightConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldWeightConfiguration.ProtoReflect.Descriptor instead. func (*FieldWeightConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{13} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{15} } func (x *FieldWeightConfiguration) GetTypeName() string { @@ -1374,7 +1521,7 @@ type FieldListSizeConfiguration struct { func (x *FieldListSizeConfiguration) Reset() { *x = FieldListSizeConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[14] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1386,7 +1533,7 @@ func (x *FieldListSizeConfiguration) String() string { func (*FieldListSizeConfiguration) ProtoMessage() {} func (x *FieldListSizeConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[14] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1399,7 +1546,7 @@ func (x *FieldListSizeConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldListSizeConfiguration.ProtoReflect.Descriptor instead. func (*FieldListSizeConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{14} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{16} } func (x *FieldListSizeConfiguration) GetTypeName() string { @@ -1454,7 +1601,7 @@ type ArgumentConfiguration struct { func (x *ArgumentConfiguration) Reset() { *x = ArgumentConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[15] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1466,7 +1613,7 @@ func (x *ArgumentConfiguration) String() string { func (*ArgumentConfiguration) ProtoMessage() {} func (x *ArgumentConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[15] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1479,7 +1626,7 @@ func (x *ArgumentConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use ArgumentConfiguration.ProtoReflect.Descriptor instead. func (*ArgumentConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{15} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{17} } func (x *ArgumentConfiguration) GetName() string { @@ -1505,7 +1652,7 @@ type Scopes struct { func (x *Scopes) Reset() { *x = Scopes{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1517,7 +1664,7 @@ func (x *Scopes) String() string { func (*Scopes) ProtoMessage() {} func (x *Scopes) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1530,7 +1677,7 @@ func (x *Scopes) ProtoReflect() protoreflect.Message { // Deprecated: Use Scopes.ProtoReflect.Descriptor instead. func (*Scopes) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{16} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{18} } func (x *Scopes) GetRequiredAndScopes() []string { @@ -1551,7 +1698,7 @@ type AuthorizationConfiguration struct { func (x *AuthorizationConfiguration) Reset() { *x = AuthorizationConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1563,7 +1710,7 @@ func (x *AuthorizationConfiguration) String() string { func (*AuthorizationConfiguration) ProtoMessage() {} func (x *AuthorizationConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1576,7 +1723,7 @@ func (x *AuthorizationConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use AuthorizationConfiguration.ProtoReflect.Descriptor instead. func (*AuthorizationConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{17} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{19} } func (x *AuthorizationConfiguration) GetRequiresAuthentication() bool { @@ -1613,7 +1760,7 @@ type FieldConfiguration struct { func (x *FieldConfiguration) Reset() { *x = FieldConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1625,7 +1772,7 @@ func (x *FieldConfiguration) String() string { func (*FieldConfiguration) ProtoMessage() {} func (x *FieldConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1638,7 +1785,7 @@ func (x *FieldConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldConfiguration.ProtoReflect.Descriptor instead. func (*FieldConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{18} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{20} } func (x *FieldConfiguration) GetTypeName() string { @@ -1686,7 +1833,7 @@ type TypeConfiguration struct { func (x *TypeConfiguration) Reset() { *x = TypeConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1698,7 +1845,7 @@ func (x *TypeConfiguration) String() string { func (*TypeConfiguration) ProtoMessage() {} func (x *TypeConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1711,7 +1858,7 @@ func (x *TypeConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeConfiguration.ProtoReflect.Descriptor instead. func (*TypeConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{19} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{21} } func (x *TypeConfiguration) GetTypeName() string { @@ -1740,7 +1887,7 @@ type TypeField struct { func (x *TypeField) Reset() { *x = TypeField{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1752,7 +1899,7 @@ func (x *TypeField) String() string { func (*TypeField) ProtoMessage() {} func (x *TypeField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1765,7 +1912,7 @@ func (x *TypeField) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeField.ProtoReflect.Descriptor instead. func (*TypeField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{20} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{22} } func (x *TypeField) GetTypeName() string { @@ -1806,7 +1953,7 @@ type FieldCoordinates struct { func (x *FieldCoordinates) Reset() { *x = FieldCoordinates{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1818,7 +1965,7 @@ func (x *FieldCoordinates) String() string { func (*FieldCoordinates) ProtoMessage() {} func (x *FieldCoordinates) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1831,7 +1978,7 @@ func (x *FieldCoordinates) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldCoordinates.ProtoReflect.Descriptor instead. func (*FieldCoordinates) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{21} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{23} } func (x *FieldCoordinates) GetFieldName() string { @@ -1858,7 +2005,7 @@ type FieldSetCondition struct { func (x *FieldSetCondition) Reset() { *x = FieldSetCondition{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1870,7 +2017,7 @@ func (x *FieldSetCondition) String() string { func (*FieldSetCondition) ProtoMessage() {} func (x *FieldSetCondition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1883,7 +2030,7 @@ func (x *FieldSetCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldSetCondition.ProtoReflect.Descriptor instead. func (*FieldSetCondition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{22} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{24} } func (x *FieldSetCondition) GetFieldCoordinatesPath() []*FieldCoordinates { @@ -1913,7 +2060,7 @@ type RequiredField struct { func (x *RequiredField) Reset() { *x = RequiredField{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1925,7 +2072,7 @@ func (x *RequiredField) String() string { func (*RequiredField) ProtoMessage() {} func (x *RequiredField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1938,7 +2085,7 @@ func (x *RequiredField) ProtoReflect() protoreflect.Message { // Deprecated: Use RequiredField.ProtoReflect.Descriptor instead. func (*RequiredField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{23} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{25} } func (x *RequiredField) GetTypeName() string { @@ -1986,7 +2133,7 @@ type EntityInterfaceConfiguration struct { func (x *EntityInterfaceConfiguration) Reset() { *x = EntityInterfaceConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1998,7 +2145,7 @@ func (x *EntityInterfaceConfiguration) String() string { func (*EntityInterfaceConfiguration) ProtoMessage() {} func (x *EntityInterfaceConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2011,7 +2158,7 @@ func (x *EntityInterfaceConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use EntityInterfaceConfiguration.ProtoReflect.Descriptor instead. func (*EntityInterfaceConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{24} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{26} } func (x *EntityInterfaceConfiguration) GetInterfaceTypeName() string { @@ -2054,7 +2201,7 @@ type FetchConfiguration struct { func (x *FetchConfiguration) Reset() { *x = FetchConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2066,7 +2213,7 @@ func (x *FetchConfiguration) String() string { func (*FetchConfiguration) ProtoMessage() {} func (x *FetchConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2079,7 +2226,7 @@ func (x *FetchConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FetchConfiguration.ProtoReflect.Descriptor instead. func (*FetchConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{25} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{27} } func (x *FetchConfiguration) GetUrl() *ConfigurationVariable { @@ -2163,7 +2310,7 @@ type StatusCodeTypeMapping struct { func (x *StatusCodeTypeMapping) Reset() { *x = StatusCodeTypeMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2175,7 +2322,7 @@ func (x *StatusCodeTypeMapping) String() string { func (*StatusCodeTypeMapping) ProtoMessage() {} func (x *StatusCodeTypeMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2188,7 +2335,7 @@ func (x *StatusCodeTypeMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use StatusCodeTypeMapping.ProtoReflect.Descriptor instead. func (*StatusCodeTypeMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{26} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{28} } func (x *StatusCodeTypeMapping) GetStatusCode() int64 { @@ -2226,7 +2373,7 @@ type DataSourceCustom_GraphQL struct { func (x *DataSourceCustom_GraphQL) Reset() { *x = DataSourceCustom_GraphQL{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2238,7 +2385,7 @@ func (x *DataSourceCustom_GraphQL) String() string { func (*DataSourceCustom_GraphQL) ProtoMessage() {} func (x *DataSourceCustom_GraphQL) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2251,7 +2398,7 @@ func (x *DataSourceCustom_GraphQL) ProtoReflect() protoreflect.Message { // Deprecated: Use DataSourceCustom_GraphQL.ProtoReflect.Descriptor instead. func (*DataSourceCustom_GraphQL) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{27} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{29} } func (x *DataSourceCustom_GraphQL) GetFetch() *FetchConfiguration { @@ -2307,7 +2454,7 @@ type GRPCConfiguration struct { func (x *GRPCConfiguration) Reset() { *x = GRPCConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2319,7 +2466,7 @@ func (x *GRPCConfiguration) String() string { func (*GRPCConfiguration) ProtoMessage() {} func (x *GRPCConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2332,7 +2479,7 @@ func (x *GRPCConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCConfiguration.ProtoReflect.Descriptor instead. func (*GRPCConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{28} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{30} } func (x *GRPCConfiguration) GetMapping() *GRPCMapping { @@ -2366,7 +2513,7 @@ type ImageReference struct { func (x *ImageReference) Reset() { *x = ImageReference{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2378,7 +2525,7 @@ func (x *ImageReference) String() string { func (*ImageReference) ProtoMessage() {} func (x *ImageReference) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2391,7 +2538,7 @@ func (x *ImageReference) ProtoReflect() protoreflect.Message { // Deprecated: Use ImageReference.ProtoReflect.Descriptor instead. func (*ImageReference) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{29} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{31} } func (x *ImageReference) GetRepository() string { @@ -2421,7 +2568,7 @@ type PluginConfiguration struct { func (x *PluginConfiguration) Reset() { *x = PluginConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2433,7 +2580,7 @@ func (x *PluginConfiguration) String() string { func (*PluginConfiguration) ProtoMessage() {} func (x *PluginConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2446,7 +2593,7 @@ func (x *PluginConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use PluginConfiguration.ProtoReflect.Descriptor instead. func (*PluginConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{30} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{32} } func (x *PluginConfiguration) GetName() string { @@ -2480,7 +2627,7 @@ type SSLConfiguration struct { func (x *SSLConfiguration) Reset() { *x = SSLConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2492,7 +2639,7 @@ func (x *SSLConfiguration) String() string { func (*SSLConfiguration) ProtoMessage() {} func (x *SSLConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2505,7 +2652,7 @@ func (x *SSLConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use SSLConfiguration.ProtoReflect.Descriptor instead. func (*SSLConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{31} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{33} } func (x *SSLConfiguration) GetEnabled() bool { @@ -2538,7 +2685,7 @@ type GRPCMapping struct { func (x *GRPCMapping) Reset() { *x = GRPCMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2550,7 +2697,7 @@ func (x *GRPCMapping) String() string { func (*GRPCMapping) ProtoMessage() {} func (x *GRPCMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2563,7 +2710,7 @@ func (x *GRPCMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCMapping.ProtoReflect.Descriptor instead. func (*GRPCMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{32} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{34} } func (x *GRPCMapping) GetVersion() int32 { @@ -2634,7 +2781,7 @@ type LookupMapping struct { func (x *LookupMapping) Reset() { *x = LookupMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2646,7 +2793,7 @@ func (x *LookupMapping) String() string { func (*LookupMapping) ProtoMessage() {} func (x *LookupMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2659,7 +2806,7 @@ func (x *LookupMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use LookupMapping.ProtoReflect.Descriptor instead. func (*LookupMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{33} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{35} } func (x *LookupMapping) GetType() LookupType { @@ -2710,7 +2857,7 @@ type LookupFieldMapping struct { func (x *LookupFieldMapping) Reset() { *x = LookupFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2722,7 +2869,7 @@ func (x *LookupFieldMapping) String() string { func (*LookupFieldMapping) ProtoMessage() {} func (x *LookupFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2735,7 +2882,7 @@ func (x *LookupFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use LookupFieldMapping.ProtoReflect.Descriptor instead. func (*LookupFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{34} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{36} } func (x *LookupFieldMapping) GetType() string { @@ -2771,7 +2918,7 @@ type OperationMapping struct { func (x *OperationMapping) Reset() { *x = OperationMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2783,7 +2930,7 @@ func (x *OperationMapping) String() string { func (*OperationMapping) ProtoMessage() {} func (x *OperationMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2796,7 +2943,7 @@ func (x *OperationMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use OperationMapping.ProtoReflect.Descriptor instead. func (*OperationMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{35} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{37} } func (x *OperationMapping) GetType() OperationType { @@ -2857,7 +3004,7 @@ type EntityMapping struct { func (x *EntityMapping) Reset() { *x = EntityMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2869,7 +3016,7 @@ func (x *EntityMapping) String() string { func (*EntityMapping) ProtoMessage() {} func (x *EntityMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2882,7 +3029,7 @@ func (x *EntityMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EntityMapping.ProtoReflect.Descriptor instead. func (*EntityMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{36} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{38} } func (x *EntityMapping) GetTypeName() string { @@ -2950,7 +3097,7 @@ type RequiredFieldMapping struct { func (x *RequiredFieldMapping) Reset() { *x = RequiredFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2962,7 +3109,7 @@ func (x *RequiredFieldMapping) String() string { func (*RequiredFieldMapping) ProtoMessage() {} func (x *RequiredFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2975,7 +3122,7 @@ func (x *RequiredFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use RequiredFieldMapping.ProtoReflect.Descriptor instead. func (*RequiredFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{37} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{39} } func (x *RequiredFieldMapping) GetFieldMapping() *FieldMapping { @@ -3019,7 +3166,7 @@ type TypeFieldMapping struct { func (x *TypeFieldMapping) Reset() { *x = TypeFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3031,7 +3178,7 @@ func (x *TypeFieldMapping) String() string { func (*TypeFieldMapping) ProtoMessage() {} func (x *TypeFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3044,7 +3191,7 @@ func (x *TypeFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeFieldMapping.ProtoReflect.Descriptor instead. func (*TypeFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{38} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{40} } func (x *TypeFieldMapping) GetType() string { @@ -3076,7 +3223,7 @@ type FieldMapping struct { func (x *FieldMapping) Reset() { *x = FieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3088,7 +3235,7 @@ func (x *FieldMapping) String() string { func (*FieldMapping) ProtoMessage() {} func (x *FieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3101,7 +3248,7 @@ func (x *FieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldMapping.ProtoReflect.Descriptor instead. func (*FieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{39} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{41} } func (x *FieldMapping) GetOriginal() string { @@ -3138,7 +3285,7 @@ type ArgumentMapping struct { func (x *ArgumentMapping) Reset() { *x = ArgumentMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3150,7 +3297,7 @@ func (x *ArgumentMapping) String() string { func (*ArgumentMapping) ProtoMessage() {} func (x *ArgumentMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3163,7 +3310,7 @@ func (x *ArgumentMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use ArgumentMapping.ProtoReflect.Descriptor instead. func (*ArgumentMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{40} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{42} } func (x *ArgumentMapping) GetOriginal() string { @@ -3190,7 +3337,7 @@ type EnumMapping struct { func (x *EnumMapping) Reset() { *x = EnumMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3202,7 +3349,7 @@ func (x *EnumMapping) String() string { func (*EnumMapping) ProtoMessage() {} func (x *EnumMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3215,7 +3362,7 @@ func (x *EnumMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EnumMapping.ProtoReflect.Descriptor instead. func (*EnumMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{41} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{43} } func (x *EnumMapping) GetType() string { @@ -3242,7 +3389,7 @@ type EnumValueMapping struct { func (x *EnumValueMapping) Reset() { *x = EnumValueMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3254,7 +3401,7 @@ func (x *EnumValueMapping) String() string { func (*EnumValueMapping) ProtoMessage() {} func (x *EnumValueMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3267,7 +3414,7 @@ func (x *EnumValueMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EnumValueMapping.ProtoReflect.Descriptor instead. func (*EnumValueMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{42} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{44} } func (x *EnumValueMapping) GetOriginal() string { @@ -3295,7 +3442,7 @@ type NatsStreamConfiguration struct { func (x *NatsStreamConfiguration) Reset() { *x = NatsStreamConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3307,7 +3454,7 @@ func (x *NatsStreamConfiguration) String() string { func (*NatsStreamConfiguration) ProtoMessage() {} func (x *NatsStreamConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3320,7 +3467,7 @@ func (x *NatsStreamConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use NatsStreamConfiguration.ProtoReflect.Descriptor instead. func (*NatsStreamConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{43} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{45} } func (x *NatsStreamConfiguration) GetConsumerName() string { @@ -3355,7 +3502,7 @@ type NatsEventConfiguration struct { func (x *NatsEventConfiguration) Reset() { *x = NatsEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3367,7 +3514,7 @@ func (x *NatsEventConfiguration) String() string { func (*NatsEventConfiguration) ProtoMessage() {} func (x *NatsEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3380,7 +3527,7 @@ func (x *NatsEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use NatsEventConfiguration.ProtoReflect.Descriptor instead. func (*NatsEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{44} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{46} } func (x *NatsEventConfiguration) GetEngineEventConfiguration() *EngineEventConfiguration { @@ -3414,7 +3561,7 @@ type KafkaEventConfiguration struct { func (x *KafkaEventConfiguration) Reset() { *x = KafkaEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3426,7 +3573,7 @@ func (x *KafkaEventConfiguration) String() string { func (*KafkaEventConfiguration) ProtoMessage() {} func (x *KafkaEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3439,7 +3586,7 @@ func (x *KafkaEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use KafkaEventConfiguration.ProtoReflect.Descriptor instead. func (*KafkaEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{45} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{47} } func (x *KafkaEventConfiguration) GetEngineEventConfiguration() *EngineEventConfiguration { @@ -3466,7 +3613,7 @@ type RedisEventConfiguration struct { func (x *RedisEventConfiguration) Reset() { *x = RedisEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3478,7 +3625,7 @@ func (x *RedisEventConfiguration) String() string { func (*RedisEventConfiguration) ProtoMessage() {} func (x *RedisEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3491,7 +3638,7 @@ func (x *RedisEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use RedisEventConfiguration.ProtoReflect.Descriptor instead. func (*RedisEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{46} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{48} } func (x *RedisEventConfiguration) GetEngineEventConfiguration() *EngineEventConfiguration { @@ -3520,7 +3667,7 @@ type EngineEventConfiguration struct { func (x *EngineEventConfiguration) Reset() { *x = EngineEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3532,7 +3679,7 @@ func (x *EngineEventConfiguration) String() string { func (*EngineEventConfiguration) ProtoMessage() {} func (x *EngineEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3545,7 +3692,7 @@ func (x *EngineEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use EngineEventConfiguration.ProtoReflect.Descriptor instead. func (*EngineEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{47} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{49} } func (x *EngineEventConfiguration) GetProviderId() string { @@ -3587,7 +3734,7 @@ type DataSourceCustomEvents struct { func (x *DataSourceCustomEvents) Reset() { *x = DataSourceCustomEvents{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3599,7 +3746,7 @@ func (x *DataSourceCustomEvents) String() string { func (*DataSourceCustomEvents) ProtoMessage() {} func (x *DataSourceCustomEvents) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3612,7 +3759,7 @@ func (x *DataSourceCustomEvents) ProtoReflect() protoreflect.Message { // Deprecated: Use DataSourceCustomEvents.ProtoReflect.Descriptor instead. func (*DataSourceCustomEvents) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{48} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{50} } func (x *DataSourceCustomEvents) GetNats() []*NatsEventConfiguration { @@ -3645,7 +3792,7 @@ type DataSourceCustom_Static struct { func (x *DataSourceCustom_Static) Reset() { *x = DataSourceCustom_Static{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3657,7 +3804,7 @@ func (x *DataSourceCustom_Static) String() string { func (*DataSourceCustom_Static) ProtoMessage() {} func (x *DataSourceCustom_Static) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3670,7 +3817,7 @@ func (x *DataSourceCustom_Static) ProtoReflect() protoreflect.Message { // Deprecated: Use DataSourceCustom_Static.ProtoReflect.Descriptor instead. func (*DataSourceCustom_Static) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{49} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{51} } func (x *DataSourceCustom_Static) GetData() *ConfigurationVariable { @@ -3693,7 +3840,7 @@ type ConfigurationVariable struct { func (x *ConfigurationVariable) Reset() { *x = ConfigurationVariable{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3705,7 +3852,7 @@ func (x *ConfigurationVariable) String() string { func (*ConfigurationVariable) ProtoMessage() {} func (x *ConfigurationVariable) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3718,7 +3865,7 @@ func (x *ConfigurationVariable) ProtoReflect() protoreflect.Message { // Deprecated: Use ConfigurationVariable.ProtoReflect.Descriptor instead. func (*ConfigurationVariable) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{50} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{52} } func (x *ConfigurationVariable) GetKind() ConfigurationVariableKind { @@ -3766,7 +3913,7 @@ type DirectiveConfiguration struct { func (x *DirectiveConfiguration) Reset() { *x = DirectiveConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3778,7 +3925,7 @@ func (x *DirectiveConfiguration) String() string { func (*DirectiveConfiguration) ProtoMessage() {} func (x *DirectiveConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3791,7 +3938,7 @@ func (x *DirectiveConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use DirectiveConfiguration.ProtoReflect.Descriptor instead. func (*DirectiveConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{51} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{53} } func (x *DirectiveConfiguration) GetDirectiveName() string { @@ -3818,7 +3965,7 @@ type URLQueryConfiguration struct { func (x *URLQueryConfiguration) Reset() { *x = URLQueryConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3830,7 +3977,7 @@ func (x *URLQueryConfiguration) String() string { func (*URLQueryConfiguration) ProtoMessage() {} func (x *URLQueryConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3843,7 +3990,7 @@ func (x *URLQueryConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use URLQueryConfiguration.ProtoReflect.Descriptor instead. func (*URLQueryConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{52} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{54} } func (x *URLQueryConfiguration) GetName() string { @@ -3869,7 +4016,7 @@ type HTTPHeader struct { func (x *HTTPHeader) Reset() { *x = HTTPHeader{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3881,7 +4028,7 @@ func (x *HTTPHeader) String() string { func (*HTTPHeader) ProtoMessage() {} func (x *HTTPHeader) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3894,7 +4041,7 @@ func (x *HTTPHeader) ProtoReflect() protoreflect.Message { // Deprecated: Use HTTPHeader.ProtoReflect.Descriptor instead. func (*HTTPHeader) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{53} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{55} } func (x *HTTPHeader) GetValues() []*ConfigurationVariable { @@ -3915,7 +4062,7 @@ type MTLSConfiguration struct { func (x *MTLSConfiguration) Reset() { *x = MTLSConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3927,7 +4074,7 @@ func (x *MTLSConfiguration) String() string { func (*MTLSConfiguration) ProtoMessage() {} func (x *MTLSConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3940,7 +4087,7 @@ func (x *MTLSConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use MTLSConfiguration.ProtoReflect.Descriptor instead. func (*MTLSConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{54} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{56} } func (x *MTLSConfiguration) GetKey() *ConfigurationVariable { @@ -3978,7 +4125,7 @@ type GraphQLSubscriptionConfiguration struct { func (x *GraphQLSubscriptionConfiguration) Reset() { *x = GraphQLSubscriptionConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3990,7 +4137,7 @@ func (x *GraphQLSubscriptionConfiguration) String() string { func (*GraphQLSubscriptionConfiguration) ProtoMessage() {} func (x *GraphQLSubscriptionConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4003,7 +4150,7 @@ func (x *GraphQLSubscriptionConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use GraphQLSubscriptionConfiguration.ProtoReflect.Descriptor instead. func (*GraphQLSubscriptionConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{55} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{57} } func (x *GraphQLSubscriptionConfiguration) GetEnabled() bool { @@ -4051,7 +4198,7 @@ type GraphQLFederationConfiguration struct { func (x *GraphQLFederationConfiguration) Reset() { *x = GraphQLFederationConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4063,7 +4210,7 @@ func (x *GraphQLFederationConfiguration) String() string { func (*GraphQLFederationConfiguration) ProtoMessage() {} func (x *GraphQLFederationConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4076,7 +4223,7 @@ func (x *GraphQLFederationConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use GraphQLFederationConfiguration.ProtoReflect.Descriptor instead. func (*GraphQLFederationConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{56} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{58} } func (x *GraphQLFederationConfiguration) GetEnabled() bool { @@ -4103,7 +4250,7 @@ type InternedString struct { func (x *InternedString) Reset() { *x = InternedString{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4115,7 +4262,7 @@ func (x *InternedString) String() string { func (*InternedString) ProtoMessage() {} func (x *InternedString) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4128,7 +4275,7 @@ func (x *InternedString) ProtoReflect() protoreflect.Message { // Deprecated: Use InternedString.ProtoReflect.Descriptor instead. func (*InternedString) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{57} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{59} } func (x *InternedString) GetKey() string { @@ -4148,7 +4295,7 @@ type SingleTypeField struct { func (x *SingleTypeField) Reset() { *x = SingleTypeField{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4160,7 +4307,7 @@ func (x *SingleTypeField) String() string { func (*SingleTypeField) ProtoMessage() {} func (x *SingleTypeField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4173,7 +4320,7 @@ func (x *SingleTypeField) ProtoReflect() protoreflect.Message { // Deprecated: Use SingleTypeField.ProtoReflect.Descriptor instead. func (*SingleTypeField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{58} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{60} } func (x *SingleTypeField) GetTypeName() string { @@ -4200,7 +4347,7 @@ type SubscriptionFieldCondition struct { func (x *SubscriptionFieldCondition) Reset() { *x = SubscriptionFieldCondition{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4212,7 +4359,7 @@ func (x *SubscriptionFieldCondition) String() string { func (*SubscriptionFieldCondition) ProtoMessage() {} func (x *SubscriptionFieldCondition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4225,7 +4372,7 @@ func (x *SubscriptionFieldCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionFieldCondition.ProtoReflect.Descriptor instead. func (*SubscriptionFieldCondition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{59} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{61} } func (x *SubscriptionFieldCondition) GetFieldPath() []string { @@ -4254,7 +4401,7 @@ type SubscriptionFilterCondition struct { func (x *SubscriptionFilterCondition) Reset() { *x = SubscriptionFilterCondition{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4266,7 +4413,7 @@ func (x *SubscriptionFilterCondition) String() string { func (*SubscriptionFilterCondition) ProtoMessage() {} func (x *SubscriptionFilterCondition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4279,7 +4426,7 @@ func (x *SubscriptionFilterCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionFilterCondition.ProtoReflect.Descriptor instead. func (*SubscriptionFilterCondition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{60} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{62} } func (x *SubscriptionFilterCondition) GetAnd() []*SubscriptionFilterCondition { @@ -4319,7 +4466,7 @@ type CacheWarmerOperations struct { func (x *CacheWarmerOperations) Reset() { *x = CacheWarmerOperations{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4331,7 +4478,7 @@ func (x *CacheWarmerOperations) String() string { func (*CacheWarmerOperations) ProtoMessage() {} func (x *CacheWarmerOperations) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4344,7 +4491,7 @@ func (x *CacheWarmerOperations) ProtoReflect() protoreflect.Message { // Deprecated: Use CacheWarmerOperations.ProtoReflect.Descriptor instead. func (*CacheWarmerOperations) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{61} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{63} } func (x *CacheWarmerOperations) GetOperations() []*Operation { @@ -4364,7 +4511,7 @@ type Operation struct { func (x *Operation) Reset() { *x = Operation{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4376,7 +4523,7 @@ func (x *Operation) String() string { func (*Operation) ProtoMessage() {} func (x *Operation) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4389,7 +4536,7 @@ func (x *Operation) ProtoReflect() protoreflect.Message { // Deprecated: Use Operation.ProtoReflect.Descriptor instead. func (*Operation) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{62} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{64} } func (x *Operation) GetRequest() *OperationRequest { @@ -4417,7 +4564,7 @@ type OperationRequest struct { func (x *OperationRequest) Reset() { *x = OperationRequest{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4429,7 +4576,7 @@ func (x *OperationRequest) String() string { func (*OperationRequest) ProtoMessage() {} func (x *OperationRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4442,7 +4589,7 @@ func (x *OperationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use OperationRequest.ProtoReflect.Descriptor instead. func (*OperationRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{63} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{65} } func (x *OperationRequest) GetOperationName() string { @@ -4475,7 +4622,7 @@ type Extension struct { func (x *Extension) Reset() { *x = Extension{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4487,7 +4634,7 @@ func (x *Extension) String() string { func (*Extension) ProtoMessage() {} func (x *Extension) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4500,7 +4647,7 @@ func (x *Extension) ProtoReflect() protoreflect.Message { // Deprecated: Use Extension.ProtoReflect.Descriptor instead. func (*Extension) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{64} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{66} } func (x *Extension) GetPersistedQuery() *PersistedQuery { @@ -4520,7 +4667,7 @@ type PersistedQuery struct { func (x *PersistedQuery) Reset() { *x = PersistedQuery{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4532,7 +4679,7 @@ func (x *PersistedQuery) String() string { func (*PersistedQuery) ProtoMessage() {} func (x *PersistedQuery) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4545,7 +4692,7 @@ func (x *PersistedQuery) ProtoReflect() protoreflect.Message { // Deprecated: Use PersistedQuery.ProtoReflect.Descriptor instead. func (*PersistedQuery) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{65} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{67} } func (x *PersistedQuery) GetSha256Hash() string { @@ -4572,7 +4719,7 @@ type ClientInfo struct { func (x *ClientInfo) Reset() { *x = ClientInfo{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4584,7 +4731,7 @@ func (x *ClientInfo) String() string { func (*ClientInfo) ProtoMessage() {} func (x *ClientInfo) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4597,7 +4744,7 @@ func (x *ClientInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ClientInfo.ProtoReflect.Descriptor instead. func (*ClientInfo) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{66} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{68} } func (x *ClientInfo) GetName() string { @@ -4669,7 +4816,7 @@ const file_wg_cosmo_node_v1_node_proto_rawDesc = "" + "\x12StringStorageEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\x18\n" + - "\x16_graphql_client_schema\"\xce\b\n" + + "\x16_graphql_client_schema\"\x96\t\n" + "\x17DataSourceConfiguration\x124\n" + "\x04kind\x18\x01 \x01(\x0e2 .wg.cosmo.node.v1.DataSourceKindR\x04kind\x12:\n" + "\n" + @@ -4691,7 +4838,18 @@ const file_wg_cosmo_node_v1_node_proto_rawDesc = "" + "\rcustom_events\x18\r \x01(\v2(.wg.cosmo.node.v1.DataSourceCustomEventsR\fcustomEvents\x12[\n" + "\x11entity_interfaces\x18\x0e \x03(\v2..wg.cosmo.node.v1.EntityInterfaceConfigurationR\x10entityInterfaces\x12[\n" + "\x11interface_objects\x18\x0f \x03(\v2..wg.cosmo.node.v1.EntityInterfaceConfigurationR\x10interfaceObjects\x12R\n" + - "\x12cost_configuration\x18\x10 \x01(\v2#.wg.cosmo.node.v1.CostConfigurationR\x11costConfiguration\"\x98\x04\n" + + "\x12cost_configuration\x18\x10 \x01(\v2#.wg.cosmo.node.v1.CostConfigurationR\x11costConfiguration\x12F\n" + + "\x0eentity_caching\x18\x11 \x01(\v2\x1f.wg.cosmo.node.v1.EntityCachingR\rentityCaching\"{\n" + + "\rEntityCaching\x12j\n" + + "\x1bentity_cache_configurations\x18\x01 \x03(\v2*.wg.cosmo.node.v1.EntityCacheConfigurationR\x19entityCacheConfigurations\"\x95\x02\n" + + "\x18EntityCacheConfiguration\x12\x1b\n" + + "\ttype_name\x18\x01 \x01(\tR\btypeName\x12&\n" + + "\x0fmax_age_seconds\x18\x02 \x01(\x03R\rmaxAgeSeconds\x12'\n" + + "\x0finclude_headers\x18\x03 \x01(\bR\x0eincludeHeaders\x12,\n" + + "\x12partial_cache_load\x18\x04 \x01(\bR\x10partialCacheLoad\x12\x1f\n" + + "\vshadow_mode\x18\x05 \x01(\bR\n" + + "shadowMode\x12<\n" + + "\x1bnot_found_cache_ttl_seconds\x18\x06 \x01(\x03R\x17notFoundCacheTtlSeconds\"\x98\x04\n" + "\x11CostConfiguration\x12O\n" + "\rfield_weights\x18\x01 \x03(\v2*.wg.cosmo.node.v1.FieldWeightConfigurationR\ffieldWeights\x12K\n" + "\n" + @@ -5030,7 +5188,7 @@ func file_wg_cosmo_node_v1_node_proto_rawDescGZIP() []byte { } var file_wg_cosmo_node_v1_node_proto_enumTypes = make([]protoimpl.EnumInfo, 8) -var file_wg_cosmo_node_v1_node_proto_msgTypes = make([]protoimpl.MessageInfo, 74) +var file_wg_cosmo_node_v1_node_proto_msgTypes = make([]protoimpl.MessageInfo, 76) var file_wg_cosmo_node_v1_node_proto_goTypes = []any{ (ArgumentRenderConfiguration)(0), // 0: wg.cosmo.node.v1.ArgumentRenderConfiguration (ArgumentSource)(0), // 1: wg.cosmo.node.v1.ArgumentSource @@ -5052,180 +5210,184 @@ var file_wg_cosmo_node_v1_node_proto_goTypes = []any{ (*SelfRegisterResponse)(nil), // 17: wg.cosmo.node.v1.SelfRegisterResponse (*EngineConfiguration)(nil), // 18: wg.cosmo.node.v1.EngineConfiguration (*DataSourceConfiguration)(nil), // 19: wg.cosmo.node.v1.DataSourceConfiguration - (*CostConfiguration)(nil), // 20: wg.cosmo.node.v1.CostConfiguration - (*FieldWeightConfiguration)(nil), // 21: wg.cosmo.node.v1.FieldWeightConfiguration - (*FieldListSizeConfiguration)(nil), // 22: wg.cosmo.node.v1.FieldListSizeConfiguration - (*ArgumentConfiguration)(nil), // 23: wg.cosmo.node.v1.ArgumentConfiguration - (*Scopes)(nil), // 24: wg.cosmo.node.v1.Scopes - (*AuthorizationConfiguration)(nil), // 25: wg.cosmo.node.v1.AuthorizationConfiguration - (*FieldConfiguration)(nil), // 26: wg.cosmo.node.v1.FieldConfiguration - (*TypeConfiguration)(nil), // 27: wg.cosmo.node.v1.TypeConfiguration - (*TypeField)(nil), // 28: wg.cosmo.node.v1.TypeField - (*FieldCoordinates)(nil), // 29: wg.cosmo.node.v1.FieldCoordinates - (*FieldSetCondition)(nil), // 30: wg.cosmo.node.v1.FieldSetCondition - (*RequiredField)(nil), // 31: wg.cosmo.node.v1.RequiredField - (*EntityInterfaceConfiguration)(nil), // 32: wg.cosmo.node.v1.EntityInterfaceConfiguration - (*FetchConfiguration)(nil), // 33: wg.cosmo.node.v1.FetchConfiguration - (*StatusCodeTypeMapping)(nil), // 34: wg.cosmo.node.v1.StatusCodeTypeMapping - (*DataSourceCustom_GraphQL)(nil), // 35: wg.cosmo.node.v1.DataSourceCustom_GraphQL - (*GRPCConfiguration)(nil), // 36: wg.cosmo.node.v1.GRPCConfiguration - (*ImageReference)(nil), // 37: wg.cosmo.node.v1.ImageReference - (*PluginConfiguration)(nil), // 38: wg.cosmo.node.v1.PluginConfiguration - (*SSLConfiguration)(nil), // 39: wg.cosmo.node.v1.SSLConfiguration - (*GRPCMapping)(nil), // 40: wg.cosmo.node.v1.GRPCMapping - (*LookupMapping)(nil), // 41: wg.cosmo.node.v1.LookupMapping - (*LookupFieldMapping)(nil), // 42: wg.cosmo.node.v1.LookupFieldMapping - (*OperationMapping)(nil), // 43: wg.cosmo.node.v1.OperationMapping - (*EntityMapping)(nil), // 44: wg.cosmo.node.v1.EntityMapping - (*RequiredFieldMapping)(nil), // 45: wg.cosmo.node.v1.RequiredFieldMapping - (*TypeFieldMapping)(nil), // 46: wg.cosmo.node.v1.TypeFieldMapping - (*FieldMapping)(nil), // 47: wg.cosmo.node.v1.FieldMapping - (*ArgumentMapping)(nil), // 48: wg.cosmo.node.v1.ArgumentMapping - (*EnumMapping)(nil), // 49: wg.cosmo.node.v1.EnumMapping - (*EnumValueMapping)(nil), // 50: wg.cosmo.node.v1.EnumValueMapping - (*NatsStreamConfiguration)(nil), // 51: wg.cosmo.node.v1.NatsStreamConfiguration - (*NatsEventConfiguration)(nil), // 52: wg.cosmo.node.v1.NatsEventConfiguration - (*KafkaEventConfiguration)(nil), // 53: wg.cosmo.node.v1.KafkaEventConfiguration - (*RedisEventConfiguration)(nil), // 54: wg.cosmo.node.v1.RedisEventConfiguration - (*EngineEventConfiguration)(nil), // 55: wg.cosmo.node.v1.EngineEventConfiguration - (*DataSourceCustomEvents)(nil), // 56: wg.cosmo.node.v1.DataSourceCustomEvents - (*DataSourceCustom_Static)(nil), // 57: wg.cosmo.node.v1.DataSourceCustom_Static - (*ConfigurationVariable)(nil), // 58: wg.cosmo.node.v1.ConfigurationVariable - (*DirectiveConfiguration)(nil), // 59: wg.cosmo.node.v1.DirectiveConfiguration - (*URLQueryConfiguration)(nil), // 60: wg.cosmo.node.v1.URLQueryConfiguration - (*HTTPHeader)(nil), // 61: wg.cosmo.node.v1.HTTPHeader - (*MTLSConfiguration)(nil), // 62: wg.cosmo.node.v1.MTLSConfiguration - (*GraphQLSubscriptionConfiguration)(nil), // 63: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration - (*GraphQLFederationConfiguration)(nil), // 64: wg.cosmo.node.v1.GraphQLFederationConfiguration - (*InternedString)(nil), // 65: wg.cosmo.node.v1.InternedString - (*SingleTypeField)(nil), // 66: wg.cosmo.node.v1.SingleTypeField - (*SubscriptionFieldCondition)(nil), // 67: wg.cosmo.node.v1.SubscriptionFieldCondition - (*SubscriptionFilterCondition)(nil), // 68: wg.cosmo.node.v1.SubscriptionFilterCondition - (*CacheWarmerOperations)(nil), // 69: wg.cosmo.node.v1.CacheWarmerOperations - (*Operation)(nil), // 70: wg.cosmo.node.v1.Operation - (*OperationRequest)(nil), // 71: wg.cosmo.node.v1.OperationRequest - (*Extension)(nil), // 72: wg.cosmo.node.v1.Extension - (*PersistedQuery)(nil), // 73: wg.cosmo.node.v1.PersistedQuery - (*ClientInfo)(nil), // 74: wg.cosmo.node.v1.ClientInfo - nil, // 75: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry - nil, // 76: wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry - nil, // 77: wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry - nil, // 78: wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry - nil, // 79: wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry - nil, // 80: wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry - nil, // 81: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry - (common.EnumStatusCode)(0), // 82: wg.cosmo.common.EnumStatusCode - (common.GraphQLSubscriptionProtocol)(0), // 83: wg.cosmo.common.GraphQLSubscriptionProtocol - (common.GraphQLWebsocketSubprotocol)(0), // 84: wg.cosmo.common.GraphQLWebsocketSubprotocol + (*EntityCaching)(nil), // 20: wg.cosmo.node.v1.EntityCaching + (*EntityCacheConfiguration)(nil), // 21: wg.cosmo.node.v1.EntityCacheConfiguration + (*CostConfiguration)(nil), // 22: wg.cosmo.node.v1.CostConfiguration + (*FieldWeightConfiguration)(nil), // 23: wg.cosmo.node.v1.FieldWeightConfiguration + (*FieldListSizeConfiguration)(nil), // 24: wg.cosmo.node.v1.FieldListSizeConfiguration + (*ArgumentConfiguration)(nil), // 25: wg.cosmo.node.v1.ArgumentConfiguration + (*Scopes)(nil), // 26: wg.cosmo.node.v1.Scopes + (*AuthorizationConfiguration)(nil), // 27: wg.cosmo.node.v1.AuthorizationConfiguration + (*FieldConfiguration)(nil), // 28: wg.cosmo.node.v1.FieldConfiguration + (*TypeConfiguration)(nil), // 29: wg.cosmo.node.v1.TypeConfiguration + (*TypeField)(nil), // 30: wg.cosmo.node.v1.TypeField + (*FieldCoordinates)(nil), // 31: wg.cosmo.node.v1.FieldCoordinates + (*FieldSetCondition)(nil), // 32: wg.cosmo.node.v1.FieldSetCondition + (*RequiredField)(nil), // 33: wg.cosmo.node.v1.RequiredField + (*EntityInterfaceConfiguration)(nil), // 34: wg.cosmo.node.v1.EntityInterfaceConfiguration + (*FetchConfiguration)(nil), // 35: wg.cosmo.node.v1.FetchConfiguration + (*StatusCodeTypeMapping)(nil), // 36: wg.cosmo.node.v1.StatusCodeTypeMapping + (*DataSourceCustom_GraphQL)(nil), // 37: wg.cosmo.node.v1.DataSourceCustom_GraphQL + (*GRPCConfiguration)(nil), // 38: wg.cosmo.node.v1.GRPCConfiguration + (*ImageReference)(nil), // 39: wg.cosmo.node.v1.ImageReference + (*PluginConfiguration)(nil), // 40: wg.cosmo.node.v1.PluginConfiguration + (*SSLConfiguration)(nil), // 41: wg.cosmo.node.v1.SSLConfiguration + (*GRPCMapping)(nil), // 42: wg.cosmo.node.v1.GRPCMapping + (*LookupMapping)(nil), // 43: wg.cosmo.node.v1.LookupMapping + (*LookupFieldMapping)(nil), // 44: wg.cosmo.node.v1.LookupFieldMapping + (*OperationMapping)(nil), // 45: wg.cosmo.node.v1.OperationMapping + (*EntityMapping)(nil), // 46: wg.cosmo.node.v1.EntityMapping + (*RequiredFieldMapping)(nil), // 47: wg.cosmo.node.v1.RequiredFieldMapping + (*TypeFieldMapping)(nil), // 48: wg.cosmo.node.v1.TypeFieldMapping + (*FieldMapping)(nil), // 49: wg.cosmo.node.v1.FieldMapping + (*ArgumentMapping)(nil), // 50: wg.cosmo.node.v1.ArgumentMapping + (*EnumMapping)(nil), // 51: wg.cosmo.node.v1.EnumMapping + (*EnumValueMapping)(nil), // 52: wg.cosmo.node.v1.EnumValueMapping + (*NatsStreamConfiguration)(nil), // 53: wg.cosmo.node.v1.NatsStreamConfiguration + (*NatsEventConfiguration)(nil), // 54: wg.cosmo.node.v1.NatsEventConfiguration + (*KafkaEventConfiguration)(nil), // 55: wg.cosmo.node.v1.KafkaEventConfiguration + (*RedisEventConfiguration)(nil), // 56: wg.cosmo.node.v1.RedisEventConfiguration + (*EngineEventConfiguration)(nil), // 57: wg.cosmo.node.v1.EngineEventConfiguration + (*DataSourceCustomEvents)(nil), // 58: wg.cosmo.node.v1.DataSourceCustomEvents + (*DataSourceCustom_Static)(nil), // 59: wg.cosmo.node.v1.DataSourceCustom_Static + (*ConfigurationVariable)(nil), // 60: wg.cosmo.node.v1.ConfigurationVariable + (*DirectiveConfiguration)(nil), // 61: wg.cosmo.node.v1.DirectiveConfiguration + (*URLQueryConfiguration)(nil), // 62: wg.cosmo.node.v1.URLQueryConfiguration + (*HTTPHeader)(nil), // 63: wg.cosmo.node.v1.HTTPHeader + (*MTLSConfiguration)(nil), // 64: wg.cosmo.node.v1.MTLSConfiguration + (*GraphQLSubscriptionConfiguration)(nil), // 65: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration + (*GraphQLFederationConfiguration)(nil), // 66: wg.cosmo.node.v1.GraphQLFederationConfiguration + (*InternedString)(nil), // 67: wg.cosmo.node.v1.InternedString + (*SingleTypeField)(nil), // 68: wg.cosmo.node.v1.SingleTypeField + (*SubscriptionFieldCondition)(nil), // 69: wg.cosmo.node.v1.SubscriptionFieldCondition + (*SubscriptionFilterCondition)(nil), // 70: wg.cosmo.node.v1.SubscriptionFilterCondition + (*CacheWarmerOperations)(nil), // 71: wg.cosmo.node.v1.CacheWarmerOperations + (*Operation)(nil), // 72: wg.cosmo.node.v1.Operation + (*OperationRequest)(nil), // 73: wg.cosmo.node.v1.OperationRequest + (*Extension)(nil), // 74: wg.cosmo.node.v1.Extension + (*PersistedQuery)(nil), // 75: wg.cosmo.node.v1.PersistedQuery + (*ClientInfo)(nil), // 76: wg.cosmo.node.v1.ClientInfo + nil, // 77: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry + nil, // 78: wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry + nil, // 79: wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry + nil, // 80: wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry + nil, // 81: wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry + nil, // 82: wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry + nil, // 83: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry + (common.EnumStatusCode)(0), // 84: wg.cosmo.common.EnumStatusCode + (common.GraphQLSubscriptionProtocol)(0), // 85: wg.cosmo.common.GraphQLSubscriptionProtocol + (common.GraphQLWebsocketSubprotocol)(0), // 86: wg.cosmo.common.GraphQLWebsocketSubprotocol } var file_wg_cosmo_node_v1_node_proto_depIdxs = []int32{ - 75, // 0: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.config_by_feature_flag_name:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry + 77, // 0: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.config_by_feature_flag_name:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry 18, // 1: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig.engine_config:type_name -> wg.cosmo.node.v1.EngineConfiguration 8, // 2: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig.subgraphs:type_name -> wg.cosmo.node.v1.Subgraph 18, // 3: wg.cosmo.node.v1.RouterConfig.engine_config:type_name -> wg.cosmo.node.v1.EngineConfiguration 8, // 4: wg.cosmo.node.v1.RouterConfig.subgraphs:type_name -> wg.cosmo.node.v1.Subgraph 9, // 5: wg.cosmo.node.v1.RouterConfig.feature_flag_configs:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs - 82, // 6: wg.cosmo.node.v1.Response.code:type_name -> wg.cosmo.common.EnumStatusCode + 84, // 6: wg.cosmo.node.v1.Response.code:type_name -> wg.cosmo.common.EnumStatusCode 15, // 7: wg.cosmo.node.v1.RegistrationInfo.account_limits:type_name -> wg.cosmo.node.v1.AccountLimits 12, // 8: wg.cosmo.node.v1.SelfRegisterResponse.response:type_name -> wg.cosmo.node.v1.Response 14, // 9: wg.cosmo.node.v1.SelfRegisterResponse.registrationInfo:type_name -> wg.cosmo.node.v1.RegistrationInfo 19, // 10: wg.cosmo.node.v1.EngineConfiguration.datasource_configurations:type_name -> wg.cosmo.node.v1.DataSourceConfiguration - 26, // 11: wg.cosmo.node.v1.EngineConfiguration.field_configurations:type_name -> wg.cosmo.node.v1.FieldConfiguration - 27, // 12: wg.cosmo.node.v1.EngineConfiguration.type_configurations:type_name -> wg.cosmo.node.v1.TypeConfiguration - 76, // 13: wg.cosmo.node.v1.EngineConfiguration.string_storage:type_name -> wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry + 28, // 11: wg.cosmo.node.v1.EngineConfiguration.field_configurations:type_name -> wg.cosmo.node.v1.FieldConfiguration + 29, // 12: wg.cosmo.node.v1.EngineConfiguration.type_configurations:type_name -> wg.cosmo.node.v1.TypeConfiguration + 78, // 13: wg.cosmo.node.v1.EngineConfiguration.string_storage:type_name -> wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry 2, // 14: wg.cosmo.node.v1.DataSourceConfiguration.kind:type_name -> wg.cosmo.node.v1.DataSourceKind - 28, // 15: wg.cosmo.node.v1.DataSourceConfiguration.root_nodes:type_name -> wg.cosmo.node.v1.TypeField - 28, // 16: wg.cosmo.node.v1.DataSourceConfiguration.child_nodes:type_name -> wg.cosmo.node.v1.TypeField - 35, // 17: wg.cosmo.node.v1.DataSourceConfiguration.custom_graphql:type_name -> wg.cosmo.node.v1.DataSourceCustom_GraphQL - 57, // 18: wg.cosmo.node.v1.DataSourceConfiguration.custom_static:type_name -> wg.cosmo.node.v1.DataSourceCustom_Static - 59, // 19: wg.cosmo.node.v1.DataSourceConfiguration.directives:type_name -> wg.cosmo.node.v1.DirectiveConfiguration - 31, // 20: wg.cosmo.node.v1.DataSourceConfiguration.keys:type_name -> wg.cosmo.node.v1.RequiredField - 31, // 21: wg.cosmo.node.v1.DataSourceConfiguration.provides:type_name -> wg.cosmo.node.v1.RequiredField - 31, // 22: wg.cosmo.node.v1.DataSourceConfiguration.requires:type_name -> wg.cosmo.node.v1.RequiredField - 56, // 23: wg.cosmo.node.v1.DataSourceConfiguration.custom_events:type_name -> wg.cosmo.node.v1.DataSourceCustomEvents - 32, // 24: wg.cosmo.node.v1.DataSourceConfiguration.entity_interfaces:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration - 32, // 25: wg.cosmo.node.v1.DataSourceConfiguration.interface_objects:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration - 20, // 26: wg.cosmo.node.v1.DataSourceConfiguration.cost_configuration:type_name -> wg.cosmo.node.v1.CostConfiguration - 21, // 27: wg.cosmo.node.v1.CostConfiguration.field_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration - 22, // 28: wg.cosmo.node.v1.CostConfiguration.list_sizes:type_name -> wg.cosmo.node.v1.FieldListSizeConfiguration - 77, // 29: wg.cosmo.node.v1.CostConfiguration.type_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry - 78, // 30: wg.cosmo.node.v1.CostConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry - 79, // 31: wg.cosmo.node.v1.FieldWeightConfiguration.argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry - 80, // 32: wg.cosmo.node.v1.FieldWeightConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry - 1, // 33: wg.cosmo.node.v1.ArgumentConfiguration.source_type:type_name -> wg.cosmo.node.v1.ArgumentSource - 24, // 34: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes:type_name -> wg.cosmo.node.v1.Scopes - 24, // 35: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes_by_or:type_name -> wg.cosmo.node.v1.Scopes - 23, // 36: wg.cosmo.node.v1.FieldConfiguration.arguments_configuration:type_name -> wg.cosmo.node.v1.ArgumentConfiguration - 25, // 37: wg.cosmo.node.v1.FieldConfiguration.authorization_configuration:type_name -> wg.cosmo.node.v1.AuthorizationConfiguration - 68, // 38: wg.cosmo.node.v1.FieldConfiguration.subscription_filter_condition:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 29, // 39: wg.cosmo.node.v1.FieldSetCondition.field_coordinates_path:type_name -> wg.cosmo.node.v1.FieldCoordinates - 30, // 40: wg.cosmo.node.v1.RequiredField.conditions:type_name -> wg.cosmo.node.v1.FieldSetCondition - 58, // 41: wg.cosmo.node.v1.FetchConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 7, // 42: wg.cosmo.node.v1.FetchConfiguration.method:type_name -> wg.cosmo.node.v1.HTTPMethod - 81, // 43: wg.cosmo.node.v1.FetchConfiguration.header:type_name -> wg.cosmo.node.v1.FetchConfiguration.HeaderEntry - 58, // 44: wg.cosmo.node.v1.FetchConfiguration.body:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 60, // 45: wg.cosmo.node.v1.FetchConfiguration.query:type_name -> wg.cosmo.node.v1.URLQueryConfiguration - 62, // 46: wg.cosmo.node.v1.FetchConfiguration.mtls:type_name -> wg.cosmo.node.v1.MTLSConfiguration - 58, // 47: wg.cosmo.node.v1.FetchConfiguration.base_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 58, // 48: wg.cosmo.node.v1.FetchConfiguration.path:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 58, // 49: wg.cosmo.node.v1.FetchConfiguration.http_proxy_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 33, // 50: wg.cosmo.node.v1.DataSourceCustom_GraphQL.fetch:type_name -> wg.cosmo.node.v1.FetchConfiguration - 63, // 51: wg.cosmo.node.v1.DataSourceCustom_GraphQL.subscription:type_name -> wg.cosmo.node.v1.GraphQLSubscriptionConfiguration - 64, // 52: wg.cosmo.node.v1.DataSourceCustom_GraphQL.federation:type_name -> wg.cosmo.node.v1.GraphQLFederationConfiguration - 65, // 53: wg.cosmo.node.v1.DataSourceCustom_GraphQL.upstream_schema:type_name -> wg.cosmo.node.v1.InternedString - 66, // 54: wg.cosmo.node.v1.DataSourceCustom_GraphQL.custom_scalar_type_fields:type_name -> wg.cosmo.node.v1.SingleTypeField - 36, // 55: wg.cosmo.node.v1.DataSourceCustom_GraphQL.grpc:type_name -> wg.cosmo.node.v1.GRPCConfiguration - 40, // 56: wg.cosmo.node.v1.GRPCConfiguration.mapping:type_name -> wg.cosmo.node.v1.GRPCMapping - 38, // 57: wg.cosmo.node.v1.GRPCConfiguration.plugin:type_name -> wg.cosmo.node.v1.PluginConfiguration - 37, // 58: wg.cosmo.node.v1.PluginConfiguration.image_reference:type_name -> wg.cosmo.node.v1.ImageReference - 43, // 59: wg.cosmo.node.v1.GRPCMapping.operation_mappings:type_name -> wg.cosmo.node.v1.OperationMapping - 44, // 60: wg.cosmo.node.v1.GRPCMapping.entity_mappings:type_name -> wg.cosmo.node.v1.EntityMapping - 46, // 61: wg.cosmo.node.v1.GRPCMapping.type_field_mappings:type_name -> wg.cosmo.node.v1.TypeFieldMapping - 49, // 62: wg.cosmo.node.v1.GRPCMapping.enum_mappings:type_name -> wg.cosmo.node.v1.EnumMapping - 41, // 63: wg.cosmo.node.v1.GRPCMapping.resolve_mappings:type_name -> wg.cosmo.node.v1.LookupMapping - 3, // 64: wg.cosmo.node.v1.LookupMapping.type:type_name -> wg.cosmo.node.v1.LookupType - 42, // 65: wg.cosmo.node.v1.LookupMapping.lookup_mapping:type_name -> wg.cosmo.node.v1.LookupFieldMapping - 47, // 66: wg.cosmo.node.v1.LookupFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping - 4, // 67: wg.cosmo.node.v1.OperationMapping.type:type_name -> wg.cosmo.node.v1.OperationType - 45, // 68: wg.cosmo.node.v1.EntityMapping.required_field_mappings:type_name -> wg.cosmo.node.v1.RequiredFieldMapping - 47, // 69: wg.cosmo.node.v1.RequiredFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping - 47, // 70: wg.cosmo.node.v1.TypeFieldMapping.field_mappings:type_name -> wg.cosmo.node.v1.FieldMapping - 48, // 71: wg.cosmo.node.v1.FieldMapping.argument_mappings:type_name -> wg.cosmo.node.v1.ArgumentMapping - 50, // 72: wg.cosmo.node.v1.EnumMapping.values:type_name -> wg.cosmo.node.v1.EnumValueMapping - 55, // 73: wg.cosmo.node.v1.NatsEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 51, // 74: wg.cosmo.node.v1.NatsEventConfiguration.stream_configuration:type_name -> wg.cosmo.node.v1.NatsStreamConfiguration - 55, // 75: wg.cosmo.node.v1.KafkaEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 55, // 76: wg.cosmo.node.v1.RedisEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 5, // 77: wg.cosmo.node.v1.EngineEventConfiguration.type:type_name -> wg.cosmo.node.v1.EventType - 52, // 78: wg.cosmo.node.v1.DataSourceCustomEvents.nats:type_name -> wg.cosmo.node.v1.NatsEventConfiguration - 53, // 79: wg.cosmo.node.v1.DataSourceCustomEvents.kafka:type_name -> wg.cosmo.node.v1.KafkaEventConfiguration - 54, // 80: wg.cosmo.node.v1.DataSourceCustomEvents.redis:type_name -> wg.cosmo.node.v1.RedisEventConfiguration - 58, // 81: wg.cosmo.node.v1.DataSourceCustom_Static.data:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 6, // 82: wg.cosmo.node.v1.ConfigurationVariable.kind:type_name -> wg.cosmo.node.v1.ConfigurationVariableKind - 58, // 83: wg.cosmo.node.v1.HTTPHeader.values:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 58, // 84: wg.cosmo.node.v1.MTLSConfiguration.key:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 58, // 85: wg.cosmo.node.v1.MTLSConfiguration.cert:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 58, // 86: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 83, // 87: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol - 84, // 88: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.websocketSubprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol - 68, // 89: wg.cosmo.node.v1.SubscriptionFilterCondition.and:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 67, // 90: wg.cosmo.node.v1.SubscriptionFilterCondition.in:type_name -> wg.cosmo.node.v1.SubscriptionFieldCondition - 68, // 91: wg.cosmo.node.v1.SubscriptionFilterCondition.not:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 68, // 92: wg.cosmo.node.v1.SubscriptionFilterCondition.or:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 70, // 93: wg.cosmo.node.v1.CacheWarmerOperations.operations:type_name -> wg.cosmo.node.v1.Operation - 71, // 94: wg.cosmo.node.v1.Operation.request:type_name -> wg.cosmo.node.v1.OperationRequest - 74, // 95: wg.cosmo.node.v1.Operation.client:type_name -> wg.cosmo.node.v1.ClientInfo - 72, // 96: wg.cosmo.node.v1.OperationRequest.extensions:type_name -> wg.cosmo.node.v1.Extension - 73, // 97: wg.cosmo.node.v1.Extension.persisted_query:type_name -> wg.cosmo.node.v1.PersistedQuery - 10, // 98: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry.value:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig - 61, // 99: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry.value:type_name -> wg.cosmo.node.v1.HTTPHeader - 16, // 100: wg.cosmo.node.v1.NodeService.SelfRegister:input_type -> wg.cosmo.node.v1.SelfRegisterRequest - 17, // 101: wg.cosmo.node.v1.NodeService.SelfRegister:output_type -> wg.cosmo.node.v1.SelfRegisterResponse - 101, // [101:102] is the sub-list for method output_type - 100, // [100:101] is the sub-list for method input_type - 100, // [100:100] is the sub-list for extension type_name - 100, // [100:100] is the sub-list for extension extendee - 0, // [0:100] is the sub-list for field type_name + 30, // 15: wg.cosmo.node.v1.DataSourceConfiguration.root_nodes:type_name -> wg.cosmo.node.v1.TypeField + 30, // 16: wg.cosmo.node.v1.DataSourceConfiguration.child_nodes:type_name -> wg.cosmo.node.v1.TypeField + 37, // 17: wg.cosmo.node.v1.DataSourceConfiguration.custom_graphql:type_name -> wg.cosmo.node.v1.DataSourceCustom_GraphQL + 59, // 18: wg.cosmo.node.v1.DataSourceConfiguration.custom_static:type_name -> wg.cosmo.node.v1.DataSourceCustom_Static + 61, // 19: wg.cosmo.node.v1.DataSourceConfiguration.directives:type_name -> wg.cosmo.node.v1.DirectiveConfiguration + 33, // 20: wg.cosmo.node.v1.DataSourceConfiguration.keys:type_name -> wg.cosmo.node.v1.RequiredField + 33, // 21: wg.cosmo.node.v1.DataSourceConfiguration.provides:type_name -> wg.cosmo.node.v1.RequiredField + 33, // 22: wg.cosmo.node.v1.DataSourceConfiguration.requires:type_name -> wg.cosmo.node.v1.RequiredField + 58, // 23: wg.cosmo.node.v1.DataSourceConfiguration.custom_events:type_name -> wg.cosmo.node.v1.DataSourceCustomEvents + 34, // 24: wg.cosmo.node.v1.DataSourceConfiguration.entity_interfaces:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration + 34, // 25: wg.cosmo.node.v1.DataSourceConfiguration.interface_objects:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration + 22, // 26: wg.cosmo.node.v1.DataSourceConfiguration.cost_configuration:type_name -> wg.cosmo.node.v1.CostConfiguration + 20, // 27: wg.cosmo.node.v1.DataSourceConfiguration.entity_caching:type_name -> wg.cosmo.node.v1.EntityCaching + 21, // 28: wg.cosmo.node.v1.EntityCaching.entity_cache_configurations:type_name -> wg.cosmo.node.v1.EntityCacheConfiguration + 23, // 29: wg.cosmo.node.v1.CostConfiguration.field_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration + 24, // 30: wg.cosmo.node.v1.CostConfiguration.list_sizes:type_name -> wg.cosmo.node.v1.FieldListSizeConfiguration + 79, // 31: wg.cosmo.node.v1.CostConfiguration.type_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry + 80, // 32: wg.cosmo.node.v1.CostConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry + 81, // 33: wg.cosmo.node.v1.FieldWeightConfiguration.argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry + 82, // 34: wg.cosmo.node.v1.FieldWeightConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry + 1, // 35: wg.cosmo.node.v1.ArgumentConfiguration.source_type:type_name -> wg.cosmo.node.v1.ArgumentSource + 26, // 36: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes:type_name -> wg.cosmo.node.v1.Scopes + 26, // 37: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes_by_or:type_name -> wg.cosmo.node.v1.Scopes + 25, // 38: wg.cosmo.node.v1.FieldConfiguration.arguments_configuration:type_name -> wg.cosmo.node.v1.ArgumentConfiguration + 27, // 39: wg.cosmo.node.v1.FieldConfiguration.authorization_configuration:type_name -> wg.cosmo.node.v1.AuthorizationConfiguration + 70, // 40: wg.cosmo.node.v1.FieldConfiguration.subscription_filter_condition:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 31, // 41: wg.cosmo.node.v1.FieldSetCondition.field_coordinates_path:type_name -> wg.cosmo.node.v1.FieldCoordinates + 32, // 42: wg.cosmo.node.v1.RequiredField.conditions:type_name -> wg.cosmo.node.v1.FieldSetCondition + 60, // 43: wg.cosmo.node.v1.FetchConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 7, // 44: wg.cosmo.node.v1.FetchConfiguration.method:type_name -> wg.cosmo.node.v1.HTTPMethod + 83, // 45: wg.cosmo.node.v1.FetchConfiguration.header:type_name -> wg.cosmo.node.v1.FetchConfiguration.HeaderEntry + 60, // 46: wg.cosmo.node.v1.FetchConfiguration.body:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 62, // 47: wg.cosmo.node.v1.FetchConfiguration.query:type_name -> wg.cosmo.node.v1.URLQueryConfiguration + 64, // 48: wg.cosmo.node.v1.FetchConfiguration.mtls:type_name -> wg.cosmo.node.v1.MTLSConfiguration + 60, // 49: wg.cosmo.node.v1.FetchConfiguration.base_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 60, // 50: wg.cosmo.node.v1.FetchConfiguration.path:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 60, // 51: wg.cosmo.node.v1.FetchConfiguration.http_proxy_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 35, // 52: wg.cosmo.node.v1.DataSourceCustom_GraphQL.fetch:type_name -> wg.cosmo.node.v1.FetchConfiguration + 65, // 53: wg.cosmo.node.v1.DataSourceCustom_GraphQL.subscription:type_name -> wg.cosmo.node.v1.GraphQLSubscriptionConfiguration + 66, // 54: wg.cosmo.node.v1.DataSourceCustom_GraphQL.federation:type_name -> wg.cosmo.node.v1.GraphQLFederationConfiguration + 67, // 55: wg.cosmo.node.v1.DataSourceCustom_GraphQL.upstream_schema:type_name -> wg.cosmo.node.v1.InternedString + 68, // 56: wg.cosmo.node.v1.DataSourceCustom_GraphQL.custom_scalar_type_fields:type_name -> wg.cosmo.node.v1.SingleTypeField + 38, // 57: wg.cosmo.node.v1.DataSourceCustom_GraphQL.grpc:type_name -> wg.cosmo.node.v1.GRPCConfiguration + 42, // 58: wg.cosmo.node.v1.GRPCConfiguration.mapping:type_name -> wg.cosmo.node.v1.GRPCMapping + 40, // 59: wg.cosmo.node.v1.GRPCConfiguration.plugin:type_name -> wg.cosmo.node.v1.PluginConfiguration + 39, // 60: wg.cosmo.node.v1.PluginConfiguration.image_reference:type_name -> wg.cosmo.node.v1.ImageReference + 45, // 61: wg.cosmo.node.v1.GRPCMapping.operation_mappings:type_name -> wg.cosmo.node.v1.OperationMapping + 46, // 62: wg.cosmo.node.v1.GRPCMapping.entity_mappings:type_name -> wg.cosmo.node.v1.EntityMapping + 48, // 63: wg.cosmo.node.v1.GRPCMapping.type_field_mappings:type_name -> wg.cosmo.node.v1.TypeFieldMapping + 51, // 64: wg.cosmo.node.v1.GRPCMapping.enum_mappings:type_name -> wg.cosmo.node.v1.EnumMapping + 43, // 65: wg.cosmo.node.v1.GRPCMapping.resolve_mappings:type_name -> wg.cosmo.node.v1.LookupMapping + 3, // 66: wg.cosmo.node.v1.LookupMapping.type:type_name -> wg.cosmo.node.v1.LookupType + 44, // 67: wg.cosmo.node.v1.LookupMapping.lookup_mapping:type_name -> wg.cosmo.node.v1.LookupFieldMapping + 49, // 68: wg.cosmo.node.v1.LookupFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping + 4, // 69: wg.cosmo.node.v1.OperationMapping.type:type_name -> wg.cosmo.node.v1.OperationType + 47, // 70: wg.cosmo.node.v1.EntityMapping.required_field_mappings:type_name -> wg.cosmo.node.v1.RequiredFieldMapping + 49, // 71: wg.cosmo.node.v1.RequiredFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping + 49, // 72: wg.cosmo.node.v1.TypeFieldMapping.field_mappings:type_name -> wg.cosmo.node.v1.FieldMapping + 50, // 73: wg.cosmo.node.v1.FieldMapping.argument_mappings:type_name -> wg.cosmo.node.v1.ArgumentMapping + 52, // 74: wg.cosmo.node.v1.EnumMapping.values:type_name -> wg.cosmo.node.v1.EnumValueMapping + 57, // 75: wg.cosmo.node.v1.NatsEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 53, // 76: wg.cosmo.node.v1.NatsEventConfiguration.stream_configuration:type_name -> wg.cosmo.node.v1.NatsStreamConfiguration + 57, // 77: wg.cosmo.node.v1.KafkaEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 57, // 78: wg.cosmo.node.v1.RedisEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 5, // 79: wg.cosmo.node.v1.EngineEventConfiguration.type:type_name -> wg.cosmo.node.v1.EventType + 54, // 80: wg.cosmo.node.v1.DataSourceCustomEvents.nats:type_name -> wg.cosmo.node.v1.NatsEventConfiguration + 55, // 81: wg.cosmo.node.v1.DataSourceCustomEvents.kafka:type_name -> wg.cosmo.node.v1.KafkaEventConfiguration + 56, // 82: wg.cosmo.node.v1.DataSourceCustomEvents.redis:type_name -> wg.cosmo.node.v1.RedisEventConfiguration + 60, // 83: wg.cosmo.node.v1.DataSourceCustom_Static.data:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 6, // 84: wg.cosmo.node.v1.ConfigurationVariable.kind:type_name -> wg.cosmo.node.v1.ConfigurationVariableKind + 60, // 85: wg.cosmo.node.v1.HTTPHeader.values:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 60, // 86: wg.cosmo.node.v1.MTLSConfiguration.key:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 60, // 87: wg.cosmo.node.v1.MTLSConfiguration.cert:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 60, // 88: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 85, // 89: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol + 86, // 90: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.websocketSubprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol + 70, // 91: wg.cosmo.node.v1.SubscriptionFilterCondition.and:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 69, // 92: wg.cosmo.node.v1.SubscriptionFilterCondition.in:type_name -> wg.cosmo.node.v1.SubscriptionFieldCondition + 70, // 93: wg.cosmo.node.v1.SubscriptionFilterCondition.not:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 70, // 94: wg.cosmo.node.v1.SubscriptionFilterCondition.or:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 72, // 95: wg.cosmo.node.v1.CacheWarmerOperations.operations:type_name -> wg.cosmo.node.v1.Operation + 73, // 96: wg.cosmo.node.v1.Operation.request:type_name -> wg.cosmo.node.v1.OperationRequest + 76, // 97: wg.cosmo.node.v1.Operation.client:type_name -> wg.cosmo.node.v1.ClientInfo + 74, // 98: wg.cosmo.node.v1.OperationRequest.extensions:type_name -> wg.cosmo.node.v1.Extension + 75, // 99: wg.cosmo.node.v1.Extension.persisted_query:type_name -> wg.cosmo.node.v1.PersistedQuery + 10, // 100: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry.value:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig + 63, // 101: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry.value:type_name -> wg.cosmo.node.v1.HTTPHeader + 16, // 102: wg.cosmo.node.v1.NodeService.SelfRegister:input_type -> wg.cosmo.node.v1.SelfRegisterRequest + 17, // 103: wg.cosmo.node.v1.NodeService.SelfRegister:output_type -> wg.cosmo.node.v1.SelfRegisterResponse + 103, // [103:104] is the sub-list for method output_type + 102, // [102:103] is the sub-list for method input_type + 102, // [102:102] is the sub-list for extension type_name + 102, // [102:102] is the sub-list for extension extendee + 0, // [0:102] is the sub-list for field type_name } func init() { file_wg_cosmo_node_v1_node_proto_init() } @@ -5237,20 +5399,20 @@ func file_wg_cosmo_node_v1_node_proto_init() { file_wg_cosmo_node_v1_node_proto_msgTypes[4].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[9].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[10].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[13].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[14].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[18].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[25].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[30].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[55].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[60].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[15].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[16].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[20].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[27].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[32].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[57].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[62].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_wg_cosmo_node_v1_node_proto_rawDesc), len(file_wg_cosmo_node_v1_node_proto_rawDesc)), NumEnums: 8, - NumMessages: 74, + NumMessages: 76, NumExtensions: 0, NumServices: 1, }, diff --git a/connect/src/wg/cosmo/node/v1/node_pb.ts b/connect/src/wg/cosmo/node/v1/node_pb.ts index b50794f361..3d538d976f 100644 --- a/connect/src/wg/cosmo/node/v1/node_pb.ts +++ b/connect/src/wg/cosmo/node/v1/node_pb.ts @@ -843,6 +843,13 @@ export class DataSourceConfiguration extends Message { */ costConfiguration?: CostConfiguration; + /** + * Entity caching configuration (e.g. request-scoped fields from @openfed__requestScoped). + * + * @generated from field: wg.cosmo.node.v1.EntityCaching entity_caching = 17; + */ + entityCaching?: EntityCaching; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -867,6 +874,7 @@ export class DataSourceConfiguration extends Message { { no: 14, name: "entity_interfaces", kind: "message", T: EntityInterfaceConfiguration, repeated: true }, { no: 15, name: "interface_objects", kind: "message", T: EntityInterfaceConfiguration, repeated: true }, { no: 16, name: "cost_configuration", kind: "message", T: CostConfiguration }, + { no: 17, name: "entity_caching", kind: "message", T: EntityCaching }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): DataSourceConfiguration { @@ -886,6 +894,125 @@ export class DataSourceConfiguration extends Message { } } +/** + * Entity caching configuration for a subgraph data source. + * + * @generated from message wg.cosmo.node.v1.EntityCaching + */ +export class EntityCaching extends Message { + /** + * Per-entity cache configurations (from @openfed__entityCache directive) + * + * @generated from field: repeated wg.cosmo.node.v1.EntityCacheConfiguration entity_cache_configurations = 1; + */ + entityCacheConfigurations: EntityCacheConfiguration[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.node.v1.EntityCaching"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "entity_cache_configurations", kind: "message", T: EntityCacheConfiguration, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): EntityCaching { + return new EntityCaching().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): EntityCaching { + return new EntityCaching().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): EntityCaching { + return new EntityCaching().fromJsonString(jsonString, options); + } + + static equals(a: EntityCaching | PlainMessage | undefined, b: EntityCaching | PlainMessage | undefined): boolean { + return proto3.util.equals(EntityCaching, a, b); + } +} + +/** + * Per-entity declaration for @openfed__entityCache. Marks a @key entity type as cacheable so the + * router can store/serve resolved entities from an external store (e.g. Redis). + * + * @generated from message wg.cosmo.node.v1.EntityCacheConfiguration + */ +export class EntityCacheConfiguration extends Message { + /** + * @generated from field: string type_name = 1; + */ + typeName = ""; + + /** + * TTL for cached entity values. Required: composition rejects values <= 0, + * so omit (zero) does not occur in practice. Interpreted in seconds. + * + * @generated from field: int64 max_age_seconds = 2; + */ + maxAgeSeconds = protoInt64.zero; + + /** + * @generated from field: bool include_headers = 3; + */ + includeHeaders = false; + + /** + * @generated from field: bool partial_cache_load = 4; + */ + partialCacheLoad = false; + + /** + * @generated from field: bool shadow_mode = 5; + */ + shadowMode = false; + + /** + * TTL for caching "not found" entity responses (entity returned null from + * _entities without errors). Omit or 0 disables negative caching and null + * responses are not cached. Positive values are seconds. Composition rejects + * negative values at schema validation time. + * + * @generated from field: int64 not_found_cache_ttl_seconds = 6; + */ + notFoundCacheTtlSeconds = protoInt64.zero; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.node.v1.EntityCacheConfiguration"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "type_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "max_age_seconds", kind: "scalar", T: 3 /* ScalarType.INT64 */ }, + { no: 3, name: "include_headers", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 4, name: "partial_cache_load", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 5, name: "shadow_mode", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 6, name: "not_found_cache_ttl_seconds", kind: "scalar", T: 3 /* ScalarType.INT64 */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): EntityCacheConfiguration { + return new EntityCacheConfiguration().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): EntityCacheConfiguration { + return new EntityCacheConfiguration().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): EntityCacheConfiguration { + return new EntityCacheConfiguration().fromJsonString(jsonString, options); + } + + static equals(a: EntityCacheConfiguration | PlainMessage | undefined, b: EntityCacheConfiguration | PlainMessage | undefined): boolean { + return proto3.util.equals(EntityCacheConfiguration, a, b); + } +} + /** * @generated from message wg.cosmo.node.v1.CostConfiguration */ diff --git a/proto/wg/cosmo/node/v1/node.proto b/proto/wg/cosmo/node/v1/node.proto index af7bd79bb4..ea3652ccf9 100644 --- a/proto/wg/cosmo/node/v1/node.proto +++ b/proto/wg/cosmo/node/v1/node.proto @@ -91,6 +91,31 @@ message DataSourceConfiguration { repeated EntityInterfaceConfiguration entity_interfaces = 14; repeated EntityInterfaceConfiguration interface_objects = 15; CostConfiguration cost_configuration = 16; + // Entity caching configuration (e.g. request-scoped fields from @openfed__requestScoped). + EntityCaching entity_caching = 17; +} + +// Entity caching configuration for a subgraph data source. +message EntityCaching { + // Per-entity cache configurations (from @openfed__entityCache directive) + repeated EntityCacheConfiguration entity_cache_configurations = 1; +} + +// Per-entity declaration for @openfed__entityCache. Marks a @key entity type as cacheable so the +// router can store/serve resolved entities from an external store (e.g. Redis). +message EntityCacheConfiguration { + string type_name = 1; + // TTL for cached entity values. Required: composition rejects values <= 0, + // so omit (zero) does not occur in practice. Interpreted in seconds. + int64 max_age_seconds = 2; + bool include_headers = 3; + bool partial_cache_load = 4; + bool shadow_mode = 5; + // TTL for caching "not found" entity responses (entity returned null from + // _entities without errors). Omit or 0 disables negative caching and null + // responses are not cached. Positive values are seconds. Composition rejects + // negative values at schema validation time. + int64 not_found_cache_ttl_seconds = 6; } message CostConfiguration { diff --git a/router/gen/proto/wg/cosmo/node/v1/node.pb.go b/router/gen/proto/wg/cosmo/node/v1/node.pb.go index 86f7dea5d7..b24242fb21 100644 --- a/router/gen/proto/wg/cosmo/node/v1/node.pb.go +++ b/router/gen/proto/wg/cosmo/node/v1/node.pb.go @@ -1070,8 +1070,10 @@ type DataSourceConfiguration struct { EntityInterfaces []*EntityInterfaceConfiguration `protobuf:"bytes,14,rep,name=entity_interfaces,json=entityInterfaces,proto3" json:"entity_interfaces,omitempty"` InterfaceObjects []*EntityInterfaceConfiguration `protobuf:"bytes,15,rep,name=interface_objects,json=interfaceObjects,proto3" json:"interface_objects,omitempty"` CostConfiguration *CostConfiguration `protobuf:"bytes,16,opt,name=cost_configuration,json=costConfiguration,proto3" json:"cost_configuration,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // Entity caching configuration (e.g. request-scoped fields from @openfed__requestScoped). + EntityCaching *EntityCaching `protobuf:"bytes,17,opt,name=entity_caching,json=entityCaching,proto3" json:"entity_caching,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DataSourceConfiguration) Reset() { @@ -1216,6 +1218,151 @@ func (x *DataSourceConfiguration) GetCostConfiguration() *CostConfiguration { return nil } +func (x *DataSourceConfiguration) GetEntityCaching() *EntityCaching { + if x != nil { + return x.EntityCaching + } + return nil +} + +// Entity caching configuration for a subgraph data source. +type EntityCaching struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Per-entity cache configurations (from @openfed__entityCache directive) + EntityCacheConfigurations []*EntityCacheConfiguration `protobuf:"bytes,1,rep,name=entity_cache_configurations,json=entityCacheConfigurations,proto3" json:"entity_cache_configurations,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *EntityCaching) Reset() { + *x = EntityCaching{} + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *EntityCaching) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EntityCaching) ProtoMessage() {} + +func (x *EntityCaching) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EntityCaching.ProtoReflect.Descriptor instead. +func (*EntityCaching) Descriptor() ([]byte, []int) { + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{12} +} + +func (x *EntityCaching) GetEntityCacheConfigurations() []*EntityCacheConfiguration { + if x != nil { + return x.EntityCacheConfigurations + } + return nil +} + +// Per-entity declaration for @openfed__entityCache. Marks a @key entity type as cacheable so the +// router can store/serve resolved entities from an external store (e.g. Redis). +type EntityCacheConfiguration struct { + state protoimpl.MessageState `protogen:"open.v1"` + TypeName string `protobuf:"bytes,1,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` + // TTL for cached entity values. Required: composition rejects values <= 0, + // so omit (zero) does not occur in practice. Interpreted in seconds. + MaxAgeSeconds int64 `protobuf:"varint,2,opt,name=max_age_seconds,json=maxAgeSeconds,proto3" json:"max_age_seconds,omitempty"` + IncludeHeaders bool `protobuf:"varint,3,opt,name=include_headers,json=includeHeaders,proto3" json:"include_headers,omitempty"` + PartialCacheLoad bool `protobuf:"varint,4,opt,name=partial_cache_load,json=partialCacheLoad,proto3" json:"partial_cache_load,omitempty"` + ShadowMode bool `protobuf:"varint,5,opt,name=shadow_mode,json=shadowMode,proto3" json:"shadow_mode,omitempty"` + // TTL for caching "not found" entity responses (entity returned null from + // _entities without errors). Omit or 0 disables negative caching and null + // responses are not cached. Positive values are seconds. Composition rejects + // negative values at schema validation time. + NotFoundCacheTtlSeconds int64 `protobuf:"varint,6,opt,name=not_found_cache_ttl_seconds,json=notFoundCacheTtlSeconds,proto3" json:"not_found_cache_ttl_seconds,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *EntityCacheConfiguration) Reset() { + *x = EntityCacheConfiguration{} + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *EntityCacheConfiguration) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EntityCacheConfiguration) ProtoMessage() {} + +func (x *EntityCacheConfiguration) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EntityCacheConfiguration.ProtoReflect.Descriptor instead. +func (*EntityCacheConfiguration) Descriptor() ([]byte, []int) { + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{13} +} + +func (x *EntityCacheConfiguration) GetTypeName() string { + if x != nil { + return x.TypeName + } + return "" +} + +func (x *EntityCacheConfiguration) GetMaxAgeSeconds() int64 { + if x != nil { + return x.MaxAgeSeconds + } + return 0 +} + +func (x *EntityCacheConfiguration) GetIncludeHeaders() bool { + if x != nil { + return x.IncludeHeaders + } + return false +} + +func (x *EntityCacheConfiguration) GetPartialCacheLoad() bool { + if x != nil { + return x.PartialCacheLoad + } + return false +} + +func (x *EntityCacheConfiguration) GetShadowMode() bool { + if x != nil { + return x.ShadowMode + } + return false +} + +func (x *EntityCacheConfiguration) GetNotFoundCacheTtlSeconds() int64 { + if x != nil { + return x.NotFoundCacheTtlSeconds + } + return 0 +} + type CostConfiguration struct { state protoimpl.MessageState `protogen:"open.v1"` FieldWeights []*FieldWeightConfiguration `protobuf:"bytes,1,rep,name=field_weights,json=fieldWeights,proto3" json:"field_weights,omitempty"` @@ -1228,7 +1375,7 @@ type CostConfiguration struct { func (x *CostConfiguration) Reset() { *x = CostConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[12] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1240,7 +1387,7 @@ func (x *CostConfiguration) String() string { func (*CostConfiguration) ProtoMessage() {} func (x *CostConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[12] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1253,7 +1400,7 @@ func (x *CostConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use CostConfiguration.ProtoReflect.Descriptor instead. func (*CostConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{12} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{14} } func (x *CostConfiguration) GetFieldWeights() []*FieldWeightConfiguration { @@ -1297,7 +1444,7 @@ type FieldWeightConfiguration struct { func (x *FieldWeightConfiguration) Reset() { *x = FieldWeightConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[13] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1309,7 +1456,7 @@ func (x *FieldWeightConfiguration) String() string { func (*FieldWeightConfiguration) ProtoMessage() {} func (x *FieldWeightConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[13] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1322,7 +1469,7 @@ func (x *FieldWeightConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldWeightConfiguration.ProtoReflect.Descriptor instead. func (*FieldWeightConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{13} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{15} } func (x *FieldWeightConfiguration) GetTypeName() string { @@ -1374,7 +1521,7 @@ type FieldListSizeConfiguration struct { func (x *FieldListSizeConfiguration) Reset() { *x = FieldListSizeConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[14] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1386,7 +1533,7 @@ func (x *FieldListSizeConfiguration) String() string { func (*FieldListSizeConfiguration) ProtoMessage() {} func (x *FieldListSizeConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[14] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1399,7 +1546,7 @@ func (x *FieldListSizeConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldListSizeConfiguration.ProtoReflect.Descriptor instead. func (*FieldListSizeConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{14} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{16} } func (x *FieldListSizeConfiguration) GetTypeName() string { @@ -1454,7 +1601,7 @@ type ArgumentConfiguration struct { func (x *ArgumentConfiguration) Reset() { *x = ArgumentConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[15] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1466,7 +1613,7 @@ func (x *ArgumentConfiguration) String() string { func (*ArgumentConfiguration) ProtoMessage() {} func (x *ArgumentConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[15] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1479,7 +1626,7 @@ func (x *ArgumentConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use ArgumentConfiguration.ProtoReflect.Descriptor instead. func (*ArgumentConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{15} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{17} } func (x *ArgumentConfiguration) GetName() string { @@ -1505,7 +1652,7 @@ type Scopes struct { func (x *Scopes) Reset() { *x = Scopes{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1517,7 +1664,7 @@ func (x *Scopes) String() string { func (*Scopes) ProtoMessage() {} func (x *Scopes) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1530,7 +1677,7 @@ func (x *Scopes) ProtoReflect() protoreflect.Message { // Deprecated: Use Scopes.ProtoReflect.Descriptor instead. func (*Scopes) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{16} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{18} } func (x *Scopes) GetRequiredAndScopes() []string { @@ -1551,7 +1698,7 @@ type AuthorizationConfiguration struct { func (x *AuthorizationConfiguration) Reset() { *x = AuthorizationConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1563,7 +1710,7 @@ func (x *AuthorizationConfiguration) String() string { func (*AuthorizationConfiguration) ProtoMessage() {} func (x *AuthorizationConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1576,7 +1723,7 @@ func (x *AuthorizationConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use AuthorizationConfiguration.ProtoReflect.Descriptor instead. func (*AuthorizationConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{17} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{19} } func (x *AuthorizationConfiguration) GetRequiresAuthentication() bool { @@ -1613,7 +1760,7 @@ type FieldConfiguration struct { func (x *FieldConfiguration) Reset() { *x = FieldConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1625,7 +1772,7 @@ func (x *FieldConfiguration) String() string { func (*FieldConfiguration) ProtoMessage() {} func (x *FieldConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1638,7 +1785,7 @@ func (x *FieldConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldConfiguration.ProtoReflect.Descriptor instead. func (*FieldConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{18} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{20} } func (x *FieldConfiguration) GetTypeName() string { @@ -1686,7 +1833,7 @@ type TypeConfiguration struct { func (x *TypeConfiguration) Reset() { *x = TypeConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1698,7 +1845,7 @@ func (x *TypeConfiguration) String() string { func (*TypeConfiguration) ProtoMessage() {} func (x *TypeConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1711,7 +1858,7 @@ func (x *TypeConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeConfiguration.ProtoReflect.Descriptor instead. func (*TypeConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{19} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{21} } func (x *TypeConfiguration) GetTypeName() string { @@ -1740,7 +1887,7 @@ type TypeField struct { func (x *TypeField) Reset() { *x = TypeField{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1752,7 +1899,7 @@ func (x *TypeField) String() string { func (*TypeField) ProtoMessage() {} func (x *TypeField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1765,7 +1912,7 @@ func (x *TypeField) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeField.ProtoReflect.Descriptor instead. func (*TypeField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{20} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{22} } func (x *TypeField) GetTypeName() string { @@ -1806,7 +1953,7 @@ type FieldCoordinates struct { func (x *FieldCoordinates) Reset() { *x = FieldCoordinates{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1818,7 +1965,7 @@ func (x *FieldCoordinates) String() string { func (*FieldCoordinates) ProtoMessage() {} func (x *FieldCoordinates) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1831,7 +1978,7 @@ func (x *FieldCoordinates) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldCoordinates.ProtoReflect.Descriptor instead. func (*FieldCoordinates) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{21} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{23} } func (x *FieldCoordinates) GetFieldName() string { @@ -1858,7 +2005,7 @@ type FieldSetCondition struct { func (x *FieldSetCondition) Reset() { *x = FieldSetCondition{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1870,7 +2017,7 @@ func (x *FieldSetCondition) String() string { func (*FieldSetCondition) ProtoMessage() {} func (x *FieldSetCondition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1883,7 +2030,7 @@ func (x *FieldSetCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldSetCondition.ProtoReflect.Descriptor instead. func (*FieldSetCondition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{22} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{24} } func (x *FieldSetCondition) GetFieldCoordinatesPath() []*FieldCoordinates { @@ -1913,7 +2060,7 @@ type RequiredField struct { func (x *RequiredField) Reset() { *x = RequiredField{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1925,7 +2072,7 @@ func (x *RequiredField) String() string { func (*RequiredField) ProtoMessage() {} func (x *RequiredField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1938,7 +2085,7 @@ func (x *RequiredField) ProtoReflect() protoreflect.Message { // Deprecated: Use RequiredField.ProtoReflect.Descriptor instead. func (*RequiredField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{23} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{25} } func (x *RequiredField) GetTypeName() string { @@ -1986,7 +2133,7 @@ type EntityInterfaceConfiguration struct { func (x *EntityInterfaceConfiguration) Reset() { *x = EntityInterfaceConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1998,7 +2145,7 @@ func (x *EntityInterfaceConfiguration) String() string { func (*EntityInterfaceConfiguration) ProtoMessage() {} func (x *EntityInterfaceConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2011,7 +2158,7 @@ func (x *EntityInterfaceConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use EntityInterfaceConfiguration.ProtoReflect.Descriptor instead. func (*EntityInterfaceConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{24} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{26} } func (x *EntityInterfaceConfiguration) GetInterfaceTypeName() string { @@ -2054,7 +2201,7 @@ type FetchConfiguration struct { func (x *FetchConfiguration) Reset() { *x = FetchConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2066,7 +2213,7 @@ func (x *FetchConfiguration) String() string { func (*FetchConfiguration) ProtoMessage() {} func (x *FetchConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2079,7 +2226,7 @@ func (x *FetchConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FetchConfiguration.ProtoReflect.Descriptor instead. func (*FetchConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{25} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{27} } func (x *FetchConfiguration) GetUrl() *ConfigurationVariable { @@ -2163,7 +2310,7 @@ type StatusCodeTypeMapping struct { func (x *StatusCodeTypeMapping) Reset() { *x = StatusCodeTypeMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2175,7 +2322,7 @@ func (x *StatusCodeTypeMapping) String() string { func (*StatusCodeTypeMapping) ProtoMessage() {} func (x *StatusCodeTypeMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2188,7 +2335,7 @@ func (x *StatusCodeTypeMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use StatusCodeTypeMapping.ProtoReflect.Descriptor instead. func (*StatusCodeTypeMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{26} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{28} } func (x *StatusCodeTypeMapping) GetStatusCode() int64 { @@ -2226,7 +2373,7 @@ type DataSourceCustom_GraphQL struct { func (x *DataSourceCustom_GraphQL) Reset() { *x = DataSourceCustom_GraphQL{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2238,7 +2385,7 @@ func (x *DataSourceCustom_GraphQL) String() string { func (*DataSourceCustom_GraphQL) ProtoMessage() {} func (x *DataSourceCustom_GraphQL) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2251,7 +2398,7 @@ func (x *DataSourceCustom_GraphQL) ProtoReflect() protoreflect.Message { // Deprecated: Use DataSourceCustom_GraphQL.ProtoReflect.Descriptor instead. func (*DataSourceCustom_GraphQL) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{27} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{29} } func (x *DataSourceCustom_GraphQL) GetFetch() *FetchConfiguration { @@ -2307,7 +2454,7 @@ type GRPCConfiguration struct { func (x *GRPCConfiguration) Reset() { *x = GRPCConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2319,7 +2466,7 @@ func (x *GRPCConfiguration) String() string { func (*GRPCConfiguration) ProtoMessage() {} func (x *GRPCConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2332,7 +2479,7 @@ func (x *GRPCConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCConfiguration.ProtoReflect.Descriptor instead. func (*GRPCConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{28} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{30} } func (x *GRPCConfiguration) GetMapping() *GRPCMapping { @@ -2366,7 +2513,7 @@ type ImageReference struct { func (x *ImageReference) Reset() { *x = ImageReference{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2378,7 +2525,7 @@ func (x *ImageReference) String() string { func (*ImageReference) ProtoMessage() {} func (x *ImageReference) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2391,7 +2538,7 @@ func (x *ImageReference) ProtoReflect() protoreflect.Message { // Deprecated: Use ImageReference.ProtoReflect.Descriptor instead. func (*ImageReference) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{29} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{31} } func (x *ImageReference) GetRepository() string { @@ -2421,7 +2568,7 @@ type PluginConfiguration struct { func (x *PluginConfiguration) Reset() { *x = PluginConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2433,7 +2580,7 @@ func (x *PluginConfiguration) String() string { func (*PluginConfiguration) ProtoMessage() {} func (x *PluginConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2446,7 +2593,7 @@ func (x *PluginConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use PluginConfiguration.ProtoReflect.Descriptor instead. func (*PluginConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{30} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{32} } func (x *PluginConfiguration) GetName() string { @@ -2480,7 +2627,7 @@ type SSLConfiguration struct { func (x *SSLConfiguration) Reset() { *x = SSLConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2492,7 +2639,7 @@ func (x *SSLConfiguration) String() string { func (*SSLConfiguration) ProtoMessage() {} func (x *SSLConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2505,7 +2652,7 @@ func (x *SSLConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use SSLConfiguration.ProtoReflect.Descriptor instead. func (*SSLConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{31} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{33} } func (x *SSLConfiguration) GetEnabled() bool { @@ -2538,7 +2685,7 @@ type GRPCMapping struct { func (x *GRPCMapping) Reset() { *x = GRPCMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2550,7 +2697,7 @@ func (x *GRPCMapping) String() string { func (*GRPCMapping) ProtoMessage() {} func (x *GRPCMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2563,7 +2710,7 @@ func (x *GRPCMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCMapping.ProtoReflect.Descriptor instead. func (*GRPCMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{32} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{34} } func (x *GRPCMapping) GetVersion() int32 { @@ -2634,7 +2781,7 @@ type LookupMapping struct { func (x *LookupMapping) Reset() { *x = LookupMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2646,7 +2793,7 @@ func (x *LookupMapping) String() string { func (*LookupMapping) ProtoMessage() {} func (x *LookupMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2659,7 +2806,7 @@ func (x *LookupMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use LookupMapping.ProtoReflect.Descriptor instead. func (*LookupMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{33} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{35} } func (x *LookupMapping) GetType() LookupType { @@ -2710,7 +2857,7 @@ type LookupFieldMapping struct { func (x *LookupFieldMapping) Reset() { *x = LookupFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2722,7 +2869,7 @@ func (x *LookupFieldMapping) String() string { func (*LookupFieldMapping) ProtoMessage() {} func (x *LookupFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2735,7 +2882,7 @@ func (x *LookupFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use LookupFieldMapping.ProtoReflect.Descriptor instead. func (*LookupFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{34} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{36} } func (x *LookupFieldMapping) GetType() string { @@ -2771,7 +2918,7 @@ type OperationMapping struct { func (x *OperationMapping) Reset() { *x = OperationMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2783,7 +2930,7 @@ func (x *OperationMapping) String() string { func (*OperationMapping) ProtoMessage() {} func (x *OperationMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2796,7 +2943,7 @@ func (x *OperationMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use OperationMapping.ProtoReflect.Descriptor instead. func (*OperationMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{35} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{37} } func (x *OperationMapping) GetType() OperationType { @@ -2857,7 +3004,7 @@ type EntityMapping struct { func (x *EntityMapping) Reset() { *x = EntityMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2869,7 +3016,7 @@ func (x *EntityMapping) String() string { func (*EntityMapping) ProtoMessage() {} func (x *EntityMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2882,7 +3029,7 @@ func (x *EntityMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EntityMapping.ProtoReflect.Descriptor instead. func (*EntityMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{36} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{38} } func (x *EntityMapping) GetTypeName() string { @@ -2950,7 +3097,7 @@ type RequiredFieldMapping struct { func (x *RequiredFieldMapping) Reset() { *x = RequiredFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2962,7 +3109,7 @@ func (x *RequiredFieldMapping) String() string { func (*RequiredFieldMapping) ProtoMessage() {} func (x *RequiredFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2975,7 +3122,7 @@ func (x *RequiredFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use RequiredFieldMapping.ProtoReflect.Descriptor instead. func (*RequiredFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{37} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{39} } func (x *RequiredFieldMapping) GetFieldMapping() *FieldMapping { @@ -3019,7 +3166,7 @@ type TypeFieldMapping struct { func (x *TypeFieldMapping) Reset() { *x = TypeFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3031,7 +3178,7 @@ func (x *TypeFieldMapping) String() string { func (*TypeFieldMapping) ProtoMessage() {} func (x *TypeFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3044,7 +3191,7 @@ func (x *TypeFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeFieldMapping.ProtoReflect.Descriptor instead. func (*TypeFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{38} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{40} } func (x *TypeFieldMapping) GetType() string { @@ -3076,7 +3223,7 @@ type FieldMapping struct { func (x *FieldMapping) Reset() { *x = FieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3088,7 +3235,7 @@ func (x *FieldMapping) String() string { func (*FieldMapping) ProtoMessage() {} func (x *FieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3101,7 +3248,7 @@ func (x *FieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldMapping.ProtoReflect.Descriptor instead. func (*FieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{39} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{41} } func (x *FieldMapping) GetOriginal() string { @@ -3138,7 +3285,7 @@ type ArgumentMapping struct { func (x *ArgumentMapping) Reset() { *x = ArgumentMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3150,7 +3297,7 @@ func (x *ArgumentMapping) String() string { func (*ArgumentMapping) ProtoMessage() {} func (x *ArgumentMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3163,7 +3310,7 @@ func (x *ArgumentMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use ArgumentMapping.ProtoReflect.Descriptor instead. func (*ArgumentMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{40} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{42} } func (x *ArgumentMapping) GetOriginal() string { @@ -3190,7 +3337,7 @@ type EnumMapping struct { func (x *EnumMapping) Reset() { *x = EnumMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3202,7 +3349,7 @@ func (x *EnumMapping) String() string { func (*EnumMapping) ProtoMessage() {} func (x *EnumMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3215,7 +3362,7 @@ func (x *EnumMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EnumMapping.ProtoReflect.Descriptor instead. func (*EnumMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{41} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{43} } func (x *EnumMapping) GetType() string { @@ -3242,7 +3389,7 @@ type EnumValueMapping struct { func (x *EnumValueMapping) Reset() { *x = EnumValueMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3254,7 +3401,7 @@ func (x *EnumValueMapping) String() string { func (*EnumValueMapping) ProtoMessage() {} func (x *EnumValueMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3267,7 +3414,7 @@ func (x *EnumValueMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EnumValueMapping.ProtoReflect.Descriptor instead. func (*EnumValueMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{42} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{44} } func (x *EnumValueMapping) GetOriginal() string { @@ -3295,7 +3442,7 @@ type NatsStreamConfiguration struct { func (x *NatsStreamConfiguration) Reset() { *x = NatsStreamConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3307,7 +3454,7 @@ func (x *NatsStreamConfiguration) String() string { func (*NatsStreamConfiguration) ProtoMessage() {} func (x *NatsStreamConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3320,7 +3467,7 @@ func (x *NatsStreamConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use NatsStreamConfiguration.ProtoReflect.Descriptor instead. func (*NatsStreamConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{43} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{45} } func (x *NatsStreamConfiguration) GetConsumerName() string { @@ -3355,7 +3502,7 @@ type NatsEventConfiguration struct { func (x *NatsEventConfiguration) Reset() { *x = NatsEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3367,7 +3514,7 @@ func (x *NatsEventConfiguration) String() string { func (*NatsEventConfiguration) ProtoMessage() {} func (x *NatsEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3380,7 +3527,7 @@ func (x *NatsEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use NatsEventConfiguration.ProtoReflect.Descriptor instead. func (*NatsEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{44} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{46} } func (x *NatsEventConfiguration) GetEngineEventConfiguration() *EngineEventConfiguration { @@ -3414,7 +3561,7 @@ type KafkaEventConfiguration struct { func (x *KafkaEventConfiguration) Reset() { *x = KafkaEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3426,7 +3573,7 @@ func (x *KafkaEventConfiguration) String() string { func (*KafkaEventConfiguration) ProtoMessage() {} func (x *KafkaEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3439,7 +3586,7 @@ func (x *KafkaEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use KafkaEventConfiguration.ProtoReflect.Descriptor instead. func (*KafkaEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{45} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{47} } func (x *KafkaEventConfiguration) GetEngineEventConfiguration() *EngineEventConfiguration { @@ -3466,7 +3613,7 @@ type RedisEventConfiguration struct { func (x *RedisEventConfiguration) Reset() { *x = RedisEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3478,7 +3625,7 @@ func (x *RedisEventConfiguration) String() string { func (*RedisEventConfiguration) ProtoMessage() {} func (x *RedisEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3491,7 +3638,7 @@ func (x *RedisEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use RedisEventConfiguration.ProtoReflect.Descriptor instead. func (*RedisEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{46} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{48} } func (x *RedisEventConfiguration) GetEngineEventConfiguration() *EngineEventConfiguration { @@ -3520,7 +3667,7 @@ type EngineEventConfiguration struct { func (x *EngineEventConfiguration) Reset() { *x = EngineEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3532,7 +3679,7 @@ func (x *EngineEventConfiguration) String() string { func (*EngineEventConfiguration) ProtoMessage() {} func (x *EngineEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3545,7 +3692,7 @@ func (x *EngineEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use EngineEventConfiguration.ProtoReflect.Descriptor instead. func (*EngineEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{47} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{49} } func (x *EngineEventConfiguration) GetProviderId() string { @@ -3587,7 +3734,7 @@ type DataSourceCustomEvents struct { func (x *DataSourceCustomEvents) Reset() { *x = DataSourceCustomEvents{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3599,7 +3746,7 @@ func (x *DataSourceCustomEvents) String() string { func (*DataSourceCustomEvents) ProtoMessage() {} func (x *DataSourceCustomEvents) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3612,7 +3759,7 @@ func (x *DataSourceCustomEvents) ProtoReflect() protoreflect.Message { // Deprecated: Use DataSourceCustomEvents.ProtoReflect.Descriptor instead. func (*DataSourceCustomEvents) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{48} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{50} } func (x *DataSourceCustomEvents) GetNats() []*NatsEventConfiguration { @@ -3645,7 +3792,7 @@ type DataSourceCustom_Static struct { func (x *DataSourceCustom_Static) Reset() { *x = DataSourceCustom_Static{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3657,7 +3804,7 @@ func (x *DataSourceCustom_Static) String() string { func (*DataSourceCustom_Static) ProtoMessage() {} func (x *DataSourceCustom_Static) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3670,7 +3817,7 @@ func (x *DataSourceCustom_Static) ProtoReflect() protoreflect.Message { // Deprecated: Use DataSourceCustom_Static.ProtoReflect.Descriptor instead. func (*DataSourceCustom_Static) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{49} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{51} } func (x *DataSourceCustom_Static) GetData() *ConfigurationVariable { @@ -3693,7 +3840,7 @@ type ConfigurationVariable struct { func (x *ConfigurationVariable) Reset() { *x = ConfigurationVariable{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3705,7 +3852,7 @@ func (x *ConfigurationVariable) String() string { func (*ConfigurationVariable) ProtoMessage() {} func (x *ConfigurationVariable) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3718,7 +3865,7 @@ func (x *ConfigurationVariable) ProtoReflect() protoreflect.Message { // Deprecated: Use ConfigurationVariable.ProtoReflect.Descriptor instead. func (*ConfigurationVariable) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{50} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{52} } func (x *ConfigurationVariable) GetKind() ConfigurationVariableKind { @@ -3766,7 +3913,7 @@ type DirectiveConfiguration struct { func (x *DirectiveConfiguration) Reset() { *x = DirectiveConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3778,7 +3925,7 @@ func (x *DirectiveConfiguration) String() string { func (*DirectiveConfiguration) ProtoMessage() {} func (x *DirectiveConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3791,7 +3938,7 @@ func (x *DirectiveConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use DirectiveConfiguration.ProtoReflect.Descriptor instead. func (*DirectiveConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{51} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{53} } func (x *DirectiveConfiguration) GetDirectiveName() string { @@ -3818,7 +3965,7 @@ type URLQueryConfiguration struct { func (x *URLQueryConfiguration) Reset() { *x = URLQueryConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3830,7 +3977,7 @@ func (x *URLQueryConfiguration) String() string { func (*URLQueryConfiguration) ProtoMessage() {} func (x *URLQueryConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3843,7 +3990,7 @@ func (x *URLQueryConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use URLQueryConfiguration.ProtoReflect.Descriptor instead. func (*URLQueryConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{52} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{54} } func (x *URLQueryConfiguration) GetName() string { @@ -3869,7 +4016,7 @@ type HTTPHeader struct { func (x *HTTPHeader) Reset() { *x = HTTPHeader{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3881,7 +4028,7 @@ func (x *HTTPHeader) String() string { func (*HTTPHeader) ProtoMessage() {} func (x *HTTPHeader) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3894,7 +4041,7 @@ func (x *HTTPHeader) ProtoReflect() protoreflect.Message { // Deprecated: Use HTTPHeader.ProtoReflect.Descriptor instead. func (*HTTPHeader) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{53} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{55} } func (x *HTTPHeader) GetValues() []*ConfigurationVariable { @@ -3915,7 +4062,7 @@ type MTLSConfiguration struct { func (x *MTLSConfiguration) Reset() { *x = MTLSConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3927,7 +4074,7 @@ func (x *MTLSConfiguration) String() string { func (*MTLSConfiguration) ProtoMessage() {} func (x *MTLSConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3940,7 +4087,7 @@ func (x *MTLSConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use MTLSConfiguration.ProtoReflect.Descriptor instead. func (*MTLSConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{54} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{56} } func (x *MTLSConfiguration) GetKey() *ConfigurationVariable { @@ -3978,7 +4125,7 @@ type GraphQLSubscriptionConfiguration struct { func (x *GraphQLSubscriptionConfiguration) Reset() { *x = GraphQLSubscriptionConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3990,7 +4137,7 @@ func (x *GraphQLSubscriptionConfiguration) String() string { func (*GraphQLSubscriptionConfiguration) ProtoMessage() {} func (x *GraphQLSubscriptionConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4003,7 +4150,7 @@ func (x *GraphQLSubscriptionConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use GraphQLSubscriptionConfiguration.ProtoReflect.Descriptor instead. func (*GraphQLSubscriptionConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{55} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{57} } func (x *GraphQLSubscriptionConfiguration) GetEnabled() bool { @@ -4051,7 +4198,7 @@ type GraphQLFederationConfiguration struct { func (x *GraphQLFederationConfiguration) Reset() { *x = GraphQLFederationConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4063,7 +4210,7 @@ func (x *GraphQLFederationConfiguration) String() string { func (*GraphQLFederationConfiguration) ProtoMessage() {} func (x *GraphQLFederationConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4076,7 +4223,7 @@ func (x *GraphQLFederationConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use GraphQLFederationConfiguration.ProtoReflect.Descriptor instead. func (*GraphQLFederationConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{56} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{58} } func (x *GraphQLFederationConfiguration) GetEnabled() bool { @@ -4103,7 +4250,7 @@ type InternedString struct { func (x *InternedString) Reset() { *x = InternedString{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4115,7 +4262,7 @@ func (x *InternedString) String() string { func (*InternedString) ProtoMessage() {} func (x *InternedString) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4128,7 +4275,7 @@ func (x *InternedString) ProtoReflect() protoreflect.Message { // Deprecated: Use InternedString.ProtoReflect.Descriptor instead. func (*InternedString) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{57} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{59} } func (x *InternedString) GetKey() string { @@ -4148,7 +4295,7 @@ type SingleTypeField struct { func (x *SingleTypeField) Reset() { *x = SingleTypeField{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4160,7 +4307,7 @@ func (x *SingleTypeField) String() string { func (*SingleTypeField) ProtoMessage() {} func (x *SingleTypeField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4173,7 +4320,7 @@ func (x *SingleTypeField) ProtoReflect() protoreflect.Message { // Deprecated: Use SingleTypeField.ProtoReflect.Descriptor instead. func (*SingleTypeField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{58} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{60} } func (x *SingleTypeField) GetTypeName() string { @@ -4200,7 +4347,7 @@ type SubscriptionFieldCondition struct { func (x *SubscriptionFieldCondition) Reset() { *x = SubscriptionFieldCondition{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4212,7 +4359,7 @@ func (x *SubscriptionFieldCondition) String() string { func (*SubscriptionFieldCondition) ProtoMessage() {} func (x *SubscriptionFieldCondition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4225,7 +4372,7 @@ func (x *SubscriptionFieldCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionFieldCondition.ProtoReflect.Descriptor instead. func (*SubscriptionFieldCondition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{59} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{61} } func (x *SubscriptionFieldCondition) GetFieldPath() []string { @@ -4254,7 +4401,7 @@ type SubscriptionFilterCondition struct { func (x *SubscriptionFilterCondition) Reset() { *x = SubscriptionFilterCondition{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4266,7 +4413,7 @@ func (x *SubscriptionFilterCondition) String() string { func (*SubscriptionFilterCondition) ProtoMessage() {} func (x *SubscriptionFilterCondition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4279,7 +4426,7 @@ func (x *SubscriptionFilterCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionFilterCondition.ProtoReflect.Descriptor instead. func (*SubscriptionFilterCondition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{60} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{62} } func (x *SubscriptionFilterCondition) GetAnd() []*SubscriptionFilterCondition { @@ -4319,7 +4466,7 @@ type CacheWarmerOperations struct { func (x *CacheWarmerOperations) Reset() { *x = CacheWarmerOperations{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4331,7 +4478,7 @@ func (x *CacheWarmerOperations) String() string { func (*CacheWarmerOperations) ProtoMessage() {} func (x *CacheWarmerOperations) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4344,7 +4491,7 @@ func (x *CacheWarmerOperations) ProtoReflect() protoreflect.Message { // Deprecated: Use CacheWarmerOperations.ProtoReflect.Descriptor instead. func (*CacheWarmerOperations) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{61} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{63} } func (x *CacheWarmerOperations) GetOperations() []*Operation { @@ -4364,7 +4511,7 @@ type Operation struct { func (x *Operation) Reset() { *x = Operation{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4376,7 +4523,7 @@ func (x *Operation) String() string { func (*Operation) ProtoMessage() {} func (x *Operation) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4389,7 +4536,7 @@ func (x *Operation) ProtoReflect() protoreflect.Message { // Deprecated: Use Operation.ProtoReflect.Descriptor instead. func (*Operation) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{62} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{64} } func (x *Operation) GetRequest() *OperationRequest { @@ -4417,7 +4564,7 @@ type OperationRequest struct { func (x *OperationRequest) Reset() { *x = OperationRequest{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4429,7 +4576,7 @@ func (x *OperationRequest) String() string { func (*OperationRequest) ProtoMessage() {} func (x *OperationRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4442,7 +4589,7 @@ func (x *OperationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use OperationRequest.ProtoReflect.Descriptor instead. func (*OperationRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{63} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{65} } func (x *OperationRequest) GetOperationName() string { @@ -4475,7 +4622,7 @@ type Extension struct { func (x *Extension) Reset() { *x = Extension{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4487,7 +4634,7 @@ func (x *Extension) String() string { func (*Extension) ProtoMessage() {} func (x *Extension) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4500,7 +4647,7 @@ func (x *Extension) ProtoReflect() protoreflect.Message { // Deprecated: Use Extension.ProtoReflect.Descriptor instead. func (*Extension) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{64} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{66} } func (x *Extension) GetPersistedQuery() *PersistedQuery { @@ -4520,7 +4667,7 @@ type PersistedQuery struct { func (x *PersistedQuery) Reset() { *x = PersistedQuery{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4532,7 +4679,7 @@ func (x *PersistedQuery) String() string { func (*PersistedQuery) ProtoMessage() {} func (x *PersistedQuery) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4545,7 +4692,7 @@ func (x *PersistedQuery) ProtoReflect() protoreflect.Message { // Deprecated: Use PersistedQuery.ProtoReflect.Descriptor instead. func (*PersistedQuery) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{65} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{67} } func (x *PersistedQuery) GetSha256Hash() string { @@ -4572,7 +4719,7 @@ type ClientInfo struct { func (x *ClientInfo) Reset() { *x = ClientInfo{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4584,7 +4731,7 @@ func (x *ClientInfo) String() string { func (*ClientInfo) ProtoMessage() {} func (x *ClientInfo) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4597,7 +4744,7 @@ func (x *ClientInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ClientInfo.ProtoReflect.Descriptor instead. func (*ClientInfo) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{66} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{68} } func (x *ClientInfo) GetName() string { @@ -4669,7 +4816,7 @@ const file_wg_cosmo_node_v1_node_proto_rawDesc = "" + "\x12StringStorageEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\x18\n" + - "\x16_graphql_client_schema\"\xce\b\n" + + "\x16_graphql_client_schema\"\x96\t\n" + "\x17DataSourceConfiguration\x124\n" + "\x04kind\x18\x01 \x01(\x0e2 .wg.cosmo.node.v1.DataSourceKindR\x04kind\x12:\n" + "\n" + @@ -4691,7 +4838,18 @@ const file_wg_cosmo_node_v1_node_proto_rawDesc = "" + "\rcustom_events\x18\r \x01(\v2(.wg.cosmo.node.v1.DataSourceCustomEventsR\fcustomEvents\x12[\n" + "\x11entity_interfaces\x18\x0e \x03(\v2..wg.cosmo.node.v1.EntityInterfaceConfigurationR\x10entityInterfaces\x12[\n" + "\x11interface_objects\x18\x0f \x03(\v2..wg.cosmo.node.v1.EntityInterfaceConfigurationR\x10interfaceObjects\x12R\n" + - "\x12cost_configuration\x18\x10 \x01(\v2#.wg.cosmo.node.v1.CostConfigurationR\x11costConfiguration\"\x98\x04\n" + + "\x12cost_configuration\x18\x10 \x01(\v2#.wg.cosmo.node.v1.CostConfigurationR\x11costConfiguration\x12F\n" + + "\x0eentity_caching\x18\x11 \x01(\v2\x1f.wg.cosmo.node.v1.EntityCachingR\rentityCaching\"{\n" + + "\rEntityCaching\x12j\n" + + "\x1bentity_cache_configurations\x18\x01 \x03(\v2*.wg.cosmo.node.v1.EntityCacheConfigurationR\x19entityCacheConfigurations\"\x95\x02\n" + + "\x18EntityCacheConfiguration\x12\x1b\n" + + "\ttype_name\x18\x01 \x01(\tR\btypeName\x12&\n" + + "\x0fmax_age_seconds\x18\x02 \x01(\x03R\rmaxAgeSeconds\x12'\n" + + "\x0finclude_headers\x18\x03 \x01(\bR\x0eincludeHeaders\x12,\n" + + "\x12partial_cache_load\x18\x04 \x01(\bR\x10partialCacheLoad\x12\x1f\n" + + "\vshadow_mode\x18\x05 \x01(\bR\n" + + "shadowMode\x12<\n" + + "\x1bnot_found_cache_ttl_seconds\x18\x06 \x01(\x03R\x17notFoundCacheTtlSeconds\"\x98\x04\n" + "\x11CostConfiguration\x12O\n" + "\rfield_weights\x18\x01 \x03(\v2*.wg.cosmo.node.v1.FieldWeightConfigurationR\ffieldWeights\x12K\n" + "\n" + @@ -5030,7 +5188,7 @@ func file_wg_cosmo_node_v1_node_proto_rawDescGZIP() []byte { } var file_wg_cosmo_node_v1_node_proto_enumTypes = make([]protoimpl.EnumInfo, 8) -var file_wg_cosmo_node_v1_node_proto_msgTypes = make([]protoimpl.MessageInfo, 74) +var file_wg_cosmo_node_v1_node_proto_msgTypes = make([]protoimpl.MessageInfo, 76) var file_wg_cosmo_node_v1_node_proto_goTypes = []any{ (ArgumentRenderConfiguration)(0), // 0: wg.cosmo.node.v1.ArgumentRenderConfiguration (ArgumentSource)(0), // 1: wg.cosmo.node.v1.ArgumentSource @@ -5052,180 +5210,184 @@ var file_wg_cosmo_node_v1_node_proto_goTypes = []any{ (*SelfRegisterResponse)(nil), // 17: wg.cosmo.node.v1.SelfRegisterResponse (*EngineConfiguration)(nil), // 18: wg.cosmo.node.v1.EngineConfiguration (*DataSourceConfiguration)(nil), // 19: wg.cosmo.node.v1.DataSourceConfiguration - (*CostConfiguration)(nil), // 20: wg.cosmo.node.v1.CostConfiguration - (*FieldWeightConfiguration)(nil), // 21: wg.cosmo.node.v1.FieldWeightConfiguration - (*FieldListSizeConfiguration)(nil), // 22: wg.cosmo.node.v1.FieldListSizeConfiguration - (*ArgumentConfiguration)(nil), // 23: wg.cosmo.node.v1.ArgumentConfiguration - (*Scopes)(nil), // 24: wg.cosmo.node.v1.Scopes - (*AuthorizationConfiguration)(nil), // 25: wg.cosmo.node.v1.AuthorizationConfiguration - (*FieldConfiguration)(nil), // 26: wg.cosmo.node.v1.FieldConfiguration - (*TypeConfiguration)(nil), // 27: wg.cosmo.node.v1.TypeConfiguration - (*TypeField)(nil), // 28: wg.cosmo.node.v1.TypeField - (*FieldCoordinates)(nil), // 29: wg.cosmo.node.v1.FieldCoordinates - (*FieldSetCondition)(nil), // 30: wg.cosmo.node.v1.FieldSetCondition - (*RequiredField)(nil), // 31: wg.cosmo.node.v1.RequiredField - (*EntityInterfaceConfiguration)(nil), // 32: wg.cosmo.node.v1.EntityInterfaceConfiguration - (*FetchConfiguration)(nil), // 33: wg.cosmo.node.v1.FetchConfiguration - (*StatusCodeTypeMapping)(nil), // 34: wg.cosmo.node.v1.StatusCodeTypeMapping - (*DataSourceCustom_GraphQL)(nil), // 35: wg.cosmo.node.v1.DataSourceCustom_GraphQL - (*GRPCConfiguration)(nil), // 36: wg.cosmo.node.v1.GRPCConfiguration - (*ImageReference)(nil), // 37: wg.cosmo.node.v1.ImageReference - (*PluginConfiguration)(nil), // 38: wg.cosmo.node.v1.PluginConfiguration - (*SSLConfiguration)(nil), // 39: wg.cosmo.node.v1.SSLConfiguration - (*GRPCMapping)(nil), // 40: wg.cosmo.node.v1.GRPCMapping - (*LookupMapping)(nil), // 41: wg.cosmo.node.v1.LookupMapping - (*LookupFieldMapping)(nil), // 42: wg.cosmo.node.v1.LookupFieldMapping - (*OperationMapping)(nil), // 43: wg.cosmo.node.v1.OperationMapping - (*EntityMapping)(nil), // 44: wg.cosmo.node.v1.EntityMapping - (*RequiredFieldMapping)(nil), // 45: wg.cosmo.node.v1.RequiredFieldMapping - (*TypeFieldMapping)(nil), // 46: wg.cosmo.node.v1.TypeFieldMapping - (*FieldMapping)(nil), // 47: wg.cosmo.node.v1.FieldMapping - (*ArgumentMapping)(nil), // 48: wg.cosmo.node.v1.ArgumentMapping - (*EnumMapping)(nil), // 49: wg.cosmo.node.v1.EnumMapping - (*EnumValueMapping)(nil), // 50: wg.cosmo.node.v1.EnumValueMapping - (*NatsStreamConfiguration)(nil), // 51: wg.cosmo.node.v1.NatsStreamConfiguration - (*NatsEventConfiguration)(nil), // 52: wg.cosmo.node.v1.NatsEventConfiguration - (*KafkaEventConfiguration)(nil), // 53: wg.cosmo.node.v1.KafkaEventConfiguration - (*RedisEventConfiguration)(nil), // 54: wg.cosmo.node.v1.RedisEventConfiguration - (*EngineEventConfiguration)(nil), // 55: wg.cosmo.node.v1.EngineEventConfiguration - (*DataSourceCustomEvents)(nil), // 56: wg.cosmo.node.v1.DataSourceCustomEvents - (*DataSourceCustom_Static)(nil), // 57: wg.cosmo.node.v1.DataSourceCustom_Static - (*ConfigurationVariable)(nil), // 58: wg.cosmo.node.v1.ConfigurationVariable - (*DirectiveConfiguration)(nil), // 59: wg.cosmo.node.v1.DirectiveConfiguration - (*URLQueryConfiguration)(nil), // 60: wg.cosmo.node.v1.URLQueryConfiguration - (*HTTPHeader)(nil), // 61: wg.cosmo.node.v1.HTTPHeader - (*MTLSConfiguration)(nil), // 62: wg.cosmo.node.v1.MTLSConfiguration - (*GraphQLSubscriptionConfiguration)(nil), // 63: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration - (*GraphQLFederationConfiguration)(nil), // 64: wg.cosmo.node.v1.GraphQLFederationConfiguration - (*InternedString)(nil), // 65: wg.cosmo.node.v1.InternedString - (*SingleTypeField)(nil), // 66: wg.cosmo.node.v1.SingleTypeField - (*SubscriptionFieldCondition)(nil), // 67: wg.cosmo.node.v1.SubscriptionFieldCondition - (*SubscriptionFilterCondition)(nil), // 68: wg.cosmo.node.v1.SubscriptionFilterCondition - (*CacheWarmerOperations)(nil), // 69: wg.cosmo.node.v1.CacheWarmerOperations - (*Operation)(nil), // 70: wg.cosmo.node.v1.Operation - (*OperationRequest)(nil), // 71: wg.cosmo.node.v1.OperationRequest - (*Extension)(nil), // 72: wg.cosmo.node.v1.Extension - (*PersistedQuery)(nil), // 73: wg.cosmo.node.v1.PersistedQuery - (*ClientInfo)(nil), // 74: wg.cosmo.node.v1.ClientInfo - nil, // 75: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry - nil, // 76: wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry - nil, // 77: wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry - nil, // 78: wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry - nil, // 79: wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry - nil, // 80: wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry - nil, // 81: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry - (common.EnumStatusCode)(0), // 82: wg.cosmo.common.EnumStatusCode - (common.GraphQLSubscriptionProtocol)(0), // 83: wg.cosmo.common.GraphQLSubscriptionProtocol - (common.GraphQLWebsocketSubprotocol)(0), // 84: wg.cosmo.common.GraphQLWebsocketSubprotocol + (*EntityCaching)(nil), // 20: wg.cosmo.node.v1.EntityCaching + (*EntityCacheConfiguration)(nil), // 21: wg.cosmo.node.v1.EntityCacheConfiguration + (*CostConfiguration)(nil), // 22: wg.cosmo.node.v1.CostConfiguration + (*FieldWeightConfiguration)(nil), // 23: wg.cosmo.node.v1.FieldWeightConfiguration + (*FieldListSizeConfiguration)(nil), // 24: wg.cosmo.node.v1.FieldListSizeConfiguration + (*ArgumentConfiguration)(nil), // 25: wg.cosmo.node.v1.ArgumentConfiguration + (*Scopes)(nil), // 26: wg.cosmo.node.v1.Scopes + (*AuthorizationConfiguration)(nil), // 27: wg.cosmo.node.v1.AuthorizationConfiguration + (*FieldConfiguration)(nil), // 28: wg.cosmo.node.v1.FieldConfiguration + (*TypeConfiguration)(nil), // 29: wg.cosmo.node.v1.TypeConfiguration + (*TypeField)(nil), // 30: wg.cosmo.node.v1.TypeField + (*FieldCoordinates)(nil), // 31: wg.cosmo.node.v1.FieldCoordinates + (*FieldSetCondition)(nil), // 32: wg.cosmo.node.v1.FieldSetCondition + (*RequiredField)(nil), // 33: wg.cosmo.node.v1.RequiredField + (*EntityInterfaceConfiguration)(nil), // 34: wg.cosmo.node.v1.EntityInterfaceConfiguration + (*FetchConfiguration)(nil), // 35: wg.cosmo.node.v1.FetchConfiguration + (*StatusCodeTypeMapping)(nil), // 36: wg.cosmo.node.v1.StatusCodeTypeMapping + (*DataSourceCustom_GraphQL)(nil), // 37: wg.cosmo.node.v1.DataSourceCustom_GraphQL + (*GRPCConfiguration)(nil), // 38: wg.cosmo.node.v1.GRPCConfiguration + (*ImageReference)(nil), // 39: wg.cosmo.node.v1.ImageReference + (*PluginConfiguration)(nil), // 40: wg.cosmo.node.v1.PluginConfiguration + (*SSLConfiguration)(nil), // 41: wg.cosmo.node.v1.SSLConfiguration + (*GRPCMapping)(nil), // 42: wg.cosmo.node.v1.GRPCMapping + (*LookupMapping)(nil), // 43: wg.cosmo.node.v1.LookupMapping + (*LookupFieldMapping)(nil), // 44: wg.cosmo.node.v1.LookupFieldMapping + (*OperationMapping)(nil), // 45: wg.cosmo.node.v1.OperationMapping + (*EntityMapping)(nil), // 46: wg.cosmo.node.v1.EntityMapping + (*RequiredFieldMapping)(nil), // 47: wg.cosmo.node.v1.RequiredFieldMapping + (*TypeFieldMapping)(nil), // 48: wg.cosmo.node.v1.TypeFieldMapping + (*FieldMapping)(nil), // 49: wg.cosmo.node.v1.FieldMapping + (*ArgumentMapping)(nil), // 50: wg.cosmo.node.v1.ArgumentMapping + (*EnumMapping)(nil), // 51: wg.cosmo.node.v1.EnumMapping + (*EnumValueMapping)(nil), // 52: wg.cosmo.node.v1.EnumValueMapping + (*NatsStreamConfiguration)(nil), // 53: wg.cosmo.node.v1.NatsStreamConfiguration + (*NatsEventConfiguration)(nil), // 54: wg.cosmo.node.v1.NatsEventConfiguration + (*KafkaEventConfiguration)(nil), // 55: wg.cosmo.node.v1.KafkaEventConfiguration + (*RedisEventConfiguration)(nil), // 56: wg.cosmo.node.v1.RedisEventConfiguration + (*EngineEventConfiguration)(nil), // 57: wg.cosmo.node.v1.EngineEventConfiguration + (*DataSourceCustomEvents)(nil), // 58: wg.cosmo.node.v1.DataSourceCustomEvents + (*DataSourceCustom_Static)(nil), // 59: wg.cosmo.node.v1.DataSourceCustom_Static + (*ConfigurationVariable)(nil), // 60: wg.cosmo.node.v1.ConfigurationVariable + (*DirectiveConfiguration)(nil), // 61: wg.cosmo.node.v1.DirectiveConfiguration + (*URLQueryConfiguration)(nil), // 62: wg.cosmo.node.v1.URLQueryConfiguration + (*HTTPHeader)(nil), // 63: wg.cosmo.node.v1.HTTPHeader + (*MTLSConfiguration)(nil), // 64: wg.cosmo.node.v1.MTLSConfiguration + (*GraphQLSubscriptionConfiguration)(nil), // 65: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration + (*GraphQLFederationConfiguration)(nil), // 66: wg.cosmo.node.v1.GraphQLFederationConfiguration + (*InternedString)(nil), // 67: wg.cosmo.node.v1.InternedString + (*SingleTypeField)(nil), // 68: wg.cosmo.node.v1.SingleTypeField + (*SubscriptionFieldCondition)(nil), // 69: wg.cosmo.node.v1.SubscriptionFieldCondition + (*SubscriptionFilterCondition)(nil), // 70: wg.cosmo.node.v1.SubscriptionFilterCondition + (*CacheWarmerOperations)(nil), // 71: wg.cosmo.node.v1.CacheWarmerOperations + (*Operation)(nil), // 72: wg.cosmo.node.v1.Operation + (*OperationRequest)(nil), // 73: wg.cosmo.node.v1.OperationRequest + (*Extension)(nil), // 74: wg.cosmo.node.v1.Extension + (*PersistedQuery)(nil), // 75: wg.cosmo.node.v1.PersistedQuery + (*ClientInfo)(nil), // 76: wg.cosmo.node.v1.ClientInfo + nil, // 77: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry + nil, // 78: wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry + nil, // 79: wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry + nil, // 80: wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry + nil, // 81: wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry + nil, // 82: wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry + nil, // 83: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry + (common.EnumStatusCode)(0), // 84: wg.cosmo.common.EnumStatusCode + (common.GraphQLSubscriptionProtocol)(0), // 85: wg.cosmo.common.GraphQLSubscriptionProtocol + (common.GraphQLWebsocketSubprotocol)(0), // 86: wg.cosmo.common.GraphQLWebsocketSubprotocol } var file_wg_cosmo_node_v1_node_proto_depIdxs = []int32{ - 75, // 0: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.config_by_feature_flag_name:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry + 77, // 0: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.config_by_feature_flag_name:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry 18, // 1: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig.engine_config:type_name -> wg.cosmo.node.v1.EngineConfiguration 8, // 2: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig.subgraphs:type_name -> wg.cosmo.node.v1.Subgraph 18, // 3: wg.cosmo.node.v1.RouterConfig.engine_config:type_name -> wg.cosmo.node.v1.EngineConfiguration 8, // 4: wg.cosmo.node.v1.RouterConfig.subgraphs:type_name -> wg.cosmo.node.v1.Subgraph 9, // 5: wg.cosmo.node.v1.RouterConfig.feature_flag_configs:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs - 82, // 6: wg.cosmo.node.v1.Response.code:type_name -> wg.cosmo.common.EnumStatusCode + 84, // 6: wg.cosmo.node.v1.Response.code:type_name -> wg.cosmo.common.EnumStatusCode 15, // 7: wg.cosmo.node.v1.RegistrationInfo.account_limits:type_name -> wg.cosmo.node.v1.AccountLimits 12, // 8: wg.cosmo.node.v1.SelfRegisterResponse.response:type_name -> wg.cosmo.node.v1.Response 14, // 9: wg.cosmo.node.v1.SelfRegisterResponse.registrationInfo:type_name -> wg.cosmo.node.v1.RegistrationInfo 19, // 10: wg.cosmo.node.v1.EngineConfiguration.datasource_configurations:type_name -> wg.cosmo.node.v1.DataSourceConfiguration - 26, // 11: wg.cosmo.node.v1.EngineConfiguration.field_configurations:type_name -> wg.cosmo.node.v1.FieldConfiguration - 27, // 12: wg.cosmo.node.v1.EngineConfiguration.type_configurations:type_name -> wg.cosmo.node.v1.TypeConfiguration - 76, // 13: wg.cosmo.node.v1.EngineConfiguration.string_storage:type_name -> wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry + 28, // 11: wg.cosmo.node.v1.EngineConfiguration.field_configurations:type_name -> wg.cosmo.node.v1.FieldConfiguration + 29, // 12: wg.cosmo.node.v1.EngineConfiguration.type_configurations:type_name -> wg.cosmo.node.v1.TypeConfiguration + 78, // 13: wg.cosmo.node.v1.EngineConfiguration.string_storage:type_name -> wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry 2, // 14: wg.cosmo.node.v1.DataSourceConfiguration.kind:type_name -> wg.cosmo.node.v1.DataSourceKind - 28, // 15: wg.cosmo.node.v1.DataSourceConfiguration.root_nodes:type_name -> wg.cosmo.node.v1.TypeField - 28, // 16: wg.cosmo.node.v1.DataSourceConfiguration.child_nodes:type_name -> wg.cosmo.node.v1.TypeField - 35, // 17: wg.cosmo.node.v1.DataSourceConfiguration.custom_graphql:type_name -> wg.cosmo.node.v1.DataSourceCustom_GraphQL - 57, // 18: wg.cosmo.node.v1.DataSourceConfiguration.custom_static:type_name -> wg.cosmo.node.v1.DataSourceCustom_Static - 59, // 19: wg.cosmo.node.v1.DataSourceConfiguration.directives:type_name -> wg.cosmo.node.v1.DirectiveConfiguration - 31, // 20: wg.cosmo.node.v1.DataSourceConfiguration.keys:type_name -> wg.cosmo.node.v1.RequiredField - 31, // 21: wg.cosmo.node.v1.DataSourceConfiguration.provides:type_name -> wg.cosmo.node.v1.RequiredField - 31, // 22: wg.cosmo.node.v1.DataSourceConfiguration.requires:type_name -> wg.cosmo.node.v1.RequiredField - 56, // 23: wg.cosmo.node.v1.DataSourceConfiguration.custom_events:type_name -> wg.cosmo.node.v1.DataSourceCustomEvents - 32, // 24: wg.cosmo.node.v1.DataSourceConfiguration.entity_interfaces:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration - 32, // 25: wg.cosmo.node.v1.DataSourceConfiguration.interface_objects:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration - 20, // 26: wg.cosmo.node.v1.DataSourceConfiguration.cost_configuration:type_name -> wg.cosmo.node.v1.CostConfiguration - 21, // 27: wg.cosmo.node.v1.CostConfiguration.field_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration - 22, // 28: wg.cosmo.node.v1.CostConfiguration.list_sizes:type_name -> wg.cosmo.node.v1.FieldListSizeConfiguration - 77, // 29: wg.cosmo.node.v1.CostConfiguration.type_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry - 78, // 30: wg.cosmo.node.v1.CostConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry - 79, // 31: wg.cosmo.node.v1.FieldWeightConfiguration.argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry - 80, // 32: wg.cosmo.node.v1.FieldWeightConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry - 1, // 33: wg.cosmo.node.v1.ArgumentConfiguration.source_type:type_name -> wg.cosmo.node.v1.ArgumentSource - 24, // 34: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes:type_name -> wg.cosmo.node.v1.Scopes - 24, // 35: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes_by_or:type_name -> wg.cosmo.node.v1.Scopes - 23, // 36: wg.cosmo.node.v1.FieldConfiguration.arguments_configuration:type_name -> wg.cosmo.node.v1.ArgumentConfiguration - 25, // 37: wg.cosmo.node.v1.FieldConfiguration.authorization_configuration:type_name -> wg.cosmo.node.v1.AuthorizationConfiguration - 68, // 38: wg.cosmo.node.v1.FieldConfiguration.subscription_filter_condition:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 29, // 39: wg.cosmo.node.v1.FieldSetCondition.field_coordinates_path:type_name -> wg.cosmo.node.v1.FieldCoordinates - 30, // 40: wg.cosmo.node.v1.RequiredField.conditions:type_name -> wg.cosmo.node.v1.FieldSetCondition - 58, // 41: wg.cosmo.node.v1.FetchConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 7, // 42: wg.cosmo.node.v1.FetchConfiguration.method:type_name -> wg.cosmo.node.v1.HTTPMethod - 81, // 43: wg.cosmo.node.v1.FetchConfiguration.header:type_name -> wg.cosmo.node.v1.FetchConfiguration.HeaderEntry - 58, // 44: wg.cosmo.node.v1.FetchConfiguration.body:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 60, // 45: wg.cosmo.node.v1.FetchConfiguration.query:type_name -> wg.cosmo.node.v1.URLQueryConfiguration - 62, // 46: wg.cosmo.node.v1.FetchConfiguration.mtls:type_name -> wg.cosmo.node.v1.MTLSConfiguration - 58, // 47: wg.cosmo.node.v1.FetchConfiguration.base_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 58, // 48: wg.cosmo.node.v1.FetchConfiguration.path:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 58, // 49: wg.cosmo.node.v1.FetchConfiguration.http_proxy_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 33, // 50: wg.cosmo.node.v1.DataSourceCustom_GraphQL.fetch:type_name -> wg.cosmo.node.v1.FetchConfiguration - 63, // 51: wg.cosmo.node.v1.DataSourceCustom_GraphQL.subscription:type_name -> wg.cosmo.node.v1.GraphQLSubscriptionConfiguration - 64, // 52: wg.cosmo.node.v1.DataSourceCustom_GraphQL.federation:type_name -> wg.cosmo.node.v1.GraphQLFederationConfiguration - 65, // 53: wg.cosmo.node.v1.DataSourceCustom_GraphQL.upstream_schema:type_name -> wg.cosmo.node.v1.InternedString - 66, // 54: wg.cosmo.node.v1.DataSourceCustom_GraphQL.custom_scalar_type_fields:type_name -> wg.cosmo.node.v1.SingleTypeField - 36, // 55: wg.cosmo.node.v1.DataSourceCustom_GraphQL.grpc:type_name -> wg.cosmo.node.v1.GRPCConfiguration - 40, // 56: wg.cosmo.node.v1.GRPCConfiguration.mapping:type_name -> wg.cosmo.node.v1.GRPCMapping - 38, // 57: wg.cosmo.node.v1.GRPCConfiguration.plugin:type_name -> wg.cosmo.node.v1.PluginConfiguration - 37, // 58: wg.cosmo.node.v1.PluginConfiguration.image_reference:type_name -> wg.cosmo.node.v1.ImageReference - 43, // 59: wg.cosmo.node.v1.GRPCMapping.operation_mappings:type_name -> wg.cosmo.node.v1.OperationMapping - 44, // 60: wg.cosmo.node.v1.GRPCMapping.entity_mappings:type_name -> wg.cosmo.node.v1.EntityMapping - 46, // 61: wg.cosmo.node.v1.GRPCMapping.type_field_mappings:type_name -> wg.cosmo.node.v1.TypeFieldMapping - 49, // 62: wg.cosmo.node.v1.GRPCMapping.enum_mappings:type_name -> wg.cosmo.node.v1.EnumMapping - 41, // 63: wg.cosmo.node.v1.GRPCMapping.resolve_mappings:type_name -> wg.cosmo.node.v1.LookupMapping - 3, // 64: wg.cosmo.node.v1.LookupMapping.type:type_name -> wg.cosmo.node.v1.LookupType - 42, // 65: wg.cosmo.node.v1.LookupMapping.lookup_mapping:type_name -> wg.cosmo.node.v1.LookupFieldMapping - 47, // 66: wg.cosmo.node.v1.LookupFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping - 4, // 67: wg.cosmo.node.v1.OperationMapping.type:type_name -> wg.cosmo.node.v1.OperationType - 45, // 68: wg.cosmo.node.v1.EntityMapping.required_field_mappings:type_name -> wg.cosmo.node.v1.RequiredFieldMapping - 47, // 69: wg.cosmo.node.v1.RequiredFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping - 47, // 70: wg.cosmo.node.v1.TypeFieldMapping.field_mappings:type_name -> wg.cosmo.node.v1.FieldMapping - 48, // 71: wg.cosmo.node.v1.FieldMapping.argument_mappings:type_name -> wg.cosmo.node.v1.ArgumentMapping - 50, // 72: wg.cosmo.node.v1.EnumMapping.values:type_name -> wg.cosmo.node.v1.EnumValueMapping - 55, // 73: wg.cosmo.node.v1.NatsEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 51, // 74: wg.cosmo.node.v1.NatsEventConfiguration.stream_configuration:type_name -> wg.cosmo.node.v1.NatsStreamConfiguration - 55, // 75: wg.cosmo.node.v1.KafkaEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 55, // 76: wg.cosmo.node.v1.RedisEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 5, // 77: wg.cosmo.node.v1.EngineEventConfiguration.type:type_name -> wg.cosmo.node.v1.EventType - 52, // 78: wg.cosmo.node.v1.DataSourceCustomEvents.nats:type_name -> wg.cosmo.node.v1.NatsEventConfiguration - 53, // 79: wg.cosmo.node.v1.DataSourceCustomEvents.kafka:type_name -> wg.cosmo.node.v1.KafkaEventConfiguration - 54, // 80: wg.cosmo.node.v1.DataSourceCustomEvents.redis:type_name -> wg.cosmo.node.v1.RedisEventConfiguration - 58, // 81: wg.cosmo.node.v1.DataSourceCustom_Static.data:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 6, // 82: wg.cosmo.node.v1.ConfigurationVariable.kind:type_name -> wg.cosmo.node.v1.ConfigurationVariableKind - 58, // 83: wg.cosmo.node.v1.HTTPHeader.values:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 58, // 84: wg.cosmo.node.v1.MTLSConfiguration.key:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 58, // 85: wg.cosmo.node.v1.MTLSConfiguration.cert:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 58, // 86: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 83, // 87: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol - 84, // 88: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.websocketSubprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol - 68, // 89: wg.cosmo.node.v1.SubscriptionFilterCondition.and:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 67, // 90: wg.cosmo.node.v1.SubscriptionFilterCondition.in:type_name -> wg.cosmo.node.v1.SubscriptionFieldCondition - 68, // 91: wg.cosmo.node.v1.SubscriptionFilterCondition.not:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 68, // 92: wg.cosmo.node.v1.SubscriptionFilterCondition.or:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 70, // 93: wg.cosmo.node.v1.CacheWarmerOperations.operations:type_name -> wg.cosmo.node.v1.Operation - 71, // 94: wg.cosmo.node.v1.Operation.request:type_name -> wg.cosmo.node.v1.OperationRequest - 74, // 95: wg.cosmo.node.v1.Operation.client:type_name -> wg.cosmo.node.v1.ClientInfo - 72, // 96: wg.cosmo.node.v1.OperationRequest.extensions:type_name -> wg.cosmo.node.v1.Extension - 73, // 97: wg.cosmo.node.v1.Extension.persisted_query:type_name -> wg.cosmo.node.v1.PersistedQuery - 10, // 98: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry.value:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig - 61, // 99: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry.value:type_name -> wg.cosmo.node.v1.HTTPHeader - 16, // 100: wg.cosmo.node.v1.NodeService.SelfRegister:input_type -> wg.cosmo.node.v1.SelfRegisterRequest - 17, // 101: wg.cosmo.node.v1.NodeService.SelfRegister:output_type -> wg.cosmo.node.v1.SelfRegisterResponse - 101, // [101:102] is the sub-list for method output_type - 100, // [100:101] is the sub-list for method input_type - 100, // [100:100] is the sub-list for extension type_name - 100, // [100:100] is the sub-list for extension extendee - 0, // [0:100] is the sub-list for field type_name + 30, // 15: wg.cosmo.node.v1.DataSourceConfiguration.root_nodes:type_name -> wg.cosmo.node.v1.TypeField + 30, // 16: wg.cosmo.node.v1.DataSourceConfiguration.child_nodes:type_name -> wg.cosmo.node.v1.TypeField + 37, // 17: wg.cosmo.node.v1.DataSourceConfiguration.custom_graphql:type_name -> wg.cosmo.node.v1.DataSourceCustom_GraphQL + 59, // 18: wg.cosmo.node.v1.DataSourceConfiguration.custom_static:type_name -> wg.cosmo.node.v1.DataSourceCustom_Static + 61, // 19: wg.cosmo.node.v1.DataSourceConfiguration.directives:type_name -> wg.cosmo.node.v1.DirectiveConfiguration + 33, // 20: wg.cosmo.node.v1.DataSourceConfiguration.keys:type_name -> wg.cosmo.node.v1.RequiredField + 33, // 21: wg.cosmo.node.v1.DataSourceConfiguration.provides:type_name -> wg.cosmo.node.v1.RequiredField + 33, // 22: wg.cosmo.node.v1.DataSourceConfiguration.requires:type_name -> wg.cosmo.node.v1.RequiredField + 58, // 23: wg.cosmo.node.v1.DataSourceConfiguration.custom_events:type_name -> wg.cosmo.node.v1.DataSourceCustomEvents + 34, // 24: wg.cosmo.node.v1.DataSourceConfiguration.entity_interfaces:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration + 34, // 25: wg.cosmo.node.v1.DataSourceConfiguration.interface_objects:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration + 22, // 26: wg.cosmo.node.v1.DataSourceConfiguration.cost_configuration:type_name -> wg.cosmo.node.v1.CostConfiguration + 20, // 27: wg.cosmo.node.v1.DataSourceConfiguration.entity_caching:type_name -> wg.cosmo.node.v1.EntityCaching + 21, // 28: wg.cosmo.node.v1.EntityCaching.entity_cache_configurations:type_name -> wg.cosmo.node.v1.EntityCacheConfiguration + 23, // 29: wg.cosmo.node.v1.CostConfiguration.field_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration + 24, // 30: wg.cosmo.node.v1.CostConfiguration.list_sizes:type_name -> wg.cosmo.node.v1.FieldListSizeConfiguration + 79, // 31: wg.cosmo.node.v1.CostConfiguration.type_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry + 80, // 32: wg.cosmo.node.v1.CostConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry + 81, // 33: wg.cosmo.node.v1.FieldWeightConfiguration.argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry + 82, // 34: wg.cosmo.node.v1.FieldWeightConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry + 1, // 35: wg.cosmo.node.v1.ArgumentConfiguration.source_type:type_name -> wg.cosmo.node.v1.ArgumentSource + 26, // 36: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes:type_name -> wg.cosmo.node.v1.Scopes + 26, // 37: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes_by_or:type_name -> wg.cosmo.node.v1.Scopes + 25, // 38: wg.cosmo.node.v1.FieldConfiguration.arguments_configuration:type_name -> wg.cosmo.node.v1.ArgumentConfiguration + 27, // 39: wg.cosmo.node.v1.FieldConfiguration.authorization_configuration:type_name -> wg.cosmo.node.v1.AuthorizationConfiguration + 70, // 40: wg.cosmo.node.v1.FieldConfiguration.subscription_filter_condition:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 31, // 41: wg.cosmo.node.v1.FieldSetCondition.field_coordinates_path:type_name -> wg.cosmo.node.v1.FieldCoordinates + 32, // 42: wg.cosmo.node.v1.RequiredField.conditions:type_name -> wg.cosmo.node.v1.FieldSetCondition + 60, // 43: wg.cosmo.node.v1.FetchConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 7, // 44: wg.cosmo.node.v1.FetchConfiguration.method:type_name -> wg.cosmo.node.v1.HTTPMethod + 83, // 45: wg.cosmo.node.v1.FetchConfiguration.header:type_name -> wg.cosmo.node.v1.FetchConfiguration.HeaderEntry + 60, // 46: wg.cosmo.node.v1.FetchConfiguration.body:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 62, // 47: wg.cosmo.node.v1.FetchConfiguration.query:type_name -> wg.cosmo.node.v1.URLQueryConfiguration + 64, // 48: wg.cosmo.node.v1.FetchConfiguration.mtls:type_name -> wg.cosmo.node.v1.MTLSConfiguration + 60, // 49: wg.cosmo.node.v1.FetchConfiguration.base_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 60, // 50: wg.cosmo.node.v1.FetchConfiguration.path:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 60, // 51: wg.cosmo.node.v1.FetchConfiguration.http_proxy_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 35, // 52: wg.cosmo.node.v1.DataSourceCustom_GraphQL.fetch:type_name -> wg.cosmo.node.v1.FetchConfiguration + 65, // 53: wg.cosmo.node.v1.DataSourceCustom_GraphQL.subscription:type_name -> wg.cosmo.node.v1.GraphQLSubscriptionConfiguration + 66, // 54: wg.cosmo.node.v1.DataSourceCustom_GraphQL.federation:type_name -> wg.cosmo.node.v1.GraphQLFederationConfiguration + 67, // 55: wg.cosmo.node.v1.DataSourceCustom_GraphQL.upstream_schema:type_name -> wg.cosmo.node.v1.InternedString + 68, // 56: wg.cosmo.node.v1.DataSourceCustom_GraphQL.custom_scalar_type_fields:type_name -> wg.cosmo.node.v1.SingleTypeField + 38, // 57: wg.cosmo.node.v1.DataSourceCustom_GraphQL.grpc:type_name -> wg.cosmo.node.v1.GRPCConfiguration + 42, // 58: wg.cosmo.node.v1.GRPCConfiguration.mapping:type_name -> wg.cosmo.node.v1.GRPCMapping + 40, // 59: wg.cosmo.node.v1.GRPCConfiguration.plugin:type_name -> wg.cosmo.node.v1.PluginConfiguration + 39, // 60: wg.cosmo.node.v1.PluginConfiguration.image_reference:type_name -> wg.cosmo.node.v1.ImageReference + 45, // 61: wg.cosmo.node.v1.GRPCMapping.operation_mappings:type_name -> wg.cosmo.node.v1.OperationMapping + 46, // 62: wg.cosmo.node.v1.GRPCMapping.entity_mappings:type_name -> wg.cosmo.node.v1.EntityMapping + 48, // 63: wg.cosmo.node.v1.GRPCMapping.type_field_mappings:type_name -> wg.cosmo.node.v1.TypeFieldMapping + 51, // 64: wg.cosmo.node.v1.GRPCMapping.enum_mappings:type_name -> wg.cosmo.node.v1.EnumMapping + 43, // 65: wg.cosmo.node.v1.GRPCMapping.resolve_mappings:type_name -> wg.cosmo.node.v1.LookupMapping + 3, // 66: wg.cosmo.node.v1.LookupMapping.type:type_name -> wg.cosmo.node.v1.LookupType + 44, // 67: wg.cosmo.node.v1.LookupMapping.lookup_mapping:type_name -> wg.cosmo.node.v1.LookupFieldMapping + 49, // 68: wg.cosmo.node.v1.LookupFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping + 4, // 69: wg.cosmo.node.v1.OperationMapping.type:type_name -> wg.cosmo.node.v1.OperationType + 47, // 70: wg.cosmo.node.v1.EntityMapping.required_field_mappings:type_name -> wg.cosmo.node.v1.RequiredFieldMapping + 49, // 71: wg.cosmo.node.v1.RequiredFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping + 49, // 72: wg.cosmo.node.v1.TypeFieldMapping.field_mappings:type_name -> wg.cosmo.node.v1.FieldMapping + 50, // 73: wg.cosmo.node.v1.FieldMapping.argument_mappings:type_name -> wg.cosmo.node.v1.ArgumentMapping + 52, // 74: wg.cosmo.node.v1.EnumMapping.values:type_name -> wg.cosmo.node.v1.EnumValueMapping + 57, // 75: wg.cosmo.node.v1.NatsEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 53, // 76: wg.cosmo.node.v1.NatsEventConfiguration.stream_configuration:type_name -> wg.cosmo.node.v1.NatsStreamConfiguration + 57, // 77: wg.cosmo.node.v1.KafkaEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 57, // 78: wg.cosmo.node.v1.RedisEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 5, // 79: wg.cosmo.node.v1.EngineEventConfiguration.type:type_name -> wg.cosmo.node.v1.EventType + 54, // 80: wg.cosmo.node.v1.DataSourceCustomEvents.nats:type_name -> wg.cosmo.node.v1.NatsEventConfiguration + 55, // 81: wg.cosmo.node.v1.DataSourceCustomEvents.kafka:type_name -> wg.cosmo.node.v1.KafkaEventConfiguration + 56, // 82: wg.cosmo.node.v1.DataSourceCustomEvents.redis:type_name -> wg.cosmo.node.v1.RedisEventConfiguration + 60, // 83: wg.cosmo.node.v1.DataSourceCustom_Static.data:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 6, // 84: wg.cosmo.node.v1.ConfigurationVariable.kind:type_name -> wg.cosmo.node.v1.ConfigurationVariableKind + 60, // 85: wg.cosmo.node.v1.HTTPHeader.values:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 60, // 86: wg.cosmo.node.v1.MTLSConfiguration.key:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 60, // 87: wg.cosmo.node.v1.MTLSConfiguration.cert:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 60, // 88: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 85, // 89: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol + 86, // 90: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.websocketSubprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol + 70, // 91: wg.cosmo.node.v1.SubscriptionFilterCondition.and:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 69, // 92: wg.cosmo.node.v1.SubscriptionFilterCondition.in:type_name -> wg.cosmo.node.v1.SubscriptionFieldCondition + 70, // 93: wg.cosmo.node.v1.SubscriptionFilterCondition.not:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 70, // 94: wg.cosmo.node.v1.SubscriptionFilterCondition.or:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 72, // 95: wg.cosmo.node.v1.CacheWarmerOperations.operations:type_name -> wg.cosmo.node.v1.Operation + 73, // 96: wg.cosmo.node.v1.Operation.request:type_name -> wg.cosmo.node.v1.OperationRequest + 76, // 97: wg.cosmo.node.v1.Operation.client:type_name -> wg.cosmo.node.v1.ClientInfo + 74, // 98: wg.cosmo.node.v1.OperationRequest.extensions:type_name -> wg.cosmo.node.v1.Extension + 75, // 99: wg.cosmo.node.v1.Extension.persisted_query:type_name -> wg.cosmo.node.v1.PersistedQuery + 10, // 100: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry.value:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig + 63, // 101: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry.value:type_name -> wg.cosmo.node.v1.HTTPHeader + 16, // 102: wg.cosmo.node.v1.NodeService.SelfRegister:input_type -> wg.cosmo.node.v1.SelfRegisterRequest + 17, // 103: wg.cosmo.node.v1.NodeService.SelfRegister:output_type -> wg.cosmo.node.v1.SelfRegisterResponse + 103, // [103:104] is the sub-list for method output_type + 102, // [102:103] is the sub-list for method input_type + 102, // [102:102] is the sub-list for extension type_name + 102, // [102:102] is the sub-list for extension extendee + 0, // [0:102] is the sub-list for field type_name } func init() { file_wg_cosmo_node_v1_node_proto_init() } @@ -5237,20 +5399,20 @@ func file_wg_cosmo_node_v1_node_proto_init() { file_wg_cosmo_node_v1_node_proto_msgTypes[4].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[9].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[10].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[13].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[14].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[18].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[25].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[30].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[55].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[60].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[15].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[16].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[20].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[27].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[32].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[57].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[62].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_wg_cosmo_node_v1_node_proto_rawDesc), len(file_wg_cosmo_node_v1_node_proto_rawDesc)), NumEnums: 8, - NumMessages: 74, + NumMessages: 76, NumExtensions: 0, NumServices: 1, }, diff --git a/shared/src/router-config/builder.ts b/shared/src/router-config/builder.ts index 6e231e3b0b..314e2d0932 100644 --- a/shared/src/router-config/builder.ts +++ b/shared/src/router-config/builder.ts @@ -25,6 +25,8 @@ import { DataSourceCustomEvents, DataSourceKind, EngineConfiguration, + EntityCacheConfiguration, + EntityCaching, FieldListSizeConfiguration, FieldWeightConfiguration, GraphQLSubscriptionConfiguration, @@ -67,6 +69,43 @@ function costsToCostConfiguration(costs?: Costs): CostConfiguration | undefined }); } +/** + * Convert the entity-caching configuration spread across a subgraph's `ConfigurationData` into the + * `EntityCaching` message. Add new entity-caching field types to the collection loop and the + * emptiness check below. + * + * @returns The `EntityCaching` message, or `undefined` when empty so the field is omitted (like + * `costsToCostConfiguration`). + */ +function toEntityCaching(dataByTypeName?: Map): EntityCaching | undefined { + if (!dataByTypeName) { + return undefined; + } + const entityCacheConfigurations: EntityCacheConfiguration[] = []; + for (const data of dataByTypeName.values()) { + for (const ec of data.entityCaching?.entityCacheConfigurations ?? []) { + entityCacheConfigurations.push( + new EntityCacheConfiguration({ + typeName: ec.typeName, + maxAgeSeconds: BigInt(ec.maxAgeSeconds), + notFoundCacheTtlSeconds: BigInt(ec.notFoundCacheTtlSeconds), + includeHeaders: ec.includeHeaders, + partialCacheLoad: ec.partialCacheLoad, + shadowMode: ec.shadowMode, + }), + ); + } + } + if ( + entityCacheConfigurations.length === 0 + ) { + return undefined; + } + return new EntityCaching({ + entityCacheConfigurations, + }); +} + export interface Input { federatedClientSDL: string; federatedSDL: string; @@ -320,6 +359,7 @@ export const buildRouterConfig = function (input: Input): RouterConfig { kind, overrideFieldPathFromAlias: true, provides, + entityCaching: toEntityCaching(subgraph.configurationDataByTypeName), requestTimeoutSeconds: BigInt(10), requires, rootNodes, From 1d693ce214f98b35cd12a60385f2bd3640bb4145 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Fri, 19 Jun 2026 11:50:14 +0530 Subject: [PATCH 02/65] feat(composition): @openfed__cacheInvalidate directive --- .../directive-definition-data.ts | 9 + composition/src/errors/errors.ts | 8 + composition/src/router-configuration/types.ts | 10 + composition/src/utils/string-constants.ts | 1 + composition/src/v1/constants/constants.ts | 3 + .../src/v1/constants/directive-definitions.ts | 9 + .../v1/normalization/normalization-factory.ts | 76 ++ composition/src/v1/normalization/utils.ts | 3 + .../v1/directives/cache-invalidate.test.ts | 209 +++++ .../gen/proto/wg/cosmo/node/v1/node.pb.go | 759 ++++++++++-------- connect/src/wg/cosmo/node/v1/node_pb.ts | 60 ++ proto/wg/cosmo/node/v1/node.proto | 10 + router/gen/proto/wg/cosmo/node/v1/node.pb.go | 759 ++++++++++-------- shared/src/router-config/builder.ts | 15 +- 14 files changed, 1250 insertions(+), 681 deletions(-) create mode 100644 composition/tests/v1/directives/cache-invalidate.test.ts diff --git a/composition/src/directive-definition-data/directive-definition-data.ts b/composition/src/directive-definition-data/directive-definition-data.ts index 20bb517d09..d496a5bf87 100644 --- a/composition/src/directive-definition-data/directive-definition-data.ts +++ b/composition/src/directive-definition-data/directive-definition-data.ts @@ -81,6 +81,7 @@ import { UNION_UPPER, URL_LOWER, WEIGHT, + CACHE_INVALIDATE, ENTITY_CACHE, INCLUDE_HEADERS, MAX_AGE, @@ -118,6 +119,7 @@ import { REQUIRES_SCOPES_DEFINITION, SEMANTIC_NON_NULL_DEFINITION, SHAREABLE_DEFINITION, + CACHE_INVALIDATE_DEFINITION, ENTITY_CACHE_DEFINITION, SPECIFIED_BY_DEFINITION, SUBSCRIPTION_FILTER_DEFINITION, @@ -1015,3 +1017,10 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ optionalArgumentNames: new Set([NEGATIVE_CACHE_TTL, INCLUDE_HEADERS, PARTIAL_CACHE_LOAD, SHADOW_MODE]), requiredArgumentNames: new Set([MAX_AGE]), }); + +export const CACHE_INVALIDATE_DEFINITION_DATA = newDirectiveDefinitionData({ + argumentDataByName: new Map(), + locations: new Set([FIELD_DEFINITION_UPPER]), + name: CACHE_INVALIDATE, + node: CACHE_INVALIDATE_DEFINITION, +}); diff --git a/composition/src/errors/errors.ts b/composition/src/errors/errors.ts index 97d6dd3567..987a5a54ee 100644 --- a/composition/src/errors/errors.ts +++ b/composition/src/errors/errors.ts @@ -2062,3 +2062,11 @@ export function maxAgeNotPositiveIntegerErrorMessage(directiveName: string, valu export function negativeCacheTTLNotNonNegativeIntegerErrorMessage(directiveName: string, value: number): string { return `@${directiveName} negativeCacheTTL must be zero or a positive integer, got "${value}".`; } + +export function cacheInvalidateOnNonMutationSubscriptionFieldErrorMessage(fieldCoords: string): string { + return `@openfed__cacheInvalidate is only valid on Mutation or Subscription fields, found on "${fieldCoords}".`; +} + +export function cacheInvalidateOnNonEntityReturnTypeErrorMessage(fieldCoords: string, returnType: string): string { + return `Field "${fieldCoords}" has @openfed__cacheInvalidate but returns non-entity type "${returnType}".`; +} diff --git a/composition/src/router-configuration/types.ts b/composition/src/router-configuration/types.ts index 28cbd91120..191f71086c 100644 --- a/composition/src/router-configuration/types.ts +++ b/composition/src/router-configuration/types.ts @@ -119,9 +119,19 @@ export type EntityCacheConfig = { shadowMode: boolean; }; +// Extracted from @openfed__cacheInvalidate on Mutation/Subscription fields. +// Tells the router to evict the returned entity from the cache after the operation completes. +export type CacheInvalidateConfig = { + fieldName: FieldName; + operationType: string; + entityTypeName: TypeName; +}; + export type EntityCachingConfiguration = { // Attached to an entity type's ConfigurationData (e.g. "Product") from @openfed__entityCache. entityCacheConfigurations?: Array; + // Attached to the Mutation/Subscription type's ConfigurationData from @openfed__cacheInvalidate. + cacheInvalidateConfigurations?: Array; }; export type Costs = { diff --git a/composition/src/utils/string-constants.ts b/composition/src/utils/string-constants.ts index 4177ca6b70..3c9af32635 100644 --- a/composition/src/utils/string-constants.ts +++ b/composition/src/utils/string-constants.ts @@ -10,6 +10,7 @@ export const AUTHENTICATED = 'authenticated'; export const ARGUMENT_DEFINITION_UPPER = 'ARGUMENT_DEFINITION'; export const BOOLEAN = 'boolean'; export const BOOLEAN_SCALAR = 'Boolean'; +export const CACHE_INVALIDATE = 'openfed__cacheInvalidate'; export const CHANNEL = 'channel'; export const CHANNELS = 'channels'; export const COMPOSE_DIRECTIVE = 'composeDirective'; diff --git a/composition/src/v1/constants/constants.ts b/composition/src/v1/constants/constants.ts index 0ef018d365..f21769c0eb 100644 --- a/composition/src/v1/constants/constants.ts +++ b/composition/src/v1/constants/constants.ts @@ -6,6 +6,7 @@ import { CONFIGURE_CHILD_DESCRIPTIONS, CONFIGURE_DESCRIPTION, CONNECT_FIELD_RESOLVER, + CACHE_INVALIDATE, COST, ENTITY_CACHE, DEPRECATED, @@ -75,6 +76,7 @@ import { SPECIFIED_BY_DEFINITION, SUBSCRIPTION_FILTER_DEFINITION, TAG_DEFINITION, + CACHE_INVALIDATE_DEFINITION, ENTITY_CACHE_DEFINITION, } from './directive-definitions'; @@ -89,6 +91,7 @@ export const DIRECTIVE_DEFINITION_BY_NAME: ReadonlyMap + newConfigurationData(false, configurationTypeName), + ); + + const existingCacheInvalidates = configurationData.entityCaching?.cacheInvalidateConfigurations ?? []; + configurationData.entityCaching = { + ...configurationData.entityCaching, + cacheInvalidateConfigurations: [...existingCacheInvalidates, config], + }; + } + addFieldNamesToConfigurationData(fieldDataByFieldName: Map, configurationData: ConfigurationData) { const externalFieldNames = new Set(); for (const [fieldName, fieldData] of fieldDataByFieldName) { @@ -4349,6 +4422,9 @@ export class NormalizationFactory { // this is where @openfed__entityCache configurations are added to the ConfigurationData // (runs after key-field-set configs so keyFieldSetDatasByTypeName is populated for the @key check) this.extractEntityCacheDirectives(); + // per-field caching directives (@openfed__cacheInvalidate etc.) — must run after entityCache + // (reads entityCacheConfigByTypeName) + this.processRootFieldCacheDirectives(); // Check that explicitly defined operations types are valid objects and that their fields are also valid for (const operationType of Object.values(OperationTypeNode)) { const operationTypeNode = this.schemaData.operationTypes.get(operationType); diff --git a/composition/src/v1/normalization/utils.ts b/composition/src/v1/normalization/utils.ts index 668739a790..50f2d49a1b 100644 --- a/composition/src/v1/normalization/utils.ts +++ b/composition/src/v1/normalization/utils.ts @@ -76,6 +76,7 @@ import { SPECIFIED_BY_DEFINITION_DATA, SUBSCRIPTION_FILTER_DEFINITION_DATA, TAG_DEFINITION_DATA, + CACHE_INVALIDATE_DEFINITION_DATA, ENTITY_CACHE_DEFINITION_DATA, } from '../../directive-definition-data/directive-definition-data'; import { @@ -85,6 +86,7 @@ import { CONFIGURE_CHILD_DESCRIPTIONS, CONFIGURE_DESCRIPTION, CONNECT_FIELD_RESOLVER, + CACHE_INVALIDATE, COST, ENTITY_CACHE, DEPRECATED, @@ -476,6 +478,7 @@ export function initializeDirectiveDefinitionDatas(): Map { + describe('on Mutation fields', () => { + test('normalizes a Mutation field returning a cached entity', () => { + const { schema } = normalizeSubgraphSuccess( + createSubgraphWithDefault(` + type Query { dummy: String! } + type Mutation { + updateProduct(id: ID!): Product @openfed__cacheInvalidate + } + type Product @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + name: String! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(schema).toBeDefined(); + }); + + test('produces a CacheInvalidateConfig', () => { + const config = getConfigForType( + createSubgraphWithDefault(` + type Query { dummy: String! } + type Mutation { + updateProduct(id: ID!): Product @openfed__cacheInvalidate + } + type Product @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + name: String! + } + `), + MUTATION, + ); + expect(config).toBeDefined(); + expect(config!.entityCaching?.cacheInvalidateConfigurations).toStrictEqual([ + { + fieldName: 'updateProduct', + operationType: MUTATION, + entityTypeName: 'Product', + }, + ] satisfies CacheInvalidateConfig[]); + }); + }); + + describe('on Subscription fields', () => { + test('normalizes a Subscription field returning a cached entity', () => { + const { schema } = normalizeSubgraphSuccess( + createSubgraphWithDefault(` + type Query { dummy: String! } + type Subscription { + itemUpdated: Product @openfed__cacheInvalidate + } + type Product @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + name: String! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(schema).toBeDefined(); + }); + + test('produces a CacheInvalidateConfig', () => { + const config = getConfigForType( + createSubgraphWithDefault(` + type Query { dummy: String! } + type Subscription { + itemUpdated: Product @openfed__cacheInvalidate + } + type Product @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + name: String! + } + `), + SUBSCRIPTION, + ); + expect(config).toBeDefined(); + expect(config!.entityCaching?.cacheInvalidateConfigurations).toStrictEqual([ + { + fieldName: 'itemUpdated', + operationType: SUBSCRIPTION, + entityTypeName: 'Product', + }, + ] satisfies CacheInvalidateConfig[]); + }); + }); + + describe('validation errors', () => { + test('rejects placement on a Query field', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + product(id: ID!): Product @openfed__cacheInvalidate + } + type Product @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + name: String! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors).toHaveLength(1); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_CACHE_INVALIDATE, 'Query.product', FIRST_ORDINAL, [ + cacheInvalidateOnNonMutationSubscriptionFieldErrorMessage('Query.product'), + ]), + ); + }); + + test('rejects a return type that is not a cached entity', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { dummy: String! } + type Mutation { + updateProduct(id: ID!): Result @openfed__cacheInvalidate + } + type Result { success: Boolean! } + type Product @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + name: String! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors).toHaveLength(1); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_CACHE_INVALIDATE, 'Mutation.updateProduct', FIRST_ORDINAL, [ + cacheInvalidateOnNonEntityReturnTypeErrorMessage('Mutation.updateProduct', 'Result'), + ]), + ); + }); + + test('rejects a @key entity without @openfed__entityCache', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { dummy: String! } + type Mutation { + updateProduct(id: ID!): Product @openfed__cacheInvalidate + } + type Product @key(fields: "id") { + id: ID! + name: String! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors).toHaveLength(1); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_CACHE_INVALIDATE, 'Mutation.updateProduct', FIRST_ORDINAL, [ + cacheInvalidateOnNonEntityReturnTypeErrorMessage('Mutation.updateProduct', 'Product'), + ]), + ); + }); + + test('rejects placement on a non-root object-type field', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + product: Product + } + type Product @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + related: Related @openfed__cacheInvalidate + } + type Related @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors).toHaveLength(1); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_CACHE_INVALIDATE, 'Product.related', FIRST_ORDINAL, [ + cacheInvalidateOnNonMutationSubscriptionFieldErrorMessage('Product.related'), + ]), + ); + }); + }); +}); + +// Returns the ConfigurationData for a type. Entity-caching config is nested under `.entityCaching`. +function getConfigForType(sg: Subgraph, typeName: string): ConfigurationData | undefined { + const result = new BatchNormalizer({ subgraphs: [sg] }).batchNormalize() as BatchNormalizationSuccess; + expect(result.success).toBe(true); + const internal = result.internalSubgraphByName.get(sg.name); + expect(internal).toBeDefined(); + return internal!.configurationDataByTypeName.get(typeName as TypeName); +} diff --git a/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go b/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go index 7d3e790f61..ff99568c35 100644 --- a/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go +++ b/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go @@ -1230,8 +1230,10 @@ type EntityCaching struct { state protoimpl.MessageState `protogen:"open.v1"` // Per-entity cache configurations (from @openfed__entityCache directive) EntityCacheConfigurations []*EntityCacheConfiguration `protobuf:"bytes,1,rep,name=entity_cache_configurations,json=entityCacheConfigurations,proto3" json:"entity_cache_configurations,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // Per-Mutation/Subscription-field cache eviction configs (from @openfed__cacheInvalidate) + CacheInvalidateConfigurations []*CacheInvalidateConfiguration `protobuf:"bytes,2,rep,name=cache_invalidate_configurations,json=cacheInvalidateConfigurations,proto3" json:"cache_invalidate_configurations,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *EntityCaching) Reset() { @@ -1271,6 +1273,13 @@ func (x *EntityCaching) GetEntityCacheConfigurations() []*EntityCacheConfigurati return nil } +func (x *EntityCaching) GetCacheInvalidateConfigurations() []*CacheInvalidateConfiguration { + if x != nil { + return x.CacheInvalidateConfigurations + } + return nil +} + // Per-entity declaration for @openfed__entityCache. Marks a @key entity type as cacheable so the // router can store/serve resolved entities from an external store (e.g. Redis). type EntityCacheConfiguration struct { @@ -1363,6 +1372,68 @@ func (x *EntityCacheConfiguration) GetNotFoundCacheTtlSeconds() int64 { return 0 } +// Per-field declaration for @openfed__cacheInvalidate. Tells the router to evict the returned +// entity from the cache after the (Mutation/Subscription) operation completes. +type CacheInvalidateConfiguration struct { + state protoimpl.MessageState `protogen:"open.v1"` + FieldName string `protobuf:"bytes,1,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` + OperationType string `protobuf:"bytes,2,opt,name=operation_type,json=operationType,proto3" json:"operation_type,omitempty"` + EntityTypeName string `protobuf:"bytes,3,opt,name=entity_type_name,json=entityTypeName,proto3" json:"entity_type_name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CacheInvalidateConfiguration) Reset() { + *x = CacheInvalidateConfiguration{} + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CacheInvalidateConfiguration) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CacheInvalidateConfiguration) ProtoMessage() {} + +func (x *CacheInvalidateConfiguration) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CacheInvalidateConfiguration.ProtoReflect.Descriptor instead. +func (*CacheInvalidateConfiguration) Descriptor() ([]byte, []int) { + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{14} +} + +func (x *CacheInvalidateConfiguration) GetFieldName() string { + if x != nil { + return x.FieldName + } + return "" +} + +func (x *CacheInvalidateConfiguration) GetOperationType() string { + if x != nil { + return x.OperationType + } + return "" +} + +func (x *CacheInvalidateConfiguration) GetEntityTypeName() string { + if x != nil { + return x.EntityTypeName + } + return "" +} + type CostConfiguration struct { state protoimpl.MessageState `protogen:"open.v1"` FieldWeights []*FieldWeightConfiguration `protobuf:"bytes,1,rep,name=field_weights,json=fieldWeights,proto3" json:"field_weights,omitempty"` @@ -1375,7 +1446,7 @@ type CostConfiguration struct { func (x *CostConfiguration) Reset() { *x = CostConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[14] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1387,7 +1458,7 @@ func (x *CostConfiguration) String() string { func (*CostConfiguration) ProtoMessage() {} func (x *CostConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[14] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1400,7 +1471,7 @@ func (x *CostConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use CostConfiguration.ProtoReflect.Descriptor instead. func (*CostConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{14} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{15} } func (x *CostConfiguration) GetFieldWeights() []*FieldWeightConfiguration { @@ -1444,7 +1515,7 @@ type FieldWeightConfiguration struct { func (x *FieldWeightConfiguration) Reset() { *x = FieldWeightConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[15] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1456,7 +1527,7 @@ func (x *FieldWeightConfiguration) String() string { func (*FieldWeightConfiguration) ProtoMessage() {} func (x *FieldWeightConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[15] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1469,7 +1540,7 @@ func (x *FieldWeightConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldWeightConfiguration.ProtoReflect.Descriptor instead. func (*FieldWeightConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{15} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{16} } func (x *FieldWeightConfiguration) GetTypeName() string { @@ -1521,7 +1592,7 @@ type FieldListSizeConfiguration struct { func (x *FieldListSizeConfiguration) Reset() { *x = FieldListSizeConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1533,7 +1604,7 @@ func (x *FieldListSizeConfiguration) String() string { func (*FieldListSizeConfiguration) ProtoMessage() {} func (x *FieldListSizeConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1546,7 +1617,7 @@ func (x *FieldListSizeConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldListSizeConfiguration.ProtoReflect.Descriptor instead. func (*FieldListSizeConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{16} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{17} } func (x *FieldListSizeConfiguration) GetTypeName() string { @@ -1601,7 +1672,7 @@ type ArgumentConfiguration struct { func (x *ArgumentConfiguration) Reset() { *x = ArgumentConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1613,7 +1684,7 @@ func (x *ArgumentConfiguration) String() string { func (*ArgumentConfiguration) ProtoMessage() {} func (x *ArgumentConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1626,7 +1697,7 @@ func (x *ArgumentConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use ArgumentConfiguration.ProtoReflect.Descriptor instead. func (*ArgumentConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{17} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{18} } func (x *ArgumentConfiguration) GetName() string { @@ -1652,7 +1723,7 @@ type Scopes struct { func (x *Scopes) Reset() { *x = Scopes{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1664,7 +1735,7 @@ func (x *Scopes) String() string { func (*Scopes) ProtoMessage() {} func (x *Scopes) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1677,7 +1748,7 @@ func (x *Scopes) ProtoReflect() protoreflect.Message { // Deprecated: Use Scopes.ProtoReflect.Descriptor instead. func (*Scopes) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{18} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{19} } func (x *Scopes) GetRequiredAndScopes() []string { @@ -1698,7 +1769,7 @@ type AuthorizationConfiguration struct { func (x *AuthorizationConfiguration) Reset() { *x = AuthorizationConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1710,7 +1781,7 @@ func (x *AuthorizationConfiguration) String() string { func (*AuthorizationConfiguration) ProtoMessage() {} func (x *AuthorizationConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1723,7 +1794,7 @@ func (x *AuthorizationConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use AuthorizationConfiguration.ProtoReflect.Descriptor instead. func (*AuthorizationConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{19} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{20} } func (x *AuthorizationConfiguration) GetRequiresAuthentication() bool { @@ -1760,7 +1831,7 @@ type FieldConfiguration struct { func (x *FieldConfiguration) Reset() { *x = FieldConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1772,7 +1843,7 @@ func (x *FieldConfiguration) String() string { func (*FieldConfiguration) ProtoMessage() {} func (x *FieldConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1785,7 +1856,7 @@ func (x *FieldConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldConfiguration.ProtoReflect.Descriptor instead. func (*FieldConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{20} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{21} } func (x *FieldConfiguration) GetTypeName() string { @@ -1833,7 +1904,7 @@ type TypeConfiguration struct { func (x *TypeConfiguration) Reset() { *x = TypeConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1845,7 +1916,7 @@ func (x *TypeConfiguration) String() string { func (*TypeConfiguration) ProtoMessage() {} func (x *TypeConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1858,7 +1929,7 @@ func (x *TypeConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeConfiguration.ProtoReflect.Descriptor instead. func (*TypeConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{21} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{22} } func (x *TypeConfiguration) GetTypeName() string { @@ -1887,7 +1958,7 @@ type TypeField struct { func (x *TypeField) Reset() { *x = TypeField{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1899,7 +1970,7 @@ func (x *TypeField) String() string { func (*TypeField) ProtoMessage() {} func (x *TypeField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1912,7 +1983,7 @@ func (x *TypeField) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeField.ProtoReflect.Descriptor instead. func (*TypeField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{22} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{23} } func (x *TypeField) GetTypeName() string { @@ -1953,7 +2024,7 @@ type FieldCoordinates struct { func (x *FieldCoordinates) Reset() { *x = FieldCoordinates{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1965,7 +2036,7 @@ func (x *FieldCoordinates) String() string { func (*FieldCoordinates) ProtoMessage() {} func (x *FieldCoordinates) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1978,7 +2049,7 @@ func (x *FieldCoordinates) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldCoordinates.ProtoReflect.Descriptor instead. func (*FieldCoordinates) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{23} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{24} } func (x *FieldCoordinates) GetFieldName() string { @@ -2005,7 +2076,7 @@ type FieldSetCondition struct { func (x *FieldSetCondition) Reset() { *x = FieldSetCondition{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2017,7 +2088,7 @@ func (x *FieldSetCondition) String() string { func (*FieldSetCondition) ProtoMessage() {} func (x *FieldSetCondition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2030,7 +2101,7 @@ func (x *FieldSetCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldSetCondition.ProtoReflect.Descriptor instead. func (*FieldSetCondition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{24} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{25} } func (x *FieldSetCondition) GetFieldCoordinatesPath() []*FieldCoordinates { @@ -2060,7 +2131,7 @@ type RequiredField struct { func (x *RequiredField) Reset() { *x = RequiredField{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2072,7 +2143,7 @@ func (x *RequiredField) String() string { func (*RequiredField) ProtoMessage() {} func (x *RequiredField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2085,7 +2156,7 @@ func (x *RequiredField) ProtoReflect() protoreflect.Message { // Deprecated: Use RequiredField.ProtoReflect.Descriptor instead. func (*RequiredField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{25} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{26} } func (x *RequiredField) GetTypeName() string { @@ -2133,7 +2204,7 @@ type EntityInterfaceConfiguration struct { func (x *EntityInterfaceConfiguration) Reset() { *x = EntityInterfaceConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2145,7 +2216,7 @@ func (x *EntityInterfaceConfiguration) String() string { func (*EntityInterfaceConfiguration) ProtoMessage() {} func (x *EntityInterfaceConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2158,7 +2229,7 @@ func (x *EntityInterfaceConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use EntityInterfaceConfiguration.ProtoReflect.Descriptor instead. func (*EntityInterfaceConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{26} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{27} } func (x *EntityInterfaceConfiguration) GetInterfaceTypeName() string { @@ -2201,7 +2272,7 @@ type FetchConfiguration struct { func (x *FetchConfiguration) Reset() { *x = FetchConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2213,7 +2284,7 @@ func (x *FetchConfiguration) String() string { func (*FetchConfiguration) ProtoMessage() {} func (x *FetchConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2226,7 +2297,7 @@ func (x *FetchConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FetchConfiguration.ProtoReflect.Descriptor instead. func (*FetchConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{27} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{28} } func (x *FetchConfiguration) GetUrl() *ConfigurationVariable { @@ -2310,7 +2381,7 @@ type StatusCodeTypeMapping struct { func (x *StatusCodeTypeMapping) Reset() { *x = StatusCodeTypeMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2322,7 +2393,7 @@ func (x *StatusCodeTypeMapping) String() string { func (*StatusCodeTypeMapping) ProtoMessage() {} func (x *StatusCodeTypeMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2335,7 +2406,7 @@ func (x *StatusCodeTypeMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use StatusCodeTypeMapping.ProtoReflect.Descriptor instead. func (*StatusCodeTypeMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{28} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{29} } func (x *StatusCodeTypeMapping) GetStatusCode() int64 { @@ -2373,7 +2444,7 @@ type DataSourceCustom_GraphQL struct { func (x *DataSourceCustom_GraphQL) Reset() { *x = DataSourceCustom_GraphQL{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2385,7 +2456,7 @@ func (x *DataSourceCustom_GraphQL) String() string { func (*DataSourceCustom_GraphQL) ProtoMessage() {} func (x *DataSourceCustom_GraphQL) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2398,7 +2469,7 @@ func (x *DataSourceCustom_GraphQL) ProtoReflect() protoreflect.Message { // Deprecated: Use DataSourceCustom_GraphQL.ProtoReflect.Descriptor instead. func (*DataSourceCustom_GraphQL) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{29} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{30} } func (x *DataSourceCustom_GraphQL) GetFetch() *FetchConfiguration { @@ -2454,7 +2525,7 @@ type GRPCConfiguration struct { func (x *GRPCConfiguration) Reset() { *x = GRPCConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2466,7 +2537,7 @@ func (x *GRPCConfiguration) String() string { func (*GRPCConfiguration) ProtoMessage() {} func (x *GRPCConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2479,7 +2550,7 @@ func (x *GRPCConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCConfiguration.ProtoReflect.Descriptor instead. func (*GRPCConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{30} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{31} } func (x *GRPCConfiguration) GetMapping() *GRPCMapping { @@ -2513,7 +2584,7 @@ type ImageReference struct { func (x *ImageReference) Reset() { *x = ImageReference{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2525,7 +2596,7 @@ func (x *ImageReference) String() string { func (*ImageReference) ProtoMessage() {} func (x *ImageReference) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2538,7 +2609,7 @@ func (x *ImageReference) ProtoReflect() protoreflect.Message { // Deprecated: Use ImageReference.ProtoReflect.Descriptor instead. func (*ImageReference) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{31} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{32} } func (x *ImageReference) GetRepository() string { @@ -2568,7 +2639,7 @@ type PluginConfiguration struct { func (x *PluginConfiguration) Reset() { *x = PluginConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2580,7 +2651,7 @@ func (x *PluginConfiguration) String() string { func (*PluginConfiguration) ProtoMessage() {} func (x *PluginConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2593,7 +2664,7 @@ func (x *PluginConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use PluginConfiguration.ProtoReflect.Descriptor instead. func (*PluginConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{32} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{33} } func (x *PluginConfiguration) GetName() string { @@ -2627,7 +2698,7 @@ type SSLConfiguration struct { func (x *SSLConfiguration) Reset() { *x = SSLConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2639,7 +2710,7 @@ func (x *SSLConfiguration) String() string { func (*SSLConfiguration) ProtoMessage() {} func (x *SSLConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2652,7 +2723,7 @@ func (x *SSLConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use SSLConfiguration.ProtoReflect.Descriptor instead. func (*SSLConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{33} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{34} } func (x *SSLConfiguration) GetEnabled() bool { @@ -2685,7 +2756,7 @@ type GRPCMapping struct { func (x *GRPCMapping) Reset() { *x = GRPCMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2697,7 +2768,7 @@ func (x *GRPCMapping) String() string { func (*GRPCMapping) ProtoMessage() {} func (x *GRPCMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2710,7 +2781,7 @@ func (x *GRPCMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCMapping.ProtoReflect.Descriptor instead. func (*GRPCMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{34} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{35} } func (x *GRPCMapping) GetVersion() int32 { @@ -2781,7 +2852,7 @@ type LookupMapping struct { func (x *LookupMapping) Reset() { *x = LookupMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2793,7 +2864,7 @@ func (x *LookupMapping) String() string { func (*LookupMapping) ProtoMessage() {} func (x *LookupMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2806,7 +2877,7 @@ func (x *LookupMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use LookupMapping.ProtoReflect.Descriptor instead. func (*LookupMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{35} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{36} } func (x *LookupMapping) GetType() LookupType { @@ -2857,7 +2928,7 @@ type LookupFieldMapping struct { func (x *LookupFieldMapping) Reset() { *x = LookupFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2869,7 +2940,7 @@ func (x *LookupFieldMapping) String() string { func (*LookupFieldMapping) ProtoMessage() {} func (x *LookupFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2882,7 +2953,7 @@ func (x *LookupFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use LookupFieldMapping.ProtoReflect.Descriptor instead. func (*LookupFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{36} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{37} } func (x *LookupFieldMapping) GetType() string { @@ -2918,7 +2989,7 @@ type OperationMapping struct { func (x *OperationMapping) Reset() { *x = OperationMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2930,7 +3001,7 @@ func (x *OperationMapping) String() string { func (*OperationMapping) ProtoMessage() {} func (x *OperationMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2943,7 +3014,7 @@ func (x *OperationMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use OperationMapping.ProtoReflect.Descriptor instead. func (*OperationMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{37} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{38} } func (x *OperationMapping) GetType() OperationType { @@ -3004,7 +3075,7 @@ type EntityMapping struct { func (x *EntityMapping) Reset() { *x = EntityMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3016,7 +3087,7 @@ func (x *EntityMapping) String() string { func (*EntityMapping) ProtoMessage() {} func (x *EntityMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3029,7 +3100,7 @@ func (x *EntityMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EntityMapping.ProtoReflect.Descriptor instead. func (*EntityMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{38} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{39} } func (x *EntityMapping) GetTypeName() string { @@ -3097,7 +3168,7 @@ type RequiredFieldMapping struct { func (x *RequiredFieldMapping) Reset() { *x = RequiredFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3109,7 +3180,7 @@ func (x *RequiredFieldMapping) String() string { func (*RequiredFieldMapping) ProtoMessage() {} func (x *RequiredFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3122,7 +3193,7 @@ func (x *RequiredFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use RequiredFieldMapping.ProtoReflect.Descriptor instead. func (*RequiredFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{39} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{40} } func (x *RequiredFieldMapping) GetFieldMapping() *FieldMapping { @@ -3166,7 +3237,7 @@ type TypeFieldMapping struct { func (x *TypeFieldMapping) Reset() { *x = TypeFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3178,7 +3249,7 @@ func (x *TypeFieldMapping) String() string { func (*TypeFieldMapping) ProtoMessage() {} func (x *TypeFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3191,7 +3262,7 @@ func (x *TypeFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeFieldMapping.ProtoReflect.Descriptor instead. func (*TypeFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{40} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{41} } func (x *TypeFieldMapping) GetType() string { @@ -3223,7 +3294,7 @@ type FieldMapping struct { func (x *FieldMapping) Reset() { *x = FieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3235,7 +3306,7 @@ func (x *FieldMapping) String() string { func (*FieldMapping) ProtoMessage() {} func (x *FieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3248,7 +3319,7 @@ func (x *FieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldMapping.ProtoReflect.Descriptor instead. func (*FieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{41} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{42} } func (x *FieldMapping) GetOriginal() string { @@ -3285,7 +3356,7 @@ type ArgumentMapping struct { func (x *ArgumentMapping) Reset() { *x = ArgumentMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3297,7 +3368,7 @@ func (x *ArgumentMapping) String() string { func (*ArgumentMapping) ProtoMessage() {} func (x *ArgumentMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3310,7 +3381,7 @@ func (x *ArgumentMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use ArgumentMapping.ProtoReflect.Descriptor instead. func (*ArgumentMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{42} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{43} } func (x *ArgumentMapping) GetOriginal() string { @@ -3337,7 +3408,7 @@ type EnumMapping struct { func (x *EnumMapping) Reset() { *x = EnumMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3349,7 +3420,7 @@ func (x *EnumMapping) String() string { func (*EnumMapping) ProtoMessage() {} func (x *EnumMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3362,7 +3433,7 @@ func (x *EnumMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EnumMapping.ProtoReflect.Descriptor instead. func (*EnumMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{43} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{44} } func (x *EnumMapping) GetType() string { @@ -3389,7 +3460,7 @@ type EnumValueMapping struct { func (x *EnumValueMapping) Reset() { *x = EnumValueMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3401,7 +3472,7 @@ func (x *EnumValueMapping) String() string { func (*EnumValueMapping) ProtoMessage() {} func (x *EnumValueMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3414,7 +3485,7 @@ func (x *EnumValueMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EnumValueMapping.ProtoReflect.Descriptor instead. func (*EnumValueMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{44} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{45} } func (x *EnumValueMapping) GetOriginal() string { @@ -3442,7 +3513,7 @@ type NatsStreamConfiguration struct { func (x *NatsStreamConfiguration) Reset() { *x = NatsStreamConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3454,7 +3525,7 @@ func (x *NatsStreamConfiguration) String() string { func (*NatsStreamConfiguration) ProtoMessage() {} func (x *NatsStreamConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3467,7 +3538,7 @@ func (x *NatsStreamConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use NatsStreamConfiguration.ProtoReflect.Descriptor instead. func (*NatsStreamConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{45} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{46} } func (x *NatsStreamConfiguration) GetConsumerName() string { @@ -3502,7 +3573,7 @@ type NatsEventConfiguration struct { func (x *NatsEventConfiguration) Reset() { *x = NatsEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3514,7 +3585,7 @@ func (x *NatsEventConfiguration) String() string { func (*NatsEventConfiguration) ProtoMessage() {} func (x *NatsEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3527,7 +3598,7 @@ func (x *NatsEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use NatsEventConfiguration.ProtoReflect.Descriptor instead. func (*NatsEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{46} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{47} } func (x *NatsEventConfiguration) GetEngineEventConfiguration() *EngineEventConfiguration { @@ -3561,7 +3632,7 @@ type KafkaEventConfiguration struct { func (x *KafkaEventConfiguration) Reset() { *x = KafkaEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3573,7 +3644,7 @@ func (x *KafkaEventConfiguration) String() string { func (*KafkaEventConfiguration) ProtoMessage() {} func (x *KafkaEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3586,7 +3657,7 @@ func (x *KafkaEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use KafkaEventConfiguration.ProtoReflect.Descriptor instead. func (*KafkaEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{47} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{48} } func (x *KafkaEventConfiguration) GetEngineEventConfiguration() *EngineEventConfiguration { @@ -3613,7 +3684,7 @@ type RedisEventConfiguration struct { func (x *RedisEventConfiguration) Reset() { *x = RedisEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3625,7 +3696,7 @@ func (x *RedisEventConfiguration) String() string { func (*RedisEventConfiguration) ProtoMessage() {} func (x *RedisEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3638,7 +3709,7 @@ func (x *RedisEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use RedisEventConfiguration.ProtoReflect.Descriptor instead. func (*RedisEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{48} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{49} } func (x *RedisEventConfiguration) GetEngineEventConfiguration() *EngineEventConfiguration { @@ -3667,7 +3738,7 @@ type EngineEventConfiguration struct { func (x *EngineEventConfiguration) Reset() { *x = EngineEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3679,7 +3750,7 @@ func (x *EngineEventConfiguration) String() string { func (*EngineEventConfiguration) ProtoMessage() {} func (x *EngineEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3692,7 +3763,7 @@ func (x *EngineEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use EngineEventConfiguration.ProtoReflect.Descriptor instead. func (*EngineEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{49} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{50} } func (x *EngineEventConfiguration) GetProviderId() string { @@ -3734,7 +3805,7 @@ type DataSourceCustomEvents struct { func (x *DataSourceCustomEvents) Reset() { *x = DataSourceCustomEvents{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3746,7 +3817,7 @@ func (x *DataSourceCustomEvents) String() string { func (*DataSourceCustomEvents) ProtoMessage() {} func (x *DataSourceCustomEvents) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3759,7 +3830,7 @@ func (x *DataSourceCustomEvents) ProtoReflect() protoreflect.Message { // Deprecated: Use DataSourceCustomEvents.ProtoReflect.Descriptor instead. func (*DataSourceCustomEvents) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{50} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{51} } func (x *DataSourceCustomEvents) GetNats() []*NatsEventConfiguration { @@ -3792,7 +3863,7 @@ type DataSourceCustom_Static struct { func (x *DataSourceCustom_Static) Reset() { *x = DataSourceCustom_Static{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3804,7 +3875,7 @@ func (x *DataSourceCustom_Static) String() string { func (*DataSourceCustom_Static) ProtoMessage() {} func (x *DataSourceCustom_Static) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3817,7 +3888,7 @@ func (x *DataSourceCustom_Static) ProtoReflect() protoreflect.Message { // Deprecated: Use DataSourceCustom_Static.ProtoReflect.Descriptor instead. func (*DataSourceCustom_Static) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{51} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{52} } func (x *DataSourceCustom_Static) GetData() *ConfigurationVariable { @@ -3840,7 +3911,7 @@ type ConfigurationVariable struct { func (x *ConfigurationVariable) Reset() { *x = ConfigurationVariable{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3852,7 +3923,7 @@ func (x *ConfigurationVariable) String() string { func (*ConfigurationVariable) ProtoMessage() {} func (x *ConfigurationVariable) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3865,7 +3936,7 @@ func (x *ConfigurationVariable) ProtoReflect() protoreflect.Message { // Deprecated: Use ConfigurationVariable.ProtoReflect.Descriptor instead. func (*ConfigurationVariable) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{52} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{53} } func (x *ConfigurationVariable) GetKind() ConfigurationVariableKind { @@ -3913,7 +3984,7 @@ type DirectiveConfiguration struct { func (x *DirectiveConfiguration) Reset() { *x = DirectiveConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3925,7 +3996,7 @@ func (x *DirectiveConfiguration) String() string { func (*DirectiveConfiguration) ProtoMessage() {} func (x *DirectiveConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3938,7 +4009,7 @@ func (x *DirectiveConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use DirectiveConfiguration.ProtoReflect.Descriptor instead. func (*DirectiveConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{53} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{54} } func (x *DirectiveConfiguration) GetDirectiveName() string { @@ -3965,7 +4036,7 @@ type URLQueryConfiguration struct { func (x *URLQueryConfiguration) Reset() { *x = URLQueryConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3977,7 +4048,7 @@ func (x *URLQueryConfiguration) String() string { func (*URLQueryConfiguration) ProtoMessage() {} func (x *URLQueryConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3990,7 +4061,7 @@ func (x *URLQueryConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use URLQueryConfiguration.ProtoReflect.Descriptor instead. func (*URLQueryConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{54} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{55} } func (x *URLQueryConfiguration) GetName() string { @@ -4016,7 +4087,7 @@ type HTTPHeader struct { func (x *HTTPHeader) Reset() { *x = HTTPHeader{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4028,7 +4099,7 @@ func (x *HTTPHeader) String() string { func (*HTTPHeader) ProtoMessage() {} func (x *HTTPHeader) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4041,7 +4112,7 @@ func (x *HTTPHeader) ProtoReflect() protoreflect.Message { // Deprecated: Use HTTPHeader.ProtoReflect.Descriptor instead. func (*HTTPHeader) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{55} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{56} } func (x *HTTPHeader) GetValues() []*ConfigurationVariable { @@ -4062,7 +4133,7 @@ type MTLSConfiguration struct { func (x *MTLSConfiguration) Reset() { *x = MTLSConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4074,7 +4145,7 @@ func (x *MTLSConfiguration) String() string { func (*MTLSConfiguration) ProtoMessage() {} func (x *MTLSConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4087,7 +4158,7 @@ func (x *MTLSConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use MTLSConfiguration.ProtoReflect.Descriptor instead. func (*MTLSConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{56} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{57} } func (x *MTLSConfiguration) GetKey() *ConfigurationVariable { @@ -4125,7 +4196,7 @@ type GraphQLSubscriptionConfiguration struct { func (x *GraphQLSubscriptionConfiguration) Reset() { *x = GraphQLSubscriptionConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4137,7 +4208,7 @@ func (x *GraphQLSubscriptionConfiguration) String() string { func (*GraphQLSubscriptionConfiguration) ProtoMessage() {} func (x *GraphQLSubscriptionConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4150,7 +4221,7 @@ func (x *GraphQLSubscriptionConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use GraphQLSubscriptionConfiguration.ProtoReflect.Descriptor instead. func (*GraphQLSubscriptionConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{57} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{58} } func (x *GraphQLSubscriptionConfiguration) GetEnabled() bool { @@ -4198,7 +4269,7 @@ type GraphQLFederationConfiguration struct { func (x *GraphQLFederationConfiguration) Reset() { *x = GraphQLFederationConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4210,7 +4281,7 @@ func (x *GraphQLFederationConfiguration) String() string { func (*GraphQLFederationConfiguration) ProtoMessage() {} func (x *GraphQLFederationConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4223,7 +4294,7 @@ func (x *GraphQLFederationConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use GraphQLFederationConfiguration.ProtoReflect.Descriptor instead. func (*GraphQLFederationConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{58} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{59} } func (x *GraphQLFederationConfiguration) GetEnabled() bool { @@ -4250,7 +4321,7 @@ type InternedString struct { func (x *InternedString) Reset() { *x = InternedString{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4262,7 +4333,7 @@ func (x *InternedString) String() string { func (*InternedString) ProtoMessage() {} func (x *InternedString) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4275,7 +4346,7 @@ func (x *InternedString) ProtoReflect() protoreflect.Message { // Deprecated: Use InternedString.ProtoReflect.Descriptor instead. func (*InternedString) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{59} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{60} } func (x *InternedString) GetKey() string { @@ -4295,7 +4366,7 @@ type SingleTypeField struct { func (x *SingleTypeField) Reset() { *x = SingleTypeField{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4307,7 +4378,7 @@ func (x *SingleTypeField) String() string { func (*SingleTypeField) ProtoMessage() {} func (x *SingleTypeField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4320,7 +4391,7 @@ func (x *SingleTypeField) ProtoReflect() protoreflect.Message { // Deprecated: Use SingleTypeField.ProtoReflect.Descriptor instead. func (*SingleTypeField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{60} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{61} } func (x *SingleTypeField) GetTypeName() string { @@ -4347,7 +4418,7 @@ type SubscriptionFieldCondition struct { func (x *SubscriptionFieldCondition) Reset() { *x = SubscriptionFieldCondition{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4359,7 +4430,7 @@ func (x *SubscriptionFieldCondition) String() string { func (*SubscriptionFieldCondition) ProtoMessage() {} func (x *SubscriptionFieldCondition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4372,7 +4443,7 @@ func (x *SubscriptionFieldCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionFieldCondition.ProtoReflect.Descriptor instead. func (*SubscriptionFieldCondition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{61} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{62} } func (x *SubscriptionFieldCondition) GetFieldPath() []string { @@ -4401,7 +4472,7 @@ type SubscriptionFilterCondition struct { func (x *SubscriptionFilterCondition) Reset() { *x = SubscriptionFilterCondition{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4413,7 +4484,7 @@ func (x *SubscriptionFilterCondition) String() string { func (*SubscriptionFilterCondition) ProtoMessage() {} func (x *SubscriptionFilterCondition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4426,7 +4497,7 @@ func (x *SubscriptionFilterCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionFilterCondition.ProtoReflect.Descriptor instead. func (*SubscriptionFilterCondition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{62} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{63} } func (x *SubscriptionFilterCondition) GetAnd() []*SubscriptionFilterCondition { @@ -4466,7 +4537,7 @@ type CacheWarmerOperations struct { func (x *CacheWarmerOperations) Reset() { *x = CacheWarmerOperations{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4478,7 +4549,7 @@ func (x *CacheWarmerOperations) String() string { func (*CacheWarmerOperations) ProtoMessage() {} func (x *CacheWarmerOperations) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4491,7 +4562,7 @@ func (x *CacheWarmerOperations) ProtoReflect() protoreflect.Message { // Deprecated: Use CacheWarmerOperations.ProtoReflect.Descriptor instead. func (*CacheWarmerOperations) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{63} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{64} } func (x *CacheWarmerOperations) GetOperations() []*Operation { @@ -4511,7 +4582,7 @@ type Operation struct { func (x *Operation) Reset() { *x = Operation{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4523,7 +4594,7 @@ func (x *Operation) String() string { func (*Operation) ProtoMessage() {} func (x *Operation) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4536,7 +4607,7 @@ func (x *Operation) ProtoReflect() protoreflect.Message { // Deprecated: Use Operation.ProtoReflect.Descriptor instead. func (*Operation) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{64} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{65} } func (x *Operation) GetRequest() *OperationRequest { @@ -4564,7 +4635,7 @@ type OperationRequest struct { func (x *OperationRequest) Reset() { *x = OperationRequest{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4576,7 +4647,7 @@ func (x *OperationRequest) String() string { func (*OperationRequest) ProtoMessage() {} func (x *OperationRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4589,7 +4660,7 @@ func (x *OperationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use OperationRequest.ProtoReflect.Descriptor instead. func (*OperationRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{65} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{66} } func (x *OperationRequest) GetOperationName() string { @@ -4622,7 +4693,7 @@ type Extension struct { func (x *Extension) Reset() { *x = Extension{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4634,7 +4705,7 @@ func (x *Extension) String() string { func (*Extension) ProtoMessage() {} func (x *Extension) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4647,7 +4718,7 @@ func (x *Extension) ProtoReflect() protoreflect.Message { // Deprecated: Use Extension.ProtoReflect.Descriptor instead. func (*Extension) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{66} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{67} } func (x *Extension) GetPersistedQuery() *PersistedQuery { @@ -4667,7 +4738,7 @@ type PersistedQuery struct { func (x *PersistedQuery) Reset() { *x = PersistedQuery{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4679,7 +4750,7 @@ func (x *PersistedQuery) String() string { func (*PersistedQuery) ProtoMessage() {} func (x *PersistedQuery) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4692,7 +4763,7 @@ func (x *PersistedQuery) ProtoReflect() protoreflect.Message { // Deprecated: Use PersistedQuery.ProtoReflect.Descriptor instead. func (*PersistedQuery) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{67} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{68} } func (x *PersistedQuery) GetSha256Hash() string { @@ -4719,7 +4790,7 @@ type ClientInfo struct { func (x *ClientInfo) Reset() { *x = ClientInfo{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4731,7 +4802,7 @@ func (x *ClientInfo) String() string { func (*ClientInfo) ProtoMessage() {} func (x *ClientInfo) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[69] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4744,7 +4815,7 @@ func (x *ClientInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ClientInfo.ProtoReflect.Descriptor instead. func (*ClientInfo) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{68} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{69} } func (x *ClientInfo) GetName() string { @@ -4839,9 +4910,10 @@ const file_wg_cosmo_node_v1_node_proto_rawDesc = "" + "\x11entity_interfaces\x18\x0e \x03(\v2..wg.cosmo.node.v1.EntityInterfaceConfigurationR\x10entityInterfaces\x12[\n" + "\x11interface_objects\x18\x0f \x03(\v2..wg.cosmo.node.v1.EntityInterfaceConfigurationR\x10interfaceObjects\x12R\n" + "\x12cost_configuration\x18\x10 \x01(\v2#.wg.cosmo.node.v1.CostConfigurationR\x11costConfiguration\x12F\n" + - "\x0eentity_caching\x18\x11 \x01(\v2\x1f.wg.cosmo.node.v1.EntityCachingR\rentityCaching\"{\n" + + "\x0eentity_caching\x18\x11 \x01(\v2\x1f.wg.cosmo.node.v1.EntityCachingR\rentityCaching\"\xf3\x01\n" + "\rEntityCaching\x12j\n" + - "\x1bentity_cache_configurations\x18\x01 \x03(\v2*.wg.cosmo.node.v1.EntityCacheConfigurationR\x19entityCacheConfigurations\"\x95\x02\n" + + "\x1bentity_cache_configurations\x18\x01 \x03(\v2*.wg.cosmo.node.v1.EntityCacheConfigurationR\x19entityCacheConfigurations\x12v\n" + + "\x1fcache_invalidate_configurations\x18\x02 \x03(\v2..wg.cosmo.node.v1.CacheInvalidateConfigurationR\x1dcacheInvalidateConfigurations\"\x95\x02\n" + "\x18EntityCacheConfiguration\x12\x1b\n" + "\ttype_name\x18\x01 \x01(\tR\btypeName\x12&\n" + "\x0fmax_age_seconds\x18\x02 \x01(\x03R\rmaxAgeSeconds\x12'\n" + @@ -4849,7 +4921,12 @@ const file_wg_cosmo_node_v1_node_proto_rawDesc = "" + "\x12partial_cache_load\x18\x04 \x01(\bR\x10partialCacheLoad\x12\x1f\n" + "\vshadow_mode\x18\x05 \x01(\bR\n" + "shadowMode\x12<\n" + - "\x1bnot_found_cache_ttl_seconds\x18\x06 \x01(\x03R\x17notFoundCacheTtlSeconds\"\x98\x04\n" + + "\x1bnot_found_cache_ttl_seconds\x18\x06 \x01(\x03R\x17notFoundCacheTtlSeconds\"\x8e\x01\n" + + "\x1cCacheInvalidateConfiguration\x12\x1d\n" + + "\n" + + "field_name\x18\x01 \x01(\tR\tfieldName\x12%\n" + + "\x0eoperation_type\x18\x02 \x01(\tR\roperationType\x12(\n" + + "\x10entity_type_name\x18\x03 \x01(\tR\x0eentityTypeName\"\x98\x04\n" + "\x11CostConfiguration\x12O\n" + "\rfield_weights\x18\x01 \x03(\v2*.wg.cosmo.node.v1.FieldWeightConfigurationR\ffieldWeights\x12K\n" + "\n" + @@ -5188,7 +5265,7 @@ func file_wg_cosmo_node_v1_node_proto_rawDescGZIP() []byte { } var file_wg_cosmo_node_v1_node_proto_enumTypes = make([]protoimpl.EnumInfo, 8) -var file_wg_cosmo_node_v1_node_proto_msgTypes = make([]protoimpl.MessageInfo, 76) +var file_wg_cosmo_node_v1_node_proto_msgTypes = make([]protoimpl.MessageInfo, 77) var file_wg_cosmo_node_v1_node_proto_goTypes = []any{ (ArgumentRenderConfiguration)(0), // 0: wg.cosmo.node.v1.ArgumentRenderConfiguration (ArgumentSource)(0), // 1: wg.cosmo.node.v1.ArgumentSource @@ -5212,182 +5289,184 @@ var file_wg_cosmo_node_v1_node_proto_goTypes = []any{ (*DataSourceConfiguration)(nil), // 19: wg.cosmo.node.v1.DataSourceConfiguration (*EntityCaching)(nil), // 20: wg.cosmo.node.v1.EntityCaching (*EntityCacheConfiguration)(nil), // 21: wg.cosmo.node.v1.EntityCacheConfiguration - (*CostConfiguration)(nil), // 22: wg.cosmo.node.v1.CostConfiguration - (*FieldWeightConfiguration)(nil), // 23: wg.cosmo.node.v1.FieldWeightConfiguration - (*FieldListSizeConfiguration)(nil), // 24: wg.cosmo.node.v1.FieldListSizeConfiguration - (*ArgumentConfiguration)(nil), // 25: wg.cosmo.node.v1.ArgumentConfiguration - (*Scopes)(nil), // 26: wg.cosmo.node.v1.Scopes - (*AuthorizationConfiguration)(nil), // 27: wg.cosmo.node.v1.AuthorizationConfiguration - (*FieldConfiguration)(nil), // 28: wg.cosmo.node.v1.FieldConfiguration - (*TypeConfiguration)(nil), // 29: wg.cosmo.node.v1.TypeConfiguration - (*TypeField)(nil), // 30: wg.cosmo.node.v1.TypeField - (*FieldCoordinates)(nil), // 31: wg.cosmo.node.v1.FieldCoordinates - (*FieldSetCondition)(nil), // 32: wg.cosmo.node.v1.FieldSetCondition - (*RequiredField)(nil), // 33: wg.cosmo.node.v1.RequiredField - (*EntityInterfaceConfiguration)(nil), // 34: wg.cosmo.node.v1.EntityInterfaceConfiguration - (*FetchConfiguration)(nil), // 35: wg.cosmo.node.v1.FetchConfiguration - (*StatusCodeTypeMapping)(nil), // 36: wg.cosmo.node.v1.StatusCodeTypeMapping - (*DataSourceCustom_GraphQL)(nil), // 37: wg.cosmo.node.v1.DataSourceCustom_GraphQL - (*GRPCConfiguration)(nil), // 38: wg.cosmo.node.v1.GRPCConfiguration - (*ImageReference)(nil), // 39: wg.cosmo.node.v1.ImageReference - (*PluginConfiguration)(nil), // 40: wg.cosmo.node.v1.PluginConfiguration - (*SSLConfiguration)(nil), // 41: wg.cosmo.node.v1.SSLConfiguration - (*GRPCMapping)(nil), // 42: wg.cosmo.node.v1.GRPCMapping - (*LookupMapping)(nil), // 43: wg.cosmo.node.v1.LookupMapping - (*LookupFieldMapping)(nil), // 44: wg.cosmo.node.v1.LookupFieldMapping - (*OperationMapping)(nil), // 45: wg.cosmo.node.v1.OperationMapping - (*EntityMapping)(nil), // 46: wg.cosmo.node.v1.EntityMapping - (*RequiredFieldMapping)(nil), // 47: wg.cosmo.node.v1.RequiredFieldMapping - (*TypeFieldMapping)(nil), // 48: wg.cosmo.node.v1.TypeFieldMapping - (*FieldMapping)(nil), // 49: wg.cosmo.node.v1.FieldMapping - (*ArgumentMapping)(nil), // 50: wg.cosmo.node.v1.ArgumentMapping - (*EnumMapping)(nil), // 51: wg.cosmo.node.v1.EnumMapping - (*EnumValueMapping)(nil), // 52: wg.cosmo.node.v1.EnumValueMapping - (*NatsStreamConfiguration)(nil), // 53: wg.cosmo.node.v1.NatsStreamConfiguration - (*NatsEventConfiguration)(nil), // 54: wg.cosmo.node.v1.NatsEventConfiguration - (*KafkaEventConfiguration)(nil), // 55: wg.cosmo.node.v1.KafkaEventConfiguration - (*RedisEventConfiguration)(nil), // 56: wg.cosmo.node.v1.RedisEventConfiguration - (*EngineEventConfiguration)(nil), // 57: wg.cosmo.node.v1.EngineEventConfiguration - (*DataSourceCustomEvents)(nil), // 58: wg.cosmo.node.v1.DataSourceCustomEvents - (*DataSourceCustom_Static)(nil), // 59: wg.cosmo.node.v1.DataSourceCustom_Static - (*ConfigurationVariable)(nil), // 60: wg.cosmo.node.v1.ConfigurationVariable - (*DirectiveConfiguration)(nil), // 61: wg.cosmo.node.v1.DirectiveConfiguration - (*URLQueryConfiguration)(nil), // 62: wg.cosmo.node.v1.URLQueryConfiguration - (*HTTPHeader)(nil), // 63: wg.cosmo.node.v1.HTTPHeader - (*MTLSConfiguration)(nil), // 64: wg.cosmo.node.v1.MTLSConfiguration - (*GraphQLSubscriptionConfiguration)(nil), // 65: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration - (*GraphQLFederationConfiguration)(nil), // 66: wg.cosmo.node.v1.GraphQLFederationConfiguration - (*InternedString)(nil), // 67: wg.cosmo.node.v1.InternedString - (*SingleTypeField)(nil), // 68: wg.cosmo.node.v1.SingleTypeField - (*SubscriptionFieldCondition)(nil), // 69: wg.cosmo.node.v1.SubscriptionFieldCondition - (*SubscriptionFilterCondition)(nil), // 70: wg.cosmo.node.v1.SubscriptionFilterCondition - (*CacheWarmerOperations)(nil), // 71: wg.cosmo.node.v1.CacheWarmerOperations - (*Operation)(nil), // 72: wg.cosmo.node.v1.Operation - (*OperationRequest)(nil), // 73: wg.cosmo.node.v1.OperationRequest - (*Extension)(nil), // 74: wg.cosmo.node.v1.Extension - (*PersistedQuery)(nil), // 75: wg.cosmo.node.v1.PersistedQuery - (*ClientInfo)(nil), // 76: wg.cosmo.node.v1.ClientInfo - nil, // 77: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry - nil, // 78: wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry - nil, // 79: wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry - nil, // 80: wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry - nil, // 81: wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry - nil, // 82: wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry - nil, // 83: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry - (common.EnumStatusCode)(0), // 84: wg.cosmo.common.EnumStatusCode - (common.GraphQLSubscriptionProtocol)(0), // 85: wg.cosmo.common.GraphQLSubscriptionProtocol - (common.GraphQLWebsocketSubprotocol)(0), // 86: wg.cosmo.common.GraphQLWebsocketSubprotocol + (*CacheInvalidateConfiguration)(nil), // 22: wg.cosmo.node.v1.CacheInvalidateConfiguration + (*CostConfiguration)(nil), // 23: wg.cosmo.node.v1.CostConfiguration + (*FieldWeightConfiguration)(nil), // 24: wg.cosmo.node.v1.FieldWeightConfiguration + (*FieldListSizeConfiguration)(nil), // 25: wg.cosmo.node.v1.FieldListSizeConfiguration + (*ArgumentConfiguration)(nil), // 26: wg.cosmo.node.v1.ArgumentConfiguration + (*Scopes)(nil), // 27: wg.cosmo.node.v1.Scopes + (*AuthorizationConfiguration)(nil), // 28: wg.cosmo.node.v1.AuthorizationConfiguration + (*FieldConfiguration)(nil), // 29: wg.cosmo.node.v1.FieldConfiguration + (*TypeConfiguration)(nil), // 30: wg.cosmo.node.v1.TypeConfiguration + (*TypeField)(nil), // 31: wg.cosmo.node.v1.TypeField + (*FieldCoordinates)(nil), // 32: wg.cosmo.node.v1.FieldCoordinates + (*FieldSetCondition)(nil), // 33: wg.cosmo.node.v1.FieldSetCondition + (*RequiredField)(nil), // 34: wg.cosmo.node.v1.RequiredField + (*EntityInterfaceConfiguration)(nil), // 35: wg.cosmo.node.v1.EntityInterfaceConfiguration + (*FetchConfiguration)(nil), // 36: wg.cosmo.node.v1.FetchConfiguration + (*StatusCodeTypeMapping)(nil), // 37: wg.cosmo.node.v1.StatusCodeTypeMapping + (*DataSourceCustom_GraphQL)(nil), // 38: wg.cosmo.node.v1.DataSourceCustom_GraphQL + (*GRPCConfiguration)(nil), // 39: wg.cosmo.node.v1.GRPCConfiguration + (*ImageReference)(nil), // 40: wg.cosmo.node.v1.ImageReference + (*PluginConfiguration)(nil), // 41: wg.cosmo.node.v1.PluginConfiguration + (*SSLConfiguration)(nil), // 42: wg.cosmo.node.v1.SSLConfiguration + (*GRPCMapping)(nil), // 43: wg.cosmo.node.v1.GRPCMapping + (*LookupMapping)(nil), // 44: wg.cosmo.node.v1.LookupMapping + (*LookupFieldMapping)(nil), // 45: wg.cosmo.node.v1.LookupFieldMapping + (*OperationMapping)(nil), // 46: wg.cosmo.node.v1.OperationMapping + (*EntityMapping)(nil), // 47: wg.cosmo.node.v1.EntityMapping + (*RequiredFieldMapping)(nil), // 48: wg.cosmo.node.v1.RequiredFieldMapping + (*TypeFieldMapping)(nil), // 49: wg.cosmo.node.v1.TypeFieldMapping + (*FieldMapping)(nil), // 50: wg.cosmo.node.v1.FieldMapping + (*ArgumentMapping)(nil), // 51: wg.cosmo.node.v1.ArgumentMapping + (*EnumMapping)(nil), // 52: wg.cosmo.node.v1.EnumMapping + (*EnumValueMapping)(nil), // 53: wg.cosmo.node.v1.EnumValueMapping + (*NatsStreamConfiguration)(nil), // 54: wg.cosmo.node.v1.NatsStreamConfiguration + (*NatsEventConfiguration)(nil), // 55: wg.cosmo.node.v1.NatsEventConfiguration + (*KafkaEventConfiguration)(nil), // 56: wg.cosmo.node.v1.KafkaEventConfiguration + (*RedisEventConfiguration)(nil), // 57: wg.cosmo.node.v1.RedisEventConfiguration + (*EngineEventConfiguration)(nil), // 58: wg.cosmo.node.v1.EngineEventConfiguration + (*DataSourceCustomEvents)(nil), // 59: wg.cosmo.node.v1.DataSourceCustomEvents + (*DataSourceCustom_Static)(nil), // 60: wg.cosmo.node.v1.DataSourceCustom_Static + (*ConfigurationVariable)(nil), // 61: wg.cosmo.node.v1.ConfigurationVariable + (*DirectiveConfiguration)(nil), // 62: wg.cosmo.node.v1.DirectiveConfiguration + (*URLQueryConfiguration)(nil), // 63: wg.cosmo.node.v1.URLQueryConfiguration + (*HTTPHeader)(nil), // 64: wg.cosmo.node.v1.HTTPHeader + (*MTLSConfiguration)(nil), // 65: wg.cosmo.node.v1.MTLSConfiguration + (*GraphQLSubscriptionConfiguration)(nil), // 66: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration + (*GraphQLFederationConfiguration)(nil), // 67: wg.cosmo.node.v1.GraphQLFederationConfiguration + (*InternedString)(nil), // 68: wg.cosmo.node.v1.InternedString + (*SingleTypeField)(nil), // 69: wg.cosmo.node.v1.SingleTypeField + (*SubscriptionFieldCondition)(nil), // 70: wg.cosmo.node.v1.SubscriptionFieldCondition + (*SubscriptionFilterCondition)(nil), // 71: wg.cosmo.node.v1.SubscriptionFilterCondition + (*CacheWarmerOperations)(nil), // 72: wg.cosmo.node.v1.CacheWarmerOperations + (*Operation)(nil), // 73: wg.cosmo.node.v1.Operation + (*OperationRequest)(nil), // 74: wg.cosmo.node.v1.OperationRequest + (*Extension)(nil), // 75: wg.cosmo.node.v1.Extension + (*PersistedQuery)(nil), // 76: wg.cosmo.node.v1.PersistedQuery + (*ClientInfo)(nil), // 77: wg.cosmo.node.v1.ClientInfo + nil, // 78: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry + nil, // 79: wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry + nil, // 80: wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry + nil, // 81: wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry + nil, // 82: wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry + nil, // 83: wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry + nil, // 84: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry + (common.EnumStatusCode)(0), // 85: wg.cosmo.common.EnumStatusCode + (common.GraphQLSubscriptionProtocol)(0), // 86: wg.cosmo.common.GraphQLSubscriptionProtocol + (common.GraphQLWebsocketSubprotocol)(0), // 87: wg.cosmo.common.GraphQLWebsocketSubprotocol } var file_wg_cosmo_node_v1_node_proto_depIdxs = []int32{ - 77, // 0: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.config_by_feature_flag_name:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry + 78, // 0: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.config_by_feature_flag_name:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry 18, // 1: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig.engine_config:type_name -> wg.cosmo.node.v1.EngineConfiguration 8, // 2: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig.subgraphs:type_name -> wg.cosmo.node.v1.Subgraph 18, // 3: wg.cosmo.node.v1.RouterConfig.engine_config:type_name -> wg.cosmo.node.v1.EngineConfiguration 8, // 4: wg.cosmo.node.v1.RouterConfig.subgraphs:type_name -> wg.cosmo.node.v1.Subgraph 9, // 5: wg.cosmo.node.v1.RouterConfig.feature_flag_configs:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs - 84, // 6: wg.cosmo.node.v1.Response.code:type_name -> wg.cosmo.common.EnumStatusCode + 85, // 6: wg.cosmo.node.v1.Response.code:type_name -> wg.cosmo.common.EnumStatusCode 15, // 7: wg.cosmo.node.v1.RegistrationInfo.account_limits:type_name -> wg.cosmo.node.v1.AccountLimits 12, // 8: wg.cosmo.node.v1.SelfRegisterResponse.response:type_name -> wg.cosmo.node.v1.Response 14, // 9: wg.cosmo.node.v1.SelfRegisterResponse.registrationInfo:type_name -> wg.cosmo.node.v1.RegistrationInfo 19, // 10: wg.cosmo.node.v1.EngineConfiguration.datasource_configurations:type_name -> wg.cosmo.node.v1.DataSourceConfiguration - 28, // 11: wg.cosmo.node.v1.EngineConfiguration.field_configurations:type_name -> wg.cosmo.node.v1.FieldConfiguration - 29, // 12: wg.cosmo.node.v1.EngineConfiguration.type_configurations:type_name -> wg.cosmo.node.v1.TypeConfiguration - 78, // 13: wg.cosmo.node.v1.EngineConfiguration.string_storage:type_name -> wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry + 29, // 11: wg.cosmo.node.v1.EngineConfiguration.field_configurations:type_name -> wg.cosmo.node.v1.FieldConfiguration + 30, // 12: wg.cosmo.node.v1.EngineConfiguration.type_configurations:type_name -> wg.cosmo.node.v1.TypeConfiguration + 79, // 13: wg.cosmo.node.v1.EngineConfiguration.string_storage:type_name -> wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry 2, // 14: wg.cosmo.node.v1.DataSourceConfiguration.kind:type_name -> wg.cosmo.node.v1.DataSourceKind - 30, // 15: wg.cosmo.node.v1.DataSourceConfiguration.root_nodes:type_name -> wg.cosmo.node.v1.TypeField - 30, // 16: wg.cosmo.node.v1.DataSourceConfiguration.child_nodes:type_name -> wg.cosmo.node.v1.TypeField - 37, // 17: wg.cosmo.node.v1.DataSourceConfiguration.custom_graphql:type_name -> wg.cosmo.node.v1.DataSourceCustom_GraphQL - 59, // 18: wg.cosmo.node.v1.DataSourceConfiguration.custom_static:type_name -> wg.cosmo.node.v1.DataSourceCustom_Static - 61, // 19: wg.cosmo.node.v1.DataSourceConfiguration.directives:type_name -> wg.cosmo.node.v1.DirectiveConfiguration - 33, // 20: wg.cosmo.node.v1.DataSourceConfiguration.keys:type_name -> wg.cosmo.node.v1.RequiredField - 33, // 21: wg.cosmo.node.v1.DataSourceConfiguration.provides:type_name -> wg.cosmo.node.v1.RequiredField - 33, // 22: wg.cosmo.node.v1.DataSourceConfiguration.requires:type_name -> wg.cosmo.node.v1.RequiredField - 58, // 23: wg.cosmo.node.v1.DataSourceConfiguration.custom_events:type_name -> wg.cosmo.node.v1.DataSourceCustomEvents - 34, // 24: wg.cosmo.node.v1.DataSourceConfiguration.entity_interfaces:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration - 34, // 25: wg.cosmo.node.v1.DataSourceConfiguration.interface_objects:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration - 22, // 26: wg.cosmo.node.v1.DataSourceConfiguration.cost_configuration:type_name -> wg.cosmo.node.v1.CostConfiguration + 31, // 15: wg.cosmo.node.v1.DataSourceConfiguration.root_nodes:type_name -> wg.cosmo.node.v1.TypeField + 31, // 16: wg.cosmo.node.v1.DataSourceConfiguration.child_nodes:type_name -> wg.cosmo.node.v1.TypeField + 38, // 17: wg.cosmo.node.v1.DataSourceConfiguration.custom_graphql:type_name -> wg.cosmo.node.v1.DataSourceCustom_GraphQL + 60, // 18: wg.cosmo.node.v1.DataSourceConfiguration.custom_static:type_name -> wg.cosmo.node.v1.DataSourceCustom_Static + 62, // 19: wg.cosmo.node.v1.DataSourceConfiguration.directives:type_name -> wg.cosmo.node.v1.DirectiveConfiguration + 34, // 20: wg.cosmo.node.v1.DataSourceConfiguration.keys:type_name -> wg.cosmo.node.v1.RequiredField + 34, // 21: wg.cosmo.node.v1.DataSourceConfiguration.provides:type_name -> wg.cosmo.node.v1.RequiredField + 34, // 22: wg.cosmo.node.v1.DataSourceConfiguration.requires:type_name -> wg.cosmo.node.v1.RequiredField + 59, // 23: wg.cosmo.node.v1.DataSourceConfiguration.custom_events:type_name -> wg.cosmo.node.v1.DataSourceCustomEvents + 35, // 24: wg.cosmo.node.v1.DataSourceConfiguration.entity_interfaces:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration + 35, // 25: wg.cosmo.node.v1.DataSourceConfiguration.interface_objects:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration + 23, // 26: wg.cosmo.node.v1.DataSourceConfiguration.cost_configuration:type_name -> wg.cosmo.node.v1.CostConfiguration 20, // 27: wg.cosmo.node.v1.DataSourceConfiguration.entity_caching:type_name -> wg.cosmo.node.v1.EntityCaching 21, // 28: wg.cosmo.node.v1.EntityCaching.entity_cache_configurations:type_name -> wg.cosmo.node.v1.EntityCacheConfiguration - 23, // 29: wg.cosmo.node.v1.CostConfiguration.field_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration - 24, // 30: wg.cosmo.node.v1.CostConfiguration.list_sizes:type_name -> wg.cosmo.node.v1.FieldListSizeConfiguration - 79, // 31: wg.cosmo.node.v1.CostConfiguration.type_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry - 80, // 32: wg.cosmo.node.v1.CostConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry - 81, // 33: wg.cosmo.node.v1.FieldWeightConfiguration.argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry - 82, // 34: wg.cosmo.node.v1.FieldWeightConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry - 1, // 35: wg.cosmo.node.v1.ArgumentConfiguration.source_type:type_name -> wg.cosmo.node.v1.ArgumentSource - 26, // 36: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes:type_name -> wg.cosmo.node.v1.Scopes - 26, // 37: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes_by_or:type_name -> wg.cosmo.node.v1.Scopes - 25, // 38: wg.cosmo.node.v1.FieldConfiguration.arguments_configuration:type_name -> wg.cosmo.node.v1.ArgumentConfiguration - 27, // 39: wg.cosmo.node.v1.FieldConfiguration.authorization_configuration:type_name -> wg.cosmo.node.v1.AuthorizationConfiguration - 70, // 40: wg.cosmo.node.v1.FieldConfiguration.subscription_filter_condition:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 31, // 41: wg.cosmo.node.v1.FieldSetCondition.field_coordinates_path:type_name -> wg.cosmo.node.v1.FieldCoordinates - 32, // 42: wg.cosmo.node.v1.RequiredField.conditions:type_name -> wg.cosmo.node.v1.FieldSetCondition - 60, // 43: wg.cosmo.node.v1.FetchConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 7, // 44: wg.cosmo.node.v1.FetchConfiguration.method:type_name -> wg.cosmo.node.v1.HTTPMethod - 83, // 45: wg.cosmo.node.v1.FetchConfiguration.header:type_name -> wg.cosmo.node.v1.FetchConfiguration.HeaderEntry - 60, // 46: wg.cosmo.node.v1.FetchConfiguration.body:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 62, // 47: wg.cosmo.node.v1.FetchConfiguration.query:type_name -> wg.cosmo.node.v1.URLQueryConfiguration - 64, // 48: wg.cosmo.node.v1.FetchConfiguration.mtls:type_name -> wg.cosmo.node.v1.MTLSConfiguration - 60, // 49: wg.cosmo.node.v1.FetchConfiguration.base_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 60, // 50: wg.cosmo.node.v1.FetchConfiguration.path:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 60, // 51: wg.cosmo.node.v1.FetchConfiguration.http_proxy_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 35, // 52: wg.cosmo.node.v1.DataSourceCustom_GraphQL.fetch:type_name -> wg.cosmo.node.v1.FetchConfiguration - 65, // 53: wg.cosmo.node.v1.DataSourceCustom_GraphQL.subscription:type_name -> wg.cosmo.node.v1.GraphQLSubscriptionConfiguration - 66, // 54: wg.cosmo.node.v1.DataSourceCustom_GraphQL.federation:type_name -> wg.cosmo.node.v1.GraphQLFederationConfiguration - 67, // 55: wg.cosmo.node.v1.DataSourceCustom_GraphQL.upstream_schema:type_name -> wg.cosmo.node.v1.InternedString - 68, // 56: wg.cosmo.node.v1.DataSourceCustom_GraphQL.custom_scalar_type_fields:type_name -> wg.cosmo.node.v1.SingleTypeField - 38, // 57: wg.cosmo.node.v1.DataSourceCustom_GraphQL.grpc:type_name -> wg.cosmo.node.v1.GRPCConfiguration - 42, // 58: wg.cosmo.node.v1.GRPCConfiguration.mapping:type_name -> wg.cosmo.node.v1.GRPCMapping - 40, // 59: wg.cosmo.node.v1.GRPCConfiguration.plugin:type_name -> wg.cosmo.node.v1.PluginConfiguration - 39, // 60: wg.cosmo.node.v1.PluginConfiguration.image_reference:type_name -> wg.cosmo.node.v1.ImageReference - 45, // 61: wg.cosmo.node.v1.GRPCMapping.operation_mappings:type_name -> wg.cosmo.node.v1.OperationMapping - 46, // 62: wg.cosmo.node.v1.GRPCMapping.entity_mappings:type_name -> wg.cosmo.node.v1.EntityMapping - 48, // 63: wg.cosmo.node.v1.GRPCMapping.type_field_mappings:type_name -> wg.cosmo.node.v1.TypeFieldMapping - 51, // 64: wg.cosmo.node.v1.GRPCMapping.enum_mappings:type_name -> wg.cosmo.node.v1.EnumMapping - 43, // 65: wg.cosmo.node.v1.GRPCMapping.resolve_mappings:type_name -> wg.cosmo.node.v1.LookupMapping - 3, // 66: wg.cosmo.node.v1.LookupMapping.type:type_name -> wg.cosmo.node.v1.LookupType - 44, // 67: wg.cosmo.node.v1.LookupMapping.lookup_mapping:type_name -> wg.cosmo.node.v1.LookupFieldMapping - 49, // 68: wg.cosmo.node.v1.LookupFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping - 4, // 69: wg.cosmo.node.v1.OperationMapping.type:type_name -> wg.cosmo.node.v1.OperationType - 47, // 70: wg.cosmo.node.v1.EntityMapping.required_field_mappings:type_name -> wg.cosmo.node.v1.RequiredFieldMapping - 49, // 71: wg.cosmo.node.v1.RequiredFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping - 49, // 72: wg.cosmo.node.v1.TypeFieldMapping.field_mappings:type_name -> wg.cosmo.node.v1.FieldMapping - 50, // 73: wg.cosmo.node.v1.FieldMapping.argument_mappings:type_name -> wg.cosmo.node.v1.ArgumentMapping - 52, // 74: wg.cosmo.node.v1.EnumMapping.values:type_name -> wg.cosmo.node.v1.EnumValueMapping - 57, // 75: wg.cosmo.node.v1.NatsEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 53, // 76: wg.cosmo.node.v1.NatsEventConfiguration.stream_configuration:type_name -> wg.cosmo.node.v1.NatsStreamConfiguration - 57, // 77: wg.cosmo.node.v1.KafkaEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 57, // 78: wg.cosmo.node.v1.RedisEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 5, // 79: wg.cosmo.node.v1.EngineEventConfiguration.type:type_name -> wg.cosmo.node.v1.EventType - 54, // 80: wg.cosmo.node.v1.DataSourceCustomEvents.nats:type_name -> wg.cosmo.node.v1.NatsEventConfiguration - 55, // 81: wg.cosmo.node.v1.DataSourceCustomEvents.kafka:type_name -> wg.cosmo.node.v1.KafkaEventConfiguration - 56, // 82: wg.cosmo.node.v1.DataSourceCustomEvents.redis:type_name -> wg.cosmo.node.v1.RedisEventConfiguration - 60, // 83: wg.cosmo.node.v1.DataSourceCustom_Static.data:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 6, // 84: wg.cosmo.node.v1.ConfigurationVariable.kind:type_name -> wg.cosmo.node.v1.ConfigurationVariableKind - 60, // 85: wg.cosmo.node.v1.HTTPHeader.values:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 60, // 86: wg.cosmo.node.v1.MTLSConfiguration.key:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 60, // 87: wg.cosmo.node.v1.MTLSConfiguration.cert:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 60, // 88: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 85, // 89: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol - 86, // 90: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.websocketSubprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol - 70, // 91: wg.cosmo.node.v1.SubscriptionFilterCondition.and:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 69, // 92: wg.cosmo.node.v1.SubscriptionFilterCondition.in:type_name -> wg.cosmo.node.v1.SubscriptionFieldCondition - 70, // 93: wg.cosmo.node.v1.SubscriptionFilterCondition.not:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 70, // 94: wg.cosmo.node.v1.SubscriptionFilterCondition.or:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 72, // 95: wg.cosmo.node.v1.CacheWarmerOperations.operations:type_name -> wg.cosmo.node.v1.Operation - 73, // 96: wg.cosmo.node.v1.Operation.request:type_name -> wg.cosmo.node.v1.OperationRequest - 76, // 97: wg.cosmo.node.v1.Operation.client:type_name -> wg.cosmo.node.v1.ClientInfo - 74, // 98: wg.cosmo.node.v1.OperationRequest.extensions:type_name -> wg.cosmo.node.v1.Extension - 75, // 99: wg.cosmo.node.v1.Extension.persisted_query:type_name -> wg.cosmo.node.v1.PersistedQuery - 10, // 100: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry.value:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig - 63, // 101: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry.value:type_name -> wg.cosmo.node.v1.HTTPHeader - 16, // 102: wg.cosmo.node.v1.NodeService.SelfRegister:input_type -> wg.cosmo.node.v1.SelfRegisterRequest - 17, // 103: wg.cosmo.node.v1.NodeService.SelfRegister:output_type -> wg.cosmo.node.v1.SelfRegisterResponse - 103, // [103:104] is the sub-list for method output_type - 102, // [102:103] is the sub-list for method input_type - 102, // [102:102] is the sub-list for extension type_name - 102, // [102:102] is the sub-list for extension extendee - 0, // [0:102] is the sub-list for field type_name + 22, // 29: wg.cosmo.node.v1.EntityCaching.cache_invalidate_configurations:type_name -> wg.cosmo.node.v1.CacheInvalidateConfiguration + 24, // 30: wg.cosmo.node.v1.CostConfiguration.field_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration + 25, // 31: wg.cosmo.node.v1.CostConfiguration.list_sizes:type_name -> wg.cosmo.node.v1.FieldListSizeConfiguration + 80, // 32: wg.cosmo.node.v1.CostConfiguration.type_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry + 81, // 33: wg.cosmo.node.v1.CostConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry + 82, // 34: wg.cosmo.node.v1.FieldWeightConfiguration.argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry + 83, // 35: wg.cosmo.node.v1.FieldWeightConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry + 1, // 36: wg.cosmo.node.v1.ArgumentConfiguration.source_type:type_name -> wg.cosmo.node.v1.ArgumentSource + 27, // 37: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes:type_name -> wg.cosmo.node.v1.Scopes + 27, // 38: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes_by_or:type_name -> wg.cosmo.node.v1.Scopes + 26, // 39: wg.cosmo.node.v1.FieldConfiguration.arguments_configuration:type_name -> wg.cosmo.node.v1.ArgumentConfiguration + 28, // 40: wg.cosmo.node.v1.FieldConfiguration.authorization_configuration:type_name -> wg.cosmo.node.v1.AuthorizationConfiguration + 71, // 41: wg.cosmo.node.v1.FieldConfiguration.subscription_filter_condition:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 32, // 42: wg.cosmo.node.v1.FieldSetCondition.field_coordinates_path:type_name -> wg.cosmo.node.v1.FieldCoordinates + 33, // 43: wg.cosmo.node.v1.RequiredField.conditions:type_name -> wg.cosmo.node.v1.FieldSetCondition + 61, // 44: wg.cosmo.node.v1.FetchConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 7, // 45: wg.cosmo.node.v1.FetchConfiguration.method:type_name -> wg.cosmo.node.v1.HTTPMethod + 84, // 46: wg.cosmo.node.v1.FetchConfiguration.header:type_name -> wg.cosmo.node.v1.FetchConfiguration.HeaderEntry + 61, // 47: wg.cosmo.node.v1.FetchConfiguration.body:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 63, // 48: wg.cosmo.node.v1.FetchConfiguration.query:type_name -> wg.cosmo.node.v1.URLQueryConfiguration + 65, // 49: wg.cosmo.node.v1.FetchConfiguration.mtls:type_name -> wg.cosmo.node.v1.MTLSConfiguration + 61, // 50: wg.cosmo.node.v1.FetchConfiguration.base_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 61, // 51: wg.cosmo.node.v1.FetchConfiguration.path:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 61, // 52: wg.cosmo.node.v1.FetchConfiguration.http_proxy_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 36, // 53: wg.cosmo.node.v1.DataSourceCustom_GraphQL.fetch:type_name -> wg.cosmo.node.v1.FetchConfiguration + 66, // 54: wg.cosmo.node.v1.DataSourceCustom_GraphQL.subscription:type_name -> wg.cosmo.node.v1.GraphQLSubscriptionConfiguration + 67, // 55: wg.cosmo.node.v1.DataSourceCustom_GraphQL.federation:type_name -> wg.cosmo.node.v1.GraphQLFederationConfiguration + 68, // 56: wg.cosmo.node.v1.DataSourceCustom_GraphQL.upstream_schema:type_name -> wg.cosmo.node.v1.InternedString + 69, // 57: wg.cosmo.node.v1.DataSourceCustom_GraphQL.custom_scalar_type_fields:type_name -> wg.cosmo.node.v1.SingleTypeField + 39, // 58: wg.cosmo.node.v1.DataSourceCustom_GraphQL.grpc:type_name -> wg.cosmo.node.v1.GRPCConfiguration + 43, // 59: wg.cosmo.node.v1.GRPCConfiguration.mapping:type_name -> wg.cosmo.node.v1.GRPCMapping + 41, // 60: wg.cosmo.node.v1.GRPCConfiguration.plugin:type_name -> wg.cosmo.node.v1.PluginConfiguration + 40, // 61: wg.cosmo.node.v1.PluginConfiguration.image_reference:type_name -> wg.cosmo.node.v1.ImageReference + 46, // 62: wg.cosmo.node.v1.GRPCMapping.operation_mappings:type_name -> wg.cosmo.node.v1.OperationMapping + 47, // 63: wg.cosmo.node.v1.GRPCMapping.entity_mappings:type_name -> wg.cosmo.node.v1.EntityMapping + 49, // 64: wg.cosmo.node.v1.GRPCMapping.type_field_mappings:type_name -> wg.cosmo.node.v1.TypeFieldMapping + 52, // 65: wg.cosmo.node.v1.GRPCMapping.enum_mappings:type_name -> wg.cosmo.node.v1.EnumMapping + 44, // 66: wg.cosmo.node.v1.GRPCMapping.resolve_mappings:type_name -> wg.cosmo.node.v1.LookupMapping + 3, // 67: wg.cosmo.node.v1.LookupMapping.type:type_name -> wg.cosmo.node.v1.LookupType + 45, // 68: wg.cosmo.node.v1.LookupMapping.lookup_mapping:type_name -> wg.cosmo.node.v1.LookupFieldMapping + 50, // 69: wg.cosmo.node.v1.LookupFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping + 4, // 70: wg.cosmo.node.v1.OperationMapping.type:type_name -> wg.cosmo.node.v1.OperationType + 48, // 71: wg.cosmo.node.v1.EntityMapping.required_field_mappings:type_name -> wg.cosmo.node.v1.RequiredFieldMapping + 50, // 72: wg.cosmo.node.v1.RequiredFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping + 50, // 73: wg.cosmo.node.v1.TypeFieldMapping.field_mappings:type_name -> wg.cosmo.node.v1.FieldMapping + 51, // 74: wg.cosmo.node.v1.FieldMapping.argument_mappings:type_name -> wg.cosmo.node.v1.ArgumentMapping + 53, // 75: wg.cosmo.node.v1.EnumMapping.values:type_name -> wg.cosmo.node.v1.EnumValueMapping + 58, // 76: wg.cosmo.node.v1.NatsEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 54, // 77: wg.cosmo.node.v1.NatsEventConfiguration.stream_configuration:type_name -> wg.cosmo.node.v1.NatsStreamConfiguration + 58, // 78: wg.cosmo.node.v1.KafkaEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 58, // 79: wg.cosmo.node.v1.RedisEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 5, // 80: wg.cosmo.node.v1.EngineEventConfiguration.type:type_name -> wg.cosmo.node.v1.EventType + 55, // 81: wg.cosmo.node.v1.DataSourceCustomEvents.nats:type_name -> wg.cosmo.node.v1.NatsEventConfiguration + 56, // 82: wg.cosmo.node.v1.DataSourceCustomEvents.kafka:type_name -> wg.cosmo.node.v1.KafkaEventConfiguration + 57, // 83: wg.cosmo.node.v1.DataSourceCustomEvents.redis:type_name -> wg.cosmo.node.v1.RedisEventConfiguration + 61, // 84: wg.cosmo.node.v1.DataSourceCustom_Static.data:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 6, // 85: wg.cosmo.node.v1.ConfigurationVariable.kind:type_name -> wg.cosmo.node.v1.ConfigurationVariableKind + 61, // 86: wg.cosmo.node.v1.HTTPHeader.values:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 61, // 87: wg.cosmo.node.v1.MTLSConfiguration.key:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 61, // 88: wg.cosmo.node.v1.MTLSConfiguration.cert:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 61, // 89: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 86, // 90: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol + 87, // 91: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.websocketSubprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol + 71, // 92: wg.cosmo.node.v1.SubscriptionFilterCondition.and:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 70, // 93: wg.cosmo.node.v1.SubscriptionFilterCondition.in:type_name -> wg.cosmo.node.v1.SubscriptionFieldCondition + 71, // 94: wg.cosmo.node.v1.SubscriptionFilterCondition.not:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 71, // 95: wg.cosmo.node.v1.SubscriptionFilterCondition.or:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 73, // 96: wg.cosmo.node.v1.CacheWarmerOperations.operations:type_name -> wg.cosmo.node.v1.Operation + 74, // 97: wg.cosmo.node.v1.Operation.request:type_name -> wg.cosmo.node.v1.OperationRequest + 77, // 98: wg.cosmo.node.v1.Operation.client:type_name -> wg.cosmo.node.v1.ClientInfo + 75, // 99: wg.cosmo.node.v1.OperationRequest.extensions:type_name -> wg.cosmo.node.v1.Extension + 76, // 100: wg.cosmo.node.v1.Extension.persisted_query:type_name -> wg.cosmo.node.v1.PersistedQuery + 10, // 101: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry.value:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig + 64, // 102: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry.value:type_name -> wg.cosmo.node.v1.HTTPHeader + 16, // 103: wg.cosmo.node.v1.NodeService.SelfRegister:input_type -> wg.cosmo.node.v1.SelfRegisterRequest + 17, // 104: wg.cosmo.node.v1.NodeService.SelfRegister:output_type -> wg.cosmo.node.v1.SelfRegisterResponse + 104, // [104:105] is the sub-list for method output_type + 103, // [103:104] is the sub-list for method input_type + 103, // [103:103] is the sub-list for extension type_name + 103, // [103:103] is the sub-list for extension extendee + 0, // [0:103] is the sub-list for field type_name } func init() { file_wg_cosmo_node_v1_node_proto_init() } @@ -5399,20 +5478,20 @@ func file_wg_cosmo_node_v1_node_proto_init() { file_wg_cosmo_node_v1_node_proto_msgTypes[4].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[9].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[10].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[15].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[16].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[20].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[27].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[32].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[57].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[62].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[17].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[21].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[28].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[33].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[58].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[63].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_wg_cosmo_node_v1_node_proto_rawDesc), len(file_wg_cosmo_node_v1_node_proto_rawDesc)), NumEnums: 8, - NumMessages: 76, + NumMessages: 77, NumExtensions: 0, NumServices: 1, }, diff --git a/connect/src/wg/cosmo/node/v1/node_pb.ts b/connect/src/wg/cosmo/node/v1/node_pb.ts index 3d538d976f..3f04573aae 100644 --- a/connect/src/wg/cosmo/node/v1/node_pb.ts +++ b/connect/src/wg/cosmo/node/v1/node_pb.ts @@ -907,6 +907,13 @@ export class EntityCaching extends Message { */ entityCacheConfigurations: EntityCacheConfiguration[] = []; + /** + * Per-Mutation/Subscription-field cache eviction configs (from @openfed__cacheInvalidate) + * + * @generated from field: repeated wg.cosmo.node.v1.CacheInvalidateConfiguration cache_invalidate_configurations = 2; + */ + cacheInvalidateConfigurations: CacheInvalidateConfiguration[] = []; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -916,6 +923,7 @@ export class EntityCaching extends Message { static readonly typeName = "wg.cosmo.node.v1.EntityCaching"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "entity_cache_configurations", kind: "message", T: EntityCacheConfiguration, repeated: true }, + { no: 2, name: "cache_invalidate_configurations", kind: "message", T: CacheInvalidateConfiguration, repeated: true }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): EntityCaching { @@ -1013,6 +1021,58 @@ export class EntityCacheConfiguration extends Message } } +/** + * Per-field declaration for @openfed__cacheInvalidate. Tells the router to evict the returned + * entity from the cache after the (Mutation/Subscription) operation completes. + * + * @generated from message wg.cosmo.node.v1.CacheInvalidateConfiguration + */ +export class CacheInvalidateConfiguration extends Message { + /** + * @generated from field: string field_name = 1; + */ + fieldName = ""; + + /** + * @generated from field: string operation_type = 2; + */ + operationType = ""; + + /** + * @generated from field: string entity_type_name = 3; + */ + entityTypeName = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.node.v1.CacheInvalidateConfiguration"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "field_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "operation_type", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "entity_type_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): CacheInvalidateConfiguration { + return new CacheInvalidateConfiguration().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): CacheInvalidateConfiguration { + return new CacheInvalidateConfiguration().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): CacheInvalidateConfiguration { + return new CacheInvalidateConfiguration().fromJsonString(jsonString, options); + } + + static equals(a: CacheInvalidateConfiguration | PlainMessage | undefined, b: CacheInvalidateConfiguration | PlainMessage | undefined): boolean { + return proto3.util.equals(CacheInvalidateConfiguration, a, b); + } +} + /** * @generated from message wg.cosmo.node.v1.CostConfiguration */ diff --git a/proto/wg/cosmo/node/v1/node.proto b/proto/wg/cosmo/node/v1/node.proto index ea3652ccf9..57e3d84473 100644 --- a/proto/wg/cosmo/node/v1/node.proto +++ b/proto/wg/cosmo/node/v1/node.proto @@ -99,6 +99,8 @@ message DataSourceConfiguration { message EntityCaching { // Per-entity cache configurations (from @openfed__entityCache directive) repeated EntityCacheConfiguration entity_cache_configurations = 1; + // Per-Mutation/Subscription-field cache eviction configs (from @openfed__cacheInvalidate) + repeated CacheInvalidateConfiguration cache_invalidate_configurations = 2; } // Per-entity declaration for @openfed__entityCache. Marks a @key entity type as cacheable so the @@ -118,6 +120,14 @@ message EntityCacheConfiguration { int64 not_found_cache_ttl_seconds = 6; } +// Per-field declaration for @openfed__cacheInvalidate. Tells the router to evict the returned +// entity from the cache after the (Mutation/Subscription) operation completes. +message CacheInvalidateConfiguration { + string field_name = 1; + string operation_type = 2; + string entity_type_name = 3; +} + message CostConfiguration { repeated FieldWeightConfiguration field_weights = 1; repeated FieldListSizeConfiguration list_sizes = 2; diff --git a/router/gen/proto/wg/cosmo/node/v1/node.pb.go b/router/gen/proto/wg/cosmo/node/v1/node.pb.go index b24242fb21..9abaddea00 100644 --- a/router/gen/proto/wg/cosmo/node/v1/node.pb.go +++ b/router/gen/proto/wg/cosmo/node/v1/node.pb.go @@ -1230,8 +1230,10 @@ type EntityCaching struct { state protoimpl.MessageState `protogen:"open.v1"` // Per-entity cache configurations (from @openfed__entityCache directive) EntityCacheConfigurations []*EntityCacheConfiguration `protobuf:"bytes,1,rep,name=entity_cache_configurations,json=entityCacheConfigurations,proto3" json:"entity_cache_configurations,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // Per-Mutation/Subscription-field cache eviction configs (from @openfed__cacheInvalidate) + CacheInvalidateConfigurations []*CacheInvalidateConfiguration `protobuf:"bytes,2,rep,name=cache_invalidate_configurations,json=cacheInvalidateConfigurations,proto3" json:"cache_invalidate_configurations,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *EntityCaching) Reset() { @@ -1271,6 +1273,13 @@ func (x *EntityCaching) GetEntityCacheConfigurations() []*EntityCacheConfigurati return nil } +func (x *EntityCaching) GetCacheInvalidateConfigurations() []*CacheInvalidateConfiguration { + if x != nil { + return x.CacheInvalidateConfigurations + } + return nil +} + // Per-entity declaration for @openfed__entityCache. Marks a @key entity type as cacheable so the // router can store/serve resolved entities from an external store (e.g. Redis). type EntityCacheConfiguration struct { @@ -1363,6 +1372,68 @@ func (x *EntityCacheConfiguration) GetNotFoundCacheTtlSeconds() int64 { return 0 } +// Per-field declaration for @openfed__cacheInvalidate. Tells the router to evict the returned +// entity from the cache after the (Mutation/Subscription) operation completes. +type CacheInvalidateConfiguration struct { + state protoimpl.MessageState `protogen:"open.v1"` + FieldName string `protobuf:"bytes,1,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` + OperationType string `protobuf:"bytes,2,opt,name=operation_type,json=operationType,proto3" json:"operation_type,omitempty"` + EntityTypeName string `protobuf:"bytes,3,opt,name=entity_type_name,json=entityTypeName,proto3" json:"entity_type_name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CacheInvalidateConfiguration) Reset() { + *x = CacheInvalidateConfiguration{} + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CacheInvalidateConfiguration) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CacheInvalidateConfiguration) ProtoMessage() {} + +func (x *CacheInvalidateConfiguration) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CacheInvalidateConfiguration.ProtoReflect.Descriptor instead. +func (*CacheInvalidateConfiguration) Descriptor() ([]byte, []int) { + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{14} +} + +func (x *CacheInvalidateConfiguration) GetFieldName() string { + if x != nil { + return x.FieldName + } + return "" +} + +func (x *CacheInvalidateConfiguration) GetOperationType() string { + if x != nil { + return x.OperationType + } + return "" +} + +func (x *CacheInvalidateConfiguration) GetEntityTypeName() string { + if x != nil { + return x.EntityTypeName + } + return "" +} + type CostConfiguration struct { state protoimpl.MessageState `protogen:"open.v1"` FieldWeights []*FieldWeightConfiguration `protobuf:"bytes,1,rep,name=field_weights,json=fieldWeights,proto3" json:"field_weights,omitempty"` @@ -1375,7 +1446,7 @@ type CostConfiguration struct { func (x *CostConfiguration) Reset() { *x = CostConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[14] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1387,7 +1458,7 @@ func (x *CostConfiguration) String() string { func (*CostConfiguration) ProtoMessage() {} func (x *CostConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[14] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1400,7 +1471,7 @@ func (x *CostConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use CostConfiguration.ProtoReflect.Descriptor instead. func (*CostConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{14} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{15} } func (x *CostConfiguration) GetFieldWeights() []*FieldWeightConfiguration { @@ -1444,7 +1515,7 @@ type FieldWeightConfiguration struct { func (x *FieldWeightConfiguration) Reset() { *x = FieldWeightConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[15] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1456,7 +1527,7 @@ func (x *FieldWeightConfiguration) String() string { func (*FieldWeightConfiguration) ProtoMessage() {} func (x *FieldWeightConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[15] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1469,7 +1540,7 @@ func (x *FieldWeightConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldWeightConfiguration.ProtoReflect.Descriptor instead. func (*FieldWeightConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{15} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{16} } func (x *FieldWeightConfiguration) GetTypeName() string { @@ -1521,7 +1592,7 @@ type FieldListSizeConfiguration struct { func (x *FieldListSizeConfiguration) Reset() { *x = FieldListSizeConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1533,7 +1604,7 @@ func (x *FieldListSizeConfiguration) String() string { func (*FieldListSizeConfiguration) ProtoMessage() {} func (x *FieldListSizeConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1546,7 +1617,7 @@ func (x *FieldListSizeConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldListSizeConfiguration.ProtoReflect.Descriptor instead. func (*FieldListSizeConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{16} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{17} } func (x *FieldListSizeConfiguration) GetTypeName() string { @@ -1601,7 +1672,7 @@ type ArgumentConfiguration struct { func (x *ArgumentConfiguration) Reset() { *x = ArgumentConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1613,7 +1684,7 @@ func (x *ArgumentConfiguration) String() string { func (*ArgumentConfiguration) ProtoMessage() {} func (x *ArgumentConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1626,7 +1697,7 @@ func (x *ArgumentConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use ArgumentConfiguration.ProtoReflect.Descriptor instead. func (*ArgumentConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{17} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{18} } func (x *ArgumentConfiguration) GetName() string { @@ -1652,7 +1723,7 @@ type Scopes struct { func (x *Scopes) Reset() { *x = Scopes{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1664,7 +1735,7 @@ func (x *Scopes) String() string { func (*Scopes) ProtoMessage() {} func (x *Scopes) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1677,7 +1748,7 @@ func (x *Scopes) ProtoReflect() protoreflect.Message { // Deprecated: Use Scopes.ProtoReflect.Descriptor instead. func (*Scopes) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{18} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{19} } func (x *Scopes) GetRequiredAndScopes() []string { @@ -1698,7 +1769,7 @@ type AuthorizationConfiguration struct { func (x *AuthorizationConfiguration) Reset() { *x = AuthorizationConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1710,7 +1781,7 @@ func (x *AuthorizationConfiguration) String() string { func (*AuthorizationConfiguration) ProtoMessage() {} func (x *AuthorizationConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1723,7 +1794,7 @@ func (x *AuthorizationConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use AuthorizationConfiguration.ProtoReflect.Descriptor instead. func (*AuthorizationConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{19} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{20} } func (x *AuthorizationConfiguration) GetRequiresAuthentication() bool { @@ -1760,7 +1831,7 @@ type FieldConfiguration struct { func (x *FieldConfiguration) Reset() { *x = FieldConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1772,7 +1843,7 @@ func (x *FieldConfiguration) String() string { func (*FieldConfiguration) ProtoMessage() {} func (x *FieldConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1785,7 +1856,7 @@ func (x *FieldConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldConfiguration.ProtoReflect.Descriptor instead. func (*FieldConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{20} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{21} } func (x *FieldConfiguration) GetTypeName() string { @@ -1833,7 +1904,7 @@ type TypeConfiguration struct { func (x *TypeConfiguration) Reset() { *x = TypeConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1845,7 +1916,7 @@ func (x *TypeConfiguration) String() string { func (*TypeConfiguration) ProtoMessage() {} func (x *TypeConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1858,7 +1929,7 @@ func (x *TypeConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeConfiguration.ProtoReflect.Descriptor instead. func (*TypeConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{21} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{22} } func (x *TypeConfiguration) GetTypeName() string { @@ -1887,7 +1958,7 @@ type TypeField struct { func (x *TypeField) Reset() { *x = TypeField{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1899,7 +1970,7 @@ func (x *TypeField) String() string { func (*TypeField) ProtoMessage() {} func (x *TypeField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1912,7 +1983,7 @@ func (x *TypeField) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeField.ProtoReflect.Descriptor instead. func (*TypeField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{22} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{23} } func (x *TypeField) GetTypeName() string { @@ -1953,7 +2024,7 @@ type FieldCoordinates struct { func (x *FieldCoordinates) Reset() { *x = FieldCoordinates{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1965,7 +2036,7 @@ func (x *FieldCoordinates) String() string { func (*FieldCoordinates) ProtoMessage() {} func (x *FieldCoordinates) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1978,7 +2049,7 @@ func (x *FieldCoordinates) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldCoordinates.ProtoReflect.Descriptor instead. func (*FieldCoordinates) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{23} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{24} } func (x *FieldCoordinates) GetFieldName() string { @@ -2005,7 +2076,7 @@ type FieldSetCondition struct { func (x *FieldSetCondition) Reset() { *x = FieldSetCondition{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2017,7 +2088,7 @@ func (x *FieldSetCondition) String() string { func (*FieldSetCondition) ProtoMessage() {} func (x *FieldSetCondition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2030,7 +2101,7 @@ func (x *FieldSetCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldSetCondition.ProtoReflect.Descriptor instead. func (*FieldSetCondition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{24} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{25} } func (x *FieldSetCondition) GetFieldCoordinatesPath() []*FieldCoordinates { @@ -2060,7 +2131,7 @@ type RequiredField struct { func (x *RequiredField) Reset() { *x = RequiredField{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2072,7 +2143,7 @@ func (x *RequiredField) String() string { func (*RequiredField) ProtoMessage() {} func (x *RequiredField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2085,7 +2156,7 @@ func (x *RequiredField) ProtoReflect() protoreflect.Message { // Deprecated: Use RequiredField.ProtoReflect.Descriptor instead. func (*RequiredField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{25} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{26} } func (x *RequiredField) GetTypeName() string { @@ -2133,7 +2204,7 @@ type EntityInterfaceConfiguration struct { func (x *EntityInterfaceConfiguration) Reset() { *x = EntityInterfaceConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2145,7 +2216,7 @@ func (x *EntityInterfaceConfiguration) String() string { func (*EntityInterfaceConfiguration) ProtoMessage() {} func (x *EntityInterfaceConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2158,7 +2229,7 @@ func (x *EntityInterfaceConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use EntityInterfaceConfiguration.ProtoReflect.Descriptor instead. func (*EntityInterfaceConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{26} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{27} } func (x *EntityInterfaceConfiguration) GetInterfaceTypeName() string { @@ -2201,7 +2272,7 @@ type FetchConfiguration struct { func (x *FetchConfiguration) Reset() { *x = FetchConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2213,7 +2284,7 @@ func (x *FetchConfiguration) String() string { func (*FetchConfiguration) ProtoMessage() {} func (x *FetchConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2226,7 +2297,7 @@ func (x *FetchConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FetchConfiguration.ProtoReflect.Descriptor instead. func (*FetchConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{27} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{28} } func (x *FetchConfiguration) GetUrl() *ConfigurationVariable { @@ -2310,7 +2381,7 @@ type StatusCodeTypeMapping struct { func (x *StatusCodeTypeMapping) Reset() { *x = StatusCodeTypeMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2322,7 +2393,7 @@ func (x *StatusCodeTypeMapping) String() string { func (*StatusCodeTypeMapping) ProtoMessage() {} func (x *StatusCodeTypeMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2335,7 +2406,7 @@ func (x *StatusCodeTypeMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use StatusCodeTypeMapping.ProtoReflect.Descriptor instead. func (*StatusCodeTypeMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{28} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{29} } func (x *StatusCodeTypeMapping) GetStatusCode() int64 { @@ -2373,7 +2444,7 @@ type DataSourceCustom_GraphQL struct { func (x *DataSourceCustom_GraphQL) Reset() { *x = DataSourceCustom_GraphQL{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2385,7 +2456,7 @@ func (x *DataSourceCustom_GraphQL) String() string { func (*DataSourceCustom_GraphQL) ProtoMessage() {} func (x *DataSourceCustom_GraphQL) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2398,7 +2469,7 @@ func (x *DataSourceCustom_GraphQL) ProtoReflect() protoreflect.Message { // Deprecated: Use DataSourceCustom_GraphQL.ProtoReflect.Descriptor instead. func (*DataSourceCustom_GraphQL) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{29} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{30} } func (x *DataSourceCustom_GraphQL) GetFetch() *FetchConfiguration { @@ -2454,7 +2525,7 @@ type GRPCConfiguration struct { func (x *GRPCConfiguration) Reset() { *x = GRPCConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2466,7 +2537,7 @@ func (x *GRPCConfiguration) String() string { func (*GRPCConfiguration) ProtoMessage() {} func (x *GRPCConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2479,7 +2550,7 @@ func (x *GRPCConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCConfiguration.ProtoReflect.Descriptor instead. func (*GRPCConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{30} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{31} } func (x *GRPCConfiguration) GetMapping() *GRPCMapping { @@ -2513,7 +2584,7 @@ type ImageReference struct { func (x *ImageReference) Reset() { *x = ImageReference{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2525,7 +2596,7 @@ func (x *ImageReference) String() string { func (*ImageReference) ProtoMessage() {} func (x *ImageReference) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2538,7 +2609,7 @@ func (x *ImageReference) ProtoReflect() protoreflect.Message { // Deprecated: Use ImageReference.ProtoReflect.Descriptor instead. func (*ImageReference) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{31} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{32} } func (x *ImageReference) GetRepository() string { @@ -2568,7 +2639,7 @@ type PluginConfiguration struct { func (x *PluginConfiguration) Reset() { *x = PluginConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2580,7 +2651,7 @@ func (x *PluginConfiguration) String() string { func (*PluginConfiguration) ProtoMessage() {} func (x *PluginConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2593,7 +2664,7 @@ func (x *PluginConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use PluginConfiguration.ProtoReflect.Descriptor instead. func (*PluginConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{32} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{33} } func (x *PluginConfiguration) GetName() string { @@ -2627,7 +2698,7 @@ type SSLConfiguration struct { func (x *SSLConfiguration) Reset() { *x = SSLConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2639,7 +2710,7 @@ func (x *SSLConfiguration) String() string { func (*SSLConfiguration) ProtoMessage() {} func (x *SSLConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2652,7 +2723,7 @@ func (x *SSLConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use SSLConfiguration.ProtoReflect.Descriptor instead. func (*SSLConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{33} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{34} } func (x *SSLConfiguration) GetEnabled() bool { @@ -2685,7 +2756,7 @@ type GRPCMapping struct { func (x *GRPCMapping) Reset() { *x = GRPCMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2697,7 +2768,7 @@ func (x *GRPCMapping) String() string { func (*GRPCMapping) ProtoMessage() {} func (x *GRPCMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2710,7 +2781,7 @@ func (x *GRPCMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCMapping.ProtoReflect.Descriptor instead. func (*GRPCMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{34} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{35} } func (x *GRPCMapping) GetVersion() int32 { @@ -2781,7 +2852,7 @@ type LookupMapping struct { func (x *LookupMapping) Reset() { *x = LookupMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2793,7 +2864,7 @@ func (x *LookupMapping) String() string { func (*LookupMapping) ProtoMessage() {} func (x *LookupMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2806,7 +2877,7 @@ func (x *LookupMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use LookupMapping.ProtoReflect.Descriptor instead. func (*LookupMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{35} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{36} } func (x *LookupMapping) GetType() LookupType { @@ -2857,7 +2928,7 @@ type LookupFieldMapping struct { func (x *LookupFieldMapping) Reset() { *x = LookupFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2869,7 +2940,7 @@ func (x *LookupFieldMapping) String() string { func (*LookupFieldMapping) ProtoMessage() {} func (x *LookupFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2882,7 +2953,7 @@ func (x *LookupFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use LookupFieldMapping.ProtoReflect.Descriptor instead. func (*LookupFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{36} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{37} } func (x *LookupFieldMapping) GetType() string { @@ -2918,7 +2989,7 @@ type OperationMapping struct { func (x *OperationMapping) Reset() { *x = OperationMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2930,7 +3001,7 @@ func (x *OperationMapping) String() string { func (*OperationMapping) ProtoMessage() {} func (x *OperationMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2943,7 +3014,7 @@ func (x *OperationMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use OperationMapping.ProtoReflect.Descriptor instead. func (*OperationMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{37} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{38} } func (x *OperationMapping) GetType() OperationType { @@ -3004,7 +3075,7 @@ type EntityMapping struct { func (x *EntityMapping) Reset() { *x = EntityMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3016,7 +3087,7 @@ func (x *EntityMapping) String() string { func (*EntityMapping) ProtoMessage() {} func (x *EntityMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3029,7 +3100,7 @@ func (x *EntityMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EntityMapping.ProtoReflect.Descriptor instead. func (*EntityMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{38} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{39} } func (x *EntityMapping) GetTypeName() string { @@ -3097,7 +3168,7 @@ type RequiredFieldMapping struct { func (x *RequiredFieldMapping) Reset() { *x = RequiredFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3109,7 +3180,7 @@ func (x *RequiredFieldMapping) String() string { func (*RequiredFieldMapping) ProtoMessage() {} func (x *RequiredFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3122,7 +3193,7 @@ func (x *RequiredFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use RequiredFieldMapping.ProtoReflect.Descriptor instead. func (*RequiredFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{39} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{40} } func (x *RequiredFieldMapping) GetFieldMapping() *FieldMapping { @@ -3166,7 +3237,7 @@ type TypeFieldMapping struct { func (x *TypeFieldMapping) Reset() { *x = TypeFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3178,7 +3249,7 @@ func (x *TypeFieldMapping) String() string { func (*TypeFieldMapping) ProtoMessage() {} func (x *TypeFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3191,7 +3262,7 @@ func (x *TypeFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeFieldMapping.ProtoReflect.Descriptor instead. func (*TypeFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{40} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{41} } func (x *TypeFieldMapping) GetType() string { @@ -3223,7 +3294,7 @@ type FieldMapping struct { func (x *FieldMapping) Reset() { *x = FieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3235,7 +3306,7 @@ func (x *FieldMapping) String() string { func (*FieldMapping) ProtoMessage() {} func (x *FieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3248,7 +3319,7 @@ func (x *FieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldMapping.ProtoReflect.Descriptor instead. func (*FieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{41} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{42} } func (x *FieldMapping) GetOriginal() string { @@ -3285,7 +3356,7 @@ type ArgumentMapping struct { func (x *ArgumentMapping) Reset() { *x = ArgumentMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3297,7 +3368,7 @@ func (x *ArgumentMapping) String() string { func (*ArgumentMapping) ProtoMessage() {} func (x *ArgumentMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3310,7 +3381,7 @@ func (x *ArgumentMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use ArgumentMapping.ProtoReflect.Descriptor instead. func (*ArgumentMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{42} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{43} } func (x *ArgumentMapping) GetOriginal() string { @@ -3337,7 +3408,7 @@ type EnumMapping struct { func (x *EnumMapping) Reset() { *x = EnumMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3349,7 +3420,7 @@ func (x *EnumMapping) String() string { func (*EnumMapping) ProtoMessage() {} func (x *EnumMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3362,7 +3433,7 @@ func (x *EnumMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EnumMapping.ProtoReflect.Descriptor instead. func (*EnumMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{43} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{44} } func (x *EnumMapping) GetType() string { @@ -3389,7 +3460,7 @@ type EnumValueMapping struct { func (x *EnumValueMapping) Reset() { *x = EnumValueMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3401,7 +3472,7 @@ func (x *EnumValueMapping) String() string { func (*EnumValueMapping) ProtoMessage() {} func (x *EnumValueMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3414,7 +3485,7 @@ func (x *EnumValueMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EnumValueMapping.ProtoReflect.Descriptor instead. func (*EnumValueMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{44} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{45} } func (x *EnumValueMapping) GetOriginal() string { @@ -3442,7 +3513,7 @@ type NatsStreamConfiguration struct { func (x *NatsStreamConfiguration) Reset() { *x = NatsStreamConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3454,7 +3525,7 @@ func (x *NatsStreamConfiguration) String() string { func (*NatsStreamConfiguration) ProtoMessage() {} func (x *NatsStreamConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3467,7 +3538,7 @@ func (x *NatsStreamConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use NatsStreamConfiguration.ProtoReflect.Descriptor instead. func (*NatsStreamConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{45} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{46} } func (x *NatsStreamConfiguration) GetConsumerName() string { @@ -3502,7 +3573,7 @@ type NatsEventConfiguration struct { func (x *NatsEventConfiguration) Reset() { *x = NatsEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3514,7 +3585,7 @@ func (x *NatsEventConfiguration) String() string { func (*NatsEventConfiguration) ProtoMessage() {} func (x *NatsEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3527,7 +3598,7 @@ func (x *NatsEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use NatsEventConfiguration.ProtoReflect.Descriptor instead. func (*NatsEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{46} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{47} } func (x *NatsEventConfiguration) GetEngineEventConfiguration() *EngineEventConfiguration { @@ -3561,7 +3632,7 @@ type KafkaEventConfiguration struct { func (x *KafkaEventConfiguration) Reset() { *x = KafkaEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3573,7 +3644,7 @@ func (x *KafkaEventConfiguration) String() string { func (*KafkaEventConfiguration) ProtoMessage() {} func (x *KafkaEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3586,7 +3657,7 @@ func (x *KafkaEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use KafkaEventConfiguration.ProtoReflect.Descriptor instead. func (*KafkaEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{47} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{48} } func (x *KafkaEventConfiguration) GetEngineEventConfiguration() *EngineEventConfiguration { @@ -3613,7 +3684,7 @@ type RedisEventConfiguration struct { func (x *RedisEventConfiguration) Reset() { *x = RedisEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3625,7 +3696,7 @@ func (x *RedisEventConfiguration) String() string { func (*RedisEventConfiguration) ProtoMessage() {} func (x *RedisEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3638,7 +3709,7 @@ func (x *RedisEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use RedisEventConfiguration.ProtoReflect.Descriptor instead. func (*RedisEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{48} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{49} } func (x *RedisEventConfiguration) GetEngineEventConfiguration() *EngineEventConfiguration { @@ -3667,7 +3738,7 @@ type EngineEventConfiguration struct { func (x *EngineEventConfiguration) Reset() { *x = EngineEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3679,7 +3750,7 @@ func (x *EngineEventConfiguration) String() string { func (*EngineEventConfiguration) ProtoMessage() {} func (x *EngineEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3692,7 +3763,7 @@ func (x *EngineEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use EngineEventConfiguration.ProtoReflect.Descriptor instead. func (*EngineEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{49} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{50} } func (x *EngineEventConfiguration) GetProviderId() string { @@ -3734,7 +3805,7 @@ type DataSourceCustomEvents struct { func (x *DataSourceCustomEvents) Reset() { *x = DataSourceCustomEvents{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3746,7 +3817,7 @@ func (x *DataSourceCustomEvents) String() string { func (*DataSourceCustomEvents) ProtoMessage() {} func (x *DataSourceCustomEvents) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3759,7 +3830,7 @@ func (x *DataSourceCustomEvents) ProtoReflect() protoreflect.Message { // Deprecated: Use DataSourceCustomEvents.ProtoReflect.Descriptor instead. func (*DataSourceCustomEvents) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{50} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{51} } func (x *DataSourceCustomEvents) GetNats() []*NatsEventConfiguration { @@ -3792,7 +3863,7 @@ type DataSourceCustom_Static struct { func (x *DataSourceCustom_Static) Reset() { *x = DataSourceCustom_Static{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3804,7 +3875,7 @@ func (x *DataSourceCustom_Static) String() string { func (*DataSourceCustom_Static) ProtoMessage() {} func (x *DataSourceCustom_Static) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3817,7 +3888,7 @@ func (x *DataSourceCustom_Static) ProtoReflect() protoreflect.Message { // Deprecated: Use DataSourceCustom_Static.ProtoReflect.Descriptor instead. func (*DataSourceCustom_Static) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{51} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{52} } func (x *DataSourceCustom_Static) GetData() *ConfigurationVariable { @@ -3840,7 +3911,7 @@ type ConfigurationVariable struct { func (x *ConfigurationVariable) Reset() { *x = ConfigurationVariable{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3852,7 +3923,7 @@ func (x *ConfigurationVariable) String() string { func (*ConfigurationVariable) ProtoMessage() {} func (x *ConfigurationVariable) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3865,7 +3936,7 @@ func (x *ConfigurationVariable) ProtoReflect() protoreflect.Message { // Deprecated: Use ConfigurationVariable.ProtoReflect.Descriptor instead. func (*ConfigurationVariable) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{52} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{53} } func (x *ConfigurationVariable) GetKind() ConfigurationVariableKind { @@ -3913,7 +3984,7 @@ type DirectiveConfiguration struct { func (x *DirectiveConfiguration) Reset() { *x = DirectiveConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3925,7 +3996,7 @@ func (x *DirectiveConfiguration) String() string { func (*DirectiveConfiguration) ProtoMessage() {} func (x *DirectiveConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3938,7 +4009,7 @@ func (x *DirectiveConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use DirectiveConfiguration.ProtoReflect.Descriptor instead. func (*DirectiveConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{53} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{54} } func (x *DirectiveConfiguration) GetDirectiveName() string { @@ -3965,7 +4036,7 @@ type URLQueryConfiguration struct { func (x *URLQueryConfiguration) Reset() { *x = URLQueryConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3977,7 +4048,7 @@ func (x *URLQueryConfiguration) String() string { func (*URLQueryConfiguration) ProtoMessage() {} func (x *URLQueryConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3990,7 +4061,7 @@ func (x *URLQueryConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use URLQueryConfiguration.ProtoReflect.Descriptor instead. func (*URLQueryConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{54} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{55} } func (x *URLQueryConfiguration) GetName() string { @@ -4016,7 +4087,7 @@ type HTTPHeader struct { func (x *HTTPHeader) Reset() { *x = HTTPHeader{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4028,7 +4099,7 @@ func (x *HTTPHeader) String() string { func (*HTTPHeader) ProtoMessage() {} func (x *HTTPHeader) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4041,7 +4112,7 @@ func (x *HTTPHeader) ProtoReflect() protoreflect.Message { // Deprecated: Use HTTPHeader.ProtoReflect.Descriptor instead. func (*HTTPHeader) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{55} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{56} } func (x *HTTPHeader) GetValues() []*ConfigurationVariable { @@ -4062,7 +4133,7 @@ type MTLSConfiguration struct { func (x *MTLSConfiguration) Reset() { *x = MTLSConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4074,7 +4145,7 @@ func (x *MTLSConfiguration) String() string { func (*MTLSConfiguration) ProtoMessage() {} func (x *MTLSConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4087,7 +4158,7 @@ func (x *MTLSConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use MTLSConfiguration.ProtoReflect.Descriptor instead. func (*MTLSConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{56} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{57} } func (x *MTLSConfiguration) GetKey() *ConfigurationVariable { @@ -4125,7 +4196,7 @@ type GraphQLSubscriptionConfiguration struct { func (x *GraphQLSubscriptionConfiguration) Reset() { *x = GraphQLSubscriptionConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4137,7 +4208,7 @@ func (x *GraphQLSubscriptionConfiguration) String() string { func (*GraphQLSubscriptionConfiguration) ProtoMessage() {} func (x *GraphQLSubscriptionConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4150,7 +4221,7 @@ func (x *GraphQLSubscriptionConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use GraphQLSubscriptionConfiguration.ProtoReflect.Descriptor instead. func (*GraphQLSubscriptionConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{57} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{58} } func (x *GraphQLSubscriptionConfiguration) GetEnabled() bool { @@ -4198,7 +4269,7 @@ type GraphQLFederationConfiguration struct { func (x *GraphQLFederationConfiguration) Reset() { *x = GraphQLFederationConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4210,7 +4281,7 @@ func (x *GraphQLFederationConfiguration) String() string { func (*GraphQLFederationConfiguration) ProtoMessage() {} func (x *GraphQLFederationConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4223,7 +4294,7 @@ func (x *GraphQLFederationConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use GraphQLFederationConfiguration.ProtoReflect.Descriptor instead. func (*GraphQLFederationConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{58} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{59} } func (x *GraphQLFederationConfiguration) GetEnabled() bool { @@ -4250,7 +4321,7 @@ type InternedString struct { func (x *InternedString) Reset() { *x = InternedString{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4262,7 +4333,7 @@ func (x *InternedString) String() string { func (*InternedString) ProtoMessage() {} func (x *InternedString) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4275,7 +4346,7 @@ func (x *InternedString) ProtoReflect() protoreflect.Message { // Deprecated: Use InternedString.ProtoReflect.Descriptor instead. func (*InternedString) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{59} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{60} } func (x *InternedString) GetKey() string { @@ -4295,7 +4366,7 @@ type SingleTypeField struct { func (x *SingleTypeField) Reset() { *x = SingleTypeField{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4307,7 +4378,7 @@ func (x *SingleTypeField) String() string { func (*SingleTypeField) ProtoMessage() {} func (x *SingleTypeField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4320,7 +4391,7 @@ func (x *SingleTypeField) ProtoReflect() protoreflect.Message { // Deprecated: Use SingleTypeField.ProtoReflect.Descriptor instead. func (*SingleTypeField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{60} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{61} } func (x *SingleTypeField) GetTypeName() string { @@ -4347,7 +4418,7 @@ type SubscriptionFieldCondition struct { func (x *SubscriptionFieldCondition) Reset() { *x = SubscriptionFieldCondition{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4359,7 +4430,7 @@ func (x *SubscriptionFieldCondition) String() string { func (*SubscriptionFieldCondition) ProtoMessage() {} func (x *SubscriptionFieldCondition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4372,7 +4443,7 @@ func (x *SubscriptionFieldCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionFieldCondition.ProtoReflect.Descriptor instead. func (*SubscriptionFieldCondition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{61} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{62} } func (x *SubscriptionFieldCondition) GetFieldPath() []string { @@ -4401,7 +4472,7 @@ type SubscriptionFilterCondition struct { func (x *SubscriptionFilterCondition) Reset() { *x = SubscriptionFilterCondition{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4413,7 +4484,7 @@ func (x *SubscriptionFilterCondition) String() string { func (*SubscriptionFilterCondition) ProtoMessage() {} func (x *SubscriptionFilterCondition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4426,7 +4497,7 @@ func (x *SubscriptionFilterCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionFilterCondition.ProtoReflect.Descriptor instead. func (*SubscriptionFilterCondition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{62} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{63} } func (x *SubscriptionFilterCondition) GetAnd() []*SubscriptionFilterCondition { @@ -4466,7 +4537,7 @@ type CacheWarmerOperations struct { func (x *CacheWarmerOperations) Reset() { *x = CacheWarmerOperations{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4478,7 +4549,7 @@ func (x *CacheWarmerOperations) String() string { func (*CacheWarmerOperations) ProtoMessage() {} func (x *CacheWarmerOperations) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4491,7 +4562,7 @@ func (x *CacheWarmerOperations) ProtoReflect() protoreflect.Message { // Deprecated: Use CacheWarmerOperations.ProtoReflect.Descriptor instead. func (*CacheWarmerOperations) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{63} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{64} } func (x *CacheWarmerOperations) GetOperations() []*Operation { @@ -4511,7 +4582,7 @@ type Operation struct { func (x *Operation) Reset() { *x = Operation{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4523,7 +4594,7 @@ func (x *Operation) String() string { func (*Operation) ProtoMessage() {} func (x *Operation) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4536,7 +4607,7 @@ func (x *Operation) ProtoReflect() protoreflect.Message { // Deprecated: Use Operation.ProtoReflect.Descriptor instead. func (*Operation) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{64} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{65} } func (x *Operation) GetRequest() *OperationRequest { @@ -4564,7 +4635,7 @@ type OperationRequest struct { func (x *OperationRequest) Reset() { *x = OperationRequest{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4576,7 +4647,7 @@ func (x *OperationRequest) String() string { func (*OperationRequest) ProtoMessage() {} func (x *OperationRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4589,7 +4660,7 @@ func (x *OperationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use OperationRequest.ProtoReflect.Descriptor instead. func (*OperationRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{65} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{66} } func (x *OperationRequest) GetOperationName() string { @@ -4622,7 +4693,7 @@ type Extension struct { func (x *Extension) Reset() { *x = Extension{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4634,7 +4705,7 @@ func (x *Extension) String() string { func (*Extension) ProtoMessage() {} func (x *Extension) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4647,7 +4718,7 @@ func (x *Extension) ProtoReflect() protoreflect.Message { // Deprecated: Use Extension.ProtoReflect.Descriptor instead. func (*Extension) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{66} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{67} } func (x *Extension) GetPersistedQuery() *PersistedQuery { @@ -4667,7 +4738,7 @@ type PersistedQuery struct { func (x *PersistedQuery) Reset() { *x = PersistedQuery{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4679,7 +4750,7 @@ func (x *PersistedQuery) String() string { func (*PersistedQuery) ProtoMessage() {} func (x *PersistedQuery) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4692,7 +4763,7 @@ func (x *PersistedQuery) ProtoReflect() protoreflect.Message { // Deprecated: Use PersistedQuery.ProtoReflect.Descriptor instead. func (*PersistedQuery) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{67} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{68} } func (x *PersistedQuery) GetSha256Hash() string { @@ -4719,7 +4790,7 @@ type ClientInfo struct { func (x *ClientInfo) Reset() { *x = ClientInfo{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4731,7 +4802,7 @@ func (x *ClientInfo) String() string { func (*ClientInfo) ProtoMessage() {} func (x *ClientInfo) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[69] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4744,7 +4815,7 @@ func (x *ClientInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ClientInfo.ProtoReflect.Descriptor instead. func (*ClientInfo) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{68} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{69} } func (x *ClientInfo) GetName() string { @@ -4839,9 +4910,10 @@ const file_wg_cosmo_node_v1_node_proto_rawDesc = "" + "\x11entity_interfaces\x18\x0e \x03(\v2..wg.cosmo.node.v1.EntityInterfaceConfigurationR\x10entityInterfaces\x12[\n" + "\x11interface_objects\x18\x0f \x03(\v2..wg.cosmo.node.v1.EntityInterfaceConfigurationR\x10interfaceObjects\x12R\n" + "\x12cost_configuration\x18\x10 \x01(\v2#.wg.cosmo.node.v1.CostConfigurationR\x11costConfiguration\x12F\n" + - "\x0eentity_caching\x18\x11 \x01(\v2\x1f.wg.cosmo.node.v1.EntityCachingR\rentityCaching\"{\n" + + "\x0eentity_caching\x18\x11 \x01(\v2\x1f.wg.cosmo.node.v1.EntityCachingR\rentityCaching\"\xf3\x01\n" + "\rEntityCaching\x12j\n" + - "\x1bentity_cache_configurations\x18\x01 \x03(\v2*.wg.cosmo.node.v1.EntityCacheConfigurationR\x19entityCacheConfigurations\"\x95\x02\n" + + "\x1bentity_cache_configurations\x18\x01 \x03(\v2*.wg.cosmo.node.v1.EntityCacheConfigurationR\x19entityCacheConfigurations\x12v\n" + + "\x1fcache_invalidate_configurations\x18\x02 \x03(\v2..wg.cosmo.node.v1.CacheInvalidateConfigurationR\x1dcacheInvalidateConfigurations\"\x95\x02\n" + "\x18EntityCacheConfiguration\x12\x1b\n" + "\ttype_name\x18\x01 \x01(\tR\btypeName\x12&\n" + "\x0fmax_age_seconds\x18\x02 \x01(\x03R\rmaxAgeSeconds\x12'\n" + @@ -4849,7 +4921,12 @@ const file_wg_cosmo_node_v1_node_proto_rawDesc = "" + "\x12partial_cache_load\x18\x04 \x01(\bR\x10partialCacheLoad\x12\x1f\n" + "\vshadow_mode\x18\x05 \x01(\bR\n" + "shadowMode\x12<\n" + - "\x1bnot_found_cache_ttl_seconds\x18\x06 \x01(\x03R\x17notFoundCacheTtlSeconds\"\x98\x04\n" + + "\x1bnot_found_cache_ttl_seconds\x18\x06 \x01(\x03R\x17notFoundCacheTtlSeconds\"\x8e\x01\n" + + "\x1cCacheInvalidateConfiguration\x12\x1d\n" + + "\n" + + "field_name\x18\x01 \x01(\tR\tfieldName\x12%\n" + + "\x0eoperation_type\x18\x02 \x01(\tR\roperationType\x12(\n" + + "\x10entity_type_name\x18\x03 \x01(\tR\x0eentityTypeName\"\x98\x04\n" + "\x11CostConfiguration\x12O\n" + "\rfield_weights\x18\x01 \x03(\v2*.wg.cosmo.node.v1.FieldWeightConfigurationR\ffieldWeights\x12K\n" + "\n" + @@ -5188,7 +5265,7 @@ func file_wg_cosmo_node_v1_node_proto_rawDescGZIP() []byte { } var file_wg_cosmo_node_v1_node_proto_enumTypes = make([]protoimpl.EnumInfo, 8) -var file_wg_cosmo_node_v1_node_proto_msgTypes = make([]protoimpl.MessageInfo, 76) +var file_wg_cosmo_node_v1_node_proto_msgTypes = make([]protoimpl.MessageInfo, 77) var file_wg_cosmo_node_v1_node_proto_goTypes = []any{ (ArgumentRenderConfiguration)(0), // 0: wg.cosmo.node.v1.ArgumentRenderConfiguration (ArgumentSource)(0), // 1: wg.cosmo.node.v1.ArgumentSource @@ -5212,182 +5289,184 @@ var file_wg_cosmo_node_v1_node_proto_goTypes = []any{ (*DataSourceConfiguration)(nil), // 19: wg.cosmo.node.v1.DataSourceConfiguration (*EntityCaching)(nil), // 20: wg.cosmo.node.v1.EntityCaching (*EntityCacheConfiguration)(nil), // 21: wg.cosmo.node.v1.EntityCacheConfiguration - (*CostConfiguration)(nil), // 22: wg.cosmo.node.v1.CostConfiguration - (*FieldWeightConfiguration)(nil), // 23: wg.cosmo.node.v1.FieldWeightConfiguration - (*FieldListSizeConfiguration)(nil), // 24: wg.cosmo.node.v1.FieldListSizeConfiguration - (*ArgumentConfiguration)(nil), // 25: wg.cosmo.node.v1.ArgumentConfiguration - (*Scopes)(nil), // 26: wg.cosmo.node.v1.Scopes - (*AuthorizationConfiguration)(nil), // 27: wg.cosmo.node.v1.AuthorizationConfiguration - (*FieldConfiguration)(nil), // 28: wg.cosmo.node.v1.FieldConfiguration - (*TypeConfiguration)(nil), // 29: wg.cosmo.node.v1.TypeConfiguration - (*TypeField)(nil), // 30: wg.cosmo.node.v1.TypeField - (*FieldCoordinates)(nil), // 31: wg.cosmo.node.v1.FieldCoordinates - (*FieldSetCondition)(nil), // 32: wg.cosmo.node.v1.FieldSetCondition - (*RequiredField)(nil), // 33: wg.cosmo.node.v1.RequiredField - (*EntityInterfaceConfiguration)(nil), // 34: wg.cosmo.node.v1.EntityInterfaceConfiguration - (*FetchConfiguration)(nil), // 35: wg.cosmo.node.v1.FetchConfiguration - (*StatusCodeTypeMapping)(nil), // 36: wg.cosmo.node.v1.StatusCodeTypeMapping - (*DataSourceCustom_GraphQL)(nil), // 37: wg.cosmo.node.v1.DataSourceCustom_GraphQL - (*GRPCConfiguration)(nil), // 38: wg.cosmo.node.v1.GRPCConfiguration - (*ImageReference)(nil), // 39: wg.cosmo.node.v1.ImageReference - (*PluginConfiguration)(nil), // 40: wg.cosmo.node.v1.PluginConfiguration - (*SSLConfiguration)(nil), // 41: wg.cosmo.node.v1.SSLConfiguration - (*GRPCMapping)(nil), // 42: wg.cosmo.node.v1.GRPCMapping - (*LookupMapping)(nil), // 43: wg.cosmo.node.v1.LookupMapping - (*LookupFieldMapping)(nil), // 44: wg.cosmo.node.v1.LookupFieldMapping - (*OperationMapping)(nil), // 45: wg.cosmo.node.v1.OperationMapping - (*EntityMapping)(nil), // 46: wg.cosmo.node.v1.EntityMapping - (*RequiredFieldMapping)(nil), // 47: wg.cosmo.node.v1.RequiredFieldMapping - (*TypeFieldMapping)(nil), // 48: wg.cosmo.node.v1.TypeFieldMapping - (*FieldMapping)(nil), // 49: wg.cosmo.node.v1.FieldMapping - (*ArgumentMapping)(nil), // 50: wg.cosmo.node.v1.ArgumentMapping - (*EnumMapping)(nil), // 51: wg.cosmo.node.v1.EnumMapping - (*EnumValueMapping)(nil), // 52: wg.cosmo.node.v1.EnumValueMapping - (*NatsStreamConfiguration)(nil), // 53: wg.cosmo.node.v1.NatsStreamConfiguration - (*NatsEventConfiguration)(nil), // 54: wg.cosmo.node.v1.NatsEventConfiguration - (*KafkaEventConfiguration)(nil), // 55: wg.cosmo.node.v1.KafkaEventConfiguration - (*RedisEventConfiguration)(nil), // 56: wg.cosmo.node.v1.RedisEventConfiguration - (*EngineEventConfiguration)(nil), // 57: wg.cosmo.node.v1.EngineEventConfiguration - (*DataSourceCustomEvents)(nil), // 58: wg.cosmo.node.v1.DataSourceCustomEvents - (*DataSourceCustom_Static)(nil), // 59: wg.cosmo.node.v1.DataSourceCustom_Static - (*ConfigurationVariable)(nil), // 60: wg.cosmo.node.v1.ConfigurationVariable - (*DirectiveConfiguration)(nil), // 61: wg.cosmo.node.v1.DirectiveConfiguration - (*URLQueryConfiguration)(nil), // 62: wg.cosmo.node.v1.URLQueryConfiguration - (*HTTPHeader)(nil), // 63: wg.cosmo.node.v1.HTTPHeader - (*MTLSConfiguration)(nil), // 64: wg.cosmo.node.v1.MTLSConfiguration - (*GraphQLSubscriptionConfiguration)(nil), // 65: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration - (*GraphQLFederationConfiguration)(nil), // 66: wg.cosmo.node.v1.GraphQLFederationConfiguration - (*InternedString)(nil), // 67: wg.cosmo.node.v1.InternedString - (*SingleTypeField)(nil), // 68: wg.cosmo.node.v1.SingleTypeField - (*SubscriptionFieldCondition)(nil), // 69: wg.cosmo.node.v1.SubscriptionFieldCondition - (*SubscriptionFilterCondition)(nil), // 70: wg.cosmo.node.v1.SubscriptionFilterCondition - (*CacheWarmerOperations)(nil), // 71: wg.cosmo.node.v1.CacheWarmerOperations - (*Operation)(nil), // 72: wg.cosmo.node.v1.Operation - (*OperationRequest)(nil), // 73: wg.cosmo.node.v1.OperationRequest - (*Extension)(nil), // 74: wg.cosmo.node.v1.Extension - (*PersistedQuery)(nil), // 75: wg.cosmo.node.v1.PersistedQuery - (*ClientInfo)(nil), // 76: wg.cosmo.node.v1.ClientInfo - nil, // 77: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry - nil, // 78: wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry - nil, // 79: wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry - nil, // 80: wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry - nil, // 81: wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry - nil, // 82: wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry - nil, // 83: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry - (common.EnumStatusCode)(0), // 84: wg.cosmo.common.EnumStatusCode - (common.GraphQLSubscriptionProtocol)(0), // 85: wg.cosmo.common.GraphQLSubscriptionProtocol - (common.GraphQLWebsocketSubprotocol)(0), // 86: wg.cosmo.common.GraphQLWebsocketSubprotocol + (*CacheInvalidateConfiguration)(nil), // 22: wg.cosmo.node.v1.CacheInvalidateConfiguration + (*CostConfiguration)(nil), // 23: wg.cosmo.node.v1.CostConfiguration + (*FieldWeightConfiguration)(nil), // 24: wg.cosmo.node.v1.FieldWeightConfiguration + (*FieldListSizeConfiguration)(nil), // 25: wg.cosmo.node.v1.FieldListSizeConfiguration + (*ArgumentConfiguration)(nil), // 26: wg.cosmo.node.v1.ArgumentConfiguration + (*Scopes)(nil), // 27: wg.cosmo.node.v1.Scopes + (*AuthorizationConfiguration)(nil), // 28: wg.cosmo.node.v1.AuthorizationConfiguration + (*FieldConfiguration)(nil), // 29: wg.cosmo.node.v1.FieldConfiguration + (*TypeConfiguration)(nil), // 30: wg.cosmo.node.v1.TypeConfiguration + (*TypeField)(nil), // 31: wg.cosmo.node.v1.TypeField + (*FieldCoordinates)(nil), // 32: wg.cosmo.node.v1.FieldCoordinates + (*FieldSetCondition)(nil), // 33: wg.cosmo.node.v1.FieldSetCondition + (*RequiredField)(nil), // 34: wg.cosmo.node.v1.RequiredField + (*EntityInterfaceConfiguration)(nil), // 35: wg.cosmo.node.v1.EntityInterfaceConfiguration + (*FetchConfiguration)(nil), // 36: wg.cosmo.node.v1.FetchConfiguration + (*StatusCodeTypeMapping)(nil), // 37: wg.cosmo.node.v1.StatusCodeTypeMapping + (*DataSourceCustom_GraphQL)(nil), // 38: wg.cosmo.node.v1.DataSourceCustom_GraphQL + (*GRPCConfiguration)(nil), // 39: wg.cosmo.node.v1.GRPCConfiguration + (*ImageReference)(nil), // 40: wg.cosmo.node.v1.ImageReference + (*PluginConfiguration)(nil), // 41: wg.cosmo.node.v1.PluginConfiguration + (*SSLConfiguration)(nil), // 42: wg.cosmo.node.v1.SSLConfiguration + (*GRPCMapping)(nil), // 43: wg.cosmo.node.v1.GRPCMapping + (*LookupMapping)(nil), // 44: wg.cosmo.node.v1.LookupMapping + (*LookupFieldMapping)(nil), // 45: wg.cosmo.node.v1.LookupFieldMapping + (*OperationMapping)(nil), // 46: wg.cosmo.node.v1.OperationMapping + (*EntityMapping)(nil), // 47: wg.cosmo.node.v1.EntityMapping + (*RequiredFieldMapping)(nil), // 48: wg.cosmo.node.v1.RequiredFieldMapping + (*TypeFieldMapping)(nil), // 49: wg.cosmo.node.v1.TypeFieldMapping + (*FieldMapping)(nil), // 50: wg.cosmo.node.v1.FieldMapping + (*ArgumentMapping)(nil), // 51: wg.cosmo.node.v1.ArgumentMapping + (*EnumMapping)(nil), // 52: wg.cosmo.node.v1.EnumMapping + (*EnumValueMapping)(nil), // 53: wg.cosmo.node.v1.EnumValueMapping + (*NatsStreamConfiguration)(nil), // 54: wg.cosmo.node.v1.NatsStreamConfiguration + (*NatsEventConfiguration)(nil), // 55: wg.cosmo.node.v1.NatsEventConfiguration + (*KafkaEventConfiguration)(nil), // 56: wg.cosmo.node.v1.KafkaEventConfiguration + (*RedisEventConfiguration)(nil), // 57: wg.cosmo.node.v1.RedisEventConfiguration + (*EngineEventConfiguration)(nil), // 58: wg.cosmo.node.v1.EngineEventConfiguration + (*DataSourceCustomEvents)(nil), // 59: wg.cosmo.node.v1.DataSourceCustomEvents + (*DataSourceCustom_Static)(nil), // 60: wg.cosmo.node.v1.DataSourceCustom_Static + (*ConfigurationVariable)(nil), // 61: wg.cosmo.node.v1.ConfigurationVariable + (*DirectiveConfiguration)(nil), // 62: wg.cosmo.node.v1.DirectiveConfiguration + (*URLQueryConfiguration)(nil), // 63: wg.cosmo.node.v1.URLQueryConfiguration + (*HTTPHeader)(nil), // 64: wg.cosmo.node.v1.HTTPHeader + (*MTLSConfiguration)(nil), // 65: wg.cosmo.node.v1.MTLSConfiguration + (*GraphQLSubscriptionConfiguration)(nil), // 66: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration + (*GraphQLFederationConfiguration)(nil), // 67: wg.cosmo.node.v1.GraphQLFederationConfiguration + (*InternedString)(nil), // 68: wg.cosmo.node.v1.InternedString + (*SingleTypeField)(nil), // 69: wg.cosmo.node.v1.SingleTypeField + (*SubscriptionFieldCondition)(nil), // 70: wg.cosmo.node.v1.SubscriptionFieldCondition + (*SubscriptionFilterCondition)(nil), // 71: wg.cosmo.node.v1.SubscriptionFilterCondition + (*CacheWarmerOperations)(nil), // 72: wg.cosmo.node.v1.CacheWarmerOperations + (*Operation)(nil), // 73: wg.cosmo.node.v1.Operation + (*OperationRequest)(nil), // 74: wg.cosmo.node.v1.OperationRequest + (*Extension)(nil), // 75: wg.cosmo.node.v1.Extension + (*PersistedQuery)(nil), // 76: wg.cosmo.node.v1.PersistedQuery + (*ClientInfo)(nil), // 77: wg.cosmo.node.v1.ClientInfo + nil, // 78: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry + nil, // 79: wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry + nil, // 80: wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry + nil, // 81: wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry + nil, // 82: wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry + nil, // 83: wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry + nil, // 84: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry + (common.EnumStatusCode)(0), // 85: wg.cosmo.common.EnumStatusCode + (common.GraphQLSubscriptionProtocol)(0), // 86: wg.cosmo.common.GraphQLSubscriptionProtocol + (common.GraphQLWebsocketSubprotocol)(0), // 87: wg.cosmo.common.GraphQLWebsocketSubprotocol } var file_wg_cosmo_node_v1_node_proto_depIdxs = []int32{ - 77, // 0: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.config_by_feature_flag_name:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry + 78, // 0: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.config_by_feature_flag_name:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry 18, // 1: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig.engine_config:type_name -> wg.cosmo.node.v1.EngineConfiguration 8, // 2: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig.subgraphs:type_name -> wg.cosmo.node.v1.Subgraph 18, // 3: wg.cosmo.node.v1.RouterConfig.engine_config:type_name -> wg.cosmo.node.v1.EngineConfiguration 8, // 4: wg.cosmo.node.v1.RouterConfig.subgraphs:type_name -> wg.cosmo.node.v1.Subgraph 9, // 5: wg.cosmo.node.v1.RouterConfig.feature_flag_configs:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs - 84, // 6: wg.cosmo.node.v1.Response.code:type_name -> wg.cosmo.common.EnumStatusCode + 85, // 6: wg.cosmo.node.v1.Response.code:type_name -> wg.cosmo.common.EnumStatusCode 15, // 7: wg.cosmo.node.v1.RegistrationInfo.account_limits:type_name -> wg.cosmo.node.v1.AccountLimits 12, // 8: wg.cosmo.node.v1.SelfRegisterResponse.response:type_name -> wg.cosmo.node.v1.Response 14, // 9: wg.cosmo.node.v1.SelfRegisterResponse.registrationInfo:type_name -> wg.cosmo.node.v1.RegistrationInfo 19, // 10: wg.cosmo.node.v1.EngineConfiguration.datasource_configurations:type_name -> wg.cosmo.node.v1.DataSourceConfiguration - 28, // 11: wg.cosmo.node.v1.EngineConfiguration.field_configurations:type_name -> wg.cosmo.node.v1.FieldConfiguration - 29, // 12: wg.cosmo.node.v1.EngineConfiguration.type_configurations:type_name -> wg.cosmo.node.v1.TypeConfiguration - 78, // 13: wg.cosmo.node.v1.EngineConfiguration.string_storage:type_name -> wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry + 29, // 11: wg.cosmo.node.v1.EngineConfiguration.field_configurations:type_name -> wg.cosmo.node.v1.FieldConfiguration + 30, // 12: wg.cosmo.node.v1.EngineConfiguration.type_configurations:type_name -> wg.cosmo.node.v1.TypeConfiguration + 79, // 13: wg.cosmo.node.v1.EngineConfiguration.string_storage:type_name -> wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry 2, // 14: wg.cosmo.node.v1.DataSourceConfiguration.kind:type_name -> wg.cosmo.node.v1.DataSourceKind - 30, // 15: wg.cosmo.node.v1.DataSourceConfiguration.root_nodes:type_name -> wg.cosmo.node.v1.TypeField - 30, // 16: wg.cosmo.node.v1.DataSourceConfiguration.child_nodes:type_name -> wg.cosmo.node.v1.TypeField - 37, // 17: wg.cosmo.node.v1.DataSourceConfiguration.custom_graphql:type_name -> wg.cosmo.node.v1.DataSourceCustom_GraphQL - 59, // 18: wg.cosmo.node.v1.DataSourceConfiguration.custom_static:type_name -> wg.cosmo.node.v1.DataSourceCustom_Static - 61, // 19: wg.cosmo.node.v1.DataSourceConfiguration.directives:type_name -> wg.cosmo.node.v1.DirectiveConfiguration - 33, // 20: wg.cosmo.node.v1.DataSourceConfiguration.keys:type_name -> wg.cosmo.node.v1.RequiredField - 33, // 21: wg.cosmo.node.v1.DataSourceConfiguration.provides:type_name -> wg.cosmo.node.v1.RequiredField - 33, // 22: wg.cosmo.node.v1.DataSourceConfiguration.requires:type_name -> wg.cosmo.node.v1.RequiredField - 58, // 23: wg.cosmo.node.v1.DataSourceConfiguration.custom_events:type_name -> wg.cosmo.node.v1.DataSourceCustomEvents - 34, // 24: wg.cosmo.node.v1.DataSourceConfiguration.entity_interfaces:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration - 34, // 25: wg.cosmo.node.v1.DataSourceConfiguration.interface_objects:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration - 22, // 26: wg.cosmo.node.v1.DataSourceConfiguration.cost_configuration:type_name -> wg.cosmo.node.v1.CostConfiguration + 31, // 15: wg.cosmo.node.v1.DataSourceConfiguration.root_nodes:type_name -> wg.cosmo.node.v1.TypeField + 31, // 16: wg.cosmo.node.v1.DataSourceConfiguration.child_nodes:type_name -> wg.cosmo.node.v1.TypeField + 38, // 17: wg.cosmo.node.v1.DataSourceConfiguration.custom_graphql:type_name -> wg.cosmo.node.v1.DataSourceCustom_GraphQL + 60, // 18: wg.cosmo.node.v1.DataSourceConfiguration.custom_static:type_name -> wg.cosmo.node.v1.DataSourceCustom_Static + 62, // 19: wg.cosmo.node.v1.DataSourceConfiguration.directives:type_name -> wg.cosmo.node.v1.DirectiveConfiguration + 34, // 20: wg.cosmo.node.v1.DataSourceConfiguration.keys:type_name -> wg.cosmo.node.v1.RequiredField + 34, // 21: wg.cosmo.node.v1.DataSourceConfiguration.provides:type_name -> wg.cosmo.node.v1.RequiredField + 34, // 22: wg.cosmo.node.v1.DataSourceConfiguration.requires:type_name -> wg.cosmo.node.v1.RequiredField + 59, // 23: wg.cosmo.node.v1.DataSourceConfiguration.custom_events:type_name -> wg.cosmo.node.v1.DataSourceCustomEvents + 35, // 24: wg.cosmo.node.v1.DataSourceConfiguration.entity_interfaces:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration + 35, // 25: wg.cosmo.node.v1.DataSourceConfiguration.interface_objects:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration + 23, // 26: wg.cosmo.node.v1.DataSourceConfiguration.cost_configuration:type_name -> wg.cosmo.node.v1.CostConfiguration 20, // 27: wg.cosmo.node.v1.DataSourceConfiguration.entity_caching:type_name -> wg.cosmo.node.v1.EntityCaching 21, // 28: wg.cosmo.node.v1.EntityCaching.entity_cache_configurations:type_name -> wg.cosmo.node.v1.EntityCacheConfiguration - 23, // 29: wg.cosmo.node.v1.CostConfiguration.field_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration - 24, // 30: wg.cosmo.node.v1.CostConfiguration.list_sizes:type_name -> wg.cosmo.node.v1.FieldListSizeConfiguration - 79, // 31: wg.cosmo.node.v1.CostConfiguration.type_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry - 80, // 32: wg.cosmo.node.v1.CostConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry - 81, // 33: wg.cosmo.node.v1.FieldWeightConfiguration.argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry - 82, // 34: wg.cosmo.node.v1.FieldWeightConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry - 1, // 35: wg.cosmo.node.v1.ArgumentConfiguration.source_type:type_name -> wg.cosmo.node.v1.ArgumentSource - 26, // 36: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes:type_name -> wg.cosmo.node.v1.Scopes - 26, // 37: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes_by_or:type_name -> wg.cosmo.node.v1.Scopes - 25, // 38: wg.cosmo.node.v1.FieldConfiguration.arguments_configuration:type_name -> wg.cosmo.node.v1.ArgumentConfiguration - 27, // 39: wg.cosmo.node.v1.FieldConfiguration.authorization_configuration:type_name -> wg.cosmo.node.v1.AuthorizationConfiguration - 70, // 40: wg.cosmo.node.v1.FieldConfiguration.subscription_filter_condition:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 31, // 41: wg.cosmo.node.v1.FieldSetCondition.field_coordinates_path:type_name -> wg.cosmo.node.v1.FieldCoordinates - 32, // 42: wg.cosmo.node.v1.RequiredField.conditions:type_name -> wg.cosmo.node.v1.FieldSetCondition - 60, // 43: wg.cosmo.node.v1.FetchConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 7, // 44: wg.cosmo.node.v1.FetchConfiguration.method:type_name -> wg.cosmo.node.v1.HTTPMethod - 83, // 45: wg.cosmo.node.v1.FetchConfiguration.header:type_name -> wg.cosmo.node.v1.FetchConfiguration.HeaderEntry - 60, // 46: wg.cosmo.node.v1.FetchConfiguration.body:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 62, // 47: wg.cosmo.node.v1.FetchConfiguration.query:type_name -> wg.cosmo.node.v1.URLQueryConfiguration - 64, // 48: wg.cosmo.node.v1.FetchConfiguration.mtls:type_name -> wg.cosmo.node.v1.MTLSConfiguration - 60, // 49: wg.cosmo.node.v1.FetchConfiguration.base_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 60, // 50: wg.cosmo.node.v1.FetchConfiguration.path:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 60, // 51: wg.cosmo.node.v1.FetchConfiguration.http_proxy_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 35, // 52: wg.cosmo.node.v1.DataSourceCustom_GraphQL.fetch:type_name -> wg.cosmo.node.v1.FetchConfiguration - 65, // 53: wg.cosmo.node.v1.DataSourceCustom_GraphQL.subscription:type_name -> wg.cosmo.node.v1.GraphQLSubscriptionConfiguration - 66, // 54: wg.cosmo.node.v1.DataSourceCustom_GraphQL.federation:type_name -> wg.cosmo.node.v1.GraphQLFederationConfiguration - 67, // 55: wg.cosmo.node.v1.DataSourceCustom_GraphQL.upstream_schema:type_name -> wg.cosmo.node.v1.InternedString - 68, // 56: wg.cosmo.node.v1.DataSourceCustom_GraphQL.custom_scalar_type_fields:type_name -> wg.cosmo.node.v1.SingleTypeField - 38, // 57: wg.cosmo.node.v1.DataSourceCustom_GraphQL.grpc:type_name -> wg.cosmo.node.v1.GRPCConfiguration - 42, // 58: wg.cosmo.node.v1.GRPCConfiguration.mapping:type_name -> wg.cosmo.node.v1.GRPCMapping - 40, // 59: wg.cosmo.node.v1.GRPCConfiguration.plugin:type_name -> wg.cosmo.node.v1.PluginConfiguration - 39, // 60: wg.cosmo.node.v1.PluginConfiguration.image_reference:type_name -> wg.cosmo.node.v1.ImageReference - 45, // 61: wg.cosmo.node.v1.GRPCMapping.operation_mappings:type_name -> wg.cosmo.node.v1.OperationMapping - 46, // 62: wg.cosmo.node.v1.GRPCMapping.entity_mappings:type_name -> wg.cosmo.node.v1.EntityMapping - 48, // 63: wg.cosmo.node.v1.GRPCMapping.type_field_mappings:type_name -> wg.cosmo.node.v1.TypeFieldMapping - 51, // 64: wg.cosmo.node.v1.GRPCMapping.enum_mappings:type_name -> wg.cosmo.node.v1.EnumMapping - 43, // 65: wg.cosmo.node.v1.GRPCMapping.resolve_mappings:type_name -> wg.cosmo.node.v1.LookupMapping - 3, // 66: wg.cosmo.node.v1.LookupMapping.type:type_name -> wg.cosmo.node.v1.LookupType - 44, // 67: wg.cosmo.node.v1.LookupMapping.lookup_mapping:type_name -> wg.cosmo.node.v1.LookupFieldMapping - 49, // 68: wg.cosmo.node.v1.LookupFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping - 4, // 69: wg.cosmo.node.v1.OperationMapping.type:type_name -> wg.cosmo.node.v1.OperationType - 47, // 70: wg.cosmo.node.v1.EntityMapping.required_field_mappings:type_name -> wg.cosmo.node.v1.RequiredFieldMapping - 49, // 71: wg.cosmo.node.v1.RequiredFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping - 49, // 72: wg.cosmo.node.v1.TypeFieldMapping.field_mappings:type_name -> wg.cosmo.node.v1.FieldMapping - 50, // 73: wg.cosmo.node.v1.FieldMapping.argument_mappings:type_name -> wg.cosmo.node.v1.ArgumentMapping - 52, // 74: wg.cosmo.node.v1.EnumMapping.values:type_name -> wg.cosmo.node.v1.EnumValueMapping - 57, // 75: wg.cosmo.node.v1.NatsEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 53, // 76: wg.cosmo.node.v1.NatsEventConfiguration.stream_configuration:type_name -> wg.cosmo.node.v1.NatsStreamConfiguration - 57, // 77: wg.cosmo.node.v1.KafkaEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 57, // 78: wg.cosmo.node.v1.RedisEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 5, // 79: wg.cosmo.node.v1.EngineEventConfiguration.type:type_name -> wg.cosmo.node.v1.EventType - 54, // 80: wg.cosmo.node.v1.DataSourceCustomEvents.nats:type_name -> wg.cosmo.node.v1.NatsEventConfiguration - 55, // 81: wg.cosmo.node.v1.DataSourceCustomEvents.kafka:type_name -> wg.cosmo.node.v1.KafkaEventConfiguration - 56, // 82: wg.cosmo.node.v1.DataSourceCustomEvents.redis:type_name -> wg.cosmo.node.v1.RedisEventConfiguration - 60, // 83: wg.cosmo.node.v1.DataSourceCustom_Static.data:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 6, // 84: wg.cosmo.node.v1.ConfigurationVariable.kind:type_name -> wg.cosmo.node.v1.ConfigurationVariableKind - 60, // 85: wg.cosmo.node.v1.HTTPHeader.values:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 60, // 86: wg.cosmo.node.v1.MTLSConfiguration.key:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 60, // 87: wg.cosmo.node.v1.MTLSConfiguration.cert:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 60, // 88: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 85, // 89: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol - 86, // 90: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.websocketSubprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol - 70, // 91: wg.cosmo.node.v1.SubscriptionFilterCondition.and:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 69, // 92: wg.cosmo.node.v1.SubscriptionFilterCondition.in:type_name -> wg.cosmo.node.v1.SubscriptionFieldCondition - 70, // 93: wg.cosmo.node.v1.SubscriptionFilterCondition.not:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 70, // 94: wg.cosmo.node.v1.SubscriptionFilterCondition.or:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 72, // 95: wg.cosmo.node.v1.CacheWarmerOperations.operations:type_name -> wg.cosmo.node.v1.Operation - 73, // 96: wg.cosmo.node.v1.Operation.request:type_name -> wg.cosmo.node.v1.OperationRequest - 76, // 97: wg.cosmo.node.v1.Operation.client:type_name -> wg.cosmo.node.v1.ClientInfo - 74, // 98: wg.cosmo.node.v1.OperationRequest.extensions:type_name -> wg.cosmo.node.v1.Extension - 75, // 99: wg.cosmo.node.v1.Extension.persisted_query:type_name -> wg.cosmo.node.v1.PersistedQuery - 10, // 100: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry.value:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig - 63, // 101: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry.value:type_name -> wg.cosmo.node.v1.HTTPHeader - 16, // 102: wg.cosmo.node.v1.NodeService.SelfRegister:input_type -> wg.cosmo.node.v1.SelfRegisterRequest - 17, // 103: wg.cosmo.node.v1.NodeService.SelfRegister:output_type -> wg.cosmo.node.v1.SelfRegisterResponse - 103, // [103:104] is the sub-list for method output_type - 102, // [102:103] is the sub-list for method input_type - 102, // [102:102] is the sub-list for extension type_name - 102, // [102:102] is the sub-list for extension extendee - 0, // [0:102] is the sub-list for field type_name + 22, // 29: wg.cosmo.node.v1.EntityCaching.cache_invalidate_configurations:type_name -> wg.cosmo.node.v1.CacheInvalidateConfiguration + 24, // 30: wg.cosmo.node.v1.CostConfiguration.field_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration + 25, // 31: wg.cosmo.node.v1.CostConfiguration.list_sizes:type_name -> wg.cosmo.node.v1.FieldListSizeConfiguration + 80, // 32: wg.cosmo.node.v1.CostConfiguration.type_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry + 81, // 33: wg.cosmo.node.v1.CostConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry + 82, // 34: wg.cosmo.node.v1.FieldWeightConfiguration.argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry + 83, // 35: wg.cosmo.node.v1.FieldWeightConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry + 1, // 36: wg.cosmo.node.v1.ArgumentConfiguration.source_type:type_name -> wg.cosmo.node.v1.ArgumentSource + 27, // 37: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes:type_name -> wg.cosmo.node.v1.Scopes + 27, // 38: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes_by_or:type_name -> wg.cosmo.node.v1.Scopes + 26, // 39: wg.cosmo.node.v1.FieldConfiguration.arguments_configuration:type_name -> wg.cosmo.node.v1.ArgumentConfiguration + 28, // 40: wg.cosmo.node.v1.FieldConfiguration.authorization_configuration:type_name -> wg.cosmo.node.v1.AuthorizationConfiguration + 71, // 41: wg.cosmo.node.v1.FieldConfiguration.subscription_filter_condition:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 32, // 42: wg.cosmo.node.v1.FieldSetCondition.field_coordinates_path:type_name -> wg.cosmo.node.v1.FieldCoordinates + 33, // 43: wg.cosmo.node.v1.RequiredField.conditions:type_name -> wg.cosmo.node.v1.FieldSetCondition + 61, // 44: wg.cosmo.node.v1.FetchConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 7, // 45: wg.cosmo.node.v1.FetchConfiguration.method:type_name -> wg.cosmo.node.v1.HTTPMethod + 84, // 46: wg.cosmo.node.v1.FetchConfiguration.header:type_name -> wg.cosmo.node.v1.FetchConfiguration.HeaderEntry + 61, // 47: wg.cosmo.node.v1.FetchConfiguration.body:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 63, // 48: wg.cosmo.node.v1.FetchConfiguration.query:type_name -> wg.cosmo.node.v1.URLQueryConfiguration + 65, // 49: wg.cosmo.node.v1.FetchConfiguration.mtls:type_name -> wg.cosmo.node.v1.MTLSConfiguration + 61, // 50: wg.cosmo.node.v1.FetchConfiguration.base_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 61, // 51: wg.cosmo.node.v1.FetchConfiguration.path:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 61, // 52: wg.cosmo.node.v1.FetchConfiguration.http_proxy_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 36, // 53: wg.cosmo.node.v1.DataSourceCustom_GraphQL.fetch:type_name -> wg.cosmo.node.v1.FetchConfiguration + 66, // 54: wg.cosmo.node.v1.DataSourceCustom_GraphQL.subscription:type_name -> wg.cosmo.node.v1.GraphQLSubscriptionConfiguration + 67, // 55: wg.cosmo.node.v1.DataSourceCustom_GraphQL.federation:type_name -> wg.cosmo.node.v1.GraphQLFederationConfiguration + 68, // 56: wg.cosmo.node.v1.DataSourceCustom_GraphQL.upstream_schema:type_name -> wg.cosmo.node.v1.InternedString + 69, // 57: wg.cosmo.node.v1.DataSourceCustom_GraphQL.custom_scalar_type_fields:type_name -> wg.cosmo.node.v1.SingleTypeField + 39, // 58: wg.cosmo.node.v1.DataSourceCustom_GraphQL.grpc:type_name -> wg.cosmo.node.v1.GRPCConfiguration + 43, // 59: wg.cosmo.node.v1.GRPCConfiguration.mapping:type_name -> wg.cosmo.node.v1.GRPCMapping + 41, // 60: wg.cosmo.node.v1.GRPCConfiguration.plugin:type_name -> wg.cosmo.node.v1.PluginConfiguration + 40, // 61: wg.cosmo.node.v1.PluginConfiguration.image_reference:type_name -> wg.cosmo.node.v1.ImageReference + 46, // 62: wg.cosmo.node.v1.GRPCMapping.operation_mappings:type_name -> wg.cosmo.node.v1.OperationMapping + 47, // 63: wg.cosmo.node.v1.GRPCMapping.entity_mappings:type_name -> wg.cosmo.node.v1.EntityMapping + 49, // 64: wg.cosmo.node.v1.GRPCMapping.type_field_mappings:type_name -> wg.cosmo.node.v1.TypeFieldMapping + 52, // 65: wg.cosmo.node.v1.GRPCMapping.enum_mappings:type_name -> wg.cosmo.node.v1.EnumMapping + 44, // 66: wg.cosmo.node.v1.GRPCMapping.resolve_mappings:type_name -> wg.cosmo.node.v1.LookupMapping + 3, // 67: wg.cosmo.node.v1.LookupMapping.type:type_name -> wg.cosmo.node.v1.LookupType + 45, // 68: wg.cosmo.node.v1.LookupMapping.lookup_mapping:type_name -> wg.cosmo.node.v1.LookupFieldMapping + 50, // 69: wg.cosmo.node.v1.LookupFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping + 4, // 70: wg.cosmo.node.v1.OperationMapping.type:type_name -> wg.cosmo.node.v1.OperationType + 48, // 71: wg.cosmo.node.v1.EntityMapping.required_field_mappings:type_name -> wg.cosmo.node.v1.RequiredFieldMapping + 50, // 72: wg.cosmo.node.v1.RequiredFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping + 50, // 73: wg.cosmo.node.v1.TypeFieldMapping.field_mappings:type_name -> wg.cosmo.node.v1.FieldMapping + 51, // 74: wg.cosmo.node.v1.FieldMapping.argument_mappings:type_name -> wg.cosmo.node.v1.ArgumentMapping + 53, // 75: wg.cosmo.node.v1.EnumMapping.values:type_name -> wg.cosmo.node.v1.EnumValueMapping + 58, // 76: wg.cosmo.node.v1.NatsEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 54, // 77: wg.cosmo.node.v1.NatsEventConfiguration.stream_configuration:type_name -> wg.cosmo.node.v1.NatsStreamConfiguration + 58, // 78: wg.cosmo.node.v1.KafkaEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 58, // 79: wg.cosmo.node.v1.RedisEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 5, // 80: wg.cosmo.node.v1.EngineEventConfiguration.type:type_name -> wg.cosmo.node.v1.EventType + 55, // 81: wg.cosmo.node.v1.DataSourceCustomEvents.nats:type_name -> wg.cosmo.node.v1.NatsEventConfiguration + 56, // 82: wg.cosmo.node.v1.DataSourceCustomEvents.kafka:type_name -> wg.cosmo.node.v1.KafkaEventConfiguration + 57, // 83: wg.cosmo.node.v1.DataSourceCustomEvents.redis:type_name -> wg.cosmo.node.v1.RedisEventConfiguration + 61, // 84: wg.cosmo.node.v1.DataSourceCustom_Static.data:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 6, // 85: wg.cosmo.node.v1.ConfigurationVariable.kind:type_name -> wg.cosmo.node.v1.ConfigurationVariableKind + 61, // 86: wg.cosmo.node.v1.HTTPHeader.values:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 61, // 87: wg.cosmo.node.v1.MTLSConfiguration.key:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 61, // 88: wg.cosmo.node.v1.MTLSConfiguration.cert:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 61, // 89: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 86, // 90: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol + 87, // 91: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.websocketSubprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol + 71, // 92: wg.cosmo.node.v1.SubscriptionFilterCondition.and:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 70, // 93: wg.cosmo.node.v1.SubscriptionFilterCondition.in:type_name -> wg.cosmo.node.v1.SubscriptionFieldCondition + 71, // 94: wg.cosmo.node.v1.SubscriptionFilterCondition.not:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 71, // 95: wg.cosmo.node.v1.SubscriptionFilterCondition.or:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 73, // 96: wg.cosmo.node.v1.CacheWarmerOperations.operations:type_name -> wg.cosmo.node.v1.Operation + 74, // 97: wg.cosmo.node.v1.Operation.request:type_name -> wg.cosmo.node.v1.OperationRequest + 77, // 98: wg.cosmo.node.v1.Operation.client:type_name -> wg.cosmo.node.v1.ClientInfo + 75, // 99: wg.cosmo.node.v1.OperationRequest.extensions:type_name -> wg.cosmo.node.v1.Extension + 76, // 100: wg.cosmo.node.v1.Extension.persisted_query:type_name -> wg.cosmo.node.v1.PersistedQuery + 10, // 101: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry.value:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig + 64, // 102: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry.value:type_name -> wg.cosmo.node.v1.HTTPHeader + 16, // 103: wg.cosmo.node.v1.NodeService.SelfRegister:input_type -> wg.cosmo.node.v1.SelfRegisterRequest + 17, // 104: wg.cosmo.node.v1.NodeService.SelfRegister:output_type -> wg.cosmo.node.v1.SelfRegisterResponse + 104, // [104:105] is the sub-list for method output_type + 103, // [103:104] is the sub-list for method input_type + 103, // [103:103] is the sub-list for extension type_name + 103, // [103:103] is the sub-list for extension extendee + 0, // [0:103] is the sub-list for field type_name } func init() { file_wg_cosmo_node_v1_node_proto_init() } @@ -5399,20 +5478,20 @@ func file_wg_cosmo_node_v1_node_proto_init() { file_wg_cosmo_node_v1_node_proto_msgTypes[4].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[9].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[10].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[15].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[16].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[20].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[27].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[32].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[57].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[62].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[17].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[21].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[28].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[33].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[58].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[63].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_wg_cosmo_node_v1_node_proto_rawDesc), len(file_wg_cosmo_node_v1_node_proto_rawDesc)), NumEnums: 8, - NumMessages: 76, + NumMessages: 77, NumExtensions: 0, NumServices: 1, }, diff --git a/shared/src/router-config/builder.ts b/shared/src/router-config/builder.ts index 314e2d0932..fe334e739d 100644 --- a/shared/src/router-config/builder.ts +++ b/shared/src/router-config/builder.ts @@ -23,6 +23,7 @@ import { DataSourceConfiguration, DataSourceCustom_GraphQL, DataSourceCustomEvents, + CacheInvalidateConfiguration, DataSourceKind, EngineConfiguration, EntityCacheConfiguration, @@ -82,6 +83,7 @@ function toEntityCaching(dataByTypeName?: Map): Ent return undefined; } const entityCacheConfigurations: EntityCacheConfiguration[] = []; + const cacheInvalidateConfigurations: CacheInvalidateConfiguration[] = []; for (const data of dataByTypeName.values()) { for (const ec of data.entityCaching?.entityCacheConfigurations ?? []) { entityCacheConfigurations.push( @@ -95,14 +97,25 @@ function toEntityCaching(dataByTypeName?: Map): Ent }), ); } + for (const ci of data.entityCaching?.cacheInvalidateConfigurations ?? []) { + cacheInvalidateConfigurations.push( + new CacheInvalidateConfiguration({ + fieldName: ci.fieldName, + operationType: ci.operationType, + entityTypeName: ci.entityTypeName, + }), + ); + } } if ( - entityCacheConfigurations.length === 0 + entityCacheConfigurations.length === 0 && + cacheInvalidateConfigurations.length === 0 ) { return undefined; } return new EntityCaching({ entityCacheConfigurations, + cacheInvalidateConfigurations, }); } From b52c0a2304225e909c3c86e6de5a9fba1a1e828b Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Fri, 19 Jun 2026 11:50:14 +0530 Subject: [PATCH 03/65] feat(composition): @openfed__cachePopulate directive --- .../directive-definition-data.ts | 20 + composition/src/errors/errors.ts | 15 + composition/src/router-configuration/types.ts | 12 + composition/src/utils/string-constants.ts | 1 + composition/src/v1/constants/constants.ts | 3 + .../src/v1/constants/directive-definitions.ts | 16 + .../v1/normalization/normalization-factory.ts | 89 +- .../src/v1/normalization/types/types.ts | 16 + composition/src/v1/normalization/utils.ts | 3 + .../v1/directives/cache-populate.test.ts | 285 +++++++ .../gen/proto/wg/cosmo/node/v1/node.pb.go | 772 ++++++++++-------- connect/src/wg/cosmo/node/v1/node_pb.ts | 69 ++ proto/wg/cosmo/node/v1/node.proto | 13 + router/gen/proto/wg/cosmo/node/v1/node.pb.go | 772 ++++++++++-------- shared/src/router-config/builder.ts | 16 +- 15 files changed, 1420 insertions(+), 682 deletions(-) create mode 100644 composition/tests/v1/directives/cache-populate.test.ts diff --git a/composition/src/directive-definition-data/directive-definition-data.ts b/composition/src/directive-definition-data/directive-definition-data.ts index d496a5bf87..a675e84fa7 100644 --- a/composition/src/directive-definition-data/directive-definition-data.ts +++ b/composition/src/directive-definition-data/directive-definition-data.ts @@ -82,6 +82,7 @@ import { URL_LOWER, WEIGHT, CACHE_INVALIDATE, + CACHE_POPULATE, ENTITY_CACHE, INCLUDE_HEADERS, MAX_AGE, @@ -120,6 +121,7 @@ import { SEMANTIC_NON_NULL_DEFINITION, SHAREABLE_DEFINITION, CACHE_INVALIDATE_DEFINITION, + CACHE_POPULATE_DEFINITION, ENTITY_CACHE_DEFINITION, SPECIFIED_BY_DEFINITION, SUBSCRIPTION_FILTER_DEFINITION, @@ -1024,3 +1026,21 @@ export const CACHE_INVALIDATE_DEFINITION_DATA = newDirectiveDefinitionData({ name: CACHE_INVALIDATE, node: CACHE_INVALIDATE_DEFINITION, }); + +export const CACHE_POPULATE_DEFINITION_DATA = newDirectiveDefinitionData({ + argumentDataByName: new Map([ + [ + MAX_AGE, + newDirectiveArgumentData({ + directive: `@${CACHE_POPULATE}`, + name: MAX_AGE, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: stringToNamedTypeNode(INT_SCALAR), + }), + ], + ]), + locations: new Set([FIELD_DEFINITION_UPPER]), + name: CACHE_POPULATE, + node: CACHE_POPULATE_DEFINITION, + optionalArgumentNames: new Set([MAX_AGE]), +}); diff --git a/composition/src/errors/errors.ts b/composition/src/errors/errors.ts index 987a5a54ee..5297574339 100644 --- a/composition/src/errors/errors.ts +++ b/composition/src/errors/errors.ts @@ -2070,3 +2070,18 @@ export function cacheInvalidateOnNonMutationSubscriptionFieldErrorMessage(fieldC export function cacheInvalidateOnNonEntityReturnTypeErrorMessage(fieldCoords: string, returnType: string): string { return `Field "${fieldCoords}" has @openfed__cacheInvalidate but returns non-entity type "${returnType}".`; } + +export function cachePopulateOnNonMutationSubscriptionFieldErrorMessage(fieldCoords: string): string { + return `@openfed__cachePopulate is only valid on Mutation or Subscription fields, found on "${fieldCoords}".`; +} + +export function cachePopulateOnNonEntityReturnTypeErrorMessage(fieldCoords: string, returnType: string): string { + return `Field "${fieldCoords}" has @openfed__cachePopulate but returns non-entity type "${returnType}".`; +} + +export function cacheInvalidateAndPopulateMutualExclusionErrorMessage(fieldCoords: string): string { + return ( + `Field "${fieldCoords}" has both @openfed__cacheInvalidate and @openfed__cachePopulate.` + + ` A field must use one or the other, not both.` + ); +} diff --git a/composition/src/router-configuration/types.ts b/composition/src/router-configuration/types.ts index 191f71086c..cf7d2f95d2 100644 --- a/composition/src/router-configuration/types.ts +++ b/composition/src/router-configuration/types.ts @@ -127,11 +127,23 @@ export type CacheInvalidateConfig = { entityTypeName: TypeName; }; +// Extracted from @openfed__cachePopulate on Mutation/Subscription fields. +// Tells the router to populate the entity cache with the operation's return value. +// maxAgeSeconds overrides the entity's default TTL when provided. +export type CachePopulateConfig = { + fieldName: FieldName; + operationType: string; + entityTypeName: TypeName; + maxAgeSeconds?: number; +}; + export type EntityCachingConfiguration = { // Attached to an entity type's ConfigurationData (e.g. "Product") from @openfed__entityCache. entityCacheConfigurations?: Array; // Attached to the Mutation/Subscription type's ConfigurationData from @openfed__cacheInvalidate. cacheInvalidateConfigurations?: Array; + // Attached to the Mutation/Subscription type's ConfigurationData from @openfed__cachePopulate. + cachePopulateConfigurations?: Array; }; export type Costs = { diff --git a/composition/src/utils/string-constants.ts b/composition/src/utils/string-constants.ts index 3c9af32635..acf64234c6 100644 --- a/composition/src/utils/string-constants.ts +++ b/composition/src/utils/string-constants.ts @@ -11,6 +11,7 @@ export const ARGUMENT_DEFINITION_UPPER = 'ARGUMENT_DEFINITION'; export const BOOLEAN = 'boolean'; export const BOOLEAN_SCALAR = 'Boolean'; export const CACHE_INVALIDATE = 'openfed__cacheInvalidate'; +export const CACHE_POPULATE = 'openfed__cachePopulate'; export const CHANNEL = 'channel'; export const CHANNELS = 'channels'; export const COMPOSE_DIRECTIVE = 'composeDirective'; diff --git a/composition/src/v1/constants/constants.ts b/composition/src/v1/constants/constants.ts index f21769c0eb..0f950b5ed5 100644 --- a/composition/src/v1/constants/constants.ts +++ b/composition/src/v1/constants/constants.ts @@ -7,6 +7,7 @@ import { CONFIGURE_DESCRIPTION, CONNECT_FIELD_RESOLVER, CACHE_INVALIDATE, + CACHE_POPULATE, COST, ENTITY_CACHE, DEPRECATED, @@ -77,6 +78,7 @@ import { SUBSCRIPTION_FILTER_DEFINITION, TAG_DEFINITION, CACHE_INVALIDATE_DEFINITION, + CACHE_POPULATE_DEFINITION, ENTITY_CACHE_DEFINITION, } from './directive-definitions'; @@ -92,6 +94,7 @@ export const DIRECTIVE_DEFINITION_BY_NAME: ReadonlyMap arg.name.value === MAX_AGE); + + let maxAgeSeconds: number | undefined; + if (maxAgeArgument) { + const maxAgeRaw = parseInt(maxAgeArgument.value.value, 10); + if (maxAgeRaw <= 0) { + this.errors.push( + invalidDirectiveError(CACHE_POPULATE, fieldCoords, FIRST_ORDINAL, [ + maxAgeNotPositiveIntegerErrorMessage(CACHE_POPULATE, maxAgeRaw), + ]), + ); + return; + } + maxAgeSeconds = maxAgeRaw; + } + const config: CachePopulateConfig = { + fieldName, + operationType: operationType === OperationTypeNode.MUTATION ? MUTATION : SUBSCRIPTION, + entityTypeName: returnTypeName, + maxAgeSeconds, + }; + const configurationData = getValueOrDefault(this.configurationDataByTypeName, configurationTypeName, () => + newConfigurationData(false, configurationTypeName), + ); + + const existingCachePopulates = configurationData.entityCaching?.cachePopulateConfigurations ?? []; + configurationData.entityCaching = { + ...configurationData.entityCaching, + cachePopulateConfigurations: [...existingCachePopulates, config], + }; + } + addFieldNamesToConfigurationData(fieldDataByFieldName: Map, configurationData: ConfigurationData) { const externalFieldNames = new Set(); for (const [fieldName, fieldData] of fieldDataByFieldName) { diff --git a/composition/src/v1/normalization/types/types.ts b/composition/src/v1/normalization/types/types.ts index f8870f7a43..62763e5ffa 100644 --- a/composition/src/v1/normalization/types/types.ts +++ b/composition/src/v1/normalization/types/types.ts @@ -154,6 +154,22 @@ export type EntityCacheArgumentNode = { readonly value: IntValueNode | BooleanValueNode; readonly loc?: Location; }; + +export type CachePopulateDirectiveNode = { + readonly arguments: ReadonlyArray; + readonly kind: Kind.DIRECTIVE; + readonly name: NameNode; + readonly loc?: Location; +}; + +export type CachePopulateArgumentNode = { + readonly kind: Kind.ARGUMENT; + readonly name: NameNode; + // maxAge: Int (optional). validateDirectives() guarantees it's an Int literal when present. + readonly value: IntValueNode; + readonly loc?: Location; +}; + export type LinkImportData = { name: DirectiveName; coreUrl: string; diff --git a/composition/src/v1/normalization/utils.ts b/composition/src/v1/normalization/utils.ts index 50f2d49a1b..4edbd10d54 100644 --- a/composition/src/v1/normalization/utils.ts +++ b/composition/src/v1/normalization/utils.ts @@ -77,6 +77,7 @@ import { SUBSCRIPTION_FILTER_DEFINITION_DATA, TAG_DEFINITION_DATA, CACHE_INVALIDATE_DEFINITION_DATA, + CACHE_POPULATE_DEFINITION_DATA, ENTITY_CACHE_DEFINITION_DATA, } from '../../directive-definition-data/directive-definition-data'; import { @@ -87,6 +88,7 @@ import { CONFIGURE_DESCRIPTION, CONNECT_FIELD_RESOLVER, CACHE_INVALIDATE, + CACHE_POPULATE, COST, ENTITY_CACHE, DEPRECATED, @@ -479,6 +481,7 @@ export function initializeDirectiveDefinitionDatas(): Map { + describe('on Mutation fields', () => { + test("normalizes without maxAge (uses the entity's default TTL)", () => { + const { schema } = normalizeSubgraphSuccess( + createSubgraphWithDefault(` + type Query { dummy: String! } + type Mutation { + createProduct(name: String!): Product @openfed__cachePopulate + } + type Product @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + name: String! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(schema).toBeDefined(); + }); + + test('normalizes with an explicit maxAge override', () => { + const { schema } = normalizeSubgraphSuccess( + createSubgraphWithDefault(` + type Query { dummy: String! } + type Mutation { + createProduct(name: String!): Product @openfed__cachePopulate(maxAge: 120) + } + type Product @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + name: String! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(schema).toBeDefined(); + }); + + test('config without maxAge leaves maxAgeSeconds undefined', () => { + const config = getConfigForType( + createSubgraphWithDefault(` + type Query { dummy: String! } + type Mutation { + createProduct(name: String!): Product @openfed__cachePopulate + } + type Product @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + name: String! + } + `), + MUTATION, + ); + expect(config).toBeDefined(); + expect(config!.entityCaching?.cachePopulateConfigurations).toStrictEqual([ + { + fieldName: 'createProduct', + operationType: MUTATION, + entityTypeName: 'Product', + maxAgeSeconds: undefined, + }, + ] satisfies CachePopulateConfig[]); + }); + + test('config with an explicit maxAge override', () => { + const config = getConfigForType( + createSubgraphWithDefault(` + type Query { dummy: String! } + type Mutation { + createProduct(name: String!): Product @openfed__cachePopulate(maxAge: 120) + } + type Product @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + name: String! + } + `), + MUTATION, + ); + expect(config).toBeDefined(); + expect(config!.entityCaching?.cachePopulateConfigurations).toStrictEqual([ + { + fieldName: 'createProduct', + operationType: MUTATION, + entityTypeName: 'Product', + maxAgeSeconds: 120, + }, + ] satisfies CachePopulateConfig[]); + }); + }); + + describe('on Subscription fields', () => { + test('normalizes a Subscription field', () => { + const { schema } = normalizeSubgraphSuccess( + createSubgraphWithDefault(` + type Query { dummy: String! } + type Subscription { + itemCreated: Product @openfed__cachePopulate + } + type Product @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + name: String! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(schema).toBeDefined(); + }); + + test('produces the correct config', () => { + const config = getConfigForType( + createSubgraphWithDefault(` + type Query { dummy: String! } + type Subscription { + itemCreated: Product @openfed__cachePopulate + } + type Product @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + name: String! + } + `), + SUBSCRIPTION, + ); + expect(config).toBeDefined(); + expect(config!.entityCaching?.cachePopulateConfigurations).toStrictEqual([ + { + fieldName: 'itemCreated', + operationType: SUBSCRIPTION, + entityTypeName: 'Product', + maxAgeSeconds: undefined, + }, + ] satisfies CachePopulateConfig[]); + }); + }); + + describe('validation errors', () => { + test('rejects placement on a Query field', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + product(id: ID!): Product @openfed__cachePopulate + } + type Product @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + name: String! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors).toHaveLength(1); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_CACHE_POPULATE, 'Query.product', FIRST_ORDINAL, [ + cachePopulateOnNonMutationSubscriptionFieldErrorMessage('Query.product'), + ]), + ); + }); + + test('rejects a return type that is not a cached entity', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { dummy: String! } + type Mutation { + createProduct(name: String!): Result @openfed__cachePopulate + } + type Result { success: Boolean! } + type Product @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + name: String! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors).toHaveLength(1); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_CACHE_POPULATE, 'Mutation.createProduct', FIRST_ORDINAL, [ + cachePopulateOnNonEntityReturnTypeErrorMessage('Mutation.createProduct', 'Result'), + ]), + ); + }); + + test('rejects a maxAge of zero', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { dummy: String! } + type Mutation { + createProduct(name: String!): Product @openfed__cachePopulate(maxAge: 0) + } + type Product @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + name: String! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors).toHaveLength(1); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_CACHE_POPULATE, 'Mutation.createProduct', FIRST_ORDINAL, [ + maxAgeNotPositiveIntegerErrorMessage(OPENFED_CACHE_POPULATE, 0), + ]), + ); + }); + + test('an invalid maxAge does not produce a config (regression)', () => { + // Regression: a maxAge of 0 once emitted a cachePopulate config despite failing validation. + // Composition now fails outright, so assert exactly the one @openfed__cachePopulate error. + const result = new BatchNormalizer({ + subgraphs: [ + createSubgraphWithDefault(` + type Query { dummy: String! } + type Mutation { + createProduct(name: String!): Product @openfed__cachePopulate(maxAge: 0) + } + type Product @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + name: String! + } + `), + ], + }).batchNormalize(); + expect(result.success).toBe(false); + if (result.success) return; + expect(result.errors).toHaveLength(1); + expect(result.errors[0]).toStrictEqual( + subgraphValidationError('subgraph-default-a', [ + invalidDirectiveError(OPENFED_CACHE_POPULATE, 'Mutation.createProduct', FIRST_ORDINAL, [ + maxAgeNotPositiveIntegerErrorMessage(OPENFED_CACHE_POPULATE, 0), + ]), + ]), + ); + }); + + test('rejects coexisting @openfed__cacheInvalidate and @openfed__cachePopulate on the same field', () => { + // A mutation can't both evict and write to the cache for the same entity + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { dummy: String! } + type Mutation { + updateProduct(id: ID!): Product @openfed__cacheInvalidate @openfed__cachePopulate + } + type Product @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + name: String! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors).toHaveLength(1); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_CACHE_INVALIDATE, 'Mutation.updateProduct', FIRST_ORDINAL, [ + cacheInvalidateAndPopulateMutualExclusionErrorMessage('Mutation.updateProduct'), + ]), + ); + }); + }); +}); + +// Returns the ConfigurationData for a type. Entity-caching config is nested under `.entityCaching`. +function getConfigForType(sg: Subgraph, typeName: string): ConfigurationData | undefined { + const result = new BatchNormalizer({ subgraphs: [sg] }).batchNormalize() as BatchNormalizationSuccess; + expect(result.success).toBe(true); + const internal = result.internalSubgraphByName.get(sg.name); + expect(internal).toBeDefined(); + return internal!.configurationDataByTypeName.get(typeName as TypeName); +} diff --git a/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go b/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go index ff99568c35..379cbd715b 100644 --- a/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go +++ b/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go @@ -1232,8 +1232,10 @@ type EntityCaching struct { EntityCacheConfigurations []*EntityCacheConfiguration `protobuf:"bytes,1,rep,name=entity_cache_configurations,json=entityCacheConfigurations,proto3" json:"entity_cache_configurations,omitempty"` // Per-Mutation/Subscription-field cache eviction configs (from @openfed__cacheInvalidate) CacheInvalidateConfigurations []*CacheInvalidateConfiguration `protobuf:"bytes,2,rep,name=cache_invalidate_configurations,json=cacheInvalidateConfigurations,proto3" json:"cache_invalidate_configurations,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // Per-Mutation/Subscription-field cache population configs (from @openfed__cachePopulate) + CachePopulateConfigurations []*CachePopulateConfiguration `protobuf:"bytes,3,rep,name=cache_populate_configurations,json=cachePopulateConfigurations,proto3" json:"cache_populate_configurations,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *EntityCaching) Reset() { @@ -1280,6 +1282,13 @@ func (x *EntityCaching) GetCacheInvalidateConfigurations() []*CacheInvalidateCon return nil } +func (x *EntityCaching) GetCachePopulateConfigurations() []*CachePopulateConfiguration { + if x != nil { + return x.CachePopulateConfigurations + } + return nil +} + // Per-entity declaration for @openfed__entityCache. Marks a @key entity type as cacheable so the // router can store/serve resolved entities from an external store (e.g. Redis). type EntityCacheConfiguration struct { @@ -1434,6 +1443,78 @@ func (x *CacheInvalidateConfiguration) GetEntityTypeName() string { return "" } +// Per-field declaration for @openfed__cachePopulate. Tells the router to populate the entity cache +// with the (Mutation/Subscription) operation's return value. +type CachePopulateConfiguration struct { + state protoimpl.MessageState `protogen:"open.v1"` + FieldName string `protobuf:"bytes,1,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` + OperationType string `protobuf:"bytes,2,opt,name=operation_type,json=operationType,proto3" json:"operation_type,omitempty"` + // Optional override TTL. When omitted, falls back to the target entity's max_age_seconds. + // Composition rejects non-positive values. + MaxAgeSeconds *int64 `protobuf:"varint,3,opt,name=max_age_seconds,json=maxAgeSeconds,proto3,oneof" json:"max_age_seconds,omitempty"` + EntityTypeName string `protobuf:"bytes,4,opt,name=entity_type_name,json=entityTypeName,proto3" json:"entity_type_name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CachePopulateConfiguration) Reset() { + *x = CachePopulateConfiguration{} + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CachePopulateConfiguration) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CachePopulateConfiguration) ProtoMessage() {} + +func (x *CachePopulateConfiguration) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CachePopulateConfiguration.ProtoReflect.Descriptor instead. +func (*CachePopulateConfiguration) Descriptor() ([]byte, []int) { + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{15} +} + +func (x *CachePopulateConfiguration) GetFieldName() string { + if x != nil { + return x.FieldName + } + return "" +} + +func (x *CachePopulateConfiguration) GetOperationType() string { + if x != nil { + return x.OperationType + } + return "" +} + +func (x *CachePopulateConfiguration) GetMaxAgeSeconds() int64 { + if x != nil && x.MaxAgeSeconds != nil { + return *x.MaxAgeSeconds + } + return 0 +} + +func (x *CachePopulateConfiguration) GetEntityTypeName() string { + if x != nil { + return x.EntityTypeName + } + return "" +} + type CostConfiguration struct { state protoimpl.MessageState `protogen:"open.v1"` FieldWeights []*FieldWeightConfiguration `protobuf:"bytes,1,rep,name=field_weights,json=fieldWeights,proto3" json:"field_weights,omitempty"` @@ -1446,7 +1527,7 @@ type CostConfiguration struct { func (x *CostConfiguration) Reset() { *x = CostConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[15] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1458,7 +1539,7 @@ func (x *CostConfiguration) String() string { func (*CostConfiguration) ProtoMessage() {} func (x *CostConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[15] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1471,7 +1552,7 @@ func (x *CostConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use CostConfiguration.ProtoReflect.Descriptor instead. func (*CostConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{15} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{16} } func (x *CostConfiguration) GetFieldWeights() []*FieldWeightConfiguration { @@ -1515,7 +1596,7 @@ type FieldWeightConfiguration struct { func (x *FieldWeightConfiguration) Reset() { *x = FieldWeightConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1527,7 +1608,7 @@ func (x *FieldWeightConfiguration) String() string { func (*FieldWeightConfiguration) ProtoMessage() {} func (x *FieldWeightConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1540,7 +1621,7 @@ func (x *FieldWeightConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldWeightConfiguration.ProtoReflect.Descriptor instead. func (*FieldWeightConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{16} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{17} } func (x *FieldWeightConfiguration) GetTypeName() string { @@ -1592,7 +1673,7 @@ type FieldListSizeConfiguration struct { func (x *FieldListSizeConfiguration) Reset() { *x = FieldListSizeConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1604,7 +1685,7 @@ func (x *FieldListSizeConfiguration) String() string { func (*FieldListSizeConfiguration) ProtoMessage() {} func (x *FieldListSizeConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1617,7 +1698,7 @@ func (x *FieldListSizeConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldListSizeConfiguration.ProtoReflect.Descriptor instead. func (*FieldListSizeConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{17} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{18} } func (x *FieldListSizeConfiguration) GetTypeName() string { @@ -1672,7 +1753,7 @@ type ArgumentConfiguration struct { func (x *ArgumentConfiguration) Reset() { *x = ArgumentConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1684,7 +1765,7 @@ func (x *ArgumentConfiguration) String() string { func (*ArgumentConfiguration) ProtoMessage() {} func (x *ArgumentConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1697,7 +1778,7 @@ func (x *ArgumentConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use ArgumentConfiguration.ProtoReflect.Descriptor instead. func (*ArgumentConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{18} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{19} } func (x *ArgumentConfiguration) GetName() string { @@ -1723,7 +1804,7 @@ type Scopes struct { func (x *Scopes) Reset() { *x = Scopes{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1735,7 +1816,7 @@ func (x *Scopes) String() string { func (*Scopes) ProtoMessage() {} func (x *Scopes) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1748,7 +1829,7 @@ func (x *Scopes) ProtoReflect() protoreflect.Message { // Deprecated: Use Scopes.ProtoReflect.Descriptor instead. func (*Scopes) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{19} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{20} } func (x *Scopes) GetRequiredAndScopes() []string { @@ -1769,7 +1850,7 @@ type AuthorizationConfiguration struct { func (x *AuthorizationConfiguration) Reset() { *x = AuthorizationConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1781,7 +1862,7 @@ func (x *AuthorizationConfiguration) String() string { func (*AuthorizationConfiguration) ProtoMessage() {} func (x *AuthorizationConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1794,7 +1875,7 @@ func (x *AuthorizationConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use AuthorizationConfiguration.ProtoReflect.Descriptor instead. func (*AuthorizationConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{20} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{21} } func (x *AuthorizationConfiguration) GetRequiresAuthentication() bool { @@ -1831,7 +1912,7 @@ type FieldConfiguration struct { func (x *FieldConfiguration) Reset() { *x = FieldConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1843,7 +1924,7 @@ func (x *FieldConfiguration) String() string { func (*FieldConfiguration) ProtoMessage() {} func (x *FieldConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1856,7 +1937,7 @@ func (x *FieldConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldConfiguration.ProtoReflect.Descriptor instead. func (*FieldConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{21} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{22} } func (x *FieldConfiguration) GetTypeName() string { @@ -1904,7 +1985,7 @@ type TypeConfiguration struct { func (x *TypeConfiguration) Reset() { *x = TypeConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1916,7 +1997,7 @@ func (x *TypeConfiguration) String() string { func (*TypeConfiguration) ProtoMessage() {} func (x *TypeConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1929,7 +2010,7 @@ func (x *TypeConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeConfiguration.ProtoReflect.Descriptor instead. func (*TypeConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{22} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{23} } func (x *TypeConfiguration) GetTypeName() string { @@ -1958,7 +2039,7 @@ type TypeField struct { func (x *TypeField) Reset() { *x = TypeField{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1970,7 +2051,7 @@ func (x *TypeField) String() string { func (*TypeField) ProtoMessage() {} func (x *TypeField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1983,7 +2064,7 @@ func (x *TypeField) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeField.ProtoReflect.Descriptor instead. func (*TypeField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{23} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{24} } func (x *TypeField) GetTypeName() string { @@ -2024,7 +2105,7 @@ type FieldCoordinates struct { func (x *FieldCoordinates) Reset() { *x = FieldCoordinates{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2036,7 +2117,7 @@ func (x *FieldCoordinates) String() string { func (*FieldCoordinates) ProtoMessage() {} func (x *FieldCoordinates) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2049,7 +2130,7 @@ func (x *FieldCoordinates) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldCoordinates.ProtoReflect.Descriptor instead. func (*FieldCoordinates) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{24} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{25} } func (x *FieldCoordinates) GetFieldName() string { @@ -2076,7 +2157,7 @@ type FieldSetCondition struct { func (x *FieldSetCondition) Reset() { *x = FieldSetCondition{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2088,7 +2169,7 @@ func (x *FieldSetCondition) String() string { func (*FieldSetCondition) ProtoMessage() {} func (x *FieldSetCondition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2101,7 +2182,7 @@ func (x *FieldSetCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldSetCondition.ProtoReflect.Descriptor instead. func (*FieldSetCondition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{25} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{26} } func (x *FieldSetCondition) GetFieldCoordinatesPath() []*FieldCoordinates { @@ -2131,7 +2212,7 @@ type RequiredField struct { func (x *RequiredField) Reset() { *x = RequiredField{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2143,7 +2224,7 @@ func (x *RequiredField) String() string { func (*RequiredField) ProtoMessage() {} func (x *RequiredField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2156,7 +2237,7 @@ func (x *RequiredField) ProtoReflect() protoreflect.Message { // Deprecated: Use RequiredField.ProtoReflect.Descriptor instead. func (*RequiredField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{26} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{27} } func (x *RequiredField) GetTypeName() string { @@ -2204,7 +2285,7 @@ type EntityInterfaceConfiguration struct { func (x *EntityInterfaceConfiguration) Reset() { *x = EntityInterfaceConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2216,7 +2297,7 @@ func (x *EntityInterfaceConfiguration) String() string { func (*EntityInterfaceConfiguration) ProtoMessage() {} func (x *EntityInterfaceConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2229,7 +2310,7 @@ func (x *EntityInterfaceConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use EntityInterfaceConfiguration.ProtoReflect.Descriptor instead. func (*EntityInterfaceConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{27} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{28} } func (x *EntityInterfaceConfiguration) GetInterfaceTypeName() string { @@ -2272,7 +2353,7 @@ type FetchConfiguration struct { func (x *FetchConfiguration) Reset() { *x = FetchConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2284,7 +2365,7 @@ func (x *FetchConfiguration) String() string { func (*FetchConfiguration) ProtoMessage() {} func (x *FetchConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2297,7 +2378,7 @@ func (x *FetchConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FetchConfiguration.ProtoReflect.Descriptor instead. func (*FetchConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{28} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{29} } func (x *FetchConfiguration) GetUrl() *ConfigurationVariable { @@ -2381,7 +2462,7 @@ type StatusCodeTypeMapping struct { func (x *StatusCodeTypeMapping) Reset() { *x = StatusCodeTypeMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2393,7 +2474,7 @@ func (x *StatusCodeTypeMapping) String() string { func (*StatusCodeTypeMapping) ProtoMessage() {} func (x *StatusCodeTypeMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2406,7 +2487,7 @@ func (x *StatusCodeTypeMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use StatusCodeTypeMapping.ProtoReflect.Descriptor instead. func (*StatusCodeTypeMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{29} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{30} } func (x *StatusCodeTypeMapping) GetStatusCode() int64 { @@ -2444,7 +2525,7 @@ type DataSourceCustom_GraphQL struct { func (x *DataSourceCustom_GraphQL) Reset() { *x = DataSourceCustom_GraphQL{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2456,7 +2537,7 @@ func (x *DataSourceCustom_GraphQL) String() string { func (*DataSourceCustom_GraphQL) ProtoMessage() {} func (x *DataSourceCustom_GraphQL) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2469,7 +2550,7 @@ func (x *DataSourceCustom_GraphQL) ProtoReflect() protoreflect.Message { // Deprecated: Use DataSourceCustom_GraphQL.ProtoReflect.Descriptor instead. func (*DataSourceCustom_GraphQL) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{30} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{31} } func (x *DataSourceCustom_GraphQL) GetFetch() *FetchConfiguration { @@ -2525,7 +2606,7 @@ type GRPCConfiguration struct { func (x *GRPCConfiguration) Reset() { *x = GRPCConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2537,7 +2618,7 @@ func (x *GRPCConfiguration) String() string { func (*GRPCConfiguration) ProtoMessage() {} func (x *GRPCConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2550,7 +2631,7 @@ func (x *GRPCConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCConfiguration.ProtoReflect.Descriptor instead. func (*GRPCConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{31} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{32} } func (x *GRPCConfiguration) GetMapping() *GRPCMapping { @@ -2584,7 +2665,7 @@ type ImageReference struct { func (x *ImageReference) Reset() { *x = ImageReference{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2596,7 +2677,7 @@ func (x *ImageReference) String() string { func (*ImageReference) ProtoMessage() {} func (x *ImageReference) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2609,7 +2690,7 @@ func (x *ImageReference) ProtoReflect() protoreflect.Message { // Deprecated: Use ImageReference.ProtoReflect.Descriptor instead. func (*ImageReference) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{32} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{33} } func (x *ImageReference) GetRepository() string { @@ -2639,7 +2720,7 @@ type PluginConfiguration struct { func (x *PluginConfiguration) Reset() { *x = PluginConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2651,7 +2732,7 @@ func (x *PluginConfiguration) String() string { func (*PluginConfiguration) ProtoMessage() {} func (x *PluginConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2664,7 +2745,7 @@ func (x *PluginConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use PluginConfiguration.ProtoReflect.Descriptor instead. func (*PluginConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{33} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{34} } func (x *PluginConfiguration) GetName() string { @@ -2698,7 +2779,7 @@ type SSLConfiguration struct { func (x *SSLConfiguration) Reset() { *x = SSLConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2710,7 +2791,7 @@ func (x *SSLConfiguration) String() string { func (*SSLConfiguration) ProtoMessage() {} func (x *SSLConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2723,7 +2804,7 @@ func (x *SSLConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use SSLConfiguration.ProtoReflect.Descriptor instead. func (*SSLConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{34} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{35} } func (x *SSLConfiguration) GetEnabled() bool { @@ -2756,7 +2837,7 @@ type GRPCMapping struct { func (x *GRPCMapping) Reset() { *x = GRPCMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2768,7 +2849,7 @@ func (x *GRPCMapping) String() string { func (*GRPCMapping) ProtoMessage() {} func (x *GRPCMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2781,7 +2862,7 @@ func (x *GRPCMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCMapping.ProtoReflect.Descriptor instead. func (*GRPCMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{35} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{36} } func (x *GRPCMapping) GetVersion() int32 { @@ -2852,7 +2933,7 @@ type LookupMapping struct { func (x *LookupMapping) Reset() { *x = LookupMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2864,7 +2945,7 @@ func (x *LookupMapping) String() string { func (*LookupMapping) ProtoMessage() {} func (x *LookupMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2877,7 +2958,7 @@ func (x *LookupMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use LookupMapping.ProtoReflect.Descriptor instead. func (*LookupMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{36} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{37} } func (x *LookupMapping) GetType() LookupType { @@ -2928,7 +3009,7 @@ type LookupFieldMapping struct { func (x *LookupFieldMapping) Reset() { *x = LookupFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2940,7 +3021,7 @@ func (x *LookupFieldMapping) String() string { func (*LookupFieldMapping) ProtoMessage() {} func (x *LookupFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2953,7 +3034,7 @@ func (x *LookupFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use LookupFieldMapping.ProtoReflect.Descriptor instead. func (*LookupFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{37} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{38} } func (x *LookupFieldMapping) GetType() string { @@ -2989,7 +3070,7 @@ type OperationMapping struct { func (x *OperationMapping) Reset() { *x = OperationMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3001,7 +3082,7 @@ func (x *OperationMapping) String() string { func (*OperationMapping) ProtoMessage() {} func (x *OperationMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3014,7 +3095,7 @@ func (x *OperationMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use OperationMapping.ProtoReflect.Descriptor instead. func (*OperationMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{38} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{39} } func (x *OperationMapping) GetType() OperationType { @@ -3075,7 +3156,7 @@ type EntityMapping struct { func (x *EntityMapping) Reset() { *x = EntityMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3087,7 +3168,7 @@ func (x *EntityMapping) String() string { func (*EntityMapping) ProtoMessage() {} func (x *EntityMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3100,7 +3181,7 @@ func (x *EntityMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EntityMapping.ProtoReflect.Descriptor instead. func (*EntityMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{39} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{40} } func (x *EntityMapping) GetTypeName() string { @@ -3168,7 +3249,7 @@ type RequiredFieldMapping struct { func (x *RequiredFieldMapping) Reset() { *x = RequiredFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3180,7 +3261,7 @@ func (x *RequiredFieldMapping) String() string { func (*RequiredFieldMapping) ProtoMessage() {} func (x *RequiredFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3193,7 +3274,7 @@ func (x *RequiredFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use RequiredFieldMapping.ProtoReflect.Descriptor instead. func (*RequiredFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{40} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{41} } func (x *RequiredFieldMapping) GetFieldMapping() *FieldMapping { @@ -3237,7 +3318,7 @@ type TypeFieldMapping struct { func (x *TypeFieldMapping) Reset() { *x = TypeFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3249,7 +3330,7 @@ func (x *TypeFieldMapping) String() string { func (*TypeFieldMapping) ProtoMessage() {} func (x *TypeFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3262,7 +3343,7 @@ func (x *TypeFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeFieldMapping.ProtoReflect.Descriptor instead. func (*TypeFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{41} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{42} } func (x *TypeFieldMapping) GetType() string { @@ -3294,7 +3375,7 @@ type FieldMapping struct { func (x *FieldMapping) Reset() { *x = FieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3306,7 +3387,7 @@ func (x *FieldMapping) String() string { func (*FieldMapping) ProtoMessage() {} func (x *FieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3319,7 +3400,7 @@ func (x *FieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldMapping.ProtoReflect.Descriptor instead. func (*FieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{42} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{43} } func (x *FieldMapping) GetOriginal() string { @@ -3356,7 +3437,7 @@ type ArgumentMapping struct { func (x *ArgumentMapping) Reset() { *x = ArgumentMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3368,7 +3449,7 @@ func (x *ArgumentMapping) String() string { func (*ArgumentMapping) ProtoMessage() {} func (x *ArgumentMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3381,7 +3462,7 @@ func (x *ArgumentMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use ArgumentMapping.ProtoReflect.Descriptor instead. func (*ArgumentMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{43} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{44} } func (x *ArgumentMapping) GetOriginal() string { @@ -3408,7 +3489,7 @@ type EnumMapping struct { func (x *EnumMapping) Reset() { *x = EnumMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3420,7 +3501,7 @@ func (x *EnumMapping) String() string { func (*EnumMapping) ProtoMessage() {} func (x *EnumMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3433,7 +3514,7 @@ func (x *EnumMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EnumMapping.ProtoReflect.Descriptor instead. func (*EnumMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{44} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{45} } func (x *EnumMapping) GetType() string { @@ -3460,7 +3541,7 @@ type EnumValueMapping struct { func (x *EnumValueMapping) Reset() { *x = EnumValueMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3472,7 +3553,7 @@ func (x *EnumValueMapping) String() string { func (*EnumValueMapping) ProtoMessage() {} func (x *EnumValueMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3485,7 +3566,7 @@ func (x *EnumValueMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EnumValueMapping.ProtoReflect.Descriptor instead. func (*EnumValueMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{45} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{46} } func (x *EnumValueMapping) GetOriginal() string { @@ -3513,7 +3594,7 @@ type NatsStreamConfiguration struct { func (x *NatsStreamConfiguration) Reset() { *x = NatsStreamConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3525,7 +3606,7 @@ func (x *NatsStreamConfiguration) String() string { func (*NatsStreamConfiguration) ProtoMessage() {} func (x *NatsStreamConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3538,7 +3619,7 @@ func (x *NatsStreamConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use NatsStreamConfiguration.ProtoReflect.Descriptor instead. func (*NatsStreamConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{46} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{47} } func (x *NatsStreamConfiguration) GetConsumerName() string { @@ -3573,7 +3654,7 @@ type NatsEventConfiguration struct { func (x *NatsEventConfiguration) Reset() { *x = NatsEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3585,7 +3666,7 @@ func (x *NatsEventConfiguration) String() string { func (*NatsEventConfiguration) ProtoMessage() {} func (x *NatsEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3598,7 +3679,7 @@ func (x *NatsEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use NatsEventConfiguration.ProtoReflect.Descriptor instead. func (*NatsEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{47} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{48} } func (x *NatsEventConfiguration) GetEngineEventConfiguration() *EngineEventConfiguration { @@ -3632,7 +3713,7 @@ type KafkaEventConfiguration struct { func (x *KafkaEventConfiguration) Reset() { *x = KafkaEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3644,7 +3725,7 @@ func (x *KafkaEventConfiguration) String() string { func (*KafkaEventConfiguration) ProtoMessage() {} func (x *KafkaEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3657,7 +3738,7 @@ func (x *KafkaEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use KafkaEventConfiguration.ProtoReflect.Descriptor instead. func (*KafkaEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{48} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{49} } func (x *KafkaEventConfiguration) GetEngineEventConfiguration() *EngineEventConfiguration { @@ -3684,7 +3765,7 @@ type RedisEventConfiguration struct { func (x *RedisEventConfiguration) Reset() { *x = RedisEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3696,7 +3777,7 @@ func (x *RedisEventConfiguration) String() string { func (*RedisEventConfiguration) ProtoMessage() {} func (x *RedisEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3709,7 +3790,7 @@ func (x *RedisEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use RedisEventConfiguration.ProtoReflect.Descriptor instead. func (*RedisEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{49} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{50} } func (x *RedisEventConfiguration) GetEngineEventConfiguration() *EngineEventConfiguration { @@ -3738,7 +3819,7 @@ type EngineEventConfiguration struct { func (x *EngineEventConfiguration) Reset() { *x = EngineEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3750,7 +3831,7 @@ func (x *EngineEventConfiguration) String() string { func (*EngineEventConfiguration) ProtoMessage() {} func (x *EngineEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3763,7 +3844,7 @@ func (x *EngineEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use EngineEventConfiguration.ProtoReflect.Descriptor instead. func (*EngineEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{50} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{51} } func (x *EngineEventConfiguration) GetProviderId() string { @@ -3805,7 +3886,7 @@ type DataSourceCustomEvents struct { func (x *DataSourceCustomEvents) Reset() { *x = DataSourceCustomEvents{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3817,7 +3898,7 @@ func (x *DataSourceCustomEvents) String() string { func (*DataSourceCustomEvents) ProtoMessage() {} func (x *DataSourceCustomEvents) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3830,7 +3911,7 @@ func (x *DataSourceCustomEvents) ProtoReflect() protoreflect.Message { // Deprecated: Use DataSourceCustomEvents.ProtoReflect.Descriptor instead. func (*DataSourceCustomEvents) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{51} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{52} } func (x *DataSourceCustomEvents) GetNats() []*NatsEventConfiguration { @@ -3863,7 +3944,7 @@ type DataSourceCustom_Static struct { func (x *DataSourceCustom_Static) Reset() { *x = DataSourceCustom_Static{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3875,7 +3956,7 @@ func (x *DataSourceCustom_Static) String() string { func (*DataSourceCustom_Static) ProtoMessage() {} func (x *DataSourceCustom_Static) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3888,7 +3969,7 @@ func (x *DataSourceCustom_Static) ProtoReflect() protoreflect.Message { // Deprecated: Use DataSourceCustom_Static.ProtoReflect.Descriptor instead. func (*DataSourceCustom_Static) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{52} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{53} } func (x *DataSourceCustom_Static) GetData() *ConfigurationVariable { @@ -3911,7 +3992,7 @@ type ConfigurationVariable struct { func (x *ConfigurationVariable) Reset() { *x = ConfigurationVariable{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3923,7 +4004,7 @@ func (x *ConfigurationVariable) String() string { func (*ConfigurationVariable) ProtoMessage() {} func (x *ConfigurationVariable) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3936,7 +4017,7 @@ func (x *ConfigurationVariable) ProtoReflect() protoreflect.Message { // Deprecated: Use ConfigurationVariable.ProtoReflect.Descriptor instead. func (*ConfigurationVariable) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{53} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{54} } func (x *ConfigurationVariable) GetKind() ConfigurationVariableKind { @@ -3984,7 +4065,7 @@ type DirectiveConfiguration struct { func (x *DirectiveConfiguration) Reset() { *x = DirectiveConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3996,7 +4077,7 @@ func (x *DirectiveConfiguration) String() string { func (*DirectiveConfiguration) ProtoMessage() {} func (x *DirectiveConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4009,7 +4090,7 @@ func (x *DirectiveConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use DirectiveConfiguration.ProtoReflect.Descriptor instead. func (*DirectiveConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{54} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{55} } func (x *DirectiveConfiguration) GetDirectiveName() string { @@ -4036,7 +4117,7 @@ type URLQueryConfiguration struct { func (x *URLQueryConfiguration) Reset() { *x = URLQueryConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4048,7 +4129,7 @@ func (x *URLQueryConfiguration) String() string { func (*URLQueryConfiguration) ProtoMessage() {} func (x *URLQueryConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4061,7 +4142,7 @@ func (x *URLQueryConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use URLQueryConfiguration.ProtoReflect.Descriptor instead. func (*URLQueryConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{55} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{56} } func (x *URLQueryConfiguration) GetName() string { @@ -4087,7 +4168,7 @@ type HTTPHeader struct { func (x *HTTPHeader) Reset() { *x = HTTPHeader{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4099,7 +4180,7 @@ func (x *HTTPHeader) String() string { func (*HTTPHeader) ProtoMessage() {} func (x *HTTPHeader) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4112,7 +4193,7 @@ func (x *HTTPHeader) ProtoReflect() protoreflect.Message { // Deprecated: Use HTTPHeader.ProtoReflect.Descriptor instead. func (*HTTPHeader) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{56} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{57} } func (x *HTTPHeader) GetValues() []*ConfigurationVariable { @@ -4133,7 +4214,7 @@ type MTLSConfiguration struct { func (x *MTLSConfiguration) Reset() { *x = MTLSConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4145,7 +4226,7 @@ func (x *MTLSConfiguration) String() string { func (*MTLSConfiguration) ProtoMessage() {} func (x *MTLSConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4158,7 +4239,7 @@ func (x *MTLSConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use MTLSConfiguration.ProtoReflect.Descriptor instead. func (*MTLSConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{57} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{58} } func (x *MTLSConfiguration) GetKey() *ConfigurationVariable { @@ -4196,7 +4277,7 @@ type GraphQLSubscriptionConfiguration struct { func (x *GraphQLSubscriptionConfiguration) Reset() { *x = GraphQLSubscriptionConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4208,7 +4289,7 @@ func (x *GraphQLSubscriptionConfiguration) String() string { func (*GraphQLSubscriptionConfiguration) ProtoMessage() {} func (x *GraphQLSubscriptionConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4221,7 +4302,7 @@ func (x *GraphQLSubscriptionConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use GraphQLSubscriptionConfiguration.ProtoReflect.Descriptor instead. func (*GraphQLSubscriptionConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{58} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{59} } func (x *GraphQLSubscriptionConfiguration) GetEnabled() bool { @@ -4269,7 +4350,7 @@ type GraphQLFederationConfiguration struct { func (x *GraphQLFederationConfiguration) Reset() { *x = GraphQLFederationConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4281,7 +4362,7 @@ func (x *GraphQLFederationConfiguration) String() string { func (*GraphQLFederationConfiguration) ProtoMessage() {} func (x *GraphQLFederationConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4294,7 +4375,7 @@ func (x *GraphQLFederationConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use GraphQLFederationConfiguration.ProtoReflect.Descriptor instead. func (*GraphQLFederationConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{59} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{60} } func (x *GraphQLFederationConfiguration) GetEnabled() bool { @@ -4321,7 +4402,7 @@ type InternedString struct { func (x *InternedString) Reset() { *x = InternedString{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4333,7 +4414,7 @@ func (x *InternedString) String() string { func (*InternedString) ProtoMessage() {} func (x *InternedString) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4346,7 +4427,7 @@ func (x *InternedString) ProtoReflect() protoreflect.Message { // Deprecated: Use InternedString.ProtoReflect.Descriptor instead. func (*InternedString) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{60} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{61} } func (x *InternedString) GetKey() string { @@ -4366,7 +4447,7 @@ type SingleTypeField struct { func (x *SingleTypeField) Reset() { *x = SingleTypeField{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4378,7 +4459,7 @@ func (x *SingleTypeField) String() string { func (*SingleTypeField) ProtoMessage() {} func (x *SingleTypeField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4391,7 +4472,7 @@ func (x *SingleTypeField) ProtoReflect() protoreflect.Message { // Deprecated: Use SingleTypeField.ProtoReflect.Descriptor instead. func (*SingleTypeField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{61} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{62} } func (x *SingleTypeField) GetTypeName() string { @@ -4418,7 +4499,7 @@ type SubscriptionFieldCondition struct { func (x *SubscriptionFieldCondition) Reset() { *x = SubscriptionFieldCondition{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4430,7 +4511,7 @@ func (x *SubscriptionFieldCondition) String() string { func (*SubscriptionFieldCondition) ProtoMessage() {} func (x *SubscriptionFieldCondition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4443,7 +4524,7 @@ func (x *SubscriptionFieldCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionFieldCondition.ProtoReflect.Descriptor instead. func (*SubscriptionFieldCondition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{62} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{63} } func (x *SubscriptionFieldCondition) GetFieldPath() []string { @@ -4472,7 +4553,7 @@ type SubscriptionFilterCondition struct { func (x *SubscriptionFilterCondition) Reset() { *x = SubscriptionFilterCondition{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4484,7 +4565,7 @@ func (x *SubscriptionFilterCondition) String() string { func (*SubscriptionFilterCondition) ProtoMessage() {} func (x *SubscriptionFilterCondition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4497,7 +4578,7 @@ func (x *SubscriptionFilterCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionFilterCondition.ProtoReflect.Descriptor instead. func (*SubscriptionFilterCondition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{63} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{64} } func (x *SubscriptionFilterCondition) GetAnd() []*SubscriptionFilterCondition { @@ -4537,7 +4618,7 @@ type CacheWarmerOperations struct { func (x *CacheWarmerOperations) Reset() { *x = CacheWarmerOperations{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4549,7 +4630,7 @@ func (x *CacheWarmerOperations) String() string { func (*CacheWarmerOperations) ProtoMessage() {} func (x *CacheWarmerOperations) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4562,7 +4643,7 @@ func (x *CacheWarmerOperations) ProtoReflect() protoreflect.Message { // Deprecated: Use CacheWarmerOperations.ProtoReflect.Descriptor instead. func (*CacheWarmerOperations) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{64} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{65} } func (x *CacheWarmerOperations) GetOperations() []*Operation { @@ -4582,7 +4663,7 @@ type Operation struct { func (x *Operation) Reset() { *x = Operation{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4594,7 +4675,7 @@ func (x *Operation) String() string { func (*Operation) ProtoMessage() {} func (x *Operation) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4607,7 +4688,7 @@ func (x *Operation) ProtoReflect() protoreflect.Message { // Deprecated: Use Operation.ProtoReflect.Descriptor instead. func (*Operation) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{65} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{66} } func (x *Operation) GetRequest() *OperationRequest { @@ -4635,7 +4716,7 @@ type OperationRequest struct { func (x *OperationRequest) Reset() { *x = OperationRequest{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4647,7 +4728,7 @@ func (x *OperationRequest) String() string { func (*OperationRequest) ProtoMessage() {} func (x *OperationRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4660,7 +4741,7 @@ func (x *OperationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use OperationRequest.ProtoReflect.Descriptor instead. func (*OperationRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{66} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{67} } func (x *OperationRequest) GetOperationName() string { @@ -4693,7 +4774,7 @@ type Extension struct { func (x *Extension) Reset() { *x = Extension{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4705,7 +4786,7 @@ func (x *Extension) String() string { func (*Extension) ProtoMessage() {} func (x *Extension) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4718,7 +4799,7 @@ func (x *Extension) ProtoReflect() protoreflect.Message { // Deprecated: Use Extension.ProtoReflect.Descriptor instead. func (*Extension) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{67} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{68} } func (x *Extension) GetPersistedQuery() *PersistedQuery { @@ -4738,7 +4819,7 @@ type PersistedQuery struct { func (x *PersistedQuery) Reset() { *x = PersistedQuery{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4750,7 +4831,7 @@ func (x *PersistedQuery) String() string { func (*PersistedQuery) ProtoMessage() {} func (x *PersistedQuery) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[69] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4763,7 +4844,7 @@ func (x *PersistedQuery) ProtoReflect() protoreflect.Message { // Deprecated: Use PersistedQuery.ProtoReflect.Descriptor instead. func (*PersistedQuery) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{68} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{69} } func (x *PersistedQuery) GetSha256Hash() string { @@ -4790,7 +4871,7 @@ type ClientInfo struct { func (x *ClientInfo) Reset() { *x = ClientInfo{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[69] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4802,7 +4883,7 @@ func (x *ClientInfo) String() string { func (*ClientInfo) ProtoMessage() {} func (x *ClientInfo) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[69] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[70] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4815,7 +4896,7 @@ func (x *ClientInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ClientInfo.ProtoReflect.Descriptor instead. func (*ClientInfo) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{69} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{70} } func (x *ClientInfo) GetName() string { @@ -4910,10 +4991,11 @@ const file_wg_cosmo_node_v1_node_proto_rawDesc = "" + "\x11entity_interfaces\x18\x0e \x03(\v2..wg.cosmo.node.v1.EntityInterfaceConfigurationR\x10entityInterfaces\x12[\n" + "\x11interface_objects\x18\x0f \x03(\v2..wg.cosmo.node.v1.EntityInterfaceConfigurationR\x10interfaceObjects\x12R\n" + "\x12cost_configuration\x18\x10 \x01(\v2#.wg.cosmo.node.v1.CostConfigurationR\x11costConfiguration\x12F\n" + - "\x0eentity_caching\x18\x11 \x01(\v2\x1f.wg.cosmo.node.v1.EntityCachingR\rentityCaching\"\xf3\x01\n" + + "\x0eentity_caching\x18\x11 \x01(\v2\x1f.wg.cosmo.node.v1.EntityCachingR\rentityCaching\"\xe5\x02\n" + "\rEntityCaching\x12j\n" + "\x1bentity_cache_configurations\x18\x01 \x03(\v2*.wg.cosmo.node.v1.EntityCacheConfigurationR\x19entityCacheConfigurations\x12v\n" + - "\x1fcache_invalidate_configurations\x18\x02 \x03(\v2..wg.cosmo.node.v1.CacheInvalidateConfigurationR\x1dcacheInvalidateConfigurations\"\x95\x02\n" + + "\x1fcache_invalidate_configurations\x18\x02 \x03(\v2..wg.cosmo.node.v1.CacheInvalidateConfigurationR\x1dcacheInvalidateConfigurations\x12p\n" + + "\x1dcache_populate_configurations\x18\x03 \x03(\v2,.wg.cosmo.node.v1.CachePopulateConfigurationR\x1bcachePopulateConfigurations\"\x95\x02\n" + "\x18EntityCacheConfiguration\x12\x1b\n" + "\ttype_name\x18\x01 \x01(\tR\btypeName\x12&\n" + "\x0fmax_age_seconds\x18\x02 \x01(\x03R\rmaxAgeSeconds\x12'\n" + @@ -4926,7 +5008,14 @@ const file_wg_cosmo_node_v1_node_proto_rawDesc = "" + "\n" + "field_name\x18\x01 \x01(\tR\tfieldName\x12%\n" + "\x0eoperation_type\x18\x02 \x01(\tR\roperationType\x12(\n" + - "\x10entity_type_name\x18\x03 \x01(\tR\x0eentityTypeName\"\x98\x04\n" + + "\x10entity_type_name\x18\x03 \x01(\tR\x0eentityTypeName\"\xcd\x01\n" + + "\x1aCachePopulateConfiguration\x12\x1d\n" + + "\n" + + "field_name\x18\x01 \x01(\tR\tfieldName\x12%\n" + + "\x0eoperation_type\x18\x02 \x01(\tR\roperationType\x12+\n" + + "\x0fmax_age_seconds\x18\x03 \x01(\x03H\x00R\rmaxAgeSeconds\x88\x01\x01\x12(\n" + + "\x10entity_type_name\x18\x04 \x01(\tR\x0eentityTypeNameB\x12\n" + + "\x10_max_age_seconds\"\x98\x04\n" + "\x11CostConfiguration\x12O\n" + "\rfield_weights\x18\x01 \x03(\v2*.wg.cosmo.node.v1.FieldWeightConfigurationR\ffieldWeights\x12K\n" + "\n" + @@ -5265,7 +5354,7 @@ func file_wg_cosmo_node_v1_node_proto_rawDescGZIP() []byte { } var file_wg_cosmo_node_v1_node_proto_enumTypes = make([]protoimpl.EnumInfo, 8) -var file_wg_cosmo_node_v1_node_proto_msgTypes = make([]protoimpl.MessageInfo, 77) +var file_wg_cosmo_node_v1_node_proto_msgTypes = make([]protoimpl.MessageInfo, 78) var file_wg_cosmo_node_v1_node_proto_goTypes = []any{ (ArgumentRenderConfiguration)(0), // 0: wg.cosmo.node.v1.ArgumentRenderConfiguration (ArgumentSource)(0), // 1: wg.cosmo.node.v1.ArgumentSource @@ -5290,183 +5379,185 @@ var file_wg_cosmo_node_v1_node_proto_goTypes = []any{ (*EntityCaching)(nil), // 20: wg.cosmo.node.v1.EntityCaching (*EntityCacheConfiguration)(nil), // 21: wg.cosmo.node.v1.EntityCacheConfiguration (*CacheInvalidateConfiguration)(nil), // 22: wg.cosmo.node.v1.CacheInvalidateConfiguration - (*CostConfiguration)(nil), // 23: wg.cosmo.node.v1.CostConfiguration - (*FieldWeightConfiguration)(nil), // 24: wg.cosmo.node.v1.FieldWeightConfiguration - (*FieldListSizeConfiguration)(nil), // 25: wg.cosmo.node.v1.FieldListSizeConfiguration - (*ArgumentConfiguration)(nil), // 26: wg.cosmo.node.v1.ArgumentConfiguration - (*Scopes)(nil), // 27: wg.cosmo.node.v1.Scopes - (*AuthorizationConfiguration)(nil), // 28: wg.cosmo.node.v1.AuthorizationConfiguration - (*FieldConfiguration)(nil), // 29: wg.cosmo.node.v1.FieldConfiguration - (*TypeConfiguration)(nil), // 30: wg.cosmo.node.v1.TypeConfiguration - (*TypeField)(nil), // 31: wg.cosmo.node.v1.TypeField - (*FieldCoordinates)(nil), // 32: wg.cosmo.node.v1.FieldCoordinates - (*FieldSetCondition)(nil), // 33: wg.cosmo.node.v1.FieldSetCondition - (*RequiredField)(nil), // 34: wg.cosmo.node.v1.RequiredField - (*EntityInterfaceConfiguration)(nil), // 35: wg.cosmo.node.v1.EntityInterfaceConfiguration - (*FetchConfiguration)(nil), // 36: wg.cosmo.node.v1.FetchConfiguration - (*StatusCodeTypeMapping)(nil), // 37: wg.cosmo.node.v1.StatusCodeTypeMapping - (*DataSourceCustom_GraphQL)(nil), // 38: wg.cosmo.node.v1.DataSourceCustom_GraphQL - (*GRPCConfiguration)(nil), // 39: wg.cosmo.node.v1.GRPCConfiguration - (*ImageReference)(nil), // 40: wg.cosmo.node.v1.ImageReference - (*PluginConfiguration)(nil), // 41: wg.cosmo.node.v1.PluginConfiguration - (*SSLConfiguration)(nil), // 42: wg.cosmo.node.v1.SSLConfiguration - (*GRPCMapping)(nil), // 43: wg.cosmo.node.v1.GRPCMapping - (*LookupMapping)(nil), // 44: wg.cosmo.node.v1.LookupMapping - (*LookupFieldMapping)(nil), // 45: wg.cosmo.node.v1.LookupFieldMapping - (*OperationMapping)(nil), // 46: wg.cosmo.node.v1.OperationMapping - (*EntityMapping)(nil), // 47: wg.cosmo.node.v1.EntityMapping - (*RequiredFieldMapping)(nil), // 48: wg.cosmo.node.v1.RequiredFieldMapping - (*TypeFieldMapping)(nil), // 49: wg.cosmo.node.v1.TypeFieldMapping - (*FieldMapping)(nil), // 50: wg.cosmo.node.v1.FieldMapping - (*ArgumentMapping)(nil), // 51: wg.cosmo.node.v1.ArgumentMapping - (*EnumMapping)(nil), // 52: wg.cosmo.node.v1.EnumMapping - (*EnumValueMapping)(nil), // 53: wg.cosmo.node.v1.EnumValueMapping - (*NatsStreamConfiguration)(nil), // 54: wg.cosmo.node.v1.NatsStreamConfiguration - (*NatsEventConfiguration)(nil), // 55: wg.cosmo.node.v1.NatsEventConfiguration - (*KafkaEventConfiguration)(nil), // 56: wg.cosmo.node.v1.KafkaEventConfiguration - (*RedisEventConfiguration)(nil), // 57: wg.cosmo.node.v1.RedisEventConfiguration - (*EngineEventConfiguration)(nil), // 58: wg.cosmo.node.v1.EngineEventConfiguration - (*DataSourceCustomEvents)(nil), // 59: wg.cosmo.node.v1.DataSourceCustomEvents - (*DataSourceCustom_Static)(nil), // 60: wg.cosmo.node.v1.DataSourceCustom_Static - (*ConfigurationVariable)(nil), // 61: wg.cosmo.node.v1.ConfigurationVariable - (*DirectiveConfiguration)(nil), // 62: wg.cosmo.node.v1.DirectiveConfiguration - (*URLQueryConfiguration)(nil), // 63: wg.cosmo.node.v1.URLQueryConfiguration - (*HTTPHeader)(nil), // 64: wg.cosmo.node.v1.HTTPHeader - (*MTLSConfiguration)(nil), // 65: wg.cosmo.node.v1.MTLSConfiguration - (*GraphQLSubscriptionConfiguration)(nil), // 66: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration - (*GraphQLFederationConfiguration)(nil), // 67: wg.cosmo.node.v1.GraphQLFederationConfiguration - (*InternedString)(nil), // 68: wg.cosmo.node.v1.InternedString - (*SingleTypeField)(nil), // 69: wg.cosmo.node.v1.SingleTypeField - (*SubscriptionFieldCondition)(nil), // 70: wg.cosmo.node.v1.SubscriptionFieldCondition - (*SubscriptionFilterCondition)(nil), // 71: wg.cosmo.node.v1.SubscriptionFilterCondition - (*CacheWarmerOperations)(nil), // 72: wg.cosmo.node.v1.CacheWarmerOperations - (*Operation)(nil), // 73: wg.cosmo.node.v1.Operation - (*OperationRequest)(nil), // 74: wg.cosmo.node.v1.OperationRequest - (*Extension)(nil), // 75: wg.cosmo.node.v1.Extension - (*PersistedQuery)(nil), // 76: wg.cosmo.node.v1.PersistedQuery - (*ClientInfo)(nil), // 77: wg.cosmo.node.v1.ClientInfo - nil, // 78: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry - nil, // 79: wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry - nil, // 80: wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry - nil, // 81: wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry - nil, // 82: wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry - nil, // 83: wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry - nil, // 84: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry - (common.EnumStatusCode)(0), // 85: wg.cosmo.common.EnumStatusCode - (common.GraphQLSubscriptionProtocol)(0), // 86: wg.cosmo.common.GraphQLSubscriptionProtocol - (common.GraphQLWebsocketSubprotocol)(0), // 87: wg.cosmo.common.GraphQLWebsocketSubprotocol + (*CachePopulateConfiguration)(nil), // 23: wg.cosmo.node.v1.CachePopulateConfiguration + (*CostConfiguration)(nil), // 24: wg.cosmo.node.v1.CostConfiguration + (*FieldWeightConfiguration)(nil), // 25: wg.cosmo.node.v1.FieldWeightConfiguration + (*FieldListSizeConfiguration)(nil), // 26: wg.cosmo.node.v1.FieldListSizeConfiguration + (*ArgumentConfiguration)(nil), // 27: wg.cosmo.node.v1.ArgumentConfiguration + (*Scopes)(nil), // 28: wg.cosmo.node.v1.Scopes + (*AuthorizationConfiguration)(nil), // 29: wg.cosmo.node.v1.AuthorizationConfiguration + (*FieldConfiguration)(nil), // 30: wg.cosmo.node.v1.FieldConfiguration + (*TypeConfiguration)(nil), // 31: wg.cosmo.node.v1.TypeConfiguration + (*TypeField)(nil), // 32: wg.cosmo.node.v1.TypeField + (*FieldCoordinates)(nil), // 33: wg.cosmo.node.v1.FieldCoordinates + (*FieldSetCondition)(nil), // 34: wg.cosmo.node.v1.FieldSetCondition + (*RequiredField)(nil), // 35: wg.cosmo.node.v1.RequiredField + (*EntityInterfaceConfiguration)(nil), // 36: wg.cosmo.node.v1.EntityInterfaceConfiguration + (*FetchConfiguration)(nil), // 37: wg.cosmo.node.v1.FetchConfiguration + (*StatusCodeTypeMapping)(nil), // 38: wg.cosmo.node.v1.StatusCodeTypeMapping + (*DataSourceCustom_GraphQL)(nil), // 39: wg.cosmo.node.v1.DataSourceCustom_GraphQL + (*GRPCConfiguration)(nil), // 40: wg.cosmo.node.v1.GRPCConfiguration + (*ImageReference)(nil), // 41: wg.cosmo.node.v1.ImageReference + (*PluginConfiguration)(nil), // 42: wg.cosmo.node.v1.PluginConfiguration + (*SSLConfiguration)(nil), // 43: wg.cosmo.node.v1.SSLConfiguration + (*GRPCMapping)(nil), // 44: wg.cosmo.node.v1.GRPCMapping + (*LookupMapping)(nil), // 45: wg.cosmo.node.v1.LookupMapping + (*LookupFieldMapping)(nil), // 46: wg.cosmo.node.v1.LookupFieldMapping + (*OperationMapping)(nil), // 47: wg.cosmo.node.v1.OperationMapping + (*EntityMapping)(nil), // 48: wg.cosmo.node.v1.EntityMapping + (*RequiredFieldMapping)(nil), // 49: wg.cosmo.node.v1.RequiredFieldMapping + (*TypeFieldMapping)(nil), // 50: wg.cosmo.node.v1.TypeFieldMapping + (*FieldMapping)(nil), // 51: wg.cosmo.node.v1.FieldMapping + (*ArgumentMapping)(nil), // 52: wg.cosmo.node.v1.ArgumentMapping + (*EnumMapping)(nil), // 53: wg.cosmo.node.v1.EnumMapping + (*EnumValueMapping)(nil), // 54: wg.cosmo.node.v1.EnumValueMapping + (*NatsStreamConfiguration)(nil), // 55: wg.cosmo.node.v1.NatsStreamConfiguration + (*NatsEventConfiguration)(nil), // 56: wg.cosmo.node.v1.NatsEventConfiguration + (*KafkaEventConfiguration)(nil), // 57: wg.cosmo.node.v1.KafkaEventConfiguration + (*RedisEventConfiguration)(nil), // 58: wg.cosmo.node.v1.RedisEventConfiguration + (*EngineEventConfiguration)(nil), // 59: wg.cosmo.node.v1.EngineEventConfiguration + (*DataSourceCustomEvents)(nil), // 60: wg.cosmo.node.v1.DataSourceCustomEvents + (*DataSourceCustom_Static)(nil), // 61: wg.cosmo.node.v1.DataSourceCustom_Static + (*ConfigurationVariable)(nil), // 62: wg.cosmo.node.v1.ConfigurationVariable + (*DirectiveConfiguration)(nil), // 63: wg.cosmo.node.v1.DirectiveConfiguration + (*URLQueryConfiguration)(nil), // 64: wg.cosmo.node.v1.URLQueryConfiguration + (*HTTPHeader)(nil), // 65: wg.cosmo.node.v1.HTTPHeader + (*MTLSConfiguration)(nil), // 66: wg.cosmo.node.v1.MTLSConfiguration + (*GraphQLSubscriptionConfiguration)(nil), // 67: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration + (*GraphQLFederationConfiguration)(nil), // 68: wg.cosmo.node.v1.GraphQLFederationConfiguration + (*InternedString)(nil), // 69: wg.cosmo.node.v1.InternedString + (*SingleTypeField)(nil), // 70: wg.cosmo.node.v1.SingleTypeField + (*SubscriptionFieldCondition)(nil), // 71: wg.cosmo.node.v1.SubscriptionFieldCondition + (*SubscriptionFilterCondition)(nil), // 72: wg.cosmo.node.v1.SubscriptionFilterCondition + (*CacheWarmerOperations)(nil), // 73: wg.cosmo.node.v1.CacheWarmerOperations + (*Operation)(nil), // 74: wg.cosmo.node.v1.Operation + (*OperationRequest)(nil), // 75: wg.cosmo.node.v1.OperationRequest + (*Extension)(nil), // 76: wg.cosmo.node.v1.Extension + (*PersistedQuery)(nil), // 77: wg.cosmo.node.v1.PersistedQuery + (*ClientInfo)(nil), // 78: wg.cosmo.node.v1.ClientInfo + nil, // 79: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry + nil, // 80: wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry + nil, // 81: wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry + nil, // 82: wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry + nil, // 83: wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry + nil, // 84: wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry + nil, // 85: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry + (common.EnumStatusCode)(0), // 86: wg.cosmo.common.EnumStatusCode + (common.GraphQLSubscriptionProtocol)(0), // 87: wg.cosmo.common.GraphQLSubscriptionProtocol + (common.GraphQLWebsocketSubprotocol)(0), // 88: wg.cosmo.common.GraphQLWebsocketSubprotocol } var file_wg_cosmo_node_v1_node_proto_depIdxs = []int32{ - 78, // 0: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.config_by_feature_flag_name:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry + 79, // 0: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.config_by_feature_flag_name:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry 18, // 1: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig.engine_config:type_name -> wg.cosmo.node.v1.EngineConfiguration 8, // 2: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig.subgraphs:type_name -> wg.cosmo.node.v1.Subgraph 18, // 3: wg.cosmo.node.v1.RouterConfig.engine_config:type_name -> wg.cosmo.node.v1.EngineConfiguration 8, // 4: wg.cosmo.node.v1.RouterConfig.subgraphs:type_name -> wg.cosmo.node.v1.Subgraph 9, // 5: wg.cosmo.node.v1.RouterConfig.feature_flag_configs:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs - 85, // 6: wg.cosmo.node.v1.Response.code:type_name -> wg.cosmo.common.EnumStatusCode + 86, // 6: wg.cosmo.node.v1.Response.code:type_name -> wg.cosmo.common.EnumStatusCode 15, // 7: wg.cosmo.node.v1.RegistrationInfo.account_limits:type_name -> wg.cosmo.node.v1.AccountLimits 12, // 8: wg.cosmo.node.v1.SelfRegisterResponse.response:type_name -> wg.cosmo.node.v1.Response 14, // 9: wg.cosmo.node.v1.SelfRegisterResponse.registrationInfo:type_name -> wg.cosmo.node.v1.RegistrationInfo 19, // 10: wg.cosmo.node.v1.EngineConfiguration.datasource_configurations:type_name -> wg.cosmo.node.v1.DataSourceConfiguration - 29, // 11: wg.cosmo.node.v1.EngineConfiguration.field_configurations:type_name -> wg.cosmo.node.v1.FieldConfiguration - 30, // 12: wg.cosmo.node.v1.EngineConfiguration.type_configurations:type_name -> wg.cosmo.node.v1.TypeConfiguration - 79, // 13: wg.cosmo.node.v1.EngineConfiguration.string_storage:type_name -> wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry + 30, // 11: wg.cosmo.node.v1.EngineConfiguration.field_configurations:type_name -> wg.cosmo.node.v1.FieldConfiguration + 31, // 12: wg.cosmo.node.v1.EngineConfiguration.type_configurations:type_name -> wg.cosmo.node.v1.TypeConfiguration + 80, // 13: wg.cosmo.node.v1.EngineConfiguration.string_storage:type_name -> wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry 2, // 14: wg.cosmo.node.v1.DataSourceConfiguration.kind:type_name -> wg.cosmo.node.v1.DataSourceKind - 31, // 15: wg.cosmo.node.v1.DataSourceConfiguration.root_nodes:type_name -> wg.cosmo.node.v1.TypeField - 31, // 16: wg.cosmo.node.v1.DataSourceConfiguration.child_nodes:type_name -> wg.cosmo.node.v1.TypeField - 38, // 17: wg.cosmo.node.v1.DataSourceConfiguration.custom_graphql:type_name -> wg.cosmo.node.v1.DataSourceCustom_GraphQL - 60, // 18: wg.cosmo.node.v1.DataSourceConfiguration.custom_static:type_name -> wg.cosmo.node.v1.DataSourceCustom_Static - 62, // 19: wg.cosmo.node.v1.DataSourceConfiguration.directives:type_name -> wg.cosmo.node.v1.DirectiveConfiguration - 34, // 20: wg.cosmo.node.v1.DataSourceConfiguration.keys:type_name -> wg.cosmo.node.v1.RequiredField - 34, // 21: wg.cosmo.node.v1.DataSourceConfiguration.provides:type_name -> wg.cosmo.node.v1.RequiredField - 34, // 22: wg.cosmo.node.v1.DataSourceConfiguration.requires:type_name -> wg.cosmo.node.v1.RequiredField - 59, // 23: wg.cosmo.node.v1.DataSourceConfiguration.custom_events:type_name -> wg.cosmo.node.v1.DataSourceCustomEvents - 35, // 24: wg.cosmo.node.v1.DataSourceConfiguration.entity_interfaces:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration - 35, // 25: wg.cosmo.node.v1.DataSourceConfiguration.interface_objects:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration - 23, // 26: wg.cosmo.node.v1.DataSourceConfiguration.cost_configuration:type_name -> wg.cosmo.node.v1.CostConfiguration + 32, // 15: wg.cosmo.node.v1.DataSourceConfiguration.root_nodes:type_name -> wg.cosmo.node.v1.TypeField + 32, // 16: wg.cosmo.node.v1.DataSourceConfiguration.child_nodes:type_name -> wg.cosmo.node.v1.TypeField + 39, // 17: wg.cosmo.node.v1.DataSourceConfiguration.custom_graphql:type_name -> wg.cosmo.node.v1.DataSourceCustom_GraphQL + 61, // 18: wg.cosmo.node.v1.DataSourceConfiguration.custom_static:type_name -> wg.cosmo.node.v1.DataSourceCustom_Static + 63, // 19: wg.cosmo.node.v1.DataSourceConfiguration.directives:type_name -> wg.cosmo.node.v1.DirectiveConfiguration + 35, // 20: wg.cosmo.node.v1.DataSourceConfiguration.keys:type_name -> wg.cosmo.node.v1.RequiredField + 35, // 21: wg.cosmo.node.v1.DataSourceConfiguration.provides:type_name -> wg.cosmo.node.v1.RequiredField + 35, // 22: wg.cosmo.node.v1.DataSourceConfiguration.requires:type_name -> wg.cosmo.node.v1.RequiredField + 60, // 23: wg.cosmo.node.v1.DataSourceConfiguration.custom_events:type_name -> wg.cosmo.node.v1.DataSourceCustomEvents + 36, // 24: wg.cosmo.node.v1.DataSourceConfiguration.entity_interfaces:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration + 36, // 25: wg.cosmo.node.v1.DataSourceConfiguration.interface_objects:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration + 24, // 26: wg.cosmo.node.v1.DataSourceConfiguration.cost_configuration:type_name -> wg.cosmo.node.v1.CostConfiguration 20, // 27: wg.cosmo.node.v1.DataSourceConfiguration.entity_caching:type_name -> wg.cosmo.node.v1.EntityCaching 21, // 28: wg.cosmo.node.v1.EntityCaching.entity_cache_configurations:type_name -> wg.cosmo.node.v1.EntityCacheConfiguration 22, // 29: wg.cosmo.node.v1.EntityCaching.cache_invalidate_configurations:type_name -> wg.cosmo.node.v1.CacheInvalidateConfiguration - 24, // 30: wg.cosmo.node.v1.CostConfiguration.field_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration - 25, // 31: wg.cosmo.node.v1.CostConfiguration.list_sizes:type_name -> wg.cosmo.node.v1.FieldListSizeConfiguration - 80, // 32: wg.cosmo.node.v1.CostConfiguration.type_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry - 81, // 33: wg.cosmo.node.v1.CostConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry - 82, // 34: wg.cosmo.node.v1.FieldWeightConfiguration.argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry - 83, // 35: wg.cosmo.node.v1.FieldWeightConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry - 1, // 36: wg.cosmo.node.v1.ArgumentConfiguration.source_type:type_name -> wg.cosmo.node.v1.ArgumentSource - 27, // 37: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes:type_name -> wg.cosmo.node.v1.Scopes - 27, // 38: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes_by_or:type_name -> wg.cosmo.node.v1.Scopes - 26, // 39: wg.cosmo.node.v1.FieldConfiguration.arguments_configuration:type_name -> wg.cosmo.node.v1.ArgumentConfiguration - 28, // 40: wg.cosmo.node.v1.FieldConfiguration.authorization_configuration:type_name -> wg.cosmo.node.v1.AuthorizationConfiguration - 71, // 41: wg.cosmo.node.v1.FieldConfiguration.subscription_filter_condition:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 32, // 42: wg.cosmo.node.v1.FieldSetCondition.field_coordinates_path:type_name -> wg.cosmo.node.v1.FieldCoordinates - 33, // 43: wg.cosmo.node.v1.RequiredField.conditions:type_name -> wg.cosmo.node.v1.FieldSetCondition - 61, // 44: wg.cosmo.node.v1.FetchConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 7, // 45: wg.cosmo.node.v1.FetchConfiguration.method:type_name -> wg.cosmo.node.v1.HTTPMethod - 84, // 46: wg.cosmo.node.v1.FetchConfiguration.header:type_name -> wg.cosmo.node.v1.FetchConfiguration.HeaderEntry - 61, // 47: wg.cosmo.node.v1.FetchConfiguration.body:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 63, // 48: wg.cosmo.node.v1.FetchConfiguration.query:type_name -> wg.cosmo.node.v1.URLQueryConfiguration - 65, // 49: wg.cosmo.node.v1.FetchConfiguration.mtls:type_name -> wg.cosmo.node.v1.MTLSConfiguration - 61, // 50: wg.cosmo.node.v1.FetchConfiguration.base_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 61, // 51: wg.cosmo.node.v1.FetchConfiguration.path:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 61, // 52: wg.cosmo.node.v1.FetchConfiguration.http_proxy_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 36, // 53: wg.cosmo.node.v1.DataSourceCustom_GraphQL.fetch:type_name -> wg.cosmo.node.v1.FetchConfiguration - 66, // 54: wg.cosmo.node.v1.DataSourceCustom_GraphQL.subscription:type_name -> wg.cosmo.node.v1.GraphQLSubscriptionConfiguration - 67, // 55: wg.cosmo.node.v1.DataSourceCustom_GraphQL.federation:type_name -> wg.cosmo.node.v1.GraphQLFederationConfiguration - 68, // 56: wg.cosmo.node.v1.DataSourceCustom_GraphQL.upstream_schema:type_name -> wg.cosmo.node.v1.InternedString - 69, // 57: wg.cosmo.node.v1.DataSourceCustom_GraphQL.custom_scalar_type_fields:type_name -> wg.cosmo.node.v1.SingleTypeField - 39, // 58: wg.cosmo.node.v1.DataSourceCustom_GraphQL.grpc:type_name -> wg.cosmo.node.v1.GRPCConfiguration - 43, // 59: wg.cosmo.node.v1.GRPCConfiguration.mapping:type_name -> wg.cosmo.node.v1.GRPCMapping - 41, // 60: wg.cosmo.node.v1.GRPCConfiguration.plugin:type_name -> wg.cosmo.node.v1.PluginConfiguration - 40, // 61: wg.cosmo.node.v1.PluginConfiguration.image_reference:type_name -> wg.cosmo.node.v1.ImageReference - 46, // 62: wg.cosmo.node.v1.GRPCMapping.operation_mappings:type_name -> wg.cosmo.node.v1.OperationMapping - 47, // 63: wg.cosmo.node.v1.GRPCMapping.entity_mappings:type_name -> wg.cosmo.node.v1.EntityMapping - 49, // 64: wg.cosmo.node.v1.GRPCMapping.type_field_mappings:type_name -> wg.cosmo.node.v1.TypeFieldMapping - 52, // 65: wg.cosmo.node.v1.GRPCMapping.enum_mappings:type_name -> wg.cosmo.node.v1.EnumMapping - 44, // 66: wg.cosmo.node.v1.GRPCMapping.resolve_mappings:type_name -> wg.cosmo.node.v1.LookupMapping - 3, // 67: wg.cosmo.node.v1.LookupMapping.type:type_name -> wg.cosmo.node.v1.LookupType - 45, // 68: wg.cosmo.node.v1.LookupMapping.lookup_mapping:type_name -> wg.cosmo.node.v1.LookupFieldMapping - 50, // 69: wg.cosmo.node.v1.LookupFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping - 4, // 70: wg.cosmo.node.v1.OperationMapping.type:type_name -> wg.cosmo.node.v1.OperationType - 48, // 71: wg.cosmo.node.v1.EntityMapping.required_field_mappings:type_name -> wg.cosmo.node.v1.RequiredFieldMapping - 50, // 72: wg.cosmo.node.v1.RequiredFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping - 50, // 73: wg.cosmo.node.v1.TypeFieldMapping.field_mappings:type_name -> wg.cosmo.node.v1.FieldMapping - 51, // 74: wg.cosmo.node.v1.FieldMapping.argument_mappings:type_name -> wg.cosmo.node.v1.ArgumentMapping - 53, // 75: wg.cosmo.node.v1.EnumMapping.values:type_name -> wg.cosmo.node.v1.EnumValueMapping - 58, // 76: wg.cosmo.node.v1.NatsEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 54, // 77: wg.cosmo.node.v1.NatsEventConfiguration.stream_configuration:type_name -> wg.cosmo.node.v1.NatsStreamConfiguration - 58, // 78: wg.cosmo.node.v1.KafkaEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 58, // 79: wg.cosmo.node.v1.RedisEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 5, // 80: wg.cosmo.node.v1.EngineEventConfiguration.type:type_name -> wg.cosmo.node.v1.EventType - 55, // 81: wg.cosmo.node.v1.DataSourceCustomEvents.nats:type_name -> wg.cosmo.node.v1.NatsEventConfiguration - 56, // 82: wg.cosmo.node.v1.DataSourceCustomEvents.kafka:type_name -> wg.cosmo.node.v1.KafkaEventConfiguration - 57, // 83: wg.cosmo.node.v1.DataSourceCustomEvents.redis:type_name -> wg.cosmo.node.v1.RedisEventConfiguration - 61, // 84: wg.cosmo.node.v1.DataSourceCustom_Static.data:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 6, // 85: wg.cosmo.node.v1.ConfigurationVariable.kind:type_name -> wg.cosmo.node.v1.ConfigurationVariableKind - 61, // 86: wg.cosmo.node.v1.HTTPHeader.values:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 61, // 87: wg.cosmo.node.v1.MTLSConfiguration.key:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 61, // 88: wg.cosmo.node.v1.MTLSConfiguration.cert:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 61, // 89: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 86, // 90: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol - 87, // 91: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.websocketSubprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol - 71, // 92: wg.cosmo.node.v1.SubscriptionFilterCondition.and:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 70, // 93: wg.cosmo.node.v1.SubscriptionFilterCondition.in:type_name -> wg.cosmo.node.v1.SubscriptionFieldCondition - 71, // 94: wg.cosmo.node.v1.SubscriptionFilterCondition.not:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 71, // 95: wg.cosmo.node.v1.SubscriptionFilterCondition.or:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 73, // 96: wg.cosmo.node.v1.CacheWarmerOperations.operations:type_name -> wg.cosmo.node.v1.Operation - 74, // 97: wg.cosmo.node.v1.Operation.request:type_name -> wg.cosmo.node.v1.OperationRequest - 77, // 98: wg.cosmo.node.v1.Operation.client:type_name -> wg.cosmo.node.v1.ClientInfo - 75, // 99: wg.cosmo.node.v1.OperationRequest.extensions:type_name -> wg.cosmo.node.v1.Extension - 76, // 100: wg.cosmo.node.v1.Extension.persisted_query:type_name -> wg.cosmo.node.v1.PersistedQuery - 10, // 101: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry.value:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig - 64, // 102: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry.value:type_name -> wg.cosmo.node.v1.HTTPHeader - 16, // 103: wg.cosmo.node.v1.NodeService.SelfRegister:input_type -> wg.cosmo.node.v1.SelfRegisterRequest - 17, // 104: wg.cosmo.node.v1.NodeService.SelfRegister:output_type -> wg.cosmo.node.v1.SelfRegisterResponse - 104, // [104:105] is the sub-list for method output_type - 103, // [103:104] is the sub-list for method input_type - 103, // [103:103] is the sub-list for extension type_name - 103, // [103:103] is the sub-list for extension extendee - 0, // [0:103] is the sub-list for field type_name + 23, // 30: wg.cosmo.node.v1.EntityCaching.cache_populate_configurations:type_name -> wg.cosmo.node.v1.CachePopulateConfiguration + 25, // 31: wg.cosmo.node.v1.CostConfiguration.field_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration + 26, // 32: wg.cosmo.node.v1.CostConfiguration.list_sizes:type_name -> wg.cosmo.node.v1.FieldListSizeConfiguration + 81, // 33: wg.cosmo.node.v1.CostConfiguration.type_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry + 82, // 34: wg.cosmo.node.v1.CostConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry + 83, // 35: wg.cosmo.node.v1.FieldWeightConfiguration.argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry + 84, // 36: wg.cosmo.node.v1.FieldWeightConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry + 1, // 37: wg.cosmo.node.v1.ArgumentConfiguration.source_type:type_name -> wg.cosmo.node.v1.ArgumentSource + 28, // 38: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes:type_name -> wg.cosmo.node.v1.Scopes + 28, // 39: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes_by_or:type_name -> wg.cosmo.node.v1.Scopes + 27, // 40: wg.cosmo.node.v1.FieldConfiguration.arguments_configuration:type_name -> wg.cosmo.node.v1.ArgumentConfiguration + 29, // 41: wg.cosmo.node.v1.FieldConfiguration.authorization_configuration:type_name -> wg.cosmo.node.v1.AuthorizationConfiguration + 72, // 42: wg.cosmo.node.v1.FieldConfiguration.subscription_filter_condition:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 33, // 43: wg.cosmo.node.v1.FieldSetCondition.field_coordinates_path:type_name -> wg.cosmo.node.v1.FieldCoordinates + 34, // 44: wg.cosmo.node.v1.RequiredField.conditions:type_name -> wg.cosmo.node.v1.FieldSetCondition + 62, // 45: wg.cosmo.node.v1.FetchConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 7, // 46: wg.cosmo.node.v1.FetchConfiguration.method:type_name -> wg.cosmo.node.v1.HTTPMethod + 85, // 47: wg.cosmo.node.v1.FetchConfiguration.header:type_name -> wg.cosmo.node.v1.FetchConfiguration.HeaderEntry + 62, // 48: wg.cosmo.node.v1.FetchConfiguration.body:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 64, // 49: wg.cosmo.node.v1.FetchConfiguration.query:type_name -> wg.cosmo.node.v1.URLQueryConfiguration + 66, // 50: wg.cosmo.node.v1.FetchConfiguration.mtls:type_name -> wg.cosmo.node.v1.MTLSConfiguration + 62, // 51: wg.cosmo.node.v1.FetchConfiguration.base_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 62, // 52: wg.cosmo.node.v1.FetchConfiguration.path:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 62, // 53: wg.cosmo.node.v1.FetchConfiguration.http_proxy_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 37, // 54: wg.cosmo.node.v1.DataSourceCustom_GraphQL.fetch:type_name -> wg.cosmo.node.v1.FetchConfiguration + 67, // 55: wg.cosmo.node.v1.DataSourceCustom_GraphQL.subscription:type_name -> wg.cosmo.node.v1.GraphQLSubscriptionConfiguration + 68, // 56: wg.cosmo.node.v1.DataSourceCustom_GraphQL.federation:type_name -> wg.cosmo.node.v1.GraphQLFederationConfiguration + 69, // 57: wg.cosmo.node.v1.DataSourceCustom_GraphQL.upstream_schema:type_name -> wg.cosmo.node.v1.InternedString + 70, // 58: wg.cosmo.node.v1.DataSourceCustom_GraphQL.custom_scalar_type_fields:type_name -> wg.cosmo.node.v1.SingleTypeField + 40, // 59: wg.cosmo.node.v1.DataSourceCustom_GraphQL.grpc:type_name -> wg.cosmo.node.v1.GRPCConfiguration + 44, // 60: wg.cosmo.node.v1.GRPCConfiguration.mapping:type_name -> wg.cosmo.node.v1.GRPCMapping + 42, // 61: wg.cosmo.node.v1.GRPCConfiguration.plugin:type_name -> wg.cosmo.node.v1.PluginConfiguration + 41, // 62: wg.cosmo.node.v1.PluginConfiguration.image_reference:type_name -> wg.cosmo.node.v1.ImageReference + 47, // 63: wg.cosmo.node.v1.GRPCMapping.operation_mappings:type_name -> wg.cosmo.node.v1.OperationMapping + 48, // 64: wg.cosmo.node.v1.GRPCMapping.entity_mappings:type_name -> wg.cosmo.node.v1.EntityMapping + 50, // 65: wg.cosmo.node.v1.GRPCMapping.type_field_mappings:type_name -> wg.cosmo.node.v1.TypeFieldMapping + 53, // 66: wg.cosmo.node.v1.GRPCMapping.enum_mappings:type_name -> wg.cosmo.node.v1.EnumMapping + 45, // 67: wg.cosmo.node.v1.GRPCMapping.resolve_mappings:type_name -> wg.cosmo.node.v1.LookupMapping + 3, // 68: wg.cosmo.node.v1.LookupMapping.type:type_name -> wg.cosmo.node.v1.LookupType + 46, // 69: wg.cosmo.node.v1.LookupMapping.lookup_mapping:type_name -> wg.cosmo.node.v1.LookupFieldMapping + 51, // 70: wg.cosmo.node.v1.LookupFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping + 4, // 71: wg.cosmo.node.v1.OperationMapping.type:type_name -> wg.cosmo.node.v1.OperationType + 49, // 72: wg.cosmo.node.v1.EntityMapping.required_field_mappings:type_name -> wg.cosmo.node.v1.RequiredFieldMapping + 51, // 73: wg.cosmo.node.v1.RequiredFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping + 51, // 74: wg.cosmo.node.v1.TypeFieldMapping.field_mappings:type_name -> wg.cosmo.node.v1.FieldMapping + 52, // 75: wg.cosmo.node.v1.FieldMapping.argument_mappings:type_name -> wg.cosmo.node.v1.ArgumentMapping + 54, // 76: wg.cosmo.node.v1.EnumMapping.values:type_name -> wg.cosmo.node.v1.EnumValueMapping + 59, // 77: wg.cosmo.node.v1.NatsEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 55, // 78: wg.cosmo.node.v1.NatsEventConfiguration.stream_configuration:type_name -> wg.cosmo.node.v1.NatsStreamConfiguration + 59, // 79: wg.cosmo.node.v1.KafkaEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 59, // 80: wg.cosmo.node.v1.RedisEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 5, // 81: wg.cosmo.node.v1.EngineEventConfiguration.type:type_name -> wg.cosmo.node.v1.EventType + 56, // 82: wg.cosmo.node.v1.DataSourceCustomEvents.nats:type_name -> wg.cosmo.node.v1.NatsEventConfiguration + 57, // 83: wg.cosmo.node.v1.DataSourceCustomEvents.kafka:type_name -> wg.cosmo.node.v1.KafkaEventConfiguration + 58, // 84: wg.cosmo.node.v1.DataSourceCustomEvents.redis:type_name -> wg.cosmo.node.v1.RedisEventConfiguration + 62, // 85: wg.cosmo.node.v1.DataSourceCustom_Static.data:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 6, // 86: wg.cosmo.node.v1.ConfigurationVariable.kind:type_name -> wg.cosmo.node.v1.ConfigurationVariableKind + 62, // 87: wg.cosmo.node.v1.HTTPHeader.values:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 62, // 88: wg.cosmo.node.v1.MTLSConfiguration.key:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 62, // 89: wg.cosmo.node.v1.MTLSConfiguration.cert:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 62, // 90: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 87, // 91: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol + 88, // 92: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.websocketSubprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol + 72, // 93: wg.cosmo.node.v1.SubscriptionFilterCondition.and:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 71, // 94: wg.cosmo.node.v1.SubscriptionFilterCondition.in:type_name -> wg.cosmo.node.v1.SubscriptionFieldCondition + 72, // 95: wg.cosmo.node.v1.SubscriptionFilterCondition.not:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 72, // 96: wg.cosmo.node.v1.SubscriptionFilterCondition.or:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 74, // 97: wg.cosmo.node.v1.CacheWarmerOperations.operations:type_name -> wg.cosmo.node.v1.Operation + 75, // 98: wg.cosmo.node.v1.Operation.request:type_name -> wg.cosmo.node.v1.OperationRequest + 78, // 99: wg.cosmo.node.v1.Operation.client:type_name -> wg.cosmo.node.v1.ClientInfo + 76, // 100: wg.cosmo.node.v1.OperationRequest.extensions:type_name -> wg.cosmo.node.v1.Extension + 77, // 101: wg.cosmo.node.v1.Extension.persisted_query:type_name -> wg.cosmo.node.v1.PersistedQuery + 10, // 102: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry.value:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig + 65, // 103: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry.value:type_name -> wg.cosmo.node.v1.HTTPHeader + 16, // 104: wg.cosmo.node.v1.NodeService.SelfRegister:input_type -> wg.cosmo.node.v1.SelfRegisterRequest + 17, // 105: wg.cosmo.node.v1.NodeService.SelfRegister:output_type -> wg.cosmo.node.v1.SelfRegisterResponse + 105, // [105:106] is the sub-list for method output_type + 104, // [104:105] is the sub-list for method input_type + 104, // [104:104] is the sub-list for extension type_name + 104, // [104:104] is the sub-list for extension extendee + 0, // [0:104] is the sub-list for field type_name } func init() { file_wg_cosmo_node_v1_node_proto_init() } @@ -5478,20 +5569,21 @@ func file_wg_cosmo_node_v1_node_proto_init() { file_wg_cosmo_node_v1_node_proto_msgTypes[4].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[9].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[10].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[16].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[15].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[17].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[21].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[28].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[33].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[58].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[63].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[18].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[22].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[29].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[34].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[59].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[64].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_wg_cosmo_node_v1_node_proto_rawDesc), len(file_wg_cosmo_node_v1_node_proto_rawDesc)), NumEnums: 8, - NumMessages: 77, + NumMessages: 78, NumExtensions: 0, NumServices: 1, }, diff --git a/connect/src/wg/cosmo/node/v1/node_pb.ts b/connect/src/wg/cosmo/node/v1/node_pb.ts index 3f04573aae..bda65b0e93 100644 --- a/connect/src/wg/cosmo/node/v1/node_pb.ts +++ b/connect/src/wg/cosmo/node/v1/node_pb.ts @@ -914,6 +914,13 @@ export class EntityCaching extends Message { */ cacheInvalidateConfigurations: CacheInvalidateConfiguration[] = []; + /** + * Per-Mutation/Subscription-field cache population configs (from @openfed__cachePopulate) + * + * @generated from field: repeated wg.cosmo.node.v1.CachePopulateConfiguration cache_populate_configurations = 3; + */ + cachePopulateConfigurations: CachePopulateConfiguration[] = []; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -924,6 +931,7 @@ export class EntityCaching extends Message { static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "entity_cache_configurations", kind: "message", T: EntityCacheConfiguration, repeated: true }, { no: 2, name: "cache_invalidate_configurations", kind: "message", T: CacheInvalidateConfiguration, repeated: true }, + { no: 3, name: "cache_populate_configurations", kind: "message", T: CachePopulateConfiguration, repeated: true }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): EntityCaching { @@ -1073,6 +1081,67 @@ export class CacheInvalidateConfiguration extends Message { + /** + * @generated from field: string field_name = 1; + */ + fieldName = ""; + + /** + * @generated from field: string operation_type = 2; + */ + operationType = ""; + + /** + * Optional override TTL. When omitted, falls back to the target entity's max_age_seconds. + * Composition rejects non-positive values. + * + * @generated from field: optional int64 max_age_seconds = 3; + */ + maxAgeSeconds?: bigint; + + /** + * @generated from field: string entity_type_name = 4; + */ + entityTypeName = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.node.v1.CachePopulateConfiguration"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "field_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "operation_type", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "max_age_seconds", kind: "scalar", T: 3 /* ScalarType.INT64 */, opt: true }, + { no: 4, name: "entity_type_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): CachePopulateConfiguration { + return new CachePopulateConfiguration().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): CachePopulateConfiguration { + return new CachePopulateConfiguration().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): CachePopulateConfiguration { + return new CachePopulateConfiguration().fromJsonString(jsonString, options); + } + + static equals(a: CachePopulateConfiguration | PlainMessage | undefined, b: CachePopulateConfiguration | PlainMessage | undefined): boolean { + return proto3.util.equals(CachePopulateConfiguration, a, b); + } +} + /** * @generated from message wg.cosmo.node.v1.CostConfiguration */ diff --git a/proto/wg/cosmo/node/v1/node.proto b/proto/wg/cosmo/node/v1/node.proto index 57e3d84473..c31aa9c285 100644 --- a/proto/wg/cosmo/node/v1/node.proto +++ b/proto/wg/cosmo/node/v1/node.proto @@ -101,6 +101,8 @@ message EntityCaching { repeated EntityCacheConfiguration entity_cache_configurations = 1; // Per-Mutation/Subscription-field cache eviction configs (from @openfed__cacheInvalidate) repeated CacheInvalidateConfiguration cache_invalidate_configurations = 2; + // Per-Mutation/Subscription-field cache population configs (from @openfed__cachePopulate) + repeated CachePopulateConfiguration cache_populate_configurations = 3; } // Per-entity declaration for @openfed__entityCache. Marks a @key entity type as cacheable so the @@ -128,6 +130,17 @@ message CacheInvalidateConfiguration { string entity_type_name = 3; } +// Per-field declaration for @openfed__cachePopulate. Tells the router to populate the entity cache +// with the (Mutation/Subscription) operation's return value. +message CachePopulateConfiguration { + string field_name = 1; + string operation_type = 2; + // Optional override TTL. When omitted, falls back to the target entity's max_age_seconds. + // Composition rejects non-positive values. + optional int64 max_age_seconds = 3; + string entity_type_name = 4; +} + message CostConfiguration { repeated FieldWeightConfiguration field_weights = 1; repeated FieldListSizeConfiguration list_sizes = 2; diff --git a/router/gen/proto/wg/cosmo/node/v1/node.pb.go b/router/gen/proto/wg/cosmo/node/v1/node.pb.go index 9abaddea00..b704a2a686 100644 --- a/router/gen/proto/wg/cosmo/node/v1/node.pb.go +++ b/router/gen/proto/wg/cosmo/node/v1/node.pb.go @@ -1232,8 +1232,10 @@ type EntityCaching struct { EntityCacheConfigurations []*EntityCacheConfiguration `protobuf:"bytes,1,rep,name=entity_cache_configurations,json=entityCacheConfigurations,proto3" json:"entity_cache_configurations,omitempty"` // Per-Mutation/Subscription-field cache eviction configs (from @openfed__cacheInvalidate) CacheInvalidateConfigurations []*CacheInvalidateConfiguration `protobuf:"bytes,2,rep,name=cache_invalidate_configurations,json=cacheInvalidateConfigurations,proto3" json:"cache_invalidate_configurations,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // Per-Mutation/Subscription-field cache population configs (from @openfed__cachePopulate) + CachePopulateConfigurations []*CachePopulateConfiguration `protobuf:"bytes,3,rep,name=cache_populate_configurations,json=cachePopulateConfigurations,proto3" json:"cache_populate_configurations,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *EntityCaching) Reset() { @@ -1280,6 +1282,13 @@ func (x *EntityCaching) GetCacheInvalidateConfigurations() []*CacheInvalidateCon return nil } +func (x *EntityCaching) GetCachePopulateConfigurations() []*CachePopulateConfiguration { + if x != nil { + return x.CachePopulateConfigurations + } + return nil +} + // Per-entity declaration for @openfed__entityCache. Marks a @key entity type as cacheable so the // router can store/serve resolved entities from an external store (e.g. Redis). type EntityCacheConfiguration struct { @@ -1434,6 +1443,78 @@ func (x *CacheInvalidateConfiguration) GetEntityTypeName() string { return "" } +// Per-field declaration for @openfed__cachePopulate. Tells the router to populate the entity cache +// with the (Mutation/Subscription) operation's return value. +type CachePopulateConfiguration struct { + state protoimpl.MessageState `protogen:"open.v1"` + FieldName string `protobuf:"bytes,1,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` + OperationType string `protobuf:"bytes,2,opt,name=operation_type,json=operationType,proto3" json:"operation_type,omitempty"` + // Optional override TTL. When omitted, falls back to the target entity's max_age_seconds. + // Composition rejects non-positive values. + MaxAgeSeconds *int64 `protobuf:"varint,3,opt,name=max_age_seconds,json=maxAgeSeconds,proto3,oneof" json:"max_age_seconds,omitempty"` + EntityTypeName string `protobuf:"bytes,4,opt,name=entity_type_name,json=entityTypeName,proto3" json:"entity_type_name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CachePopulateConfiguration) Reset() { + *x = CachePopulateConfiguration{} + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CachePopulateConfiguration) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CachePopulateConfiguration) ProtoMessage() {} + +func (x *CachePopulateConfiguration) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CachePopulateConfiguration.ProtoReflect.Descriptor instead. +func (*CachePopulateConfiguration) Descriptor() ([]byte, []int) { + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{15} +} + +func (x *CachePopulateConfiguration) GetFieldName() string { + if x != nil { + return x.FieldName + } + return "" +} + +func (x *CachePopulateConfiguration) GetOperationType() string { + if x != nil { + return x.OperationType + } + return "" +} + +func (x *CachePopulateConfiguration) GetMaxAgeSeconds() int64 { + if x != nil && x.MaxAgeSeconds != nil { + return *x.MaxAgeSeconds + } + return 0 +} + +func (x *CachePopulateConfiguration) GetEntityTypeName() string { + if x != nil { + return x.EntityTypeName + } + return "" +} + type CostConfiguration struct { state protoimpl.MessageState `protogen:"open.v1"` FieldWeights []*FieldWeightConfiguration `protobuf:"bytes,1,rep,name=field_weights,json=fieldWeights,proto3" json:"field_weights,omitempty"` @@ -1446,7 +1527,7 @@ type CostConfiguration struct { func (x *CostConfiguration) Reset() { *x = CostConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[15] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1458,7 +1539,7 @@ func (x *CostConfiguration) String() string { func (*CostConfiguration) ProtoMessage() {} func (x *CostConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[15] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1471,7 +1552,7 @@ func (x *CostConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use CostConfiguration.ProtoReflect.Descriptor instead. func (*CostConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{15} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{16} } func (x *CostConfiguration) GetFieldWeights() []*FieldWeightConfiguration { @@ -1515,7 +1596,7 @@ type FieldWeightConfiguration struct { func (x *FieldWeightConfiguration) Reset() { *x = FieldWeightConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1527,7 +1608,7 @@ func (x *FieldWeightConfiguration) String() string { func (*FieldWeightConfiguration) ProtoMessage() {} func (x *FieldWeightConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1540,7 +1621,7 @@ func (x *FieldWeightConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldWeightConfiguration.ProtoReflect.Descriptor instead. func (*FieldWeightConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{16} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{17} } func (x *FieldWeightConfiguration) GetTypeName() string { @@ -1592,7 +1673,7 @@ type FieldListSizeConfiguration struct { func (x *FieldListSizeConfiguration) Reset() { *x = FieldListSizeConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1604,7 +1685,7 @@ func (x *FieldListSizeConfiguration) String() string { func (*FieldListSizeConfiguration) ProtoMessage() {} func (x *FieldListSizeConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1617,7 +1698,7 @@ func (x *FieldListSizeConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldListSizeConfiguration.ProtoReflect.Descriptor instead. func (*FieldListSizeConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{17} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{18} } func (x *FieldListSizeConfiguration) GetTypeName() string { @@ -1672,7 +1753,7 @@ type ArgumentConfiguration struct { func (x *ArgumentConfiguration) Reset() { *x = ArgumentConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1684,7 +1765,7 @@ func (x *ArgumentConfiguration) String() string { func (*ArgumentConfiguration) ProtoMessage() {} func (x *ArgumentConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1697,7 +1778,7 @@ func (x *ArgumentConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use ArgumentConfiguration.ProtoReflect.Descriptor instead. func (*ArgumentConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{18} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{19} } func (x *ArgumentConfiguration) GetName() string { @@ -1723,7 +1804,7 @@ type Scopes struct { func (x *Scopes) Reset() { *x = Scopes{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1735,7 +1816,7 @@ func (x *Scopes) String() string { func (*Scopes) ProtoMessage() {} func (x *Scopes) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1748,7 +1829,7 @@ func (x *Scopes) ProtoReflect() protoreflect.Message { // Deprecated: Use Scopes.ProtoReflect.Descriptor instead. func (*Scopes) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{19} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{20} } func (x *Scopes) GetRequiredAndScopes() []string { @@ -1769,7 +1850,7 @@ type AuthorizationConfiguration struct { func (x *AuthorizationConfiguration) Reset() { *x = AuthorizationConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1781,7 +1862,7 @@ func (x *AuthorizationConfiguration) String() string { func (*AuthorizationConfiguration) ProtoMessage() {} func (x *AuthorizationConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1794,7 +1875,7 @@ func (x *AuthorizationConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use AuthorizationConfiguration.ProtoReflect.Descriptor instead. func (*AuthorizationConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{20} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{21} } func (x *AuthorizationConfiguration) GetRequiresAuthentication() bool { @@ -1831,7 +1912,7 @@ type FieldConfiguration struct { func (x *FieldConfiguration) Reset() { *x = FieldConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1843,7 +1924,7 @@ func (x *FieldConfiguration) String() string { func (*FieldConfiguration) ProtoMessage() {} func (x *FieldConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1856,7 +1937,7 @@ func (x *FieldConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldConfiguration.ProtoReflect.Descriptor instead. func (*FieldConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{21} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{22} } func (x *FieldConfiguration) GetTypeName() string { @@ -1904,7 +1985,7 @@ type TypeConfiguration struct { func (x *TypeConfiguration) Reset() { *x = TypeConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1916,7 +1997,7 @@ func (x *TypeConfiguration) String() string { func (*TypeConfiguration) ProtoMessage() {} func (x *TypeConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1929,7 +2010,7 @@ func (x *TypeConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeConfiguration.ProtoReflect.Descriptor instead. func (*TypeConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{22} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{23} } func (x *TypeConfiguration) GetTypeName() string { @@ -1958,7 +2039,7 @@ type TypeField struct { func (x *TypeField) Reset() { *x = TypeField{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1970,7 +2051,7 @@ func (x *TypeField) String() string { func (*TypeField) ProtoMessage() {} func (x *TypeField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1983,7 +2064,7 @@ func (x *TypeField) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeField.ProtoReflect.Descriptor instead. func (*TypeField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{23} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{24} } func (x *TypeField) GetTypeName() string { @@ -2024,7 +2105,7 @@ type FieldCoordinates struct { func (x *FieldCoordinates) Reset() { *x = FieldCoordinates{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2036,7 +2117,7 @@ func (x *FieldCoordinates) String() string { func (*FieldCoordinates) ProtoMessage() {} func (x *FieldCoordinates) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2049,7 +2130,7 @@ func (x *FieldCoordinates) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldCoordinates.ProtoReflect.Descriptor instead. func (*FieldCoordinates) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{24} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{25} } func (x *FieldCoordinates) GetFieldName() string { @@ -2076,7 +2157,7 @@ type FieldSetCondition struct { func (x *FieldSetCondition) Reset() { *x = FieldSetCondition{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2088,7 +2169,7 @@ func (x *FieldSetCondition) String() string { func (*FieldSetCondition) ProtoMessage() {} func (x *FieldSetCondition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2101,7 +2182,7 @@ func (x *FieldSetCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldSetCondition.ProtoReflect.Descriptor instead. func (*FieldSetCondition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{25} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{26} } func (x *FieldSetCondition) GetFieldCoordinatesPath() []*FieldCoordinates { @@ -2131,7 +2212,7 @@ type RequiredField struct { func (x *RequiredField) Reset() { *x = RequiredField{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2143,7 +2224,7 @@ func (x *RequiredField) String() string { func (*RequiredField) ProtoMessage() {} func (x *RequiredField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2156,7 +2237,7 @@ func (x *RequiredField) ProtoReflect() protoreflect.Message { // Deprecated: Use RequiredField.ProtoReflect.Descriptor instead. func (*RequiredField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{26} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{27} } func (x *RequiredField) GetTypeName() string { @@ -2204,7 +2285,7 @@ type EntityInterfaceConfiguration struct { func (x *EntityInterfaceConfiguration) Reset() { *x = EntityInterfaceConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2216,7 +2297,7 @@ func (x *EntityInterfaceConfiguration) String() string { func (*EntityInterfaceConfiguration) ProtoMessage() {} func (x *EntityInterfaceConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2229,7 +2310,7 @@ func (x *EntityInterfaceConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use EntityInterfaceConfiguration.ProtoReflect.Descriptor instead. func (*EntityInterfaceConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{27} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{28} } func (x *EntityInterfaceConfiguration) GetInterfaceTypeName() string { @@ -2272,7 +2353,7 @@ type FetchConfiguration struct { func (x *FetchConfiguration) Reset() { *x = FetchConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2284,7 +2365,7 @@ func (x *FetchConfiguration) String() string { func (*FetchConfiguration) ProtoMessage() {} func (x *FetchConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2297,7 +2378,7 @@ func (x *FetchConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FetchConfiguration.ProtoReflect.Descriptor instead. func (*FetchConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{28} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{29} } func (x *FetchConfiguration) GetUrl() *ConfigurationVariable { @@ -2381,7 +2462,7 @@ type StatusCodeTypeMapping struct { func (x *StatusCodeTypeMapping) Reset() { *x = StatusCodeTypeMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2393,7 +2474,7 @@ func (x *StatusCodeTypeMapping) String() string { func (*StatusCodeTypeMapping) ProtoMessage() {} func (x *StatusCodeTypeMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2406,7 +2487,7 @@ func (x *StatusCodeTypeMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use StatusCodeTypeMapping.ProtoReflect.Descriptor instead. func (*StatusCodeTypeMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{29} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{30} } func (x *StatusCodeTypeMapping) GetStatusCode() int64 { @@ -2444,7 +2525,7 @@ type DataSourceCustom_GraphQL struct { func (x *DataSourceCustom_GraphQL) Reset() { *x = DataSourceCustom_GraphQL{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2456,7 +2537,7 @@ func (x *DataSourceCustom_GraphQL) String() string { func (*DataSourceCustom_GraphQL) ProtoMessage() {} func (x *DataSourceCustom_GraphQL) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2469,7 +2550,7 @@ func (x *DataSourceCustom_GraphQL) ProtoReflect() protoreflect.Message { // Deprecated: Use DataSourceCustom_GraphQL.ProtoReflect.Descriptor instead. func (*DataSourceCustom_GraphQL) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{30} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{31} } func (x *DataSourceCustom_GraphQL) GetFetch() *FetchConfiguration { @@ -2525,7 +2606,7 @@ type GRPCConfiguration struct { func (x *GRPCConfiguration) Reset() { *x = GRPCConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2537,7 +2618,7 @@ func (x *GRPCConfiguration) String() string { func (*GRPCConfiguration) ProtoMessage() {} func (x *GRPCConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2550,7 +2631,7 @@ func (x *GRPCConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCConfiguration.ProtoReflect.Descriptor instead. func (*GRPCConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{31} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{32} } func (x *GRPCConfiguration) GetMapping() *GRPCMapping { @@ -2584,7 +2665,7 @@ type ImageReference struct { func (x *ImageReference) Reset() { *x = ImageReference{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2596,7 +2677,7 @@ func (x *ImageReference) String() string { func (*ImageReference) ProtoMessage() {} func (x *ImageReference) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2609,7 +2690,7 @@ func (x *ImageReference) ProtoReflect() protoreflect.Message { // Deprecated: Use ImageReference.ProtoReflect.Descriptor instead. func (*ImageReference) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{32} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{33} } func (x *ImageReference) GetRepository() string { @@ -2639,7 +2720,7 @@ type PluginConfiguration struct { func (x *PluginConfiguration) Reset() { *x = PluginConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2651,7 +2732,7 @@ func (x *PluginConfiguration) String() string { func (*PluginConfiguration) ProtoMessage() {} func (x *PluginConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2664,7 +2745,7 @@ func (x *PluginConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use PluginConfiguration.ProtoReflect.Descriptor instead. func (*PluginConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{33} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{34} } func (x *PluginConfiguration) GetName() string { @@ -2698,7 +2779,7 @@ type SSLConfiguration struct { func (x *SSLConfiguration) Reset() { *x = SSLConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2710,7 +2791,7 @@ func (x *SSLConfiguration) String() string { func (*SSLConfiguration) ProtoMessage() {} func (x *SSLConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2723,7 +2804,7 @@ func (x *SSLConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use SSLConfiguration.ProtoReflect.Descriptor instead. func (*SSLConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{34} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{35} } func (x *SSLConfiguration) GetEnabled() bool { @@ -2756,7 +2837,7 @@ type GRPCMapping struct { func (x *GRPCMapping) Reset() { *x = GRPCMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2768,7 +2849,7 @@ func (x *GRPCMapping) String() string { func (*GRPCMapping) ProtoMessage() {} func (x *GRPCMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2781,7 +2862,7 @@ func (x *GRPCMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCMapping.ProtoReflect.Descriptor instead. func (*GRPCMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{35} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{36} } func (x *GRPCMapping) GetVersion() int32 { @@ -2852,7 +2933,7 @@ type LookupMapping struct { func (x *LookupMapping) Reset() { *x = LookupMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2864,7 +2945,7 @@ func (x *LookupMapping) String() string { func (*LookupMapping) ProtoMessage() {} func (x *LookupMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2877,7 +2958,7 @@ func (x *LookupMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use LookupMapping.ProtoReflect.Descriptor instead. func (*LookupMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{36} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{37} } func (x *LookupMapping) GetType() LookupType { @@ -2928,7 +3009,7 @@ type LookupFieldMapping struct { func (x *LookupFieldMapping) Reset() { *x = LookupFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2940,7 +3021,7 @@ func (x *LookupFieldMapping) String() string { func (*LookupFieldMapping) ProtoMessage() {} func (x *LookupFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2953,7 +3034,7 @@ func (x *LookupFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use LookupFieldMapping.ProtoReflect.Descriptor instead. func (*LookupFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{37} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{38} } func (x *LookupFieldMapping) GetType() string { @@ -2989,7 +3070,7 @@ type OperationMapping struct { func (x *OperationMapping) Reset() { *x = OperationMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3001,7 +3082,7 @@ func (x *OperationMapping) String() string { func (*OperationMapping) ProtoMessage() {} func (x *OperationMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3014,7 +3095,7 @@ func (x *OperationMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use OperationMapping.ProtoReflect.Descriptor instead. func (*OperationMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{38} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{39} } func (x *OperationMapping) GetType() OperationType { @@ -3075,7 +3156,7 @@ type EntityMapping struct { func (x *EntityMapping) Reset() { *x = EntityMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3087,7 +3168,7 @@ func (x *EntityMapping) String() string { func (*EntityMapping) ProtoMessage() {} func (x *EntityMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3100,7 +3181,7 @@ func (x *EntityMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EntityMapping.ProtoReflect.Descriptor instead. func (*EntityMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{39} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{40} } func (x *EntityMapping) GetTypeName() string { @@ -3168,7 +3249,7 @@ type RequiredFieldMapping struct { func (x *RequiredFieldMapping) Reset() { *x = RequiredFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3180,7 +3261,7 @@ func (x *RequiredFieldMapping) String() string { func (*RequiredFieldMapping) ProtoMessage() {} func (x *RequiredFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3193,7 +3274,7 @@ func (x *RequiredFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use RequiredFieldMapping.ProtoReflect.Descriptor instead. func (*RequiredFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{40} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{41} } func (x *RequiredFieldMapping) GetFieldMapping() *FieldMapping { @@ -3237,7 +3318,7 @@ type TypeFieldMapping struct { func (x *TypeFieldMapping) Reset() { *x = TypeFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3249,7 +3330,7 @@ func (x *TypeFieldMapping) String() string { func (*TypeFieldMapping) ProtoMessage() {} func (x *TypeFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3262,7 +3343,7 @@ func (x *TypeFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeFieldMapping.ProtoReflect.Descriptor instead. func (*TypeFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{41} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{42} } func (x *TypeFieldMapping) GetType() string { @@ -3294,7 +3375,7 @@ type FieldMapping struct { func (x *FieldMapping) Reset() { *x = FieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3306,7 +3387,7 @@ func (x *FieldMapping) String() string { func (*FieldMapping) ProtoMessage() {} func (x *FieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3319,7 +3400,7 @@ func (x *FieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldMapping.ProtoReflect.Descriptor instead. func (*FieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{42} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{43} } func (x *FieldMapping) GetOriginal() string { @@ -3356,7 +3437,7 @@ type ArgumentMapping struct { func (x *ArgumentMapping) Reset() { *x = ArgumentMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3368,7 +3449,7 @@ func (x *ArgumentMapping) String() string { func (*ArgumentMapping) ProtoMessage() {} func (x *ArgumentMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3381,7 +3462,7 @@ func (x *ArgumentMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use ArgumentMapping.ProtoReflect.Descriptor instead. func (*ArgumentMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{43} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{44} } func (x *ArgumentMapping) GetOriginal() string { @@ -3408,7 +3489,7 @@ type EnumMapping struct { func (x *EnumMapping) Reset() { *x = EnumMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3420,7 +3501,7 @@ func (x *EnumMapping) String() string { func (*EnumMapping) ProtoMessage() {} func (x *EnumMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3433,7 +3514,7 @@ func (x *EnumMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EnumMapping.ProtoReflect.Descriptor instead. func (*EnumMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{44} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{45} } func (x *EnumMapping) GetType() string { @@ -3460,7 +3541,7 @@ type EnumValueMapping struct { func (x *EnumValueMapping) Reset() { *x = EnumValueMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3472,7 +3553,7 @@ func (x *EnumValueMapping) String() string { func (*EnumValueMapping) ProtoMessage() {} func (x *EnumValueMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3485,7 +3566,7 @@ func (x *EnumValueMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EnumValueMapping.ProtoReflect.Descriptor instead. func (*EnumValueMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{45} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{46} } func (x *EnumValueMapping) GetOriginal() string { @@ -3513,7 +3594,7 @@ type NatsStreamConfiguration struct { func (x *NatsStreamConfiguration) Reset() { *x = NatsStreamConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3525,7 +3606,7 @@ func (x *NatsStreamConfiguration) String() string { func (*NatsStreamConfiguration) ProtoMessage() {} func (x *NatsStreamConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3538,7 +3619,7 @@ func (x *NatsStreamConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use NatsStreamConfiguration.ProtoReflect.Descriptor instead. func (*NatsStreamConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{46} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{47} } func (x *NatsStreamConfiguration) GetConsumerName() string { @@ -3573,7 +3654,7 @@ type NatsEventConfiguration struct { func (x *NatsEventConfiguration) Reset() { *x = NatsEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3585,7 +3666,7 @@ func (x *NatsEventConfiguration) String() string { func (*NatsEventConfiguration) ProtoMessage() {} func (x *NatsEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3598,7 +3679,7 @@ func (x *NatsEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use NatsEventConfiguration.ProtoReflect.Descriptor instead. func (*NatsEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{47} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{48} } func (x *NatsEventConfiguration) GetEngineEventConfiguration() *EngineEventConfiguration { @@ -3632,7 +3713,7 @@ type KafkaEventConfiguration struct { func (x *KafkaEventConfiguration) Reset() { *x = KafkaEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3644,7 +3725,7 @@ func (x *KafkaEventConfiguration) String() string { func (*KafkaEventConfiguration) ProtoMessage() {} func (x *KafkaEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3657,7 +3738,7 @@ func (x *KafkaEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use KafkaEventConfiguration.ProtoReflect.Descriptor instead. func (*KafkaEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{48} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{49} } func (x *KafkaEventConfiguration) GetEngineEventConfiguration() *EngineEventConfiguration { @@ -3684,7 +3765,7 @@ type RedisEventConfiguration struct { func (x *RedisEventConfiguration) Reset() { *x = RedisEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3696,7 +3777,7 @@ func (x *RedisEventConfiguration) String() string { func (*RedisEventConfiguration) ProtoMessage() {} func (x *RedisEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3709,7 +3790,7 @@ func (x *RedisEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use RedisEventConfiguration.ProtoReflect.Descriptor instead. func (*RedisEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{49} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{50} } func (x *RedisEventConfiguration) GetEngineEventConfiguration() *EngineEventConfiguration { @@ -3738,7 +3819,7 @@ type EngineEventConfiguration struct { func (x *EngineEventConfiguration) Reset() { *x = EngineEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3750,7 +3831,7 @@ func (x *EngineEventConfiguration) String() string { func (*EngineEventConfiguration) ProtoMessage() {} func (x *EngineEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3763,7 +3844,7 @@ func (x *EngineEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use EngineEventConfiguration.ProtoReflect.Descriptor instead. func (*EngineEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{50} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{51} } func (x *EngineEventConfiguration) GetProviderId() string { @@ -3805,7 +3886,7 @@ type DataSourceCustomEvents struct { func (x *DataSourceCustomEvents) Reset() { *x = DataSourceCustomEvents{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3817,7 +3898,7 @@ func (x *DataSourceCustomEvents) String() string { func (*DataSourceCustomEvents) ProtoMessage() {} func (x *DataSourceCustomEvents) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3830,7 +3911,7 @@ func (x *DataSourceCustomEvents) ProtoReflect() protoreflect.Message { // Deprecated: Use DataSourceCustomEvents.ProtoReflect.Descriptor instead. func (*DataSourceCustomEvents) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{51} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{52} } func (x *DataSourceCustomEvents) GetNats() []*NatsEventConfiguration { @@ -3863,7 +3944,7 @@ type DataSourceCustom_Static struct { func (x *DataSourceCustom_Static) Reset() { *x = DataSourceCustom_Static{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3875,7 +3956,7 @@ func (x *DataSourceCustom_Static) String() string { func (*DataSourceCustom_Static) ProtoMessage() {} func (x *DataSourceCustom_Static) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3888,7 +3969,7 @@ func (x *DataSourceCustom_Static) ProtoReflect() protoreflect.Message { // Deprecated: Use DataSourceCustom_Static.ProtoReflect.Descriptor instead. func (*DataSourceCustom_Static) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{52} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{53} } func (x *DataSourceCustom_Static) GetData() *ConfigurationVariable { @@ -3911,7 +3992,7 @@ type ConfigurationVariable struct { func (x *ConfigurationVariable) Reset() { *x = ConfigurationVariable{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3923,7 +4004,7 @@ func (x *ConfigurationVariable) String() string { func (*ConfigurationVariable) ProtoMessage() {} func (x *ConfigurationVariable) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3936,7 +4017,7 @@ func (x *ConfigurationVariable) ProtoReflect() protoreflect.Message { // Deprecated: Use ConfigurationVariable.ProtoReflect.Descriptor instead. func (*ConfigurationVariable) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{53} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{54} } func (x *ConfigurationVariable) GetKind() ConfigurationVariableKind { @@ -3984,7 +4065,7 @@ type DirectiveConfiguration struct { func (x *DirectiveConfiguration) Reset() { *x = DirectiveConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3996,7 +4077,7 @@ func (x *DirectiveConfiguration) String() string { func (*DirectiveConfiguration) ProtoMessage() {} func (x *DirectiveConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4009,7 +4090,7 @@ func (x *DirectiveConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use DirectiveConfiguration.ProtoReflect.Descriptor instead. func (*DirectiveConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{54} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{55} } func (x *DirectiveConfiguration) GetDirectiveName() string { @@ -4036,7 +4117,7 @@ type URLQueryConfiguration struct { func (x *URLQueryConfiguration) Reset() { *x = URLQueryConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4048,7 +4129,7 @@ func (x *URLQueryConfiguration) String() string { func (*URLQueryConfiguration) ProtoMessage() {} func (x *URLQueryConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4061,7 +4142,7 @@ func (x *URLQueryConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use URLQueryConfiguration.ProtoReflect.Descriptor instead. func (*URLQueryConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{55} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{56} } func (x *URLQueryConfiguration) GetName() string { @@ -4087,7 +4168,7 @@ type HTTPHeader struct { func (x *HTTPHeader) Reset() { *x = HTTPHeader{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4099,7 +4180,7 @@ func (x *HTTPHeader) String() string { func (*HTTPHeader) ProtoMessage() {} func (x *HTTPHeader) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4112,7 +4193,7 @@ func (x *HTTPHeader) ProtoReflect() protoreflect.Message { // Deprecated: Use HTTPHeader.ProtoReflect.Descriptor instead. func (*HTTPHeader) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{56} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{57} } func (x *HTTPHeader) GetValues() []*ConfigurationVariable { @@ -4133,7 +4214,7 @@ type MTLSConfiguration struct { func (x *MTLSConfiguration) Reset() { *x = MTLSConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4145,7 +4226,7 @@ func (x *MTLSConfiguration) String() string { func (*MTLSConfiguration) ProtoMessage() {} func (x *MTLSConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4158,7 +4239,7 @@ func (x *MTLSConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use MTLSConfiguration.ProtoReflect.Descriptor instead. func (*MTLSConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{57} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{58} } func (x *MTLSConfiguration) GetKey() *ConfigurationVariable { @@ -4196,7 +4277,7 @@ type GraphQLSubscriptionConfiguration struct { func (x *GraphQLSubscriptionConfiguration) Reset() { *x = GraphQLSubscriptionConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4208,7 +4289,7 @@ func (x *GraphQLSubscriptionConfiguration) String() string { func (*GraphQLSubscriptionConfiguration) ProtoMessage() {} func (x *GraphQLSubscriptionConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4221,7 +4302,7 @@ func (x *GraphQLSubscriptionConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use GraphQLSubscriptionConfiguration.ProtoReflect.Descriptor instead. func (*GraphQLSubscriptionConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{58} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{59} } func (x *GraphQLSubscriptionConfiguration) GetEnabled() bool { @@ -4269,7 +4350,7 @@ type GraphQLFederationConfiguration struct { func (x *GraphQLFederationConfiguration) Reset() { *x = GraphQLFederationConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4281,7 +4362,7 @@ func (x *GraphQLFederationConfiguration) String() string { func (*GraphQLFederationConfiguration) ProtoMessage() {} func (x *GraphQLFederationConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4294,7 +4375,7 @@ func (x *GraphQLFederationConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use GraphQLFederationConfiguration.ProtoReflect.Descriptor instead. func (*GraphQLFederationConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{59} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{60} } func (x *GraphQLFederationConfiguration) GetEnabled() bool { @@ -4321,7 +4402,7 @@ type InternedString struct { func (x *InternedString) Reset() { *x = InternedString{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4333,7 +4414,7 @@ func (x *InternedString) String() string { func (*InternedString) ProtoMessage() {} func (x *InternedString) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4346,7 +4427,7 @@ func (x *InternedString) ProtoReflect() protoreflect.Message { // Deprecated: Use InternedString.ProtoReflect.Descriptor instead. func (*InternedString) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{60} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{61} } func (x *InternedString) GetKey() string { @@ -4366,7 +4447,7 @@ type SingleTypeField struct { func (x *SingleTypeField) Reset() { *x = SingleTypeField{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4378,7 +4459,7 @@ func (x *SingleTypeField) String() string { func (*SingleTypeField) ProtoMessage() {} func (x *SingleTypeField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4391,7 +4472,7 @@ func (x *SingleTypeField) ProtoReflect() protoreflect.Message { // Deprecated: Use SingleTypeField.ProtoReflect.Descriptor instead. func (*SingleTypeField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{61} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{62} } func (x *SingleTypeField) GetTypeName() string { @@ -4418,7 +4499,7 @@ type SubscriptionFieldCondition struct { func (x *SubscriptionFieldCondition) Reset() { *x = SubscriptionFieldCondition{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4430,7 +4511,7 @@ func (x *SubscriptionFieldCondition) String() string { func (*SubscriptionFieldCondition) ProtoMessage() {} func (x *SubscriptionFieldCondition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4443,7 +4524,7 @@ func (x *SubscriptionFieldCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionFieldCondition.ProtoReflect.Descriptor instead. func (*SubscriptionFieldCondition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{62} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{63} } func (x *SubscriptionFieldCondition) GetFieldPath() []string { @@ -4472,7 +4553,7 @@ type SubscriptionFilterCondition struct { func (x *SubscriptionFilterCondition) Reset() { *x = SubscriptionFilterCondition{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4484,7 +4565,7 @@ func (x *SubscriptionFilterCondition) String() string { func (*SubscriptionFilterCondition) ProtoMessage() {} func (x *SubscriptionFilterCondition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4497,7 +4578,7 @@ func (x *SubscriptionFilterCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionFilterCondition.ProtoReflect.Descriptor instead. func (*SubscriptionFilterCondition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{63} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{64} } func (x *SubscriptionFilterCondition) GetAnd() []*SubscriptionFilterCondition { @@ -4537,7 +4618,7 @@ type CacheWarmerOperations struct { func (x *CacheWarmerOperations) Reset() { *x = CacheWarmerOperations{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4549,7 +4630,7 @@ func (x *CacheWarmerOperations) String() string { func (*CacheWarmerOperations) ProtoMessage() {} func (x *CacheWarmerOperations) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4562,7 +4643,7 @@ func (x *CacheWarmerOperations) ProtoReflect() protoreflect.Message { // Deprecated: Use CacheWarmerOperations.ProtoReflect.Descriptor instead. func (*CacheWarmerOperations) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{64} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{65} } func (x *CacheWarmerOperations) GetOperations() []*Operation { @@ -4582,7 +4663,7 @@ type Operation struct { func (x *Operation) Reset() { *x = Operation{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4594,7 +4675,7 @@ func (x *Operation) String() string { func (*Operation) ProtoMessage() {} func (x *Operation) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4607,7 +4688,7 @@ func (x *Operation) ProtoReflect() protoreflect.Message { // Deprecated: Use Operation.ProtoReflect.Descriptor instead. func (*Operation) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{65} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{66} } func (x *Operation) GetRequest() *OperationRequest { @@ -4635,7 +4716,7 @@ type OperationRequest struct { func (x *OperationRequest) Reset() { *x = OperationRequest{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4647,7 +4728,7 @@ func (x *OperationRequest) String() string { func (*OperationRequest) ProtoMessage() {} func (x *OperationRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4660,7 +4741,7 @@ func (x *OperationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use OperationRequest.ProtoReflect.Descriptor instead. func (*OperationRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{66} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{67} } func (x *OperationRequest) GetOperationName() string { @@ -4693,7 +4774,7 @@ type Extension struct { func (x *Extension) Reset() { *x = Extension{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4705,7 +4786,7 @@ func (x *Extension) String() string { func (*Extension) ProtoMessage() {} func (x *Extension) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4718,7 +4799,7 @@ func (x *Extension) ProtoReflect() protoreflect.Message { // Deprecated: Use Extension.ProtoReflect.Descriptor instead. func (*Extension) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{67} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{68} } func (x *Extension) GetPersistedQuery() *PersistedQuery { @@ -4738,7 +4819,7 @@ type PersistedQuery struct { func (x *PersistedQuery) Reset() { *x = PersistedQuery{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4750,7 +4831,7 @@ func (x *PersistedQuery) String() string { func (*PersistedQuery) ProtoMessage() {} func (x *PersistedQuery) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[69] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4763,7 +4844,7 @@ func (x *PersistedQuery) ProtoReflect() protoreflect.Message { // Deprecated: Use PersistedQuery.ProtoReflect.Descriptor instead. func (*PersistedQuery) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{68} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{69} } func (x *PersistedQuery) GetSha256Hash() string { @@ -4790,7 +4871,7 @@ type ClientInfo struct { func (x *ClientInfo) Reset() { *x = ClientInfo{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[69] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4802,7 +4883,7 @@ func (x *ClientInfo) String() string { func (*ClientInfo) ProtoMessage() {} func (x *ClientInfo) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[69] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[70] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4815,7 +4896,7 @@ func (x *ClientInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ClientInfo.ProtoReflect.Descriptor instead. func (*ClientInfo) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{69} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{70} } func (x *ClientInfo) GetName() string { @@ -4910,10 +4991,11 @@ const file_wg_cosmo_node_v1_node_proto_rawDesc = "" + "\x11entity_interfaces\x18\x0e \x03(\v2..wg.cosmo.node.v1.EntityInterfaceConfigurationR\x10entityInterfaces\x12[\n" + "\x11interface_objects\x18\x0f \x03(\v2..wg.cosmo.node.v1.EntityInterfaceConfigurationR\x10interfaceObjects\x12R\n" + "\x12cost_configuration\x18\x10 \x01(\v2#.wg.cosmo.node.v1.CostConfigurationR\x11costConfiguration\x12F\n" + - "\x0eentity_caching\x18\x11 \x01(\v2\x1f.wg.cosmo.node.v1.EntityCachingR\rentityCaching\"\xf3\x01\n" + + "\x0eentity_caching\x18\x11 \x01(\v2\x1f.wg.cosmo.node.v1.EntityCachingR\rentityCaching\"\xe5\x02\n" + "\rEntityCaching\x12j\n" + "\x1bentity_cache_configurations\x18\x01 \x03(\v2*.wg.cosmo.node.v1.EntityCacheConfigurationR\x19entityCacheConfigurations\x12v\n" + - "\x1fcache_invalidate_configurations\x18\x02 \x03(\v2..wg.cosmo.node.v1.CacheInvalidateConfigurationR\x1dcacheInvalidateConfigurations\"\x95\x02\n" + + "\x1fcache_invalidate_configurations\x18\x02 \x03(\v2..wg.cosmo.node.v1.CacheInvalidateConfigurationR\x1dcacheInvalidateConfigurations\x12p\n" + + "\x1dcache_populate_configurations\x18\x03 \x03(\v2,.wg.cosmo.node.v1.CachePopulateConfigurationR\x1bcachePopulateConfigurations\"\x95\x02\n" + "\x18EntityCacheConfiguration\x12\x1b\n" + "\ttype_name\x18\x01 \x01(\tR\btypeName\x12&\n" + "\x0fmax_age_seconds\x18\x02 \x01(\x03R\rmaxAgeSeconds\x12'\n" + @@ -4926,7 +5008,14 @@ const file_wg_cosmo_node_v1_node_proto_rawDesc = "" + "\n" + "field_name\x18\x01 \x01(\tR\tfieldName\x12%\n" + "\x0eoperation_type\x18\x02 \x01(\tR\roperationType\x12(\n" + - "\x10entity_type_name\x18\x03 \x01(\tR\x0eentityTypeName\"\x98\x04\n" + + "\x10entity_type_name\x18\x03 \x01(\tR\x0eentityTypeName\"\xcd\x01\n" + + "\x1aCachePopulateConfiguration\x12\x1d\n" + + "\n" + + "field_name\x18\x01 \x01(\tR\tfieldName\x12%\n" + + "\x0eoperation_type\x18\x02 \x01(\tR\roperationType\x12+\n" + + "\x0fmax_age_seconds\x18\x03 \x01(\x03H\x00R\rmaxAgeSeconds\x88\x01\x01\x12(\n" + + "\x10entity_type_name\x18\x04 \x01(\tR\x0eentityTypeNameB\x12\n" + + "\x10_max_age_seconds\"\x98\x04\n" + "\x11CostConfiguration\x12O\n" + "\rfield_weights\x18\x01 \x03(\v2*.wg.cosmo.node.v1.FieldWeightConfigurationR\ffieldWeights\x12K\n" + "\n" + @@ -5265,7 +5354,7 @@ func file_wg_cosmo_node_v1_node_proto_rawDescGZIP() []byte { } var file_wg_cosmo_node_v1_node_proto_enumTypes = make([]protoimpl.EnumInfo, 8) -var file_wg_cosmo_node_v1_node_proto_msgTypes = make([]protoimpl.MessageInfo, 77) +var file_wg_cosmo_node_v1_node_proto_msgTypes = make([]protoimpl.MessageInfo, 78) var file_wg_cosmo_node_v1_node_proto_goTypes = []any{ (ArgumentRenderConfiguration)(0), // 0: wg.cosmo.node.v1.ArgumentRenderConfiguration (ArgumentSource)(0), // 1: wg.cosmo.node.v1.ArgumentSource @@ -5290,183 +5379,185 @@ var file_wg_cosmo_node_v1_node_proto_goTypes = []any{ (*EntityCaching)(nil), // 20: wg.cosmo.node.v1.EntityCaching (*EntityCacheConfiguration)(nil), // 21: wg.cosmo.node.v1.EntityCacheConfiguration (*CacheInvalidateConfiguration)(nil), // 22: wg.cosmo.node.v1.CacheInvalidateConfiguration - (*CostConfiguration)(nil), // 23: wg.cosmo.node.v1.CostConfiguration - (*FieldWeightConfiguration)(nil), // 24: wg.cosmo.node.v1.FieldWeightConfiguration - (*FieldListSizeConfiguration)(nil), // 25: wg.cosmo.node.v1.FieldListSizeConfiguration - (*ArgumentConfiguration)(nil), // 26: wg.cosmo.node.v1.ArgumentConfiguration - (*Scopes)(nil), // 27: wg.cosmo.node.v1.Scopes - (*AuthorizationConfiguration)(nil), // 28: wg.cosmo.node.v1.AuthorizationConfiguration - (*FieldConfiguration)(nil), // 29: wg.cosmo.node.v1.FieldConfiguration - (*TypeConfiguration)(nil), // 30: wg.cosmo.node.v1.TypeConfiguration - (*TypeField)(nil), // 31: wg.cosmo.node.v1.TypeField - (*FieldCoordinates)(nil), // 32: wg.cosmo.node.v1.FieldCoordinates - (*FieldSetCondition)(nil), // 33: wg.cosmo.node.v1.FieldSetCondition - (*RequiredField)(nil), // 34: wg.cosmo.node.v1.RequiredField - (*EntityInterfaceConfiguration)(nil), // 35: wg.cosmo.node.v1.EntityInterfaceConfiguration - (*FetchConfiguration)(nil), // 36: wg.cosmo.node.v1.FetchConfiguration - (*StatusCodeTypeMapping)(nil), // 37: wg.cosmo.node.v1.StatusCodeTypeMapping - (*DataSourceCustom_GraphQL)(nil), // 38: wg.cosmo.node.v1.DataSourceCustom_GraphQL - (*GRPCConfiguration)(nil), // 39: wg.cosmo.node.v1.GRPCConfiguration - (*ImageReference)(nil), // 40: wg.cosmo.node.v1.ImageReference - (*PluginConfiguration)(nil), // 41: wg.cosmo.node.v1.PluginConfiguration - (*SSLConfiguration)(nil), // 42: wg.cosmo.node.v1.SSLConfiguration - (*GRPCMapping)(nil), // 43: wg.cosmo.node.v1.GRPCMapping - (*LookupMapping)(nil), // 44: wg.cosmo.node.v1.LookupMapping - (*LookupFieldMapping)(nil), // 45: wg.cosmo.node.v1.LookupFieldMapping - (*OperationMapping)(nil), // 46: wg.cosmo.node.v1.OperationMapping - (*EntityMapping)(nil), // 47: wg.cosmo.node.v1.EntityMapping - (*RequiredFieldMapping)(nil), // 48: wg.cosmo.node.v1.RequiredFieldMapping - (*TypeFieldMapping)(nil), // 49: wg.cosmo.node.v1.TypeFieldMapping - (*FieldMapping)(nil), // 50: wg.cosmo.node.v1.FieldMapping - (*ArgumentMapping)(nil), // 51: wg.cosmo.node.v1.ArgumentMapping - (*EnumMapping)(nil), // 52: wg.cosmo.node.v1.EnumMapping - (*EnumValueMapping)(nil), // 53: wg.cosmo.node.v1.EnumValueMapping - (*NatsStreamConfiguration)(nil), // 54: wg.cosmo.node.v1.NatsStreamConfiguration - (*NatsEventConfiguration)(nil), // 55: wg.cosmo.node.v1.NatsEventConfiguration - (*KafkaEventConfiguration)(nil), // 56: wg.cosmo.node.v1.KafkaEventConfiguration - (*RedisEventConfiguration)(nil), // 57: wg.cosmo.node.v1.RedisEventConfiguration - (*EngineEventConfiguration)(nil), // 58: wg.cosmo.node.v1.EngineEventConfiguration - (*DataSourceCustomEvents)(nil), // 59: wg.cosmo.node.v1.DataSourceCustomEvents - (*DataSourceCustom_Static)(nil), // 60: wg.cosmo.node.v1.DataSourceCustom_Static - (*ConfigurationVariable)(nil), // 61: wg.cosmo.node.v1.ConfigurationVariable - (*DirectiveConfiguration)(nil), // 62: wg.cosmo.node.v1.DirectiveConfiguration - (*URLQueryConfiguration)(nil), // 63: wg.cosmo.node.v1.URLQueryConfiguration - (*HTTPHeader)(nil), // 64: wg.cosmo.node.v1.HTTPHeader - (*MTLSConfiguration)(nil), // 65: wg.cosmo.node.v1.MTLSConfiguration - (*GraphQLSubscriptionConfiguration)(nil), // 66: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration - (*GraphQLFederationConfiguration)(nil), // 67: wg.cosmo.node.v1.GraphQLFederationConfiguration - (*InternedString)(nil), // 68: wg.cosmo.node.v1.InternedString - (*SingleTypeField)(nil), // 69: wg.cosmo.node.v1.SingleTypeField - (*SubscriptionFieldCondition)(nil), // 70: wg.cosmo.node.v1.SubscriptionFieldCondition - (*SubscriptionFilterCondition)(nil), // 71: wg.cosmo.node.v1.SubscriptionFilterCondition - (*CacheWarmerOperations)(nil), // 72: wg.cosmo.node.v1.CacheWarmerOperations - (*Operation)(nil), // 73: wg.cosmo.node.v1.Operation - (*OperationRequest)(nil), // 74: wg.cosmo.node.v1.OperationRequest - (*Extension)(nil), // 75: wg.cosmo.node.v1.Extension - (*PersistedQuery)(nil), // 76: wg.cosmo.node.v1.PersistedQuery - (*ClientInfo)(nil), // 77: wg.cosmo.node.v1.ClientInfo - nil, // 78: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry - nil, // 79: wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry - nil, // 80: wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry - nil, // 81: wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry - nil, // 82: wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry - nil, // 83: wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry - nil, // 84: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry - (common.EnumStatusCode)(0), // 85: wg.cosmo.common.EnumStatusCode - (common.GraphQLSubscriptionProtocol)(0), // 86: wg.cosmo.common.GraphQLSubscriptionProtocol - (common.GraphQLWebsocketSubprotocol)(0), // 87: wg.cosmo.common.GraphQLWebsocketSubprotocol + (*CachePopulateConfiguration)(nil), // 23: wg.cosmo.node.v1.CachePopulateConfiguration + (*CostConfiguration)(nil), // 24: wg.cosmo.node.v1.CostConfiguration + (*FieldWeightConfiguration)(nil), // 25: wg.cosmo.node.v1.FieldWeightConfiguration + (*FieldListSizeConfiguration)(nil), // 26: wg.cosmo.node.v1.FieldListSizeConfiguration + (*ArgumentConfiguration)(nil), // 27: wg.cosmo.node.v1.ArgumentConfiguration + (*Scopes)(nil), // 28: wg.cosmo.node.v1.Scopes + (*AuthorizationConfiguration)(nil), // 29: wg.cosmo.node.v1.AuthorizationConfiguration + (*FieldConfiguration)(nil), // 30: wg.cosmo.node.v1.FieldConfiguration + (*TypeConfiguration)(nil), // 31: wg.cosmo.node.v1.TypeConfiguration + (*TypeField)(nil), // 32: wg.cosmo.node.v1.TypeField + (*FieldCoordinates)(nil), // 33: wg.cosmo.node.v1.FieldCoordinates + (*FieldSetCondition)(nil), // 34: wg.cosmo.node.v1.FieldSetCondition + (*RequiredField)(nil), // 35: wg.cosmo.node.v1.RequiredField + (*EntityInterfaceConfiguration)(nil), // 36: wg.cosmo.node.v1.EntityInterfaceConfiguration + (*FetchConfiguration)(nil), // 37: wg.cosmo.node.v1.FetchConfiguration + (*StatusCodeTypeMapping)(nil), // 38: wg.cosmo.node.v1.StatusCodeTypeMapping + (*DataSourceCustom_GraphQL)(nil), // 39: wg.cosmo.node.v1.DataSourceCustom_GraphQL + (*GRPCConfiguration)(nil), // 40: wg.cosmo.node.v1.GRPCConfiguration + (*ImageReference)(nil), // 41: wg.cosmo.node.v1.ImageReference + (*PluginConfiguration)(nil), // 42: wg.cosmo.node.v1.PluginConfiguration + (*SSLConfiguration)(nil), // 43: wg.cosmo.node.v1.SSLConfiguration + (*GRPCMapping)(nil), // 44: wg.cosmo.node.v1.GRPCMapping + (*LookupMapping)(nil), // 45: wg.cosmo.node.v1.LookupMapping + (*LookupFieldMapping)(nil), // 46: wg.cosmo.node.v1.LookupFieldMapping + (*OperationMapping)(nil), // 47: wg.cosmo.node.v1.OperationMapping + (*EntityMapping)(nil), // 48: wg.cosmo.node.v1.EntityMapping + (*RequiredFieldMapping)(nil), // 49: wg.cosmo.node.v1.RequiredFieldMapping + (*TypeFieldMapping)(nil), // 50: wg.cosmo.node.v1.TypeFieldMapping + (*FieldMapping)(nil), // 51: wg.cosmo.node.v1.FieldMapping + (*ArgumentMapping)(nil), // 52: wg.cosmo.node.v1.ArgumentMapping + (*EnumMapping)(nil), // 53: wg.cosmo.node.v1.EnumMapping + (*EnumValueMapping)(nil), // 54: wg.cosmo.node.v1.EnumValueMapping + (*NatsStreamConfiguration)(nil), // 55: wg.cosmo.node.v1.NatsStreamConfiguration + (*NatsEventConfiguration)(nil), // 56: wg.cosmo.node.v1.NatsEventConfiguration + (*KafkaEventConfiguration)(nil), // 57: wg.cosmo.node.v1.KafkaEventConfiguration + (*RedisEventConfiguration)(nil), // 58: wg.cosmo.node.v1.RedisEventConfiguration + (*EngineEventConfiguration)(nil), // 59: wg.cosmo.node.v1.EngineEventConfiguration + (*DataSourceCustomEvents)(nil), // 60: wg.cosmo.node.v1.DataSourceCustomEvents + (*DataSourceCustom_Static)(nil), // 61: wg.cosmo.node.v1.DataSourceCustom_Static + (*ConfigurationVariable)(nil), // 62: wg.cosmo.node.v1.ConfigurationVariable + (*DirectiveConfiguration)(nil), // 63: wg.cosmo.node.v1.DirectiveConfiguration + (*URLQueryConfiguration)(nil), // 64: wg.cosmo.node.v1.URLQueryConfiguration + (*HTTPHeader)(nil), // 65: wg.cosmo.node.v1.HTTPHeader + (*MTLSConfiguration)(nil), // 66: wg.cosmo.node.v1.MTLSConfiguration + (*GraphQLSubscriptionConfiguration)(nil), // 67: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration + (*GraphQLFederationConfiguration)(nil), // 68: wg.cosmo.node.v1.GraphQLFederationConfiguration + (*InternedString)(nil), // 69: wg.cosmo.node.v1.InternedString + (*SingleTypeField)(nil), // 70: wg.cosmo.node.v1.SingleTypeField + (*SubscriptionFieldCondition)(nil), // 71: wg.cosmo.node.v1.SubscriptionFieldCondition + (*SubscriptionFilterCondition)(nil), // 72: wg.cosmo.node.v1.SubscriptionFilterCondition + (*CacheWarmerOperations)(nil), // 73: wg.cosmo.node.v1.CacheWarmerOperations + (*Operation)(nil), // 74: wg.cosmo.node.v1.Operation + (*OperationRequest)(nil), // 75: wg.cosmo.node.v1.OperationRequest + (*Extension)(nil), // 76: wg.cosmo.node.v1.Extension + (*PersistedQuery)(nil), // 77: wg.cosmo.node.v1.PersistedQuery + (*ClientInfo)(nil), // 78: wg.cosmo.node.v1.ClientInfo + nil, // 79: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry + nil, // 80: wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry + nil, // 81: wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry + nil, // 82: wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry + nil, // 83: wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry + nil, // 84: wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry + nil, // 85: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry + (common.EnumStatusCode)(0), // 86: wg.cosmo.common.EnumStatusCode + (common.GraphQLSubscriptionProtocol)(0), // 87: wg.cosmo.common.GraphQLSubscriptionProtocol + (common.GraphQLWebsocketSubprotocol)(0), // 88: wg.cosmo.common.GraphQLWebsocketSubprotocol } var file_wg_cosmo_node_v1_node_proto_depIdxs = []int32{ - 78, // 0: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.config_by_feature_flag_name:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry + 79, // 0: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.config_by_feature_flag_name:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry 18, // 1: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig.engine_config:type_name -> wg.cosmo.node.v1.EngineConfiguration 8, // 2: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig.subgraphs:type_name -> wg.cosmo.node.v1.Subgraph 18, // 3: wg.cosmo.node.v1.RouterConfig.engine_config:type_name -> wg.cosmo.node.v1.EngineConfiguration 8, // 4: wg.cosmo.node.v1.RouterConfig.subgraphs:type_name -> wg.cosmo.node.v1.Subgraph 9, // 5: wg.cosmo.node.v1.RouterConfig.feature_flag_configs:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs - 85, // 6: wg.cosmo.node.v1.Response.code:type_name -> wg.cosmo.common.EnumStatusCode + 86, // 6: wg.cosmo.node.v1.Response.code:type_name -> wg.cosmo.common.EnumStatusCode 15, // 7: wg.cosmo.node.v1.RegistrationInfo.account_limits:type_name -> wg.cosmo.node.v1.AccountLimits 12, // 8: wg.cosmo.node.v1.SelfRegisterResponse.response:type_name -> wg.cosmo.node.v1.Response 14, // 9: wg.cosmo.node.v1.SelfRegisterResponse.registrationInfo:type_name -> wg.cosmo.node.v1.RegistrationInfo 19, // 10: wg.cosmo.node.v1.EngineConfiguration.datasource_configurations:type_name -> wg.cosmo.node.v1.DataSourceConfiguration - 29, // 11: wg.cosmo.node.v1.EngineConfiguration.field_configurations:type_name -> wg.cosmo.node.v1.FieldConfiguration - 30, // 12: wg.cosmo.node.v1.EngineConfiguration.type_configurations:type_name -> wg.cosmo.node.v1.TypeConfiguration - 79, // 13: wg.cosmo.node.v1.EngineConfiguration.string_storage:type_name -> wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry + 30, // 11: wg.cosmo.node.v1.EngineConfiguration.field_configurations:type_name -> wg.cosmo.node.v1.FieldConfiguration + 31, // 12: wg.cosmo.node.v1.EngineConfiguration.type_configurations:type_name -> wg.cosmo.node.v1.TypeConfiguration + 80, // 13: wg.cosmo.node.v1.EngineConfiguration.string_storage:type_name -> wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry 2, // 14: wg.cosmo.node.v1.DataSourceConfiguration.kind:type_name -> wg.cosmo.node.v1.DataSourceKind - 31, // 15: wg.cosmo.node.v1.DataSourceConfiguration.root_nodes:type_name -> wg.cosmo.node.v1.TypeField - 31, // 16: wg.cosmo.node.v1.DataSourceConfiguration.child_nodes:type_name -> wg.cosmo.node.v1.TypeField - 38, // 17: wg.cosmo.node.v1.DataSourceConfiguration.custom_graphql:type_name -> wg.cosmo.node.v1.DataSourceCustom_GraphQL - 60, // 18: wg.cosmo.node.v1.DataSourceConfiguration.custom_static:type_name -> wg.cosmo.node.v1.DataSourceCustom_Static - 62, // 19: wg.cosmo.node.v1.DataSourceConfiguration.directives:type_name -> wg.cosmo.node.v1.DirectiveConfiguration - 34, // 20: wg.cosmo.node.v1.DataSourceConfiguration.keys:type_name -> wg.cosmo.node.v1.RequiredField - 34, // 21: wg.cosmo.node.v1.DataSourceConfiguration.provides:type_name -> wg.cosmo.node.v1.RequiredField - 34, // 22: wg.cosmo.node.v1.DataSourceConfiguration.requires:type_name -> wg.cosmo.node.v1.RequiredField - 59, // 23: wg.cosmo.node.v1.DataSourceConfiguration.custom_events:type_name -> wg.cosmo.node.v1.DataSourceCustomEvents - 35, // 24: wg.cosmo.node.v1.DataSourceConfiguration.entity_interfaces:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration - 35, // 25: wg.cosmo.node.v1.DataSourceConfiguration.interface_objects:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration - 23, // 26: wg.cosmo.node.v1.DataSourceConfiguration.cost_configuration:type_name -> wg.cosmo.node.v1.CostConfiguration + 32, // 15: wg.cosmo.node.v1.DataSourceConfiguration.root_nodes:type_name -> wg.cosmo.node.v1.TypeField + 32, // 16: wg.cosmo.node.v1.DataSourceConfiguration.child_nodes:type_name -> wg.cosmo.node.v1.TypeField + 39, // 17: wg.cosmo.node.v1.DataSourceConfiguration.custom_graphql:type_name -> wg.cosmo.node.v1.DataSourceCustom_GraphQL + 61, // 18: wg.cosmo.node.v1.DataSourceConfiguration.custom_static:type_name -> wg.cosmo.node.v1.DataSourceCustom_Static + 63, // 19: wg.cosmo.node.v1.DataSourceConfiguration.directives:type_name -> wg.cosmo.node.v1.DirectiveConfiguration + 35, // 20: wg.cosmo.node.v1.DataSourceConfiguration.keys:type_name -> wg.cosmo.node.v1.RequiredField + 35, // 21: wg.cosmo.node.v1.DataSourceConfiguration.provides:type_name -> wg.cosmo.node.v1.RequiredField + 35, // 22: wg.cosmo.node.v1.DataSourceConfiguration.requires:type_name -> wg.cosmo.node.v1.RequiredField + 60, // 23: wg.cosmo.node.v1.DataSourceConfiguration.custom_events:type_name -> wg.cosmo.node.v1.DataSourceCustomEvents + 36, // 24: wg.cosmo.node.v1.DataSourceConfiguration.entity_interfaces:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration + 36, // 25: wg.cosmo.node.v1.DataSourceConfiguration.interface_objects:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration + 24, // 26: wg.cosmo.node.v1.DataSourceConfiguration.cost_configuration:type_name -> wg.cosmo.node.v1.CostConfiguration 20, // 27: wg.cosmo.node.v1.DataSourceConfiguration.entity_caching:type_name -> wg.cosmo.node.v1.EntityCaching 21, // 28: wg.cosmo.node.v1.EntityCaching.entity_cache_configurations:type_name -> wg.cosmo.node.v1.EntityCacheConfiguration 22, // 29: wg.cosmo.node.v1.EntityCaching.cache_invalidate_configurations:type_name -> wg.cosmo.node.v1.CacheInvalidateConfiguration - 24, // 30: wg.cosmo.node.v1.CostConfiguration.field_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration - 25, // 31: wg.cosmo.node.v1.CostConfiguration.list_sizes:type_name -> wg.cosmo.node.v1.FieldListSizeConfiguration - 80, // 32: wg.cosmo.node.v1.CostConfiguration.type_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry - 81, // 33: wg.cosmo.node.v1.CostConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry - 82, // 34: wg.cosmo.node.v1.FieldWeightConfiguration.argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry - 83, // 35: wg.cosmo.node.v1.FieldWeightConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry - 1, // 36: wg.cosmo.node.v1.ArgumentConfiguration.source_type:type_name -> wg.cosmo.node.v1.ArgumentSource - 27, // 37: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes:type_name -> wg.cosmo.node.v1.Scopes - 27, // 38: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes_by_or:type_name -> wg.cosmo.node.v1.Scopes - 26, // 39: wg.cosmo.node.v1.FieldConfiguration.arguments_configuration:type_name -> wg.cosmo.node.v1.ArgumentConfiguration - 28, // 40: wg.cosmo.node.v1.FieldConfiguration.authorization_configuration:type_name -> wg.cosmo.node.v1.AuthorizationConfiguration - 71, // 41: wg.cosmo.node.v1.FieldConfiguration.subscription_filter_condition:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 32, // 42: wg.cosmo.node.v1.FieldSetCondition.field_coordinates_path:type_name -> wg.cosmo.node.v1.FieldCoordinates - 33, // 43: wg.cosmo.node.v1.RequiredField.conditions:type_name -> wg.cosmo.node.v1.FieldSetCondition - 61, // 44: wg.cosmo.node.v1.FetchConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 7, // 45: wg.cosmo.node.v1.FetchConfiguration.method:type_name -> wg.cosmo.node.v1.HTTPMethod - 84, // 46: wg.cosmo.node.v1.FetchConfiguration.header:type_name -> wg.cosmo.node.v1.FetchConfiguration.HeaderEntry - 61, // 47: wg.cosmo.node.v1.FetchConfiguration.body:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 63, // 48: wg.cosmo.node.v1.FetchConfiguration.query:type_name -> wg.cosmo.node.v1.URLQueryConfiguration - 65, // 49: wg.cosmo.node.v1.FetchConfiguration.mtls:type_name -> wg.cosmo.node.v1.MTLSConfiguration - 61, // 50: wg.cosmo.node.v1.FetchConfiguration.base_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 61, // 51: wg.cosmo.node.v1.FetchConfiguration.path:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 61, // 52: wg.cosmo.node.v1.FetchConfiguration.http_proxy_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 36, // 53: wg.cosmo.node.v1.DataSourceCustom_GraphQL.fetch:type_name -> wg.cosmo.node.v1.FetchConfiguration - 66, // 54: wg.cosmo.node.v1.DataSourceCustom_GraphQL.subscription:type_name -> wg.cosmo.node.v1.GraphQLSubscriptionConfiguration - 67, // 55: wg.cosmo.node.v1.DataSourceCustom_GraphQL.federation:type_name -> wg.cosmo.node.v1.GraphQLFederationConfiguration - 68, // 56: wg.cosmo.node.v1.DataSourceCustom_GraphQL.upstream_schema:type_name -> wg.cosmo.node.v1.InternedString - 69, // 57: wg.cosmo.node.v1.DataSourceCustom_GraphQL.custom_scalar_type_fields:type_name -> wg.cosmo.node.v1.SingleTypeField - 39, // 58: wg.cosmo.node.v1.DataSourceCustom_GraphQL.grpc:type_name -> wg.cosmo.node.v1.GRPCConfiguration - 43, // 59: wg.cosmo.node.v1.GRPCConfiguration.mapping:type_name -> wg.cosmo.node.v1.GRPCMapping - 41, // 60: wg.cosmo.node.v1.GRPCConfiguration.plugin:type_name -> wg.cosmo.node.v1.PluginConfiguration - 40, // 61: wg.cosmo.node.v1.PluginConfiguration.image_reference:type_name -> wg.cosmo.node.v1.ImageReference - 46, // 62: wg.cosmo.node.v1.GRPCMapping.operation_mappings:type_name -> wg.cosmo.node.v1.OperationMapping - 47, // 63: wg.cosmo.node.v1.GRPCMapping.entity_mappings:type_name -> wg.cosmo.node.v1.EntityMapping - 49, // 64: wg.cosmo.node.v1.GRPCMapping.type_field_mappings:type_name -> wg.cosmo.node.v1.TypeFieldMapping - 52, // 65: wg.cosmo.node.v1.GRPCMapping.enum_mappings:type_name -> wg.cosmo.node.v1.EnumMapping - 44, // 66: wg.cosmo.node.v1.GRPCMapping.resolve_mappings:type_name -> wg.cosmo.node.v1.LookupMapping - 3, // 67: wg.cosmo.node.v1.LookupMapping.type:type_name -> wg.cosmo.node.v1.LookupType - 45, // 68: wg.cosmo.node.v1.LookupMapping.lookup_mapping:type_name -> wg.cosmo.node.v1.LookupFieldMapping - 50, // 69: wg.cosmo.node.v1.LookupFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping - 4, // 70: wg.cosmo.node.v1.OperationMapping.type:type_name -> wg.cosmo.node.v1.OperationType - 48, // 71: wg.cosmo.node.v1.EntityMapping.required_field_mappings:type_name -> wg.cosmo.node.v1.RequiredFieldMapping - 50, // 72: wg.cosmo.node.v1.RequiredFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping - 50, // 73: wg.cosmo.node.v1.TypeFieldMapping.field_mappings:type_name -> wg.cosmo.node.v1.FieldMapping - 51, // 74: wg.cosmo.node.v1.FieldMapping.argument_mappings:type_name -> wg.cosmo.node.v1.ArgumentMapping - 53, // 75: wg.cosmo.node.v1.EnumMapping.values:type_name -> wg.cosmo.node.v1.EnumValueMapping - 58, // 76: wg.cosmo.node.v1.NatsEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 54, // 77: wg.cosmo.node.v1.NatsEventConfiguration.stream_configuration:type_name -> wg.cosmo.node.v1.NatsStreamConfiguration - 58, // 78: wg.cosmo.node.v1.KafkaEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 58, // 79: wg.cosmo.node.v1.RedisEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 5, // 80: wg.cosmo.node.v1.EngineEventConfiguration.type:type_name -> wg.cosmo.node.v1.EventType - 55, // 81: wg.cosmo.node.v1.DataSourceCustomEvents.nats:type_name -> wg.cosmo.node.v1.NatsEventConfiguration - 56, // 82: wg.cosmo.node.v1.DataSourceCustomEvents.kafka:type_name -> wg.cosmo.node.v1.KafkaEventConfiguration - 57, // 83: wg.cosmo.node.v1.DataSourceCustomEvents.redis:type_name -> wg.cosmo.node.v1.RedisEventConfiguration - 61, // 84: wg.cosmo.node.v1.DataSourceCustom_Static.data:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 6, // 85: wg.cosmo.node.v1.ConfigurationVariable.kind:type_name -> wg.cosmo.node.v1.ConfigurationVariableKind - 61, // 86: wg.cosmo.node.v1.HTTPHeader.values:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 61, // 87: wg.cosmo.node.v1.MTLSConfiguration.key:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 61, // 88: wg.cosmo.node.v1.MTLSConfiguration.cert:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 61, // 89: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 86, // 90: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol - 87, // 91: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.websocketSubprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol - 71, // 92: wg.cosmo.node.v1.SubscriptionFilterCondition.and:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 70, // 93: wg.cosmo.node.v1.SubscriptionFilterCondition.in:type_name -> wg.cosmo.node.v1.SubscriptionFieldCondition - 71, // 94: wg.cosmo.node.v1.SubscriptionFilterCondition.not:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 71, // 95: wg.cosmo.node.v1.SubscriptionFilterCondition.or:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 73, // 96: wg.cosmo.node.v1.CacheWarmerOperations.operations:type_name -> wg.cosmo.node.v1.Operation - 74, // 97: wg.cosmo.node.v1.Operation.request:type_name -> wg.cosmo.node.v1.OperationRequest - 77, // 98: wg.cosmo.node.v1.Operation.client:type_name -> wg.cosmo.node.v1.ClientInfo - 75, // 99: wg.cosmo.node.v1.OperationRequest.extensions:type_name -> wg.cosmo.node.v1.Extension - 76, // 100: wg.cosmo.node.v1.Extension.persisted_query:type_name -> wg.cosmo.node.v1.PersistedQuery - 10, // 101: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry.value:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig - 64, // 102: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry.value:type_name -> wg.cosmo.node.v1.HTTPHeader - 16, // 103: wg.cosmo.node.v1.NodeService.SelfRegister:input_type -> wg.cosmo.node.v1.SelfRegisterRequest - 17, // 104: wg.cosmo.node.v1.NodeService.SelfRegister:output_type -> wg.cosmo.node.v1.SelfRegisterResponse - 104, // [104:105] is the sub-list for method output_type - 103, // [103:104] is the sub-list for method input_type - 103, // [103:103] is the sub-list for extension type_name - 103, // [103:103] is the sub-list for extension extendee - 0, // [0:103] is the sub-list for field type_name + 23, // 30: wg.cosmo.node.v1.EntityCaching.cache_populate_configurations:type_name -> wg.cosmo.node.v1.CachePopulateConfiguration + 25, // 31: wg.cosmo.node.v1.CostConfiguration.field_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration + 26, // 32: wg.cosmo.node.v1.CostConfiguration.list_sizes:type_name -> wg.cosmo.node.v1.FieldListSizeConfiguration + 81, // 33: wg.cosmo.node.v1.CostConfiguration.type_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry + 82, // 34: wg.cosmo.node.v1.CostConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry + 83, // 35: wg.cosmo.node.v1.FieldWeightConfiguration.argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry + 84, // 36: wg.cosmo.node.v1.FieldWeightConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry + 1, // 37: wg.cosmo.node.v1.ArgumentConfiguration.source_type:type_name -> wg.cosmo.node.v1.ArgumentSource + 28, // 38: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes:type_name -> wg.cosmo.node.v1.Scopes + 28, // 39: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes_by_or:type_name -> wg.cosmo.node.v1.Scopes + 27, // 40: wg.cosmo.node.v1.FieldConfiguration.arguments_configuration:type_name -> wg.cosmo.node.v1.ArgumentConfiguration + 29, // 41: wg.cosmo.node.v1.FieldConfiguration.authorization_configuration:type_name -> wg.cosmo.node.v1.AuthorizationConfiguration + 72, // 42: wg.cosmo.node.v1.FieldConfiguration.subscription_filter_condition:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 33, // 43: wg.cosmo.node.v1.FieldSetCondition.field_coordinates_path:type_name -> wg.cosmo.node.v1.FieldCoordinates + 34, // 44: wg.cosmo.node.v1.RequiredField.conditions:type_name -> wg.cosmo.node.v1.FieldSetCondition + 62, // 45: wg.cosmo.node.v1.FetchConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 7, // 46: wg.cosmo.node.v1.FetchConfiguration.method:type_name -> wg.cosmo.node.v1.HTTPMethod + 85, // 47: wg.cosmo.node.v1.FetchConfiguration.header:type_name -> wg.cosmo.node.v1.FetchConfiguration.HeaderEntry + 62, // 48: wg.cosmo.node.v1.FetchConfiguration.body:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 64, // 49: wg.cosmo.node.v1.FetchConfiguration.query:type_name -> wg.cosmo.node.v1.URLQueryConfiguration + 66, // 50: wg.cosmo.node.v1.FetchConfiguration.mtls:type_name -> wg.cosmo.node.v1.MTLSConfiguration + 62, // 51: wg.cosmo.node.v1.FetchConfiguration.base_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 62, // 52: wg.cosmo.node.v1.FetchConfiguration.path:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 62, // 53: wg.cosmo.node.v1.FetchConfiguration.http_proxy_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 37, // 54: wg.cosmo.node.v1.DataSourceCustom_GraphQL.fetch:type_name -> wg.cosmo.node.v1.FetchConfiguration + 67, // 55: wg.cosmo.node.v1.DataSourceCustom_GraphQL.subscription:type_name -> wg.cosmo.node.v1.GraphQLSubscriptionConfiguration + 68, // 56: wg.cosmo.node.v1.DataSourceCustom_GraphQL.federation:type_name -> wg.cosmo.node.v1.GraphQLFederationConfiguration + 69, // 57: wg.cosmo.node.v1.DataSourceCustom_GraphQL.upstream_schema:type_name -> wg.cosmo.node.v1.InternedString + 70, // 58: wg.cosmo.node.v1.DataSourceCustom_GraphQL.custom_scalar_type_fields:type_name -> wg.cosmo.node.v1.SingleTypeField + 40, // 59: wg.cosmo.node.v1.DataSourceCustom_GraphQL.grpc:type_name -> wg.cosmo.node.v1.GRPCConfiguration + 44, // 60: wg.cosmo.node.v1.GRPCConfiguration.mapping:type_name -> wg.cosmo.node.v1.GRPCMapping + 42, // 61: wg.cosmo.node.v1.GRPCConfiguration.plugin:type_name -> wg.cosmo.node.v1.PluginConfiguration + 41, // 62: wg.cosmo.node.v1.PluginConfiguration.image_reference:type_name -> wg.cosmo.node.v1.ImageReference + 47, // 63: wg.cosmo.node.v1.GRPCMapping.operation_mappings:type_name -> wg.cosmo.node.v1.OperationMapping + 48, // 64: wg.cosmo.node.v1.GRPCMapping.entity_mappings:type_name -> wg.cosmo.node.v1.EntityMapping + 50, // 65: wg.cosmo.node.v1.GRPCMapping.type_field_mappings:type_name -> wg.cosmo.node.v1.TypeFieldMapping + 53, // 66: wg.cosmo.node.v1.GRPCMapping.enum_mappings:type_name -> wg.cosmo.node.v1.EnumMapping + 45, // 67: wg.cosmo.node.v1.GRPCMapping.resolve_mappings:type_name -> wg.cosmo.node.v1.LookupMapping + 3, // 68: wg.cosmo.node.v1.LookupMapping.type:type_name -> wg.cosmo.node.v1.LookupType + 46, // 69: wg.cosmo.node.v1.LookupMapping.lookup_mapping:type_name -> wg.cosmo.node.v1.LookupFieldMapping + 51, // 70: wg.cosmo.node.v1.LookupFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping + 4, // 71: wg.cosmo.node.v1.OperationMapping.type:type_name -> wg.cosmo.node.v1.OperationType + 49, // 72: wg.cosmo.node.v1.EntityMapping.required_field_mappings:type_name -> wg.cosmo.node.v1.RequiredFieldMapping + 51, // 73: wg.cosmo.node.v1.RequiredFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping + 51, // 74: wg.cosmo.node.v1.TypeFieldMapping.field_mappings:type_name -> wg.cosmo.node.v1.FieldMapping + 52, // 75: wg.cosmo.node.v1.FieldMapping.argument_mappings:type_name -> wg.cosmo.node.v1.ArgumentMapping + 54, // 76: wg.cosmo.node.v1.EnumMapping.values:type_name -> wg.cosmo.node.v1.EnumValueMapping + 59, // 77: wg.cosmo.node.v1.NatsEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 55, // 78: wg.cosmo.node.v1.NatsEventConfiguration.stream_configuration:type_name -> wg.cosmo.node.v1.NatsStreamConfiguration + 59, // 79: wg.cosmo.node.v1.KafkaEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 59, // 80: wg.cosmo.node.v1.RedisEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 5, // 81: wg.cosmo.node.v1.EngineEventConfiguration.type:type_name -> wg.cosmo.node.v1.EventType + 56, // 82: wg.cosmo.node.v1.DataSourceCustomEvents.nats:type_name -> wg.cosmo.node.v1.NatsEventConfiguration + 57, // 83: wg.cosmo.node.v1.DataSourceCustomEvents.kafka:type_name -> wg.cosmo.node.v1.KafkaEventConfiguration + 58, // 84: wg.cosmo.node.v1.DataSourceCustomEvents.redis:type_name -> wg.cosmo.node.v1.RedisEventConfiguration + 62, // 85: wg.cosmo.node.v1.DataSourceCustom_Static.data:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 6, // 86: wg.cosmo.node.v1.ConfigurationVariable.kind:type_name -> wg.cosmo.node.v1.ConfigurationVariableKind + 62, // 87: wg.cosmo.node.v1.HTTPHeader.values:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 62, // 88: wg.cosmo.node.v1.MTLSConfiguration.key:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 62, // 89: wg.cosmo.node.v1.MTLSConfiguration.cert:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 62, // 90: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 87, // 91: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol + 88, // 92: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.websocketSubprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol + 72, // 93: wg.cosmo.node.v1.SubscriptionFilterCondition.and:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 71, // 94: wg.cosmo.node.v1.SubscriptionFilterCondition.in:type_name -> wg.cosmo.node.v1.SubscriptionFieldCondition + 72, // 95: wg.cosmo.node.v1.SubscriptionFilterCondition.not:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 72, // 96: wg.cosmo.node.v1.SubscriptionFilterCondition.or:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 74, // 97: wg.cosmo.node.v1.CacheWarmerOperations.operations:type_name -> wg.cosmo.node.v1.Operation + 75, // 98: wg.cosmo.node.v1.Operation.request:type_name -> wg.cosmo.node.v1.OperationRequest + 78, // 99: wg.cosmo.node.v1.Operation.client:type_name -> wg.cosmo.node.v1.ClientInfo + 76, // 100: wg.cosmo.node.v1.OperationRequest.extensions:type_name -> wg.cosmo.node.v1.Extension + 77, // 101: wg.cosmo.node.v1.Extension.persisted_query:type_name -> wg.cosmo.node.v1.PersistedQuery + 10, // 102: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry.value:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig + 65, // 103: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry.value:type_name -> wg.cosmo.node.v1.HTTPHeader + 16, // 104: wg.cosmo.node.v1.NodeService.SelfRegister:input_type -> wg.cosmo.node.v1.SelfRegisterRequest + 17, // 105: wg.cosmo.node.v1.NodeService.SelfRegister:output_type -> wg.cosmo.node.v1.SelfRegisterResponse + 105, // [105:106] is the sub-list for method output_type + 104, // [104:105] is the sub-list for method input_type + 104, // [104:104] is the sub-list for extension type_name + 104, // [104:104] is the sub-list for extension extendee + 0, // [0:104] is the sub-list for field type_name } func init() { file_wg_cosmo_node_v1_node_proto_init() } @@ -5478,20 +5569,21 @@ func file_wg_cosmo_node_v1_node_proto_init() { file_wg_cosmo_node_v1_node_proto_msgTypes[4].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[9].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[10].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[16].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[15].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[17].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[21].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[28].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[33].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[58].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[63].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[18].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[22].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[29].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[34].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[59].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[64].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_wg_cosmo_node_v1_node_proto_rawDesc), len(file_wg_cosmo_node_v1_node_proto_rawDesc)), NumEnums: 8, - NumMessages: 77, + NumMessages: 78, NumExtensions: 0, NumServices: 1, }, diff --git a/shared/src/router-config/builder.ts b/shared/src/router-config/builder.ts index fe334e739d..fa4c413c74 100644 --- a/shared/src/router-config/builder.ts +++ b/shared/src/router-config/builder.ts @@ -24,6 +24,7 @@ import { DataSourceCustom_GraphQL, DataSourceCustomEvents, CacheInvalidateConfiguration, + CachePopulateConfiguration, DataSourceKind, EngineConfiguration, EntityCacheConfiguration, @@ -84,6 +85,7 @@ function toEntityCaching(dataByTypeName?: Map): Ent } const entityCacheConfigurations: EntityCacheConfiguration[] = []; const cacheInvalidateConfigurations: CacheInvalidateConfiguration[] = []; + const cachePopulateConfigurations: CachePopulateConfiguration[] = []; for (const data of dataByTypeName.values()) { for (const ec of data.entityCaching?.entityCacheConfigurations ?? []) { entityCacheConfigurations.push( @@ -106,16 +108,28 @@ function toEntityCaching(dataByTypeName?: Map): Ent }), ); } + for (const cp of data.entityCaching?.cachePopulateConfigurations ?? []) { + cachePopulateConfigurations.push( + new CachePopulateConfiguration({ + fieldName: cp.fieldName, + operationType: cp.operationType, + entityTypeName: cp.entityTypeName, + maxAgeSeconds: cp.maxAgeSeconds === undefined ? undefined : BigInt(cp.maxAgeSeconds), + }), + ); + } } if ( entityCacheConfigurations.length === 0 && - cacheInvalidateConfigurations.length === 0 + cacheInvalidateConfigurations.length === 0 && + cachePopulateConfigurations.length === 0 ) { return undefined; } return new EntityCaching({ entityCacheConfigurations, cacheInvalidateConfigurations, + cachePopulateConfigurations, }); } From faca30a4dbb6face579efe4b3b0a3af0dc00f120 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Fri, 19 Jun 2026 11:50:14 +0530 Subject: [PATCH 04/65] feat(composition): @openfed__requestScoped directive --- .../directive-definition-data.ts | 20 + composition/src/router-configuration/types.ts | 12 + composition/src/utils/string-constants.ts | 1 + composition/src/v1/constants/constants.ts | 3 + .../src/v1/constants/directive-definitions.ts | 18 + .../v1/normalization/normalization-factory.ts | 83 ++ .../src/v1/normalization/types/types.ts | 14 + composition/src/v1/normalization/utils.ts | 3 + composition/src/v1/warnings/params.ts | 6 + composition/src/v1/warnings/warnings.ts | 17 + .../v1/directives/request-scoped.test.ts | 140 ++++ .../gen/proto/wg/cosmo/node/v1/node.pb.go | 761 ++++++++++-------- connect/src/wg/cosmo/node/v1/node_pb.ts | 62 ++ proto/wg/cosmo/node/v1/node.proto | 12 + router/gen/proto/wg/cosmo/node/v1/node.pb.go | 761 ++++++++++-------- shared/src/router-config/builder.ts | 15 +- 16 files changed, 1247 insertions(+), 681 deletions(-) create mode 100644 composition/tests/v1/directives/request-scoped.test.ts diff --git a/composition/src/directive-definition-data/directive-definition-data.ts b/composition/src/directive-definition-data/directive-definition-data.ts index a675e84fa7..f2c8af2fe0 100644 --- a/composition/src/directive-definition-data/directive-definition-data.ts +++ b/composition/src/directive-definition-data/directive-definition-data.ts @@ -88,6 +88,7 @@ import { MAX_AGE, NEGATIVE_CACHE_TTL, PARTIAL_CACHE_LOAD, + REQUEST_SCOPED, SHADOW_MODE, } from '../utils/string-constants'; import { @@ -123,6 +124,7 @@ import { CACHE_INVALIDATE_DEFINITION, CACHE_POPULATE_DEFINITION, ENTITY_CACHE_DEFINITION, + REQUEST_SCOPED_DEFINITION, SPECIFIED_BY_DEFINITION, SUBSCRIPTION_FILTER_DEFINITION, TAG_DEFINITION, @@ -1044,3 +1046,21 @@ export const CACHE_POPULATE_DEFINITION_DATA = newDirectiveDefinitionData({ node: CACHE_POPULATE_DEFINITION, optionalArgumentNames: new Set([MAX_AGE]), }); +export const REQUEST_SCOPED_DEFINITION_DATA = newDirectiveDefinitionData({ + argumentDataByName: new Map([ + [ + KEY, + newDirectiveArgumentData({ + directive: `@${REQUEST_SCOPED}`, + name: KEY, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: REQUIRED_STRING_TYPE_NODE, + }), + ], + ]), + locations: new Set([FIELD_DEFINITION_UPPER]), + name: REQUEST_SCOPED, + node: REQUEST_SCOPED_DEFINITION, + requiredArgumentNames: new Set([KEY]), +}); + diff --git a/composition/src/router-configuration/types.ts b/composition/src/router-configuration/types.ts index cf7d2f95d2..e99ca60536 100644 --- a/composition/src/router-configuration/types.ts +++ b/composition/src/router-configuration/types.ts @@ -86,6 +86,17 @@ export type RequiredFieldConfiguration = { disableEntityResolver?: boolean; }; +export type RequestScopedFieldConfig = { + fieldName: FieldName; + typeName: TypeName; + // L1 cache key used to store/lookup this field's value for the duration of a request. + // Format: "{subgraphName}.{key}" where `key` is the @openfed__requestScoped(key:) argument. + // All fields in the same subgraph declaring @openfed__requestScoped with the same key share + // the same L1 entry — the first one to resolve populates it, subsequent ones inject + // from it (subject to widening checks and alias-aware normalization). + l1Key: string; +}; + export type ConfigurationData = { fieldNames: Set; isRootNode: boolean; @@ -144,6 +155,7 @@ export type EntityCachingConfiguration = { cacheInvalidateConfigurations?: Array; // Attached to the Mutation/Subscription type's ConfigurationData from @openfed__cachePopulate. cachePopulateConfigurations?: Array; + requestScopedFields?: Array; }; export type Costs = { diff --git a/composition/src/utils/string-constants.ts b/composition/src/utils/string-constants.ts index acf64234c6..9640ee1f24 100644 --- a/composition/src/utils/string-constants.ts +++ b/composition/src/utils/string-constants.ts @@ -132,6 +132,7 @@ export const REASON = 'reason'; export const REQUEST = 'request'; export const REQUIRE_FETCH_REASONS = 'openfed__requireFetchReasons'; export const REQUIRE_ONE_SLICING_ARGUMENT = 'requireOneSlicingArgument'; +export const REQUEST_SCOPED = 'openfed__requestScoped'; export const REQUIRES = 'requires'; export const REQUIRES_SCOPES = 'requiresScopes'; export const RESOLVABLE = 'resolvable'; diff --git a/composition/src/v1/constants/constants.ts b/composition/src/v1/constants/constants.ts index 0f950b5ed5..f2b9d878a3 100644 --- a/composition/src/v1/constants/constants.ts +++ b/composition/src/v1/constants/constants.ts @@ -10,6 +10,7 @@ import { CACHE_POPULATE, COST, ENTITY_CACHE, + REQUEST_SCOPED, DEPRECATED, EDFS_KAFKA_PUBLISH, EDFS_KAFKA_SUBSCRIBE, @@ -80,6 +81,7 @@ import { CACHE_INVALIDATE_DEFINITION, CACHE_POPULATE_DEFINITION, ENTITY_CACHE_DEFINITION, + REQUEST_SCOPED_DEFINITION, } from './directive-definitions'; export const DIRECTIVE_DEFINITION_BY_NAME: ReadonlyMap = new Map< @@ -95,6 +97,7 @@ export const DIRECTIVE_DEFINITION_BY_NAME: ReadonlyMap = []; + + for (const [, parentData] of this.parentDefinitionDataByTypeName) { + if (parentData.kind !== Kind.OBJECT_TYPE_DEFINITION && parentData.kind !== Kind.INTERFACE_TYPE_DEFINITION) { + continue; + } + const typeName = getParentTypeName(parentData); + for (const [fieldName, fieldData] of parentData.fieldDataByName) { + const directives = fieldData.directivesByName.get(REQUEST_SCOPED); + if (!directives) { + continue; + } + // validateDirectives() (run earlier in normalize()) has already guaranteed a single, non-repeated + // @openfed__requestScoped with a required String `key`, so the generic ConstDirectiveNode can be + // narrowed to the precise typed node — mirroring handleComposeDirective()/ComposeDirectiveNode. + const directive = directives[0] as RequestScopedDirectiveNode; + const keyArg = directive.arguments.find((arg) => arg.name.value === KEY); + if (!keyArg) { + continue; + } + + const fieldCoords = `${typeName}.${fieldName}`; + const key = keyArg.value.value; + const l1Key = `${this.subgraphName}.${key}`; + collected.push({ typeName, fieldName, fieldCoords, key, l1Key }); + } + } + + if (collected.length === 0) { + return; + } + + // Warn when a key is used on only one field — @openfed__requestScoped is meaningless + // unless >= 2 fields share the key (there'd be no second reader to benefit). + const coordsByKey = new Map>(); + for (const c of collected) { + getValueOrDefault(coordsByKey, c.key, () => []).push(c.fieldCoords); + } + for (const [key, coordsList] of coordsByKey) { + if (coordsList.length == 1) { + this.warnings.push( + requestScopedSingleFieldWarning({ + subgraphName: this.subgraphName, + key, + fieldCoords: coordsList[0], + }), + ); + } + } + + // Group by type and attach to configurationData. + const byType = new Map>(); + for (const c of collected) { + const list = byType.get(c.typeName) ?? []; + list.push({ fieldName: c.fieldName, typeName: c.typeName, l1Key: c.l1Key }); + byType.set(c.typeName, list); + } + for (const [typeName, fields] of byType) { + const configurationData = getValueOrDefault(this.configurationDataByTypeName, typeName, () => + newConfigurationData(false, typeName), + ); + configurationData.entityCaching = { ...configurationData.entityCaching, requestScopedFields: fields }; + } + } + addFieldNamesToConfigurationData(fieldDataByFieldName: Map, configurationData: ConfigurationData) { const externalFieldNames = new Set(); for (const [fieldName, fieldData] of fieldDataByFieldName) { @@ -4512,6 +4593,8 @@ export class NormalizationFactory { // per-field caching directives (@openfed__cacheInvalidate etc.) — must run after entityCache // (reads entityCacheConfigByTypeName) this.processRootFieldCacheDirectives(); + // this is where @openfed__requestScoped configurations are added to the ConfigurationData + this.extractRequestScopedFields(); // Check that explicitly defined operations types are valid objects and that their fields are also valid for (const operationType of Object.values(OperationTypeNode)) { const operationTypeNode = this.schemaData.operationTypes.get(operationType); diff --git a/composition/src/v1/normalization/types/types.ts b/composition/src/v1/normalization/types/types.ts index 62763e5ffa..52f8e6c857 100644 --- a/composition/src/v1/normalization/types/types.ts +++ b/composition/src/v1/normalization/types/types.ts @@ -139,6 +139,20 @@ export type ComposeDirectiveArgumentNode = { readonly loc?: Location; }; +export type RequestScopedDirectiveNode = { + readonly arguments: ReadonlyArray; + readonly kind: Kind.DIRECTIVE; + readonly name: NameNode; + readonly loc?: Location; +}; + +export type RequestScopedArgumentNode = { + readonly kind: Kind.ARGUMENT; + readonly name: NameNode; + readonly value: StringValueNode; // key: String! — guaranteed by validateDirectives() + readonly loc?: Location; +}; + export type EntityCacheDirectiveNode = { readonly arguments: ReadonlyArray; readonly kind: Kind.DIRECTIVE; diff --git a/composition/src/v1/normalization/utils.ts b/composition/src/v1/normalization/utils.ts index 4edbd10d54..c60e3e3af1 100644 --- a/composition/src/v1/normalization/utils.ts +++ b/composition/src/v1/normalization/utils.ts @@ -79,6 +79,7 @@ import { CACHE_INVALIDATE_DEFINITION_DATA, CACHE_POPULATE_DEFINITION_DATA, ENTITY_CACHE_DEFINITION_DATA, + REQUEST_SCOPED_DEFINITION_DATA, } from '../../directive-definition-data/directive-definition-data'; import { AS, @@ -91,6 +92,7 @@ import { CACHE_POPULATE, COST, ENTITY_CACHE, + REQUEST_SCOPED, DEPRECATED, EDFS_KAFKA_PUBLISH, EDFS_KAFKA_SUBSCRIBE, @@ -482,6 +484,7 @@ export function initializeDirectiveDefinitionDatas(): Map { + describe('registry', () => { + test('the directive is materialized in the normalized subgraph output', () => { + const { directiveDefinitionByName } = normalizeSubgraphSuccess( + createSubgraphWithDefault(` + type Query { + me: User @openfed__requestScoped(key: "u") + viewer: User @openfed__requestScoped(key: "u") + } + type User @key(fields: "id") { + id: ID! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(directiveDefinitionByName.has(OPENFED_REQUEST_SCOPED)).toBe(true); + expect(directiveDefinitionByName.get(OPENFED_REQUEST_SCOPED)).toBe(OPENFED_REQUEST_SCOPED_DEFINITION); + }); + }); + + describe('configuration extraction', () => { + test('≥ 2 fields sharing the same key produce a subgraph-prefixed l1Key and no warning', () => { + const result = normalizeSubgraphSuccess( + createSubgraphWithDefault(` + type Query { + me: User @openfed__requestScoped(key: "me") + viewer: User @openfed__requestScoped(key: "me") + } + type User @key(fields: "id") { + id: ID! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + const config = result.configurationDataByTypeName.get('Query'); + expect(config!.entityCaching?.requestScopedFields).toBeDefined(); + expect(config!.entityCaching?.requestScopedFields).toHaveLength(2); + expect(config!.entityCaching!.requestScopedFields!.map((f) => f.l1Key)).toEqual([ + 'subgraph-default-a.me', + 'subgraph-default-a.me', + ]); + expect(result.warnings).toHaveLength(0); + }); + + test('works on a non-entity object type field', () => { + const result = normalizeSubgraphSuccess( + createSubgraphWithDefault(` + type Query { + currentLocale: String @openfed__requestScoped(key: "locale") + articleLocale: String @openfed__requestScoped(key: "locale") + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + const config = result.configurationDataByTypeName.get('Query'); + expect(config!.entityCaching?.requestScopedFields).toBeDefined(); + expect(config!.entityCaching?.requestScopedFields).toHaveLength(2); + expect(config!.entityCaching!.requestScopedFields![0].fieldName).toBe('currentLocale'); + expect(config!.entityCaching!.requestScopedFields![0].l1Key).toBe('subgraph-default-a.locale'); + }); + + test('a key declared on only one field still populates config but emits a warning', () => { + const result = normalizeSubgraphSuccess( + createSubgraphWithDefault(` + type Query { + currentUser: User @openfed__requestScoped(key: "lonely") + } + type User @key(fields: "id") { + id: ID! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + const config = result.configurationDataByTypeName.get('Query'); + expect(config!.entityCaching?.requestScopedFields).toHaveLength(1); + expect(config!.entityCaching!.requestScopedFields![0].l1Key).toBe('subgraph-default-a.lonely'); + expect(result.warnings).toStrictEqual([ + requestScopedSingleFieldWarning({ + subgraphName: 'subgraph-default-a', + key: 'lonely', + fieldCoords: 'Query.currentUser', + }), + ]); + }); + }); + + describe('validation', () => { + test('missing key argument is a failure', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + currentUser: User @openfed__requestScoped + } + type User @key(fields: "id") { + id: ID! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_REQUEST_SCOPED, 'Query.currentUser', FIRST_ORDINAL, [ + undefinedRequiredArgumentsErrorMessage(OPENFED_REQUEST_SCOPED, ['key'], []), + ]), + ); + }); + + test('the directive is not repeatable — two on the same field fails', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + currentUser: User @openfed__requestScoped(key: "a") @openfed__requestScoped(key: "b") + } + type User @key(fields: "id") { + id: ID! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_REQUEST_SCOPED, 'Query.currentUser', FIRST_ORDINAL, [ + invalidRepeatedDirectiveErrorMessage(OPENFED_REQUEST_SCOPED), + ]), + ); + }); + }); +}); diff --git a/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go b/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go index 379cbd715b..b2f143f74b 100644 --- a/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go +++ b/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go @@ -1234,8 +1234,10 @@ type EntityCaching struct { CacheInvalidateConfigurations []*CacheInvalidateConfiguration `protobuf:"bytes,2,rep,name=cache_invalidate_configurations,json=cacheInvalidateConfigurations,proto3" json:"cache_invalidate_configurations,omitempty"` // Per-Mutation/Subscription-field cache population configs (from @openfed__cachePopulate) CachePopulateConfigurations []*CachePopulateConfiguration `protobuf:"bytes,3,rep,name=cache_populate_configurations,json=cachePopulateConfigurations,proto3" json:"cache_populate_configurations,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // Request-scoped field configurations (from @openfed__requestScoped directive) + RequestScopedFields []*RequestScopedFieldConfiguration `protobuf:"bytes,4,rep,name=request_scoped_fields,json=requestScopedFields,proto3" json:"request_scoped_fields,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *EntityCaching) Reset() { @@ -1289,6 +1291,13 @@ func (x *EntityCaching) GetCachePopulateConfigurations() []*CachePopulateConfigu return nil } +func (x *EntityCaching) GetRequestScopedFields() []*RequestScopedFieldConfiguration { + if x != nil { + return x.RequestScopedFields + } + return nil +} + // Per-entity declaration for @openfed__entityCache. Marks a @key entity type as cacheable so the // router can store/serve resolved entities from an external store (e.g. Redis). type EntityCacheConfiguration struct { @@ -1515,6 +1524,70 @@ func (x *CachePopulateConfiguration) GetEntityTypeName() string { return "" } +// Per-field declaration for @openfed__requestScoped. All fields in the same subgraph declaring +// @openfed__requestScoped(key: "X") share L1 key "{subgraphName}.X". The first field to resolve +// populates L1; subsequent fields with the same key inject from L1 and can skip their +// fetch when all required sub-fields are present. +type RequestScopedFieldConfiguration struct { + state protoimpl.MessageState `protogen:"open.v1"` + FieldName string `protobuf:"bytes,1,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` + TypeName string `protobuf:"bytes,2,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` + L1Key string `protobuf:"bytes,3,opt,name=l1_key,json=l1Key,proto3" json:"l1_key,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RequestScopedFieldConfiguration) Reset() { + *x = RequestScopedFieldConfiguration{} + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RequestScopedFieldConfiguration) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RequestScopedFieldConfiguration) ProtoMessage() {} + +func (x *RequestScopedFieldConfiguration) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RequestScopedFieldConfiguration.ProtoReflect.Descriptor instead. +func (*RequestScopedFieldConfiguration) Descriptor() ([]byte, []int) { + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{16} +} + +func (x *RequestScopedFieldConfiguration) GetFieldName() string { + if x != nil { + return x.FieldName + } + return "" +} + +func (x *RequestScopedFieldConfiguration) GetTypeName() string { + if x != nil { + return x.TypeName + } + return "" +} + +func (x *RequestScopedFieldConfiguration) GetL1Key() string { + if x != nil { + return x.L1Key + } + return "" +} + type CostConfiguration struct { state protoimpl.MessageState `protogen:"open.v1"` FieldWeights []*FieldWeightConfiguration `protobuf:"bytes,1,rep,name=field_weights,json=fieldWeights,proto3" json:"field_weights,omitempty"` @@ -1527,7 +1600,7 @@ type CostConfiguration struct { func (x *CostConfiguration) Reset() { *x = CostConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1539,7 +1612,7 @@ func (x *CostConfiguration) String() string { func (*CostConfiguration) ProtoMessage() {} func (x *CostConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1552,7 +1625,7 @@ func (x *CostConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use CostConfiguration.ProtoReflect.Descriptor instead. func (*CostConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{16} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{17} } func (x *CostConfiguration) GetFieldWeights() []*FieldWeightConfiguration { @@ -1596,7 +1669,7 @@ type FieldWeightConfiguration struct { func (x *FieldWeightConfiguration) Reset() { *x = FieldWeightConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1608,7 +1681,7 @@ func (x *FieldWeightConfiguration) String() string { func (*FieldWeightConfiguration) ProtoMessage() {} func (x *FieldWeightConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1621,7 +1694,7 @@ func (x *FieldWeightConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldWeightConfiguration.ProtoReflect.Descriptor instead. func (*FieldWeightConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{17} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{18} } func (x *FieldWeightConfiguration) GetTypeName() string { @@ -1673,7 +1746,7 @@ type FieldListSizeConfiguration struct { func (x *FieldListSizeConfiguration) Reset() { *x = FieldListSizeConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1685,7 +1758,7 @@ func (x *FieldListSizeConfiguration) String() string { func (*FieldListSizeConfiguration) ProtoMessage() {} func (x *FieldListSizeConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1698,7 +1771,7 @@ func (x *FieldListSizeConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldListSizeConfiguration.ProtoReflect.Descriptor instead. func (*FieldListSizeConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{18} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{19} } func (x *FieldListSizeConfiguration) GetTypeName() string { @@ -1753,7 +1826,7 @@ type ArgumentConfiguration struct { func (x *ArgumentConfiguration) Reset() { *x = ArgumentConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1765,7 +1838,7 @@ func (x *ArgumentConfiguration) String() string { func (*ArgumentConfiguration) ProtoMessage() {} func (x *ArgumentConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1778,7 +1851,7 @@ func (x *ArgumentConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use ArgumentConfiguration.ProtoReflect.Descriptor instead. func (*ArgumentConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{19} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{20} } func (x *ArgumentConfiguration) GetName() string { @@ -1804,7 +1877,7 @@ type Scopes struct { func (x *Scopes) Reset() { *x = Scopes{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1816,7 +1889,7 @@ func (x *Scopes) String() string { func (*Scopes) ProtoMessage() {} func (x *Scopes) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1829,7 +1902,7 @@ func (x *Scopes) ProtoReflect() protoreflect.Message { // Deprecated: Use Scopes.ProtoReflect.Descriptor instead. func (*Scopes) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{20} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{21} } func (x *Scopes) GetRequiredAndScopes() []string { @@ -1850,7 +1923,7 @@ type AuthorizationConfiguration struct { func (x *AuthorizationConfiguration) Reset() { *x = AuthorizationConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1862,7 +1935,7 @@ func (x *AuthorizationConfiguration) String() string { func (*AuthorizationConfiguration) ProtoMessage() {} func (x *AuthorizationConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1875,7 +1948,7 @@ func (x *AuthorizationConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use AuthorizationConfiguration.ProtoReflect.Descriptor instead. func (*AuthorizationConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{21} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{22} } func (x *AuthorizationConfiguration) GetRequiresAuthentication() bool { @@ -1912,7 +1985,7 @@ type FieldConfiguration struct { func (x *FieldConfiguration) Reset() { *x = FieldConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1924,7 +1997,7 @@ func (x *FieldConfiguration) String() string { func (*FieldConfiguration) ProtoMessage() {} func (x *FieldConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1937,7 +2010,7 @@ func (x *FieldConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldConfiguration.ProtoReflect.Descriptor instead. func (*FieldConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{22} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{23} } func (x *FieldConfiguration) GetTypeName() string { @@ -1985,7 +2058,7 @@ type TypeConfiguration struct { func (x *TypeConfiguration) Reset() { *x = TypeConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1997,7 +2070,7 @@ func (x *TypeConfiguration) String() string { func (*TypeConfiguration) ProtoMessage() {} func (x *TypeConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2010,7 +2083,7 @@ func (x *TypeConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeConfiguration.ProtoReflect.Descriptor instead. func (*TypeConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{23} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{24} } func (x *TypeConfiguration) GetTypeName() string { @@ -2039,7 +2112,7 @@ type TypeField struct { func (x *TypeField) Reset() { *x = TypeField{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2051,7 +2124,7 @@ func (x *TypeField) String() string { func (*TypeField) ProtoMessage() {} func (x *TypeField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2064,7 +2137,7 @@ func (x *TypeField) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeField.ProtoReflect.Descriptor instead. func (*TypeField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{24} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{25} } func (x *TypeField) GetTypeName() string { @@ -2105,7 +2178,7 @@ type FieldCoordinates struct { func (x *FieldCoordinates) Reset() { *x = FieldCoordinates{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2117,7 +2190,7 @@ func (x *FieldCoordinates) String() string { func (*FieldCoordinates) ProtoMessage() {} func (x *FieldCoordinates) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2130,7 +2203,7 @@ func (x *FieldCoordinates) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldCoordinates.ProtoReflect.Descriptor instead. func (*FieldCoordinates) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{25} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{26} } func (x *FieldCoordinates) GetFieldName() string { @@ -2157,7 +2230,7 @@ type FieldSetCondition struct { func (x *FieldSetCondition) Reset() { *x = FieldSetCondition{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2169,7 +2242,7 @@ func (x *FieldSetCondition) String() string { func (*FieldSetCondition) ProtoMessage() {} func (x *FieldSetCondition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2182,7 +2255,7 @@ func (x *FieldSetCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldSetCondition.ProtoReflect.Descriptor instead. func (*FieldSetCondition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{26} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{27} } func (x *FieldSetCondition) GetFieldCoordinatesPath() []*FieldCoordinates { @@ -2212,7 +2285,7 @@ type RequiredField struct { func (x *RequiredField) Reset() { *x = RequiredField{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2224,7 +2297,7 @@ func (x *RequiredField) String() string { func (*RequiredField) ProtoMessage() {} func (x *RequiredField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2237,7 +2310,7 @@ func (x *RequiredField) ProtoReflect() protoreflect.Message { // Deprecated: Use RequiredField.ProtoReflect.Descriptor instead. func (*RequiredField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{27} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{28} } func (x *RequiredField) GetTypeName() string { @@ -2285,7 +2358,7 @@ type EntityInterfaceConfiguration struct { func (x *EntityInterfaceConfiguration) Reset() { *x = EntityInterfaceConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2297,7 +2370,7 @@ func (x *EntityInterfaceConfiguration) String() string { func (*EntityInterfaceConfiguration) ProtoMessage() {} func (x *EntityInterfaceConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2310,7 +2383,7 @@ func (x *EntityInterfaceConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use EntityInterfaceConfiguration.ProtoReflect.Descriptor instead. func (*EntityInterfaceConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{28} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{29} } func (x *EntityInterfaceConfiguration) GetInterfaceTypeName() string { @@ -2353,7 +2426,7 @@ type FetchConfiguration struct { func (x *FetchConfiguration) Reset() { *x = FetchConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2365,7 +2438,7 @@ func (x *FetchConfiguration) String() string { func (*FetchConfiguration) ProtoMessage() {} func (x *FetchConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2378,7 +2451,7 @@ func (x *FetchConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FetchConfiguration.ProtoReflect.Descriptor instead. func (*FetchConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{29} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{30} } func (x *FetchConfiguration) GetUrl() *ConfigurationVariable { @@ -2462,7 +2535,7 @@ type StatusCodeTypeMapping struct { func (x *StatusCodeTypeMapping) Reset() { *x = StatusCodeTypeMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2474,7 +2547,7 @@ func (x *StatusCodeTypeMapping) String() string { func (*StatusCodeTypeMapping) ProtoMessage() {} func (x *StatusCodeTypeMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2487,7 +2560,7 @@ func (x *StatusCodeTypeMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use StatusCodeTypeMapping.ProtoReflect.Descriptor instead. func (*StatusCodeTypeMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{30} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{31} } func (x *StatusCodeTypeMapping) GetStatusCode() int64 { @@ -2525,7 +2598,7 @@ type DataSourceCustom_GraphQL struct { func (x *DataSourceCustom_GraphQL) Reset() { *x = DataSourceCustom_GraphQL{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2537,7 +2610,7 @@ func (x *DataSourceCustom_GraphQL) String() string { func (*DataSourceCustom_GraphQL) ProtoMessage() {} func (x *DataSourceCustom_GraphQL) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2550,7 +2623,7 @@ func (x *DataSourceCustom_GraphQL) ProtoReflect() protoreflect.Message { // Deprecated: Use DataSourceCustom_GraphQL.ProtoReflect.Descriptor instead. func (*DataSourceCustom_GraphQL) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{31} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{32} } func (x *DataSourceCustom_GraphQL) GetFetch() *FetchConfiguration { @@ -2606,7 +2679,7 @@ type GRPCConfiguration struct { func (x *GRPCConfiguration) Reset() { *x = GRPCConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2618,7 +2691,7 @@ func (x *GRPCConfiguration) String() string { func (*GRPCConfiguration) ProtoMessage() {} func (x *GRPCConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2631,7 +2704,7 @@ func (x *GRPCConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCConfiguration.ProtoReflect.Descriptor instead. func (*GRPCConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{32} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{33} } func (x *GRPCConfiguration) GetMapping() *GRPCMapping { @@ -2665,7 +2738,7 @@ type ImageReference struct { func (x *ImageReference) Reset() { *x = ImageReference{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2677,7 +2750,7 @@ func (x *ImageReference) String() string { func (*ImageReference) ProtoMessage() {} func (x *ImageReference) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2690,7 +2763,7 @@ func (x *ImageReference) ProtoReflect() protoreflect.Message { // Deprecated: Use ImageReference.ProtoReflect.Descriptor instead. func (*ImageReference) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{33} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{34} } func (x *ImageReference) GetRepository() string { @@ -2720,7 +2793,7 @@ type PluginConfiguration struct { func (x *PluginConfiguration) Reset() { *x = PluginConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2732,7 +2805,7 @@ func (x *PluginConfiguration) String() string { func (*PluginConfiguration) ProtoMessage() {} func (x *PluginConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2745,7 +2818,7 @@ func (x *PluginConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use PluginConfiguration.ProtoReflect.Descriptor instead. func (*PluginConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{34} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{35} } func (x *PluginConfiguration) GetName() string { @@ -2779,7 +2852,7 @@ type SSLConfiguration struct { func (x *SSLConfiguration) Reset() { *x = SSLConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2791,7 +2864,7 @@ func (x *SSLConfiguration) String() string { func (*SSLConfiguration) ProtoMessage() {} func (x *SSLConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2804,7 +2877,7 @@ func (x *SSLConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use SSLConfiguration.ProtoReflect.Descriptor instead. func (*SSLConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{35} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{36} } func (x *SSLConfiguration) GetEnabled() bool { @@ -2837,7 +2910,7 @@ type GRPCMapping struct { func (x *GRPCMapping) Reset() { *x = GRPCMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2849,7 +2922,7 @@ func (x *GRPCMapping) String() string { func (*GRPCMapping) ProtoMessage() {} func (x *GRPCMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2862,7 +2935,7 @@ func (x *GRPCMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCMapping.ProtoReflect.Descriptor instead. func (*GRPCMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{36} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{37} } func (x *GRPCMapping) GetVersion() int32 { @@ -2933,7 +3006,7 @@ type LookupMapping struct { func (x *LookupMapping) Reset() { *x = LookupMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2945,7 +3018,7 @@ func (x *LookupMapping) String() string { func (*LookupMapping) ProtoMessage() {} func (x *LookupMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2958,7 +3031,7 @@ func (x *LookupMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use LookupMapping.ProtoReflect.Descriptor instead. func (*LookupMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{37} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{38} } func (x *LookupMapping) GetType() LookupType { @@ -3009,7 +3082,7 @@ type LookupFieldMapping struct { func (x *LookupFieldMapping) Reset() { *x = LookupFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3021,7 +3094,7 @@ func (x *LookupFieldMapping) String() string { func (*LookupFieldMapping) ProtoMessage() {} func (x *LookupFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3034,7 +3107,7 @@ func (x *LookupFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use LookupFieldMapping.ProtoReflect.Descriptor instead. func (*LookupFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{38} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{39} } func (x *LookupFieldMapping) GetType() string { @@ -3070,7 +3143,7 @@ type OperationMapping struct { func (x *OperationMapping) Reset() { *x = OperationMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3082,7 +3155,7 @@ func (x *OperationMapping) String() string { func (*OperationMapping) ProtoMessage() {} func (x *OperationMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3095,7 +3168,7 @@ func (x *OperationMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use OperationMapping.ProtoReflect.Descriptor instead. func (*OperationMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{39} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{40} } func (x *OperationMapping) GetType() OperationType { @@ -3156,7 +3229,7 @@ type EntityMapping struct { func (x *EntityMapping) Reset() { *x = EntityMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3168,7 +3241,7 @@ func (x *EntityMapping) String() string { func (*EntityMapping) ProtoMessage() {} func (x *EntityMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3181,7 +3254,7 @@ func (x *EntityMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EntityMapping.ProtoReflect.Descriptor instead. func (*EntityMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{40} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{41} } func (x *EntityMapping) GetTypeName() string { @@ -3249,7 +3322,7 @@ type RequiredFieldMapping struct { func (x *RequiredFieldMapping) Reset() { *x = RequiredFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3261,7 +3334,7 @@ func (x *RequiredFieldMapping) String() string { func (*RequiredFieldMapping) ProtoMessage() {} func (x *RequiredFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3274,7 +3347,7 @@ func (x *RequiredFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use RequiredFieldMapping.ProtoReflect.Descriptor instead. func (*RequiredFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{41} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{42} } func (x *RequiredFieldMapping) GetFieldMapping() *FieldMapping { @@ -3318,7 +3391,7 @@ type TypeFieldMapping struct { func (x *TypeFieldMapping) Reset() { *x = TypeFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3330,7 +3403,7 @@ func (x *TypeFieldMapping) String() string { func (*TypeFieldMapping) ProtoMessage() {} func (x *TypeFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3343,7 +3416,7 @@ func (x *TypeFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeFieldMapping.ProtoReflect.Descriptor instead. func (*TypeFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{42} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{43} } func (x *TypeFieldMapping) GetType() string { @@ -3375,7 +3448,7 @@ type FieldMapping struct { func (x *FieldMapping) Reset() { *x = FieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3387,7 +3460,7 @@ func (x *FieldMapping) String() string { func (*FieldMapping) ProtoMessage() {} func (x *FieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3400,7 +3473,7 @@ func (x *FieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldMapping.ProtoReflect.Descriptor instead. func (*FieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{43} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{44} } func (x *FieldMapping) GetOriginal() string { @@ -3437,7 +3510,7 @@ type ArgumentMapping struct { func (x *ArgumentMapping) Reset() { *x = ArgumentMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3449,7 +3522,7 @@ func (x *ArgumentMapping) String() string { func (*ArgumentMapping) ProtoMessage() {} func (x *ArgumentMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3462,7 +3535,7 @@ func (x *ArgumentMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use ArgumentMapping.ProtoReflect.Descriptor instead. func (*ArgumentMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{44} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{45} } func (x *ArgumentMapping) GetOriginal() string { @@ -3489,7 +3562,7 @@ type EnumMapping struct { func (x *EnumMapping) Reset() { *x = EnumMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3501,7 +3574,7 @@ func (x *EnumMapping) String() string { func (*EnumMapping) ProtoMessage() {} func (x *EnumMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3514,7 +3587,7 @@ func (x *EnumMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EnumMapping.ProtoReflect.Descriptor instead. func (*EnumMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{45} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{46} } func (x *EnumMapping) GetType() string { @@ -3541,7 +3614,7 @@ type EnumValueMapping struct { func (x *EnumValueMapping) Reset() { *x = EnumValueMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3553,7 +3626,7 @@ func (x *EnumValueMapping) String() string { func (*EnumValueMapping) ProtoMessage() {} func (x *EnumValueMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3566,7 +3639,7 @@ func (x *EnumValueMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EnumValueMapping.ProtoReflect.Descriptor instead. func (*EnumValueMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{46} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{47} } func (x *EnumValueMapping) GetOriginal() string { @@ -3594,7 +3667,7 @@ type NatsStreamConfiguration struct { func (x *NatsStreamConfiguration) Reset() { *x = NatsStreamConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3606,7 +3679,7 @@ func (x *NatsStreamConfiguration) String() string { func (*NatsStreamConfiguration) ProtoMessage() {} func (x *NatsStreamConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3619,7 +3692,7 @@ func (x *NatsStreamConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use NatsStreamConfiguration.ProtoReflect.Descriptor instead. func (*NatsStreamConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{47} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{48} } func (x *NatsStreamConfiguration) GetConsumerName() string { @@ -3654,7 +3727,7 @@ type NatsEventConfiguration struct { func (x *NatsEventConfiguration) Reset() { *x = NatsEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3666,7 +3739,7 @@ func (x *NatsEventConfiguration) String() string { func (*NatsEventConfiguration) ProtoMessage() {} func (x *NatsEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3679,7 +3752,7 @@ func (x *NatsEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use NatsEventConfiguration.ProtoReflect.Descriptor instead. func (*NatsEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{48} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{49} } func (x *NatsEventConfiguration) GetEngineEventConfiguration() *EngineEventConfiguration { @@ -3713,7 +3786,7 @@ type KafkaEventConfiguration struct { func (x *KafkaEventConfiguration) Reset() { *x = KafkaEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3725,7 +3798,7 @@ func (x *KafkaEventConfiguration) String() string { func (*KafkaEventConfiguration) ProtoMessage() {} func (x *KafkaEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3738,7 +3811,7 @@ func (x *KafkaEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use KafkaEventConfiguration.ProtoReflect.Descriptor instead. func (*KafkaEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{49} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{50} } func (x *KafkaEventConfiguration) GetEngineEventConfiguration() *EngineEventConfiguration { @@ -3765,7 +3838,7 @@ type RedisEventConfiguration struct { func (x *RedisEventConfiguration) Reset() { *x = RedisEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3777,7 +3850,7 @@ func (x *RedisEventConfiguration) String() string { func (*RedisEventConfiguration) ProtoMessage() {} func (x *RedisEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3790,7 +3863,7 @@ func (x *RedisEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use RedisEventConfiguration.ProtoReflect.Descriptor instead. func (*RedisEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{50} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{51} } func (x *RedisEventConfiguration) GetEngineEventConfiguration() *EngineEventConfiguration { @@ -3819,7 +3892,7 @@ type EngineEventConfiguration struct { func (x *EngineEventConfiguration) Reset() { *x = EngineEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3831,7 +3904,7 @@ func (x *EngineEventConfiguration) String() string { func (*EngineEventConfiguration) ProtoMessage() {} func (x *EngineEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3844,7 +3917,7 @@ func (x *EngineEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use EngineEventConfiguration.ProtoReflect.Descriptor instead. func (*EngineEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{51} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{52} } func (x *EngineEventConfiguration) GetProviderId() string { @@ -3886,7 +3959,7 @@ type DataSourceCustomEvents struct { func (x *DataSourceCustomEvents) Reset() { *x = DataSourceCustomEvents{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3898,7 +3971,7 @@ func (x *DataSourceCustomEvents) String() string { func (*DataSourceCustomEvents) ProtoMessage() {} func (x *DataSourceCustomEvents) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3911,7 +3984,7 @@ func (x *DataSourceCustomEvents) ProtoReflect() protoreflect.Message { // Deprecated: Use DataSourceCustomEvents.ProtoReflect.Descriptor instead. func (*DataSourceCustomEvents) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{52} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{53} } func (x *DataSourceCustomEvents) GetNats() []*NatsEventConfiguration { @@ -3944,7 +4017,7 @@ type DataSourceCustom_Static struct { func (x *DataSourceCustom_Static) Reset() { *x = DataSourceCustom_Static{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3956,7 +4029,7 @@ func (x *DataSourceCustom_Static) String() string { func (*DataSourceCustom_Static) ProtoMessage() {} func (x *DataSourceCustom_Static) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3969,7 +4042,7 @@ func (x *DataSourceCustom_Static) ProtoReflect() protoreflect.Message { // Deprecated: Use DataSourceCustom_Static.ProtoReflect.Descriptor instead. func (*DataSourceCustom_Static) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{53} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{54} } func (x *DataSourceCustom_Static) GetData() *ConfigurationVariable { @@ -3992,7 +4065,7 @@ type ConfigurationVariable struct { func (x *ConfigurationVariable) Reset() { *x = ConfigurationVariable{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4004,7 +4077,7 @@ func (x *ConfigurationVariable) String() string { func (*ConfigurationVariable) ProtoMessage() {} func (x *ConfigurationVariable) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4017,7 +4090,7 @@ func (x *ConfigurationVariable) ProtoReflect() protoreflect.Message { // Deprecated: Use ConfigurationVariable.ProtoReflect.Descriptor instead. func (*ConfigurationVariable) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{54} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{55} } func (x *ConfigurationVariable) GetKind() ConfigurationVariableKind { @@ -4065,7 +4138,7 @@ type DirectiveConfiguration struct { func (x *DirectiveConfiguration) Reset() { *x = DirectiveConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4077,7 +4150,7 @@ func (x *DirectiveConfiguration) String() string { func (*DirectiveConfiguration) ProtoMessage() {} func (x *DirectiveConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4090,7 +4163,7 @@ func (x *DirectiveConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use DirectiveConfiguration.ProtoReflect.Descriptor instead. func (*DirectiveConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{55} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{56} } func (x *DirectiveConfiguration) GetDirectiveName() string { @@ -4117,7 +4190,7 @@ type URLQueryConfiguration struct { func (x *URLQueryConfiguration) Reset() { *x = URLQueryConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4129,7 +4202,7 @@ func (x *URLQueryConfiguration) String() string { func (*URLQueryConfiguration) ProtoMessage() {} func (x *URLQueryConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4142,7 +4215,7 @@ func (x *URLQueryConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use URLQueryConfiguration.ProtoReflect.Descriptor instead. func (*URLQueryConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{56} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{57} } func (x *URLQueryConfiguration) GetName() string { @@ -4168,7 +4241,7 @@ type HTTPHeader struct { func (x *HTTPHeader) Reset() { *x = HTTPHeader{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4180,7 +4253,7 @@ func (x *HTTPHeader) String() string { func (*HTTPHeader) ProtoMessage() {} func (x *HTTPHeader) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4193,7 +4266,7 @@ func (x *HTTPHeader) ProtoReflect() protoreflect.Message { // Deprecated: Use HTTPHeader.ProtoReflect.Descriptor instead. func (*HTTPHeader) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{57} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{58} } func (x *HTTPHeader) GetValues() []*ConfigurationVariable { @@ -4214,7 +4287,7 @@ type MTLSConfiguration struct { func (x *MTLSConfiguration) Reset() { *x = MTLSConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4226,7 +4299,7 @@ func (x *MTLSConfiguration) String() string { func (*MTLSConfiguration) ProtoMessage() {} func (x *MTLSConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4239,7 +4312,7 @@ func (x *MTLSConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use MTLSConfiguration.ProtoReflect.Descriptor instead. func (*MTLSConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{58} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{59} } func (x *MTLSConfiguration) GetKey() *ConfigurationVariable { @@ -4277,7 +4350,7 @@ type GraphQLSubscriptionConfiguration struct { func (x *GraphQLSubscriptionConfiguration) Reset() { *x = GraphQLSubscriptionConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4289,7 +4362,7 @@ func (x *GraphQLSubscriptionConfiguration) String() string { func (*GraphQLSubscriptionConfiguration) ProtoMessage() {} func (x *GraphQLSubscriptionConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4302,7 +4375,7 @@ func (x *GraphQLSubscriptionConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use GraphQLSubscriptionConfiguration.ProtoReflect.Descriptor instead. func (*GraphQLSubscriptionConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{59} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{60} } func (x *GraphQLSubscriptionConfiguration) GetEnabled() bool { @@ -4350,7 +4423,7 @@ type GraphQLFederationConfiguration struct { func (x *GraphQLFederationConfiguration) Reset() { *x = GraphQLFederationConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4362,7 +4435,7 @@ func (x *GraphQLFederationConfiguration) String() string { func (*GraphQLFederationConfiguration) ProtoMessage() {} func (x *GraphQLFederationConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4375,7 +4448,7 @@ func (x *GraphQLFederationConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use GraphQLFederationConfiguration.ProtoReflect.Descriptor instead. func (*GraphQLFederationConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{60} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{61} } func (x *GraphQLFederationConfiguration) GetEnabled() bool { @@ -4402,7 +4475,7 @@ type InternedString struct { func (x *InternedString) Reset() { *x = InternedString{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4414,7 +4487,7 @@ func (x *InternedString) String() string { func (*InternedString) ProtoMessage() {} func (x *InternedString) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4427,7 +4500,7 @@ func (x *InternedString) ProtoReflect() protoreflect.Message { // Deprecated: Use InternedString.ProtoReflect.Descriptor instead. func (*InternedString) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{61} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{62} } func (x *InternedString) GetKey() string { @@ -4447,7 +4520,7 @@ type SingleTypeField struct { func (x *SingleTypeField) Reset() { *x = SingleTypeField{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4459,7 +4532,7 @@ func (x *SingleTypeField) String() string { func (*SingleTypeField) ProtoMessage() {} func (x *SingleTypeField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4472,7 +4545,7 @@ func (x *SingleTypeField) ProtoReflect() protoreflect.Message { // Deprecated: Use SingleTypeField.ProtoReflect.Descriptor instead. func (*SingleTypeField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{62} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{63} } func (x *SingleTypeField) GetTypeName() string { @@ -4499,7 +4572,7 @@ type SubscriptionFieldCondition struct { func (x *SubscriptionFieldCondition) Reset() { *x = SubscriptionFieldCondition{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4511,7 +4584,7 @@ func (x *SubscriptionFieldCondition) String() string { func (*SubscriptionFieldCondition) ProtoMessage() {} func (x *SubscriptionFieldCondition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4524,7 +4597,7 @@ func (x *SubscriptionFieldCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionFieldCondition.ProtoReflect.Descriptor instead. func (*SubscriptionFieldCondition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{63} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{64} } func (x *SubscriptionFieldCondition) GetFieldPath() []string { @@ -4553,7 +4626,7 @@ type SubscriptionFilterCondition struct { func (x *SubscriptionFilterCondition) Reset() { *x = SubscriptionFilterCondition{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4565,7 +4638,7 @@ func (x *SubscriptionFilterCondition) String() string { func (*SubscriptionFilterCondition) ProtoMessage() {} func (x *SubscriptionFilterCondition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4578,7 +4651,7 @@ func (x *SubscriptionFilterCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionFilterCondition.ProtoReflect.Descriptor instead. func (*SubscriptionFilterCondition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{64} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{65} } func (x *SubscriptionFilterCondition) GetAnd() []*SubscriptionFilterCondition { @@ -4618,7 +4691,7 @@ type CacheWarmerOperations struct { func (x *CacheWarmerOperations) Reset() { *x = CacheWarmerOperations{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4630,7 +4703,7 @@ func (x *CacheWarmerOperations) String() string { func (*CacheWarmerOperations) ProtoMessage() {} func (x *CacheWarmerOperations) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4643,7 +4716,7 @@ func (x *CacheWarmerOperations) ProtoReflect() protoreflect.Message { // Deprecated: Use CacheWarmerOperations.ProtoReflect.Descriptor instead. func (*CacheWarmerOperations) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{65} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{66} } func (x *CacheWarmerOperations) GetOperations() []*Operation { @@ -4663,7 +4736,7 @@ type Operation struct { func (x *Operation) Reset() { *x = Operation{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4675,7 +4748,7 @@ func (x *Operation) String() string { func (*Operation) ProtoMessage() {} func (x *Operation) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4688,7 +4761,7 @@ func (x *Operation) ProtoReflect() protoreflect.Message { // Deprecated: Use Operation.ProtoReflect.Descriptor instead. func (*Operation) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{66} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{67} } func (x *Operation) GetRequest() *OperationRequest { @@ -4716,7 +4789,7 @@ type OperationRequest struct { func (x *OperationRequest) Reset() { *x = OperationRequest{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4728,7 +4801,7 @@ func (x *OperationRequest) String() string { func (*OperationRequest) ProtoMessage() {} func (x *OperationRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4741,7 +4814,7 @@ func (x *OperationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use OperationRequest.ProtoReflect.Descriptor instead. func (*OperationRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{67} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{68} } func (x *OperationRequest) GetOperationName() string { @@ -4774,7 +4847,7 @@ type Extension struct { func (x *Extension) Reset() { *x = Extension{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4786,7 +4859,7 @@ func (x *Extension) String() string { func (*Extension) ProtoMessage() {} func (x *Extension) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[69] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4799,7 +4872,7 @@ func (x *Extension) ProtoReflect() protoreflect.Message { // Deprecated: Use Extension.ProtoReflect.Descriptor instead. func (*Extension) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{68} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{69} } func (x *Extension) GetPersistedQuery() *PersistedQuery { @@ -4819,7 +4892,7 @@ type PersistedQuery struct { func (x *PersistedQuery) Reset() { *x = PersistedQuery{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[69] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4831,7 +4904,7 @@ func (x *PersistedQuery) String() string { func (*PersistedQuery) ProtoMessage() {} func (x *PersistedQuery) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[69] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[70] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4844,7 +4917,7 @@ func (x *PersistedQuery) ProtoReflect() protoreflect.Message { // Deprecated: Use PersistedQuery.ProtoReflect.Descriptor instead. func (*PersistedQuery) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{69} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{70} } func (x *PersistedQuery) GetSha256Hash() string { @@ -4871,7 +4944,7 @@ type ClientInfo struct { func (x *ClientInfo) Reset() { *x = ClientInfo{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[70] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4883,7 +4956,7 @@ func (x *ClientInfo) String() string { func (*ClientInfo) ProtoMessage() {} func (x *ClientInfo) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[70] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[71] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4896,7 +4969,7 @@ func (x *ClientInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ClientInfo.ProtoReflect.Descriptor instead. func (*ClientInfo) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{70} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{71} } func (x *ClientInfo) GetName() string { @@ -4991,11 +5064,12 @@ const file_wg_cosmo_node_v1_node_proto_rawDesc = "" + "\x11entity_interfaces\x18\x0e \x03(\v2..wg.cosmo.node.v1.EntityInterfaceConfigurationR\x10entityInterfaces\x12[\n" + "\x11interface_objects\x18\x0f \x03(\v2..wg.cosmo.node.v1.EntityInterfaceConfigurationR\x10interfaceObjects\x12R\n" + "\x12cost_configuration\x18\x10 \x01(\v2#.wg.cosmo.node.v1.CostConfigurationR\x11costConfiguration\x12F\n" + - "\x0eentity_caching\x18\x11 \x01(\v2\x1f.wg.cosmo.node.v1.EntityCachingR\rentityCaching\"\xe5\x02\n" + + "\x0eentity_caching\x18\x11 \x01(\v2\x1f.wg.cosmo.node.v1.EntityCachingR\rentityCaching\"\xcc\x03\n" + "\rEntityCaching\x12j\n" + "\x1bentity_cache_configurations\x18\x01 \x03(\v2*.wg.cosmo.node.v1.EntityCacheConfigurationR\x19entityCacheConfigurations\x12v\n" + "\x1fcache_invalidate_configurations\x18\x02 \x03(\v2..wg.cosmo.node.v1.CacheInvalidateConfigurationR\x1dcacheInvalidateConfigurations\x12p\n" + - "\x1dcache_populate_configurations\x18\x03 \x03(\v2,.wg.cosmo.node.v1.CachePopulateConfigurationR\x1bcachePopulateConfigurations\"\x95\x02\n" + + "\x1dcache_populate_configurations\x18\x03 \x03(\v2,.wg.cosmo.node.v1.CachePopulateConfigurationR\x1bcachePopulateConfigurations\x12e\n" + + "\x15request_scoped_fields\x18\x04 \x03(\v21.wg.cosmo.node.v1.RequestScopedFieldConfigurationR\x13requestScopedFields\"\x95\x02\n" + "\x18EntityCacheConfiguration\x12\x1b\n" + "\ttype_name\x18\x01 \x01(\tR\btypeName\x12&\n" + "\x0fmax_age_seconds\x18\x02 \x01(\x03R\rmaxAgeSeconds\x12'\n" + @@ -5015,7 +5089,12 @@ const file_wg_cosmo_node_v1_node_proto_rawDesc = "" + "\x0eoperation_type\x18\x02 \x01(\tR\roperationType\x12+\n" + "\x0fmax_age_seconds\x18\x03 \x01(\x03H\x00R\rmaxAgeSeconds\x88\x01\x01\x12(\n" + "\x10entity_type_name\x18\x04 \x01(\tR\x0eentityTypeNameB\x12\n" + - "\x10_max_age_seconds\"\x98\x04\n" + + "\x10_max_age_seconds\"t\n" + + "\x1fRequestScopedFieldConfiguration\x12\x1d\n" + + "\n" + + "field_name\x18\x01 \x01(\tR\tfieldName\x12\x1b\n" + + "\ttype_name\x18\x02 \x01(\tR\btypeName\x12\x15\n" + + "\x06l1_key\x18\x03 \x01(\tR\x05l1Key\"\x98\x04\n" + "\x11CostConfiguration\x12O\n" + "\rfield_weights\x18\x01 \x03(\v2*.wg.cosmo.node.v1.FieldWeightConfigurationR\ffieldWeights\x12K\n" + "\n" + @@ -5354,7 +5433,7 @@ func file_wg_cosmo_node_v1_node_proto_rawDescGZIP() []byte { } var file_wg_cosmo_node_v1_node_proto_enumTypes = make([]protoimpl.EnumInfo, 8) -var file_wg_cosmo_node_v1_node_proto_msgTypes = make([]protoimpl.MessageInfo, 78) +var file_wg_cosmo_node_v1_node_proto_msgTypes = make([]protoimpl.MessageInfo, 79) var file_wg_cosmo_node_v1_node_proto_goTypes = []any{ (ArgumentRenderConfiguration)(0), // 0: wg.cosmo.node.v1.ArgumentRenderConfiguration (ArgumentSource)(0), // 1: wg.cosmo.node.v1.ArgumentSource @@ -5380,184 +5459,186 @@ var file_wg_cosmo_node_v1_node_proto_goTypes = []any{ (*EntityCacheConfiguration)(nil), // 21: wg.cosmo.node.v1.EntityCacheConfiguration (*CacheInvalidateConfiguration)(nil), // 22: wg.cosmo.node.v1.CacheInvalidateConfiguration (*CachePopulateConfiguration)(nil), // 23: wg.cosmo.node.v1.CachePopulateConfiguration - (*CostConfiguration)(nil), // 24: wg.cosmo.node.v1.CostConfiguration - (*FieldWeightConfiguration)(nil), // 25: wg.cosmo.node.v1.FieldWeightConfiguration - (*FieldListSizeConfiguration)(nil), // 26: wg.cosmo.node.v1.FieldListSizeConfiguration - (*ArgumentConfiguration)(nil), // 27: wg.cosmo.node.v1.ArgumentConfiguration - (*Scopes)(nil), // 28: wg.cosmo.node.v1.Scopes - (*AuthorizationConfiguration)(nil), // 29: wg.cosmo.node.v1.AuthorizationConfiguration - (*FieldConfiguration)(nil), // 30: wg.cosmo.node.v1.FieldConfiguration - (*TypeConfiguration)(nil), // 31: wg.cosmo.node.v1.TypeConfiguration - (*TypeField)(nil), // 32: wg.cosmo.node.v1.TypeField - (*FieldCoordinates)(nil), // 33: wg.cosmo.node.v1.FieldCoordinates - (*FieldSetCondition)(nil), // 34: wg.cosmo.node.v1.FieldSetCondition - (*RequiredField)(nil), // 35: wg.cosmo.node.v1.RequiredField - (*EntityInterfaceConfiguration)(nil), // 36: wg.cosmo.node.v1.EntityInterfaceConfiguration - (*FetchConfiguration)(nil), // 37: wg.cosmo.node.v1.FetchConfiguration - (*StatusCodeTypeMapping)(nil), // 38: wg.cosmo.node.v1.StatusCodeTypeMapping - (*DataSourceCustom_GraphQL)(nil), // 39: wg.cosmo.node.v1.DataSourceCustom_GraphQL - (*GRPCConfiguration)(nil), // 40: wg.cosmo.node.v1.GRPCConfiguration - (*ImageReference)(nil), // 41: wg.cosmo.node.v1.ImageReference - (*PluginConfiguration)(nil), // 42: wg.cosmo.node.v1.PluginConfiguration - (*SSLConfiguration)(nil), // 43: wg.cosmo.node.v1.SSLConfiguration - (*GRPCMapping)(nil), // 44: wg.cosmo.node.v1.GRPCMapping - (*LookupMapping)(nil), // 45: wg.cosmo.node.v1.LookupMapping - (*LookupFieldMapping)(nil), // 46: wg.cosmo.node.v1.LookupFieldMapping - (*OperationMapping)(nil), // 47: wg.cosmo.node.v1.OperationMapping - (*EntityMapping)(nil), // 48: wg.cosmo.node.v1.EntityMapping - (*RequiredFieldMapping)(nil), // 49: wg.cosmo.node.v1.RequiredFieldMapping - (*TypeFieldMapping)(nil), // 50: wg.cosmo.node.v1.TypeFieldMapping - (*FieldMapping)(nil), // 51: wg.cosmo.node.v1.FieldMapping - (*ArgumentMapping)(nil), // 52: wg.cosmo.node.v1.ArgumentMapping - (*EnumMapping)(nil), // 53: wg.cosmo.node.v1.EnumMapping - (*EnumValueMapping)(nil), // 54: wg.cosmo.node.v1.EnumValueMapping - (*NatsStreamConfiguration)(nil), // 55: wg.cosmo.node.v1.NatsStreamConfiguration - (*NatsEventConfiguration)(nil), // 56: wg.cosmo.node.v1.NatsEventConfiguration - (*KafkaEventConfiguration)(nil), // 57: wg.cosmo.node.v1.KafkaEventConfiguration - (*RedisEventConfiguration)(nil), // 58: wg.cosmo.node.v1.RedisEventConfiguration - (*EngineEventConfiguration)(nil), // 59: wg.cosmo.node.v1.EngineEventConfiguration - (*DataSourceCustomEvents)(nil), // 60: wg.cosmo.node.v1.DataSourceCustomEvents - (*DataSourceCustom_Static)(nil), // 61: wg.cosmo.node.v1.DataSourceCustom_Static - (*ConfigurationVariable)(nil), // 62: wg.cosmo.node.v1.ConfigurationVariable - (*DirectiveConfiguration)(nil), // 63: wg.cosmo.node.v1.DirectiveConfiguration - (*URLQueryConfiguration)(nil), // 64: wg.cosmo.node.v1.URLQueryConfiguration - (*HTTPHeader)(nil), // 65: wg.cosmo.node.v1.HTTPHeader - (*MTLSConfiguration)(nil), // 66: wg.cosmo.node.v1.MTLSConfiguration - (*GraphQLSubscriptionConfiguration)(nil), // 67: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration - (*GraphQLFederationConfiguration)(nil), // 68: wg.cosmo.node.v1.GraphQLFederationConfiguration - (*InternedString)(nil), // 69: wg.cosmo.node.v1.InternedString - (*SingleTypeField)(nil), // 70: wg.cosmo.node.v1.SingleTypeField - (*SubscriptionFieldCondition)(nil), // 71: wg.cosmo.node.v1.SubscriptionFieldCondition - (*SubscriptionFilterCondition)(nil), // 72: wg.cosmo.node.v1.SubscriptionFilterCondition - (*CacheWarmerOperations)(nil), // 73: wg.cosmo.node.v1.CacheWarmerOperations - (*Operation)(nil), // 74: wg.cosmo.node.v1.Operation - (*OperationRequest)(nil), // 75: wg.cosmo.node.v1.OperationRequest - (*Extension)(nil), // 76: wg.cosmo.node.v1.Extension - (*PersistedQuery)(nil), // 77: wg.cosmo.node.v1.PersistedQuery - (*ClientInfo)(nil), // 78: wg.cosmo.node.v1.ClientInfo - nil, // 79: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry - nil, // 80: wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry - nil, // 81: wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry - nil, // 82: wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry - nil, // 83: wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry - nil, // 84: wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry - nil, // 85: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry - (common.EnumStatusCode)(0), // 86: wg.cosmo.common.EnumStatusCode - (common.GraphQLSubscriptionProtocol)(0), // 87: wg.cosmo.common.GraphQLSubscriptionProtocol - (common.GraphQLWebsocketSubprotocol)(0), // 88: wg.cosmo.common.GraphQLWebsocketSubprotocol + (*RequestScopedFieldConfiguration)(nil), // 24: wg.cosmo.node.v1.RequestScopedFieldConfiguration + (*CostConfiguration)(nil), // 25: wg.cosmo.node.v1.CostConfiguration + (*FieldWeightConfiguration)(nil), // 26: wg.cosmo.node.v1.FieldWeightConfiguration + (*FieldListSizeConfiguration)(nil), // 27: wg.cosmo.node.v1.FieldListSizeConfiguration + (*ArgumentConfiguration)(nil), // 28: wg.cosmo.node.v1.ArgumentConfiguration + (*Scopes)(nil), // 29: wg.cosmo.node.v1.Scopes + (*AuthorizationConfiguration)(nil), // 30: wg.cosmo.node.v1.AuthorizationConfiguration + (*FieldConfiguration)(nil), // 31: wg.cosmo.node.v1.FieldConfiguration + (*TypeConfiguration)(nil), // 32: wg.cosmo.node.v1.TypeConfiguration + (*TypeField)(nil), // 33: wg.cosmo.node.v1.TypeField + (*FieldCoordinates)(nil), // 34: wg.cosmo.node.v1.FieldCoordinates + (*FieldSetCondition)(nil), // 35: wg.cosmo.node.v1.FieldSetCondition + (*RequiredField)(nil), // 36: wg.cosmo.node.v1.RequiredField + (*EntityInterfaceConfiguration)(nil), // 37: wg.cosmo.node.v1.EntityInterfaceConfiguration + (*FetchConfiguration)(nil), // 38: wg.cosmo.node.v1.FetchConfiguration + (*StatusCodeTypeMapping)(nil), // 39: wg.cosmo.node.v1.StatusCodeTypeMapping + (*DataSourceCustom_GraphQL)(nil), // 40: wg.cosmo.node.v1.DataSourceCustom_GraphQL + (*GRPCConfiguration)(nil), // 41: wg.cosmo.node.v1.GRPCConfiguration + (*ImageReference)(nil), // 42: wg.cosmo.node.v1.ImageReference + (*PluginConfiguration)(nil), // 43: wg.cosmo.node.v1.PluginConfiguration + (*SSLConfiguration)(nil), // 44: wg.cosmo.node.v1.SSLConfiguration + (*GRPCMapping)(nil), // 45: wg.cosmo.node.v1.GRPCMapping + (*LookupMapping)(nil), // 46: wg.cosmo.node.v1.LookupMapping + (*LookupFieldMapping)(nil), // 47: wg.cosmo.node.v1.LookupFieldMapping + (*OperationMapping)(nil), // 48: wg.cosmo.node.v1.OperationMapping + (*EntityMapping)(nil), // 49: wg.cosmo.node.v1.EntityMapping + (*RequiredFieldMapping)(nil), // 50: wg.cosmo.node.v1.RequiredFieldMapping + (*TypeFieldMapping)(nil), // 51: wg.cosmo.node.v1.TypeFieldMapping + (*FieldMapping)(nil), // 52: wg.cosmo.node.v1.FieldMapping + (*ArgumentMapping)(nil), // 53: wg.cosmo.node.v1.ArgumentMapping + (*EnumMapping)(nil), // 54: wg.cosmo.node.v1.EnumMapping + (*EnumValueMapping)(nil), // 55: wg.cosmo.node.v1.EnumValueMapping + (*NatsStreamConfiguration)(nil), // 56: wg.cosmo.node.v1.NatsStreamConfiguration + (*NatsEventConfiguration)(nil), // 57: wg.cosmo.node.v1.NatsEventConfiguration + (*KafkaEventConfiguration)(nil), // 58: wg.cosmo.node.v1.KafkaEventConfiguration + (*RedisEventConfiguration)(nil), // 59: wg.cosmo.node.v1.RedisEventConfiguration + (*EngineEventConfiguration)(nil), // 60: wg.cosmo.node.v1.EngineEventConfiguration + (*DataSourceCustomEvents)(nil), // 61: wg.cosmo.node.v1.DataSourceCustomEvents + (*DataSourceCustom_Static)(nil), // 62: wg.cosmo.node.v1.DataSourceCustom_Static + (*ConfigurationVariable)(nil), // 63: wg.cosmo.node.v1.ConfigurationVariable + (*DirectiveConfiguration)(nil), // 64: wg.cosmo.node.v1.DirectiveConfiguration + (*URLQueryConfiguration)(nil), // 65: wg.cosmo.node.v1.URLQueryConfiguration + (*HTTPHeader)(nil), // 66: wg.cosmo.node.v1.HTTPHeader + (*MTLSConfiguration)(nil), // 67: wg.cosmo.node.v1.MTLSConfiguration + (*GraphQLSubscriptionConfiguration)(nil), // 68: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration + (*GraphQLFederationConfiguration)(nil), // 69: wg.cosmo.node.v1.GraphQLFederationConfiguration + (*InternedString)(nil), // 70: wg.cosmo.node.v1.InternedString + (*SingleTypeField)(nil), // 71: wg.cosmo.node.v1.SingleTypeField + (*SubscriptionFieldCondition)(nil), // 72: wg.cosmo.node.v1.SubscriptionFieldCondition + (*SubscriptionFilterCondition)(nil), // 73: wg.cosmo.node.v1.SubscriptionFilterCondition + (*CacheWarmerOperations)(nil), // 74: wg.cosmo.node.v1.CacheWarmerOperations + (*Operation)(nil), // 75: wg.cosmo.node.v1.Operation + (*OperationRequest)(nil), // 76: wg.cosmo.node.v1.OperationRequest + (*Extension)(nil), // 77: wg.cosmo.node.v1.Extension + (*PersistedQuery)(nil), // 78: wg.cosmo.node.v1.PersistedQuery + (*ClientInfo)(nil), // 79: wg.cosmo.node.v1.ClientInfo + nil, // 80: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry + nil, // 81: wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry + nil, // 82: wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry + nil, // 83: wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry + nil, // 84: wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry + nil, // 85: wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry + nil, // 86: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry + (common.EnumStatusCode)(0), // 87: wg.cosmo.common.EnumStatusCode + (common.GraphQLSubscriptionProtocol)(0), // 88: wg.cosmo.common.GraphQLSubscriptionProtocol + (common.GraphQLWebsocketSubprotocol)(0), // 89: wg.cosmo.common.GraphQLWebsocketSubprotocol } var file_wg_cosmo_node_v1_node_proto_depIdxs = []int32{ - 79, // 0: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.config_by_feature_flag_name:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry + 80, // 0: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.config_by_feature_flag_name:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry 18, // 1: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig.engine_config:type_name -> wg.cosmo.node.v1.EngineConfiguration 8, // 2: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig.subgraphs:type_name -> wg.cosmo.node.v1.Subgraph 18, // 3: wg.cosmo.node.v1.RouterConfig.engine_config:type_name -> wg.cosmo.node.v1.EngineConfiguration 8, // 4: wg.cosmo.node.v1.RouterConfig.subgraphs:type_name -> wg.cosmo.node.v1.Subgraph 9, // 5: wg.cosmo.node.v1.RouterConfig.feature_flag_configs:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs - 86, // 6: wg.cosmo.node.v1.Response.code:type_name -> wg.cosmo.common.EnumStatusCode + 87, // 6: wg.cosmo.node.v1.Response.code:type_name -> wg.cosmo.common.EnumStatusCode 15, // 7: wg.cosmo.node.v1.RegistrationInfo.account_limits:type_name -> wg.cosmo.node.v1.AccountLimits 12, // 8: wg.cosmo.node.v1.SelfRegisterResponse.response:type_name -> wg.cosmo.node.v1.Response 14, // 9: wg.cosmo.node.v1.SelfRegisterResponse.registrationInfo:type_name -> wg.cosmo.node.v1.RegistrationInfo 19, // 10: wg.cosmo.node.v1.EngineConfiguration.datasource_configurations:type_name -> wg.cosmo.node.v1.DataSourceConfiguration - 30, // 11: wg.cosmo.node.v1.EngineConfiguration.field_configurations:type_name -> wg.cosmo.node.v1.FieldConfiguration - 31, // 12: wg.cosmo.node.v1.EngineConfiguration.type_configurations:type_name -> wg.cosmo.node.v1.TypeConfiguration - 80, // 13: wg.cosmo.node.v1.EngineConfiguration.string_storage:type_name -> wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry + 31, // 11: wg.cosmo.node.v1.EngineConfiguration.field_configurations:type_name -> wg.cosmo.node.v1.FieldConfiguration + 32, // 12: wg.cosmo.node.v1.EngineConfiguration.type_configurations:type_name -> wg.cosmo.node.v1.TypeConfiguration + 81, // 13: wg.cosmo.node.v1.EngineConfiguration.string_storage:type_name -> wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry 2, // 14: wg.cosmo.node.v1.DataSourceConfiguration.kind:type_name -> wg.cosmo.node.v1.DataSourceKind - 32, // 15: wg.cosmo.node.v1.DataSourceConfiguration.root_nodes:type_name -> wg.cosmo.node.v1.TypeField - 32, // 16: wg.cosmo.node.v1.DataSourceConfiguration.child_nodes:type_name -> wg.cosmo.node.v1.TypeField - 39, // 17: wg.cosmo.node.v1.DataSourceConfiguration.custom_graphql:type_name -> wg.cosmo.node.v1.DataSourceCustom_GraphQL - 61, // 18: wg.cosmo.node.v1.DataSourceConfiguration.custom_static:type_name -> wg.cosmo.node.v1.DataSourceCustom_Static - 63, // 19: wg.cosmo.node.v1.DataSourceConfiguration.directives:type_name -> wg.cosmo.node.v1.DirectiveConfiguration - 35, // 20: wg.cosmo.node.v1.DataSourceConfiguration.keys:type_name -> wg.cosmo.node.v1.RequiredField - 35, // 21: wg.cosmo.node.v1.DataSourceConfiguration.provides:type_name -> wg.cosmo.node.v1.RequiredField - 35, // 22: wg.cosmo.node.v1.DataSourceConfiguration.requires:type_name -> wg.cosmo.node.v1.RequiredField - 60, // 23: wg.cosmo.node.v1.DataSourceConfiguration.custom_events:type_name -> wg.cosmo.node.v1.DataSourceCustomEvents - 36, // 24: wg.cosmo.node.v1.DataSourceConfiguration.entity_interfaces:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration - 36, // 25: wg.cosmo.node.v1.DataSourceConfiguration.interface_objects:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration - 24, // 26: wg.cosmo.node.v1.DataSourceConfiguration.cost_configuration:type_name -> wg.cosmo.node.v1.CostConfiguration + 33, // 15: wg.cosmo.node.v1.DataSourceConfiguration.root_nodes:type_name -> wg.cosmo.node.v1.TypeField + 33, // 16: wg.cosmo.node.v1.DataSourceConfiguration.child_nodes:type_name -> wg.cosmo.node.v1.TypeField + 40, // 17: wg.cosmo.node.v1.DataSourceConfiguration.custom_graphql:type_name -> wg.cosmo.node.v1.DataSourceCustom_GraphQL + 62, // 18: wg.cosmo.node.v1.DataSourceConfiguration.custom_static:type_name -> wg.cosmo.node.v1.DataSourceCustom_Static + 64, // 19: wg.cosmo.node.v1.DataSourceConfiguration.directives:type_name -> wg.cosmo.node.v1.DirectiveConfiguration + 36, // 20: wg.cosmo.node.v1.DataSourceConfiguration.keys:type_name -> wg.cosmo.node.v1.RequiredField + 36, // 21: wg.cosmo.node.v1.DataSourceConfiguration.provides:type_name -> wg.cosmo.node.v1.RequiredField + 36, // 22: wg.cosmo.node.v1.DataSourceConfiguration.requires:type_name -> wg.cosmo.node.v1.RequiredField + 61, // 23: wg.cosmo.node.v1.DataSourceConfiguration.custom_events:type_name -> wg.cosmo.node.v1.DataSourceCustomEvents + 37, // 24: wg.cosmo.node.v1.DataSourceConfiguration.entity_interfaces:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration + 37, // 25: wg.cosmo.node.v1.DataSourceConfiguration.interface_objects:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration + 25, // 26: wg.cosmo.node.v1.DataSourceConfiguration.cost_configuration:type_name -> wg.cosmo.node.v1.CostConfiguration 20, // 27: wg.cosmo.node.v1.DataSourceConfiguration.entity_caching:type_name -> wg.cosmo.node.v1.EntityCaching 21, // 28: wg.cosmo.node.v1.EntityCaching.entity_cache_configurations:type_name -> wg.cosmo.node.v1.EntityCacheConfiguration 22, // 29: wg.cosmo.node.v1.EntityCaching.cache_invalidate_configurations:type_name -> wg.cosmo.node.v1.CacheInvalidateConfiguration 23, // 30: wg.cosmo.node.v1.EntityCaching.cache_populate_configurations:type_name -> wg.cosmo.node.v1.CachePopulateConfiguration - 25, // 31: wg.cosmo.node.v1.CostConfiguration.field_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration - 26, // 32: wg.cosmo.node.v1.CostConfiguration.list_sizes:type_name -> wg.cosmo.node.v1.FieldListSizeConfiguration - 81, // 33: wg.cosmo.node.v1.CostConfiguration.type_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry - 82, // 34: wg.cosmo.node.v1.CostConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry - 83, // 35: wg.cosmo.node.v1.FieldWeightConfiguration.argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry - 84, // 36: wg.cosmo.node.v1.FieldWeightConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry - 1, // 37: wg.cosmo.node.v1.ArgumentConfiguration.source_type:type_name -> wg.cosmo.node.v1.ArgumentSource - 28, // 38: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes:type_name -> wg.cosmo.node.v1.Scopes - 28, // 39: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes_by_or:type_name -> wg.cosmo.node.v1.Scopes - 27, // 40: wg.cosmo.node.v1.FieldConfiguration.arguments_configuration:type_name -> wg.cosmo.node.v1.ArgumentConfiguration - 29, // 41: wg.cosmo.node.v1.FieldConfiguration.authorization_configuration:type_name -> wg.cosmo.node.v1.AuthorizationConfiguration - 72, // 42: wg.cosmo.node.v1.FieldConfiguration.subscription_filter_condition:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 33, // 43: wg.cosmo.node.v1.FieldSetCondition.field_coordinates_path:type_name -> wg.cosmo.node.v1.FieldCoordinates - 34, // 44: wg.cosmo.node.v1.RequiredField.conditions:type_name -> wg.cosmo.node.v1.FieldSetCondition - 62, // 45: wg.cosmo.node.v1.FetchConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 7, // 46: wg.cosmo.node.v1.FetchConfiguration.method:type_name -> wg.cosmo.node.v1.HTTPMethod - 85, // 47: wg.cosmo.node.v1.FetchConfiguration.header:type_name -> wg.cosmo.node.v1.FetchConfiguration.HeaderEntry - 62, // 48: wg.cosmo.node.v1.FetchConfiguration.body:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 64, // 49: wg.cosmo.node.v1.FetchConfiguration.query:type_name -> wg.cosmo.node.v1.URLQueryConfiguration - 66, // 50: wg.cosmo.node.v1.FetchConfiguration.mtls:type_name -> wg.cosmo.node.v1.MTLSConfiguration - 62, // 51: wg.cosmo.node.v1.FetchConfiguration.base_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 62, // 52: wg.cosmo.node.v1.FetchConfiguration.path:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 62, // 53: wg.cosmo.node.v1.FetchConfiguration.http_proxy_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 37, // 54: wg.cosmo.node.v1.DataSourceCustom_GraphQL.fetch:type_name -> wg.cosmo.node.v1.FetchConfiguration - 67, // 55: wg.cosmo.node.v1.DataSourceCustom_GraphQL.subscription:type_name -> wg.cosmo.node.v1.GraphQLSubscriptionConfiguration - 68, // 56: wg.cosmo.node.v1.DataSourceCustom_GraphQL.federation:type_name -> wg.cosmo.node.v1.GraphQLFederationConfiguration - 69, // 57: wg.cosmo.node.v1.DataSourceCustom_GraphQL.upstream_schema:type_name -> wg.cosmo.node.v1.InternedString - 70, // 58: wg.cosmo.node.v1.DataSourceCustom_GraphQL.custom_scalar_type_fields:type_name -> wg.cosmo.node.v1.SingleTypeField - 40, // 59: wg.cosmo.node.v1.DataSourceCustom_GraphQL.grpc:type_name -> wg.cosmo.node.v1.GRPCConfiguration - 44, // 60: wg.cosmo.node.v1.GRPCConfiguration.mapping:type_name -> wg.cosmo.node.v1.GRPCMapping - 42, // 61: wg.cosmo.node.v1.GRPCConfiguration.plugin:type_name -> wg.cosmo.node.v1.PluginConfiguration - 41, // 62: wg.cosmo.node.v1.PluginConfiguration.image_reference:type_name -> wg.cosmo.node.v1.ImageReference - 47, // 63: wg.cosmo.node.v1.GRPCMapping.operation_mappings:type_name -> wg.cosmo.node.v1.OperationMapping - 48, // 64: wg.cosmo.node.v1.GRPCMapping.entity_mappings:type_name -> wg.cosmo.node.v1.EntityMapping - 50, // 65: wg.cosmo.node.v1.GRPCMapping.type_field_mappings:type_name -> wg.cosmo.node.v1.TypeFieldMapping - 53, // 66: wg.cosmo.node.v1.GRPCMapping.enum_mappings:type_name -> wg.cosmo.node.v1.EnumMapping - 45, // 67: wg.cosmo.node.v1.GRPCMapping.resolve_mappings:type_name -> wg.cosmo.node.v1.LookupMapping - 3, // 68: wg.cosmo.node.v1.LookupMapping.type:type_name -> wg.cosmo.node.v1.LookupType - 46, // 69: wg.cosmo.node.v1.LookupMapping.lookup_mapping:type_name -> wg.cosmo.node.v1.LookupFieldMapping - 51, // 70: wg.cosmo.node.v1.LookupFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping - 4, // 71: wg.cosmo.node.v1.OperationMapping.type:type_name -> wg.cosmo.node.v1.OperationType - 49, // 72: wg.cosmo.node.v1.EntityMapping.required_field_mappings:type_name -> wg.cosmo.node.v1.RequiredFieldMapping - 51, // 73: wg.cosmo.node.v1.RequiredFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping - 51, // 74: wg.cosmo.node.v1.TypeFieldMapping.field_mappings:type_name -> wg.cosmo.node.v1.FieldMapping - 52, // 75: wg.cosmo.node.v1.FieldMapping.argument_mappings:type_name -> wg.cosmo.node.v1.ArgumentMapping - 54, // 76: wg.cosmo.node.v1.EnumMapping.values:type_name -> wg.cosmo.node.v1.EnumValueMapping - 59, // 77: wg.cosmo.node.v1.NatsEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 55, // 78: wg.cosmo.node.v1.NatsEventConfiguration.stream_configuration:type_name -> wg.cosmo.node.v1.NatsStreamConfiguration - 59, // 79: wg.cosmo.node.v1.KafkaEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 59, // 80: wg.cosmo.node.v1.RedisEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 5, // 81: wg.cosmo.node.v1.EngineEventConfiguration.type:type_name -> wg.cosmo.node.v1.EventType - 56, // 82: wg.cosmo.node.v1.DataSourceCustomEvents.nats:type_name -> wg.cosmo.node.v1.NatsEventConfiguration - 57, // 83: wg.cosmo.node.v1.DataSourceCustomEvents.kafka:type_name -> wg.cosmo.node.v1.KafkaEventConfiguration - 58, // 84: wg.cosmo.node.v1.DataSourceCustomEvents.redis:type_name -> wg.cosmo.node.v1.RedisEventConfiguration - 62, // 85: wg.cosmo.node.v1.DataSourceCustom_Static.data:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 6, // 86: wg.cosmo.node.v1.ConfigurationVariable.kind:type_name -> wg.cosmo.node.v1.ConfigurationVariableKind - 62, // 87: wg.cosmo.node.v1.HTTPHeader.values:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 62, // 88: wg.cosmo.node.v1.MTLSConfiguration.key:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 62, // 89: wg.cosmo.node.v1.MTLSConfiguration.cert:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 62, // 90: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 87, // 91: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol - 88, // 92: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.websocketSubprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol - 72, // 93: wg.cosmo.node.v1.SubscriptionFilterCondition.and:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 71, // 94: wg.cosmo.node.v1.SubscriptionFilterCondition.in:type_name -> wg.cosmo.node.v1.SubscriptionFieldCondition - 72, // 95: wg.cosmo.node.v1.SubscriptionFilterCondition.not:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 72, // 96: wg.cosmo.node.v1.SubscriptionFilterCondition.or:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 74, // 97: wg.cosmo.node.v1.CacheWarmerOperations.operations:type_name -> wg.cosmo.node.v1.Operation - 75, // 98: wg.cosmo.node.v1.Operation.request:type_name -> wg.cosmo.node.v1.OperationRequest - 78, // 99: wg.cosmo.node.v1.Operation.client:type_name -> wg.cosmo.node.v1.ClientInfo - 76, // 100: wg.cosmo.node.v1.OperationRequest.extensions:type_name -> wg.cosmo.node.v1.Extension - 77, // 101: wg.cosmo.node.v1.Extension.persisted_query:type_name -> wg.cosmo.node.v1.PersistedQuery - 10, // 102: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry.value:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig - 65, // 103: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry.value:type_name -> wg.cosmo.node.v1.HTTPHeader - 16, // 104: wg.cosmo.node.v1.NodeService.SelfRegister:input_type -> wg.cosmo.node.v1.SelfRegisterRequest - 17, // 105: wg.cosmo.node.v1.NodeService.SelfRegister:output_type -> wg.cosmo.node.v1.SelfRegisterResponse - 105, // [105:106] is the sub-list for method output_type - 104, // [104:105] is the sub-list for method input_type - 104, // [104:104] is the sub-list for extension type_name - 104, // [104:104] is the sub-list for extension extendee - 0, // [0:104] is the sub-list for field type_name + 24, // 31: wg.cosmo.node.v1.EntityCaching.request_scoped_fields:type_name -> wg.cosmo.node.v1.RequestScopedFieldConfiguration + 26, // 32: wg.cosmo.node.v1.CostConfiguration.field_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration + 27, // 33: wg.cosmo.node.v1.CostConfiguration.list_sizes:type_name -> wg.cosmo.node.v1.FieldListSizeConfiguration + 82, // 34: wg.cosmo.node.v1.CostConfiguration.type_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry + 83, // 35: wg.cosmo.node.v1.CostConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry + 84, // 36: wg.cosmo.node.v1.FieldWeightConfiguration.argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry + 85, // 37: wg.cosmo.node.v1.FieldWeightConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry + 1, // 38: wg.cosmo.node.v1.ArgumentConfiguration.source_type:type_name -> wg.cosmo.node.v1.ArgumentSource + 29, // 39: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes:type_name -> wg.cosmo.node.v1.Scopes + 29, // 40: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes_by_or:type_name -> wg.cosmo.node.v1.Scopes + 28, // 41: wg.cosmo.node.v1.FieldConfiguration.arguments_configuration:type_name -> wg.cosmo.node.v1.ArgumentConfiguration + 30, // 42: wg.cosmo.node.v1.FieldConfiguration.authorization_configuration:type_name -> wg.cosmo.node.v1.AuthorizationConfiguration + 73, // 43: wg.cosmo.node.v1.FieldConfiguration.subscription_filter_condition:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 34, // 44: wg.cosmo.node.v1.FieldSetCondition.field_coordinates_path:type_name -> wg.cosmo.node.v1.FieldCoordinates + 35, // 45: wg.cosmo.node.v1.RequiredField.conditions:type_name -> wg.cosmo.node.v1.FieldSetCondition + 63, // 46: wg.cosmo.node.v1.FetchConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 7, // 47: wg.cosmo.node.v1.FetchConfiguration.method:type_name -> wg.cosmo.node.v1.HTTPMethod + 86, // 48: wg.cosmo.node.v1.FetchConfiguration.header:type_name -> wg.cosmo.node.v1.FetchConfiguration.HeaderEntry + 63, // 49: wg.cosmo.node.v1.FetchConfiguration.body:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 65, // 50: wg.cosmo.node.v1.FetchConfiguration.query:type_name -> wg.cosmo.node.v1.URLQueryConfiguration + 67, // 51: wg.cosmo.node.v1.FetchConfiguration.mtls:type_name -> wg.cosmo.node.v1.MTLSConfiguration + 63, // 52: wg.cosmo.node.v1.FetchConfiguration.base_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 63, // 53: wg.cosmo.node.v1.FetchConfiguration.path:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 63, // 54: wg.cosmo.node.v1.FetchConfiguration.http_proxy_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 38, // 55: wg.cosmo.node.v1.DataSourceCustom_GraphQL.fetch:type_name -> wg.cosmo.node.v1.FetchConfiguration + 68, // 56: wg.cosmo.node.v1.DataSourceCustom_GraphQL.subscription:type_name -> wg.cosmo.node.v1.GraphQLSubscriptionConfiguration + 69, // 57: wg.cosmo.node.v1.DataSourceCustom_GraphQL.federation:type_name -> wg.cosmo.node.v1.GraphQLFederationConfiguration + 70, // 58: wg.cosmo.node.v1.DataSourceCustom_GraphQL.upstream_schema:type_name -> wg.cosmo.node.v1.InternedString + 71, // 59: wg.cosmo.node.v1.DataSourceCustom_GraphQL.custom_scalar_type_fields:type_name -> wg.cosmo.node.v1.SingleTypeField + 41, // 60: wg.cosmo.node.v1.DataSourceCustom_GraphQL.grpc:type_name -> wg.cosmo.node.v1.GRPCConfiguration + 45, // 61: wg.cosmo.node.v1.GRPCConfiguration.mapping:type_name -> wg.cosmo.node.v1.GRPCMapping + 43, // 62: wg.cosmo.node.v1.GRPCConfiguration.plugin:type_name -> wg.cosmo.node.v1.PluginConfiguration + 42, // 63: wg.cosmo.node.v1.PluginConfiguration.image_reference:type_name -> wg.cosmo.node.v1.ImageReference + 48, // 64: wg.cosmo.node.v1.GRPCMapping.operation_mappings:type_name -> wg.cosmo.node.v1.OperationMapping + 49, // 65: wg.cosmo.node.v1.GRPCMapping.entity_mappings:type_name -> wg.cosmo.node.v1.EntityMapping + 51, // 66: wg.cosmo.node.v1.GRPCMapping.type_field_mappings:type_name -> wg.cosmo.node.v1.TypeFieldMapping + 54, // 67: wg.cosmo.node.v1.GRPCMapping.enum_mappings:type_name -> wg.cosmo.node.v1.EnumMapping + 46, // 68: wg.cosmo.node.v1.GRPCMapping.resolve_mappings:type_name -> wg.cosmo.node.v1.LookupMapping + 3, // 69: wg.cosmo.node.v1.LookupMapping.type:type_name -> wg.cosmo.node.v1.LookupType + 47, // 70: wg.cosmo.node.v1.LookupMapping.lookup_mapping:type_name -> wg.cosmo.node.v1.LookupFieldMapping + 52, // 71: wg.cosmo.node.v1.LookupFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping + 4, // 72: wg.cosmo.node.v1.OperationMapping.type:type_name -> wg.cosmo.node.v1.OperationType + 50, // 73: wg.cosmo.node.v1.EntityMapping.required_field_mappings:type_name -> wg.cosmo.node.v1.RequiredFieldMapping + 52, // 74: wg.cosmo.node.v1.RequiredFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping + 52, // 75: wg.cosmo.node.v1.TypeFieldMapping.field_mappings:type_name -> wg.cosmo.node.v1.FieldMapping + 53, // 76: wg.cosmo.node.v1.FieldMapping.argument_mappings:type_name -> wg.cosmo.node.v1.ArgumentMapping + 55, // 77: wg.cosmo.node.v1.EnumMapping.values:type_name -> wg.cosmo.node.v1.EnumValueMapping + 60, // 78: wg.cosmo.node.v1.NatsEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 56, // 79: wg.cosmo.node.v1.NatsEventConfiguration.stream_configuration:type_name -> wg.cosmo.node.v1.NatsStreamConfiguration + 60, // 80: wg.cosmo.node.v1.KafkaEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 60, // 81: wg.cosmo.node.v1.RedisEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 5, // 82: wg.cosmo.node.v1.EngineEventConfiguration.type:type_name -> wg.cosmo.node.v1.EventType + 57, // 83: wg.cosmo.node.v1.DataSourceCustomEvents.nats:type_name -> wg.cosmo.node.v1.NatsEventConfiguration + 58, // 84: wg.cosmo.node.v1.DataSourceCustomEvents.kafka:type_name -> wg.cosmo.node.v1.KafkaEventConfiguration + 59, // 85: wg.cosmo.node.v1.DataSourceCustomEvents.redis:type_name -> wg.cosmo.node.v1.RedisEventConfiguration + 63, // 86: wg.cosmo.node.v1.DataSourceCustom_Static.data:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 6, // 87: wg.cosmo.node.v1.ConfigurationVariable.kind:type_name -> wg.cosmo.node.v1.ConfigurationVariableKind + 63, // 88: wg.cosmo.node.v1.HTTPHeader.values:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 63, // 89: wg.cosmo.node.v1.MTLSConfiguration.key:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 63, // 90: wg.cosmo.node.v1.MTLSConfiguration.cert:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 63, // 91: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 88, // 92: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol + 89, // 93: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.websocketSubprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol + 73, // 94: wg.cosmo.node.v1.SubscriptionFilterCondition.and:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 72, // 95: wg.cosmo.node.v1.SubscriptionFilterCondition.in:type_name -> wg.cosmo.node.v1.SubscriptionFieldCondition + 73, // 96: wg.cosmo.node.v1.SubscriptionFilterCondition.not:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 73, // 97: wg.cosmo.node.v1.SubscriptionFilterCondition.or:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 75, // 98: wg.cosmo.node.v1.CacheWarmerOperations.operations:type_name -> wg.cosmo.node.v1.Operation + 76, // 99: wg.cosmo.node.v1.Operation.request:type_name -> wg.cosmo.node.v1.OperationRequest + 79, // 100: wg.cosmo.node.v1.Operation.client:type_name -> wg.cosmo.node.v1.ClientInfo + 77, // 101: wg.cosmo.node.v1.OperationRequest.extensions:type_name -> wg.cosmo.node.v1.Extension + 78, // 102: wg.cosmo.node.v1.Extension.persisted_query:type_name -> wg.cosmo.node.v1.PersistedQuery + 10, // 103: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry.value:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig + 66, // 104: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry.value:type_name -> wg.cosmo.node.v1.HTTPHeader + 16, // 105: wg.cosmo.node.v1.NodeService.SelfRegister:input_type -> wg.cosmo.node.v1.SelfRegisterRequest + 17, // 106: wg.cosmo.node.v1.NodeService.SelfRegister:output_type -> wg.cosmo.node.v1.SelfRegisterResponse + 106, // [106:107] is the sub-list for method output_type + 105, // [105:106] is the sub-list for method input_type + 105, // [105:105] is the sub-list for extension type_name + 105, // [105:105] is the sub-list for extension extendee + 0, // [0:105] is the sub-list for field type_name } func init() { file_wg_cosmo_node_v1_node_proto_init() } @@ -5570,20 +5651,20 @@ func file_wg_cosmo_node_v1_node_proto_init() { file_wg_cosmo_node_v1_node_proto_msgTypes[9].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[10].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[15].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[17].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[18].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[22].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[29].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[34].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[59].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[64].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[19].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[23].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[30].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[35].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[60].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[65].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_wg_cosmo_node_v1_node_proto_rawDesc), len(file_wg_cosmo_node_v1_node_proto_rawDesc)), NumEnums: 8, - NumMessages: 78, + NumMessages: 79, NumExtensions: 0, NumServices: 1, }, diff --git a/connect/src/wg/cosmo/node/v1/node_pb.ts b/connect/src/wg/cosmo/node/v1/node_pb.ts index bda65b0e93..8efe17a4d5 100644 --- a/connect/src/wg/cosmo/node/v1/node_pb.ts +++ b/connect/src/wg/cosmo/node/v1/node_pb.ts @@ -921,6 +921,13 @@ export class EntityCaching extends Message { */ cachePopulateConfigurations: CachePopulateConfiguration[] = []; + /** + * Request-scoped field configurations (from @openfed__requestScoped directive) + * + * @generated from field: repeated wg.cosmo.node.v1.RequestScopedFieldConfiguration request_scoped_fields = 4; + */ + requestScopedFields: RequestScopedFieldConfiguration[] = []; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -932,6 +939,7 @@ export class EntityCaching extends Message { { no: 1, name: "entity_cache_configurations", kind: "message", T: EntityCacheConfiguration, repeated: true }, { no: 2, name: "cache_invalidate_configurations", kind: "message", T: CacheInvalidateConfiguration, repeated: true }, { no: 3, name: "cache_populate_configurations", kind: "message", T: CachePopulateConfiguration, repeated: true }, + { no: 4, name: "request_scoped_fields", kind: "message", T: RequestScopedFieldConfiguration, repeated: true }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): EntityCaching { @@ -1142,6 +1150,60 @@ export class CachePopulateConfiguration extends Message { + /** + * @generated from field: string field_name = 1; + */ + fieldName = ""; + + /** + * @generated from field: string type_name = 2; + */ + typeName = ""; + + /** + * @generated from field: string l1_key = 3; + */ + l1Key = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.node.v1.RequestScopedFieldConfiguration"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "field_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "type_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "l1_key", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): RequestScopedFieldConfiguration { + return new RequestScopedFieldConfiguration().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): RequestScopedFieldConfiguration { + return new RequestScopedFieldConfiguration().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): RequestScopedFieldConfiguration { + return new RequestScopedFieldConfiguration().fromJsonString(jsonString, options); + } + + static equals(a: RequestScopedFieldConfiguration | PlainMessage | undefined, b: RequestScopedFieldConfiguration | PlainMessage | undefined): boolean { + return proto3.util.equals(RequestScopedFieldConfiguration, a, b); + } +} + /** * @generated from message wg.cosmo.node.v1.CostConfiguration */ diff --git a/proto/wg/cosmo/node/v1/node.proto b/proto/wg/cosmo/node/v1/node.proto index c31aa9c285..096af65a92 100644 --- a/proto/wg/cosmo/node/v1/node.proto +++ b/proto/wg/cosmo/node/v1/node.proto @@ -103,6 +103,8 @@ message EntityCaching { repeated CacheInvalidateConfiguration cache_invalidate_configurations = 2; // Per-Mutation/Subscription-field cache population configs (from @openfed__cachePopulate) repeated CachePopulateConfiguration cache_populate_configurations = 3; + // Request-scoped field configurations (from @openfed__requestScoped directive) + repeated RequestScopedFieldConfiguration request_scoped_fields = 4; } // Per-entity declaration for @openfed__entityCache. Marks a @key entity type as cacheable so the @@ -141,6 +143,16 @@ message CachePopulateConfiguration { string entity_type_name = 4; } +// Per-field declaration for @openfed__requestScoped. All fields in the same subgraph declaring +// @openfed__requestScoped(key: "X") share L1 key "{subgraphName}.X". The first field to resolve +// populates L1; subsequent fields with the same key inject from L1 and can skip their +// fetch when all required sub-fields are present. +message RequestScopedFieldConfiguration { + string field_name = 1; + string type_name = 2; + string l1_key = 3; +} + message CostConfiguration { repeated FieldWeightConfiguration field_weights = 1; repeated FieldListSizeConfiguration list_sizes = 2; diff --git a/router/gen/proto/wg/cosmo/node/v1/node.pb.go b/router/gen/proto/wg/cosmo/node/v1/node.pb.go index b704a2a686..bb13617a72 100644 --- a/router/gen/proto/wg/cosmo/node/v1/node.pb.go +++ b/router/gen/proto/wg/cosmo/node/v1/node.pb.go @@ -1234,8 +1234,10 @@ type EntityCaching struct { CacheInvalidateConfigurations []*CacheInvalidateConfiguration `protobuf:"bytes,2,rep,name=cache_invalidate_configurations,json=cacheInvalidateConfigurations,proto3" json:"cache_invalidate_configurations,omitempty"` // Per-Mutation/Subscription-field cache population configs (from @openfed__cachePopulate) CachePopulateConfigurations []*CachePopulateConfiguration `protobuf:"bytes,3,rep,name=cache_populate_configurations,json=cachePopulateConfigurations,proto3" json:"cache_populate_configurations,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // Request-scoped field configurations (from @openfed__requestScoped directive) + RequestScopedFields []*RequestScopedFieldConfiguration `protobuf:"bytes,4,rep,name=request_scoped_fields,json=requestScopedFields,proto3" json:"request_scoped_fields,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *EntityCaching) Reset() { @@ -1289,6 +1291,13 @@ func (x *EntityCaching) GetCachePopulateConfigurations() []*CachePopulateConfigu return nil } +func (x *EntityCaching) GetRequestScopedFields() []*RequestScopedFieldConfiguration { + if x != nil { + return x.RequestScopedFields + } + return nil +} + // Per-entity declaration for @openfed__entityCache. Marks a @key entity type as cacheable so the // router can store/serve resolved entities from an external store (e.g. Redis). type EntityCacheConfiguration struct { @@ -1515,6 +1524,70 @@ func (x *CachePopulateConfiguration) GetEntityTypeName() string { return "" } +// Per-field declaration for @openfed__requestScoped. All fields in the same subgraph declaring +// @openfed__requestScoped(key: "X") share L1 key "{subgraphName}.X". The first field to resolve +// populates L1; subsequent fields with the same key inject from L1 and can skip their +// fetch when all required sub-fields are present. +type RequestScopedFieldConfiguration struct { + state protoimpl.MessageState `protogen:"open.v1"` + FieldName string `protobuf:"bytes,1,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` + TypeName string `protobuf:"bytes,2,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` + L1Key string `protobuf:"bytes,3,opt,name=l1_key,json=l1Key,proto3" json:"l1_key,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RequestScopedFieldConfiguration) Reset() { + *x = RequestScopedFieldConfiguration{} + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RequestScopedFieldConfiguration) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RequestScopedFieldConfiguration) ProtoMessage() {} + +func (x *RequestScopedFieldConfiguration) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RequestScopedFieldConfiguration.ProtoReflect.Descriptor instead. +func (*RequestScopedFieldConfiguration) Descriptor() ([]byte, []int) { + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{16} +} + +func (x *RequestScopedFieldConfiguration) GetFieldName() string { + if x != nil { + return x.FieldName + } + return "" +} + +func (x *RequestScopedFieldConfiguration) GetTypeName() string { + if x != nil { + return x.TypeName + } + return "" +} + +func (x *RequestScopedFieldConfiguration) GetL1Key() string { + if x != nil { + return x.L1Key + } + return "" +} + type CostConfiguration struct { state protoimpl.MessageState `protogen:"open.v1"` FieldWeights []*FieldWeightConfiguration `protobuf:"bytes,1,rep,name=field_weights,json=fieldWeights,proto3" json:"field_weights,omitempty"` @@ -1527,7 +1600,7 @@ type CostConfiguration struct { func (x *CostConfiguration) Reset() { *x = CostConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1539,7 +1612,7 @@ func (x *CostConfiguration) String() string { func (*CostConfiguration) ProtoMessage() {} func (x *CostConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1552,7 +1625,7 @@ func (x *CostConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use CostConfiguration.ProtoReflect.Descriptor instead. func (*CostConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{16} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{17} } func (x *CostConfiguration) GetFieldWeights() []*FieldWeightConfiguration { @@ -1596,7 +1669,7 @@ type FieldWeightConfiguration struct { func (x *FieldWeightConfiguration) Reset() { *x = FieldWeightConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1608,7 +1681,7 @@ func (x *FieldWeightConfiguration) String() string { func (*FieldWeightConfiguration) ProtoMessage() {} func (x *FieldWeightConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1621,7 +1694,7 @@ func (x *FieldWeightConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldWeightConfiguration.ProtoReflect.Descriptor instead. func (*FieldWeightConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{17} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{18} } func (x *FieldWeightConfiguration) GetTypeName() string { @@ -1673,7 +1746,7 @@ type FieldListSizeConfiguration struct { func (x *FieldListSizeConfiguration) Reset() { *x = FieldListSizeConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1685,7 +1758,7 @@ func (x *FieldListSizeConfiguration) String() string { func (*FieldListSizeConfiguration) ProtoMessage() {} func (x *FieldListSizeConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1698,7 +1771,7 @@ func (x *FieldListSizeConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldListSizeConfiguration.ProtoReflect.Descriptor instead. func (*FieldListSizeConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{18} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{19} } func (x *FieldListSizeConfiguration) GetTypeName() string { @@ -1753,7 +1826,7 @@ type ArgumentConfiguration struct { func (x *ArgumentConfiguration) Reset() { *x = ArgumentConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1765,7 +1838,7 @@ func (x *ArgumentConfiguration) String() string { func (*ArgumentConfiguration) ProtoMessage() {} func (x *ArgumentConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1778,7 +1851,7 @@ func (x *ArgumentConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use ArgumentConfiguration.ProtoReflect.Descriptor instead. func (*ArgumentConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{19} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{20} } func (x *ArgumentConfiguration) GetName() string { @@ -1804,7 +1877,7 @@ type Scopes struct { func (x *Scopes) Reset() { *x = Scopes{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1816,7 +1889,7 @@ func (x *Scopes) String() string { func (*Scopes) ProtoMessage() {} func (x *Scopes) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1829,7 +1902,7 @@ func (x *Scopes) ProtoReflect() protoreflect.Message { // Deprecated: Use Scopes.ProtoReflect.Descriptor instead. func (*Scopes) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{20} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{21} } func (x *Scopes) GetRequiredAndScopes() []string { @@ -1850,7 +1923,7 @@ type AuthorizationConfiguration struct { func (x *AuthorizationConfiguration) Reset() { *x = AuthorizationConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1862,7 +1935,7 @@ func (x *AuthorizationConfiguration) String() string { func (*AuthorizationConfiguration) ProtoMessage() {} func (x *AuthorizationConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1875,7 +1948,7 @@ func (x *AuthorizationConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use AuthorizationConfiguration.ProtoReflect.Descriptor instead. func (*AuthorizationConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{21} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{22} } func (x *AuthorizationConfiguration) GetRequiresAuthentication() bool { @@ -1912,7 +1985,7 @@ type FieldConfiguration struct { func (x *FieldConfiguration) Reset() { *x = FieldConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1924,7 +1997,7 @@ func (x *FieldConfiguration) String() string { func (*FieldConfiguration) ProtoMessage() {} func (x *FieldConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1937,7 +2010,7 @@ func (x *FieldConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldConfiguration.ProtoReflect.Descriptor instead. func (*FieldConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{22} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{23} } func (x *FieldConfiguration) GetTypeName() string { @@ -1985,7 +2058,7 @@ type TypeConfiguration struct { func (x *TypeConfiguration) Reset() { *x = TypeConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1997,7 +2070,7 @@ func (x *TypeConfiguration) String() string { func (*TypeConfiguration) ProtoMessage() {} func (x *TypeConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2010,7 +2083,7 @@ func (x *TypeConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeConfiguration.ProtoReflect.Descriptor instead. func (*TypeConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{23} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{24} } func (x *TypeConfiguration) GetTypeName() string { @@ -2039,7 +2112,7 @@ type TypeField struct { func (x *TypeField) Reset() { *x = TypeField{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2051,7 +2124,7 @@ func (x *TypeField) String() string { func (*TypeField) ProtoMessage() {} func (x *TypeField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2064,7 +2137,7 @@ func (x *TypeField) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeField.ProtoReflect.Descriptor instead. func (*TypeField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{24} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{25} } func (x *TypeField) GetTypeName() string { @@ -2105,7 +2178,7 @@ type FieldCoordinates struct { func (x *FieldCoordinates) Reset() { *x = FieldCoordinates{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2117,7 +2190,7 @@ func (x *FieldCoordinates) String() string { func (*FieldCoordinates) ProtoMessage() {} func (x *FieldCoordinates) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2130,7 +2203,7 @@ func (x *FieldCoordinates) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldCoordinates.ProtoReflect.Descriptor instead. func (*FieldCoordinates) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{25} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{26} } func (x *FieldCoordinates) GetFieldName() string { @@ -2157,7 +2230,7 @@ type FieldSetCondition struct { func (x *FieldSetCondition) Reset() { *x = FieldSetCondition{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2169,7 +2242,7 @@ func (x *FieldSetCondition) String() string { func (*FieldSetCondition) ProtoMessage() {} func (x *FieldSetCondition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2182,7 +2255,7 @@ func (x *FieldSetCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldSetCondition.ProtoReflect.Descriptor instead. func (*FieldSetCondition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{26} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{27} } func (x *FieldSetCondition) GetFieldCoordinatesPath() []*FieldCoordinates { @@ -2212,7 +2285,7 @@ type RequiredField struct { func (x *RequiredField) Reset() { *x = RequiredField{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2224,7 +2297,7 @@ func (x *RequiredField) String() string { func (*RequiredField) ProtoMessage() {} func (x *RequiredField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2237,7 +2310,7 @@ func (x *RequiredField) ProtoReflect() protoreflect.Message { // Deprecated: Use RequiredField.ProtoReflect.Descriptor instead. func (*RequiredField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{27} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{28} } func (x *RequiredField) GetTypeName() string { @@ -2285,7 +2358,7 @@ type EntityInterfaceConfiguration struct { func (x *EntityInterfaceConfiguration) Reset() { *x = EntityInterfaceConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2297,7 +2370,7 @@ func (x *EntityInterfaceConfiguration) String() string { func (*EntityInterfaceConfiguration) ProtoMessage() {} func (x *EntityInterfaceConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2310,7 +2383,7 @@ func (x *EntityInterfaceConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use EntityInterfaceConfiguration.ProtoReflect.Descriptor instead. func (*EntityInterfaceConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{28} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{29} } func (x *EntityInterfaceConfiguration) GetInterfaceTypeName() string { @@ -2353,7 +2426,7 @@ type FetchConfiguration struct { func (x *FetchConfiguration) Reset() { *x = FetchConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2365,7 +2438,7 @@ func (x *FetchConfiguration) String() string { func (*FetchConfiguration) ProtoMessage() {} func (x *FetchConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2378,7 +2451,7 @@ func (x *FetchConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FetchConfiguration.ProtoReflect.Descriptor instead. func (*FetchConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{29} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{30} } func (x *FetchConfiguration) GetUrl() *ConfigurationVariable { @@ -2462,7 +2535,7 @@ type StatusCodeTypeMapping struct { func (x *StatusCodeTypeMapping) Reset() { *x = StatusCodeTypeMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2474,7 +2547,7 @@ func (x *StatusCodeTypeMapping) String() string { func (*StatusCodeTypeMapping) ProtoMessage() {} func (x *StatusCodeTypeMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2487,7 +2560,7 @@ func (x *StatusCodeTypeMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use StatusCodeTypeMapping.ProtoReflect.Descriptor instead. func (*StatusCodeTypeMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{30} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{31} } func (x *StatusCodeTypeMapping) GetStatusCode() int64 { @@ -2525,7 +2598,7 @@ type DataSourceCustom_GraphQL struct { func (x *DataSourceCustom_GraphQL) Reset() { *x = DataSourceCustom_GraphQL{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2537,7 +2610,7 @@ func (x *DataSourceCustom_GraphQL) String() string { func (*DataSourceCustom_GraphQL) ProtoMessage() {} func (x *DataSourceCustom_GraphQL) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2550,7 +2623,7 @@ func (x *DataSourceCustom_GraphQL) ProtoReflect() protoreflect.Message { // Deprecated: Use DataSourceCustom_GraphQL.ProtoReflect.Descriptor instead. func (*DataSourceCustom_GraphQL) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{31} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{32} } func (x *DataSourceCustom_GraphQL) GetFetch() *FetchConfiguration { @@ -2606,7 +2679,7 @@ type GRPCConfiguration struct { func (x *GRPCConfiguration) Reset() { *x = GRPCConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2618,7 +2691,7 @@ func (x *GRPCConfiguration) String() string { func (*GRPCConfiguration) ProtoMessage() {} func (x *GRPCConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2631,7 +2704,7 @@ func (x *GRPCConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCConfiguration.ProtoReflect.Descriptor instead. func (*GRPCConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{32} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{33} } func (x *GRPCConfiguration) GetMapping() *GRPCMapping { @@ -2665,7 +2738,7 @@ type ImageReference struct { func (x *ImageReference) Reset() { *x = ImageReference{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2677,7 +2750,7 @@ func (x *ImageReference) String() string { func (*ImageReference) ProtoMessage() {} func (x *ImageReference) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2690,7 +2763,7 @@ func (x *ImageReference) ProtoReflect() protoreflect.Message { // Deprecated: Use ImageReference.ProtoReflect.Descriptor instead. func (*ImageReference) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{33} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{34} } func (x *ImageReference) GetRepository() string { @@ -2720,7 +2793,7 @@ type PluginConfiguration struct { func (x *PluginConfiguration) Reset() { *x = PluginConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2732,7 +2805,7 @@ func (x *PluginConfiguration) String() string { func (*PluginConfiguration) ProtoMessage() {} func (x *PluginConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2745,7 +2818,7 @@ func (x *PluginConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use PluginConfiguration.ProtoReflect.Descriptor instead. func (*PluginConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{34} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{35} } func (x *PluginConfiguration) GetName() string { @@ -2779,7 +2852,7 @@ type SSLConfiguration struct { func (x *SSLConfiguration) Reset() { *x = SSLConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2791,7 +2864,7 @@ func (x *SSLConfiguration) String() string { func (*SSLConfiguration) ProtoMessage() {} func (x *SSLConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2804,7 +2877,7 @@ func (x *SSLConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use SSLConfiguration.ProtoReflect.Descriptor instead. func (*SSLConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{35} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{36} } func (x *SSLConfiguration) GetEnabled() bool { @@ -2837,7 +2910,7 @@ type GRPCMapping struct { func (x *GRPCMapping) Reset() { *x = GRPCMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2849,7 +2922,7 @@ func (x *GRPCMapping) String() string { func (*GRPCMapping) ProtoMessage() {} func (x *GRPCMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2862,7 +2935,7 @@ func (x *GRPCMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCMapping.ProtoReflect.Descriptor instead. func (*GRPCMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{36} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{37} } func (x *GRPCMapping) GetVersion() int32 { @@ -2933,7 +3006,7 @@ type LookupMapping struct { func (x *LookupMapping) Reset() { *x = LookupMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2945,7 +3018,7 @@ func (x *LookupMapping) String() string { func (*LookupMapping) ProtoMessage() {} func (x *LookupMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2958,7 +3031,7 @@ func (x *LookupMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use LookupMapping.ProtoReflect.Descriptor instead. func (*LookupMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{37} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{38} } func (x *LookupMapping) GetType() LookupType { @@ -3009,7 +3082,7 @@ type LookupFieldMapping struct { func (x *LookupFieldMapping) Reset() { *x = LookupFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3021,7 +3094,7 @@ func (x *LookupFieldMapping) String() string { func (*LookupFieldMapping) ProtoMessage() {} func (x *LookupFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3034,7 +3107,7 @@ func (x *LookupFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use LookupFieldMapping.ProtoReflect.Descriptor instead. func (*LookupFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{38} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{39} } func (x *LookupFieldMapping) GetType() string { @@ -3070,7 +3143,7 @@ type OperationMapping struct { func (x *OperationMapping) Reset() { *x = OperationMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3082,7 +3155,7 @@ func (x *OperationMapping) String() string { func (*OperationMapping) ProtoMessage() {} func (x *OperationMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3095,7 +3168,7 @@ func (x *OperationMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use OperationMapping.ProtoReflect.Descriptor instead. func (*OperationMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{39} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{40} } func (x *OperationMapping) GetType() OperationType { @@ -3156,7 +3229,7 @@ type EntityMapping struct { func (x *EntityMapping) Reset() { *x = EntityMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3168,7 +3241,7 @@ func (x *EntityMapping) String() string { func (*EntityMapping) ProtoMessage() {} func (x *EntityMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3181,7 +3254,7 @@ func (x *EntityMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EntityMapping.ProtoReflect.Descriptor instead. func (*EntityMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{40} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{41} } func (x *EntityMapping) GetTypeName() string { @@ -3249,7 +3322,7 @@ type RequiredFieldMapping struct { func (x *RequiredFieldMapping) Reset() { *x = RequiredFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3261,7 +3334,7 @@ func (x *RequiredFieldMapping) String() string { func (*RequiredFieldMapping) ProtoMessage() {} func (x *RequiredFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3274,7 +3347,7 @@ func (x *RequiredFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use RequiredFieldMapping.ProtoReflect.Descriptor instead. func (*RequiredFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{41} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{42} } func (x *RequiredFieldMapping) GetFieldMapping() *FieldMapping { @@ -3318,7 +3391,7 @@ type TypeFieldMapping struct { func (x *TypeFieldMapping) Reset() { *x = TypeFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3330,7 +3403,7 @@ func (x *TypeFieldMapping) String() string { func (*TypeFieldMapping) ProtoMessage() {} func (x *TypeFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3343,7 +3416,7 @@ func (x *TypeFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeFieldMapping.ProtoReflect.Descriptor instead. func (*TypeFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{42} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{43} } func (x *TypeFieldMapping) GetType() string { @@ -3375,7 +3448,7 @@ type FieldMapping struct { func (x *FieldMapping) Reset() { *x = FieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3387,7 +3460,7 @@ func (x *FieldMapping) String() string { func (*FieldMapping) ProtoMessage() {} func (x *FieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3400,7 +3473,7 @@ func (x *FieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldMapping.ProtoReflect.Descriptor instead. func (*FieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{43} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{44} } func (x *FieldMapping) GetOriginal() string { @@ -3437,7 +3510,7 @@ type ArgumentMapping struct { func (x *ArgumentMapping) Reset() { *x = ArgumentMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3449,7 +3522,7 @@ func (x *ArgumentMapping) String() string { func (*ArgumentMapping) ProtoMessage() {} func (x *ArgumentMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3462,7 +3535,7 @@ func (x *ArgumentMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use ArgumentMapping.ProtoReflect.Descriptor instead. func (*ArgumentMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{44} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{45} } func (x *ArgumentMapping) GetOriginal() string { @@ -3489,7 +3562,7 @@ type EnumMapping struct { func (x *EnumMapping) Reset() { *x = EnumMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3501,7 +3574,7 @@ func (x *EnumMapping) String() string { func (*EnumMapping) ProtoMessage() {} func (x *EnumMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3514,7 +3587,7 @@ func (x *EnumMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EnumMapping.ProtoReflect.Descriptor instead. func (*EnumMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{45} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{46} } func (x *EnumMapping) GetType() string { @@ -3541,7 +3614,7 @@ type EnumValueMapping struct { func (x *EnumValueMapping) Reset() { *x = EnumValueMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3553,7 +3626,7 @@ func (x *EnumValueMapping) String() string { func (*EnumValueMapping) ProtoMessage() {} func (x *EnumValueMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3566,7 +3639,7 @@ func (x *EnumValueMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EnumValueMapping.ProtoReflect.Descriptor instead. func (*EnumValueMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{46} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{47} } func (x *EnumValueMapping) GetOriginal() string { @@ -3594,7 +3667,7 @@ type NatsStreamConfiguration struct { func (x *NatsStreamConfiguration) Reset() { *x = NatsStreamConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3606,7 +3679,7 @@ func (x *NatsStreamConfiguration) String() string { func (*NatsStreamConfiguration) ProtoMessage() {} func (x *NatsStreamConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3619,7 +3692,7 @@ func (x *NatsStreamConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use NatsStreamConfiguration.ProtoReflect.Descriptor instead. func (*NatsStreamConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{47} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{48} } func (x *NatsStreamConfiguration) GetConsumerName() string { @@ -3654,7 +3727,7 @@ type NatsEventConfiguration struct { func (x *NatsEventConfiguration) Reset() { *x = NatsEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3666,7 +3739,7 @@ func (x *NatsEventConfiguration) String() string { func (*NatsEventConfiguration) ProtoMessage() {} func (x *NatsEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3679,7 +3752,7 @@ func (x *NatsEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use NatsEventConfiguration.ProtoReflect.Descriptor instead. func (*NatsEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{48} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{49} } func (x *NatsEventConfiguration) GetEngineEventConfiguration() *EngineEventConfiguration { @@ -3713,7 +3786,7 @@ type KafkaEventConfiguration struct { func (x *KafkaEventConfiguration) Reset() { *x = KafkaEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3725,7 +3798,7 @@ func (x *KafkaEventConfiguration) String() string { func (*KafkaEventConfiguration) ProtoMessage() {} func (x *KafkaEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3738,7 +3811,7 @@ func (x *KafkaEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use KafkaEventConfiguration.ProtoReflect.Descriptor instead. func (*KafkaEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{49} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{50} } func (x *KafkaEventConfiguration) GetEngineEventConfiguration() *EngineEventConfiguration { @@ -3765,7 +3838,7 @@ type RedisEventConfiguration struct { func (x *RedisEventConfiguration) Reset() { *x = RedisEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3777,7 +3850,7 @@ func (x *RedisEventConfiguration) String() string { func (*RedisEventConfiguration) ProtoMessage() {} func (x *RedisEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3790,7 +3863,7 @@ func (x *RedisEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use RedisEventConfiguration.ProtoReflect.Descriptor instead. func (*RedisEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{50} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{51} } func (x *RedisEventConfiguration) GetEngineEventConfiguration() *EngineEventConfiguration { @@ -3819,7 +3892,7 @@ type EngineEventConfiguration struct { func (x *EngineEventConfiguration) Reset() { *x = EngineEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3831,7 +3904,7 @@ func (x *EngineEventConfiguration) String() string { func (*EngineEventConfiguration) ProtoMessage() {} func (x *EngineEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3844,7 +3917,7 @@ func (x *EngineEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use EngineEventConfiguration.ProtoReflect.Descriptor instead. func (*EngineEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{51} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{52} } func (x *EngineEventConfiguration) GetProviderId() string { @@ -3886,7 +3959,7 @@ type DataSourceCustomEvents struct { func (x *DataSourceCustomEvents) Reset() { *x = DataSourceCustomEvents{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3898,7 +3971,7 @@ func (x *DataSourceCustomEvents) String() string { func (*DataSourceCustomEvents) ProtoMessage() {} func (x *DataSourceCustomEvents) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3911,7 +3984,7 @@ func (x *DataSourceCustomEvents) ProtoReflect() protoreflect.Message { // Deprecated: Use DataSourceCustomEvents.ProtoReflect.Descriptor instead. func (*DataSourceCustomEvents) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{52} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{53} } func (x *DataSourceCustomEvents) GetNats() []*NatsEventConfiguration { @@ -3944,7 +4017,7 @@ type DataSourceCustom_Static struct { func (x *DataSourceCustom_Static) Reset() { *x = DataSourceCustom_Static{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3956,7 +4029,7 @@ func (x *DataSourceCustom_Static) String() string { func (*DataSourceCustom_Static) ProtoMessage() {} func (x *DataSourceCustom_Static) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3969,7 +4042,7 @@ func (x *DataSourceCustom_Static) ProtoReflect() protoreflect.Message { // Deprecated: Use DataSourceCustom_Static.ProtoReflect.Descriptor instead. func (*DataSourceCustom_Static) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{53} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{54} } func (x *DataSourceCustom_Static) GetData() *ConfigurationVariable { @@ -3992,7 +4065,7 @@ type ConfigurationVariable struct { func (x *ConfigurationVariable) Reset() { *x = ConfigurationVariable{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4004,7 +4077,7 @@ func (x *ConfigurationVariable) String() string { func (*ConfigurationVariable) ProtoMessage() {} func (x *ConfigurationVariable) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4017,7 +4090,7 @@ func (x *ConfigurationVariable) ProtoReflect() protoreflect.Message { // Deprecated: Use ConfigurationVariable.ProtoReflect.Descriptor instead. func (*ConfigurationVariable) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{54} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{55} } func (x *ConfigurationVariable) GetKind() ConfigurationVariableKind { @@ -4065,7 +4138,7 @@ type DirectiveConfiguration struct { func (x *DirectiveConfiguration) Reset() { *x = DirectiveConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4077,7 +4150,7 @@ func (x *DirectiveConfiguration) String() string { func (*DirectiveConfiguration) ProtoMessage() {} func (x *DirectiveConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4090,7 +4163,7 @@ func (x *DirectiveConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use DirectiveConfiguration.ProtoReflect.Descriptor instead. func (*DirectiveConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{55} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{56} } func (x *DirectiveConfiguration) GetDirectiveName() string { @@ -4117,7 +4190,7 @@ type URLQueryConfiguration struct { func (x *URLQueryConfiguration) Reset() { *x = URLQueryConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4129,7 +4202,7 @@ func (x *URLQueryConfiguration) String() string { func (*URLQueryConfiguration) ProtoMessage() {} func (x *URLQueryConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4142,7 +4215,7 @@ func (x *URLQueryConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use URLQueryConfiguration.ProtoReflect.Descriptor instead. func (*URLQueryConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{56} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{57} } func (x *URLQueryConfiguration) GetName() string { @@ -4168,7 +4241,7 @@ type HTTPHeader struct { func (x *HTTPHeader) Reset() { *x = HTTPHeader{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4180,7 +4253,7 @@ func (x *HTTPHeader) String() string { func (*HTTPHeader) ProtoMessage() {} func (x *HTTPHeader) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4193,7 +4266,7 @@ func (x *HTTPHeader) ProtoReflect() protoreflect.Message { // Deprecated: Use HTTPHeader.ProtoReflect.Descriptor instead. func (*HTTPHeader) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{57} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{58} } func (x *HTTPHeader) GetValues() []*ConfigurationVariable { @@ -4214,7 +4287,7 @@ type MTLSConfiguration struct { func (x *MTLSConfiguration) Reset() { *x = MTLSConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4226,7 +4299,7 @@ func (x *MTLSConfiguration) String() string { func (*MTLSConfiguration) ProtoMessage() {} func (x *MTLSConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4239,7 +4312,7 @@ func (x *MTLSConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use MTLSConfiguration.ProtoReflect.Descriptor instead. func (*MTLSConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{58} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{59} } func (x *MTLSConfiguration) GetKey() *ConfigurationVariable { @@ -4277,7 +4350,7 @@ type GraphQLSubscriptionConfiguration struct { func (x *GraphQLSubscriptionConfiguration) Reset() { *x = GraphQLSubscriptionConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4289,7 +4362,7 @@ func (x *GraphQLSubscriptionConfiguration) String() string { func (*GraphQLSubscriptionConfiguration) ProtoMessage() {} func (x *GraphQLSubscriptionConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4302,7 +4375,7 @@ func (x *GraphQLSubscriptionConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use GraphQLSubscriptionConfiguration.ProtoReflect.Descriptor instead. func (*GraphQLSubscriptionConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{59} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{60} } func (x *GraphQLSubscriptionConfiguration) GetEnabled() bool { @@ -4350,7 +4423,7 @@ type GraphQLFederationConfiguration struct { func (x *GraphQLFederationConfiguration) Reset() { *x = GraphQLFederationConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4362,7 +4435,7 @@ func (x *GraphQLFederationConfiguration) String() string { func (*GraphQLFederationConfiguration) ProtoMessage() {} func (x *GraphQLFederationConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4375,7 +4448,7 @@ func (x *GraphQLFederationConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use GraphQLFederationConfiguration.ProtoReflect.Descriptor instead. func (*GraphQLFederationConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{60} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{61} } func (x *GraphQLFederationConfiguration) GetEnabled() bool { @@ -4402,7 +4475,7 @@ type InternedString struct { func (x *InternedString) Reset() { *x = InternedString{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4414,7 +4487,7 @@ func (x *InternedString) String() string { func (*InternedString) ProtoMessage() {} func (x *InternedString) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4427,7 +4500,7 @@ func (x *InternedString) ProtoReflect() protoreflect.Message { // Deprecated: Use InternedString.ProtoReflect.Descriptor instead. func (*InternedString) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{61} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{62} } func (x *InternedString) GetKey() string { @@ -4447,7 +4520,7 @@ type SingleTypeField struct { func (x *SingleTypeField) Reset() { *x = SingleTypeField{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4459,7 +4532,7 @@ func (x *SingleTypeField) String() string { func (*SingleTypeField) ProtoMessage() {} func (x *SingleTypeField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4472,7 +4545,7 @@ func (x *SingleTypeField) ProtoReflect() protoreflect.Message { // Deprecated: Use SingleTypeField.ProtoReflect.Descriptor instead. func (*SingleTypeField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{62} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{63} } func (x *SingleTypeField) GetTypeName() string { @@ -4499,7 +4572,7 @@ type SubscriptionFieldCondition struct { func (x *SubscriptionFieldCondition) Reset() { *x = SubscriptionFieldCondition{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4511,7 +4584,7 @@ func (x *SubscriptionFieldCondition) String() string { func (*SubscriptionFieldCondition) ProtoMessage() {} func (x *SubscriptionFieldCondition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4524,7 +4597,7 @@ func (x *SubscriptionFieldCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionFieldCondition.ProtoReflect.Descriptor instead. func (*SubscriptionFieldCondition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{63} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{64} } func (x *SubscriptionFieldCondition) GetFieldPath() []string { @@ -4553,7 +4626,7 @@ type SubscriptionFilterCondition struct { func (x *SubscriptionFilterCondition) Reset() { *x = SubscriptionFilterCondition{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4565,7 +4638,7 @@ func (x *SubscriptionFilterCondition) String() string { func (*SubscriptionFilterCondition) ProtoMessage() {} func (x *SubscriptionFilterCondition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4578,7 +4651,7 @@ func (x *SubscriptionFilterCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionFilterCondition.ProtoReflect.Descriptor instead. func (*SubscriptionFilterCondition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{64} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{65} } func (x *SubscriptionFilterCondition) GetAnd() []*SubscriptionFilterCondition { @@ -4618,7 +4691,7 @@ type CacheWarmerOperations struct { func (x *CacheWarmerOperations) Reset() { *x = CacheWarmerOperations{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4630,7 +4703,7 @@ func (x *CacheWarmerOperations) String() string { func (*CacheWarmerOperations) ProtoMessage() {} func (x *CacheWarmerOperations) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4643,7 +4716,7 @@ func (x *CacheWarmerOperations) ProtoReflect() protoreflect.Message { // Deprecated: Use CacheWarmerOperations.ProtoReflect.Descriptor instead. func (*CacheWarmerOperations) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{65} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{66} } func (x *CacheWarmerOperations) GetOperations() []*Operation { @@ -4663,7 +4736,7 @@ type Operation struct { func (x *Operation) Reset() { *x = Operation{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4675,7 +4748,7 @@ func (x *Operation) String() string { func (*Operation) ProtoMessage() {} func (x *Operation) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4688,7 +4761,7 @@ func (x *Operation) ProtoReflect() protoreflect.Message { // Deprecated: Use Operation.ProtoReflect.Descriptor instead. func (*Operation) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{66} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{67} } func (x *Operation) GetRequest() *OperationRequest { @@ -4716,7 +4789,7 @@ type OperationRequest struct { func (x *OperationRequest) Reset() { *x = OperationRequest{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4728,7 +4801,7 @@ func (x *OperationRequest) String() string { func (*OperationRequest) ProtoMessage() {} func (x *OperationRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4741,7 +4814,7 @@ func (x *OperationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use OperationRequest.ProtoReflect.Descriptor instead. func (*OperationRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{67} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{68} } func (x *OperationRequest) GetOperationName() string { @@ -4774,7 +4847,7 @@ type Extension struct { func (x *Extension) Reset() { *x = Extension{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4786,7 +4859,7 @@ func (x *Extension) String() string { func (*Extension) ProtoMessage() {} func (x *Extension) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[69] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4799,7 +4872,7 @@ func (x *Extension) ProtoReflect() protoreflect.Message { // Deprecated: Use Extension.ProtoReflect.Descriptor instead. func (*Extension) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{68} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{69} } func (x *Extension) GetPersistedQuery() *PersistedQuery { @@ -4819,7 +4892,7 @@ type PersistedQuery struct { func (x *PersistedQuery) Reset() { *x = PersistedQuery{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[69] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4831,7 +4904,7 @@ func (x *PersistedQuery) String() string { func (*PersistedQuery) ProtoMessage() {} func (x *PersistedQuery) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[69] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[70] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4844,7 +4917,7 @@ func (x *PersistedQuery) ProtoReflect() protoreflect.Message { // Deprecated: Use PersistedQuery.ProtoReflect.Descriptor instead. func (*PersistedQuery) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{69} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{70} } func (x *PersistedQuery) GetSha256Hash() string { @@ -4871,7 +4944,7 @@ type ClientInfo struct { func (x *ClientInfo) Reset() { *x = ClientInfo{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[70] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4883,7 +4956,7 @@ func (x *ClientInfo) String() string { func (*ClientInfo) ProtoMessage() {} func (x *ClientInfo) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[70] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[71] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4896,7 +4969,7 @@ func (x *ClientInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ClientInfo.ProtoReflect.Descriptor instead. func (*ClientInfo) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{70} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{71} } func (x *ClientInfo) GetName() string { @@ -4991,11 +5064,12 @@ const file_wg_cosmo_node_v1_node_proto_rawDesc = "" + "\x11entity_interfaces\x18\x0e \x03(\v2..wg.cosmo.node.v1.EntityInterfaceConfigurationR\x10entityInterfaces\x12[\n" + "\x11interface_objects\x18\x0f \x03(\v2..wg.cosmo.node.v1.EntityInterfaceConfigurationR\x10interfaceObjects\x12R\n" + "\x12cost_configuration\x18\x10 \x01(\v2#.wg.cosmo.node.v1.CostConfigurationR\x11costConfiguration\x12F\n" + - "\x0eentity_caching\x18\x11 \x01(\v2\x1f.wg.cosmo.node.v1.EntityCachingR\rentityCaching\"\xe5\x02\n" + + "\x0eentity_caching\x18\x11 \x01(\v2\x1f.wg.cosmo.node.v1.EntityCachingR\rentityCaching\"\xcc\x03\n" + "\rEntityCaching\x12j\n" + "\x1bentity_cache_configurations\x18\x01 \x03(\v2*.wg.cosmo.node.v1.EntityCacheConfigurationR\x19entityCacheConfigurations\x12v\n" + "\x1fcache_invalidate_configurations\x18\x02 \x03(\v2..wg.cosmo.node.v1.CacheInvalidateConfigurationR\x1dcacheInvalidateConfigurations\x12p\n" + - "\x1dcache_populate_configurations\x18\x03 \x03(\v2,.wg.cosmo.node.v1.CachePopulateConfigurationR\x1bcachePopulateConfigurations\"\x95\x02\n" + + "\x1dcache_populate_configurations\x18\x03 \x03(\v2,.wg.cosmo.node.v1.CachePopulateConfigurationR\x1bcachePopulateConfigurations\x12e\n" + + "\x15request_scoped_fields\x18\x04 \x03(\v21.wg.cosmo.node.v1.RequestScopedFieldConfigurationR\x13requestScopedFields\"\x95\x02\n" + "\x18EntityCacheConfiguration\x12\x1b\n" + "\ttype_name\x18\x01 \x01(\tR\btypeName\x12&\n" + "\x0fmax_age_seconds\x18\x02 \x01(\x03R\rmaxAgeSeconds\x12'\n" + @@ -5015,7 +5089,12 @@ const file_wg_cosmo_node_v1_node_proto_rawDesc = "" + "\x0eoperation_type\x18\x02 \x01(\tR\roperationType\x12+\n" + "\x0fmax_age_seconds\x18\x03 \x01(\x03H\x00R\rmaxAgeSeconds\x88\x01\x01\x12(\n" + "\x10entity_type_name\x18\x04 \x01(\tR\x0eentityTypeNameB\x12\n" + - "\x10_max_age_seconds\"\x98\x04\n" + + "\x10_max_age_seconds\"t\n" + + "\x1fRequestScopedFieldConfiguration\x12\x1d\n" + + "\n" + + "field_name\x18\x01 \x01(\tR\tfieldName\x12\x1b\n" + + "\ttype_name\x18\x02 \x01(\tR\btypeName\x12\x15\n" + + "\x06l1_key\x18\x03 \x01(\tR\x05l1Key\"\x98\x04\n" + "\x11CostConfiguration\x12O\n" + "\rfield_weights\x18\x01 \x03(\v2*.wg.cosmo.node.v1.FieldWeightConfigurationR\ffieldWeights\x12K\n" + "\n" + @@ -5354,7 +5433,7 @@ func file_wg_cosmo_node_v1_node_proto_rawDescGZIP() []byte { } var file_wg_cosmo_node_v1_node_proto_enumTypes = make([]protoimpl.EnumInfo, 8) -var file_wg_cosmo_node_v1_node_proto_msgTypes = make([]protoimpl.MessageInfo, 78) +var file_wg_cosmo_node_v1_node_proto_msgTypes = make([]protoimpl.MessageInfo, 79) var file_wg_cosmo_node_v1_node_proto_goTypes = []any{ (ArgumentRenderConfiguration)(0), // 0: wg.cosmo.node.v1.ArgumentRenderConfiguration (ArgumentSource)(0), // 1: wg.cosmo.node.v1.ArgumentSource @@ -5380,184 +5459,186 @@ var file_wg_cosmo_node_v1_node_proto_goTypes = []any{ (*EntityCacheConfiguration)(nil), // 21: wg.cosmo.node.v1.EntityCacheConfiguration (*CacheInvalidateConfiguration)(nil), // 22: wg.cosmo.node.v1.CacheInvalidateConfiguration (*CachePopulateConfiguration)(nil), // 23: wg.cosmo.node.v1.CachePopulateConfiguration - (*CostConfiguration)(nil), // 24: wg.cosmo.node.v1.CostConfiguration - (*FieldWeightConfiguration)(nil), // 25: wg.cosmo.node.v1.FieldWeightConfiguration - (*FieldListSizeConfiguration)(nil), // 26: wg.cosmo.node.v1.FieldListSizeConfiguration - (*ArgumentConfiguration)(nil), // 27: wg.cosmo.node.v1.ArgumentConfiguration - (*Scopes)(nil), // 28: wg.cosmo.node.v1.Scopes - (*AuthorizationConfiguration)(nil), // 29: wg.cosmo.node.v1.AuthorizationConfiguration - (*FieldConfiguration)(nil), // 30: wg.cosmo.node.v1.FieldConfiguration - (*TypeConfiguration)(nil), // 31: wg.cosmo.node.v1.TypeConfiguration - (*TypeField)(nil), // 32: wg.cosmo.node.v1.TypeField - (*FieldCoordinates)(nil), // 33: wg.cosmo.node.v1.FieldCoordinates - (*FieldSetCondition)(nil), // 34: wg.cosmo.node.v1.FieldSetCondition - (*RequiredField)(nil), // 35: wg.cosmo.node.v1.RequiredField - (*EntityInterfaceConfiguration)(nil), // 36: wg.cosmo.node.v1.EntityInterfaceConfiguration - (*FetchConfiguration)(nil), // 37: wg.cosmo.node.v1.FetchConfiguration - (*StatusCodeTypeMapping)(nil), // 38: wg.cosmo.node.v1.StatusCodeTypeMapping - (*DataSourceCustom_GraphQL)(nil), // 39: wg.cosmo.node.v1.DataSourceCustom_GraphQL - (*GRPCConfiguration)(nil), // 40: wg.cosmo.node.v1.GRPCConfiguration - (*ImageReference)(nil), // 41: wg.cosmo.node.v1.ImageReference - (*PluginConfiguration)(nil), // 42: wg.cosmo.node.v1.PluginConfiguration - (*SSLConfiguration)(nil), // 43: wg.cosmo.node.v1.SSLConfiguration - (*GRPCMapping)(nil), // 44: wg.cosmo.node.v1.GRPCMapping - (*LookupMapping)(nil), // 45: wg.cosmo.node.v1.LookupMapping - (*LookupFieldMapping)(nil), // 46: wg.cosmo.node.v1.LookupFieldMapping - (*OperationMapping)(nil), // 47: wg.cosmo.node.v1.OperationMapping - (*EntityMapping)(nil), // 48: wg.cosmo.node.v1.EntityMapping - (*RequiredFieldMapping)(nil), // 49: wg.cosmo.node.v1.RequiredFieldMapping - (*TypeFieldMapping)(nil), // 50: wg.cosmo.node.v1.TypeFieldMapping - (*FieldMapping)(nil), // 51: wg.cosmo.node.v1.FieldMapping - (*ArgumentMapping)(nil), // 52: wg.cosmo.node.v1.ArgumentMapping - (*EnumMapping)(nil), // 53: wg.cosmo.node.v1.EnumMapping - (*EnumValueMapping)(nil), // 54: wg.cosmo.node.v1.EnumValueMapping - (*NatsStreamConfiguration)(nil), // 55: wg.cosmo.node.v1.NatsStreamConfiguration - (*NatsEventConfiguration)(nil), // 56: wg.cosmo.node.v1.NatsEventConfiguration - (*KafkaEventConfiguration)(nil), // 57: wg.cosmo.node.v1.KafkaEventConfiguration - (*RedisEventConfiguration)(nil), // 58: wg.cosmo.node.v1.RedisEventConfiguration - (*EngineEventConfiguration)(nil), // 59: wg.cosmo.node.v1.EngineEventConfiguration - (*DataSourceCustomEvents)(nil), // 60: wg.cosmo.node.v1.DataSourceCustomEvents - (*DataSourceCustom_Static)(nil), // 61: wg.cosmo.node.v1.DataSourceCustom_Static - (*ConfigurationVariable)(nil), // 62: wg.cosmo.node.v1.ConfigurationVariable - (*DirectiveConfiguration)(nil), // 63: wg.cosmo.node.v1.DirectiveConfiguration - (*URLQueryConfiguration)(nil), // 64: wg.cosmo.node.v1.URLQueryConfiguration - (*HTTPHeader)(nil), // 65: wg.cosmo.node.v1.HTTPHeader - (*MTLSConfiguration)(nil), // 66: wg.cosmo.node.v1.MTLSConfiguration - (*GraphQLSubscriptionConfiguration)(nil), // 67: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration - (*GraphQLFederationConfiguration)(nil), // 68: wg.cosmo.node.v1.GraphQLFederationConfiguration - (*InternedString)(nil), // 69: wg.cosmo.node.v1.InternedString - (*SingleTypeField)(nil), // 70: wg.cosmo.node.v1.SingleTypeField - (*SubscriptionFieldCondition)(nil), // 71: wg.cosmo.node.v1.SubscriptionFieldCondition - (*SubscriptionFilterCondition)(nil), // 72: wg.cosmo.node.v1.SubscriptionFilterCondition - (*CacheWarmerOperations)(nil), // 73: wg.cosmo.node.v1.CacheWarmerOperations - (*Operation)(nil), // 74: wg.cosmo.node.v1.Operation - (*OperationRequest)(nil), // 75: wg.cosmo.node.v1.OperationRequest - (*Extension)(nil), // 76: wg.cosmo.node.v1.Extension - (*PersistedQuery)(nil), // 77: wg.cosmo.node.v1.PersistedQuery - (*ClientInfo)(nil), // 78: wg.cosmo.node.v1.ClientInfo - nil, // 79: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry - nil, // 80: wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry - nil, // 81: wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry - nil, // 82: wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry - nil, // 83: wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry - nil, // 84: wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry - nil, // 85: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry - (common.EnumStatusCode)(0), // 86: wg.cosmo.common.EnumStatusCode - (common.GraphQLSubscriptionProtocol)(0), // 87: wg.cosmo.common.GraphQLSubscriptionProtocol - (common.GraphQLWebsocketSubprotocol)(0), // 88: wg.cosmo.common.GraphQLWebsocketSubprotocol + (*RequestScopedFieldConfiguration)(nil), // 24: wg.cosmo.node.v1.RequestScopedFieldConfiguration + (*CostConfiguration)(nil), // 25: wg.cosmo.node.v1.CostConfiguration + (*FieldWeightConfiguration)(nil), // 26: wg.cosmo.node.v1.FieldWeightConfiguration + (*FieldListSizeConfiguration)(nil), // 27: wg.cosmo.node.v1.FieldListSizeConfiguration + (*ArgumentConfiguration)(nil), // 28: wg.cosmo.node.v1.ArgumentConfiguration + (*Scopes)(nil), // 29: wg.cosmo.node.v1.Scopes + (*AuthorizationConfiguration)(nil), // 30: wg.cosmo.node.v1.AuthorizationConfiguration + (*FieldConfiguration)(nil), // 31: wg.cosmo.node.v1.FieldConfiguration + (*TypeConfiguration)(nil), // 32: wg.cosmo.node.v1.TypeConfiguration + (*TypeField)(nil), // 33: wg.cosmo.node.v1.TypeField + (*FieldCoordinates)(nil), // 34: wg.cosmo.node.v1.FieldCoordinates + (*FieldSetCondition)(nil), // 35: wg.cosmo.node.v1.FieldSetCondition + (*RequiredField)(nil), // 36: wg.cosmo.node.v1.RequiredField + (*EntityInterfaceConfiguration)(nil), // 37: wg.cosmo.node.v1.EntityInterfaceConfiguration + (*FetchConfiguration)(nil), // 38: wg.cosmo.node.v1.FetchConfiguration + (*StatusCodeTypeMapping)(nil), // 39: wg.cosmo.node.v1.StatusCodeTypeMapping + (*DataSourceCustom_GraphQL)(nil), // 40: wg.cosmo.node.v1.DataSourceCustom_GraphQL + (*GRPCConfiguration)(nil), // 41: wg.cosmo.node.v1.GRPCConfiguration + (*ImageReference)(nil), // 42: wg.cosmo.node.v1.ImageReference + (*PluginConfiguration)(nil), // 43: wg.cosmo.node.v1.PluginConfiguration + (*SSLConfiguration)(nil), // 44: wg.cosmo.node.v1.SSLConfiguration + (*GRPCMapping)(nil), // 45: wg.cosmo.node.v1.GRPCMapping + (*LookupMapping)(nil), // 46: wg.cosmo.node.v1.LookupMapping + (*LookupFieldMapping)(nil), // 47: wg.cosmo.node.v1.LookupFieldMapping + (*OperationMapping)(nil), // 48: wg.cosmo.node.v1.OperationMapping + (*EntityMapping)(nil), // 49: wg.cosmo.node.v1.EntityMapping + (*RequiredFieldMapping)(nil), // 50: wg.cosmo.node.v1.RequiredFieldMapping + (*TypeFieldMapping)(nil), // 51: wg.cosmo.node.v1.TypeFieldMapping + (*FieldMapping)(nil), // 52: wg.cosmo.node.v1.FieldMapping + (*ArgumentMapping)(nil), // 53: wg.cosmo.node.v1.ArgumentMapping + (*EnumMapping)(nil), // 54: wg.cosmo.node.v1.EnumMapping + (*EnumValueMapping)(nil), // 55: wg.cosmo.node.v1.EnumValueMapping + (*NatsStreamConfiguration)(nil), // 56: wg.cosmo.node.v1.NatsStreamConfiguration + (*NatsEventConfiguration)(nil), // 57: wg.cosmo.node.v1.NatsEventConfiguration + (*KafkaEventConfiguration)(nil), // 58: wg.cosmo.node.v1.KafkaEventConfiguration + (*RedisEventConfiguration)(nil), // 59: wg.cosmo.node.v1.RedisEventConfiguration + (*EngineEventConfiguration)(nil), // 60: wg.cosmo.node.v1.EngineEventConfiguration + (*DataSourceCustomEvents)(nil), // 61: wg.cosmo.node.v1.DataSourceCustomEvents + (*DataSourceCustom_Static)(nil), // 62: wg.cosmo.node.v1.DataSourceCustom_Static + (*ConfigurationVariable)(nil), // 63: wg.cosmo.node.v1.ConfigurationVariable + (*DirectiveConfiguration)(nil), // 64: wg.cosmo.node.v1.DirectiveConfiguration + (*URLQueryConfiguration)(nil), // 65: wg.cosmo.node.v1.URLQueryConfiguration + (*HTTPHeader)(nil), // 66: wg.cosmo.node.v1.HTTPHeader + (*MTLSConfiguration)(nil), // 67: wg.cosmo.node.v1.MTLSConfiguration + (*GraphQLSubscriptionConfiguration)(nil), // 68: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration + (*GraphQLFederationConfiguration)(nil), // 69: wg.cosmo.node.v1.GraphQLFederationConfiguration + (*InternedString)(nil), // 70: wg.cosmo.node.v1.InternedString + (*SingleTypeField)(nil), // 71: wg.cosmo.node.v1.SingleTypeField + (*SubscriptionFieldCondition)(nil), // 72: wg.cosmo.node.v1.SubscriptionFieldCondition + (*SubscriptionFilterCondition)(nil), // 73: wg.cosmo.node.v1.SubscriptionFilterCondition + (*CacheWarmerOperations)(nil), // 74: wg.cosmo.node.v1.CacheWarmerOperations + (*Operation)(nil), // 75: wg.cosmo.node.v1.Operation + (*OperationRequest)(nil), // 76: wg.cosmo.node.v1.OperationRequest + (*Extension)(nil), // 77: wg.cosmo.node.v1.Extension + (*PersistedQuery)(nil), // 78: wg.cosmo.node.v1.PersistedQuery + (*ClientInfo)(nil), // 79: wg.cosmo.node.v1.ClientInfo + nil, // 80: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry + nil, // 81: wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry + nil, // 82: wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry + nil, // 83: wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry + nil, // 84: wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry + nil, // 85: wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry + nil, // 86: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry + (common.EnumStatusCode)(0), // 87: wg.cosmo.common.EnumStatusCode + (common.GraphQLSubscriptionProtocol)(0), // 88: wg.cosmo.common.GraphQLSubscriptionProtocol + (common.GraphQLWebsocketSubprotocol)(0), // 89: wg.cosmo.common.GraphQLWebsocketSubprotocol } var file_wg_cosmo_node_v1_node_proto_depIdxs = []int32{ - 79, // 0: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.config_by_feature_flag_name:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry + 80, // 0: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.config_by_feature_flag_name:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry 18, // 1: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig.engine_config:type_name -> wg.cosmo.node.v1.EngineConfiguration 8, // 2: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig.subgraphs:type_name -> wg.cosmo.node.v1.Subgraph 18, // 3: wg.cosmo.node.v1.RouterConfig.engine_config:type_name -> wg.cosmo.node.v1.EngineConfiguration 8, // 4: wg.cosmo.node.v1.RouterConfig.subgraphs:type_name -> wg.cosmo.node.v1.Subgraph 9, // 5: wg.cosmo.node.v1.RouterConfig.feature_flag_configs:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs - 86, // 6: wg.cosmo.node.v1.Response.code:type_name -> wg.cosmo.common.EnumStatusCode + 87, // 6: wg.cosmo.node.v1.Response.code:type_name -> wg.cosmo.common.EnumStatusCode 15, // 7: wg.cosmo.node.v1.RegistrationInfo.account_limits:type_name -> wg.cosmo.node.v1.AccountLimits 12, // 8: wg.cosmo.node.v1.SelfRegisterResponse.response:type_name -> wg.cosmo.node.v1.Response 14, // 9: wg.cosmo.node.v1.SelfRegisterResponse.registrationInfo:type_name -> wg.cosmo.node.v1.RegistrationInfo 19, // 10: wg.cosmo.node.v1.EngineConfiguration.datasource_configurations:type_name -> wg.cosmo.node.v1.DataSourceConfiguration - 30, // 11: wg.cosmo.node.v1.EngineConfiguration.field_configurations:type_name -> wg.cosmo.node.v1.FieldConfiguration - 31, // 12: wg.cosmo.node.v1.EngineConfiguration.type_configurations:type_name -> wg.cosmo.node.v1.TypeConfiguration - 80, // 13: wg.cosmo.node.v1.EngineConfiguration.string_storage:type_name -> wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry + 31, // 11: wg.cosmo.node.v1.EngineConfiguration.field_configurations:type_name -> wg.cosmo.node.v1.FieldConfiguration + 32, // 12: wg.cosmo.node.v1.EngineConfiguration.type_configurations:type_name -> wg.cosmo.node.v1.TypeConfiguration + 81, // 13: wg.cosmo.node.v1.EngineConfiguration.string_storage:type_name -> wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry 2, // 14: wg.cosmo.node.v1.DataSourceConfiguration.kind:type_name -> wg.cosmo.node.v1.DataSourceKind - 32, // 15: wg.cosmo.node.v1.DataSourceConfiguration.root_nodes:type_name -> wg.cosmo.node.v1.TypeField - 32, // 16: wg.cosmo.node.v1.DataSourceConfiguration.child_nodes:type_name -> wg.cosmo.node.v1.TypeField - 39, // 17: wg.cosmo.node.v1.DataSourceConfiguration.custom_graphql:type_name -> wg.cosmo.node.v1.DataSourceCustom_GraphQL - 61, // 18: wg.cosmo.node.v1.DataSourceConfiguration.custom_static:type_name -> wg.cosmo.node.v1.DataSourceCustom_Static - 63, // 19: wg.cosmo.node.v1.DataSourceConfiguration.directives:type_name -> wg.cosmo.node.v1.DirectiveConfiguration - 35, // 20: wg.cosmo.node.v1.DataSourceConfiguration.keys:type_name -> wg.cosmo.node.v1.RequiredField - 35, // 21: wg.cosmo.node.v1.DataSourceConfiguration.provides:type_name -> wg.cosmo.node.v1.RequiredField - 35, // 22: wg.cosmo.node.v1.DataSourceConfiguration.requires:type_name -> wg.cosmo.node.v1.RequiredField - 60, // 23: wg.cosmo.node.v1.DataSourceConfiguration.custom_events:type_name -> wg.cosmo.node.v1.DataSourceCustomEvents - 36, // 24: wg.cosmo.node.v1.DataSourceConfiguration.entity_interfaces:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration - 36, // 25: wg.cosmo.node.v1.DataSourceConfiguration.interface_objects:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration - 24, // 26: wg.cosmo.node.v1.DataSourceConfiguration.cost_configuration:type_name -> wg.cosmo.node.v1.CostConfiguration + 33, // 15: wg.cosmo.node.v1.DataSourceConfiguration.root_nodes:type_name -> wg.cosmo.node.v1.TypeField + 33, // 16: wg.cosmo.node.v1.DataSourceConfiguration.child_nodes:type_name -> wg.cosmo.node.v1.TypeField + 40, // 17: wg.cosmo.node.v1.DataSourceConfiguration.custom_graphql:type_name -> wg.cosmo.node.v1.DataSourceCustom_GraphQL + 62, // 18: wg.cosmo.node.v1.DataSourceConfiguration.custom_static:type_name -> wg.cosmo.node.v1.DataSourceCustom_Static + 64, // 19: wg.cosmo.node.v1.DataSourceConfiguration.directives:type_name -> wg.cosmo.node.v1.DirectiveConfiguration + 36, // 20: wg.cosmo.node.v1.DataSourceConfiguration.keys:type_name -> wg.cosmo.node.v1.RequiredField + 36, // 21: wg.cosmo.node.v1.DataSourceConfiguration.provides:type_name -> wg.cosmo.node.v1.RequiredField + 36, // 22: wg.cosmo.node.v1.DataSourceConfiguration.requires:type_name -> wg.cosmo.node.v1.RequiredField + 61, // 23: wg.cosmo.node.v1.DataSourceConfiguration.custom_events:type_name -> wg.cosmo.node.v1.DataSourceCustomEvents + 37, // 24: wg.cosmo.node.v1.DataSourceConfiguration.entity_interfaces:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration + 37, // 25: wg.cosmo.node.v1.DataSourceConfiguration.interface_objects:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration + 25, // 26: wg.cosmo.node.v1.DataSourceConfiguration.cost_configuration:type_name -> wg.cosmo.node.v1.CostConfiguration 20, // 27: wg.cosmo.node.v1.DataSourceConfiguration.entity_caching:type_name -> wg.cosmo.node.v1.EntityCaching 21, // 28: wg.cosmo.node.v1.EntityCaching.entity_cache_configurations:type_name -> wg.cosmo.node.v1.EntityCacheConfiguration 22, // 29: wg.cosmo.node.v1.EntityCaching.cache_invalidate_configurations:type_name -> wg.cosmo.node.v1.CacheInvalidateConfiguration 23, // 30: wg.cosmo.node.v1.EntityCaching.cache_populate_configurations:type_name -> wg.cosmo.node.v1.CachePopulateConfiguration - 25, // 31: wg.cosmo.node.v1.CostConfiguration.field_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration - 26, // 32: wg.cosmo.node.v1.CostConfiguration.list_sizes:type_name -> wg.cosmo.node.v1.FieldListSizeConfiguration - 81, // 33: wg.cosmo.node.v1.CostConfiguration.type_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry - 82, // 34: wg.cosmo.node.v1.CostConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry - 83, // 35: wg.cosmo.node.v1.FieldWeightConfiguration.argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry - 84, // 36: wg.cosmo.node.v1.FieldWeightConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry - 1, // 37: wg.cosmo.node.v1.ArgumentConfiguration.source_type:type_name -> wg.cosmo.node.v1.ArgumentSource - 28, // 38: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes:type_name -> wg.cosmo.node.v1.Scopes - 28, // 39: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes_by_or:type_name -> wg.cosmo.node.v1.Scopes - 27, // 40: wg.cosmo.node.v1.FieldConfiguration.arguments_configuration:type_name -> wg.cosmo.node.v1.ArgumentConfiguration - 29, // 41: wg.cosmo.node.v1.FieldConfiguration.authorization_configuration:type_name -> wg.cosmo.node.v1.AuthorizationConfiguration - 72, // 42: wg.cosmo.node.v1.FieldConfiguration.subscription_filter_condition:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 33, // 43: wg.cosmo.node.v1.FieldSetCondition.field_coordinates_path:type_name -> wg.cosmo.node.v1.FieldCoordinates - 34, // 44: wg.cosmo.node.v1.RequiredField.conditions:type_name -> wg.cosmo.node.v1.FieldSetCondition - 62, // 45: wg.cosmo.node.v1.FetchConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 7, // 46: wg.cosmo.node.v1.FetchConfiguration.method:type_name -> wg.cosmo.node.v1.HTTPMethod - 85, // 47: wg.cosmo.node.v1.FetchConfiguration.header:type_name -> wg.cosmo.node.v1.FetchConfiguration.HeaderEntry - 62, // 48: wg.cosmo.node.v1.FetchConfiguration.body:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 64, // 49: wg.cosmo.node.v1.FetchConfiguration.query:type_name -> wg.cosmo.node.v1.URLQueryConfiguration - 66, // 50: wg.cosmo.node.v1.FetchConfiguration.mtls:type_name -> wg.cosmo.node.v1.MTLSConfiguration - 62, // 51: wg.cosmo.node.v1.FetchConfiguration.base_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 62, // 52: wg.cosmo.node.v1.FetchConfiguration.path:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 62, // 53: wg.cosmo.node.v1.FetchConfiguration.http_proxy_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 37, // 54: wg.cosmo.node.v1.DataSourceCustom_GraphQL.fetch:type_name -> wg.cosmo.node.v1.FetchConfiguration - 67, // 55: wg.cosmo.node.v1.DataSourceCustom_GraphQL.subscription:type_name -> wg.cosmo.node.v1.GraphQLSubscriptionConfiguration - 68, // 56: wg.cosmo.node.v1.DataSourceCustom_GraphQL.federation:type_name -> wg.cosmo.node.v1.GraphQLFederationConfiguration - 69, // 57: wg.cosmo.node.v1.DataSourceCustom_GraphQL.upstream_schema:type_name -> wg.cosmo.node.v1.InternedString - 70, // 58: wg.cosmo.node.v1.DataSourceCustom_GraphQL.custom_scalar_type_fields:type_name -> wg.cosmo.node.v1.SingleTypeField - 40, // 59: wg.cosmo.node.v1.DataSourceCustom_GraphQL.grpc:type_name -> wg.cosmo.node.v1.GRPCConfiguration - 44, // 60: wg.cosmo.node.v1.GRPCConfiguration.mapping:type_name -> wg.cosmo.node.v1.GRPCMapping - 42, // 61: wg.cosmo.node.v1.GRPCConfiguration.plugin:type_name -> wg.cosmo.node.v1.PluginConfiguration - 41, // 62: wg.cosmo.node.v1.PluginConfiguration.image_reference:type_name -> wg.cosmo.node.v1.ImageReference - 47, // 63: wg.cosmo.node.v1.GRPCMapping.operation_mappings:type_name -> wg.cosmo.node.v1.OperationMapping - 48, // 64: wg.cosmo.node.v1.GRPCMapping.entity_mappings:type_name -> wg.cosmo.node.v1.EntityMapping - 50, // 65: wg.cosmo.node.v1.GRPCMapping.type_field_mappings:type_name -> wg.cosmo.node.v1.TypeFieldMapping - 53, // 66: wg.cosmo.node.v1.GRPCMapping.enum_mappings:type_name -> wg.cosmo.node.v1.EnumMapping - 45, // 67: wg.cosmo.node.v1.GRPCMapping.resolve_mappings:type_name -> wg.cosmo.node.v1.LookupMapping - 3, // 68: wg.cosmo.node.v1.LookupMapping.type:type_name -> wg.cosmo.node.v1.LookupType - 46, // 69: wg.cosmo.node.v1.LookupMapping.lookup_mapping:type_name -> wg.cosmo.node.v1.LookupFieldMapping - 51, // 70: wg.cosmo.node.v1.LookupFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping - 4, // 71: wg.cosmo.node.v1.OperationMapping.type:type_name -> wg.cosmo.node.v1.OperationType - 49, // 72: wg.cosmo.node.v1.EntityMapping.required_field_mappings:type_name -> wg.cosmo.node.v1.RequiredFieldMapping - 51, // 73: wg.cosmo.node.v1.RequiredFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping - 51, // 74: wg.cosmo.node.v1.TypeFieldMapping.field_mappings:type_name -> wg.cosmo.node.v1.FieldMapping - 52, // 75: wg.cosmo.node.v1.FieldMapping.argument_mappings:type_name -> wg.cosmo.node.v1.ArgumentMapping - 54, // 76: wg.cosmo.node.v1.EnumMapping.values:type_name -> wg.cosmo.node.v1.EnumValueMapping - 59, // 77: wg.cosmo.node.v1.NatsEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 55, // 78: wg.cosmo.node.v1.NatsEventConfiguration.stream_configuration:type_name -> wg.cosmo.node.v1.NatsStreamConfiguration - 59, // 79: wg.cosmo.node.v1.KafkaEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 59, // 80: wg.cosmo.node.v1.RedisEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 5, // 81: wg.cosmo.node.v1.EngineEventConfiguration.type:type_name -> wg.cosmo.node.v1.EventType - 56, // 82: wg.cosmo.node.v1.DataSourceCustomEvents.nats:type_name -> wg.cosmo.node.v1.NatsEventConfiguration - 57, // 83: wg.cosmo.node.v1.DataSourceCustomEvents.kafka:type_name -> wg.cosmo.node.v1.KafkaEventConfiguration - 58, // 84: wg.cosmo.node.v1.DataSourceCustomEvents.redis:type_name -> wg.cosmo.node.v1.RedisEventConfiguration - 62, // 85: wg.cosmo.node.v1.DataSourceCustom_Static.data:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 6, // 86: wg.cosmo.node.v1.ConfigurationVariable.kind:type_name -> wg.cosmo.node.v1.ConfigurationVariableKind - 62, // 87: wg.cosmo.node.v1.HTTPHeader.values:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 62, // 88: wg.cosmo.node.v1.MTLSConfiguration.key:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 62, // 89: wg.cosmo.node.v1.MTLSConfiguration.cert:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 62, // 90: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 87, // 91: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol - 88, // 92: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.websocketSubprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol - 72, // 93: wg.cosmo.node.v1.SubscriptionFilterCondition.and:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 71, // 94: wg.cosmo.node.v1.SubscriptionFilterCondition.in:type_name -> wg.cosmo.node.v1.SubscriptionFieldCondition - 72, // 95: wg.cosmo.node.v1.SubscriptionFilterCondition.not:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 72, // 96: wg.cosmo.node.v1.SubscriptionFilterCondition.or:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 74, // 97: wg.cosmo.node.v1.CacheWarmerOperations.operations:type_name -> wg.cosmo.node.v1.Operation - 75, // 98: wg.cosmo.node.v1.Operation.request:type_name -> wg.cosmo.node.v1.OperationRequest - 78, // 99: wg.cosmo.node.v1.Operation.client:type_name -> wg.cosmo.node.v1.ClientInfo - 76, // 100: wg.cosmo.node.v1.OperationRequest.extensions:type_name -> wg.cosmo.node.v1.Extension - 77, // 101: wg.cosmo.node.v1.Extension.persisted_query:type_name -> wg.cosmo.node.v1.PersistedQuery - 10, // 102: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry.value:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig - 65, // 103: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry.value:type_name -> wg.cosmo.node.v1.HTTPHeader - 16, // 104: wg.cosmo.node.v1.NodeService.SelfRegister:input_type -> wg.cosmo.node.v1.SelfRegisterRequest - 17, // 105: wg.cosmo.node.v1.NodeService.SelfRegister:output_type -> wg.cosmo.node.v1.SelfRegisterResponse - 105, // [105:106] is the sub-list for method output_type - 104, // [104:105] is the sub-list for method input_type - 104, // [104:104] is the sub-list for extension type_name - 104, // [104:104] is the sub-list for extension extendee - 0, // [0:104] is the sub-list for field type_name + 24, // 31: wg.cosmo.node.v1.EntityCaching.request_scoped_fields:type_name -> wg.cosmo.node.v1.RequestScopedFieldConfiguration + 26, // 32: wg.cosmo.node.v1.CostConfiguration.field_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration + 27, // 33: wg.cosmo.node.v1.CostConfiguration.list_sizes:type_name -> wg.cosmo.node.v1.FieldListSizeConfiguration + 82, // 34: wg.cosmo.node.v1.CostConfiguration.type_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry + 83, // 35: wg.cosmo.node.v1.CostConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry + 84, // 36: wg.cosmo.node.v1.FieldWeightConfiguration.argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry + 85, // 37: wg.cosmo.node.v1.FieldWeightConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry + 1, // 38: wg.cosmo.node.v1.ArgumentConfiguration.source_type:type_name -> wg.cosmo.node.v1.ArgumentSource + 29, // 39: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes:type_name -> wg.cosmo.node.v1.Scopes + 29, // 40: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes_by_or:type_name -> wg.cosmo.node.v1.Scopes + 28, // 41: wg.cosmo.node.v1.FieldConfiguration.arguments_configuration:type_name -> wg.cosmo.node.v1.ArgumentConfiguration + 30, // 42: wg.cosmo.node.v1.FieldConfiguration.authorization_configuration:type_name -> wg.cosmo.node.v1.AuthorizationConfiguration + 73, // 43: wg.cosmo.node.v1.FieldConfiguration.subscription_filter_condition:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 34, // 44: wg.cosmo.node.v1.FieldSetCondition.field_coordinates_path:type_name -> wg.cosmo.node.v1.FieldCoordinates + 35, // 45: wg.cosmo.node.v1.RequiredField.conditions:type_name -> wg.cosmo.node.v1.FieldSetCondition + 63, // 46: wg.cosmo.node.v1.FetchConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 7, // 47: wg.cosmo.node.v1.FetchConfiguration.method:type_name -> wg.cosmo.node.v1.HTTPMethod + 86, // 48: wg.cosmo.node.v1.FetchConfiguration.header:type_name -> wg.cosmo.node.v1.FetchConfiguration.HeaderEntry + 63, // 49: wg.cosmo.node.v1.FetchConfiguration.body:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 65, // 50: wg.cosmo.node.v1.FetchConfiguration.query:type_name -> wg.cosmo.node.v1.URLQueryConfiguration + 67, // 51: wg.cosmo.node.v1.FetchConfiguration.mtls:type_name -> wg.cosmo.node.v1.MTLSConfiguration + 63, // 52: wg.cosmo.node.v1.FetchConfiguration.base_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 63, // 53: wg.cosmo.node.v1.FetchConfiguration.path:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 63, // 54: wg.cosmo.node.v1.FetchConfiguration.http_proxy_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 38, // 55: wg.cosmo.node.v1.DataSourceCustom_GraphQL.fetch:type_name -> wg.cosmo.node.v1.FetchConfiguration + 68, // 56: wg.cosmo.node.v1.DataSourceCustom_GraphQL.subscription:type_name -> wg.cosmo.node.v1.GraphQLSubscriptionConfiguration + 69, // 57: wg.cosmo.node.v1.DataSourceCustom_GraphQL.federation:type_name -> wg.cosmo.node.v1.GraphQLFederationConfiguration + 70, // 58: wg.cosmo.node.v1.DataSourceCustom_GraphQL.upstream_schema:type_name -> wg.cosmo.node.v1.InternedString + 71, // 59: wg.cosmo.node.v1.DataSourceCustom_GraphQL.custom_scalar_type_fields:type_name -> wg.cosmo.node.v1.SingleTypeField + 41, // 60: wg.cosmo.node.v1.DataSourceCustom_GraphQL.grpc:type_name -> wg.cosmo.node.v1.GRPCConfiguration + 45, // 61: wg.cosmo.node.v1.GRPCConfiguration.mapping:type_name -> wg.cosmo.node.v1.GRPCMapping + 43, // 62: wg.cosmo.node.v1.GRPCConfiguration.plugin:type_name -> wg.cosmo.node.v1.PluginConfiguration + 42, // 63: wg.cosmo.node.v1.PluginConfiguration.image_reference:type_name -> wg.cosmo.node.v1.ImageReference + 48, // 64: wg.cosmo.node.v1.GRPCMapping.operation_mappings:type_name -> wg.cosmo.node.v1.OperationMapping + 49, // 65: wg.cosmo.node.v1.GRPCMapping.entity_mappings:type_name -> wg.cosmo.node.v1.EntityMapping + 51, // 66: wg.cosmo.node.v1.GRPCMapping.type_field_mappings:type_name -> wg.cosmo.node.v1.TypeFieldMapping + 54, // 67: wg.cosmo.node.v1.GRPCMapping.enum_mappings:type_name -> wg.cosmo.node.v1.EnumMapping + 46, // 68: wg.cosmo.node.v1.GRPCMapping.resolve_mappings:type_name -> wg.cosmo.node.v1.LookupMapping + 3, // 69: wg.cosmo.node.v1.LookupMapping.type:type_name -> wg.cosmo.node.v1.LookupType + 47, // 70: wg.cosmo.node.v1.LookupMapping.lookup_mapping:type_name -> wg.cosmo.node.v1.LookupFieldMapping + 52, // 71: wg.cosmo.node.v1.LookupFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping + 4, // 72: wg.cosmo.node.v1.OperationMapping.type:type_name -> wg.cosmo.node.v1.OperationType + 50, // 73: wg.cosmo.node.v1.EntityMapping.required_field_mappings:type_name -> wg.cosmo.node.v1.RequiredFieldMapping + 52, // 74: wg.cosmo.node.v1.RequiredFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping + 52, // 75: wg.cosmo.node.v1.TypeFieldMapping.field_mappings:type_name -> wg.cosmo.node.v1.FieldMapping + 53, // 76: wg.cosmo.node.v1.FieldMapping.argument_mappings:type_name -> wg.cosmo.node.v1.ArgumentMapping + 55, // 77: wg.cosmo.node.v1.EnumMapping.values:type_name -> wg.cosmo.node.v1.EnumValueMapping + 60, // 78: wg.cosmo.node.v1.NatsEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 56, // 79: wg.cosmo.node.v1.NatsEventConfiguration.stream_configuration:type_name -> wg.cosmo.node.v1.NatsStreamConfiguration + 60, // 80: wg.cosmo.node.v1.KafkaEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 60, // 81: wg.cosmo.node.v1.RedisEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 5, // 82: wg.cosmo.node.v1.EngineEventConfiguration.type:type_name -> wg.cosmo.node.v1.EventType + 57, // 83: wg.cosmo.node.v1.DataSourceCustomEvents.nats:type_name -> wg.cosmo.node.v1.NatsEventConfiguration + 58, // 84: wg.cosmo.node.v1.DataSourceCustomEvents.kafka:type_name -> wg.cosmo.node.v1.KafkaEventConfiguration + 59, // 85: wg.cosmo.node.v1.DataSourceCustomEvents.redis:type_name -> wg.cosmo.node.v1.RedisEventConfiguration + 63, // 86: wg.cosmo.node.v1.DataSourceCustom_Static.data:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 6, // 87: wg.cosmo.node.v1.ConfigurationVariable.kind:type_name -> wg.cosmo.node.v1.ConfigurationVariableKind + 63, // 88: wg.cosmo.node.v1.HTTPHeader.values:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 63, // 89: wg.cosmo.node.v1.MTLSConfiguration.key:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 63, // 90: wg.cosmo.node.v1.MTLSConfiguration.cert:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 63, // 91: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 88, // 92: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol + 89, // 93: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.websocketSubprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol + 73, // 94: wg.cosmo.node.v1.SubscriptionFilterCondition.and:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 72, // 95: wg.cosmo.node.v1.SubscriptionFilterCondition.in:type_name -> wg.cosmo.node.v1.SubscriptionFieldCondition + 73, // 96: wg.cosmo.node.v1.SubscriptionFilterCondition.not:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 73, // 97: wg.cosmo.node.v1.SubscriptionFilterCondition.or:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 75, // 98: wg.cosmo.node.v1.CacheWarmerOperations.operations:type_name -> wg.cosmo.node.v1.Operation + 76, // 99: wg.cosmo.node.v1.Operation.request:type_name -> wg.cosmo.node.v1.OperationRequest + 79, // 100: wg.cosmo.node.v1.Operation.client:type_name -> wg.cosmo.node.v1.ClientInfo + 77, // 101: wg.cosmo.node.v1.OperationRequest.extensions:type_name -> wg.cosmo.node.v1.Extension + 78, // 102: wg.cosmo.node.v1.Extension.persisted_query:type_name -> wg.cosmo.node.v1.PersistedQuery + 10, // 103: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry.value:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig + 66, // 104: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry.value:type_name -> wg.cosmo.node.v1.HTTPHeader + 16, // 105: wg.cosmo.node.v1.NodeService.SelfRegister:input_type -> wg.cosmo.node.v1.SelfRegisterRequest + 17, // 106: wg.cosmo.node.v1.NodeService.SelfRegister:output_type -> wg.cosmo.node.v1.SelfRegisterResponse + 106, // [106:107] is the sub-list for method output_type + 105, // [105:106] is the sub-list for method input_type + 105, // [105:105] is the sub-list for extension type_name + 105, // [105:105] is the sub-list for extension extendee + 0, // [0:105] is the sub-list for field type_name } func init() { file_wg_cosmo_node_v1_node_proto_init() } @@ -5570,20 +5651,20 @@ func file_wg_cosmo_node_v1_node_proto_init() { file_wg_cosmo_node_v1_node_proto_msgTypes[9].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[10].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[15].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[17].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[18].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[22].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[29].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[34].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[59].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[64].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[19].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[23].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[30].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[35].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[60].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[65].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_wg_cosmo_node_v1_node_proto_rawDesc), len(file_wg_cosmo_node_v1_node_proto_rawDesc)), NumEnums: 8, - NumMessages: 78, + NumMessages: 79, NumExtensions: 0, NumServices: 1, }, diff --git a/shared/src/router-config/builder.ts b/shared/src/router-config/builder.ts index fa4c413c74..8a30e18025 100644 --- a/shared/src/router-config/builder.ts +++ b/shared/src/router-config/builder.ts @@ -38,6 +38,7 @@ import { ImageReference, InternedString, PluginConfiguration, + RequestScopedFieldConfiguration, RouterConfig, TypeField, } from '@wundergraph/cosmo-connect/dist/node/v1/node_pb'; @@ -86,6 +87,7 @@ function toEntityCaching(dataByTypeName?: Map): Ent const entityCacheConfigurations: EntityCacheConfiguration[] = []; const cacheInvalidateConfigurations: CacheInvalidateConfiguration[] = []; const cachePopulateConfigurations: CachePopulateConfiguration[] = []; + const requestScopedFields: RequestScopedFieldConfiguration[] = []; for (const data of dataByTypeName.values()) { for (const ec of data.entityCaching?.entityCacheConfigurations ?? []) { entityCacheConfigurations.push( @@ -118,11 +120,21 @@ function toEntityCaching(dataByTypeName?: Map): Ent }), ); } + for (const field of data.entityCaching?.requestScopedFields ?? []) { + requestScopedFields.push( + new RequestScopedFieldConfiguration({ + fieldName: field.fieldName, + typeName: field.typeName, + l1Key: field.l1Key, + }), + ); + } } if ( entityCacheConfigurations.length === 0 && cacheInvalidateConfigurations.length === 0 && - cachePopulateConfigurations.length === 0 + cachePopulateConfigurations.length === 0 && + requestScopedFields.length === 0 ) { return undefined; } @@ -130,6 +142,7 @@ function toEntityCaching(dataByTypeName?: Map): Ent entityCacheConfigurations, cacheInvalidateConfigurations, cachePopulateConfigurations, + requestScopedFields, }); } From 4c90da9dfad5cac1c76892b1db9fa3154b8e7d36 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Fri, 19 Jun 2026 11:50:14 +0530 Subject: [PATCH 05/65] feat(composition): @openfed__queryCache and @openfed__is directives --- .../directive-definition-data.ts | 109 +- composition/src/errors/errors.ts | 241 ++++ composition/src/router-configuration/types.ts | 32 + composition/src/utils/string-constants.ts | 11 +- composition/src/v1/constants/constants.ts | 30 +- .../src/v1/constants/directive-definitions.ts | 71 +- .../v1/normalization/normalization-factory.ts | 1040 ++++++++++++++- .../src/v1/normalization/types/types.ts | 16 + composition/src/v1/normalization/utils.ts | 22 +- composition/src/v1/warnings/params.ts | 6 + composition/src/v1/warnings/warnings.ts | 18 + composition/tests/utils/utils.ts | 4 + .../tests/v1/directives/entity-cache.test.ts | 8 +- .../tests/v1/directives/query-cache.test.ts | 1148 +++++++++++++++++ .../gen/proto/wg/cosmo/node/v1/node.pb.go | 914 ++++++++----- connect/src/wg/cosmo/node/v1/node_pb.ts | 173 +++ proto/wg/cosmo/node/v1/node.proto | 26 + router/gen/proto/wg/cosmo/node/v1/node.pb.go | 914 ++++++++----- shared/src/router-config/builder.ts | 33 +- shared/test/entity-caching.test.ts | 161 +++ 20 files changed, 4197 insertions(+), 780 deletions(-) create mode 100644 composition/tests/v1/directives/query-cache.test.ts create mode 100644 shared/test/entity-caching.test.ts diff --git a/composition/src/directive-definition-data/directive-definition-data.ts b/composition/src/directive-definition-data/directive-definition-data.ts index f2c8af2fe0..6e523aac1c 100644 --- a/composition/src/directive-definition-data/directive-definition-data.ts +++ b/composition/src/directive-definition-data/directive-definition-data.ts @@ -81,14 +81,16 @@ import { UNION_UPPER, URL_LOWER, WEIGHT, - CACHE_INVALIDATE, - CACHE_POPULATE, - ENTITY_CACHE, + OPENFED_CACHE_INVALIDATE, + OPENFED_CACHE_POPULATE, + OPENFED_ENTITY_CACHE, INCLUDE_HEADERS, + OPENFED_IS, MAX_AGE, NEGATIVE_CACHE_TTL, PARTIAL_CACHE_LOAD, - REQUEST_SCOPED, + OPENFED_QUERY_CACHE, + OPENFED_REQUEST_SCOPED, SHADOW_MODE, } from '../utils/string-constants'; import { @@ -121,10 +123,12 @@ import { REQUIRES_SCOPES_DEFINITION, SEMANTIC_NON_NULL_DEFINITION, SHAREABLE_DEFINITION, - CACHE_INVALIDATE_DEFINITION, - CACHE_POPULATE_DEFINITION, - ENTITY_CACHE_DEFINITION, - REQUEST_SCOPED_DEFINITION, + OPENFED_CACHE_INVALIDATE_DEFINITION, + OPENFED_CACHE_POPULATE_DEFINITION, + OPENFED_ENTITY_CACHE_DEFINITION, + OPENFED_IS_DEFINITION, + OPENFED_QUERY_CACHE_DEFINITION, + OPENFED_REQUEST_SCOPED_DEFINITION, SPECIFIED_BY_DEFINITION, SUBSCRIPTION_FILTER_DEFINITION, TAG_DEFINITION, @@ -968,7 +972,7 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ [ MAX_AGE, newDirectiveArgumentData({ - directive: `@${ENTITY_CACHE}`, + directive: `@${OPENFED_ENTITY_CACHE}`, name: MAX_AGE, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, typeNode: REQUIRED_INT_TYPE_NODE, @@ -977,7 +981,7 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ [ NEGATIVE_CACHE_TTL, newDirectiveArgumentData({ - directive: `@${ENTITY_CACHE}`, + directive: `@${OPENFED_ENTITY_CACHE}`, defaultValue: { kind: Kind.INT, value: '0' }, name: NEGATIVE_CACHE_TTL, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, @@ -987,7 +991,7 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ [ INCLUDE_HEADERS, newDirectiveArgumentData({ - directive: `@${ENTITY_CACHE}`, + directive: `@${OPENFED_ENTITY_CACHE}`, defaultValue: { kind: Kind.BOOLEAN, value: false }, name: INCLUDE_HEADERS, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, @@ -997,7 +1001,7 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ [ PARTIAL_CACHE_LOAD, newDirectiveArgumentData({ - directive: `@${ENTITY_CACHE}`, + directive: `@${OPENFED_ENTITY_CACHE}`, defaultValue: { kind: Kind.BOOLEAN, value: false }, name: PARTIAL_CACHE_LOAD, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, @@ -1007,7 +1011,7 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ [ SHADOW_MODE, newDirectiveArgumentData({ - directive: `@${ENTITY_CACHE}`, + directive: `@${OPENFED_ENTITY_CACHE}`, defaultValue: { kind: Kind.BOOLEAN, value: false }, name: SHADOW_MODE, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, @@ -1016,8 +1020,8 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ ], ]), locations: new Set([OBJECT_UPPER]), - name: ENTITY_CACHE, - node: ENTITY_CACHE_DEFINITION, + name: OPENFED_ENTITY_CACHE, + node: OPENFED_ENTITY_CACHE_DEFINITION, optionalArgumentNames: new Set([NEGATIVE_CACHE_TTL, INCLUDE_HEADERS, PARTIAL_CACHE_LOAD, SHADOW_MODE]), requiredArgumentNames: new Set([MAX_AGE]), }); @@ -1025,8 +1029,8 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ export const CACHE_INVALIDATE_DEFINITION_DATA = newDirectiveDefinitionData({ argumentDataByName: new Map(), locations: new Set([FIELD_DEFINITION_UPPER]), - name: CACHE_INVALIDATE, - node: CACHE_INVALIDATE_DEFINITION, + name: OPENFED_CACHE_INVALIDATE, + node: OPENFED_CACHE_INVALIDATE_DEFINITION, }); export const CACHE_POPULATE_DEFINITION_DATA = newDirectiveDefinitionData({ @@ -1034,7 +1038,7 @@ export const CACHE_POPULATE_DEFINITION_DATA = newDirectiveDefinitionData({ [ MAX_AGE, newDirectiveArgumentData({ - directive: `@${CACHE_POPULATE}`, + directive: `@${OPENFED_CACHE_POPULATE}`, name: MAX_AGE, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, typeNode: stringToNamedTypeNode(INT_SCALAR), @@ -1042,16 +1046,74 @@ export const CACHE_POPULATE_DEFINITION_DATA = newDirectiveDefinitionData({ ], ]), locations: new Set([FIELD_DEFINITION_UPPER]), - name: CACHE_POPULATE, - node: CACHE_POPULATE_DEFINITION, + name: OPENFED_CACHE_POPULATE, + node: OPENFED_CACHE_POPULATE_DEFINITION, optionalArgumentNames: new Set([MAX_AGE]), }); + +export const QUERY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ + argumentDataByName: new Map([ + [ + MAX_AGE, + newDirectiveArgumentData({ + directive: `@${OPENFED_QUERY_CACHE}`, + name: MAX_AGE, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: REQUIRED_INT_TYPE_NODE, + }), + ], + [ + INCLUDE_HEADERS, + newDirectiveArgumentData({ + directive: `@${OPENFED_QUERY_CACHE}`, + defaultValue: { kind: Kind.BOOLEAN, value: false }, + name: INCLUDE_HEADERS, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: stringToNamedTypeNode(BOOLEAN_SCALAR), + }), + ], + [ + SHADOW_MODE, + newDirectiveArgumentData({ + directive: `@${OPENFED_QUERY_CACHE}`, + defaultValue: { kind: Kind.BOOLEAN, value: false }, + name: SHADOW_MODE, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: stringToNamedTypeNode(BOOLEAN_SCALAR), + }), + ], + ]), + locations: new Set([FIELD_DEFINITION_UPPER]), + name: OPENFED_QUERY_CACHE, + node: OPENFED_QUERY_CACHE_DEFINITION, + optionalArgumentNames: new Set([INCLUDE_HEADERS, SHADOW_MODE]), + requiredArgumentNames: new Set([MAX_AGE]), +}); + +export const IS_DEFINITION_DATA = newDirectiveDefinitionData({ + argumentDataByName: new Map([ + [ + FIELDS, + newDirectiveArgumentData({ + directive: `@${OPENFED_IS}`, + name: FIELDS, + namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, + typeNode: REQUIRED_STRING_TYPE_NODE, + }), + ], + ]), + locations: new Set([ARGUMENT_DEFINITION_UPPER]), + name: OPENFED_IS, + node: OPENFED_IS_DEFINITION, + requiredArgumentNames: new Set([FIELDS]), +}); + export const REQUEST_SCOPED_DEFINITION_DATA = newDirectiveDefinitionData({ argumentDataByName: new Map([ [ KEY, newDirectiveArgumentData({ - directive: `@${REQUEST_SCOPED}`, + directive: `@${OPENFED_REQUEST_SCOPED}`, name: KEY, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, typeNode: REQUIRED_STRING_TYPE_NODE, @@ -1059,8 +1121,7 @@ export const REQUEST_SCOPED_DEFINITION_DATA = newDirectiveDefinitionData({ ], ]), locations: new Set([FIELD_DEFINITION_UPPER]), - name: REQUEST_SCOPED, - node: REQUEST_SCOPED_DEFINITION, + name: OPENFED_REQUEST_SCOPED, + node: OPENFED_REQUEST_SCOPED_DEFINITION, requiredArgumentNames: new Set([KEY]), }); - diff --git a/composition/src/errors/errors.ts b/composition/src/errors/errors.ts index 5297574339..716c052f98 100644 --- a/composition/src/errors/errors.ts +++ b/composition/src/errors/errors.ts @@ -2063,6 +2063,20 @@ export function negativeCacheTTLNotNonNegativeIntegerErrorMessage(directiveName: return `@${directiveName} negativeCacheTTL must be zero or a positive integer, got "${value}".`; } +export function queryCacheOnNonQueryFieldErrorMessage(fieldCoords: string): string { + return ( + `@openfed__queryCache must only be defined on fields of the root query type; found on "${fieldCoords}".` + + ` Use @openfed__cachePopulate or @openfed__cacheInvalidate on mutation or subscription fields.` + ); +} + +export function queryCacheOnNonEntityReturnTypeErrorMessage(fieldCoords: string, returnType: string): string { + return ( + `Field "${fieldCoords}" has @openfed__queryCache but returns non-entity type "${returnType}".` + + ` @openfed__queryCache requires the return type to be an entity with @key.` + ); +} + export function cacheInvalidateOnNonMutationSubscriptionFieldErrorMessage(fieldCoords: string): string { return `@openfed__cacheInvalidate is only valid on Mutation or Subscription fields, found on "${fieldCoords}".`; } @@ -2085,3 +2099,230 @@ export function cacheInvalidateAndPopulateMutualExclusionErrorMessage(fieldCoord ` A field must use one or the other, not both.` ); } + +export function isWithoutQueryCacheErrorMessage(argumentName: string, fieldCoords: string): string { + return `@openfed__is on argument "${argumentName}" of field "${fieldCoords}" has no effect without @openfed__queryCache.`; +} + +export function isReferencesUnknownKeyFieldErrorMessage( + isField: string, + argumentName: string, + fieldCoords: string, + entityType: string, +): string { + return ( + `@openfed__is(fields: "${isField}") on argument "${argumentName}" of field "${fieldCoords}"` + + ` references unknown @key field "${isField}" on type "${entityType}".` + ); +} + +export function duplicateKeyFieldMappingErrorMessage(fieldCoords: string, keyField: string): string { + return `Multiple arguments on field "${fieldCoords}" map to @key field "${keyField}".`; +} + +export function explicitTypeMismatchErrorMessage( + argumentName: string, + fieldCoords: string, + argumentType: string, + isField: string, + entityType: string, + keyFieldType: string, +): string { + return `Argument "${argumentName}" on field "${fieldCoords}" has type "${argumentType}" but @openfed__is(fields: "${isField}") targets @key field "${isField}" of type "${keyFieldType}" on entity "${entityType}".`; +} + +export function nonKeyFieldSpecErrorMessage( + argumentName: string, + fieldCoords: string, + isField: string, + entityType: string, +): string { + return `Argument "${argumentName}" on field "${fieldCoords}" uses @openfed__is(fields: "${isField}"), but "${isField}" is not a @key field on entity "${entityType}". @openfed__is can only target fields that are part of a @key.`; +} + +export function listArgumentToScalarKeySpecErrorMessage( + argumentName: string, + fieldCoords: string, + argumentType: string, + isField: string, + entityType: string, + keyFieldType: string, +): string { + return ( + `Argument "${argumentName}" on field "${fieldCoords}" has type "${argumentType}" but @openfed__is(fields: "${isField}") targets @key field "${isField}" of type "${keyFieldType}" on entity "${entityType}".` + + ' List arguments can only map to scalar key fields when the field returns a list of entities, or to list key fields when the key field itself is a list type.' + ); +} + +export function scalarArgumentToListKeySpecErrorMessage( + argumentName: string, + fieldCoords: string, + argumentType: string, + isField: string, + entityType: string, + keyFieldType: string, +): string { + return ( + `Argument "${argumentName}" on field "${fieldCoords}" has type "${argumentType}" but @openfed__is(fields: "${isField}") targets @key field "${isField}" of type "${keyFieldType}" on entity "${entityType}".` + + ' A scalar argument cannot map to a list key field.' + ); +} + +export function explicitIncompleteCompositeKeyErrorMessage( + fieldCoords: string, + argumentName: string, + mappedField: string, + entityType: string, + compositeKey: string, + missingField: string, +): string { + return `Field "${fieldCoords}" has argument "${argumentName}" with @openfed__is mapping to @key field "${mappedField}" on entity "${entityType}", but composite @key "${compositeKey}" is incomplete because no argument maps to required key field "${missingField}".`; +} + +export function explicitSingularAdditionalNonKeyArgumentErrorMessage( + fieldCoords: string, + argumentName: string, + keyField: string, + entityType: string, + extraArgument: string, +): string { + return `Field "${fieldCoords}" has argument "${argumentName}" with @openfed__is mapping to @key field "${keyField}" on entity "${entityType}", but also has additional argument "${extraArgument}" which is not mapped to a key field. All arguments must be key arguments — additional arguments may filter the response, making the cache key incomplete.`; +} + +export function explicitCompositeAdditionalNonKeyArgumentErrorMessage( + fieldCoords: string, + firstArgument: string, + secondArgument: string, + compositeKey: string, + entityType: string, + extraArgument: string, +): string { + return `Field "${fieldCoords}" has arguments "${firstArgument}" and "${secondArgument}" with @openfed__is mappings covering composite @key "${compositeKey}" on entity "${entityType}", but also has additional argument "${extraArgument}" which is not mapped to a key field. All arguments must be key arguments — additional arguments may filter the response, making the cache key incomplete.`; +} + +export function batchListValuedKeyRequiresNestedListsErrorMessage( + fieldCoords: string, + isField: string, + entityType: string, + actualType: string, +): string { + return `Field "${fieldCoords}" returns a list of entities, so cache lookup is a batch lookup and requires one key value per entity. Because @openfed__is(fields: "${isField}") targets list-valued @key field "${isField}" on entity "${entityType}", the argument must provide a list of tag lists (e.g., "[[String!]!]!"), not ${actualType}.`; +} + +export function explicitBatchAdditionalNonKeyArgumentErrorMessage( + fieldCoords: string, + argumentName: string, + keyField: string, + entityType: string, + extraArgument: string, +): string { + return `Field "${fieldCoords}" returns a list of entities, so cache lookup is a batch lookup and requires a single key input that determines the returned entities. Argument "${argumentName}" uses @openfed__is to map to @key field "${keyField}" on entity "${entityType}", but additional argument "${extraArgument}" is not mapped to a key field and may filter the response, so the batch key would be incomplete.`; +} + +export function explicitScalarArgumentsCannotEstablishBatchMappingErrorMessage( + fieldCoords: string, + entityType: string, +): string { + return `Field "${fieldCoords}" returns a list of entities, so cache lookup is a batch lookup and requires one key value per entity. Scalar arguments with @openfed__is mapping to @key fields on entity "${entityType}" cannot provide a batch of keys, so they cannot establish cache key mappings for this field. Use list arguments for batch cache lookups.`; +} + +export function multipleListArgumentsBatchFactoryMessage(fieldCoords: string, entityType: string): string { + return ( + `Field "${fieldCoords}" has multiple list arguments mapping to @key fields on entity "${entityType}".` + + ' Batch cache lookups require a single list argument.' + + ' For composite keys, use a single list of input objects instead.' + ); +} + +export function inputObjectCompositeTypeMismatchErrorMessage( + argumentName: string, + fieldCoords: string, + keyFields: string, + entityType: string, + inputType: string, + inputFieldName: string, + inputFieldType: string, + entityFieldPath: string, + entityFieldType: string, +): string { + return ( + `Argument "${argumentName}" on field "${fieldCoords}" uses @openfed__is(fields: "${keyFields}") mapping to composite @key on entity "${entityType}",` + + ` but input type "${inputType}" field "${inputFieldName}" has type "${inputFieldType}"` + + ` which does not match key field "${entityFieldPath}" of type "${entityFieldType}".` + ); +} + +export function inputObjectCompositeMissingFieldErrorMessage( + argumentName: string, + fieldCoords: string, + keyFields: string, + entityType: string, + inputType: string, + missingFieldName: string, +): string { + return ( + `Argument "${argumentName}" on field "${fieldCoords}" uses @openfed__is(fields: "${keyFields}") mapping to composite @key on entity "${entityType}",` + + ` but input type "${inputType}" is missing required key field "${missingFieldName}".` + ); +} + +export function nestedKeyRequiresInputObjectErrorMessage( + argumentName: string, + fieldCoords: string, + keyFields: string, + entityType: string, + inputTypeName: string, + entityKeyPath: string, +): string { + return ( + `Argument "${argumentName}" on field "${fieldCoords}" maps to nested @key "${keyFields}" on entity "${entityType}",` + + ` but the input field at key path "${entityKeyPath}" has type "${inputTypeName}",` + + ` which is not an input object type and therefore cannot provide the nested key selection.` + ); +} + +export function nestedInputObjectTypeMismatchErrorMessage( + argumentName: string, + fieldCoords: string, + keyFields: string, + entityType: string, + inputType: string, + inputFieldName: string, + inputFieldType: string, + entityFieldPath: string, + entityFieldType: string, +): string { + return ( + `Argument "${argumentName}" on field "${fieldCoords}" maps to nested @key "${keyFields}" on entity "${entityType}",` + + ` but input type "${inputType}" field "${inputFieldName}" has type "${inputFieldType}"` + + ` which does not match key field "${entityFieldPath}" of type "${entityFieldType}".` + ); +} + +export function nestedInputObjectMissingFieldErrorMessage( + argumentName: string, + fieldCoords: string, + keyFields: string, + entityType: string, + inputType: string, + missingFieldName: string, +): string { + return ( + `Argument "${argumentName}" on field "${fieldCoords}" maps to nested @key "${keyFields}" on entity "${entityType}",` + + ` but input type "${inputType}" is missing required key field "${missingFieldName}".` + ); +} + +export function nonInputArgumentCannotTargetCompositeKeyErrorMessage( + argumentName: string, + fieldCoords: string, + keyFields: string, + entityType: string, + argumentType: string, +): string { + return ( + `Argument "${argumentName}" on field "${fieldCoords}" uses @openfed__is(fields: "${keyFields}") targeting composite @key on entity "${entityType}",` + + ` but argument type "${argumentType}" does not provide nested fields for each key field.` + + ' Use separate arguments or an input object that matches the composite key shape.' + ); +} diff --git a/composition/src/router-configuration/types.ts b/composition/src/router-configuration/types.ts index e99ca60536..ba5ba67803 100644 --- a/composition/src/router-configuration/types.ts +++ b/composition/src/router-configuration/types.ts @@ -130,6 +130,36 @@ export type EntityCacheConfig = { shadowMode: boolean; }; +// Maps a single query argument to an entity's @key field. Every mapping is declared explicitly with +// @openfed__is; an argument is never matched to a @key field by name alone. +// Example: product(productId: ID! @openfed__is(fields: "id")) on a @openfed__queryCache field +// → entityKeyField: "id", argumentPath: ["productId"] +export type FieldMappingConfig = { + entityKeyField: FieldName; + argumentPath: Array; + isBatch?: boolean; +}; + +// Groups field mappings for a single entity type returned by a @openfed__queryCache field. +export type EntityKeyMappingConfig = { + entityTypeName: TypeName; + fieldMappings: Array; +}; + +// Extracted from @openfed__queryCache(maxAge: Int!, includeHeaders: Boolean, shadowMode: Boolean) +// on Query fields. Tells the router which query fields can serve entities from cache. +export type QueryCacheConfig = { + fieldName: FieldName; + maxAgeSeconds: number; + includeHeaders: boolean; + shadowMode: boolean; + // The entity type this query field returns (must have @openfed__entityCache). + entityTypeName: TypeName; + // Maps query arguments to entity @key fields so the router can construct cache keys from query + // arguments. Empty for list-returning fields without batch mappings (cache reads are skipped). + entityKeyMappings: Array; +}; + // Extracted from @openfed__cacheInvalidate on Mutation/Subscription fields. // Tells the router to evict the returned entity from the cache after the operation completes. export type CacheInvalidateConfig = { @@ -156,6 +186,8 @@ export type EntityCachingConfiguration = { // Attached to the Mutation/Subscription type's ConfigurationData from @openfed__cachePopulate. cachePopulateConfigurations?: Array; requestScopedFields?: Array; + // Attached to the Query type's ConfigurationData from @openfed__queryCache. + queryCacheConfigurations?: Array; }; export type Costs = { diff --git a/composition/src/utils/string-constants.ts b/composition/src/utils/string-constants.ts index 9640ee1f24..444016f470 100644 --- a/composition/src/utils/string-constants.ts +++ b/composition/src/utils/string-constants.ts @@ -10,8 +10,8 @@ export const AUTHENTICATED = 'authenticated'; export const ARGUMENT_DEFINITION_UPPER = 'ARGUMENT_DEFINITION'; export const BOOLEAN = 'boolean'; export const BOOLEAN_SCALAR = 'Boolean'; -export const CACHE_INVALIDATE = 'openfed__cacheInvalidate'; -export const CACHE_POPULATE = 'openfed__cachePopulate'; +export const OPENFED_CACHE_INVALIDATE = 'openfed__cacheInvalidate'; +export const OPENFED_CACHE_POPULATE = 'openfed__cachePopulate'; export const CHANNEL = 'channel'; export const CHANNELS = 'channels'; export const COMPOSE_DIRECTIVE = 'composeDirective'; @@ -43,7 +43,7 @@ export const EDFS_REDIS_PUBLISH = 'edfs__redisPublish'; export const EDFS_REDIS_SUBSCRIBE = 'edfs__redisSubscribe'; export const ENTITIES = 'entities'; export const ENTITIES_FIELD = '_entities'; -export const ENTITY_CACHE = 'openfed__entityCache'; +export const OPENFED_ENTITY_CACHE = 'openfed__entityCache'; export const ENTITY_UNION = '_Entity'; export const ENUM = 'Enum'; export const ENUM_UPPER = 'ENUM'; @@ -83,6 +83,7 @@ export const INT_SCALAR = 'Int'; export const INTERFACE = `Interface`; export const INTERFACE_UPPER = 'INTERFACE'; export const INTERFACE_OBJECT = 'interfaceObject'; +export const OPENFED_IS = 'openfed__is'; export const KEY = 'key'; export const LEFT_PARENTHESIS = '('; export const LEVELS = 'levels'; @@ -94,6 +95,7 @@ export const LIST = 'list'; export const LITERAL_AT = '@'; export const LITERAL_SPACE = ' '; export const LITERAL_NEW_LINE = '\n'; +export const LITERAL_OPEN_BRACE = '{'; export const LITERAL_PERIOD = '.'; export const MAX_AGE = 'maxAge'; export const NUMBER = 'number'; @@ -126,13 +128,14 @@ export const PROVIDER_ID = 'providerId'; export const PROVIDES = 'provides'; export const PUBLISH = 'publish'; export const QUERY = 'Query'; +export const OPENFED_QUERY_CACHE = 'openfed__queryCache'; export const QUERY_UPPER = 'QUERY'; export const QUOTATION_JOIN = `", "`; export const REASON = 'reason'; export const REQUEST = 'request'; export const REQUIRE_FETCH_REASONS = 'openfed__requireFetchReasons'; export const REQUIRE_ONE_SLICING_ARGUMENT = 'requireOneSlicingArgument'; -export const REQUEST_SCOPED = 'openfed__requestScoped'; +export const OPENFED_REQUEST_SCOPED = 'openfed__requestScoped'; export const REQUIRES = 'requires'; export const REQUIRES_SCOPES = 'requiresScopes'; export const RESOLVABLE = 'resolvable'; diff --git a/composition/src/v1/constants/constants.ts b/composition/src/v1/constants/constants.ts index f2b9d878a3..7dea14aca6 100644 --- a/composition/src/v1/constants/constants.ts +++ b/composition/src/v1/constants/constants.ts @@ -6,11 +6,13 @@ import { CONFIGURE_CHILD_DESCRIPTIONS, CONFIGURE_DESCRIPTION, CONNECT_FIELD_RESOLVER, - CACHE_INVALIDATE, - CACHE_POPULATE, + OPENFED_CACHE_INVALIDATE, + OPENFED_CACHE_POPULATE, COST, - ENTITY_CACHE, - REQUEST_SCOPED, + OPENFED_ENTITY_CACHE, + OPENFED_IS, + OPENFED_QUERY_CACHE, + OPENFED_REQUEST_SCOPED, DEPRECATED, EDFS_KAFKA_PUBLISH, EDFS_KAFKA_SUBSCRIBE, @@ -78,10 +80,12 @@ import { SPECIFIED_BY_DEFINITION, SUBSCRIPTION_FILTER_DEFINITION, TAG_DEFINITION, - CACHE_INVALIDATE_DEFINITION, - CACHE_POPULATE_DEFINITION, - ENTITY_CACHE_DEFINITION, - REQUEST_SCOPED_DEFINITION, + OPENFED_CACHE_INVALIDATE_DEFINITION, + OPENFED_CACHE_POPULATE_DEFINITION, + OPENFED_ENTITY_CACHE_DEFINITION, + OPENFED_IS_DEFINITION, + OPENFED_QUERY_CACHE_DEFINITION, + OPENFED_REQUEST_SCOPED_DEFINITION, } from './directive-definitions'; export const DIRECTIVE_DEFINITION_BY_NAME: ReadonlyMap = new Map< @@ -94,10 +98,12 @@ export const DIRECTIVE_DEFINITION_BY_NAME: ReadonlyMap(); - // Cached entity configs keyed by type name, populated by extractEntityCacheDirectives() from - // @openfed__entityCache. Future caching directives (@openfed__queryCache etc.) use this as a lookup - // to verify a field's return type is a cached entity. + /** + * Cached entity configs keyed by type name, populated by {@link extractEntityCacheDirectives} from + * `@openfed__entityCache`. Future caching directives (`@openfed__queryCache` etc.) use this as a lookup + * to verify a field's return type is a cached entity. + */ entityCacheConfigByTypeName = new Map(); errors = new Array(); entityDataByTypeName = new Map(); @@ -4019,13 +4052,15 @@ export class NormalizationFactory { if (parentData.kind !== Kind.OBJECT_TYPE_DEFINITION) { continue; } - const entityCacheDirectives = parentData.directivesByName.get(ENTITY_CACHE); + const entityCacheDirectives = parentData.directivesByName.get(OPENFED_ENTITY_CACHE); if (!entityCacheDirectives) { continue; } if (!this.keyFieldSetDatasByTypeName.has(typeName)) { this.errors.push( - invalidDirectiveError(ENTITY_CACHE, typeName, FIRST_ORDINAL, [entityCacheWithoutKeyErrorMessage(typeName)]), + invalidDirectiveError(OPENFED_ENTITY_CACHE, typeName, FIRST_ORDINAL, [ + entityCacheWithoutKeyErrorMessage(typeName), + ]), ); continue; } @@ -4066,8 +4101,8 @@ export class NormalizationFactory { if (config.maxAgeSeconds <= 0) { this.errors.push( - invalidDirectiveError(ENTITY_CACHE, typeName, FIRST_ORDINAL, [ - maxAgeNotPositiveIntegerErrorMessage(ENTITY_CACHE, config.maxAgeSeconds), + invalidDirectiveError(OPENFED_ENTITY_CACHE, typeName, FIRST_ORDINAL, [ + maxAgeNotPositiveIntegerErrorMessage(OPENFED_ENTITY_CACHE, config.maxAgeSeconds), ]), ); continue; @@ -4075,8 +4110,8 @@ export class NormalizationFactory { if (config.notFoundCacheTtlSeconds < 0) { this.errors.push( - invalidDirectiveError(ENTITY_CACHE, typeName, FIRST_ORDINAL, [ - negativeCacheTTLNotNonNegativeIntegerErrorMessage(ENTITY_CACHE, config.notFoundCacheTtlSeconds), + invalidDirectiveError(OPENFED_ENTITY_CACHE, typeName, FIRST_ORDINAL, [ + negativeCacheTTLNotNonNegativeIntegerErrorMessage(OPENFED_ENTITY_CACHE, config.notFoundCacheTtlSeconds), ]), ); continue; @@ -4093,11 +4128,13 @@ export class NormalizationFactory { } } - // Dispatches the per-field caching directives. Must run after extractEntityCacheDirectives() (reads - // entityCacheConfigByTypeName). All object types are walked, not just root operation types: these - // directives are declared `on FIELD_DEFINITION`, so they can be (mis)placed on any field. - // getOperationTypeNodeForRootTypeName() returns undefined for non-root types; each extractor then reports - // the misplacement via its operation-type check, rather than silently ignoring it. + /** + * Dispatches the per-field caching directives. Must run after {@link extractEntityCacheDirectives} (reads + * {@link entityCacheConfigByTypeName}). All object types are walked, not just root operation types: these + * directives are declared `on FIELD_DEFINITION`, so they can be (mis)placed on any field. + * `getOperationTypeNodeForRootTypeName()` returns undefined for non-root types; each extractor then reports + * the misplacement via its operation-type check, rather than silently ignoring it. + */ processRootFieldCacheDirectives() { for (const [parentTypeName, parentData] of this.parentDefinitionDataByTypeName) { if (parentData.kind !== Kind.OBJECT_TYPE_DEFINITION) { @@ -4112,32 +4149,39 @@ export class NormalizationFactory { for (const [fieldName, fieldData] of parentData.fieldDataByName) { const fieldCoords = `${parentTypeName}.${fieldName}`; - const hasCacheInvalidate = fieldData.directivesByName.has(CACHE_INVALIDATE); - const hasCachePopulate = fieldData.directivesByName.has(CACHE_POPULATE); + const hasQueryCache = fieldData.directivesByName.has(OPENFED_QUERY_CACHE); + const hasCacheInvalidate = fieldData.directivesByName.has(OPENFED_CACHE_INVALIDATE); + const hasCachePopulate = fieldData.directivesByName.has(OPENFED_CACHE_POPULATE); // A field cannot both populate and invalidate the cache — they are contradictory operations. if (hasCacheInvalidate && hasCachePopulate) { this.errors.push( - invalidDirectiveError(CACHE_INVALIDATE, fieldCoords, FIRST_ORDINAL, [ + invalidDirectiveError(OPENFED_CACHE_INVALIDATE, fieldCoords, FIRST_ORDINAL, [ cacheInvalidateAndPopulateMutualExclusionErrorMessage(fieldCoords), ]), ); continue; } + if (hasQueryCache) { + this.extractQueryCacheConfig(parentTypeName, configurationTypeName, fieldName, fieldData, operationType); + } if (hasCacheInvalidate) { this.extractCacheInvalidateConfig(parentTypeName, configurationTypeName, fieldName, fieldData, operationType); } if (hasCachePopulate) { this.extractCachePopulateConfig(parentTypeName, configurationTypeName, fieldName, fieldData, operationType); } + this.validateIsDirectivePlacement(fieldCoords, fieldData, hasQueryCache); } } } - // Extracts @openfed__cacheInvalidate from Mutation/Subscription fields. The return type must be a cached - // entity (@key + @openfed__entityCache). A non-Mutation/Subscription placement (including non-root fields, - // where operationType is undefined) is reported, never silently ignored. + /** + * Extracts `@openfed__cacheInvalidate` from Mutation/Subscription fields. The return type must be a cached + * entity (`@key` + `@openfed__entityCache`). A non-Mutation/Subscription placement (including non-root fields, + * where `operationType` is undefined) is reported, never silently ignored. + */ extractCacheInvalidateConfig( parentTypeName: string, configurationTypeName: string, @@ -4148,7 +4192,7 @@ export class NormalizationFactory { const fieldCoords = `${parentTypeName}.${fieldName}`; if (operationType !== OperationTypeNode.MUTATION && operationType !== OperationTypeNode.SUBSCRIPTION) { this.errors.push( - invalidDirectiveError(CACHE_INVALIDATE, fieldCoords, FIRST_ORDINAL, [ + invalidDirectiveError(OPENFED_CACHE_INVALIDATE, fieldCoords, FIRST_ORDINAL, [ cacheInvalidateOnNonMutationSubscriptionFieldErrorMessage(fieldCoords), ]), ); @@ -4157,7 +4201,7 @@ export class NormalizationFactory { const returnTypeName = getTypeNodeNamedTypeName(fieldData.node.type); if (!this.keyFieldSetDatasByTypeName.has(returnTypeName) || !this.entityCacheConfigByTypeName.has(returnTypeName)) { this.errors.push( - invalidDirectiveError(CACHE_INVALIDATE, fieldCoords, FIRST_ORDINAL, [ + invalidDirectiveError(OPENFED_CACHE_INVALIDATE, fieldCoords, FIRST_ORDINAL, [ cacheInvalidateOnNonEntityReturnTypeErrorMessage(fieldCoords, returnTypeName), ]), ); @@ -4179,9 +4223,11 @@ export class NormalizationFactory { }; } - // Extracts @openfed__cachePopulate from Mutation/Subscription fields. The return type must be a cached - // entity (@key + @openfed__entityCache). maxAge is optional — when absent the router falls back to the - // entity's @openfed__entityCache TTL; when present it must be positive. + /** + * Extracts `@openfed__cachePopulate` from Mutation/Subscription fields. The return type must be a cached + * entity (`@key` + `@openfed__entityCache`). `maxAge` is optional — when absent the router falls back to the + * entity's `@openfed__entityCache` TTL; when present it must be positive. + */ extractCachePopulateConfig( parentTypeName: string, configurationTypeName: string, @@ -4192,7 +4238,7 @@ export class NormalizationFactory { const fieldCoords = `${parentTypeName}.${fieldName}`; if (operationType !== OperationTypeNode.MUTATION && operationType !== OperationTypeNode.SUBSCRIPTION) { this.errors.push( - invalidDirectiveError(CACHE_POPULATE, fieldCoords, FIRST_ORDINAL, [ + invalidDirectiveError(OPENFED_CACHE_POPULATE, fieldCoords, FIRST_ORDINAL, [ cachePopulateOnNonMutationSubscriptionFieldErrorMessage(fieldCoords), ]), ); @@ -4201,7 +4247,7 @@ export class NormalizationFactory { const returnTypeName = getTypeNodeNamedTypeName(fieldData.node.type); if (!this.keyFieldSetDatasByTypeName.has(returnTypeName) || !this.entityCacheConfigByTypeName.has(returnTypeName)) { this.errors.push( - invalidDirectiveError(CACHE_POPULATE, fieldCoords, FIRST_ORDINAL, [ + invalidDirectiveError(OPENFED_CACHE_POPULATE, fieldCoords, FIRST_ORDINAL, [ cachePopulateOnNonEntityReturnTypeErrorMessage(fieldCoords, returnTypeName), ]), ); @@ -4210,7 +4256,9 @@ export class NormalizationFactory { // validateDirectives() has already guaranteed maxAge is an Int when present, so the generic // ConstDirectiveNode is narrowed once to the precise typed node — mirroring the other caching // directives. maxAge is the only argument and is optional. - const cachePopulateDirective = fieldData.directivesByName.get(CACHE_POPULATE)![0] as CachePopulateDirectiveNode; + const cachePopulateDirective = fieldData.directivesByName.get( + OPENFED_CACHE_POPULATE, + )![0] as CachePopulateDirectiveNode; const maxAgeArgument = cachePopulateDirective.arguments.find((arg) => arg.name.value === MAX_AGE); let maxAgeSeconds: number | undefined; @@ -4218,8 +4266,8 @@ export class NormalizationFactory { const maxAgeRaw = parseInt(maxAgeArgument.value.value, 10); if (maxAgeRaw <= 0) { this.errors.push( - invalidDirectiveError(CACHE_POPULATE, fieldCoords, FIRST_ORDINAL, [ - maxAgeNotPositiveIntegerErrorMessage(CACHE_POPULATE, maxAgeRaw), + invalidDirectiveError(OPENFED_CACHE_POPULATE, fieldCoords, FIRST_ORDINAL, [ + maxAgeNotPositiveIntegerErrorMessage(OPENFED_CACHE_POPULATE, maxAgeRaw), ]), ); return; @@ -4243,6 +4291,928 @@ export class NormalizationFactory { }; } + extractQueryCacheConfig( + parentTypeName: string, + configurationTypeName: string, + fieldName: string, + fieldData: FieldData, + operationType: OperationTypeNode | undefined, + ) { + const fieldCoords = `${parentTypeName}.${fieldName}`; + if (operationType !== OperationTypeNode.QUERY) { + this.errors.push( + invalidDirectiveError(OPENFED_QUERY_CACHE, fieldCoords, FIRST_ORDINAL, [ + queryCacheOnNonQueryFieldErrorMessage(fieldCoords), + ]), + ); + return; + } + const returnTypeName = getTypeNodeNamedTypeName(fieldData.node.type); + if (!this.keyFieldSetDatasByTypeName.has(returnTypeName)) { + this.errors.push( + invalidDirectiveError(OPENFED_QUERY_CACHE, fieldCoords, FIRST_ORDINAL, [ + queryCacheOnNonEntityReturnTypeErrorMessage(fieldCoords, returnTypeName), + ]), + ); + return; + } + // validateDirectives() has already guaranteed the argument types (Int maxAge, Boolean flags), so the + // generic ConstDirectiveNode is narrowed once to the precise typed node — mirroring + // EntityCacheDirectiveNode/RequestScopedDirectiveNode. Optional args may be absent (definition defaults + // are not materialized onto the usage AST), so each defaults here and present args override. + const queryCacheDirective = fieldData.directivesByName.get(OPENFED_QUERY_CACHE)![0] as QueryCacheDirectiveNode; + let maxAgeSeconds = 0; + let includeHeaders = false; + let shadowModeValue = false; + for (const { name, value } of queryCacheDirective.arguments) { + switch (name.value) { + case MAX_AGE: + if (value.kind === Kind.INT) maxAgeSeconds = parseInt(value.value, 10); + break; + case INCLUDE_HEADERS: + if (value.kind === Kind.BOOLEAN) includeHeaders = value.value; + break; + case SHADOW_MODE: + if (value.kind === Kind.BOOLEAN) shadowModeValue = value.value; + break; + } + } + if (maxAgeSeconds <= 0) { + this.errors.push( + invalidDirectiveError(OPENFED_QUERY_CACHE, fieldCoords, FIRST_ORDINAL, [ + maxAgeNotPositiveIntegerErrorMessage(OPENFED_QUERY_CACHE, maxAgeSeconds), + ]), + ); + return; + } + + // The return entity must have @openfed__entityCache — otherwise there is no L1/L2 backing store + // for queryCache to read from. Warn and skip extraction. Only actionable when the return type is an + // OBJECT (@openfed__entityCache is OBJECT-only), so skip the prereq check for interface/union returns. + const returnTypeData = this.parentDefinitionDataByTypeName.get(returnTypeName); + const isObjectReturn = returnTypeData?.kind === Kind.OBJECT_TYPE_DEFINITION; + if (isObjectReturn && !this.entityCacheConfigByTypeName.has(returnTypeName)) { + this.warnings.push( + queryCacheReturnEntityMissingEntityCacheWarning({ + subgraphName: this.subgraphName, + fieldCoords, + entityType: returnTypeName, + }), + ); + return; + } + + const isListReturn = isTypeNodeListType(fieldData.node.type); + const keyFieldSets = this.keyFieldSetDatasByTypeName.get(returnTypeName); + const mappings = this.buildArgumentKeyMappings(fieldData, fieldCoords, returnTypeName, keyFieldSets, isListReturn); + + const config: QueryCacheConfig = { + fieldName, + maxAgeSeconds, + includeHeaders, + shadowMode: shadowModeValue, + entityTypeName: returnTypeName, + entityKeyMappings: mappings, + }; + const configurationData = getValueOrDefault(this.configurationDataByTypeName, configurationTypeName, () => + newConfigurationData(false, configurationTypeName), + ); + configurationData.entityCaching = { + ...configurationData.entityCaching, + queryCacheConfigurations: [...(configurationData.entityCaching?.queryCacheConfigurations ?? []), config], + }; + } + + validateIsDirectivePlacement(fieldCoords: string, fieldData: FieldData, hasQueryCache: boolean) { + if (hasQueryCache) { + return; + } + for (const [argumentName, argumentData] of fieldData.argumentDataByName) { + if (!argumentData.directivesByName.has(OPENFED_IS)) { + continue; + } + this.errors.push( + invalidDirectiveError(OPENFED_IS, `${fieldCoords}(${argumentName}: ...)`, FIRST_ORDINAL, [ + isWithoutQueryCacheErrorMessage(argumentName, fieldCoords), + ]), + ); + } + } + + /** + * Extracts key field info from a key's `DocumentNode` AST. + * + * @returns An array of `{ path: "store.id", typeNode: TypeNode }` for each leaf field. + */ + extractKeyFieldInfos( + documentNode: DocumentNode, + entityTypeName: string, + ): Array<{ path: string; typeNode: TypeNode }> { + const result: Array<{ path: string; typeNode: TypeNode }> = []; + const operationDef = documentNode.definitions[0]; + if (!operationDef || !('selectionSet' in operationDef) || !operationDef.selectionSet) { + return result; + } + + const walkSelections = (selections: readonly any[], currentTypeName: string, pathPrefix: string) => { + for (const selection of selections) { + if (selection.kind !== Kind.FIELD) { + continue; + } + const fieldName = selection.name.value; + const fieldPath = pathPrefix ? `${pathPrefix}.${fieldName}` : fieldName; + + // Look up the field type on the current parent type + const parentData = this.parentDefinitionDataByTypeName.get(currentTypeName); + if (!parentData || !('fieldDataByName' in parentData)) { + continue; + } + const fieldData = parentData.fieldDataByName.get(fieldName); + if (!fieldData) { + continue; + } + + if (selection.selectionSet && selection.selectionSet.selections.length > 0) { + // Nested: recurse into the named type + const nestedTypeName = getTypeNodeNamedTypeName(fieldData.node.type); + walkSelections(selection.selectionSet.selections, nestedTypeName, fieldPath); + } else { + // Leaf field + result.push({ path: fieldPath, typeNode: fieldData.node.type }); + } + } + }; + + walkSelections(operationDef.selectionSet.selections, entityTypeName, ''); + return result; + } + + // Unwraps one layer of list: [T!]! -> T!, [[T!]!]! -> [T!]! + unwrapListType(typeNode: TypeNode): TypeNode { + if (typeNode.kind === Kind.LIST_TYPE) { + return typeNode.type; + } + if (typeNode.kind === Kind.NON_NULL_TYPE) { + const inner = this.unwrapListType(typeNode.type); + // If inner changed (was a list), return the unwrapped version without non-null wrapper + if (inner !== typeNode.type) { + return inner; + } + } + return typeNode; + } + + // Compare named types (unwrapping NonNull wrappers only, not list wrappers). + namedTypesMatch(a: TypeNode, b: TypeNode): boolean { + return getTypeNodeNamedTypeName(a) === getTypeNodeNamedTypeName(b); + } + + /** + * Structurally compare two `TypeNode`s: named type AND list/NonNull wrapping must match. + * Used at nested composite-key leaves where a printer-level mismatch (e.g., `[ID!]!` vs `ID`) + * must be rejected even though the named type (`ID`) agrees. + * + * @returns `true` if `expected` and `got` match in both named type and list/NonNull structure. + */ + typesMatchIncludingListShape(expected: TypeNode, got: TypeNode): boolean { + if (expected.kind !== got.kind) { + return false; + } + if (expected.kind === Kind.NAMED_TYPE) { + return expected.name.value === (got as typeof expected).name.value; + } + if (expected.kind === Kind.NON_NULL_TYPE || expected.kind === Kind.LIST_TYPE) { + return this.typesMatchIncludingListShape(expected.type, (got as typeof expected).type); + } + return false; + } + + // Get @openfed__is field value from an argument's directives. + getIsFieldValue(isDirective: ConstDirectiveNode): string | undefined { + if (isDirective.arguments) { + for (const arg of isDirective.arguments) { + if (arg.name.value === FIELDS && arg.value.kind === Kind.STRING) { + return (arg.value as StringValueNode).value; + } + } + } + return undefined; + } + + /** + * Validates and builds nested input object mappings against key field infos. + * + * @returns Field mappings, or `null` on error (errors already pushed). + */ + validateNestedInputObjectMapping( + argumentName: string, + fieldCoords: string, + entityTypeName: string, + keyFieldInfos: Array<{ path: string; typeNode: TypeNode }>, + normalizedFieldSet: string, + inputTypeName: string, + argumentPathPrefix: string[], + isBatch: boolean, + isNested: boolean, + entityKeyPathPrefix: string = '', + ): FieldMappingConfig[] | null { + const inputData = this.parentDefinitionDataByTypeName.get(inputTypeName); + if (!inputData || inputData.kind !== Kind.INPUT_OBJECT_TYPE_DEFINITION) { + if (isNested) { + // Mid-recursion the key demands a deeper selection (e.g. "store { id }"), but the + // input field type is scalar/unknown. Callers treat null as "error already pushed", + // so bailing silently here would discard the key without any diagnostic. + this.errors.push( + invalidDirectiveError(OPENFED_QUERY_CACHE, fieldCoords, FIRST_ORDINAL, [ + nestedKeyRequiresInputObjectErrorMessage( + argumentName, + fieldCoords, + normalizedFieldSet, + entityTypeName, + inputTypeName, + entityKeyPathPrefix, + ), + ]), + ); + } + return null; + } + + // Group key field infos by top-level field name for the current level + const topLevelGroups = new Map>(); + for (const info of keyFieldInfos) { + const dotIndex = info.path.indexOf(LITERAL_PERIOD); + const topField = dotIndex >= 0 ? info.path.substring(0, dotIndex) : info.path; + const restPath = dotIndex >= 0 ? info.path.substring(dotIndex + 1) : ''; + if (!topLevelGroups.has(topField)) { + topLevelGroups.set(topField, []); + } + topLevelGroups.get(topField)!.push({ ...info, restPath }); + } + + const fieldMappings: FieldMappingConfig[] = []; + + for (const [topField, infos] of topLevelGroups) { + const inputFieldData = inputData.inputValueDataByName.get(topField); + if (!inputFieldData) { + // Missing field in input type + if (isNested) { + this.errors.push( + invalidDirectiveError(OPENFED_QUERY_CACHE, fieldCoords, FIRST_ORDINAL, [ + nestedInputObjectMissingFieldErrorMessage( + argumentName, + fieldCoords, + normalizedFieldSet, + entityTypeName, + inputTypeName, + topField, + ), + ]), + ); + } else { + this.errors.push( + invalidDirectiveError(OPENFED_IS, `${fieldCoords}(${argumentName}: ...)`, FIRST_ORDINAL, [ + inputObjectCompositeMissingFieldErrorMessage( + argumentName, + fieldCoords, + normalizedFieldSet, + entityTypeName, + inputTypeName, + topField, + ), + ]), + ); + } + return null; + } + + const fullEntityKeyPath = entityKeyPathPrefix ? `${entityKeyPathPrefix}.${topField}` : topField; + const hasNestedFields = infos.some((i) => i.restPath !== ''); + if (hasNestedFields) { + // Recurse into nested input object + const nestedInfos = infos.map((i) => ({ path: i.restPath, typeNode: i.typeNode })); + const nestedInputTypeName = getTypeNodeNamedTypeName(inputFieldData.type); + const nestedMappings = this.validateNestedInputObjectMapping( + argumentName, + fieldCoords, + entityTypeName, + nestedInfos, + normalizedFieldSet, + nestedInputTypeName, + [...argumentPathPrefix, topField], + isBatch, + true, + fullEntityKeyPath, + ); + if (!nestedMappings) { + return null; + } + fieldMappings.push(...nestedMappings); + } else { + // Leaf: the input field must match the key field in BOTH named type and list/NonNull wrapping. + // Comparing only the named type would wrongly accept an `ID` input for a `[ID!]!` key field. + const keyTypeNode = infos[0].typeNode; + if (!this.typesMatchIncludingListShape(keyTypeNode, inputFieldData.type)) { + // Resolve the entity field's parent type for the error message + // We need to walk the full entity key path to find the parent of the leaf + const fullPath = entityKeyPathPrefix ? `${entityKeyPathPrefix}.${topField}` : topField; + const pathParts = fullPath.split(LITERAL_PERIOD); + let currentType = entityTypeName; + for (let i = 0; i < pathParts.length - 1; i++) { + const pd = this.parentDefinitionDataByTypeName.get(currentType); + if (pd && 'fieldDataByName' in pd) { + const fd = pd.fieldDataByName.get(pathParts[i]); + if (fd) { + currentType = getTypeNodeNamedTypeName(fd.node.type); + } + } + } + const entityFieldCoords = `${currentType}.${pathParts[pathParts.length - 1]}`; + if (isNested) { + this.errors.push( + invalidDirectiveError(OPENFED_QUERY_CACHE, fieldCoords, FIRST_ORDINAL, [ + nestedInputObjectTypeMismatchErrorMessage( + argumentName, + fieldCoords, + normalizedFieldSet, + entityTypeName, + inputTypeName, + topField, + printTypeNode(inputFieldData.node.type), + entityFieldCoords, + printTypeNode(keyTypeNode), + ), + ]), + ); + } else { + this.errors.push( + invalidDirectiveError(OPENFED_IS, `${fieldCoords}(${argumentName}: ...)`, FIRST_ORDINAL, [ + inputObjectCompositeTypeMismatchErrorMessage( + argumentName, + fieldCoords, + normalizedFieldSet, + entityTypeName, + inputTypeName, + topField, + printTypeNode(inputFieldData.node.type), + entityFieldCoords, + printTypeNode(keyTypeNode), + ), + ]), + ); + } + return null; + } + const mapping: FieldMappingConfig = { + entityKeyField: fullEntityKeyPath, + argumentPath: [...argumentPathPrefix, topField], + }; + if (isBatch) { + mapping.isBatch = true; + } + fieldMappings.push(mapping); + } + } + + return fieldMappings; + } + + // The main mapping builder. Evaluates each @key independently and emits all satisfiable keys. + buildArgumentKeyMappings( + fieldData: FieldData, + fieldCoords: string, + entityTypeName: string, + keyFieldSets: Map | undefined, + isListReturn: boolean, + ): EntityKeyMappingConfig[] { + if (!keyFieldSets || keyFieldSets.size === 0) { + return []; + } + + type ArgumentInfo = { + name: string; + data: InputValueData; + isFieldValue: string | undefined; // @openfed__is(fields: "...") value + isList: boolean; + typeNode: TypeNode; + }; + + const argumentInfos: ArgumentInfo[] = []; + // Mappings are derived exclusively from explicit @openfed__is directives. Argument names are + // never matched to @key fields. If no argument carries @openfed__is, the field has no mappings. + let hasExplicitIs = false; + for (const [argumentName, argumentData] of fieldData.argumentDataByName) { + const isDirectives = argumentData.directivesByName.get(OPENFED_IS); + const hasIs = !!isDirectives && isDirectives.length > 0; + hasExplicitIs = hasExplicitIs || hasIs; + + argumentInfos.push({ + name: argumentName, + data: argumentData, + isFieldValue: hasIs ? this.getIsFieldValue(isDirectives[0]) : undefined, + isList: isTypeNodeListType(argumentData.type), + typeNode: argumentData.type, + }); + } + + if (!hasExplicitIs) { + return []; + } + return this.buildExplicitMappings(fieldCoords, entityTypeName, keyFieldSets, isListReturn, argumentInfos); + } + + buildExplicitMappings( + fieldCoords: string, + entityTypeName: string, + keyFieldSets: Map, + isListReturn: boolean, + argumentInfos: Array<{ + name: string; + data: InputValueData; + isFieldValue: string | undefined; + isList: boolean; + typeNode: TypeNode; + }>, + ): EntityKeyMappingConfig[] { + // Collect all @openfed__is field values and their infos across ALL keys + const allKeyFieldInfosByKey = new Map>(); + // Build a set of ALL key field paths across all keys + const allKeyFieldPaths = new Set(); + // Also build a map from field path -> key field info for type lookups + const fieldInfoByPath = new Map(); + // Track which fields exist on the entity (not necessarily key fields) + const entityFieldNames = new Set(); + const entityParentData = this.parentDefinitionDataByTypeName.get(entityTypeName); + if (entityParentData && 'fieldDataByName' in entityParentData) { + for (const fname of entityParentData.fieldDataByName.keys()) { + entityFieldNames.add(fname); + } + } + + for (const [normalizedFieldSet, keyData] of keyFieldSets) { + const infos = this.extractKeyFieldInfos(keyData.documentNode, entityTypeName); + allKeyFieldInfosByKey.set(normalizedFieldSet, infos); + for (const info of infos) { + allKeyFieldPaths.add(info.path); + fieldInfoByPath.set(info.path, { typeNode: info.typeNode }); + } + } + + // Process each argument with @openfed__is + const explicitMappings: Array<{ + argumentName: string; + isFieldValue: string; + argumentInfo: (typeof argumentInfos)[0]; + }> = []; + const compositeMappings: EntityKeyMappingConfig[] = []; + const mappedKeyFieldToArgumentName = new Map(); + + for (const argInfo of argumentInfos) { + if (!argInfo.isFieldValue) { + continue; + } + + const isFieldValue = argInfo.isFieldValue; + + // Check if @openfed__is targets multiple fields (composite key via input object). A field-set string is + // composite whenever it contains whitespace (e.g. "id sku", "id\nsku") or a nested selection brace + // (e.g. "store{id}") — not only a literal space, or space-less/brace forms would be misread as scalars. + const isCompositeIsSpec = /[\s{]/.test(isFieldValue); + + if (isCompositeIsSpec) { + const errorCount = this.errors.length; + const mappings = this.buildCompositeIsMapping(fieldCoords, entityTypeName, keyFieldSets, isListReturn, argInfo); + if (this.errors.length > errorCount) { + return []; + } + for (const mapping of mappings) { + for (const fieldMapping of mapping.fieldMappings) { + mappedKeyFieldToArgumentName.set(fieldMapping.entityKeyField, argInfo.name); + } + } + compositeMappings.push(...mappings); + continue; + } + + // Check if the field exists on the entity at all but is not a key field + const topLevelFieldName = isFieldValue.split(LITERAL_PERIOD)[0]; + if (!allKeyFieldPaths.has(isFieldValue)) { + if (entityFieldNames.has(topLevelFieldName) && !isFieldValue.includes(LITERAL_PERIOD)) { + // Field exists but is not a key field + this.errors.push( + invalidDirectiveError(OPENFED_IS, `${fieldCoords}(${argInfo.name}: ...)`, FIRST_ORDINAL, [ + nonKeyFieldSpecErrorMessage(argInfo.name, fieldCoords, isFieldValue, entityTypeName), + ]), + ); + } else { + this.errors.push( + invalidDirectiveError(OPENFED_IS, `${fieldCoords}(${argInfo.name}: ...)`, FIRST_ORDINAL, [ + isReferencesUnknownKeyFieldErrorMessage(isFieldValue, argInfo.name, fieldCoords, entityTypeName), + ]), + ); + } + return []; + } + + // Duplicate check + if (mappedKeyFieldToArgumentName.has(isFieldValue)) { + this.errors.push( + invalidDirectiveError(OPENFED_IS, `${fieldCoords}(${argInfo.name}: ...)`, FIRST_ORDINAL, [ + duplicateKeyFieldMappingErrorMessage(fieldCoords, isFieldValue), + ]), + ); + return []; + } + + const keyFieldTypeNode = fieldInfoByPath.get(isFieldValue)!.typeNode; + const argTypeNode = argInfo.typeNode; + + // Type checking + if (isListReturn) { + // Batch mode + if (isTypeNodeListType(keyFieldTypeNode)) { + // Key field is a list - need list-of-lists argument + if (!argInfo.isList) { + // Scalar arg to list key in batch + this.errors.push( + invalidDirectiveError(OPENFED_IS, `${fieldCoords}(${argInfo.name}: ...)`, FIRST_ORDINAL, [ + batchListValuedKeyRequiresNestedListsErrorMessage( + fieldCoords, + isFieldValue, + entityTypeName, + `a scalar tag of type "${printTypeNode(argTypeNode)}"`, + ), + ]), + ); + return []; + } + // List arg but is it list-of-lists? + const unwrapped = this.unwrapListType(argTypeNode); + if (!isTypeNodeListType(unwrapped)) { + // Single list, not list of lists + this.errors.push( + invalidDirectiveError(OPENFED_IS, `${fieldCoords}(${argInfo.name}: ...)`, FIRST_ORDINAL, [ + batchListValuedKeyRequiresNestedListsErrorMessage( + fieldCoords, + isFieldValue, + entityTypeName, + `a single tag list of type "${printTypeNode(argTypeNode)}"`, + ), + ]), + ); + return []; + } + // List of lists - check inner type matches + const innerType = this.unwrapListType(unwrapped); + if (!this.namedTypesMatch(innerType, keyFieldTypeNode)) { + this.errors.push( + invalidDirectiveError(OPENFED_IS, `${fieldCoords}(${argInfo.name}: ...)`, FIRST_ORDINAL, [ + explicitTypeMismatchErrorMessage( + argInfo.name, + fieldCoords, + printTypeNode(argTypeNode), + isFieldValue, + entityTypeName, + printTypeNode(keyFieldTypeNode), + ), + ]), + ); + return []; + } + } else { + // Key field is scalar - need list argument with matching element type + if (argInfo.isList) { + // Check element type + const unwrapped = this.unwrapListType(argTypeNode); + if (!this.namedTypesMatch(unwrapped, keyFieldTypeNode)) { + this.errors.push( + invalidDirectiveError(OPENFED_IS, `${fieldCoords}(${argInfo.name}: ...)`, FIRST_ORDINAL, [ + explicitTypeMismatchErrorMessage( + argInfo.name, + fieldCoords, + printTypeNode(argTypeNode), + isFieldValue, + entityTypeName, + printTypeNode(keyFieldTypeNode), + ), + ]), + ); + return []; + } + } else { + // Scalar arg in batch mode - could still be valid as a scalar @openfed__is, we'll check later + } + } + } else { + // Singular mode + const argIsList = argInfo.isList; + const keyIsList = isTypeNodeListType(keyFieldTypeNode); + + if (argIsList && !keyIsList) { + // List arg to scalar key on singular return + this.errors.push( + invalidDirectiveError(OPENFED_IS, `${fieldCoords}(${argInfo.name}: ...)`, FIRST_ORDINAL, [ + listArgumentToScalarKeySpecErrorMessage( + argInfo.name, + fieldCoords, + printTypeNode(argTypeNode), + isFieldValue, + entityTypeName, + printTypeNode(keyFieldTypeNode), + ), + ]), + ); + return []; + } + + if (!argIsList && keyIsList) { + // Scalar arg to list key on singular return + this.errors.push( + invalidDirectiveError(OPENFED_IS, `${fieldCoords}(${argInfo.name}: ...)`, FIRST_ORDINAL, [ + scalarArgumentToListKeySpecErrorMessage( + argInfo.name, + fieldCoords, + printTypeNode(argTypeNode), + isFieldValue, + entityTypeName, + printTypeNode(keyFieldTypeNode), + ), + ]), + ); + return []; + } + + // Named type comparison (handles both scalar-scalar and list-list) + if (!this.namedTypesMatch(argTypeNode, keyFieldTypeNode)) { + this.errors.push( + invalidDirectiveError(OPENFED_IS, `${fieldCoords}(${argInfo.name}: ...)`, FIRST_ORDINAL, [ + explicitTypeMismatchErrorMessage( + argInfo.name, + fieldCoords, + printTypeNode(argTypeNode), + isFieldValue, + entityTypeName, + printTypeNode(keyFieldTypeNode), + ), + ]), + ); + return []; + } + } + + mappedKeyFieldToArgumentName.set(isFieldValue, argInfo.name); + explicitMappings.push({ argumentName: argInfo.name, isFieldValue, argumentInfo: argInfo }); + } + + if (explicitMappings.length === 0) { + return compositeMappings; + } + + // Check for batch mode: all explicit mappings on list return + if (isListReturn) { + // Check for extra non-key arguments FIRST (not @openfed__is and not a key field in any key) + const extraArgs = argumentInfos.filter((a) => !a.isFieldValue && !allKeyFieldPaths.has(a.name)); + if (extraArgs.length > 0) { + const firstExplicit = explicitMappings[0]; + this.errors.push( + invalidDirectiveError(OPENFED_IS, `${fieldCoords}(${firstExplicit.argumentName}: ...)`, FIRST_ORDINAL, [ + explicitBatchAdditionalNonKeyArgumentErrorMessage( + fieldCoords, + firstExplicit.argumentName, + firstExplicit.isFieldValue, + entityTypeName, + extraArgs[0].name, + ), + ]), + ); + return []; + } + + // Check if all explicit args are scalars + const allScalar = explicitMappings.every((m) => !m.argumentInfo.isList); + const listMappings = explicitMappings.filter((m) => m.argumentInfo.isList); + + if (allScalar) { + this.errors.push( + invalidDirectiveError(OPENFED_IS, `${fieldCoords}(${explicitMappings[0].argumentName}: ...)`, FIRST_ORDINAL, [ + explicitScalarArgumentsCannotEstablishBatchMappingErrorMessage(fieldCoords, entityTypeName), + ]), + ); + return []; + } + + if (listMappings.length > 1) { + this.errors.push( + invalidDirectiveError(OPENFED_QUERY_CACHE, fieldCoords, FIRST_ORDINAL, [ + multipleListArgumentsBatchFactoryMessage(fieldCoords, entityTypeName), + ]), + ); + return []; + } + } else { + // Singular/composite return: check for extra non-key arguments (not @openfed__is and not a key field in any key). + const globalExtraArgs = argumentInfos.filter((a) => !a.isFieldValue && !allKeyFieldPaths.has(a.name)); + if (globalExtraArgs.length > 0) { + // Find which key the explicit mappings target + let targetKeyNormalized: string | undefined; + for (const [normalizedFieldSet] of keyFieldSets) { + const keyInfos = allKeyFieldInfosByKey.get(normalizedFieldSet)!; + const keyPaths = new Set(keyInfos.map((i) => i.path)); + if (explicitMappings.every((m) => keyPaths.has(m.isFieldValue))) { + targetKeyNormalized = normalizedFieldSet; + break; + } + } + + if (explicitMappings.length === 1 && targetKeyNormalized && !targetKeyNormalized.includes(LITERAL_SPACE)) { + this.errors.push( + invalidDirectiveError( + OPENFED_IS, + `${fieldCoords}(${explicitMappings[0].argumentName}: ...)`, + FIRST_ORDINAL, + [ + explicitSingularAdditionalNonKeyArgumentErrorMessage( + fieldCoords, + explicitMappings[0].argumentName, + explicitMappings[0].isFieldValue, + entityTypeName, + globalExtraArgs[0].name, + ), + ], + ), + ); + } else { + // targetKeyNormalized may be undefined here when the explicit @openfed__is mappings span more than + // one alternative @key (no single key contains all of them). The satisfiable-keys loop below could + // still build a valid mapping per key, but the extra non-key argument makes every candidate cache key + // incomplete — so this must error rather than silently discard the mappings. + const isArgNames = explicitMappings.map((m) => m.argumentName); + const coveredKeyFields = + targetKeyNormalized ?? explicitMappings.map((m) => m.isFieldValue).join(LITERAL_SPACE); + this.errors.push( + invalidDirectiveError(OPENFED_IS, `${fieldCoords}(${isArgNames[0]}: ...)`, FIRST_ORDINAL, [ + explicitCompositeAdditionalNonKeyArgumentErrorMessage( + fieldCoords, + isArgNames[0], + isArgNames[1] || isArgNames[0], + coveredKeyFields, + entityTypeName, + globalExtraArgs[0].name, + ), + ]), + ); + } + return []; + } + } + + // Now try to find satisfiable keys + const results: EntityKeyMappingConfig[] = []; + for (const normalizedFieldSet of keyFieldSets.keys()) { + const keyInfos = allKeyFieldInfosByKey.get(normalizedFieldSet)!; + const keyPaths = new Set(keyInfos.map((i) => i.path)); + + // Check which explicit mappings target this key + const explicitForThisKey = explicitMappings.filter((m) => keyPaths.has(m.isFieldValue)); + + // Every field of this key must be covered by an explicit @openfed__is mapping. + const unmappedFields: string[] = []; + let keyFullySatisfied = true; + + for (const info of keyInfos) { + if (explicitForThisKey.some((m) => m.isFieldValue === info.path)) { + continue; + } + unmappedFields.push(info.path); + keyFullySatisfied = false; + } + + if (!keyFullySatisfied) { + // If this key has explicit mappings targeting it but is incomplete, error + if (explicitForThisKey.length > 0 && unmappedFields.length > 0) { + this.errors.push( + invalidDirectiveError( + OPENFED_IS, + `${fieldCoords}(${explicitForThisKey[0].argumentName}: ...)`, + FIRST_ORDINAL, + [ + explicitIncompleteCompositeKeyErrorMessage( + fieldCoords, + explicitForThisKey[0].argumentName, + explicitForThisKey[0].isFieldValue, + entityTypeName, + normalizedFieldSet, + unmappedFields[0], + ), + ], + ), + ); + return []; + } + continue; + } + + // Build field mappings in key field info order + const fieldMappings: FieldMappingConfig[] = []; + for (const info of keyInfos) { + const explicitMatch = explicitForThisKey.find((m) => m.isFieldValue === info.path); + if (explicitMatch) { + const mapping: FieldMappingConfig = { + entityKeyField: explicitMatch.isFieldValue, + argumentPath: [explicitMatch.argumentName], + }; + if (isListReturn && explicitMatch.argumentInfo.isList) { + mapping.isBatch = true; + } + fieldMappings.push(mapping); + } + } + + if (fieldMappings.length > 0) { + results.push({ entityTypeName, fieldMappings }); + } + } + + // Each key remains its own EntityKeyMappingConfig — the router evaluates them + // independently (OR semantics). Do NOT merge single-field results. + return [...compositeMappings, ...results]; + } + + buildCompositeIsMapping( + fieldCoords: string, + entityTypeName: string, + keyFieldSets: Map, + isListReturn: boolean, + argInfo: { + name: string; + data: InputValueData; + isFieldValue: string | undefined; + isList: boolean; + typeNode: TypeNode; + }, + ): EntityKeyMappingConfig[] { + const isFieldValue = argInfo.isFieldValue!; + const { documentNode } = safeParse('{' + isFieldValue + '}'); + const normalizedIsFieldValue = documentNode ? getNormalizedFieldSet(documentNode) : isFieldValue; + + // Find the matching key + for (const [normalizedFieldSet, keyData] of keyFieldSets) { + if (normalizedFieldSet !== normalizedIsFieldValue) { + continue; + } + + const keyInfos = this.extractKeyFieldInfos(keyData.documentNode, entityTypeName); + const argTypeName = getTypeNodeNamedTypeName(argInfo.typeNode); + + // Check if argument is an input object type + const inputData = this.parentDefinitionDataByTypeName.get(argTypeName); + if (!inputData || inputData.kind !== Kind.INPUT_OBJECT_TYPE_DEFINITION) { + // Non-input argument targeting composite key + this.errors.push( + invalidDirectiveError(OPENFED_IS, `${fieldCoords}(${argInfo.name}: ...)`, FIRST_ORDINAL, [ + nonInputArgumentCannotTargetCompositeKeyErrorMessage( + argInfo.name, + fieldCoords, + isFieldValue, + entityTypeName, + printTypeNode(argInfo.typeNode), + ), + ]), + ); + return []; + } + + const isBatch = isListReturn && argInfo.isList; + const isNestedKey = normalizedFieldSet.includes(LITERAL_OPEN_BRACE); + + const fieldMappings = this.validateNestedInputObjectMapping( + argInfo.name, + fieldCoords, + entityTypeName, + keyInfos, + normalizedFieldSet, + argTypeName, + [argInfo.name], + isBatch, + isNestedKey, + ); + + if (!fieldMappings) { + return []; + } + + return [{ entityTypeName, fieldMappings }]; + } + + // Key not found + this.errors.push( + invalidDirectiveError(OPENFED_IS, `${fieldCoords}(${argInfo.name}: ...)`, FIRST_ORDINAL, [ + isReferencesUnknownKeyFieldErrorMessage(isFieldValue, argInfo.name, fieldCoords, entityTypeName), + ]), + ); + return []; + } + extractRequestScopedFields() { // Gather fields annotated with @openfed__requestScoped across all types in this subgraph. // A field is both a reader and writer of the coordinate L1 — no receiver/provider. @@ -4263,7 +5233,7 @@ export class NormalizationFactory { } const typeName = getParentTypeName(parentData); for (const [fieldName, fieldData] of parentData.fieldDataByName) { - const directives = fieldData.directivesByName.get(REQUEST_SCOPED); + const directives = fieldData.directivesByName.get(OPENFED_REQUEST_SCOPED); if (!directives) { continue; } diff --git a/composition/src/v1/normalization/types/types.ts b/composition/src/v1/normalization/types/types.ts index 52f8e6c857..400ecd241e 100644 --- a/composition/src/v1/normalization/types/types.ts +++ b/composition/src/v1/normalization/types/types.ts @@ -169,6 +169,22 @@ export type EntityCacheArgumentNode = { readonly loc?: Location; }; +export type QueryCacheDirectiveNode = { + readonly arguments: ReadonlyArray; + readonly kind: Kind.DIRECTIVE; + readonly name: NameNode; + readonly loc?: Location; +}; + +export type QueryCacheArgumentNode = { + readonly kind: Kind.ARGUMENT; + readonly name: NameNode; + // maxAge is Int; includeHeaders/shadowMode are Boolean. + // validateDirectives() guarantees each argument's value matches its declared type. + readonly value: IntValueNode | BooleanValueNode; + readonly loc?: Location; +}; + export type CachePopulateDirectiveNode = { readonly arguments: ReadonlyArray; readonly kind: Kind.DIRECTIVE; diff --git a/composition/src/v1/normalization/utils.ts b/composition/src/v1/normalization/utils.ts index c60e3e3af1..4f3c92d6a2 100644 --- a/composition/src/v1/normalization/utils.ts +++ b/composition/src/v1/normalization/utils.ts @@ -79,6 +79,8 @@ import { CACHE_INVALIDATE_DEFINITION_DATA, CACHE_POPULATE_DEFINITION_DATA, ENTITY_CACHE_DEFINITION_DATA, + IS_DEFINITION_DATA, + QUERY_CACHE_DEFINITION_DATA, REQUEST_SCOPED_DEFINITION_DATA, } from '../../directive-definition-data/directive-definition-data'; import { @@ -88,11 +90,13 @@ import { CONFIGURE_CHILD_DESCRIPTIONS, CONFIGURE_DESCRIPTION, CONNECT_FIELD_RESOLVER, - CACHE_INVALIDATE, - CACHE_POPULATE, + OPENFED_CACHE_INVALIDATE, + OPENFED_CACHE_POPULATE, COST, - ENTITY_CACHE, - REQUEST_SCOPED, + OPENFED_ENTITY_CACHE, + OPENFED_IS, + OPENFED_QUERY_CACHE, + OPENFED_REQUEST_SCOPED, DEPRECATED, EDFS_KAFKA_PUBLISH, EDFS_KAFKA_SUBSCRIBE, @@ -481,10 +485,12 @@ export function initializeDirectiveDefinitionDatas(): Map { `), ROUTER_COMPATIBILITY_VERSION_ONE, ); - expect(errors.some((e) => e.message.includes('negativeCacheTTL must be a non-negative integer'))).toBe(true); + expect(errors).toHaveLength(1); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_ENTITY_CACHE, 'Product', FIRST_ORDINAL, [ + negativeCacheTTLNotNonNegativeIntegerErrorMessage(OPENFED_ENTITY_CACHE, -1), + ]), + ); }); }); diff --git a/composition/tests/v1/directives/query-cache.test.ts b/composition/tests/v1/directives/query-cache.test.ts new file mode 100644 index 0000000000..67afdeadba --- /dev/null +++ b/composition/tests/v1/directives/query-cache.test.ts @@ -0,0 +1,1148 @@ +import { describe, expect, test } from 'vitest'; +import { + batchListValuedKeyRequiresNestedListsErrorMessage, + duplicateKeyFieldMappingErrorMessage, + explicitBatchAdditionalNonKeyArgumentErrorMessage, + explicitCompositeAdditionalNonKeyArgumentErrorMessage, + explicitIncompleteCompositeKeyErrorMessage, + explicitScalarArgumentsCannotEstablishBatchMappingErrorMessage, + explicitSingularAdditionalNonKeyArgumentErrorMessage, + explicitTypeMismatchErrorMessage, + FIRST_ORDINAL, + inputObjectCompositeMissingFieldErrorMessage, + inputObjectCompositeTypeMismatchErrorMessage, + invalidDirectiveError, + invalidRepeatedDirectiveErrorMessage, + isReferencesUnknownKeyFieldErrorMessage, + isWithoutQueryCacheErrorMessage, + listArgumentToScalarKeySpecErrorMessage, + maxAgeNotPositiveIntegerErrorMessage, + multipleListArgumentsBatchFactoryMessage, + nestedInputObjectMissingFieldErrorMessage, + nestedInputObjectTypeMismatchErrorMessage, + nestedKeyRequiresInputObjectErrorMessage, + nonInputArgumentCannotTargetCompositeKeyErrorMessage, + nonKeyFieldSpecErrorMessage, + OPENFED_IS, + OPENFED_QUERY_CACHE, + queryCacheOnNonEntityReturnTypeErrorMessage, + queryCacheOnNonQueryFieldErrorMessage, + queryCacheReturnEntityMissingEntityCacheWarning, + ROUTER_COMPATIBILITY_VERSION_ONE, + scalarArgumentToListKeySpecErrorMessage, + undefinedRequiredArgumentsErrorMessage, +} from '../../../src'; +import { createSubgraphWithDefault, normalizeSubgraphFailure, normalizeSubgraphSuccess } from '../../utils/utils'; + +describe('@openfed__queryCache', () => { + describe('configuration extraction', () => { + test('a queryCache field returning a cached entity produces a rootFieldCacheConfiguration with defaults', () => { + const result = normalizeSubgraphSuccess( + createSubgraphWithDefault(` + type Query { + user: User @openfed__queryCache(maxAge: 60) + } + type User @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + const config = result.configurationDataByTypeName.get('Query'); + const rootFieldConfigs = config!.entityCaching?.queryCacheConfigurations; + expect(rootFieldConfigs).toBeDefined(); + expect(rootFieldConfigs).toHaveLength(1); + expect(rootFieldConfigs![0]).toMatchObject({ + fieldName: 'user', + maxAgeSeconds: 60, + includeHeaders: false, + shadowMode: false, + entityTypeName: 'User', + }); + expect(result.warnings).toHaveLength(0); + }); + + test('explicit includeHeaders and shadowMode are reflected in the extracted config', () => { + const result = normalizeSubgraphSuccess( + createSubgraphWithDefault(` + type Query { + user: User @openfed__queryCache(maxAge: 120, includeHeaders: true, shadowMode: true) + } + type User @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + const rootFieldConfigs = + result.configurationDataByTypeName.get('Query')!.entityCaching?.queryCacheConfigurations; + expect(rootFieldConfigs![0]).toMatchObject({ + fieldName: 'user', + maxAgeSeconds: 120, + includeHeaders: true, + shadowMode: true, + }); + }); + + test('@openfed__is maps an argument to the returned entity @key field', () => { + const result = normalizeSubgraphSuccess( + createSubgraphWithDefault(` + type Query { + user(id: ID! @openfed__is(fields: "id")): User @openfed__queryCache(maxAge: 60) + } + type User @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + const rootFieldConfigs = + result.configurationDataByTypeName.get('Query')!.entityCaching?.queryCacheConfigurations; + expect(rootFieldConfigs![0].entityKeyMappings).toEqual([ + { + entityTypeName: 'User', + fieldMappings: [{ entityKeyField: 'id', argumentPath: ['id'] }], + }, + ]); + }); + + test('multiple queryCache fields each produce a rootFieldCacheConfiguration', () => { + const result = normalizeSubgraphSuccess( + createSubgraphWithDefault(` + type Query { + user: User @openfed__queryCache(maxAge: 60) + product: Product @openfed__queryCache(maxAge: 30) + } + type User @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + } + type Product @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + const rootFieldConfigs = + result.configurationDataByTypeName.get('Query')!.entityCaching?.queryCacheConfigurations; + expect(rootFieldConfigs).toHaveLength(2); + expect(rootFieldConfigs!.map((c) => c.fieldName)).toEqual(['user', 'product']); + }); + + test('a composite @openfed__is via an input-object argument maps every nested key field', () => { + const result = normalizeSubgraphSuccess( + createSubgraphWithDefault(` + type Query { + product(key: ProductKey! @openfed__is(fields: "id sku")): Product @openfed__queryCache(maxAge: 60) + } + input ProductKey { + id: ID! + sku: String! + } + type Product @key(fields: "id sku") @openfed__entityCache(maxAge: 60) { + id: ID! + sku: String! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + const rootFieldConfigs = + result.configurationDataByTypeName.get('Query')!.entityCaching?.queryCacheConfigurations; + expect(rootFieldConfigs![0].entityKeyMappings).toEqual([ + { + entityTypeName: 'Product', + fieldMappings: [ + { entityKeyField: 'id', argumentPath: ['key', 'id'] }, + { entityKeyField: 'sku', argumentPath: ['key', 'sku'] }, + ], + }, + ]); + }); + + test('separate scalar arguments together cover a composite @key', () => { + const result = normalizeSubgraphSuccess( + createSubgraphWithDefault(` + type Query { + product(id: ID! @openfed__is(fields: "id"), sku: String! @openfed__is(fields: "sku")): Product @openfed__queryCache(maxAge: 60) + } + type Product @key(fields: "id sku") @openfed__entityCache(maxAge: 60) { + id: ID! + sku: String! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + const rootFieldConfigs = + result.configurationDataByTypeName.get('Query')!.entityCaching?.queryCacheConfigurations; + expect(rootFieldConfigs![0].entityKeyMappings).toEqual([ + { + entityTypeName: 'Product', + fieldMappings: [ + { entityKeyField: 'id', argumentPath: ['id'] }, + { entityKeyField: 'sku', argumentPath: ['sku'] }, + ], + }, + ]); + }); + + test('a nested @openfed__is selection maps through an input object to a nested @key field', () => { + const result = normalizeSubgraphSuccess( + createSubgraphWithDefault(` + type Query { + review(key: ReviewKey! @openfed__is(fields: "store{id}")): Review @openfed__queryCache(maxAge: 60) + } + input ReviewKey { + store: StoreKey! + } + input StoreKey { + id: ID! + } + type Review @key(fields: "store{id}") @openfed__entityCache(maxAge: 60) { + store: Store! + } + type Store @key(fields: "id") { + id: ID! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + const rootFieldConfigs = + result.configurationDataByTypeName.get('Query')!.entityCaching?.queryCacheConfigurations; + expect(rootFieldConfigs![0].entityKeyMappings).toEqual([ + { + entityTypeName: 'Review', + fieldMappings: [{ entityKeyField: 'store.id', argumentPath: ['key', 'store', 'id'] }], + }, + ]); + }); + + test('a composite @key containing a list-valued field maps through an input object', () => { + const result = normalizeSubgraphSuccess( + createSubgraphWithDefault(` + type Query { + product(key: ProductKey! @openfed__is(fields: "id tags")): Product @openfed__queryCache(maxAge: 60) + } + input ProductKey { + id: ID! + tags: [String!]! + } + type Product @key(fields: "id tags") @openfed__entityCache(maxAge: 60) { + id: ID! + tags: [String!]! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + const rootFieldConfigs = + result.configurationDataByTypeName.get('Query')!.entityCaching?.queryCacheConfigurations; + expect(rootFieldConfigs![0].entityKeyMappings).toEqual([ + { + entityTypeName: 'Product', + fieldMappings: [ + { entityKeyField: 'id', argumentPath: ['key', 'id'] }, + { entityKeyField: 'tags', argumentPath: ['key', 'tags'] }, + ], + }, + ]); + }); + + test('an entity with multiple @keys maps only the @key fully covered by arguments', () => { + const result = normalizeSubgraphSuccess( + createSubgraphWithDefault(` + type Query { + user(id: ID! @openfed__is(fields: "id")): User @openfed__queryCache(maxAge: 60) + } + type User @key(fields: "id") @key(fields: "email") @openfed__entityCache(maxAge: 60) { + id: ID! + email: String! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + const rootFieldConfigs = + result.configurationDataByTypeName.get('Query')!.entityCaching?.queryCacheConfigurations; + expect(rootFieldConfigs![0].entityKeyMappings).toEqual([ + { + entityTypeName: 'User', + fieldMappings: [{ entityKeyField: 'id', argumentPath: ['id'] }], + }, + ]); + }); + + test('a list-returning field with a list of input objects produces a batch composite mapping', () => { + const result = normalizeSubgraphSuccess( + createSubgraphWithDefault(` + type Query { + products(keys: [ProductKey!]! @openfed__is(fields: "id sku")): [Product] @openfed__queryCache(maxAge: 60) + } + input ProductKey { + id: ID! + sku: String! + } + type Product @key(fields: "id sku") @openfed__entityCache(maxAge: 60) { + id: ID! + sku: String! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + const batchConfigs = result.configurationDataByTypeName.get('Query')!.entityCaching?.queryCacheConfigurations; + expect(batchConfigs![0].entityKeyMappings).toEqual([ + { + entityTypeName: 'Product', + fieldMappings: [ + { entityKeyField: 'id', argumentPath: ['keys', 'id'], isBatch: true }, + { entityKeyField: 'sku', argumentPath: ['keys', 'sku'], isBatch: true }, + ], + }, + ]); + }); + + test('a list-returning field with a list argument produces a batch mapping', () => { + const result = normalizeSubgraphSuccess( + createSubgraphWithDefault(` + type Query { + users(ids: [ID!]! @openfed__is(fields: "id")): [User] @openfed__queryCache(maxAge: 60) + } + type User @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + const rootFieldConfigs = + result.configurationDataByTypeName.get('Query')!.entityCaching?.queryCacheConfigurations; + expect(rootFieldConfigs![0].entityKeyMappings).toEqual([ + { + entityTypeName: 'User', + fieldMappings: [{ entityKeyField: 'id', argumentPath: ['ids'], isBatch: true }], + }, + ]); + }); + + test('a batch lookup against a list-valued @key field accepts a list-of-lists argument', () => { + const result = normalizeSubgraphSuccess( + createSubgraphWithDefault(` + type Query { + products(tags: [[String!]!]! @openfed__is(fields: "tags")): [Product] @openfed__queryCache(maxAge: 60) + } + type Product @key(fields: "tags") @openfed__entityCache(maxAge: 60) { + tags: [String!]! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + const rootFieldConfigs = + result.configurationDataByTypeName.get('Query')!.entityCaching?.queryCacheConfigurations; + expect(rootFieldConfigs![0].entityKeyMappings).toEqual([ + { + entityTypeName: 'Product', + fieldMappings: [{ entityKeyField: 'tags', argumentPath: ['tags'], isBatch: true }], + }, + ]); + }); + + test('a returned entity without @openfed__entityCache skips extraction and emits a warning', () => { + const result = normalizeSubgraphSuccess( + createSubgraphWithDefault(` + type Query { + user: User @openfed__queryCache(maxAge: 60) + } + type User @key(fields: "id") { + id: ID! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + const config = result.configurationDataByTypeName.get('Query'); + expect(config!.entityCaching?.queryCacheConfigurations).toBeUndefined(); + expect(result.warnings).toStrictEqual([ + queryCacheReturnEntityMissingEntityCacheWarning({ + subgraphName: 'subgraph-default-a', + fieldCoords: 'Query.user', + entityType: 'User', + }), + ]); + }); + }); + + describe('validation', () => { + test('the required maxAge argument missing is a failure', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + user: User @openfed__queryCache + } + type User @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_QUERY_CACHE, 'Query.user', FIRST_ORDINAL, [ + undefinedRequiredArgumentsErrorMessage(OPENFED_QUERY_CACHE, ['maxAge'], []), + ]), + ); + }); + + test('a non-positive maxAge is a failure', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + user: User @openfed__queryCache(maxAge: 0) + } + type User @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_QUERY_CACHE, 'Query.user', FIRST_ORDINAL, [ + maxAgeNotPositiveIntegerErrorMessage(OPENFED_QUERY_CACHE, 0), + ]), + ); + }); + + test('@openfed__queryCache on a non-Query field is a failure', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + user: User + } + type User @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + friend: User @openfed__queryCache(maxAge: 60) + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_QUERY_CACHE, 'User.friend', FIRST_ORDINAL, [ + queryCacheOnNonQueryFieldErrorMessage('User.friend'), + ]), + ); + }); + + test('@openfed__queryCache on a field returning a non-entity type is a failure', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + user: User @openfed__queryCache(maxAge: 60) + } + type User { + id: ID! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_QUERY_CACHE, 'Query.user', FIRST_ORDINAL, [ + queryCacheOnNonEntityReturnTypeErrorMessage('Query.user', 'User'), + ]), + ); + }); + + test('the directive is not repeatable — two on the same field fails', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + user: User @openfed__queryCache(maxAge: 60) @openfed__queryCache(maxAge: 120) + } + type User @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_QUERY_CACHE, 'Query.user', FIRST_ORDINAL, [ + invalidRepeatedDirectiveErrorMessage(OPENFED_QUERY_CACHE), + ]), + ); + }); + }); +}); + +describe('@openfed__is', () => { + describe('validation', () => { + test('@openfed__is without @openfed__queryCache on the same field is a failure', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + user(id: ID! @openfed__is(fields: "id")): User + } + type User @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_IS, 'Query.user(id: ...)', FIRST_ORDINAL, [ + isWithoutQueryCacheErrorMessage('id', 'Query.user'), + ]), + ); + }); + + test('@openfed__is without @openfed__queryCache still fails when other plain arguments are present', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + user(name: String, id: ID! @openfed__is(fields: "id")): User + } + type User @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + name: String + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_IS, 'Query.user(id: ...)', FIRST_ORDINAL, [ + isWithoutQueryCacheErrorMessage('id', 'Query.user'), + ]), + ); + }); + + test('@openfed__is targeting a non-@key field is a failure', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + user(name: String! @openfed__is(fields: "name")): User @openfed__queryCache(maxAge: 60) + } + type User @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + name: String! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_IS, 'Query.user(name: ...)', FIRST_ORDINAL, [ + nonKeyFieldSpecErrorMessage('name', 'Query.user', 'name', 'User'), + ]), + ); + }); + + test('@openfed__is with an argument type that mismatches the @key field type is a failure', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + user(id: String! @openfed__is(fields: "id")): User @openfed__queryCache(maxAge: 60) + } + type User @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_IS, 'Query.user(id: ...)', FIRST_ORDINAL, [ + explicitTypeMismatchErrorMessage('id', 'Query.user', 'String!', 'id', 'User', 'ID!'), + ]), + ); + }); + + test('@openfed__is referencing a field absent from the entity is a failure', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + user(key: ID! @openfed__is(fields: "missing")): User @openfed__queryCache(maxAge: 60) + } + type User @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_IS, 'Query.user(key: ...)', FIRST_ORDINAL, [ + isReferencesUnknownKeyFieldErrorMessage('missing', 'key', 'Query.user', 'User'), + ]), + ); + }); + + test('two arguments mapping to the same @key field is a failure', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + user(a: ID! @openfed__is(fields: "id"), b: ID! @openfed__is(fields: "id")): User @openfed__queryCache(maxAge: 60) + } + type User @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_IS, 'Query.user(b: ...)', FIRST_ORDINAL, [ + duplicateKeyFieldMappingErrorMessage('Query.user', 'id'), + ]), + ); + }); + + test('an incompletely-mapped composite @key is a failure', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + product(id: ID! @openfed__is(fields: "id")): Product @openfed__queryCache(maxAge: 60) + } + type Product @key(fields: "id sku") @openfed__entityCache(maxAge: 60) { + id: ID! + sku: String! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_IS, 'Query.product(id: ...)', FIRST_ORDINAL, [ + explicitIncompleteCompositeKeyErrorMessage('Query.product', 'id', 'id', 'Product', 'id sku', 'sku'), + ]), + ); + }); + + test('an additional non-key argument alongside @openfed__is is a failure', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + user(id: ID! @openfed__is(fields: "id"), locale: String): User @openfed__queryCache(maxAge: 60) + } + type User @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_IS, 'Query.user(id: ...)', FIRST_ORDINAL, [ + explicitSingularAdditionalNonKeyArgumentErrorMessage('Query.user', 'id', 'id', 'User', 'locale'), + ]), + ); + }); + + test('a single argument covering only part of a composite @key plus an extra argument is a failure', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + product(id: ID! @openfed__is(fields: "id"), x: String): Product @openfed__queryCache(maxAge: 60) + } + type Product @key(fields: "id sku") @openfed__entityCache(maxAge: 60) { + id: ID! + sku: String! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_IS, 'Query.product(id: ...)', FIRST_ORDINAL, [ + explicitCompositeAdditionalNonKeyArgumentErrorMessage('Query.product', 'id', 'id', 'id sku', 'Product', 'x'), + ]), + ); + }); + + test('@openfed__is arguments mapping across two alternative @keys with an extra argument is a failure', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + user( + id: ID! @openfed__is(fields: "id") + email: String! @openfed__is(fields: "email") + x: String + ): User @openfed__queryCache(maxAge: 60) + } + type User @key(fields: "id") @key(fields: "email") @openfed__entityCache(maxAge: 60) { + id: ID! + email: String! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_IS, 'Query.user(id: ...)', FIRST_ORDINAL, [ + explicitCompositeAdditionalNonKeyArgumentErrorMessage('Query.user', 'id', 'email', 'id email', 'User', 'x'), + ]), + ); + }); + + test('a list argument mapping to a scalar @key field on a singular return is a failure', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + user(ids: [ID!]! @openfed__is(fields: "id")): User @openfed__queryCache(maxAge: 60) + } + type User @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_IS, 'Query.user(ids: ...)', FIRST_ORDINAL, [ + listArgumentToScalarKeySpecErrorMessage('ids', 'Query.user', '[ID!]!', 'id', 'User', 'ID!'), + ]), + ); + }); + + test('a scalar argument mapping to a list-valued @key field on a singular return is a failure', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + product(tag: String! @openfed__is(fields: "tags")): Product @openfed__queryCache(maxAge: 60) + } + type Product @key(fields: "tags") @openfed__entityCache(maxAge: 60) { + tags: [String!]! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_IS, 'Query.product(tag: ...)', FIRST_ORDINAL, [ + scalarArgumentToListKeySpecErrorMessage('tag', 'Query.product', 'String!', 'tags', 'Product', '[String!]!'), + ]), + ); + }); + + test('a non-input-object argument cannot target a composite @key', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + product(key: ID! @openfed__is(fields: "id sku")): Product @openfed__queryCache(maxAge: 60) + } + type Product @key(fields: "id sku") @openfed__entityCache(maxAge: 60) { + id: ID! + sku: String! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_IS, 'Query.product(key: ...)', FIRST_ORDINAL, [ + nonInputArgumentCannotTargetCompositeKeyErrorMessage('key', 'Query.product', 'id sku', 'Product', 'ID!'), + ]), + ); + }); + + test('a composite @openfed__is selection that matches no @key is a failure', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + product(key: ProductKey! @openfed__is(fields: "id name")): Product @openfed__queryCache(maxAge: 60) + } + input ProductKey { + id: ID! + name: String! + } + type Product @key(fields: "id sku") @openfed__entityCache(maxAge: 60) { + id: ID! + sku: String! + name: String! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_IS, 'Query.product(key: ...)', FIRST_ORDINAL, [ + isReferencesUnknownKeyFieldErrorMessage('id name', 'key', 'Query.product', 'Product'), + ]), + ); + }); + + test('a composite @key with an additional non-key argument is a failure', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + product( + id: ID! @openfed__is(fields: "id") + sku: String! @openfed__is(fields: "sku") + filter: String + ): Product @openfed__queryCache(maxAge: 60) + } + type Product @key(fields: "id sku") @openfed__entityCache(maxAge: 60) { + id: ID! + sku: String! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_IS, 'Query.product(id: ...)', FIRST_ORDINAL, [ + explicitCompositeAdditionalNonKeyArgumentErrorMessage( + 'Query.product', + 'id', + 'sku', + 'id sku', + 'Product', + 'filter', + ), + ]), + ); + }); + + describe('batch (list-returning) mappings', () => { + test('only scalar @openfed__is arguments cannot establish a batch mapping', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + users(id: ID! @openfed__is(fields: "id")): [User] @openfed__queryCache(maxAge: 60) + } + type User @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_IS, 'Query.users(id: ...)', FIRST_ORDINAL, [ + explicitScalarArgumentsCannotEstablishBatchMappingErrorMessage('Query.users', 'User'), + ]), + ); + }); + + test('a scalar argument to a list-valued @key field requires nested lists', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + products(tag: String! @openfed__is(fields: "tags")): [Product] @openfed__queryCache(maxAge: 60) + } + type Product @key(fields: "tags") @openfed__entityCache(maxAge: 60) { + tags: [String!]! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_IS, 'Query.products(tag: ...)', FIRST_ORDINAL, [ + batchListValuedKeyRequiresNestedListsErrorMessage( + 'Query.products', + 'tags', + 'Product', + 'a scalar tag of type "String!"', + ), + ]), + ); + }); + + test('a single list argument to a list-valued @key field requires nested lists', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + products(tags: [String!]! @openfed__is(fields: "tags")): [Product] @openfed__queryCache(maxAge: 60) + } + type Product @key(fields: "tags") @openfed__entityCache(maxAge: 60) { + tags: [String!]! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_IS, 'Query.products(tags: ...)', FIRST_ORDINAL, [ + batchListValuedKeyRequiresNestedListsErrorMessage( + 'Query.products', + 'tags', + 'Product', + 'a single tag list of type "[String!]!"', + ), + ]), + ); + }); + + test('a list-of-lists argument whose inner type mismatches the list @key field is a failure', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + products(tags: [[Int!]!]! @openfed__is(fields: "tags")): [Product] @openfed__queryCache(maxAge: 60) + } + type Product @key(fields: "tags") @openfed__entityCache(maxAge: 60) { + tags: [String!]! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_IS, 'Query.products(tags: ...)', FIRST_ORDINAL, [ + explicitTypeMismatchErrorMessage('tags', 'Query.products', '[[Int!]!]!', 'tags', 'Product', '[String!]!'), + ]), + ); + }); + + test('a list argument whose element type mismatches the scalar @key field is a failure', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + users(ids: [String!]! @openfed__is(fields: "id")): [User] @openfed__queryCache(maxAge: 60) + } + type User @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_IS, 'Query.users(ids: ...)', FIRST_ORDINAL, [ + explicitTypeMismatchErrorMessage('ids', 'Query.users', '[String!]!', 'id', 'User', 'ID!'), + ]), + ); + }); + + test('an additional non-key argument alongside a batch mapping is a failure', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + users(ids: [ID!]! @openfed__is(fields: "id"), filter: String): [User] @openfed__queryCache(maxAge: 60) + } + type User @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_IS, 'Query.users(ids: ...)', FIRST_ORDINAL, [ + explicitBatchAdditionalNonKeyArgumentErrorMessage('Query.users', 'ids', 'id', 'User', 'filter'), + ]), + ); + }); + + test('multiple list arguments for a batch lookup is a failure', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + products( + ids: [ID!]! @openfed__is(fields: "id") + skus: [String!]! @openfed__is(fields: "sku") + ): [Product] @openfed__queryCache(maxAge: 60) + } + type Product @key(fields: "id sku") @openfed__entityCache(maxAge: 60) { + id: ID! + sku: String! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_QUERY_CACHE, 'Query.products', FIRST_ORDINAL, [ + multipleListArgumentsBatchFactoryMessage('Query.products', 'Product'), + ]), + ); + }); + }); + + describe('input-object composite mappings', () => { + test('an input-object field whose type mismatches a flat composite @key field is a failure', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + product(key: ProductKey! @openfed__is(fields: "id sku")): Product @openfed__queryCache(maxAge: 60) + } + input ProductKey { + id: ID! + sku: Int! + } + type Product @key(fields: "id sku") @openfed__entityCache(maxAge: 60) { + id: ID! + sku: String! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_IS, 'Query.product(key: ...)', FIRST_ORDINAL, [ + inputObjectCompositeTypeMismatchErrorMessage( + 'key', + 'Query.product', + 'id sku', + 'Product', + 'ProductKey', + 'sku', + 'Int!', + 'Product.sku', + 'String!', + ), + ]), + ); + }); + + test('an input-object field whose nullability differs from the composite @key field is a failure', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + product(key: ProductKey! @openfed__is(fields: "id sku")): Product @openfed__queryCache(maxAge: 60) + } + input ProductKey { + id: ID + sku: String! + } + type Product @key(fields: "id sku") @openfed__entityCache(maxAge: 60) { + id: ID! + sku: String! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_IS, 'Query.product(key: ...)', FIRST_ORDINAL, [ + inputObjectCompositeTypeMismatchErrorMessage( + 'key', + 'Query.product', + 'id sku', + 'Product', + 'ProductKey', + 'id', + 'ID', + 'Product.id', + 'ID!', + ), + ]), + ); + }); + + test('an input object missing a flat composite @key field is a failure', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + product(key: ProductKey! @openfed__is(fields: "id sku")): Product @openfed__queryCache(maxAge: 60) + } + input ProductKey { + id: ID! + } + type Product @key(fields: "id sku") @openfed__entityCache(maxAge: 60) { + id: ID! + sku: String! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_IS, 'Query.product(key: ...)', FIRST_ORDINAL, [ + inputObjectCompositeMissingFieldErrorMessage( + 'key', + 'Query.product', + 'id sku', + 'Product', + 'ProductKey', + 'sku', + ), + ]), + ); + }); + + test('a nested @key selection backed by a scalar input field is a failure', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + review(key: ReviewKey! @openfed__is(fields: "store{id}")): Review @openfed__queryCache(maxAge: 60) + } + input ReviewKey { + store: ID! + } + type Review @key(fields: "store{id}") @openfed__entityCache(maxAge: 60) { + store: Store! + } + type Store @key(fields: "id") { + id: ID! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_QUERY_CACHE, 'Query.review', FIRST_ORDINAL, [ + nestedKeyRequiresInputObjectErrorMessage('key', 'Query.review', 'store { id }', 'Review', 'ID', 'store'), + ]), + ); + }); + + test('a nested input object missing the nested @key field is a failure', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + review(key: ReviewKey! @openfed__is(fields: "store{id}")): Review @openfed__queryCache(maxAge: 60) + } + input ReviewKey { + store: StoreKey! + } + input StoreKey { + other: String! + } + type Review @key(fields: "store{id}") @openfed__entityCache(maxAge: 60) { + store: Store! + } + type Store @key(fields: "id") { + id: ID! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_QUERY_CACHE, 'Query.review', FIRST_ORDINAL, [ + nestedInputObjectMissingFieldErrorMessage( + 'key', + 'Query.review', + 'store { id }', + 'Review', + 'StoreKey', + 'id', + ), + ]), + ); + }); + + test('a nested input object field whose type mismatches the nested @key field is a failure', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + review(key: ReviewKey! @openfed__is(fields: "store{id}")): Review @openfed__queryCache(maxAge: 60) + } + input ReviewKey { + store: StoreKey! + } + input StoreKey { + id: Int! + } + type Review @key(fields: "store{id}") @openfed__entityCache(maxAge: 60) { + store: Store! + } + type Store @key(fields: "id") { + id: ID! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_QUERY_CACHE, 'Query.review', FIRST_ORDINAL, [ + nestedInputObjectTypeMismatchErrorMessage( + 'key', + 'Query.review', + 'store { id }', + 'Review', + 'StoreKey', + 'id', + 'Int!', + 'Store.id', + 'ID!', + ), + ]), + ); + }); + }); + + test('the directive is not repeatable — two on the same argument fails', () => { + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefault(` + type Query { + user(id: ID! @openfed__is(fields: "id") @openfed__is(fields: "id")): User @openfed__queryCache(maxAge: 60) + } + type User @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_IS, 'Query.user(id: ...)', FIRST_ORDINAL, [ + invalidRepeatedDirectiveErrorMessage(OPENFED_IS), + ]), + ); + }); + }); +}); diff --git a/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go b/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go index b2f143f74b..a584e43b24 100644 --- a/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go +++ b/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go @@ -1236,8 +1236,10 @@ type EntityCaching struct { CachePopulateConfigurations []*CachePopulateConfiguration `protobuf:"bytes,3,rep,name=cache_populate_configurations,json=cachePopulateConfigurations,proto3" json:"cache_populate_configurations,omitempty"` // Request-scoped field configurations (from @openfed__requestScoped directive) RequestScopedFields []*RequestScopedFieldConfiguration `protobuf:"bytes,4,rep,name=request_scoped_fields,json=requestScopedFields,proto3" json:"request_scoped_fields,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // Per-Query-field cache configurations (from @openfed__queryCache / @openfed__is directives) + QueryCacheConfigurations []*QueryCacheConfiguration `protobuf:"bytes,5,rep,name=query_cache_configurations,json=queryCacheConfigurations,proto3" json:"query_cache_configurations,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *EntityCaching) Reset() { @@ -1298,6 +1300,13 @@ func (x *EntityCaching) GetRequestScopedFields() []*RequestScopedFieldConfigurat return nil } +func (x *EntityCaching) GetQueryCacheConfigurations() []*QueryCacheConfiguration { + if x != nil { + return x.QueryCacheConfigurations + } + return nil +} + // Per-entity declaration for @openfed__entityCache. Marks a @key entity type as cacheable so the // router can store/serve resolved entities from an external store (e.g. Redis). type EntityCacheConfiguration struct { @@ -1588,6 +1597,206 @@ func (x *RequestScopedFieldConfiguration) GetL1Key() string { return "" } +// Per-Query-field declaration for @openfed__queryCache. Tells the router a query field can serve +// its returned entity from the entity cache, with argument-to-@key mappings for cache-key construction. +type QueryCacheConfiguration struct { + state protoimpl.MessageState `protogen:"open.v1"` + FieldName string `protobuf:"bytes,1,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` + // TTL for cached root-field responses. Required: composition rejects values + // <= 0. Interpreted in seconds. + MaxAgeSeconds int64 `protobuf:"varint,2,opt,name=max_age_seconds,json=maxAgeSeconds,proto3" json:"max_age_seconds,omitempty"` + IncludeHeaders bool `protobuf:"varint,3,opt,name=include_headers,json=includeHeaders,proto3" json:"include_headers,omitempty"` + ShadowMode bool `protobuf:"varint,4,opt,name=shadow_mode,json=shadowMode,proto3" json:"shadow_mode,omitempty"` + EntityTypeName string `protobuf:"bytes,5,opt,name=entity_type_name,json=entityTypeName,proto3" json:"entity_type_name,omitempty"` + EntityKeyMappings []*EntityKeyMapping `protobuf:"bytes,6,rep,name=entity_key_mappings,json=entityKeyMappings,proto3" json:"entity_key_mappings,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *QueryCacheConfiguration) Reset() { + *x = QueryCacheConfiguration{} + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *QueryCacheConfiguration) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryCacheConfiguration) ProtoMessage() {} + +func (x *QueryCacheConfiguration) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use QueryCacheConfiguration.ProtoReflect.Descriptor instead. +func (*QueryCacheConfiguration) Descriptor() ([]byte, []int) { + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{17} +} + +func (x *QueryCacheConfiguration) GetFieldName() string { + if x != nil { + return x.FieldName + } + return "" +} + +func (x *QueryCacheConfiguration) GetMaxAgeSeconds() int64 { + if x != nil { + return x.MaxAgeSeconds + } + return 0 +} + +func (x *QueryCacheConfiguration) GetIncludeHeaders() bool { + if x != nil { + return x.IncludeHeaders + } + return false +} + +func (x *QueryCacheConfiguration) GetShadowMode() bool { + if x != nil { + return x.ShadowMode + } + return false +} + +func (x *QueryCacheConfiguration) GetEntityTypeName() string { + if x != nil { + return x.EntityTypeName + } + return "" +} + +func (x *QueryCacheConfiguration) GetEntityKeyMappings() []*EntityKeyMapping { + if x != nil { + return x.EntityKeyMappings + } + return nil +} + +type EntityKeyMapping struct { + state protoimpl.MessageState `protogen:"open.v1"` + EntityTypeName string `protobuf:"bytes,1,opt,name=entity_type_name,json=entityTypeName,proto3" json:"entity_type_name,omitempty"` + FieldMappings []*EntityCacheFieldMapping `protobuf:"bytes,2,rep,name=field_mappings,json=fieldMappings,proto3" json:"field_mappings,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *EntityKeyMapping) Reset() { + *x = EntityKeyMapping{} + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *EntityKeyMapping) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EntityKeyMapping) ProtoMessage() {} + +func (x *EntityKeyMapping) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EntityKeyMapping.ProtoReflect.Descriptor instead. +func (*EntityKeyMapping) Descriptor() ([]byte, []int) { + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{18} +} + +func (x *EntityKeyMapping) GetEntityTypeName() string { + if x != nil { + return x.EntityTypeName + } + return "" +} + +func (x *EntityKeyMapping) GetFieldMappings() []*EntityCacheFieldMapping { + if x != nil { + return x.FieldMappings + } + return nil +} + +type EntityCacheFieldMapping struct { + state protoimpl.MessageState `protogen:"open.v1"` + EntityKeyField string `protobuf:"bytes,1,opt,name=entity_key_field,json=entityKeyField,proto3" json:"entity_key_field,omitempty"` + ArgumentPath []string `protobuf:"bytes,2,rep,name=argument_path,json=argumentPath,proto3" json:"argument_path,omitempty"` + IsBatch bool `protobuf:"varint,3,opt,name=is_batch,json=isBatch,proto3" json:"is_batch,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *EntityCacheFieldMapping) Reset() { + *x = EntityCacheFieldMapping{} + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *EntityCacheFieldMapping) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EntityCacheFieldMapping) ProtoMessage() {} + +func (x *EntityCacheFieldMapping) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EntityCacheFieldMapping.ProtoReflect.Descriptor instead. +func (*EntityCacheFieldMapping) Descriptor() ([]byte, []int) { + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{19} +} + +func (x *EntityCacheFieldMapping) GetEntityKeyField() string { + if x != nil { + return x.EntityKeyField + } + return "" +} + +func (x *EntityCacheFieldMapping) GetArgumentPath() []string { + if x != nil { + return x.ArgumentPath + } + return nil +} + +func (x *EntityCacheFieldMapping) GetIsBatch() bool { + if x != nil { + return x.IsBatch + } + return false +} + type CostConfiguration struct { state protoimpl.MessageState `protogen:"open.v1"` FieldWeights []*FieldWeightConfiguration `protobuf:"bytes,1,rep,name=field_weights,json=fieldWeights,proto3" json:"field_weights,omitempty"` @@ -1600,7 +1809,7 @@ type CostConfiguration struct { func (x *CostConfiguration) Reset() { *x = CostConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1612,7 +1821,7 @@ func (x *CostConfiguration) String() string { func (*CostConfiguration) ProtoMessage() {} func (x *CostConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1625,7 +1834,7 @@ func (x *CostConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use CostConfiguration.ProtoReflect.Descriptor instead. func (*CostConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{17} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{20} } func (x *CostConfiguration) GetFieldWeights() []*FieldWeightConfiguration { @@ -1669,7 +1878,7 @@ type FieldWeightConfiguration struct { func (x *FieldWeightConfiguration) Reset() { *x = FieldWeightConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1681,7 +1890,7 @@ func (x *FieldWeightConfiguration) String() string { func (*FieldWeightConfiguration) ProtoMessage() {} func (x *FieldWeightConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1694,7 +1903,7 @@ func (x *FieldWeightConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldWeightConfiguration.ProtoReflect.Descriptor instead. func (*FieldWeightConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{18} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{21} } func (x *FieldWeightConfiguration) GetTypeName() string { @@ -1746,7 +1955,7 @@ type FieldListSizeConfiguration struct { func (x *FieldListSizeConfiguration) Reset() { *x = FieldListSizeConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1758,7 +1967,7 @@ func (x *FieldListSizeConfiguration) String() string { func (*FieldListSizeConfiguration) ProtoMessage() {} func (x *FieldListSizeConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1771,7 +1980,7 @@ func (x *FieldListSizeConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldListSizeConfiguration.ProtoReflect.Descriptor instead. func (*FieldListSizeConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{19} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{22} } func (x *FieldListSizeConfiguration) GetTypeName() string { @@ -1826,7 +2035,7 @@ type ArgumentConfiguration struct { func (x *ArgumentConfiguration) Reset() { *x = ArgumentConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1838,7 +2047,7 @@ func (x *ArgumentConfiguration) String() string { func (*ArgumentConfiguration) ProtoMessage() {} func (x *ArgumentConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1851,7 +2060,7 @@ func (x *ArgumentConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use ArgumentConfiguration.ProtoReflect.Descriptor instead. func (*ArgumentConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{20} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{23} } func (x *ArgumentConfiguration) GetName() string { @@ -1877,7 +2086,7 @@ type Scopes struct { func (x *Scopes) Reset() { *x = Scopes{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1889,7 +2098,7 @@ func (x *Scopes) String() string { func (*Scopes) ProtoMessage() {} func (x *Scopes) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1902,7 +2111,7 @@ func (x *Scopes) ProtoReflect() protoreflect.Message { // Deprecated: Use Scopes.ProtoReflect.Descriptor instead. func (*Scopes) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{21} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{24} } func (x *Scopes) GetRequiredAndScopes() []string { @@ -1923,7 +2132,7 @@ type AuthorizationConfiguration struct { func (x *AuthorizationConfiguration) Reset() { *x = AuthorizationConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1935,7 +2144,7 @@ func (x *AuthorizationConfiguration) String() string { func (*AuthorizationConfiguration) ProtoMessage() {} func (x *AuthorizationConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1948,7 +2157,7 @@ func (x *AuthorizationConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use AuthorizationConfiguration.ProtoReflect.Descriptor instead. func (*AuthorizationConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{22} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{25} } func (x *AuthorizationConfiguration) GetRequiresAuthentication() bool { @@ -1985,7 +2194,7 @@ type FieldConfiguration struct { func (x *FieldConfiguration) Reset() { *x = FieldConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1997,7 +2206,7 @@ func (x *FieldConfiguration) String() string { func (*FieldConfiguration) ProtoMessage() {} func (x *FieldConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2010,7 +2219,7 @@ func (x *FieldConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldConfiguration.ProtoReflect.Descriptor instead. func (*FieldConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{23} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{26} } func (x *FieldConfiguration) GetTypeName() string { @@ -2058,7 +2267,7 @@ type TypeConfiguration struct { func (x *TypeConfiguration) Reset() { *x = TypeConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2070,7 +2279,7 @@ func (x *TypeConfiguration) String() string { func (*TypeConfiguration) ProtoMessage() {} func (x *TypeConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2083,7 +2292,7 @@ func (x *TypeConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeConfiguration.ProtoReflect.Descriptor instead. func (*TypeConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{24} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{27} } func (x *TypeConfiguration) GetTypeName() string { @@ -2112,7 +2321,7 @@ type TypeField struct { func (x *TypeField) Reset() { *x = TypeField{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2124,7 +2333,7 @@ func (x *TypeField) String() string { func (*TypeField) ProtoMessage() {} func (x *TypeField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2137,7 +2346,7 @@ func (x *TypeField) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeField.ProtoReflect.Descriptor instead. func (*TypeField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{25} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{28} } func (x *TypeField) GetTypeName() string { @@ -2178,7 +2387,7 @@ type FieldCoordinates struct { func (x *FieldCoordinates) Reset() { *x = FieldCoordinates{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2190,7 +2399,7 @@ func (x *FieldCoordinates) String() string { func (*FieldCoordinates) ProtoMessage() {} func (x *FieldCoordinates) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2203,7 +2412,7 @@ func (x *FieldCoordinates) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldCoordinates.ProtoReflect.Descriptor instead. func (*FieldCoordinates) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{26} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{29} } func (x *FieldCoordinates) GetFieldName() string { @@ -2230,7 +2439,7 @@ type FieldSetCondition struct { func (x *FieldSetCondition) Reset() { *x = FieldSetCondition{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2242,7 +2451,7 @@ func (x *FieldSetCondition) String() string { func (*FieldSetCondition) ProtoMessage() {} func (x *FieldSetCondition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2255,7 +2464,7 @@ func (x *FieldSetCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldSetCondition.ProtoReflect.Descriptor instead. func (*FieldSetCondition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{27} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{30} } func (x *FieldSetCondition) GetFieldCoordinatesPath() []*FieldCoordinates { @@ -2285,7 +2494,7 @@ type RequiredField struct { func (x *RequiredField) Reset() { *x = RequiredField{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2297,7 +2506,7 @@ func (x *RequiredField) String() string { func (*RequiredField) ProtoMessage() {} func (x *RequiredField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2310,7 +2519,7 @@ func (x *RequiredField) ProtoReflect() protoreflect.Message { // Deprecated: Use RequiredField.ProtoReflect.Descriptor instead. func (*RequiredField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{28} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{31} } func (x *RequiredField) GetTypeName() string { @@ -2358,7 +2567,7 @@ type EntityInterfaceConfiguration struct { func (x *EntityInterfaceConfiguration) Reset() { *x = EntityInterfaceConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2370,7 +2579,7 @@ func (x *EntityInterfaceConfiguration) String() string { func (*EntityInterfaceConfiguration) ProtoMessage() {} func (x *EntityInterfaceConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2383,7 +2592,7 @@ func (x *EntityInterfaceConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use EntityInterfaceConfiguration.ProtoReflect.Descriptor instead. func (*EntityInterfaceConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{29} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{32} } func (x *EntityInterfaceConfiguration) GetInterfaceTypeName() string { @@ -2426,7 +2635,7 @@ type FetchConfiguration struct { func (x *FetchConfiguration) Reset() { *x = FetchConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2438,7 +2647,7 @@ func (x *FetchConfiguration) String() string { func (*FetchConfiguration) ProtoMessage() {} func (x *FetchConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2451,7 +2660,7 @@ func (x *FetchConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FetchConfiguration.ProtoReflect.Descriptor instead. func (*FetchConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{30} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{33} } func (x *FetchConfiguration) GetUrl() *ConfigurationVariable { @@ -2535,7 +2744,7 @@ type StatusCodeTypeMapping struct { func (x *StatusCodeTypeMapping) Reset() { *x = StatusCodeTypeMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2547,7 +2756,7 @@ func (x *StatusCodeTypeMapping) String() string { func (*StatusCodeTypeMapping) ProtoMessage() {} func (x *StatusCodeTypeMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2560,7 +2769,7 @@ func (x *StatusCodeTypeMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use StatusCodeTypeMapping.ProtoReflect.Descriptor instead. func (*StatusCodeTypeMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{31} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{34} } func (x *StatusCodeTypeMapping) GetStatusCode() int64 { @@ -2598,7 +2807,7 @@ type DataSourceCustom_GraphQL struct { func (x *DataSourceCustom_GraphQL) Reset() { *x = DataSourceCustom_GraphQL{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2610,7 +2819,7 @@ func (x *DataSourceCustom_GraphQL) String() string { func (*DataSourceCustom_GraphQL) ProtoMessage() {} func (x *DataSourceCustom_GraphQL) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2623,7 +2832,7 @@ func (x *DataSourceCustom_GraphQL) ProtoReflect() protoreflect.Message { // Deprecated: Use DataSourceCustom_GraphQL.ProtoReflect.Descriptor instead. func (*DataSourceCustom_GraphQL) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{32} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{35} } func (x *DataSourceCustom_GraphQL) GetFetch() *FetchConfiguration { @@ -2679,7 +2888,7 @@ type GRPCConfiguration struct { func (x *GRPCConfiguration) Reset() { *x = GRPCConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2691,7 +2900,7 @@ func (x *GRPCConfiguration) String() string { func (*GRPCConfiguration) ProtoMessage() {} func (x *GRPCConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2704,7 +2913,7 @@ func (x *GRPCConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCConfiguration.ProtoReflect.Descriptor instead. func (*GRPCConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{33} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{36} } func (x *GRPCConfiguration) GetMapping() *GRPCMapping { @@ -2738,7 +2947,7 @@ type ImageReference struct { func (x *ImageReference) Reset() { *x = ImageReference{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2750,7 +2959,7 @@ func (x *ImageReference) String() string { func (*ImageReference) ProtoMessage() {} func (x *ImageReference) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2763,7 +2972,7 @@ func (x *ImageReference) ProtoReflect() protoreflect.Message { // Deprecated: Use ImageReference.ProtoReflect.Descriptor instead. func (*ImageReference) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{34} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{37} } func (x *ImageReference) GetRepository() string { @@ -2793,7 +3002,7 @@ type PluginConfiguration struct { func (x *PluginConfiguration) Reset() { *x = PluginConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2805,7 +3014,7 @@ func (x *PluginConfiguration) String() string { func (*PluginConfiguration) ProtoMessage() {} func (x *PluginConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2818,7 +3027,7 @@ func (x *PluginConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use PluginConfiguration.ProtoReflect.Descriptor instead. func (*PluginConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{35} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{38} } func (x *PluginConfiguration) GetName() string { @@ -2852,7 +3061,7 @@ type SSLConfiguration struct { func (x *SSLConfiguration) Reset() { *x = SSLConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2864,7 +3073,7 @@ func (x *SSLConfiguration) String() string { func (*SSLConfiguration) ProtoMessage() {} func (x *SSLConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2877,7 +3086,7 @@ func (x *SSLConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use SSLConfiguration.ProtoReflect.Descriptor instead. func (*SSLConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{36} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{39} } func (x *SSLConfiguration) GetEnabled() bool { @@ -2910,7 +3119,7 @@ type GRPCMapping struct { func (x *GRPCMapping) Reset() { *x = GRPCMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2922,7 +3131,7 @@ func (x *GRPCMapping) String() string { func (*GRPCMapping) ProtoMessage() {} func (x *GRPCMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2935,7 +3144,7 @@ func (x *GRPCMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCMapping.ProtoReflect.Descriptor instead. func (*GRPCMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{37} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{40} } func (x *GRPCMapping) GetVersion() int32 { @@ -3006,7 +3215,7 @@ type LookupMapping struct { func (x *LookupMapping) Reset() { *x = LookupMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3018,7 +3227,7 @@ func (x *LookupMapping) String() string { func (*LookupMapping) ProtoMessage() {} func (x *LookupMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3031,7 +3240,7 @@ func (x *LookupMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use LookupMapping.ProtoReflect.Descriptor instead. func (*LookupMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{38} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{41} } func (x *LookupMapping) GetType() LookupType { @@ -3082,7 +3291,7 @@ type LookupFieldMapping struct { func (x *LookupFieldMapping) Reset() { *x = LookupFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3094,7 +3303,7 @@ func (x *LookupFieldMapping) String() string { func (*LookupFieldMapping) ProtoMessage() {} func (x *LookupFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3107,7 +3316,7 @@ func (x *LookupFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use LookupFieldMapping.ProtoReflect.Descriptor instead. func (*LookupFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{39} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{42} } func (x *LookupFieldMapping) GetType() string { @@ -3143,7 +3352,7 @@ type OperationMapping struct { func (x *OperationMapping) Reset() { *x = OperationMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3155,7 +3364,7 @@ func (x *OperationMapping) String() string { func (*OperationMapping) ProtoMessage() {} func (x *OperationMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3168,7 +3377,7 @@ func (x *OperationMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use OperationMapping.ProtoReflect.Descriptor instead. func (*OperationMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{40} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{43} } func (x *OperationMapping) GetType() OperationType { @@ -3229,7 +3438,7 @@ type EntityMapping struct { func (x *EntityMapping) Reset() { *x = EntityMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3241,7 +3450,7 @@ func (x *EntityMapping) String() string { func (*EntityMapping) ProtoMessage() {} func (x *EntityMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3254,7 +3463,7 @@ func (x *EntityMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EntityMapping.ProtoReflect.Descriptor instead. func (*EntityMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{41} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{44} } func (x *EntityMapping) GetTypeName() string { @@ -3322,7 +3531,7 @@ type RequiredFieldMapping struct { func (x *RequiredFieldMapping) Reset() { *x = RequiredFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3334,7 +3543,7 @@ func (x *RequiredFieldMapping) String() string { func (*RequiredFieldMapping) ProtoMessage() {} func (x *RequiredFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3347,7 +3556,7 @@ func (x *RequiredFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use RequiredFieldMapping.ProtoReflect.Descriptor instead. func (*RequiredFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{42} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{45} } func (x *RequiredFieldMapping) GetFieldMapping() *FieldMapping { @@ -3391,7 +3600,7 @@ type TypeFieldMapping struct { func (x *TypeFieldMapping) Reset() { *x = TypeFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3403,7 +3612,7 @@ func (x *TypeFieldMapping) String() string { func (*TypeFieldMapping) ProtoMessage() {} func (x *TypeFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3416,7 +3625,7 @@ func (x *TypeFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeFieldMapping.ProtoReflect.Descriptor instead. func (*TypeFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{43} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{46} } func (x *TypeFieldMapping) GetType() string { @@ -3448,7 +3657,7 @@ type FieldMapping struct { func (x *FieldMapping) Reset() { *x = FieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3460,7 +3669,7 @@ func (x *FieldMapping) String() string { func (*FieldMapping) ProtoMessage() {} func (x *FieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3473,7 +3682,7 @@ func (x *FieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldMapping.ProtoReflect.Descriptor instead. func (*FieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{44} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{47} } func (x *FieldMapping) GetOriginal() string { @@ -3510,7 +3719,7 @@ type ArgumentMapping struct { func (x *ArgumentMapping) Reset() { *x = ArgumentMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3522,7 +3731,7 @@ func (x *ArgumentMapping) String() string { func (*ArgumentMapping) ProtoMessage() {} func (x *ArgumentMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3535,7 +3744,7 @@ func (x *ArgumentMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use ArgumentMapping.ProtoReflect.Descriptor instead. func (*ArgumentMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{45} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{48} } func (x *ArgumentMapping) GetOriginal() string { @@ -3562,7 +3771,7 @@ type EnumMapping struct { func (x *EnumMapping) Reset() { *x = EnumMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3574,7 +3783,7 @@ func (x *EnumMapping) String() string { func (*EnumMapping) ProtoMessage() {} func (x *EnumMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3587,7 +3796,7 @@ func (x *EnumMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EnumMapping.ProtoReflect.Descriptor instead. func (*EnumMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{46} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{49} } func (x *EnumMapping) GetType() string { @@ -3614,7 +3823,7 @@ type EnumValueMapping struct { func (x *EnumValueMapping) Reset() { *x = EnumValueMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3626,7 +3835,7 @@ func (x *EnumValueMapping) String() string { func (*EnumValueMapping) ProtoMessage() {} func (x *EnumValueMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3639,7 +3848,7 @@ func (x *EnumValueMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EnumValueMapping.ProtoReflect.Descriptor instead. func (*EnumValueMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{47} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{50} } func (x *EnumValueMapping) GetOriginal() string { @@ -3667,7 +3876,7 @@ type NatsStreamConfiguration struct { func (x *NatsStreamConfiguration) Reset() { *x = NatsStreamConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3679,7 +3888,7 @@ func (x *NatsStreamConfiguration) String() string { func (*NatsStreamConfiguration) ProtoMessage() {} func (x *NatsStreamConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3692,7 +3901,7 @@ func (x *NatsStreamConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use NatsStreamConfiguration.ProtoReflect.Descriptor instead. func (*NatsStreamConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{48} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{51} } func (x *NatsStreamConfiguration) GetConsumerName() string { @@ -3727,7 +3936,7 @@ type NatsEventConfiguration struct { func (x *NatsEventConfiguration) Reset() { *x = NatsEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3739,7 +3948,7 @@ func (x *NatsEventConfiguration) String() string { func (*NatsEventConfiguration) ProtoMessage() {} func (x *NatsEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3752,7 +3961,7 @@ func (x *NatsEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use NatsEventConfiguration.ProtoReflect.Descriptor instead. func (*NatsEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{49} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{52} } func (x *NatsEventConfiguration) GetEngineEventConfiguration() *EngineEventConfiguration { @@ -3786,7 +3995,7 @@ type KafkaEventConfiguration struct { func (x *KafkaEventConfiguration) Reset() { *x = KafkaEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3798,7 +4007,7 @@ func (x *KafkaEventConfiguration) String() string { func (*KafkaEventConfiguration) ProtoMessage() {} func (x *KafkaEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3811,7 +4020,7 @@ func (x *KafkaEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use KafkaEventConfiguration.ProtoReflect.Descriptor instead. func (*KafkaEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{50} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{53} } func (x *KafkaEventConfiguration) GetEngineEventConfiguration() *EngineEventConfiguration { @@ -3838,7 +4047,7 @@ type RedisEventConfiguration struct { func (x *RedisEventConfiguration) Reset() { *x = RedisEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3850,7 +4059,7 @@ func (x *RedisEventConfiguration) String() string { func (*RedisEventConfiguration) ProtoMessage() {} func (x *RedisEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3863,7 +4072,7 @@ func (x *RedisEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use RedisEventConfiguration.ProtoReflect.Descriptor instead. func (*RedisEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{51} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{54} } func (x *RedisEventConfiguration) GetEngineEventConfiguration() *EngineEventConfiguration { @@ -3892,7 +4101,7 @@ type EngineEventConfiguration struct { func (x *EngineEventConfiguration) Reset() { *x = EngineEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3904,7 +4113,7 @@ func (x *EngineEventConfiguration) String() string { func (*EngineEventConfiguration) ProtoMessage() {} func (x *EngineEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3917,7 +4126,7 @@ func (x *EngineEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use EngineEventConfiguration.ProtoReflect.Descriptor instead. func (*EngineEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{52} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{55} } func (x *EngineEventConfiguration) GetProviderId() string { @@ -3959,7 +4168,7 @@ type DataSourceCustomEvents struct { func (x *DataSourceCustomEvents) Reset() { *x = DataSourceCustomEvents{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3971,7 +4180,7 @@ func (x *DataSourceCustomEvents) String() string { func (*DataSourceCustomEvents) ProtoMessage() {} func (x *DataSourceCustomEvents) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3984,7 +4193,7 @@ func (x *DataSourceCustomEvents) ProtoReflect() protoreflect.Message { // Deprecated: Use DataSourceCustomEvents.ProtoReflect.Descriptor instead. func (*DataSourceCustomEvents) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{53} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{56} } func (x *DataSourceCustomEvents) GetNats() []*NatsEventConfiguration { @@ -4017,7 +4226,7 @@ type DataSourceCustom_Static struct { func (x *DataSourceCustom_Static) Reset() { *x = DataSourceCustom_Static{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4029,7 +4238,7 @@ func (x *DataSourceCustom_Static) String() string { func (*DataSourceCustom_Static) ProtoMessage() {} func (x *DataSourceCustom_Static) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4042,7 +4251,7 @@ func (x *DataSourceCustom_Static) ProtoReflect() protoreflect.Message { // Deprecated: Use DataSourceCustom_Static.ProtoReflect.Descriptor instead. func (*DataSourceCustom_Static) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{54} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{57} } func (x *DataSourceCustom_Static) GetData() *ConfigurationVariable { @@ -4065,7 +4274,7 @@ type ConfigurationVariable struct { func (x *ConfigurationVariable) Reset() { *x = ConfigurationVariable{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4077,7 +4286,7 @@ func (x *ConfigurationVariable) String() string { func (*ConfigurationVariable) ProtoMessage() {} func (x *ConfigurationVariable) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4090,7 +4299,7 @@ func (x *ConfigurationVariable) ProtoReflect() protoreflect.Message { // Deprecated: Use ConfigurationVariable.ProtoReflect.Descriptor instead. func (*ConfigurationVariable) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{55} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{58} } func (x *ConfigurationVariable) GetKind() ConfigurationVariableKind { @@ -4138,7 +4347,7 @@ type DirectiveConfiguration struct { func (x *DirectiveConfiguration) Reset() { *x = DirectiveConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4150,7 +4359,7 @@ func (x *DirectiveConfiguration) String() string { func (*DirectiveConfiguration) ProtoMessage() {} func (x *DirectiveConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4163,7 +4372,7 @@ func (x *DirectiveConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use DirectiveConfiguration.ProtoReflect.Descriptor instead. func (*DirectiveConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{56} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{59} } func (x *DirectiveConfiguration) GetDirectiveName() string { @@ -4190,7 +4399,7 @@ type URLQueryConfiguration struct { func (x *URLQueryConfiguration) Reset() { *x = URLQueryConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4202,7 +4411,7 @@ func (x *URLQueryConfiguration) String() string { func (*URLQueryConfiguration) ProtoMessage() {} func (x *URLQueryConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4215,7 +4424,7 @@ func (x *URLQueryConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use URLQueryConfiguration.ProtoReflect.Descriptor instead. func (*URLQueryConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{57} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{60} } func (x *URLQueryConfiguration) GetName() string { @@ -4241,7 +4450,7 @@ type HTTPHeader struct { func (x *HTTPHeader) Reset() { *x = HTTPHeader{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4253,7 +4462,7 @@ func (x *HTTPHeader) String() string { func (*HTTPHeader) ProtoMessage() {} func (x *HTTPHeader) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4266,7 +4475,7 @@ func (x *HTTPHeader) ProtoReflect() protoreflect.Message { // Deprecated: Use HTTPHeader.ProtoReflect.Descriptor instead. func (*HTTPHeader) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{58} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{61} } func (x *HTTPHeader) GetValues() []*ConfigurationVariable { @@ -4287,7 +4496,7 @@ type MTLSConfiguration struct { func (x *MTLSConfiguration) Reset() { *x = MTLSConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4299,7 +4508,7 @@ func (x *MTLSConfiguration) String() string { func (*MTLSConfiguration) ProtoMessage() {} func (x *MTLSConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4312,7 +4521,7 @@ func (x *MTLSConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use MTLSConfiguration.ProtoReflect.Descriptor instead. func (*MTLSConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{59} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{62} } func (x *MTLSConfiguration) GetKey() *ConfigurationVariable { @@ -4350,7 +4559,7 @@ type GraphQLSubscriptionConfiguration struct { func (x *GraphQLSubscriptionConfiguration) Reset() { *x = GraphQLSubscriptionConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4362,7 +4571,7 @@ func (x *GraphQLSubscriptionConfiguration) String() string { func (*GraphQLSubscriptionConfiguration) ProtoMessage() {} func (x *GraphQLSubscriptionConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4375,7 +4584,7 @@ func (x *GraphQLSubscriptionConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use GraphQLSubscriptionConfiguration.ProtoReflect.Descriptor instead. func (*GraphQLSubscriptionConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{60} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{63} } func (x *GraphQLSubscriptionConfiguration) GetEnabled() bool { @@ -4423,7 +4632,7 @@ type GraphQLFederationConfiguration struct { func (x *GraphQLFederationConfiguration) Reset() { *x = GraphQLFederationConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4435,7 +4644,7 @@ func (x *GraphQLFederationConfiguration) String() string { func (*GraphQLFederationConfiguration) ProtoMessage() {} func (x *GraphQLFederationConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4448,7 +4657,7 @@ func (x *GraphQLFederationConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use GraphQLFederationConfiguration.ProtoReflect.Descriptor instead. func (*GraphQLFederationConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{61} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{64} } func (x *GraphQLFederationConfiguration) GetEnabled() bool { @@ -4475,7 +4684,7 @@ type InternedString struct { func (x *InternedString) Reset() { *x = InternedString{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4487,7 +4696,7 @@ func (x *InternedString) String() string { func (*InternedString) ProtoMessage() {} func (x *InternedString) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4500,7 +4709,7 @@ func (x *InternedString) ProtoReflect() protoreflect.Message { // Deprecated: Use InternedString.ProtoReflect.Descriptor instead. func (*InternedString) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{62} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{65} } func (x *InternedString) GetKey() string { @@ -4520,7 +4729,7 @@ type SingleTypeField struct { func (x *SingleTypeField) Reset() { *x = SingleTypeField{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4532,7 +4741,7 @@ func (x *SingleTypeField) String() string { func (*SingleTypeField) ProtoMessage() {} func (x *SingleTypeField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4545,7 +4754,7 @@ func (x *SingleTypeField) ProtoReflect() protoreflect.Message { // Deprecated: Use SingleTypeField.ProtoReflect.Descriptor instead. func (*SingleTypeField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{63} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{66} } func (x *SingleTypeField) GetTypeName() string { @@ -4572,7 +4781,7 @@ type SubscriptionFieldCondition struct { func (x *SubscriptionFieldCondition) Reset() { *x = SubscriptionFieldCondition{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4584,7 +4793,7 @@ func (x *SubscriptionFieldCondition) String() string { func (*SubscriptionFieldCondition) ProtoMessage() {} func (x *SubscriptionFieldCondition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4597,7 +4806,7 @@ func (x *SubscriptionFieldCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionFieldCondition.ProtoReflect.Descriptor instead. func (*SubscriptionFieldCondition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{64} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{67} } func (x *SubscriptionFieldCondition) GetFieldPath() []string { @@ -4626,7 +4835,7 @@ type SubscriptionFilterCondition struct { func (x *SubscriptionFilterCondition) Reset() { *x = SubscriptionFilterCondition{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4638,7 +4847,7 @@ func (x *SubscriptionFilterCondition) String() string { func (*SubscriptionFilterCondition) ProtoMessage() {} func (x *SubscriptionFilterCondition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4651,7 +4860,7 @@ func (x *SubscriptionFilterCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionFilterCondition.ProtoReflect.Descriptor instead. func (*SubscriptionFilterCondition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{65} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{68} } func (x *SubscriptionFilterCondition) GetAnd() []*SubscriptionFilterCondition { @@ -4691,7 +4900,7 @@ type CacheWarmerOperations struct { func (x *CacheWarmerOperations) Reset() { *x = CacheWarmerOperations{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4703,7 +4912,7 @@ func (x *CacheWarmerOperations) String() string { func (*CacheWarmerOperations) ProtoMessage() {} func (x *CacheWarmerOperations) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[69] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4716,7 +4925,7 @@ func (x *CacheWarmerOperations) ProtoReflect() protoreflect.Message { // Deprecated: Use CacheWarmerOperations.ProtoReflect.Descriptor instead. func (*CacheWarmerOperations) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{66} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{69} } func (x *CacheWarmerOperations) GetOperations() []*Operation { @@ -4736,7 +4945,7 @@ type Operation struct { func (x *Operation) Reset() { *x = Operation{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4748,7 +4957,7 @@ func (x *Operation) String() string { func (*Operation) ProtoMessage() {} func (x *Operation) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[70] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4761,7 +4970,7 @@ func (x *Operation) ProtoReflect() protoreflect.Message { // Deprecated: Use Operation.ProtoReflect.Descriptor instead. func (*Operation) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{67} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{70} } func (x *Operation) GetRequest() *OperationRequest { @@ -4789,7 +4998,7 @@ type OperationRequest struct { func (x *OperationRequest) Reset() { *x = OperationRequest{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4801,7 +5010,7 @@ func (x *OperationRequest) String() string { func (*OperationRequest) ProtoMessage() {} func (x *OperationRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[71] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4814,7 +5023,7 @@ func (x *OperationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use OperationRequest.ProtoReflect.Descriptor instead. func (*OperationRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{68} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{71} } func (x *OperationRequest) GetOperationName() string { @@ -4847,7 +5056,7 @@ type Extension struct { func (x *Extension) Reset() { *x = Extension{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[69] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4859,7 +5068,7 @@ func (x *Extension) String() string { func (*Extension) ProtoMessage() {} func (x *Extension) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[69] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[72] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4872,7 +5081,7 @@ func (x *Extension) ProtoReflect() protoreflect.Message { // Deprecated: Use Extension.ProtoReflect.Descriptor instead. func (*Extension) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{69} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{72} } func (x *Extension) GetPersistedQuery() *PersistedQuery { @@ -4892,7 +5101,7 @@ type PersistedQuery struct { func (x *PersistedQuery) Reset() { *x = PersistedQuery{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[70] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4904,7 +5113,7 @@ func (x *PersistedQuery) String() string { func (*PersistedQuery) ProtoMessage() {} func (x *PersistedQuery) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[70] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[73] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4917,7 +5126,7 @@ func (x *PersistedQuery) ProtoReflect() protoreflect.Message { // Deprecated: Use PersistedQuery.ProtoReflect.Descriptor instead. func (*PersistedQuery) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{70} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{73} } func (x *PersistedQuery) GetSha256Hash() string { @@ -4944,7 +5153,7 @@ type ClientInfo struct { func (x *ClientInfo) Reset() { *x = ClientInfo{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[71] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4956,7 +5165,7 @@ func (x *ClientInfo) String() string { func (*ClientInfo) ProtoMessage() {} func (x *ClientInfo) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[71] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[74] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4969,7 +5178,7 @@ func (x *ClientInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ClientInfo.ProtoReflect.Descriptor instead. func (*ClientInfo) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{71} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{74} } func (x *ClientInfo) GetName() string { @@ -5064,12 +5273,13 @@ const file_wg_cosmo_node_v1_node_proto_rawDesc = "" + "\x11entity_interfaces\x18\x0e \x03(\v2..wg.cosmo.node.v1.EntityInterfaceConfigurationR\x10entityInterfaces\x12[\n" + "\x11interface_objects\x18\x0f \x03(\v2..wg.cosmo.node.v1.EntityInterfaceConfigurationR\x10interfaceObjects\x12R\n" + "\x12cost_configuration\x18\x10 \x01(\v2#.wg.cosmo.node.v1.CostConfigurationR\x11costConfiguration\x12F\n" + - "\x0eentity_caching\x18\x11 \x01(\v2\x1f.wg.cosmo.node.v1.EntityCachingR\rentityCaching\"\xcc\x03\n" + + "\x0eentity_caching\x18\x11 \x01(\v2\x1f.wg.cosmo.node.v1.EntityCachingR\rentityCaching\"\xb5\x04\n" + "\rEntityCaching\x12j\n" + "\x1bentity_cache_configurations\x18\x01 \x03(\v2*.wg.cosmo.node.v1.EntityCacheConfigurationR\x19entityCacheConfigurations\x12v\n" + "\x1fcache_invalidate_configurations\x18\x02 \x03(\v2..wg.cosmo.node.v1.CacheInvalidateConfigurationR\x1dcacheInvalidateConfigurations\x12p\n" + "\x1dcache_populate_configurations\x18\x03 \x03(\v2,.wg.cosmo.node.v1.CachePopulateConfigurationR\x1bcachePopulateConfigurations\x12e\n" + - "\x15request_scoped_fields\x18\x04 \x03(\v21.wg.cosmo.node.v1.RequestScopedFieldConfigurationR\x13requestScopedFields\"\x95\x02\n" + + "\x15request_scoped_fields\x18\x04 \x03(\v21.wg.cosmo.node.v1.RequestScopedFieldConfigurationR\x13requestScopedFields\x12g\n" + + "\x1aquery_cache_configurations\x18\x05 \x03(\v2).wg.cosmo.node.v1.QueryCacheConfigurationR\x18queryCacheConfigurations\"\x95\x02\n" + "\x18EntityCacheConfiguration\x12\x1b\n" + "\ttype_name\x18\x01 \x01(\tR\btypeName\x12&\n" + "\x0fmax_age_seconds\x18\x02 \x01(\x03R\rmaxAgeSeconds\x12'\n" + @@ -5094,7 +5304,23 @@ const file_wg_cosmo_node_v1_node_proto_rawDesc = "" + "\n" + "field_name\x18\x01 \x01(\tR\tfieldName\x12\x1b\n" + "\ttype_name\x18\x02 \x01(\tR\btypeName\x12\x15\n" + - "\x06l1_key\x18\x03 \x01(\tR\x05l1Key\"\x98\x04\n" + + "\x06l1_key\x18\x03 \x01(\tR\x05l1Key\"\xa8\x02\n" + + "\x17QueryCacheConfiguration\x12\x1d\n" + + "\n" + + "field_name\x18\x01 \x01(\tR\tfieldName\x12&\n" + + "\x0fmax_age_seconds\x18\x02 \x01(\x03R\rmaxAgeSeconds\x12'\n" + + "\x0finclude_headers\x18\x03 \x01(\bR\x0eincludeHeaders\x12\x1f\n" + + "\vshadow_mode\x18\x04 \x01(\bR\n" + + "shadowMode\x12(\n" + + "\x10entity_type_name\x18\x05 \x01(\tR\x0eentityTypeName\x12R\n" + + "\x13entity_key_mappings\x18\x06 \x03(\v2\".wg.cosmo.node.v1.EntityKeyMappingR\x11entityKeyMappings\"\x8e\x01\n" + + "\x10EntityKeyMapping\x12(\n" + + "\x10entity_type_name\x18\x01 \x01(\tR\x0eentityTypeName\x12P\n" + + "\x0efield_mappings\x18\x02 \x03(\v2).wg.cosmo.node.v1.EntityCacheFieldMappingR\rfieldMappings\"\x83\x01\n" + + "\x17EntityCacheFieldMapping\x12(\n" + + "\x10entity_key_field\x18\x01 \x01(\tR\x0eentityKeyField\x12#\n" + + "\rargument_path\x18\x02 \x03(\tR\fargumentPath\x12\x19\n" + + "\bis_batch\x18\x03 \x01(\bR\aisBatch\"\x98\x04\n" + "\x11CostConfiguration\x12O\n" + "\rfield_weights\x18\x01 \x03(\v2*.wg.cosmo.node.v1.FieldWeightConfigurationR\ffieldWeights\x12K\n" + "\n" + @@ -5433,7 +5659,7 @@ func file_wg_cosmo_node_v1_node_proto_rawDescGZIP() []byte { } var file_wg_cosmo_node_v1_node_proto_enumTypes = make([]protoimpl.EnumInfo, 8) -var file_wg_cosmo_node_v1_node_proto_msgTypes = make([]protoimpl.MessageInfo, 79) +var file_wg_cosmo_node_v1_node_proto_msgTypes = make([]protoimpl.MessageInfo, 82) var file_wg_cosmo_node_v1_node_proto_goTypes = []any{ (ArgumentRenderConfiguration)(0), // 0: wg.cosmo.node.v1.ArgumentRenderConfiguration (ArgumentSource)(0), // 1: wg.cosmo.node.v1.ArgumentSource @@ -5460,185 +5686,191 @@ var file_wg_cosmo_node_v1_node_proto_goTypes = []any{ (*CacheInvalidateConfiguration)(nil), // 22: wg.cosmo.node.v1.CacheInvalidateConfiguration (*CachePopulateConfiguration)(nil), // 23: wg.cosmo.node.v1.CachePopulateConfiguration (*RequestScopedFieldConfiguration)(nil), // 24: wg.cosmo.node.v1.RequestScopedFieldConfiguration - (*CostConfiguration)(nil), // 25: wg.cosmo.node.v1.CostConfiguration - (*FieldWeightConfiguration)(nil), // 26: wg.cosmo.node.v1.FieldWeightConfiguration - (*FieldListSizeConfiguration)(nil), // 27: wg.cosmo.node.v1.FieldListSizeConfiguration - (*ArgumentConfiguration)(nil), // 28: wg.cosmo.node.v1.ArgumentConfiguration - (*Scopes)(nil), // 29: wg.cosmo.node.v1.Scopes - (*AuthorizationConfiguration)(nil), // 30: wg.cosmo.node.v1.AuthorizationConfiguration - (*FieldConfiguration)(nil), // 31: wg.cosmo.node.v1.FieldConfiguration - (*TypeConfiguration)(nil), // 32: wg.cosmo.node.v1.TypeConfiguration - (*TypeField)(nil), // 33: wg.cosmo.node.v1.TypeField - (*FieldCoordinates)(nil), // 34: wg.cosmo.node.v1.FieldCoordinates - (*FieldSetCondition)(nil), // 35: wg.cosmo.node.v1.FieldSetCondition - (*RequiredField)(nil), // 36: wg.cosmo.node.v1.RequiredField - (*EntityInterfaceConfiguration)(nil), // 37: wg.cosmo.node.v1.EntityInterfaceConfiguration - (*FetchConfiguration)(nil), // 38: wg.cosmo.node.v1.FetchConfiguration - (*StatusCodeTypeMapping)(nil), // 39: wg.cosmo.node.v1.StatusCodeTypeMapping - (*DataSourceCustom_GraphQL)(nil), // 40: wg.cosmo.node.v1.DataSourceCustom_GraphQL - (*GRPCConfiguration)(nil), // 41: wg.cosmo.node.v1.GRPCConfiguration - (*ImageReference)(nil), // 42: wg.cosmo.node.v1.ImageReference - (*PluginConfiguration)(nil), // 43: wg.cosmo.node.v1.PluginConfiguration - (*SSLConfiguration)(nil), // 44: wg.cosmo.node.v1.SSLConfiguration - (*GRPCMapping)(nil), // 45: wg.cosmo.node.v1.GRPCMapping - (*LookupMapping)(nil), // 46: wg.cosmo.node.v1.LookupMapping - (*LookupFieldMapping)(nil), // 47: wg.cosmo.node.v1.LookupFieldMapping - (*OperationMapping)(nil), // 48: wg.cosmo.node.v1.OperationMapping - (*EntityMapping)(nil), // 49: wg.cosmo.node.v1.EntityMapping - (*RequiredFieldMapping)(nil), // 50: wg.cosmo.node.v1.RequiredFieldMapping - (*TypeFieldMapping)(nil), // 51: wg.cosmo.node.v1.TypeFieldMapping - (*FieldMapping)(nil), // 52: wg.cosmo.node.v1.FieldMapping - (*ArgumentMapping)(nil), // 53: wg.cosmo.node.v1.ArgumentMapping - (*EnumMapping)(nil), // 54: wg.cosmo.node.v1.EnumMapping - (*EnumValueMapping)(nil), // 55: wg.cosmo.node.v1.EnumValueMapping - (*NatsStreamConfiguration)(nil), // 56: wg.cosmo.node.v1.NatsStreamConfiguration - (*NatsEventConfiguration)(nil), // 57: wg.cosmo.node.v1.NatsEventConfiguration - (*KafkaEventConfiguration)(nil), // 58: wg.cosmo.node.v1.KafkaEventConfiguration - (*RedisEventConfiguration)(nil), // 59: wg.cosmo.node.v1.RedisEventConfiguration - (*EngineEventConfiguration)(nil), // 60: wg.cosmo.node.v1.EngineEventConfiguration - (*DataSourceCustomEvents)(nil), // 61: wg.cosmo.node.v1.DataSourceCustomEvents - (*DataSourceCustom_Static)(nil), // 62: wg.cosmo.node.v1.DataSourceCustom_Static - (*ConfigurationVariable)(nil), // 63: wg.cosmo.node.v1.ConfigurationVariable - (*DirectiveConfiguration)(nil), // 64: wg.cosmo.node.v1.DirectiveConfiguration - (*URLQueryConfiguration)(nil), // 65: wg.cosmo.node.v1.URLQueryConfiguration - (*HTTPHeader)(nil), // 66: wg.cosmo.node.v1.HTTPHeader - (*MTLSConfiguration)(nil), // 67: wg.cosmo.node.v1.MTLSConfiguration - (*GraphQLSubscriptionConfiguration)(nil), // 68: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration - (*GraphQLFederationConfiguration)(nil), // 69: wg.cosmo.node.v1.GraphQLFederationConfiguration - (*InternedString)(nil), // 70: wg.cosmo.node.v1.InternedString - (*SingleTypeField)(nil), // 71: wg.cosmo.node.v1.SingleTypeField - (*SubscriptionFieldCondition)(nil), // 72: wg.cosmo.node.v1.SubscriptionFieldCondition - (*SubscriptionFilterCondition)(nil), // 73: wg.cosmo.node.v1.SubscriptionFilterCondition - (*CacheWarmerOperations)(nil), // 74: wg.cosmo.node.v1.CacheWarmerOperations - (*Operation)(nil), // 75: wg.cosmo.node.v1.Operation - (*OperationRequest)(nil), // 76: wg.cosmo.node.v1.OperationRequest - (*Extension)(nil), // 77: wg.cosmo.node.v1.Extension - (*PersistedQuery)(nil), // 78: wg.cosmo.node.v1.PersistedQuery - (*ClientInfo)(nil), // 79: wg.cosmo.node.v1.ClientInfo - nil, // 80: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry - nil, // 81: wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry - nil, // 82: wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry - nil, // 83: wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry - nil, // 84: wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry - nil, // 85: wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry - nil, // 86: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry - (common.EnumStatusCode)(0), // 87: wg.cosmo.common.EnumStatusCode - (common.GraphQLSubscriptionProtocol)(0), // 88: wg.cosmo.common.GraphQLSubscriptionProtocol - (common.GraphQLWebsocketSubprotocol)(0), // 89: wg.cosmo.common.GraphQLWebsocketSubprotocol + (*QueryCacheConfiguration)(nil), // 25: wg.cosmo.node.v1.QueryCacheConfiguration + (*EntityKeyMapping)(nil), // 26: wg.cosmo.node.v1.EntityKeyMapping + (*EntityCacheFieldMapping)(nil), // 27: wg.cosmo.node.v1.EntityCacheFieldMapping + (*CostConfiguration)(nil), // 28: wg.cosmo.node.v1.CostConfiguration + (*FieldWeightConfiguration)(nil), // 29: wg.cosmo.node.v1.FieldWeightConfiguration + (*FieldListSizeConfiguration)(nil), // 30: wg.cosmo.node.v1.FieldListSizeConfiguration + (*ArgumentConfiguration)(nil), // 31: wg.cosmo.node.v1.ArgumentConfiguration + (*Scopes)(nil), // 32: wg.cosmo.node.v1.Scopes + (*AuthorizationConfiguration)(nil), // 33: wg.cosmo.node.v1.AuthorizationConfiguration + (*FieldConfiguration)(nil), // 34: wg.cosmo.node.v1.FieldConfiguration + (*TypeConfiguration)(nil), // 35: wg.cosmo.node.v1.TypeConfiguration + (*TypeField)(nil), // 36: wg.cosmo.node.v1.TypeField + (*FieldCoordinates)(nil), // 37: wg.cosmo.node.v1.FieldCoordinates + (*FieldSetCondition)(nil), // 38: wg.cosmo.node.v1.FieldSetCondition + (*RequiredField)(nil), // 39: wg.cosmo.node.v1.RequiredField + (*EntityInterfaceConfiguration)(nil), // 40: wg.cosmo.node.v1.EntityInterfaceConfiguration + (*FetchConfiguration)(nil), // 41: wg.cosmo.node.v1.FetchConfiguration + (*StatusCodeTypeMapping)(nil), // 42: wg.cosmo.node.v1.StatusCodeTypeMapping + (*DataSourceCustom_GraphQL)(nil), // 43: wg.cosmo.node.v1.DataSourceCustom_GraphQL + (*GRPCConfiguration)(nil), // 44: wg.cosmo.node.v1.GRPCConfiguration + (*ImageReference)(nil), // 45: wg.cosmo.node.v1.ImageReference + (*PluginConfiguration)(nil), // 46: wg.cosmo.node.v1.PluginConfiguration + (*SSLConfiguration)(nil), // 47: wg.cosmo.node.v1.SSLConfiguration + (*GRPCMapping)(nil), // 48: wg.cosmo.node.v1.GRPCMapping + (*LookupMapping)(nil), // 49: wg.cosmo.node.v1.LookupMapping + (*LookupFieldMapping)(nil), // 50: wg.cosmo.node.v1.LookupFieldMapping + (*OperationMapping)(nil), // 51: wg.cosmo.node.v1.OperationMapping + (*EntityMapping)(nil), // 52: wg.cosmo.node.v1.EntityMapping + (*RequiredFieldMapping)(nil), // 53: wg.cosmo.node.v1.RequiredFieldMapping + (*TypeFieldMapping)(nil), // 54: wg.cosmo.node.v1.TypeFieldMapping + (*FieldMapping)(nil), // 55: wg.cosmo.node.v1.FieldMapping + (*ArgumentMapping)(nil), // 56: wg.cosmo.node.v1.ArgumentMapping + (*EnumMapping)(nil), // 57: wg.cosmo.node.v1.EnumMapping + (*EnumValueMapping)(nil), // 58: wg.cosmo.node.v1.EnumValueMapping + (*NatsStreamConfiguration)(nil), // 59: wg.cosmo.node.v1.NatsStreamConfiguration + (*NatsEventConfiguration)(nil), // 60: wg.cosmo.node.v1.NatsEventConfiguration + (*KafkaEventConfiguration)(nil), // 61: wg.cosmo.node.v1.KafkaEventConfiguration + (*RedisEventConfiguration)(nil), // 62: wg.cosmo.node.v1.RedisEventConfiguration + (*EngineEventConfiguration)(nil), // 63: wg.cosmo.node.v1.EngineEventConfiguration + (*DataSourceCustomEvents)(nil), // 64: wg.cosmo.node.v1.DataSourceCustomEvents + (*DataSourceCustom_Static)(nil), // 65: wg.cosmo.node.v1.DataSourceCustom_Static + (*ConfigurationVariable)(nil), // 66: wg.cosmo.node.v1.ConfigurationVariable + (*DirectiveConfiguration)(nil), // 67: wg.cosmo.node.v1.DirectiveConfiguration + (*URLQueryConfiguration)(nil), // 68: wg.cosmo.node.v1.URLQueryConfiguration + (*HTTPHeader)(nil), // 69: wg.cosmo.node.v1.HTTPHeader + (*MTLSConfiguration)(nil), // 70: wg.cosmo.node.v1.MTLSConfiguration + (*GraphQLSubscriptionConfiguration)(nil), // 71: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration + (*GraphQLFederationConfiguration)(nil), // 72: wg.cosmo.node.v1.GraphQLFederationConfiguration + (*InternedString)(nil), // 73: wg.cosmo.node.v1.InternedString + (*SingleTypeField)(nil), // 74: wg.cosmo.node.v1.SingleTypeField + (*SubscriptionFieldCondition)(nil), // 75: wg.cosmo.node.v1.SubscriptionFieldCondition + (*SubscriptionFilterCondition)(nil), // 76: wg.cosmo.node.v1.SubscriptionFilterCondition + (*CacheWarmerOperations)(nil), // 77: wg.cosmo.node.v1.CacheWarmerOperations + (*Operation)(nil), // 78: wg.cosmo.node.v1.Operation + (*OperationRequest)(nil), // 79: wg.cosmo.node.v1.OperationRequest + (*Extension)(nil), // 80: wg.cosmo.node.v1.Extension + (*PersistedQuery)(nil), // 81: wg.cosmo.node.v1.PersistedQuery + (*ClientInfo)(nil), // 82: wg.cosmo.node.v1.ClientInfo + nil, // 83: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry + nil, // 84: wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry + nil, // 85: wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry + nil, // 86: wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry + nil, // 87: wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry + nil, // 88: wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry + nil, // 89: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry + (common.EnumStatusCode)(0), // 90: wg.cosmo.common.EnumStatusCode + (common.GraphQLSubscriptionProtocol)(0), // 91: wg.cosmo.common.GraphQLSubscriptionProtocol + (common.GraphQLWebsocketSubprotocol)(0), // 92: wg.cosmo.common.GraphQLWebsocketSubprotocol } var file_wg_cosmo_node_v1_node_proto_depIdxs = []int32{ - 80, // 0: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.config_by_feature_flag_name:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry + 83, // 0: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.config_by_feature_flag_name:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry 18, // 1: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig.engine_config:type_name -> wg.cosmo.node.v1.EngineConfiguration 8, // 2: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig.subgraphs:type_name -> wg.cosmo.node.v1.Subgraph 18, // 3: wg.cosmo.node.v1.RouterConfig.engine_config:type_name -> wg.cosmo.node.v1.EngineConfiguration 8, // 4: wg.cosmo.node.v1.RouterConfig.subgraphs:type_name -> wg.cosmo.node.v1.Subgraph 9, // 5: wg.cosmo.node.v1.RouterConfig.feature_flag_configs:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs - 87, // 6: wg.cosmo.node.v1.Response.code:type_name -> wg.cosmo.common.EnumStatusCode + 90, // 6: wg.cosmo.node.v1.Response.code:type_name -> wg.cosmo.common.EnumStatusCode 15, // 7: wg.cosmo.node.v1.RegistrationInfo.account_limits:type_name -> wg.cosmo.node.v1.AccountLimits 12, // 8: wg.cosmo.node.v1.SelfRegisterResponse.response:type_name -> wg.cosmo.node.v1.Response 14, // 9: wg.cosmo.node.v1.SelfRegisterResponse.registrationInfo:type_name -> wg.cosmo.node.v1.RegistrationInfo 19, // 10: wg.cosmo.node.v1.EngineConfiguration.datasource_configurations:type_name -> wg.cosmo.node.v1.DataSourceConfiguration - 31, // 11: wg.cosmo.node.v1.EngineConfiguration.field_configurations:type_name -> wg.cosmo.node.v1.FieldConfiguration - 32, // 12: wg.cosmo.node.v1.EngineConfiguration.type_configurations:type_name -> wg.cosmo.node.v1.TypeConfiguration - 81, // 13: wg.cosmo.node.v1.EngineConfiguration.string_storage:type_name -> wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry + 34, // 11: wg.cosmo.node.v1.EngineConfiguration.field_configurations:type_name -> wg.cosmo.node.v1.FieldConfiguration + 35, // 12: wg.cosmo.node.v1.EngineConfiguration.type_configurations:type_name -> wg.cosmo.node.v1.TypeConfiguration + 84, // 13: wg.cosmo.node.v1.EngineConfiguration.string_storage:type_name -> wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry 2, // 14: wg.cosmo.node.v1.DataSourceConfiguration.kind:type_name -> wg.cosmo.node.v1.DataSourceKind - 33, // 15: wg.cosmo.node.v1.DataSourceConfiguration.root_nodes:type_name -> wg.cosmo.node.v1.TypeField - 33, // 16: wg.cosmo.node.v1.DataSourceConfiguration.child_nodes:type_name -> wg.cosmo.node.v1.TypeField - 40, // 17: wg.cosmo.node.v1.DataSourceConfiguration.custom_graphql:type_name -> wg.cosmo.node.v1.DataSourceCustom_GraphQL - 62, // 18: wg.cosmo.node.v1.DataSourceConfiguration.custom_static:type_name -> wg.cosmo.node.v1.DataSourceCustom_Static - 64, // 19: wg.cosmo.node.v1.DataSourceConfiguration.directives:type_name -> wg.cosmo.node.v1.DirectiveConfiguration - 36, // 20: wg.cosmo.node.v1.DataSourceConfiguration.keys:type_name -> wg.cosmo.node.v1.RequiredField - 36, // 21: wg.cosmo.node.v1.DataSourceConfiguration.provides:type_name -> wg.cosmo.node.v1.RequiredField - 36, // 22: wg.cosmo.node.v1.DataSourceConfiguration.requires:type_name -> wg.cosmo.node.v1.RequiredField - 61, // 23: wg.cosmo.node.v1.DataSourceConfiguration.custom_events:type_name -> wg.cosmo.node.v1.DataSourceCustomEvents - 37, // 24: wg.cosmo.node.v1.DataSourceConfiguration.entity_interfaces:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration - 37, // 25: wg.cosmo.node.v1.DataSourceConfiguration.interface_objects:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration - 25, // 26: wg.cosmo.node.v1.DataSourceConfiguration.cost_configuration:type_name -> wg.cosmo.node.v1.CostConfiguration + 36, // 15: wg.cosmo.node.v1.DataSourceConfiguration.root_nodes:type_name -> wg.cosmo.node.v1.TypeField + 36, // 16: wg.cosmo.node.v1.DataSourceConfiguration.child_nodes:type_name -> wg.cosmo.node.v1.TypeField + 43, // 17: wg.cosmo.node.v1.DataSourceConfiguration.custom_graphql:type_name -> wg.cosmo.node.v1.DataSourceCustom_GraphQL + 65, // 18: wg.cosmo.node.v1.DataSourceConfiguration.custom_static:type_name -> wg.cosmo.node.v1.DataSourceCustom_Static + 67, // 19: wg.cosmo.node.v1.DataSourceConfiguration.directives:type_name -> wg.cosmo.node.v1.DirectiveConfiguration + 39, // 20: wg.cosmo.node.v1.DataSourceConfiguration.keys:type_name -> wg.cosmo.node.v1.RequiredField + 39, // 21: wg.cosmo.node.v1.DataSourceConfiguration.provides:type_name -> wg.cosmo.node.v1.RequiredField + 39, // 22: wg.cosmo.node.v1.DataSourceConfiguration.requires:type_name -> wg.cosmo.node.v1.RequiredField + 64, // 23: wg.cosmo.node.v1.DataSourceConfiguration.custom_events:type_name -> wg.cosmo.node.v1.DataSourceCustomEvents + 40, // 24: wg.cosmo.node.v1.DataSourceConfiguration.entity_interfaces:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration + 40, // 25: wg.cosmo.node.v1.DataSourceConfiguration.interface_objects:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration + 28, // 26: wg.cosmo.node.v1.DataSourceConfiguration.cost_configuration:type_name -> wg.cosmo.node.v1.CostConfiguration 20, // 27: wg.cosmo.node.v1.DataSourceConfiguration.entity_caching:type_name -> wg.cosmo.node.v1.EntityCaching 21, // 28: wg.cosmo.node.v1.EntityCaching.entity_cache_configurations:type_name -> wg.cosmo.node.v1.EntityCacheConfiguration 22, // 29: wg.cosmo.node.v1.EntityCaching.cache_invalidate_configurations:type_name -> wg.cosmo.node.v1.CacheInvalidateConfiguration 23, // 30: wg.cosmo.node.v1.EntityCaching.cache_populate_configurations:type_name -> wg.cosmo.node.v1.CachePopulateConfiguration 24, // 31: wg.cosmo.node.v1.EntityCaching.request_scoped_fields:type_name -> wg.cosmo.node.v1.RequestScopedFieldConfiguration - 26, // 32: wg.cosmo.node.v1.CostConfiguration.field_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration - 27, // 33: wg.cosmo.node.v1.CostConfiguration.list_sizes:type_name -> wg.cosmo.node.v1.FieldListSizeConfiguration - 82, // 34: wg.cosmo.node.v1.CostConfiguration.type_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry - 83, // 35: wg.cosmo.node.v1.CostConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry - 84, // 36: wg.cosmo.node.v1.FieldWeightConfiguration.argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry - 85, // 37: wg.cosmo.node.v1.FieldWeightConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry - 1, // 38: wg.cosmo.node.v1.ArgumentConfiguration.source_type:type_name -> wg.cosmo.node.v1.ArgumentSource - 29, // 39: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes:type_name -> wg.cosmo.node.v1.Scopes - 29, // 40: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes_by_or:type_name -> wg.cosmo.node.v1.Scopes - 28, // 41: wg.cosmo.node.v1.FieldConfiguration.arguments_configuration:type_name -> wg.cosmo.node.v1.ArgumentConfiguration - 30, // 42: wg.cosmo.node.v1.FieldConfiguration.authorization_configuration:type_name -> wg.cosmo.node.v1.AuthorizationConfiguration - 73, // 43: wg.cosmo.node.v1.FieldConfiguration.subscription_filter_condition:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 34, // 44: wg.cosmo.node.v1.FieldSetCondition.field_coordinates_path:type_name -> wg.cosmo.node.v1.FieldCoordinates - 35, // 45: wg.cosmo.node.v1.RequiredField.conditions:type_name -> wg.cosmo.node.v1.FieldSetCondition - 63, // 46: wg.cosmo.node.v1.FetchConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 7, // 47: wg.cosmo.node.v1.FetchConfiguration.method:type_name -> wg.cosmo.node.v1.HTTPMethod - 86, // 48: wg.cosmo.node.v1.FetchConfiguration.header:type_name -> wg.cosmo.node.v1.FetchConfiguration.HeaderEntry - 63, // 49: wg.cosmo.node.v1.FetchConfiguration.body:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 65, // 50: wg.cosmo.node.v1.FetchConfiguration.query:type_name -> wg.cosmo.node.v1.URLQueryConfiguration - 67, // 51: wg.cosmo.node.v1.FetchConfiguration.mtls:type_name -> wg.cosmo.node.v1.MTLSConfiguration - 63, // 52: wg.cosmo.node.v1.FetchConfiguration.base_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 63, // 53: wg.cosmo.node.v1.FetchConfiguration.path:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 63, // 54: wg.cosmo.node.v1.FetchConfiguration.http_proxy_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 38, // 55: wg.cosmo.node.v1.DataSourceCustom_GraphQL.fetch:type_name -> wg.cosmo.node.v1.FetchConfiguration - 68, // 56: wg.cosmo.node.v1.DataSourceCustom_GraphQL.subscription:type_name -> wg.cosmo.node.v1.GraphQLSubscriptionConfiguration - 69, // 57: wg.cosmo.node.v1.DataSourceCustom_GraphQL.federation:type_name -> wg.cosmo.node.v1.GraphQLFederationConfiguration - 70, // 58: wg.cosmo.node.v1.DataSourceCustom_GraphQL.upstream_schema:type_name -> wg.cosmo.node.v1.InternedString - 71, // 59: wg.cosmo.node.v1.DataSourceCustom_GraphQL.custom_scalar_type_fields:type_name -> wg.cosmo.node.v1.SingleTypeField - 41, // 60: wg.cosmo.node.v1.DataSourceCustom_GraphQL.grpc:type_name -> wg.cosmo.node.v1.GRPCConfiguration - 45, // 61: wg.cosmo.node.v1.GRPCConfiguration.mapping:type_name -> wg.cosmo.node.v1.GRPCMapping - 43, // 62: wg.cosmo.node.v1.GRPCConfiguration.plugin:type_name -> wg.cosmo.node.v1.PluginConfiguration - 42, // 63: wg.cosmo.node.v1.PluginConfiguration.image_reference:type_name -> wg.cosmo.node.v1.ImageReference - 48, // 64: wg.cosmo.node.v1.GRPCMapping.operation_mappings:type_name -> wg.cosmo.node.v1.OperationMapping - 49, // 65: wg.cosmo.node.v1.GRPCMapping.entity_mappings:type_name -> wg.cosmo.node.v1.EntityMapping - 51, // 66: wg.cosmo.node.v1.GRPCMapping.type_field_mappings:type_name -> wg.cosmo.node.v1.TypeFieldMapping - 54, // 67: wg.cosmo.node.v1.GRPCMapping.enum_mappings:type_name -> wg.cosmo.node.v1.EnumMapping - 46, // 68: wg.cosmo.node.v1.GRPCMapping.resolve_mappings:type_name -> wg.cosmo.node.v1.LookupMapping - 3, // 69: wg.cosmo.node.v1.LookupMapping.type:type_name -> wg.cosmo.node.v1.LookupType - 47, // 70: wg.cosmo.node.v1.LookupMapping.lookup_mapping:type_name -> wg.cosmo.node.v1.LookupFieldMapping - 52, // 71: wg.cosmo.node.v1.LookupFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping - 4, // 72: wg.cosmo.node.v1.OperationMapping.type:type_name -> wg.cosmo.node.v1.OperationType - 50, // 73: wg.cosmo.node.v1.EntityMapping.required_field_mappings:type_name -> wg.cosmo.node.v1.RequiredFieldMapping - 52, // 74: wg.cosmo.node.v1.RequiredFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping - 52, // 75: wg.cosmo.node.v1.TypeFieldMapping.field_mappings:type_name -> wg.cosmo.node.v1.FieldMapping - 53, // 76: wg.cosmo.node.v1.FieldMapping.argument_mappings:type_name -> wg.cosmo.node.v1.ArgumentMapping - 55, // 77: wg.cosmo.node.v1.EnumMapping.values:type_name -> wg.cosmo.node.v1.EnumValueMapping - 60, // 78: wg.cosmo.node.v1.NatsEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 56, // 79: wg.cosmo.node.v1.NatsEventConfiguration.stream_configuration:type_name -> wg.cosmo.node.v1.NatsStreamConfiguration - 60, // 80: wg.cosmo.node.v1.KafkaEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 60, // 81: wg.cosmo.node.v1.RedisEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 5, // 82: wg.cosmo.node.v1.EngineEventConfiguration.type:type_name -> wg.cosmo.node.v1.EventType - 57, // 83: wg.cosmo.node.v1.DataSourceCustomEvents.nats:type_name -> wg.cosmo.node.v1.NatsEventConfiguration - 58, // 84: wg.cosmo.node.v1.DataSourceCustomEvents.kafka:type_name -> wg.cosmo.node.v1.KafkaEventConfiguration - 59, // 85: wg.cosmo.node.v1.DataSourceCustomEvents.redis:type_name -> wg.cosmo.node.v1.RedisEventConfiguration - 63, // 86: wg.cosmo.node.v1.DataSourceCustom_Static.data:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 6, // 87: wg.cosmo.node.v1.ConfigurationVariable.kind:type_name -> wg.cosmo.node.v1.ConfigurationVariableKind - 63, // 88: wg.cosmo.node.v1.HTTPHeader.values:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 63, // 89: wg.cosmo.node.v1.MTLSConfiguration.key:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 63, // 90: wg.cosmo.node.v1.MTLSConfiguration.cert:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 63, // 91: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 88, // 92: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol - 89, // 93: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.websocketSubprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol - 73, // 94: wg.cosmo.node.v1.SubscriptionFilterCondition.and:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 72, // 95: wg.cosmo.node.v1.SubscriptionFilterCondition.in:type_name -> wg.cosmo.node.v1.SubscriptionFieldCondition - 73, // 96: wg.cosmo.node.v1.SubscriptionFilterCondition.not:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 73, // 97: wg.cosmo.node.v1.SubscriptionFilterCondition.or:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 75, // 98: wg.cosmo.node.v1.CacheWarmerOperations.operations:type_name -> wg.cosmo.node.v1.Operation - 76, // 99: wg.cosmo.node.v1.Operation.request:type_name -> wg.cosmo.node.v1.OperationRequest - 79, // 100: wg.cosmo.node.v1.Operation.client:type_name -> wg.cosmo.node.v1.ClientInfo - 77, // 101: wg.cosmo.node.v1.OperationRequest.extensions:type_name -> wg.cosmo.node.v1.Extension - 78, // 102: wg.cosmo.node.v1.Extension.persisted_query:type_name -> wg.cosmo.node.v1.PersistedQuery - 10, // 103: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry.value:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig - 66, // 104: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry.value:type_name -> wg.cosmo.node.v1.HTTPHeader - 16, // 105: wg.cosmo.node.v1.NodeService.SelfRegister:input_type -> wg.cosmo.node.v1.SelfRegisterRequest - 17, // 106: wg.cosmo.node.v1.NodeService.SelfRegister:output_type -> wg.cosmo.node.v1.SelfRegisterResponse - 106, // [106:107] is the sub-list for method output_type - 105, // [105:106] is the sub-list for method input_type - 105, // [105:105] is the sub-list for extension type_name - 105, // [105:105] is the sub-list for extension extendee - 0, // [0:105] is the sub-list for field type_name + 25, // 32: wg.cosmo.node.v1.EntityCaching.query_cache_configurations:type_name -> wg.cosmo.node.v1.QueryCacheConfiguration + 26, // 33: wg.cosmo.node.v1.QueryCacheConfiguration.entity_key_mappings:type_name -> wg.cosmo.node.v1.EntityKeyMapping + 27, // 34: wg.cosmo.node.v1.EntityKeyMapping.field_mappings:type_name -> wg.cosmo.node.v1.EntityCacheFieldMapping + 29, // 35: wg.cosmo.node.v1.CostConfiguration.field_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration + 30, // 36: wg.cosmo.node.v1.CostConfiguration.list_sizes:type_name -> wg.cosmo.node.v1.FieldListSizeConfiguration + 85, // 37: wg.cosmo.node.v1.CostConfiguration.type_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry + 86, // 38: wg.cosmo.node.v1.CostConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry + 87, // 39: wg.cosmo.node.v1.FieldWeightConfiguration.argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry + 88, // 40: wg.cosmo.node.v1.FieldWeightConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry + 1, // 41: wg.cosmo.node.v1.ArgumentConfiguration.source_type:type_name -> wg.cosmo.node.v1.ArgumentSource + 32, // 42: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes:type_name -> wg.cosmo.node.v1.Scopes + 32, // 43: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes_by_or:type_name -> wg.cosmo.node.v1.Scopes + 31, // 44: wg.cosmo.node.v1.FieldConfiguration.arguments_configuration:type_name -> wg.cosmo.node.v1.ArgumentConfiguration + 33, // 45: wg.cosmo.node.v1.FieldConfiguration.authorization_configuration:type_name -> wg.cosmo.node.v1.AuthorizationConfiguration + 76, // 46: wg.cosmo.node.v1.FieldConfiguration.subscription_filter_condition:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 37, // 47: wg.cosmo.node.v1.FieldSetCondition.field_coordinates_path:type_name -> wg.cosmo.node.v1.FieldCoordinates + 38, // 48: wg.cosmo.node.v1.RequiredField.conditions:type_name -> wg.cosmo.node.v1.FieldSetCondition + 66, // 49: wg.cosmo.node.v1.FetchConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 7, // 50: wg.cosmo.node.v1.FetchConfiguration.method:type_name -> wg.cosmo.node.v1.HTTPMethod + 89, // 51: wg.cosmo.node.v1.FetchConfiguration.header:type_name -> wg.cosmo.node.v1.FetchConfiguration.HeaderEntry + 66, // 52: wg.cosmo.node.v1.FetchConfiguration.body:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 68, // 53: wg.cosmo.node.v1.FetchConfiguration.query:type_name -> wg.cosmo.node.v1.URLQueryConfiguration + 70, // 54: wg.cosmo.node.v1.FetchConfiguration.mtls:type_name -> wg.cosmo.node.v1.MTLSConfiguration + 66, // 55: wg.cosmo.node.v1.FetchConfiguration.base_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 66, // 56: wg.cosmo.node.v1.FetchConfiguration.path:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 66, // 57: wg.cosmo.node.v1.FetchConfiguration.http_proxy_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 41, // 58: wg.cosmo.node.v1.DataSourceCustom_GraphQL.fetch:type_name -> wg.cosmo.node.v1.FetchConfiguration + 71, // 59: wg.cosmo.node.v1.DataSourceCustom_GraphQL.subscription:type_name -> wg.cosmo.node.v1.GraphQLSubscriptionConfiguration + 72, // 60: wg.cosmo.node.v1.DataSourceCustom_GraphQL.federation:type_name -> wg.cosmo.node.v1.GraphQLFederationConfiguration + 73, // 61: wg.cosmo.node.v1.DataSourceCustom_GraphQL.upstream_schema:type_name -> wg.cosmo.node.v1.InternedString + 74, // 62: wg.cosmo.node.v1.DataSourceCustom_GraphQL.custom_scalar_type_fields:type_name -> wg.cosmo.node.v1.SingleTypeField + 44, // 63: wg.cosmo.node.v1.DataSourceCustom_GraphQL.grpc:type_name -> wg.cosmo.node.v1.GRPCConfiguration + 48, // 64: wg.cosmo.node.v1.GRPCConfiguration.mapping:type_name -> wg.cosmo.node.v1.GRPCMapping + 46, // 65: wg.cosmo.node.v1.GRPCConfiguration.plugin:type_name -> wg.cosmo.node.v1.PluginConfiguration + 45, // 66: wg.cosmo.node.v1.PluginConfiguration.image_reference:type_name -> wg.cosmo.node.v1.ImageReference + 51, // 67: wg.cosmo.node.v1.GRPCMapping.operation_mappings:type_name -> wg.cosmo.node.v1.OperationMapping + 52, // 68: wg.cosmo.node.v1.GRPCMapping.entity_mappings:type_name -> wg.cosmo.node.v1.EntityMapping + 54, // 69: wg.cosmo.node.v1.GRPCMapping.type_field_mappings:type_name -> wg.cosmo.node.v1.TypeFieldMapping + 57, // 70: wg.cosmo.node.v1.GRPCMapping.enum_mappings:type_name -> wg.cosmo.node.v1.EnumMapping + 49, // 71: wg.cosmo.node.v1.GRPCMapping.resolve_mappings:type_name -> wg.cosmo.node.v1.LookupMapping + 3, // 72: wg.cosmo.node.v1.LookupMapping.type:type_name -> wg.cosmo.node.v1.LookupType + 50, // 73: wg.cosmo.node.v1.LookupMapping.lookup_mapping:type_name -> wg.cosmo.node.v1.LookupFieldMapping + 55, // 74: wg.cosmo.node.v1.LookupFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping + 4, // 75: wg.cosmo.node.v1.OperationMapping.type:type_name -> wg.cosmo.node.v1.OperationType + 53, // 76: wg.cosmo.node.v1.EntityMapping.required_field_mappings:type_name -> wg.cosmo.node.v1.RequiredFieldMapping + 55, // 77: wg.cosmo.node.v1.RequiredFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping + 55, // 78: wg.cosmo.node.v1.TypeFieldMapping.field_mappings:type_name -> wg.cosmo.node.v1.FieldMapping + 56, // 79: wg.cosmo.node.v1.FieldMapping.argument_mappings:type_name -> wg.cosmo.node.v1.ArgumentMapping + 58, // 80: wg.cosmo.node.v1.EnumMapping.values:type_name -> wg.cosmo.node.v1.EnumValueMapping + 63, // 81: wg.cosmo.node.v1.NatsEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 59, // 82: wg.cosmo.node.v1.NatsEventConfiguration.stream_configuration:type_name -> wg.cosmo.node.v1.NatsStreamConfiguration + 63, // 83: wg.cosmo.node.v1.KafkaEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 63, // 84: wg.cosmo.node.v1.RedisEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 5, // 85: wg.cosmo.node.v1.EngineEventConfiguration.type:type_name -> wg.cosmo.node.v1.EventType + 60, // 86: wg.cosmo.node.v1.DataSourceCustomEvents.nats:type_name -> wg.cosmo.node.v1.NatsEventConfiguration + 61, // 87: wg.cosmo.node.v1.DataSourceCustomEvents.kafka:type_name -> wg.cosmo.node.v1.KafkaEventConfiguration + 62, // 88: wg.cosmo.node.v1.DataSourceCustomEvents.redis:type_name -> wg.cosmo.node.v1.RedisEventConfiguration + 66, // 89: wg.cosmo.node.v1.DataSourceCustom_Static.data:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 6, // 90: wg.cosmo.node.v1.ConfigurationVariable.kind:type_name -> wg.cosmo.node.v1.ConfigurationVariableKind + 66, // 91: wg.cosmo.node.v1.HTTPHeader.values:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 66, // 92: wg.cosmo.node.v1.MTLSConfiguration.key:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 66, // 93: wg.cosmo.node.v1.MTLSConfiguration.cert:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 66, // 94: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 91, // 95: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol + 92, // 96: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.websocketSubprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol + 76, // 97: wg.cosmo.node.v1.SubscriptionFilterCondition.and:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 75, // 98: wg.cosmo.node.v1.SubscriptionFilterCondition.in:type_name -> wg.cosmo.node.v1.SubscriptionFieldCondition + 76, // 99: wg.cosmo.node.v1.SubscriptionFilterCondition.not:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 76, // 100: wg.cosmo.node.v1.SubscriptionFilterCondition.or:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 78, // 101: wg.cosmo.node.v1.CacheWarmerOperations.operations:type_name -> wg.cosmo.node.v1.Operation + 79, // 102: wg.cosmo.node.v1.Operation.request:type_name -> wg.cosmo.node.v1.OperationRequest + 82, // 103: wg.cosmo.node.v1.Operation.client:type_name -> wg.cosmo.node.v1.ClientInfo + 80, // 104: wg.cosmo.node.v1.OperationRequest.extensions:type_name -> wg.cosmo.node.v1.Extension + 81, // 105: wg.cosmo.node.v1.Extension.persisted_query:type_name -> wg.cosmo.node.v1.PersistedQuery + 10, // 106: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry.value:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig + 69, // 107: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry.value:type_name -> wg.cosmo.node.v1.HTTPHeader + 16, // 108: wg.cosmo.node.v1.NodeService.SelfRegister:input_type -> wg.cosmo.node.v1.SelfRegisterRequest + 17, // 109: wg.cosmo.node.v1.NodeService.SelfRegister:output_type -> wg.cosmo.node.v1.SelfRegisterResponse + 109, // [109:110] is the sub-list for method output_type + 108, // [108:109] is the sub-list for method input_type + 108, // [108:108] is the sub-list for extension type_name + 108, // [108:108] is the sub-list for extension extendee + 0, // [0:108] is the sub-list for field type_name } func init() { file_wg_cosmo_node_v1_node_proto_init() } @@ -5651,20 +5883,20 @@ func file_wg_cosmo_node_v1_node_proto_init() { file_wg_cosmo_node_v1_node_proto_msgTypes[9].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[10].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[15].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[18].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[19].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[23].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[30].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[35].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[60].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[65].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[21].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[22].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[26].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[33].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[38].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[63].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[68].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_wg_cosmo_node_v1_node_proto_rawDesc), len(file_wg_cosmo_node_v1_node_proto_rawDesc)), NumEnums: 8, - NumMessages: 79, + NumMessages: 82, NumExtensions: 0, NumServices: 1, }, diff --git a/connect/src/wg/cosmo/node/v1/node_pb.ts b/connect/src/wg/cosmo/node/v1/node_pb.ts index 8efe17a4d5..0757dcb270 100644 --- a/connect/src/wg/cosmo/node/v1/node_pb.ts +++ b/connect/src/wg/cosmo/node/v1/node_pb.ts @@ -928,6 +928,13 @@ export class EntityCaching extends Message { */ requestScopedFields: RequestScopedFieldConfiguration[] = []; + /** + * Per-Query-field cache configurations (from @openfed__queryCache / @openfed__is directives) + * + * @generated from field: repeated wg.cosmo.node.v1.QueryCacheConfiguration query_cache_configurations = 5; + */ + queryCacheConfigurations: QueryCacheConfiguration[] = []; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -940,6 +947,7 @@ export class EntityCaching extends Message { { no: 2, name: "cache_invalidate_configurations", kind: "message", T: CacheInvalidateConfiguration, repeated: true }, { no: 3, name: "cache_populate_configurations", kind: "message", T: CachePopulateConfiguration, repeated: true }, { no: 4, name: "request_scoped_fields", kind: "message", T: RequestScopedFieldConfiguration, repeated: true }, + { no: 5, name: "query_cache_configurations", kind: "message", T: QueryCacheConfiguration, repeated: true }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): EntityCaching { @@ -1204,6 +1212,171 @@ export class RequestScopedFieldConfiguration extends Message { + /** + * @generated from field: string field_name = 1; + */ + fieldName = ""; + + /** + * TTL for cached root-field responses. Required: composition rejects values + * <= 0. Interpreted in seconds. + * + * @generated from field: int64 max_age_seconds = 2; + */ + maxAgeSeconds = protoInt64.zero; + + /** + * @generated from field: bool include_headers = 3; + */ + includeHeaders = false; + + /** + * @generated from field: bool shadow_mode = 4; + */ + shadowMode = false; + + /** + * @generated from field: string entity_type_name = 5; + */ + entityTypeName = ""; + + /** + * @generated from field: repeated wg.cosmo.node.v1.EntityKeyMapping entity_key_mappings = 6; + */ + entityKeyMappings: EntityKeyMapping[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.node.v1.QueryCacheConfiguration"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "field_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "max_age_seconds", kind: "scalar", T: 3 /* ScalarType.INT64 */ }, + { no: 3, name: "include_headers", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 4, name: "shadow_mode", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 5, name: "entity_type_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 6, name: "entity_key_mappings", kind: "message", T: EntityKeyMapping, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): QueryCacheConfiguration { + return new QueryCacheConfiguration().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): QueryCacheConfiguration { + return new QueryCacheConfiguration().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): QueryCacheConfiguration { + return new QueryCacheConfiguration().fromJsonString(jsonString, options); + } + + static equals(a: QueryCacheConfiguration | PlainMessage | undefined, b: QueryCacheConfiguration | PlainMessage | undefined): boolean { + return proto3.util.equals(QueryCacheConfiguration, a, b); + } +} + +/** + * @generated from message wg.cosmo.node.v1.EntityKeyMapping + */ +export class EntityKeyMapping extends Message { + /** + * @generated from field: string entity_type_name = 1; + */ + entityTypeName = ""; + + /** + * @generated from field: repeated wg.cosmo.node.v1.EntityCacheFieldMapping field_mappings = 2; + */ + fieldMappings: EntityCacheFieldMapping[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.node.v1.EntityKeyMapping"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "entity_type_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "field_mappings", kind: "message", T: EntityCacheFieldMapping, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): EntityKeyMapping { + return new EntityKeyMapping().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): EntityKeyMapping { + return new EntityKeyMapping().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): EntityKeyMapping { + return new EntityKeyMapping().fromJsonString(jsonString, options); + } + + static equals(a: EntityKeyMapping | PlainMessage | undefined, b: EntityKeyMapping | PlainMessage | undefined): boolean { + return proto3.util.equals(EntityKeyMapping, a, b); + } +} + +/** + * @generated from message wg.cosmo.node.v1.EntityCacheFieldMapping + */ +export class EntityCacheFieldMapping extends Message { + /** + * @generated from field: string entity_key_field = 1; + */ + entityKeyField = ""; + + /** + * @generated from field: repeated string argument_path = 2; + */ + argumentPath: string[] = []; + + /** + * @generated from field: bool is_batch = 3; + */ + isBatch = false; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.node.v1.EntityCacheFieldMapping"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "entity_key_field", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "argument_path", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, + { no: 3, name: "is_batch", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): EntityCacheFieldMapping { + return new EntityCacheFieldMapping().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): EntityCacheFieldMapping { + return new EntityCacheFieldMapping().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): EntityCacheFieldMapping { + return new EntityCacheFieldMapping().fromJsonString(jsonString, options); + } + + static equals(a: EntityCacheFieldMapping | PlainMessage | undefined, b: EntityCacheFieldMapping | PlainMessage | undefined): boolean { + return proto3.util.equals(EntityCacheFieldMapping, a, b); + } +} + /** * @generated from message wg.cosmo.node.v1.CostConfiguration */ diff --git a/proto/wg/cosmo/node/v1/node.proto b/proto/wg/cosmo/node/v1/node.proto index 096af65a92..d35c77313f 100644 --- a/proto/wg/cosmo/node/v1/node.proto +++ b/proto/wg/cosmo/node/v1/node.proto @@ -105,6 +105,8 @@ message EntityCaching { repeated CachePopulateConfiguration cache_populate_configurations = 3; // Request-scoped field configurations (from @openfed__requestScoped directive) repeated RequestScopedFieldConfiguration request_scoped_fields = 4; + // Per-Query-field cache configurations (from @openfed__queryCache / @openfed__is directives) + repeated QueryCacheConfiguration query_cache_configurations = 5; } // Per-entity declaration for @openfed__entityCache. Marks a @key entity type as cacheable so the @@ -153,6 +155,30 @@ message RequestScopedFieldConfiguration { string l1_key = 3; } +// Per-Query-field declaration for @openfed__queryCache. Tells the router a query field can serve +// its returned entity from the entity cache, with argument-to-@key mappings for cache-key construction. +message QueryCacheConfiguration { + string field_name = 1; + // TTL for cached root-field responses. Required: composition rejects values + // <= 0. Interpreted in seconds. + int64 max_age_seconds = 2; + bool include_headers = 3; + bool shadow_mode = 4; + string entity_type_name = 5; + repeated EntityKeyMapping entity_key_mappings = 6; +} + +message EntityKeyMapping { + string entity_type_name = 1; + repeated EntityCacheFieldMapping field_mappings = 2; +} + +message EntityCacheFieldMapping { + string entity_key_field = 1; + repeated string argument_path = 2; + bool is_batch = 3; +} + message CostConfiguration { repeated FieldWeightConfiguration field_weights = 1; repeated FieldListSizeConfiguration list_sizes = 2; diff --git a/router/gen/proto/wg/cosmo/node/v1/node.pb.go b/router/gen/proto/wg/cosmo/node/v1/node.pb.go index bb13617a72..eeb0832c4a 100644 --- a/router/gen/proto/wg/cosmo/node/v1/node.pb.go +++ b/router/gen/proto/wg/cosmo/node/v1/node.pb.go @@ -1236,8 +1236,10 @@ type EntityCaching struct { CachePopulateConfigurations []*CachePopulateConfiguration `protobuf:"bytes,3,rep,name=cache_populate_configurations,json=cachePopulateConfigurations,proto3" json:"cache_populate_configurations,omitempty"` // Request-scoped field configurations (from @openfed__requestScoped directive) RequestScopedFields []*RequestScopedFieldConfiguration `protobuf:"bytes,4,rep,name=request_scoped_fields,json=requestScopedFields,proto3" json:"request_scoped_fields,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // Per-Query-field cache configurations (from @openfed__queryCache / @openfed__is directives) + QueryCacheConfigurations []*QueryCacheConfiguration `protobuf:"bytes,5,rep,name=query_cache_configurations,json=queryCacheConfigurations,proto3" json:"query_cache_configurations,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *EntityCaching) Reset() { @@ -1298,6 +1300,13 @@ func (x *EntityCaching) GetRequestScopedFields() []*RequestScopedFieldConfigurat return nil } +func (x *EntityCaching) GetQueryCacheConfigurations() []*QueryCacheConfiguration { + if x != nil { + return x.QueryCacheConfigurations + } + return nil +} + // Per-entity declaration for @openfed__entityCache. Marks a @key entity type as cacheable so the // router can store/serve resolved entities from an external store (e.g. Redis). type EntityCacheConfiguration struct { @@ -1588,6 +1597,206 @@ func (x *RequestScopedFieldConfiguration) GetL1Key() string { return "" } +// Per-Query-field declaration for @openfed__queryCache. Tells the router a query field can serve +// its returned entity from the entity cache, with argument-to-@key mappings for cache-key construction. +type QueryCacheConfiguration struct { + state protoimpl.MessageState `protogen:"open.v1"` + FieldName string `protobuf:"bytes,1,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` + // TTL for cached root-field responses. Required: composition rejects values + // <= 0. Interpreted in seconds. + MaxAgeSeconds int64 `protobuf:"varint,2,opt,name=max_age_seconds,json=maxAgeSeconds,proto3" json:"max_age_seconds,omitempty"` + IncludeHeaders bool `protobuf:"varint,3,opt,name=include_headers,json=includeHeaders,proto3" json:"include_headers,omitempty"` + ShadowMode bool `protobuf:"varint,4,opt,name=shadow_mode,json=shadowMode,proto3" json:"shadow_mode,omitempty"` + EntityTypeName string `protobuf:"bytes,5,opt,name=entity_type_name,json=entityTypeName,proto3" json:"entity_type_name,omitempty"` + EntityKeyMappings []*EntityKeyMapping `protobuf:"bytes,6,rep,name=entity_key_mappings,json=entityKeyMappings,proto3" json:"entity_key_mappings,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *QueryCacheConfiguration) Reset() { + *x = QueryCacheConfiguration{} + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *QueryCacheConfiguration) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryCacheConfiguration) ProtoMessage() {} + +func (x *QueryCacheConfiguration) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use QueryCacheConfiguration.ProtoReflect.Descriptor instead. +func (*QueryCacheConfiguration) Descriptor() ([]byte, []int) { + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{17} +} + +func (x *QueryCacheConfiguration) GetFieldName() string { + if x != nil { + return x.FieldName + } + return "" +} + +func (x *QueryCacheConfiguration) GetMaxAgeSeconds() int64 { + if x != nil { + return x.MaxAgeSeconds + } + return 0 +} + +func (x *QueryCacheConfiguration) GetIncludeHeaders() bool { + if x != nil { + return x.IncludeHeaders + } + return false +} + +func (x *QueryCacheConfiguration) GetShadowMode() bool { + if x != nil { + return x.ShadowMode + } + return false +} + +func (x *QueryCacheConfiguration) GetEntityTypeName() string { + if x != nil { + return x.EntityTypeName + } + return "" +} + +func (x *QueryCacheConfiguration) GetEntityKeyMappings() []*EntityKeyMapping { + if x != nil { + return x.EntityKeyMappings + } + return nil +} + +type EntityKeyMapping struct { + state protoimpl.MessageState `protogen:"open.v1"` + EntityTypeName string `protobuf:"bytes,1,opt,name=entity_type_name,json=entityTypeName,proto3" json:"entity_type_name,omitempty"` + FieldMappings []*EntityCacheFieldMapping `protobuf:"bytes,2,rep,name=field_mappings,json=fieldMappings,proto3" json:"field_mappings,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *EntityKeyMapping) Reset() { + *x = EntityKeyMapping{} + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *EntityKeyMapping) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EntityKeyMapping) ProtoMessage() {} + +func (x *EntityKeyMapping) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EntityKeyMapping.ProtoReflect.Descriptor instead. +func (*EntityKeyMapping) Descriptor() ([]byte, []int) { + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{18} +} + +func (x *EntityKeyMapping) GetEntityTypeName() string { + if x != nil { + return x.EntityTypeName + } + return "" +} + +func (x *EntityKeyMapping) GetFieldMappings() []*EntityCacheFieldMapping { + if x != nil { + return x.FieldMappings + } + return nil +} + +type EntityCacheFieldMapping struct { + state protoimpl.MessageState `protogen:"open.v1"` + EntityKeyField string `protobuf:"bytes,1,opt,name=entity_key_field,json=entityKeyField,proto3" json:"entity_key_field,omitempty"` + ArgumentPath []string `protobuf:"bytes,2,rep,name=argument_path,json=argumentPath,proto3" json:"argument_path,omitempty"` + IsBatch bool `protobuf:"varint,3,opt,name=is_batch,json=isBatch,proto3" json:"is_batch,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *EntityCacheFieldMapping) Reset() { + *x = EntityCacheFieldMapping{} + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *EntityCacheFieldMapping) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EntityCacheFieldMapping) ProtoMessage() {} + +func (x *EntityCacheFieldMapping) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EntityCacheFieldMapping.ProtoReflect.Descriptor instead. +func (*EntityCacheFieldMapping) Descriptor() ([]byte, []int) { + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{19} +} + +func (x *EntityCacheFieldMapping) GetEntityKeyField() string { + if x != nil { + return x.EntityKeyField + } + return "" +} + +func (x *EntityCacheFieldMapping) GetArgumentPath() []string { + if x != nil { + return x.ArgumentPath + } + return nil +} + +func (x *EntityCacheFieldMapping) GetIsBatch() bool { + if x != nil { + return x.IsBatch + } + return false +} + type CostConfiguration struct { state protoimpl.MessageState `protogen:"open.v1"` FieldWeights []*FieldWeightConfiguration `protobuf:"bytes,1,rep,name=field_weights,json=fieldWeights,proto3" json:"field_weights,omitempty"` @@ -1600,7 +1809,7 @@ type CostConfiguration struct { func (x *CostConfiguration) Reset() { *x = CostConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1612,7 +1821,7 @@ func (x *CostConfiguration) String() string { func (*CostConfiguration) ProtoMessage() {} func (x *CostConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1625,7 +1834,7 @@ func (x *CostConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use CostConfiguration.ProtoReflect.Descriptor instead. func (*CostConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{17} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{20} } func (x *CostConfiguration) GetFieldWeights() []*FieldWeightConfiguration { @@ -1669,7 +1878,7 @@ type FieldWeightConfiguration struct { func (x *FieldWeightConfiguration) Reset() { *x = FieldWeightConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1681,7 +1890,7 @@ func (x *FieldWeightConfiguration) String() string { func (*FieldWeightConfiguration) ProtoMessage() {} func (x *FieldWeightConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1694,7 +1903,7 @@ func (x *FieldWeightConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldWeightConfiguration.ProtoReflect.Descriptor instead. func (*FieldWeightConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{18} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{21} } func (x *FieldWeightConfiguration) GetTypeName() string { @@ -1746,7 +1955,7 @@ type FieldListSizeConfiguration struct { func (x *FieldListSizeConfiguration) Reset() { *x = FieldListSizeConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1758,7 +1967,7 @@ func (x *FieldListSizeConfiguration) String() string { func (*FieldListSizeConfiguration) ProtoMessage() {} func (x *FieldListSizeConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1771,7 +1980,7 @@ func (x *FieldListSizeConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldListSizeConfiguration.ProtoReflect.Descriptor instead. func (*FieldListSizeConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{19} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{22} } func (x *FieldListSizeConfiguration) GetTypeName() string { @@ -1826,7 +2035,7 @@ type ArgumentConfiguration struct { func (x *ArgumentConfiguration) Reset() { *x = ArgumentConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1838,7 +2047,7 @@ func (x *ArgumentConfiguration) String() string { func (*ArgumentConfiguration) ProtoMessage() {} func (x *ArgumentConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1851,7 +2060,7 @@ func (x *ArgumentConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use ArgumentConfiguration.ProtoReflect.Descriptor instead. func (*ArgumentConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{20} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{23} } func (x *ArgumentConfiguration) GetName() string { @@ -1877,7 +2086,7 @@ type Scopes struct { func (x *Scopes) Reset() { *x = Scopes{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1889,7 +2098,7 @@ func (x *Scopes) String() string { func (*Scopes) ProtoMessage() {} func (x *Scopes) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1902,7 +2111,7 @@ func (x *Scopes) ProtoReflect() protoreflect.Message { // Deprecated: Use Scopes.ProtoReflect.Descriptor instead. func (*Scopes) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{21} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{24} } func (x *Scopes) GetRequiredAndScopes() []string { @@ -1923,7 +2132,7 @@ type AuthorizationConfiguration struct { func (x *AuthorizationConfiguration) Reset() { *x = AuthorizationConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1935,7 +2144,7 @@ func (x *AuthorizationConfiguration) String() string { func (*AuthorizationConfiguration) ProtoMessage() {} func (x *AuthorizationConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1948,7 +2157,7 @@ func (x *AuthorizationConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use AuthorizationConfiguration.ProtoReflect.Descriptor instead. func (*AuthorizationConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{22} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{25} } func (x *AuthorizationConfiguration) GetRequiresAuthentication() bool { @@ -1985,7 +2194,7 @@ type FieldConfiguration struct { func (x *FieldConfiguration) Reset() { *x = FieldConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1997,7 +2206,7 @@ func (x *FieldConfiguration) String() string { func (*FieldConfiguration) ProtoMessage() {} func (x *FieldConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2010,7 +2219,7 @@ func (x *FieldConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldConfiguration.ProtoReflect.Descriptor instead. func (*FieldConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{23} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{26} } func (x *FieldConfiguration) GetTypeName() string { @@ -2058,7 +2267,7 @@ type TypeConfiguration struct { func (x *TypeConfiguration) Reset() { *x = TypeConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2070,7 +2279,7 @@ func (x *TypeConfiguration) String() string { func (*TypeConfiguration) ProtoMessage() {} func (x *TypeConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2083,7 +2292,7 @@ func (x *TypeConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeConfiguration.ProtoReflect.Descriptor instead. func (*TypeConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{24} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{27} } func (x *TypeConfiguration) GetTypeName() string { @@ -2112,7 +2321,7 @@ type TypeField struct { func (x *TypeField) Reset() { *x = TypeField{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2124,7 +2333,7 @@ func (x *TypeField) String() string { func (*TypeField) ProtoMessage() {} func (x *TypeField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2137,7 +2346,7 @@ func (x *TypeField) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeField.ProtoReflect.Descriptor instead. func (*TypeField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{25} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{28} } func (x *TypeField) GetTypeName() string { @@ -2178,7 +2387,7 @@ type FieldCoordinates struct { func (x *FieldCoordinates) Reset() { *x = FieldCoordinates{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2190,7 +2399,7 @@ func (x *FieldCoordinates) String() string { func (*FieldCoordinates) ProtoMessage() {} func (x *FieldCoordinates) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2203,7 +2412,7 @@ func (x *FieldCoordinates) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldCoordinates.ProtoReflect.Descriptor instead. func (*FieldCoordinates) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{26} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{29} } func (x *FieldCoordinates) GetFieldName() string { @@ -2230,7 +2439,7 @@ type FieldSetCondition struct { func (x *FieldSetCondition) Reset() { *x = FieldSetCondition{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2242,7 +2451,7 @@ func (x *FieldSetCondition) String() string { func (*FieldSetCondition) ProtoMessage() {} func (x *FieldSetCondition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2255,7 +2464,7 @@ func (x *FieldSetCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldSetCondition.ProtoReflect.Descriptor instead. func (*FieldSetCondition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{27} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{30} } func (x *FieldSetCondition) GetFieldCoordinatesPath() []*FieldCoordinates { @@ -2285,7 +2494,7 @@ type RequiredField struct { func (x *RequiredField) Reset() { *x = RequiredField{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2297,7 +2506,7 @@ func (x *RequiredField) String() string { func (*RequiredField) ProtoMessage() {} func (x *RequiredField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2310,7 +2519,7 @@ func (x *RequiredField) ProtoReflect() protoreflect.Message { // Deprecated: Use RequiredField.ProtoReflect.Descriptor instead. func (*RequiredField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{28} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{31} } func (x *RequiredField) GetTypeName() string { @@ -2358,7 +2567,7 @@ type EntityInterfaceConfiguration struct { func (x *EntityInterfaceConfiguration) Reset() { *x = EntityInterfaceConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2370,7 +2579,7 @@ func (x *EntityInterfaceConfiguration) String() string { func (*EntityInterfaceConfiguration) ProtoMessage() {} func (x *EntityInterfaceConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2383,7 +2592,7 @@ func (x *EntityInterfaceConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use EntityInterfaceConfiguration.ProtoReflect.Descriptor instead. func (*EntityInterfaceConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{29} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{32} } func (x *EntityInterfaceConfiguration) GetInterfaceTypeName() string { @@ -2426,7 +2635,7 @@ type FetchConfiguration struct { func (x *FetchConfiguration) Reset() { *x = FetchConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2438,7 +2647,7 @@ func (x *FetchConfiguration) String() string { func (*FetchConfiguration) ProtoMessage() {} func (x *FetchConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2451,7 +2660,7 @@ func (x *FetchConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FetchConfiguration.ProtoReflect.Descriptor instead. func (*FetchConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{30} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{33} } func (x *FetchConfiguration) GetUrl() *ConfigurationVariable { @@ -2535,7 +2744,7 @@ type StatusCodeTypeMapping struct { func (x *StatusCodeTypeMapping) Reset() { *x = StatusCodeTypeMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2547,7 +2756,7 @@ func (x *StatusCodeTypeMapping) String() string { func (*StatusCodeTypeMapping) ProtoMessage() {} func (x *StatusCodeTypeMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2560,7 +2769,7 @@ func (x *StatusCodeTypeMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use StatusCodeTypeMapping.ProtoReflect.Descriptor instead. func (*StatusCodeTypeMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{31} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{34} } func (x *StatusCodeTypeMapping) GetStatusCode() int64 { @@ -2598,7 +2807,7 @@ type DataSourceCustom_GraphQL struct { func (x *DataSourceCustom_GraphQL) Reset() { *x = DataSourceCustom_GraphQL{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2610,7 +2819,7 @@ func (x *DataSourceCustom_GraphQL) String() string { func (*DataSourceCustom_GraphQL) ProtoMessage() {} func (x *DataSourceCustom_GraphQL) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2623,7 +2832,7 @@ func (x *DataSourceCustom_GraphQL) ProtoReflect() protoreflect.Message { // Deprecated: Use DataSourceCustom_GraphQL.ProtoReflect.Descriptor instead. func (*DataSourceCustom_GraphQL) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{32} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{35} } func (x *DataSourceCustom_GraphQL) GetFetch() *FetchConfiguration { @@ -2679,7 +2888,7 @@ type GRPCConfiguration struct { func (x *GRPCConfiguration) Reset() { *x = GRPCConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2691,7 +2900,7 @@ func (x *GRPCConfiguration) String() string { func (*GRPCConfiguration) ProtoMessage() {} func (x *GRPCConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2704,7 +2913,7 @@ func (x *GRPCConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCConfiguration.ProtoReflect.Descriptor instead. func (*GRPCConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{33} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{36} } func (x *GRPCConfiguration) GetMapping() *GRPCMapping { @@ -2738,7 +2947,7 @@ type ImageReference struct { func (x *ImageReference) Reset() { *x = ImageReference{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2750,7 +2959,7 @@ func (x *ImageReference) String() string { func (*ImageReference) ProtoMessage() {} func (x *ImageReference) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2763,7 +2972,7 @@ func (x *ImageReference) ProtoReflect() protoreflect.Message { // Deprecated: Use ImageReference.ProtoReflect.Descriptor instead. func (*ImageReference) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{34} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{37} } func (x *ImageReference) GetRepository() string { @@ -2793,7 +3002,7 @@ type PluginConfiguration struct { func (x *PluginConfiguration) Reset() { *x = PluginConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2805,7 +3014,7 @@ func (x *PluginConfiguration) String() string { func (*PluginConfiguration) ProtoMessage() {} func (x *PluginConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2818,7 +3027,7 @@ func (x *PluginConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use PluginConfiguration.ProtoReflect.Descriptor instead. func (*PluginConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{35} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{38} } func (x *PluginConfiguration) GetName() string { @@ -2852,7 +3061,7 @@ type SSLConfiguration struct { func (x *SSLConfiguration) Reset() { *x = SSLConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2864,7 +3073,7 @@ func (x *SSLConfiguration) String() string { func (*SSLConfiguration) ProtoMessage() {} func (x *SSLConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2877,7 +3086,7 @@ func (x *SSLConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use SSLConfiguration.ProtoReflect.Descriptor instead. func (*SSLConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{36} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{39} } func (x *SSLConfiguration) GetEnabled() bool { @@ -2910,7 +3119,7 @@ type GRPCMapping struct { func (x *GRPCMapping) Reset() { *x = GRPCMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2922,7 +3131,7 @@ func (x *GRPCMapping) String() string { func (*GRPCMapping) ProtoMessage() {} func (x *GRPCMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2935,7 +3144,7 @@ func (x *GRPCMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCMapping.ProtoReflect.Descriptor instead. func (*GRPCMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{37} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{40} } func (x *GRPCMapping) GetVersion() int32 { @@ -3006,7 +3215,7 @@ type LookupMapping struct { func (x *LookupMapping) Reset() { *x = LookupMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3018,7 +3227,7 @@ func (x *LookupMapping) String() string { func (*LookupMapping) ProtoMessage() {} func (x *LookupMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3031,7 +3240,7 @@ func (x *LookupMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use LookupMapping.ProtoReflect.Descriptor instead. func (*LookupMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{38} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{41} } func (x *LookupMapping) GetType() LookupType { @@ -3082,7 +3291,7 @@ type LookupFieldMapping struct { func (x *LookupFieldMapping) Reset() { *x = LookupFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3094,7 +3303,7 @@ func (x *LookupFieldMapping) String() string { func (*LookupFieldMapping) ProtoMessage() {} func (x *LookupFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3107,7 +3316,7 @@ func (x *LookupFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use LookupFieldMapping.ProtoReflect.Descriptor instead. func (*LookupFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{39} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{42} } func (x *LookupFieldMapping) GetType() string { @@ -3143,7 +3352,7 @@ type OperationMapping struct { func (x *OperationMapping) Reset() { *x = OperationMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3155,7 +3364,7 @@ func (x *OperationMapping) String() string { func (*OperationMapping) ProtoMessage() {} func (x *OperationMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3168,7 +3377,7 @@ func (x *OperationMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use OperationMapping.ProtoReflect.Descriptor instead. func (*OperationMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{40} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{43} } func (x *OperationMapping) GetType() OperationType { @@ -3229,7 +3438,7 @@ type EntityMapping struct { func (x *EntityMapping) Reset() { *x = EntityMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3241,7 +3450,7 @@ func (x *EntityMapping) String() string { func (*EntityMapping) ProtoMessage() {} func (x *EntityMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3254,7 +3463,7 @@ func (x *EntityMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EntityMapping.ProtoReflect.Descriptor instead. func (*EntityMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{41} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{44} } func (x *EntityMapping) GetTypeName() string { @@ -3322,7 +3531,7 @@ type RequiredFieldMapping struct { func (x *RequiredFieldMapping) Reset() { *x = RequiredFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3334,7 +3543,7 @@ func (x *RequiredFieldMapping) String() string { func (*RequiredFieldMapping) ProtoMessage() {} func (x *RequiredFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3347,7 +3556,7 @@ func (x *RequiredFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use RequiredFieldMapping.ProtoReflect.Descriptor instead. func (*RequiredFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{42} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{45} } func (x *RequiredFieldMapping) GetFieldMapping() *FieldMapping { @@ -3391,7 +3600,7 @@ type TypeFieldMapping struct { func (x *TypeFieldMapping) Reset() { *x = TypeFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3403,7 +3612,7 @@ func (x *TypeFieldMapping) String() string { func (*TypeFieldMapping) ProtoMessage() {} func (x *TypeFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3416,7 +3625,7 @@ func (x *TypeFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeFieldMapping.ProtoReflect.Descriptor instead. func (*TypeFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{43} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{46} } func (x *TypeFieldMapping) GetType() string { @@ -3448,7 +3657,7 @@ type FieldMapping struct { func (x *FieldMapping) Reset() { *x = FieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3460,7 +3669,7 @@ func (x *FieldMapping) String() string { func (*FieldMapping) ProtoMessage() {} func (x *FieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3473,7 +3682,7 @@ func (x *FieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldMapping.ProtoReflect.Descriptor instead. func (*FieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{44} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{47} } func (x *FieldMapping) GetOriginal() string { @@ -3510,7 +3719,7 @@ type ArgumentMapping struct { func (x *ArgumentMapping) Reset() { *x = ArgumentMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3522,7 +3731,7 @@ func (x *ArgumentMapping) String() string { func (*ArgumentMapping) ProtoMessage() {} func (x *ArgumentMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3535,7 +3744,7 @@ func (x *ArgumentMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use ArgumentMapping.ProtoReflect.Descriptor instead. func (*ArgumentMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{45} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{48} } func (x *ArgumentMapping) GetOriginal() string { @@ -3562,7 +3771,7 @@ type EnumMapping struct { func (x *EnumMapping) Reset() { *x = EnumMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3574,7 +3783,7 @@ func (x *EnumMapping) String() string { func (*EnumMapping) ProtoMessage() {} func (x *EnumMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3587,7 +3796,7 @@ func (x *EnumMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EnumMapping.ProtoReflect.Descriptor instead. func (*EnumMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{46} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{49} } func (x *EnumMapping) GetType() string { @@ -3614,7 +3823,7 @@ type EnumValueMapping struct { func (x *EnumValueMapping) Reset() { *x = EnumValueMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3626,7 +3835,7 @@ func (x *EnumValueMapping) String() string { func (*EnumValueMapping) ProtoMessage() {} func (x *EnumValueMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3639,7 +3848,7 @@ func (x *EnumValueMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EnumValueMapping.ProtoReflect.Descriptor instead. func (*EnumValueMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{47} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{50} } func (x *EnumValueMapping) GetOriginal() string { @@ -3667,7 +3876,7 @@ type NatsStreamConfiguration struct { func (x *NatsStreamConfiguration) Reset() { *x = NatsStreamConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3679,7 +3888,7 @@ func (x *NatsStreamConfiguration) String() string { func (*NatsStreamConfiguration) ProtoMessage() {} func (x *NatsStreamConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3692,7 +3901,7 @@ func (x *NatsStreamConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use NatsStreamConfiguration.ProtoReflect.Descriptor instead. func (*NatsStreamConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{48} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{51} } func (x *NatsStreamConfiguration) GetConsumerName() string { @@ -3727,7 +3936,7 @@ type NatsEventConfiguration struct { func (x *NatsEventConfiguration) Reset() { *x = NatsEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3739,7 +3948,7 @@ func (x *NatsEventConfiguration) String() string { func (*NatsEventConfiguration) ProtoMessage() {} func (x *NatsEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3752,7 +3961,7 @@ func (x *NatsEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use NatsEventConfiguration.ProtoReflect.Descriptor instead. func (*NatsEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{49} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{52} } func (x *NatsEventConfiguration) GetEngineEventConfiguration() *EngineEventConfiguration { @@ -3786,7 +3995,7 @@ type KafkaEventConfiguration struct { func (x *KafkaEventConfiguration) Reset() { *x = KafkaEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3798,7 +4007,7 @@ func (x *KafkaEventConfiguration) String() string { func (*KafkaEventConfiguration) ProtoMessage() {} func (x *KafkaEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3811,7 +4020,7 @@ func (x *KafkaEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use KafkaEventConfiguration.ProtoReflect.Descriptor instead. func (*KafkaEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{50} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{53} } func (x *KafkaEventConfiguration) GetEngineEventConfiguration() *EngineEventConfiguration { @@ -3838,7 +4047,7 @@ type RedisEventConfiguration struct { func (x *RedisEventConfiguration) Reset() { *x = RedisEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3850,7 +4059,7 @@ func (x *RedisEventConfiguration) String() string { func (*RedisEventConfiguration) ProtoMessage() {} func (x *RedisEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3863,7 +4072,7 @@ func (x *RedisEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use RedisEventConfiguration.ProtoReflect.Descriptor instead. func (*RedisEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{51} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{54} } func (x *RedisEventConfiguration) GetEngineEventConfiguration() *EngineEventConfiguration { @@ -3892,7 +4101,7 @@ type EngineEventConfiguration struct { func (x *EngineEventConfiguration) Reset() { *x = EngineEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3904,7 +4113,7 @@ func (x *EngineEventConfiguration) String() string { func (*EngineEventConfiguration) ProtoMessage() {} func (x *EngineEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3917,7 +4126,7 @@ func (x *EngineEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use EngineEventConfiguration.ProtoReflect.Descriptor instead. func (*EngineEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{52} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{55} } func (x *EngineEventConfiguration) GetProviderId() string { @@ -3959,7 +4168,7 @@ type DataSourceCustomEvents struct { func (x *DataSourceCustomEvents) Reset() { *x = DataSourceCustomEvents{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3971,7 +4180,7 @@ func (x *DataSourceCustomEvents) String() string { func (*DataSourceCustomEvents) ProtoMessage() {} func (x *DataSourceCustomEvents) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3984,7 +4193,7 @@ func (x *DataSourceCustomEvents) ProtoReflect() protoreflect.Message { // Deprecated: Use DataSourceCustomEvents.ProtoReflect.Descriptor instead. func (*DataSourceCustomEvents) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{53} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{56} } func (x *DataSourceCustomEvents) GetNats() []*NatsEventConfiguration { @@ -4017,7 +4226,7 @@ type DataSourceCustom_Static struct { func (x *DataSourceCustom_Static) Reset() { *x = DataSourceCustom_Static{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4029,7 +4238,7 @@ func (x *DataSourceCustom_Static) String() string { func (*DataSourceCustom_Static) ProtoMessage() {} func (x *DataSourceCustom_Static) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4042,7 +4251,7 @@ func (x *DataSourceCustom_Static) ProtoReflect() protoreflect.Message { // Deprecated: Use DataSourceCustom_Static.ProtoReflect.Descriptor instead. func (*DataSourceCustom_Static) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{54} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{57} } func (x *DataSourceCustom_Static) GetData() *ConfigurationVariable { @@ -4065,7 +4274,7 @@ type ConfigurationVariable struct { func (x *ConfigurationVariable) Reset() { *x = ConfigurationVariable{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4077,7 +4286,7 @@ func (x *ConfigurationVariable) String() string { func (*ConfigurationVariable) ProtoMessage() {} func (x *ConfigurationVariable) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4090,7 +4299,7 @@ func (x *ConfigurationVariable) ProtoReflect() protoreflect.Message { // Deprecated: Use ConfigurationVariable.ProtoReflect.Descriptor instead. func (*ConfigurationVariable) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{55} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{58} } func (x *ConfigurationVariable) GetKind() ConfigurationVariableKind { @@ -4138,7 +4347,7 @@ type DirectiveConfiguration struct { func (x *DirectiveConfiguration) Reset() { *x = DirectiveConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4150,7 +4359,7 @@ func (x *DirectiveConfiguration) String() string { func (*DirectiveConfiguration) ProtoMessage() {} func (x *DirectiveConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4163,7 +4372,7 @@ func (x *DirectiveConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use DirectiveConfiguration.ProtoReflect.Descriptor instead. func (*DirectiveConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{56} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{59} } func (x *DirectiveConfiguration) GetDirectiveName() string { @@ -4190,7 +4399,7 @@ type URLQueryConfiguration struct { func (x *URLQueryConfiguration) Reset() { *x = URLQueryConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4202,7 +4411,7 @@ func (x *URLQueryConfiguration) String() string { func (*URLQueryConfiguration) ProtoMessage() {} func (x *URLQueryConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4215,7 +4424,7 @@ func (x *URLQueryConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use URLQueryConfiguration.ProtoReflect.Descriptor instead. func (*URLQueryConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{57} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{60} } func (x *URLQueryConfiguration) GetName() string { @@ -4241,7 +4450,7 @@ type HTTPHeader struct { func (x *HTTPHeader) Reset() { *x = HTTPHeader{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4253,7 +4462,7 @@ func (x *HTTPHeader) String() string { func (*HTTPHeader) ProtoMessage() {} func (x *HTTPHeader) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4266,7 +4475,7 @@ func (x *HTTPHeader) ProtoReflect() protoreflect.Message { // Deprecated: Use HTTPHeader.ProtoReflect.Descriptor instead. func (*HTTPHeader) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{58} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{61} } func (x *HTTPHeader) GetValues() []*ConfigurationVariable { @@ -4287,7 +4496,7 @@ type MTLSConfiguration struct { func (x *MTLSConfiguration) Reset() { *x = MTLSConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4299,7 +4508,7 @@ func (x *MTLSConfiguration) String() string { func (*MTLSConfiguration) ProtoMessage() {} func (x *MTLSConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4312,7 +4521,7 @@ func (x *MTLSConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use MTLSConfiguration.ProtoReflect.Descriptor instead. func (*MTLSConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{59} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{62} } func (x *MTLSConfiguration) GetKey() *ConfigurationVariable { @@ -4350,7 +4559,7 @@ type GraphQLSubscriptionConfiguration struct { func (x *GraphQLSubscriptionConfiguration) Reset() { *x = GraphQLSubscriptionConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4362,7 +4571,7 @@ func (x *GraphQLSubscriptionConfiguration) String() string { func (*GraphQLSubscriptionConfiguration) ProtoMessage() {} func (x *GraphQLSubscriptionConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4375,7 +4584,7 @@ func (x *GraphQLSubscriptionConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use GraphQLSubscriptionConfiguration.ProtoReflect.Descriptor instead. func (*GraphQLSubscriptionConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{60} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{63} } func (x *GraphQLSubscriptionConfiguration) GetEnabled() bool { @@ -4423,7 +4632,7 @@ type GraphQLFederationConfiguration struct { func (x *GraphQLFederationConfiguration) Reset() { *x = GraphQLFederationConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4435,7 +4644,7 @@ func (x *GraphQLFederationConfiguration) String() string { func (*GraphQLFederationConfiguration) ProtoMessage() {} func (x *GraphQLFederationConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4448,7 +4657,7 @@ func (x *GraphQLFederationConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use GraphQLFederationConfiguration.ProtoReflect.Descriptor instead. func (*GraphQLFederationConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{61} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{64} } func (x *GraphQLFederationConfiguration) GetEnabled() bool { @@ -4475,7 +4684,7 @@ type InternedString struct { func (x *InternedString) Reset() { *x = InternedString{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4487,7 +4696,7 @@ func (x *InternedString) String() string { func (*InternedString) ProtoMessage() {} func (x *InternedString) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4500,7 +4709,7 @@ func (x *InternedString) ProtoReflect() protoreflect.Message { // Deprecated: Use InternedString.ProtoReflect.Descriptor instead. func (*InternedString) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{62} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{65} } func (x *InternedString) GetKey() string { @@ -4520,7 +4729,7 @@ type SingleTypeField struct { func (x *SingleTypeField) Reset() { *x = SingleTypeField{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4532,7 +4741,7 @@ func (x *SingleTypeField) String() string { func (*SingleTypeField) ProtoMessage() {} func (x *SingleTypeField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4545,7 +4754,7 @@ func (x *SingleTypeField) ProtoReflect() protoreflect.Message { // Deprecated: Use SingleTypeField.ProtoReflect.Descriptor instead. func (*SingleTypeField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{63} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{66} } func (x *SingleTypeField) GetTypeName() string { @@ -4572,7 +4781,7 @@ type SubscriptionFieldCondition struct { func (x *SubscriptionFieldCondition) Reset() { *x = SubscriptionFieldCondition{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4584,7 +4793,7 @@ func (x *SubscriptionFieldCondition) String() string { func (*SubscriptionFieldCondition) ProtoMessage() {} func (x *SubscriptionFieldCondition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4597,7 +4806,7 @@ func (x *SubscriptionFieldCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionFieldCondition.ProtoReflect.Descriptor instead. func (*SubscriptionFieldCondition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{64} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{67} } func (x *SubscriptionFieldCondition) GetFieldPath() []string { @@ -4626,7 +4835,7 @@ type SubscriptionFilterCondition struct { func (x *SubscriptionFilterCondition) Reset() { *x = SubscriptionFilterCondition{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4638,7 +4847,7 @@ func (x *SubscriptionFilterCondition) String() string { func (*SubscriptionFilterCondition) ProtoMessage() {} func (x *SubscriptionFilterCondition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4651,7 +4860,7 @@ func (x *SubscriptionFilterCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionFilterCondition.ProtoReflect.Descriptor instead. func (*SubscriptionFilterCondition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{65} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{68} } func (x *SubscriptionFilterCondition) GetAnd() []*SubscriptionFilterCondition { @@ -4691,7 +4900,7 @@ type CacheWarmerOperations struct { func (x *CacheWarmerOperations) Reset() { *x = CacheWarmerOperations{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4703,7 +4912,7 @@ func (x *CacheWarmerOperations) String() string { func (*CacheWarmerOperations) ProtoMessage() {} func (x *CacheWarmerOperations) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[69] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4716,7 +4925,7 @@ func (x *CacheWarmerOperations) ProtoReflect() protoreflect.Message { // Deprecated: Use CacheWarmerOperations.ProtoReflect.Descriptor instead. func (*CacheWarmerOperations) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{66} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{69} } func (x *CacheWarmerOperations) GetOperations() []*Operation { @@ -4736,7 +4945,7 @@ type Operation struct { func (x *Operation) Reset() { *x = Operation{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4748,7 +4957,7 @@ func (x *Operation) String() string { func (*Operation) ProtoMessage() {} func (x *Operation) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[70] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4761,7 +4970,7 @@ func (x *Operation) ProtoReflect() protoreflect.Message { // Deprecated: Use Operation.ProtoReflect.Descriptor instead. func (*Operation) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{67} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{70} } func (x *Operation) GetRequest() *OperationRequest { @@ -4789,7 +4998,7 @@ type OperationRequest struct { func (x *OperationRequest) Reset() { *x = OperationRequest{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4801,7 +5010,7 @@ func (x *OperationRequest) String() string { func (*OperationRequest) ProtoMessage() {} func (x *OperationRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[71] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4814,7 +5023,7 @@ func (x *OperationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use OperationRequest.ProtoReflect.Descriptor instead. func (*OperationRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{68} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{71} } func (x *OperationRequest) GetOperationName() string { @@ -4847,7 +5056,7 @@ type Extension struct { func (x *Extension) Reset() { *x = Extension{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[69] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4859,7 +5068,7 @@ func (x *Extension) String() string { func (*Extension) ProtoMessage() {} func (x *Extension) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[69] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[72] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4872,7 +5081,7 @@ func (x *Extension) ProtoReflect() protoreflect.Message { // Deprecated: Use Extension.ProtoReflect.Descriptor instead. func (*Extension) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{69} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{72} } func (x *Extension) GetPersistedQuery() *PersistedQuery { @@ -4892,7 +5101,7 @@ type PersistedQuery struct { func (x *PersistedQuery) Reset() { *x = PersistedQuery{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[70] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4904,7 +5113,7 @@ func (x *PersistedQuery) String() string { func (*PersistedQuery) ProtoMessage() {} func (x *PersistedQuery) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[70] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[73] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4917,7 +5126,7 @@ func (x *PersistedQuery) ProtoReflect() protoreflect.Message { // Deprecated: Use PersistedQuery.ProtoReflect.Descriptor instead. func (*PersistedQuery) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{70} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{73} } func (x *PersistedQuery) GetSha256Hash() string { @@ -4944,7 +5153,7 @@ type ClientInfo struct { func (x *ClientInfo) Reset() { *x = ClientInfo{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[71] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4956,7 +5165,7 @@ func (x *ClientInfo) String() string { func (*ClientInfo) ProtoMessage() {} func (x *ClientInfo) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[71] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[74] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4969,7 +5178,7 @@ func (x *ClientInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ClientInfo.ProtoReflect.Descriptor instead. func (*ClientInfo) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{71} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{74} } func (x *ClientInfo) GetName() string { @@ -5064,12 +5273,13 @@ const file_wg_cosmo_node_v1_node_proto_rawDesc = "" + "\x11entity_interfaces\x18\x0e \x03(\v2..wg.cosmo.node.v1.EntityInterfaceConfigurationR\x10entityInterfaces\x12[\n" + "\x11interface_objects\x18\x0f \x03(\v2..wg.cosmo.node.v1.EntityInterfaceConfigurationR\x10interfaceObjects\x12R\n" + "\x12cost_configuration\x18\x10 \x01(\v2#.wg.cosmo.node.v1.CostConfigurationR\x11costConfiguration\x12F\n" + - "\x0eentity_caching\x18\x11 \x01(\v2\x1f.wg.cosmo.node.v1.EntityCachingR\rentityCaching\"\xcc\x03\n" + + "\x0eentity_caching\x18\x11 \x01(\v2\x1f.wg.cosmo.node.v1.EntityCachingR\rentityCaching\"\xb5\x04\n" + "\rEntityCaching\x12j\n" + "\x1bentity_cache_configurations\x18\x01 \x03(\v2*.wg.cosmo.node.v1.EntityCacheConfigurationR\x19entityCacheConfigurations\x12v\n" + "\x1fcache_invalidate_configurations\x18\x02 \x03(\v2..wg.cosmo.node.v1.CacheInvalidateConfigurationR\x1dcacheInvalidateConfigurations\x12p\n" + "\x1dcache_populate_configurations\x18\x03 \x03(\v2,.wg.cosmo.node.v1.CachePopulateConfigurationR\x1bcachePopulateConfigurations\x12e\n" + - "\x15request_scoped_fields\x18\x04 \x03(\v21.wg.cosmo.node.v1.RequestScopedFieldConfigurationR\x13requestScopedFields\"\x95\x02\n" + + "\x15request_scoped_fields\x18\x04 \x03(\v21.wg.cosmo.node.v1.RequestScopedFieldConfigurationR\x13requestScopedFields\x12g\n" + + "\x1aquery_cache_configurations\x18\x05 \x03(\v2).wg.cosmo.node.v1.QueryCacheConfigurationR\x18queryCacheConfigurations\"\x95\x02\n" + "\x18EntityCacheConfiguration\x12\x1b\n" + "\ttype_name\x18\x01 \x01(\tR\btypeName\x12&\n" + "\x0fmax_age_seconds\x18\x02 \x01(\x03R\rmaxAgeSeconds\x12'\n" + @@ -5094,7 +5304,23 @@ const file_wg_cosmo_node_v1_node_proto_rawDesc = "" + "\n" + "field_name\x18\x01 \x01(\tR\tfieldName\x12\x1b\n" + "\ttype_name\x18\x02 \x01(\tR\btypeName\x12\x15\n" + - "\x06l1_key\x18\x03 \x01(\tR\x05l1Key\"\x98\x04\n" + + "\x06l1_key\x18\x03 \x01(\tR\x05l1Key\"\xa8\x02\n" + + "\x17QueryCacheConfiguration\x12\x1d\n" + + "\n" + + "field_name\x18\x01 \x01(\tR\tfieldName\x12&\n" + + "\x0fmax_age_seconds\x18\x02 \x01(\x03R\rmaxAgeSeconds\x12'\n" + + "\x0finclude_headers\x18\x03 \x01(\bR\x0eincludeHeaders\x12\x1f\n" + + "\vshadow_mode\x18\x04 \x01(\bR\n" + + "shadowMode\x12(\n" + + "\x10entity_type_name\x18\x05 \x01(\tR\x0eentityTypeName\x12R\n" + + "\x13entity_key_mappings\x18\x06 \x03(\v2\".wg.cosmo.node.v1.EntityKeyMappingR\x11entityKeyMappings\"\x8e\x01\n" + + "\x10EntityKeyMapping\x12(\n" + + "\x10entity_type_name\x18\x01 \x01(\tR\x0eentityTypeName\x12P\n" + + "\x0efield_mappings\x18\x02 \x03(\v2).wg.cosmo.node.v1.EntityCacheFieldMappingR\rfieldMappings\"\x83\x01\n" + + "\x17EntityCacheFieldMapping\x12(\n" + + "\x10entity_key_field\x18\x01 \x01(\tR\x0eentityKeyField\x12#\n" + + "\rargument_path\x18\x02 \x03(\tR\fargumentPath\x12\x19\n" + + "\bis_batch\x18\x03 \x01(\bR\aisBatch\"\x98\x04\n" + "\x11CostConfiguration\x12O\n" + "\rfield_weights\x18\x01 \x03(\v2*.wg.cosmo.node.v1.FieldWeightConfigurationR\ffieldWeights\x12K\n" + "\n" + @@ -5433,7 +5659,7 @@ func file_wg_cosmo_node_v1_node_proto_rawDescGZIP() []byte { } var file_wg_cosmo_node_v1_node_proto_enumTypes = make([]protoimpl.EnumInfo, 8) -var file_wg_cosmo_node_v1_node_proto_msgTypes = make([]protoimpl.MessageInfo, 79) +var file_wg_cosmo_node_v1_node_proto_msgTypes = make([]protoimpl.MessageInfo, 82) var file_wg_cosmo_node_v1_node_proto_goTypes = []any{ (ArgumentRenderConfiguration)(0), // 0: wg.cosmo.node.v1.ArgumentRenderConfiguration (ArgumentSource)(0), // 1: wg.cosmo.node.v1.ArgumentSource @@ -5460,185 +5686,191 @@ var file_wg_cosmo_node_v1_node_proto_goTypes = []any{ (*CacheInvalidateConfiguration)(nil), // 22: wg.cosmo.node.v1.CacheInvalidateConfiguration (*CachePopulateConfiguration)(nil), // 23: wg.cosmo.node.v1.CachePopulateConfiguration (*RequestScopedFieldConfiguration)(nil), // 24: wg.cosmo.node.v1.RequestScopedFieldConfiguration - (*CostConfiguration)(nil), // 25: wg.cosmo.node.v1.CostConfiguration - (*FieldWeightConfiguration)(nil), // 26: wg.cosmo.node.v1.FieldWeightConfiguration - (*FieldListSizeConfiguration)(nil), // 27: wg.cosmo.node.v1.FieldListSizeConfiguration - (*ArgumentConfiguration)(nil), // 28: wg.cosmo.node.v1.ArgumentConfiguration - (*Scopes)(nil), // 29: wg.cosmo.node.v1.Scopes - (*AuthorizationConfiguration)(nil), // 30: wg.cosmo.node.v1.AuthorizationConfiguration - (*FieldConfiguration)(nil), // 31: wg.cosmo.node.v1.FieldConfiguration - (*TypeConfiguration)(nil), // 32: wg.cosmo.node.v1.TypeConfiguration - (*TypeField)(nil), // 33: wg.cosmo.node.v1.TypeField - (*FieldCoordinates)(nil), // 34: wg.cosmo.node.v1.FieldCoordinates - (*FieldSetCondition)(nil), // 35: wg.cosmo.node.v1.FieldSetCondition - (*RequiredField)(nil), // 36: wg.cosmo.node.v1.RequiredField - (*EntityInterfaceConfiguration)(nil), // 37: wg.cosmo.node.v1.EntityInterfaceConfiguration - (*FetchConfiguration)(nil), // 38: wg.cosmo.node.v1.FetchConfiguration - (*StatusCodeTypeMapping)(nil), // 39: wg.cosmo.node.v1.StatusCodeTypeMapping - (*DataSourceCustom_GraphQL)(nil), // 40: wg.cosmo.node.v1.DataSourceCustom_GraphQL - (*GRPCConfiguration)(nil), // 41: wg.cosmo.node.v1.GRPCConfiguration - (*ImageReference)(nil), // 42: wg.cosmo.node.v1.ImageReference - (*PluginConfiguration)(nil), // 43: wg.cosmo.node.v1.PluginConfiguration - (*SSLConfiguration)(nil), // 44: wg.cosmo.node.v1.SSLConfiguration - (*GRPCMapping)(nil), // 45: wg.cosmo.node.v1.GRPCMapping - (*LookupMapping)(nil), // 46: wg.cosmo.node.v1.LookupMapping - (*LookupFieldMapping)(nil), // 47: wg.cosmo.node.v1.LookupFieldMapping - (*OperationMapping)(nil), // 48: wg.cosmo.node.v1.OperationMapping - (*EntityMapping)(nil), // 49: wg.cosmo.node.v1.EntityMapping - (*RequiredFieldMapping)(nil), // 50: wg.cosmo.node.v1.RequiredFieldMapping - (*TypeFieldMapping)(nil), // 51: wg.cosmo.node.v1.TypeFieldMapping - (*FieldMapping)(nil), // 52: wg.cosmo.node.v1.FieldMapping - (*ArgumentMapping)(nil), // 53: wg.cosmo.node.v1.ArgumentMapping - (*EnumMapping)(nil), // 54: wg.cosmo.node.v1.EnumMapping - (*EnumValueMapping)(nil), // 55: wg.cosmo.node.v1.EnumValueMapping - (*NatsStreamConfiguration)(nil), // 56: wg.cosmo.node.v1.NatsStreamConfiguration - (*NatsEventConfiguration)(nil), // 57: wg.cosmo.node.v1.NatsEventConfiguration - (*KafkaEventConfiguration)(nil), // 58: wg.cosmo.node.v1.KafkaEventConfiguration - (*RedisEventConfiguration)(nil), // 59: wg.cosmo.node.v1.RedisEventConfiguration - (*EngineEventConfiguration)(nil), // 60: wg.cosmo.node.v1.EngineEventConfiguration - (*DataSourceCustomEvents)(nil), // 61: wg.cosmo.node.v1.DataSourceCustomEvents - (*DataSourceCustom_Static)(nil), // 62: wg.cosmo.node.v1.DataSourceCustom_Static - (*ConfigurationVariable)(nil), // 63: wg.cosmo.node.v1.ConfigurationVariable - (*DirectiveConfiguration)(nil), // 64: wg.cosmo.node.v1.DirectiveConfiguration - (*URLQueryConfiguration)(nil), // 65: wg.cosmo.node.v1.URLQueryConfiguration - (*HTTPHeader)(nil), // 66: wg.cosmo.node.v1.HTTPHeader - (*MTLSConfiguration)(nil), // 67: wg.cosmo.node.v1.MTLSConfiguration - (*GraphQLSubscriptionConfiguration)(nil), // 68: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration - (*GraphQLFederationConfiguration)(nil), // 69: wg.cosmo.node.v1.GraphQLFederationConfiguration - (*InternedString)(nil), // 70: wg.cosmo.node.v1.InternedString - (*SingleTypeField)(nil), // 71: wg.cosmo.node.v1.SingleTypeField - (*SubscriptionFieldCondition)(nil), // 72: wg.cosmo.node.v1.SubscriptionFieldCondition - (*SubscriptionFilterCondition)(nil), // 73: wg.cosmo.node.v1.SubscriptionFilterCondition - (*CacheWarmerOperations)(nil), // 74: wg.cosmo.node.v1.CacheWarmerOperations - (*Operation)(nil), // 75: wg.cosmo.node.v1.Operation - (*OperationRequest)(nil), // 76: wg.cosmo.node.v1.OperationRequest - (*Extension)(nil), // 77: wg.cosmo.node.v1.Extension - (*PersistedQuery)(nil), // 78: wg.cosmo.node.v1.PersistedQuery - (*ClientInfo)(nil), // 79: wg.cosmo.node.v1.ClientInfo - nil, // 80: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry - nil, // 81: wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry - nil, // 82: wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry - nil, // 83: wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry - nil, // 84: wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry - nil, // 85: wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry - nil, // 86: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry - (common.EnumStatusCode)(0), // 87: wg.cosmo.common.EnumStatusCode - (common.GraphQLSubscriptionProtocol)(0), // 88: wg.cosmo.common.GraphQLSubscriptionProtocol - (common.GraphQLWebsocketSubprotocol)(0), // 89: wg.cosmo.common.GraphQLWebsocketSubprotocol + (*QueryCacheConfiguration)(nil), // 25: wg.cosmo.node.v1.QueryCacheConfiguration + (*EntityKeyMapping)(nil), // 26: wg.cosmo.node.v1.EntityKeyMapping + (*EntityCacheFieldMapping)(nil), // 27: wg.cosmo.node.v1.EntityCacheFieldMapping + (*CostConfiguration)(nil), // 28: wg.cosmo.node.v1.CostConfiguration + (*FieldWeightConfiguration)(nil), // 29: wg.cosmo.node.v1.FieldWeightConfiguration + (*FieldListSizeConfiguration)(nil), // 30: wg.cosmo.node.v1.FieldListSizeConfiguration + (*ArgumentConfiguration)(nil), // 31: wg.cosmo.node.v1.ArgumentConfiguration + (*Scopes)(nil), // 32: wg.cosmo.node.v1.Scopes + (*AuthorizationConfiguration)(nil), // 33: wg.cosmo.node.v1.AuthorizationConfiguration + (*FieldConfiguration)(nil), // 34: wg.cosmo.node.v1.FieldConfiguration + (*TypeConfiguration)(nil), // 35: wg.cosmo.node.v1.TypeConfiguration + (*TypeField)(nil), // 36: wg.cosmo.node.v1.TypeField + (*FieldCoordinates)(nil), // 37: wg.cosmo.node.v1.FieldCoordinates + (*FieldSetCondition)(nil), // 38: wg.cosmo.node.v1.FieldSetCondition + (*RequiredField)(nil), // 39: wg.cosmo.node.v1.RequiredField + (*EntityInterfaceConfiguration)(nil), // 40: wg.cosmo.node.v1.EntityInterfaceConfiguration + (*FetchConfiguration)(nil), // 41: wg.cosmo.node.v1.FetchConfiguration + (*StatusCodeTypeMapping)(nil), // 42: wg.cosmo.node.v1.StatusCodeTypeMapping + (*DataSourceCustom_GraphQL)(nil), // 43: wg.cosmo.node.v1.DataSourceCustom_GraphQL + (*GRPCConfiguration)(nil), // 44: wg.cosmo.node.v1.GRPCConfiguration + (*ImageReference)(nil), // 45: wg.cosmo.node.v1.ImageReference + (*PluginConfiguration)(nil), // 46: wg.cosmo.node.v1.PluginConfiguration + (*SSLConfiguration)(nil), // 47: wg.cosmo.node.v1.SSLConfiguration + (*GRPCMapping)(nil), // 48: wg.cosmo.node.v1.GRPCMapping + (*LookupMapping)(nil), // 49: wg.cosmo.node.v1.LookupMapping + (*LookupFieldMapping)(nil), // 50: wg.cosmo.node.v1.LookupFieldMapping + (*OperationMapping)(nil), // 51: wg.cosmo.node.v1.OperationMapping + (*EntityMapping)(nil), // 52: wg.cosmo.node.v1.EntityMapping + (*RequiredFieldMapping)(nil), // 53: wg.cosmo.node.v1.RequiredFieldMapping + (*TypeFieldMapping)(nil), // 54: wg.cosmo.node.v1.TypeFieldMapping + (*FieldMapping)(nil), // 55: wg.cosmo.node.v1.FieldMapping + (*ArgumentMapping)(nil), // 56: wg.cosmo.node.v1.ArgumentMapping + (*EnumMapping)(nil), // 57: wg.cosmo.node.v1.EnumMapping + (*EnumValueMapping)(nil), // 58: wg.cosmo.node.v1.EnumValueMapping + (*NatsStreamConfiguration)(nil), // 59: wg.cosmo.node.v1.NatsStreamConfiguration + (*NatsEventConfiguration)(nil), // 60: wg.cosmo.node.v1.NatsEventConfiguration + (*KafkaEventConfiguration)(nil), // 61: wg.cosmo.node.v1.KafkaEventConfiguration + (*RedisEventConfiguration)(nil), // 62: wg.cosmo.node.v1.RedisEventConfiguration + (*EngineEventConfiguration)(nil), // 63: wg.cosmo.node.v1.EngineEventConfiguration + (*DataSourceCustomEvents)(nil), // 64: wg.cosmo.node.v1.DataSourceCustomEvents + (*DataSourceCustom_Static)(nil), // 65: wg.cosmo.node.v1.DataSourceCustom_Static + (*ConfigurationVariable)(nil), // 66: wg.cosmo.node.v1.ConfigurationVariable + (*DirectiveConfiguration)(nil), // 67: wg.cosmo.node.v1.DirectiveConfiguration + (*URLQueryConfiguration)(nil), // 68: wg.cosmo.node.v1.URLQueryConfiguration + (*HTTPHeader)(nil), // 69: wg.cosmo.node.v1.HTTPHeader + (*MTLSConfiguration)(nil), // 70: wg.cosmo.node.v1.MTLSConfiguration + (*GraphQLSubscriptionConfiguration)(nil), // 71: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration + (*GraphQLFederationConfiguration)(nil), // 72: wg.cosmo.node.v1.GraphQLFederationConfiguration + (*InternedString)(nil), // 73: wg.cosmo.node.v1.InternedString + (*SingleTypeField)(nil), // 74: wg.cosmo.node.v1.SingleTypeField + (*SubscriptionFieldCondition)(nil), // 75: wg.cosmo.node.v1.SubscriptionFieldCondition + (*SubscriptionFilterCondition)(nil), // 76: wg.cosmo.node.v1.SubscriptionFilterCondition + (*CacheWarmerOperations)(nil), // 77: wg.cosmo.node.v1.CacheWarmerOperations + (*Operation)(nil), // 78: wg.cosmo.node.v1.Operation + (*OperationRequest)(nil), // 79: wg.cosmo.node.v1.OperationRequest + (*Extension)(nil), // 80: wg.cosmo.node.v1.Extension + (*PersistedQuery)(nil), // 81: wg.cosmo.node.v1.PersistedQuery + (*ClientInfo)(nil), // 82: wg.cosmo.node.v1.ClientInfo + nil, // 83: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry + nil, // 84: wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry + nil, // 85: wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry + nil, // 86: wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry + nil, // 87: wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry + nil, // 88: wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry + nil, // 89: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry + (common.EnumStatusCode)(0), // 90: wg.cosmo.common.EnumStatusCode + (common.GraphQLSubscriptionProtocol)(0), // 91: wg.cosmo.common.GraphQLSubscriptionProtocol + (common.GraphQLWebsocketSubprotocol)(0), // 92: wg.cosmo.common.GraphQLWebsocketSubprotocol } var file_wg_cosmo_node_v1_node_proto_depIdxs = []int32{ - 80, // 0: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.config_by_feature_flag_name:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry + 83, // 0: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.config_by_feature_flag_name:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry 18, // 1: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig.engine_config:type_name -> wg.cosmo.node.v1.EngineConfiguration 8, // 2: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig.subgraphs:type_name -> wg.cosmo.node.v1.Subgraph 18, // 3: wg.cosmo.node.v1.RouterConfig.engine_config:type_name -> wg.cosmo.node.v1.EngineConfiguration 8, // 4: wg.cosmo.node.v1.RouterConfig.subgraphs:type_name -> wg.cosmo.node.v1.Subgraph 9, // 5: wg.cosmo.node.v1.RouterConfig.feature_flag_configs:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs - 87, // 6: wg.cosmo.node.v1.Response.code:type_name -> wg.cosmo.common.EnumStatusCode + 90, // 6: wg.cosmo.node.v1.Response.code:type_name -> wg.cosmo.common.EnumStatusCode 15, // 7: wg.cosmo.node.v1.RegistrationInfo.account_limits:type_name -> wg.cosmo.node.v1.AccountLimits 12, // 8: wg.cosmo.node.v1.SelfRegisterResponse.response:type_name -> wg.cosmo.node.v1.Response 14, // 9: wg.cosmo.node.v1.SelfRegisterResponse.registrationInfo:type_name -> wg.cosmo.node.v1.RegistrationInfo 19, // 10: wg.cosmo.node.v1.EngineConfiguration.datasource_configurations:type_name -> wg.cosmo.node.v1.DataSourceConfiguration - 31, // 11: wg.cosmo.node.v1.EngineConfiguration.field_configurations:type_name -> wg.cosmo.node.v1.FieldConfiguration - 32, // 12: wg.cosmo.node.v1.EngineConfiguration.type_configurations:type_name -> wg.cosmo.node.v1.TypeConfiguration - 81, // 13: wg.cosmo.node.v1.EngineConfiguration.string_storage:type_name -> wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry + 34, // 11: wg.cosmo.node.v1.EngineConfiguration.field_configurations:type_name -> wg.cosmo.node.v1.FieldConfiguration + 35, // 12: wg.cosmo.node.v1.EngineConfiguration.type_configurations:type_name -> wg.cosmo.node.v1.TypeConfiguration + 84, // 13: wg.cosmo.node.v1.EngineConfiguration.string_storage:type_name -> wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry 2, // 14: wg.cosmo.node.v1.DataSourceConfiguration.kind:type_name -> wg.cosmo.node.v1.DataSourceKind - 33, // 15: wg.cosmo.node.v1.DataSourceConfiguration.root_nodes:type_name -> wg.cosmo.node.v1.TypeField - 33, // 16: wg.cosmo.node.v1.DataSourceConfiguration.child_nodes:type_name -> wg.cosmo.node.v1.TypeField - 40, // 17: wg.cosmo.node.v1.DataSourceConfiguration.custom_graphql:type_name -> wg.cosmo.node.v1.DataSourceCustom_GraphQL - 62, // 18: wg.cosmo.node.v1.DataSourceConfiguration.custom_static:type_name -> wg.cosmo.node.v1.DataSourceCustom_Static - 64, // 19: wg.cosmo.node.v1.DataSourceConfiguration.directives:type_name -> wg.cosmo.node.v1.DirectiveConfiguration - 36, // 20: wg.cosmo.node.v1.DataSourceConfiguration.keys:type_name -> wg.cosmo.node.v1.RequiredField - 36, // 21: wg.cosmo.node.v1.DataSourceConfiguration.provides:type_name -> wg.cosmo.node.v1.RequiredField - 36, // 22: wg.cosmo.node.v1.DataSourceConfiguration.requires:type_name -> wg.cosmo.node.v1.RequiredField - 61, // 23: wg.cosmo.node.v1.DataSourceConfiguration.custom_events:type_name -> wg.cosmo.node.v1.DataSourceCustomEvents - 37, // 24: wg.cosmo.node.v1.DataSourceConfiguration.entity_interfaces:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration - 37, // 25: wg.cosmo.node.v1.DataSourceConfiguration.interface_objects:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration - 25, // 26: wg.cosmo.node.v1.DataSourceConfiguration.cost_configuration:type_name -> wg.cosmo.node.v1.CostConfiguration + 36, // 15: wg.cosmo.node.v1.DataSourceConfiguration.root_nodes:type_name -> wg.cosmo.node.v1.TypeField + 36, // 16: wg.cosmo.node.v1.DataSourceConfiguration.child_nodes:type_name -> wg.cosmo.node.v1.TypeField + 43, // 17: wg.cosmo.node.v1.DataSourceConfiguration.custom_graphql:type_name -> wg.cosmo.node.v1.DataSourceCustom_GraphQL + 65, // 18: wg.cosmo.node.v1.DataSourceConfiguration.custom_static:type_name -> wg.cosmo.node.v1.DataSourceCustom_Static + 67, // 19: wg.cosmo.node.v1.DataSourceConfiguration.directives:type_name -> wg.cosmo.node.v1.DirectiveConfiguration + 39, // 20: wg.cosmo.node.v1.DataSourceConfiguration.keys:type_name -> wg.cosmo.node.v1.RequiredField + 39, // 21: wg.cosmo.node.v1.DataSourceConfiguration.provides:type_name -> wg.cosmo.node.v1.RequiredField + 39, // 22: wg.cosmo.node.v1.DataSourceConfiguration.requires:type_name -> wg.cosmo.node.v1.RequiredField + 64, // 23: wg.cosmo.node.v1.DataSourceConfiguration.custom_events:type_name -> wg.cosmo.node.v1.DataSourceCustomEvents + 40, // 24: wg.cosmo.node.v1.DataSourceConfiguration.entity_interfaces:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration + 40, // 25: wg.cosmo.node.v1.DataSourceConfiguration.interface_objects:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration + 28, // 26: wg.cosmo.node.v1.DataSourceConfiguration.cost_configuration:type_name -> wg.cosmo.node.v1.CostConfiguration 20, // 27: wg.cosmo.node.v1.DataSourceConfiguration.entity_caching:type_name -> wg.cosmo.node.v1.EntityCaching 21, // 28: wg.cosmo.node.v1.EntityCaching.entity_cache_configurations:type_name -> wg.cosmo.node.v1.EntityCacheConfiguration 22, // 29: wg.cosmo.node.v1.EntityCaching.cache_invalidate_configurations:type_name -> wg.cosmo.node.v1.CacheInvalidateConfiguration 23, // 30: wg.cosmo.node.v1.EntityCaching.cache_populate_configurations:type_name -> wg.cosmo.node.v1.CachePopulateConfiguration 24, // 31: wg.cosmo.node.v1.EntityCaching.request_scoped_fields:type_name -> wg.cosmo.node.v1.RequestScopedFieldConfiguration - 26, // 32: wg.cosmo.node.v1.CostConfiguration.field_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration - 27, // 33: wg.cosmo.node.v1.CostConfiguration.list_sizes:type_name -> wg.cosmo.node.v1.FieldListSizeConfiguration - 82, // 34: wg.cosmo.node.v1.CostConfiguration.type_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry - 83, // 35: wg.cosmo.node.v1.CostConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry - 84, // 36: wg.cosmo.node.v1.FieldWeightConfiguration.argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry - 85, // 37: wg.cosmo.node.v1.FieldWeightConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry - 1, // 38: wg.cosmo.node.v1.ArgumentConfiguration.source_type:type_name -> wg.cosmo.node.v1.ArgumentSource - 29, // 39: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes:type_name -> wg.cosmo.node.v1.Scopes - 29, // 40: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes_by_or:type_name -> wg.cosmo.node.v1.Scopes - 28, // 41: wg.cosmo.node.v1.FieldConfiguration.arguments_configuration:type_name -> wg.cosmo.node.v1.ArgumentConfiguration - 30, // 42: wg.cosmo.node.v1.FieldConfiguration.authorization_configuration:type_name -> wg.cosmo.node.v1.AuthorizationConfiguration - 73, // 43: wg.cosmo.node.v1.FieldConfiguration.subscription_filter_condition:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 34, // 44: wg.cosmo.node.v1.FieldSetCondition.field_coordinates_path:type_name -> wg.cosmo.node.v1.FieldCoordinates - 35, // 45: wg.cosmo.node.v1.RequiredField.conditions:type_name -> wg.cosmo.node.v1.FieldSetCondition - 63, // 46: wg.cosmo.node.v1.FetchConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 7, // 47: wg.cosmo.node.v1.FetchConfiguration.method:type_name -> wg.cosmo.node.v1.HTTPMethod - 86, // 48: wg.cosmo.node.v1.FetchConfiguration.header:type_name -> wg.cosmo.node.v1.FetchConfiguration.HeaderEntry - 63, // 49: wg.cosmo.node.v1.FetchConfiguration.body:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 65, // 50: wg.cosmo.node.v1.FetchConfiguration.query:type_name -> wg.cosmo.node.v1.URLQueryConfiguration - 67, // 51: wg.cosmo.node.v1.FetchConfiguration.mtls:type_name -> wg.cosmo.node.v1.MTLSConfiguration - 63, // 52: wg.cosmo.node.v1.FetchConfiguration.base_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 63, // 53: wg.cosmo.node.v1.FetchConfiguration.path:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 63, // 54: wg.cosmo.node.v1.FetchConfiguration.http_proxy_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 38, // 55: wg.cosmo.node.v1.DataSourceCustom_GraphQL.fetch:type_name -> wg.cosmo.node.v1.FetchConfiguration - 68, // 56: wg.cosmo.node.v1.DataSourceCustom_GraphQL.subscription:type_name -> wg.cosmo.node.v1.GraphQLSubscriptionConfiguration - 69, // 57: wg.cosmo.node.v1.DataSourceCustom_GraphQL.federation:type_name -> wg.cosmo.node.v1.GraphQLFederationConfiguration - 70, // 58: wg.cosmo.node.v1.DataSourceCustom_GraphQL.upstream_schema:type_name -> wg.cosmo.node.v1.InternedString - 71, // 59: wg.cosmo.node.v1.DataSourceCustom_GraphQL.custom_scalar_type_fields:type_name -> wg.cosmo.node.v1.SingleTypeField - 41, // 60: wg.cosmo.node.v1.DataSourceCustom_GraphQL.grpc:type_name -> wg.cosmo.node.v1.GRPCConfiguration - 45, // 61: wg.cosmo.node.v1.GRPCConfiguration.mapping:type_name -> wg.cosmo.node.v1.GRPCMapping - 43, // 62: wg.cosmo.node.v1.GRPCConfiguration.plugin:type_name -> wg.cosmo.node.v1.PluginConfiguration - 42, // 63: wg.cosmo.node.v1.PluginConfiguration.image_reference:type_name -> wg.cosmo.node.v1.ImageReference - 48, // 64: wg.cosmo.node.v1.GRPCMapping.operation_mappings:type_name -> wg.cosmo.node.v1.OperationMapping - 49, // 65: wg.cosmo.node.v1.GRPCMapping.entity_mappings:type_name -> wg.cosmo.node.v1.EntityMapping - 51, // 66: wg.cosmo.node.v1.GRPCMapping.type_field_mappings:type_name -> wg.cosmo.node.v1.TypeFieldMapping - 54, // 67: wg.cosmo.node.v1.GRPCMapping.enum_mappings:type_name -> wg.cosmo.node.v1.EnumMapping - 46, // 68: wg.cosmo.node.v1.GRPCMapping.resolve_mappings:type_name -> wg.cosmo.node.v1.LookupMapping - 3, // 69: wg.cosmo.node.v1.LookupMapping.type:type_name -> wg.cosmo.node.v1.LookupType - 47, // 70: wg.cosmo.node.v1.LookupMapping.lookup_mapping:type_name -> wg.cosmo.node.v1.LookupFieldMapping - 52, // 71: wg.cosmo.node.v1.LookupFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping - 4, // 72: wg.cosmo.node.v1.OperationMapping.type:type_name -> wg.cosmo.node.v1.OperationType - 50, // 73: wg.cosmo.node.v1.EntityMapping.required_field_mappings:type_name -> wg.cosmo.node.v1.RequiredFieldMapping - 52, // 74: wg.cosmo.node.v1.RequiredFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping - 52, // 75: wg.cosmo.node.v1.TypeFieldMapping.field_mappings:type_name -> wg.cosmo.node.v1.FieldMapping - 53, // 76: wg.cosmo.node.v1.FieldMapping.argument_mappings:type_name -> wg.cosmo.node.v1.ArgumentMapping - 55, // 77: wg.cosmo.node.v1.EnumMapping.values:type_name -> wg.cosmo.node.v1.EnumValueMapping - 60, // 78: wg.cosmo.node.v1.NatsEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 56, // 79: wg.cosmo.node.v1.NatsEventConfiguration.stream_configuration:type_name -> wg.cosmo.node.v1.NatsStreamConfiguration - 60, // 80: wg.cosmo.node.v1.KafkaEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 60, // 81: wg.cosmo.node.v1.RedisEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 5, // 82: wg.cosmo.node.v1.EngineEventConfiguration.type:type_name -> wg.cosmo.node.v1.EventType - 57, // 83: wg.cosmo.node.v1.DataSourceCustomEvents.nats:type_name -> wg.cosmo.node.v1.NatsEventConfiguration - 58, // 84: wg.cosmo.node.v1.DataSourceCustomEvents.kafka:type_name -> wg.cosmo.node.v1.KafkaEventConfiguration - 59, // 85: wg.cosmo.node.v1.DataSourceCustomEvents.redis:type_name -> wg.cosmo.node.v1.RedisEventConfiguration - 63, // 86: wg.cosmo.node.v1.DataSourceCustom_Static.data:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 6, // 87: wg.cosmo.node.v1.ConfigurationVariable.kind:type_name -> wg.cosmo.node.v1.ConfigurationVariableKind - 63, // 88: wg.cosmo.node.v1.HTTPHeader.values:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 63, // 89: wg.cosmo.node.v1.MTLSConfiguration.key:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 63, // 90: wg.cosmo.node.v1.MTLSConfiguration.cert:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 63, // 91: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 88, // 92: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol - 89, // 93: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.websocketSubprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol - 73, // 94: wg.cosmo.node.v1.SubscriptionFilterCondition.and:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 72, // 95: wg.cosmo.node.v1.SubscriptionFilterCondition.in:type_name -> wg.cosmo.node.v1.SubscriptionFieldCondition - 73, // 96: wg.cosmo.node.v1.SubscriptionFilterCondition.not:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 73, // 97: wg.cosmo.node.v1.SubscriptionFilterCondition.or:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 75, // 98: wg.cosmo.node.v1.CacheWarmerOperations.operations:type_name -> wg.cosmo.node.v1.Operation - 76, // 99: wg.cosmo.node.v1.Operation.request:type_name -> wg.cosmo.node.v1.OperationRequest - 79, // 100: wg.cosmo.node.v1.Operation.client:type_name -> wg.cosmo.node.v1.ClientInfo - 77, // 101: wg.cosmo.node.v1.OperationRequest.extensions:type_name -> wg.cosmo.node.v1.Extension - 78, // 102: wg.cosmo.node.v1.Extension.persisted_query:type_name -> wg.cosmo.node.v1.PersistedQuery - 10, // 103: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry.value:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig - 66, // 104: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry.value:type_name -> wg.cosmo.node.v1.HTTPHeader - 16, // 105: wg.cosmo.node.v1.NodeService.SelfRegister:input_type -> wg.cosmo.node.v1.SelfRegisterRequest - 17, // 106: wg.cosmo.node.v1.NodeService.SelfRegister:output_type -> wg.cosmo.node.v1.SelfRegisterResponse - 106, // [106:107] is the sub-list for method output_type - 105, // [105:106] is the sub-list for method input_type - 105, // [105:105] is the sub-list for extension type_name - 105, // [105:105] is the sub-list for extension extendee - 0, // [0:105] is the sub-list for field type_name + 25, // 32: wg.cosmo.node.v1.EntityCaching.query_cache_configurations:type_name -> wg.cosmo.node.v1.QueryCacheConfiguration + 26, // 33: wg.cosmo.node.v1.QueryCacheConfiguration.entity_key_mappings:type_name -> wg.cosmo.node.v1.EntityKeyMapping + 27, // 34: wg.cosmo.node.v1.EntityKeyMapping.field_mappings:type_name -> wg.cosmo.node.v1.EntityCacheFieldMapping + 29, // 35: wg.cosmo.node.v1.CostConfiguration.field_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration + 30, // 36: wg.cosmo.node.v1.CostConfiguration.list_sizes:type_name -> wg.cosmo.node.v1.FieldListSizeConfiguration + 85, // 37: wg.cosmo.node.v1.CostConfiguration.type_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry + 86, // 38: wg.cosmo.node.v1.CostConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry + 87, // 39: wg.cosmo.node.v1.FieldWeightConfiguration.argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry + 88, // 40: wg.cosmo.node.v1.FieldWeightConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry + 1, // 41: wg.cosmo.node.v1.ArgumentConfiguration.source_type:type_name -> wg.cosmo.node.v1.ArgumentSource + 32, // 42: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes:type_name -> wg.cosmo.node.v1.Scopes + 32, // 43: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes_by_or:type_name -> wg.cosmo.node.v1.Scopes + 31, // 44: wg.cosmo.node.v1.FieldConfiguration.arguments_configuration:type_name -> wg.cosmo.node.v1.ArgumentConfiguration + 33, // 45: wg.cosmo.node.v1.FieldConfiguration.authorization_configuration:type_name -> wg.cosmo.node.v1.AuthorizationConfiguration + 76, // 46: wg.cosmo.node.v1.FieldConfiguration.subscription_filter_condition:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 37, // 47: wg.cosmo.node.v1.FieldSetCondition.field_coordinates_path:type_name -> wg.cosmo.node.v1.FieldCoordinates + 38, // 48: wg.cosmo.node.v1.RequiredField.conditions:type_name -> wg.cosmo.node.v1.FieldSetCondition + 66, // 49: wg.cosmo.node.v1.FetchConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 7, // 50: wg.cosmo.node.v1.FetchConfiguration.method:type_name -> wg.cosmo.node.v1.HTTPMethod + 89, // 51: wg.cosmo.node.v1.FetchConfiguration.header:type_name -> wg.cosmo.node.v1.FetchConfiguration.HeaderEntry + 66, // 52: wg.cosmo.node.v1.FetchConfiguration.body:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 68, // 53: wg.cosmo.node.v1.FetchConfiguration.query:type_name -> wg.cosmo.node.v1.URLQueryConfiguration + 70, // 54: wg.cosmo.node.v1.FetchConfiguration.mtls:type_name -> wg.cosmo.node.v1.MTLSConfiguration + 66, // 55: wg.cosmo.node.v1.FetchConfiguration.base_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 66, // 56: wg.cosmo.node.v1.FetchConfiguration.path:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 66, // 57: wg.cosmo.node.v1.FetchConfiguration.http_proxy_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 41, // 58: wg.cosmo.node.v1.DataSourceCustom_GraphQL.fetch:type_name -> wg.cosmo.node.v1.FetchConfiguration + 71, // 59: wg.cosmo.node.v1.DataSourceCustom_GraphQL.subscription:type_name -> wg.cosmo.node.v1.GraphQLSubscriptionConfiguration + 72, // 60: wg.cosmo.node.v1.DataSourceCustom_GraphQL.federation:type_name -> wg.cosmo.node.v1.GraphQLFederationConfiguration + 73, // 61: wg.cosmo.node.v1.DataSourceCustom_GraphQL.upstream_schema:type_name -> wg.cosmo.node.v1.InternedString + 74, // 62: wg.cosmo.node.v1.DataSourceCustom_GraphQL.custom_scalar_type_fields:type_name -> wg.cosmo.node.v1.SingleTypeField + 44, // 63: wg.cosmo.node.v1.DataSourceCustom_GraphQL.grpc:type_name -> wg.cosmo.node.v1.GRPCConfiguration + 48, // 64: wg.cosmo.node.v1.GRPCConfiguration.mapping:type_name -> wg.cosmo.node.v1.GRPCMapping + 46, // 65: wg.cosmo.node.v1.GRPCConfiguration.plugin:type_name -> wg.cosmo.node.v1.PluginConfiguration + 45, // 66: wg.cosmo.node.v1.PluginConfiguration.image_reference:type_name -> wg.cosmo.node.v1.ImageReference + 51, // 67: wg.cosmo.node.v1.GRPCMapping.operation_mappings:type_name -> wg.cosmo.node.v1.OperationMapping + 52, // 68: wg.cosmo.node.v1.GRPCMapping.entity_mappings:type_name -> wg.cosmo.node.v1.EntityMapping + 54, // 69: wg.cosmo.node.v1.GRPCMapping.type_field_mappings:type_name -> wg.cosmo.node.v1.TypeFieldMapping + 57, // 70: wg.cosmo.node.v1.GRPCMapping.enum_mappings:type_name -> wg.cosmo.node.v1.EnumMapping + 49, // 71: wg.cosmo.node.v1.GRPCMapping.resolve_mappings:type_name -> wg.cosmo.node.v1.LookupMapping + 3, // 72: wg.cosmo.node.v1.LookupMapping.type:type_name -> wg.cosmo.node.v1.LookupType + 50, // 73: wg.cosmo.node.v1.LookupMapping.lookup_mapping:type_name -> wg.cosmo.node.v1.LookupFieldMapping + 55, // 74: wg.cosmo.node.v1.LookupFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping + 4, // 75: wg.cosmo.node.v1.OperationMapping.type:type_name -> wg.cosmo.node.v1.OperationType + 53, // 76: wg.cosmo.node.v1.EntityMapping.required_field_mappings:type_name -> wg.cosmo.node.v1.RequiredFieldMapping + 55, // 77: wg.cosmo.node.v1.RequiredFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping + 55, // 78: wg.cosmo.node.v1.TypeFieldMapping.field_mappings:type_name -> wg.cosmo.node.v1.FieldMapping + 56, // 79: wg.cosmo.node.v1.FieldMapping.argument_mappings:type_name -> wg.cosmo.node.v1.ArgumentMapping + 58, // 80: wg.cosmo.node.v1.EnumMapping.values:type_name -> wg.cosmo.node.v1.EnumValueMapping + 63, // 81: wg.cosmo.node.v1.NatsEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 59, // 82: wg.cosmo.node.v1.NatsEventConfiguration.stream_configuration:type_name -> wg.cosmo.node.v1.NatsStreamConfiguration + 63, // 83: wg.cosmo.node.v1.KafkaEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 63, // 84: wg.cosmo.node.v1.RedisEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 5, // 85: wg.cosmo.node.v1.EngineEventConfiguration.type:type_name -> wg.cosmo.node.v1.EventType + 60, // 86: wg.cosmo.node.v1.DataSourceCustomEvents.nats:type_name -> wg.cosmo.node.v1.NatsEventConfiguration + 61, // 87: wg.cosmo.node.v1.DataSourceCustomEvents.kafka:type_name -> wg.cosmo.node.v1.KafkaEventConfiguration + 62, // 88: wg.cosmo.node.v1.DataSourceCustomEvents.redis:type_name -> wg.cosmo.node.v1.RedisEventConfiguration + 66, // 89: wg.cosmo.node.v1.DataSourceCustom_Static.data:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 6, // 90: wg.cosmo.node.v1.ConfigurationVariable.kind:type_name -> wg.cosmo.node.v1.ConfigurationVariableKind + 66, // 91: wg.cosmo.node.v1.HTTPHeader.values:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 66, // 92: wg.cosmo.node.v1.MTLSConfiguration.key:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 66, // 93: wg.cosmo.node.v1.MTLSConfiguration.cert:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 66, // 94: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 91, // 95: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol + 92, // 96: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.websocketSubprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol + 76, // 97: wg.cosmo.node.v1.SubscriptionFilterCondition.and:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 75, // 98: wg.cosmo.node.v1.SubscriptionFilterCondition.in:type_name -> wg.cosmo.node.v1.SubscriptionFieldCondition + 76, // 99: wg.cosmo.node.v1.SubscriptionFilterCondition.not:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 76, // 100: wg.cosmo.node.v1.SubscriptionFilterCondition.or:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 78, // 101: wg.cosmo.node.v1.CacheWarmerOperations.operations:type_name -> wg.cosmo.node.v1.Operation + 79, // 102: wg.cosmo.node.v1.Operation.request:type_name -> wg.cosmo.node.v1.OperationRequest + 82, // 103: wg.cosmo.node.v1.Operation.client:type_name -> wg.cosmo.node.v1.ClientInfo + 80, // 104: wg.cosmo.node.v1.OperationRequest.extensions:type_name -> wg.cosmo.node.v1.Extension + 81, // 105: wg.cosmo.node.v1.Extension.persisted_query:type_name -> wg.cosmo.node.v1.PersistedQuery + 10, // 106: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry.value:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig + 69, // 107: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry.value:type_name -> wg.cosmo.node.v1.HTTPHeader + 16, // 108: wg.cosmo.node.v1.NodeService.SelfRegister:input_type -> wg.cosmo.node.v1.SelfRegisterRequest + 17, // 109: wg.cosmo.node.v1.NodeService.SelfRegister:output_type -> wg.cosmo.node.v1.SelfRegisterResponse + 109, // [109:110] is the sub-list for method output_type + 108, // [108:109] is the sub-list for method input_type + 108, // [108:108] is the sub-list for extension type_name + 108, // [108:108] is the sub-list for extension extendee + 0, // [0:108] is the sub-list for field type_name } func init() { file_wg_cosmo_node_v1_node_proto_init() } @@ -5651,20 +5883,20 @@ func file_wg_cosmo_node_v1_node_proto_init() { file_wg_cosmo_node_v1_node_proto_msgTypes[9].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[10].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[15].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[18].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[19].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[23].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[30].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[35].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[60].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[65].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[21].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[22].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[26].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[33].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[38].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[63].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[68].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_wg_cosmo_node_v1_node_proto_rawDesc), len(file_wg_cosmo_node_v1_node_proto_rawDesc)), NumEnums: 8, - NumMessages: 79, + NumMessages: 82, NumExtensions: 0, NumServices: 1, }, diff --git a/shared/src/router-config/builder.ts b/shared/src/router-config/builder.ts index 8a30e18025..1dce0b47a6 100644 --- a/shared/src/router-config/builder.ts +++ b/shared/src/router-config/builder.ts @@ -28,7 +28,9 @@ import { DataSourceKind, EngineConfiguration, EntityCacheConfiguration, + EntityCacheFieldMapping, EntityCaching, + EntityKeyMapping, FieldListSizeConfiguration, FieldWeightConfiguration, GraphQLSubscriptionConfiguration, @@ -39,6 +41,7 @@ import { InternedString, PluginConfiguration, RequestScopedFieldConfiguration, + QueryCacheConfiguration, RouterConfig, TypeField, } from '@wundergraph/cosmo-connect/dist/node/v1/node_pb'; @@ -88,6 +91,7 @@ function toEntityCaching(dataByTypeName?: Map): Ent const cacheInvalidateConfigurations: CacheInvalidateConfiguration[] = []; const cachePopulateConfigurations: CachePopulateConfiguration[] = []; const requestScopedFields: RequestScopedFieldConfiguration[] = []; + const queryCacheConfigurations: QueryCacheConfiguration[] = []; for (const data of dataByTypeName.values()) { for (const ec of data.entityCaching?.entityCacheConfigurations ?? []) { entityCacheConfigurations.push( @@ -129,12 +133,38 @@ function toEntityCaching(dataByTypeName?: Map): Ent }), ); } + for (const rfc of data.entityCaching?.queryCacheConfigurations ?? []) { + queryCacheConfigurations.push( + new QueryCacheConfiguration({ + fieldName: rfc.fieldName, + maxAgeSeconds: BigInt(rfc.maxAgeSeconds), + includeHeaders: rfc.includeHeaders, + shadowMode: rfc.shadowMode, + entityTypeName: rfc.entityTypeName, + entityKeyMappings: rfc.entityKeyMappings.map( + (m) => + new EntityKeyMapping({ + entityTypeName: m.entityTypeName, + fieldMappings: m.fieldMappings.map( + (fm) => + new EntityCacheFieldMapping({ + entityKeyField: fm.entityKeyField, + argumentPath: fm.argumentPath, + isBatch: fm.isBatch || false, + }), + ), + }), + ), + }), + ); + } } if ( entityCacheConfigurations.length === 0 && cacheInvalidateConfigurations.length === 0 && cachePopulateConfigurations.length === 0 && - requestScopedFields.length === 0 + requestScopedFields.length === 0 && + queryCacheConfigurations.length === 0 ) { return undefined; } @@ -143,6 +173,7 @@ function toEntityCaching(dataByTypeName?: Map): Ent cacheInvalidateConfigurations, cachePopulateConfigurations, requestScopedFields, + queryCacheConfigurations, }); } diff --git a/shared/test/entity-caching.test.ts b/shared/test/entity-caching.test.ts new file mode 100644 index 0000000000..bcec51be9e --- /dev/null +++ b/shared/test/entity-caching.test.ts @@ -0,0 +1,161 @@ +import { describe, expect, test } from 'vitest'; +import { federateSubgraphs, FederationSuccess, LATEST_ROUTER_COMPATIBILITY_VERSION, parse } from '@wundergraph/composition'; +import { EntityCaching } from '@wundergraph/cosmo-connect/dist/node/v1/node_pb'; +import { buildRouterConfig, ComposedSubgraph, SubgraphKind } from '../src'; + +// Drives a single subgraph through federation + buildRouterConfig and returns the EntityCaching +// proto message attached to its datasource configuration (or undefined when no caching directives +// are present). Exercises builder.ts#toEntityCaching end-to-end. +function buildEntityCaching(sdl: string): EntityCaching | undefined { + const result = federateSubgraphs({ + subgraphs: [{ name: 'test', url: '', definitions: parse(sdl) }], + version: LATEST_ROUTER_COMPATIBILITY_VERSION, + }) as FederationSuccess; + expect(result.success).toBe(true); + const cfg = result.subgraphConfigBySubgraphName.get('test')!; + const subgraph: ComposedSubgraph = { + kind: SubgraphKind.Standard, + id: '0', + name: 'test', + sdl, + url: '', + subscriptionUrl: '', + subscriptionProtocol: 'ws', + websocketSubprotocol: 'auto', + schema: cfg.schema, + configurationDataByTypeName: cfg.configurationDataByTypeName, + } as ComposedSubgraph; + const routerConfig = buildRouterConfig({ + federatedClientSDL: '', + fieldConfigurations: [], + routerCompatibilityVersion: LATEST_ROUTER_COMPATIBILITY_VERSION, + subgraphs: [subgraph], + federatedSDL: sdl, + schemaVersionId: '', + }); + return routerConfig.engineConfig!.datasourceConfigurations[0].entityCaching; +} + +describe('Entity caching router-config builder (toEntityCaching)', () => { + test('maps every entity-caching directive type into the EntityCaching message', () => { + const ec = buildEntityCaching(` + type Query { + product(id: ID! @openfed__is(fields: "id")): Product @openfed__queryCache(maxAge: 30) + me: User @openfed__requestScoped(key: "u") + } + type Mutation { + updateProduct(id: ID!): Product @openfed__cacheInvalidate + createProduct(name: String!): Product @openfed__cachePopulate(maxAge: 45) + } + type Product @key(fields: "id") @openfed__entityCache(maxAge: 60, includeHeaders: true, negativeCacheTTL: 5) { + id: ID! + name: String! + } + type User @key(fields: "id") { + id: ID! + name: String! + } + `); + + expect(ec).toBeDefined(); + + // @openfed__requestScoped + expect(ec!.requestScopedFields).toHaveLength(1); + expect(ec!.requestScopedFields[0].fieldName).toBe('me'); + expect(ec!.requestScopedFields[0].typeName).toBe('Query'); + expect(ec!.requestScopedFields[0].l1Key).toBe('test.u'); + + // @openfed__entityCache (Int args become BigInt; flag defaults preserved) + expect(ec!.entityCacheConfigurations).toHaveLength(1); + expect(ec!.entityCacheConfigurations[0].typeName).toBe('Product'); + expect(ec!.entityCacheConfigurations[0].maxAgeSeconds).toBe(60n); + expect(ec!.entityCacheConfigurations[0].notFoundCacheTtlSeconds).toBe(5n); + expect(ec!.entityCacheConfigurations[0].includeHeaders).toBe(true); + expect(ec!.entityCacheConfigurations[0].partialCacheLoad).toBe(false); + expect(ec!.entityCacheConfigurations[0].shadowMode).toBe(false); + + // @openfed__queryCache with @openfed__is mapping (non-batch) + expect(ec!.queryCacheConfigurations).toHaveLength(1); + const rfc = ec!.queryCacheConfigurations[0]; + expect(rfc.fieldName).toBe('product'); + expect(rfc.maxAgeSeconds).toBe(30n); + expect(rfc.entityTypeName).toBe('Product'); + expect(rfc.entityKeyMappings).toHaveLength(1); + expect(rfc.entityKeyMappings[0].entityTypeName).toBe('Product'); + expect(rfc.entityKeyMappings[0].fieldMappings).toHaveLength(1); + const fm = rfc.entityKeyMappings[0].fieldMappings[0]; + expect(fm.entityKeyField).toBe('id'); + expect(fm.argumentPath).toStrictEqual(['id']); + expect(fm.isBatch).toBe(false); + + // @openfed__cacheInvalidate + expect(ec!.cacheInvalidateConfigurations).toHaveLength(1); + expect(ec!.cacheInvalidateConfigurations[0].fieldName).toBe('updateProduct'); + expect(ec!.cacheInvalidateConfigurations[0].operationType).toBe('Mutation'); + expect(ec!.cacheInvalidateConfigurations[0].entityTypeName).toBe('Product'); + + // @openfed__cachePopulate with explicit maxAge + expect(ec!.cachePopulateConfigurations).toHaveLength(1); + expect(ec!.cachePopulateConfigurations[0].fieldName).toBe('createProduct'); + expect(ec!.cachePopulateConfigurations[0].operationType).toBe('Mutation'); + expect(ec!.cachePopulateConfigurations[0].entityTypeName).toBe('Product'); + expect(ec!.cachePopulateConfigurations[0].maxAgeSeconds).toBe(45n); + }); + + test('maps a batched @openfed__is mapping with isBatch=true on a list-returning queryCache field', () => { + const ec = buildEntityCaching(` + type Query { + products(ids: [ID!]! @openfed__is(fields: "id")): [Product!]! @openfed__queryCache(maxAge: 20) + } + type Product @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + name: String! + } + `); + + expect(ec).toBeDefined(); + expect(ec!.queryCacheConfigurations).toHaveLength(1); + const fm = ec!.queryCacheConfigurations[0].entityKeyMappings[0].fieldMappings[0]; + expect(fm.entityKeyField).toBe('id'); + expect(fm.argumentPath).toStrictEqual(['ids']); + expect(fm.isBatch).toBe(true); + }); + + test('a Subscription @openfed__cachePopulate without maxAge omits maxAgeSeconds', () => { + const ec = buildEntityCaching(` + type Query { + dummy: String! + } + type Subscription { + productStream: Product @openfed__cachePopulate + } + type Product @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + name: String! + } + `); + + expect(ec).toBeDefined(); + expect(ec!.cachePopulateConfigurations).toHaveLength(1); + const cp = ec!.cachePopulateConfigurations[0]; + expect(cp.fieldName).toBe('productStream'); + expect(cp.operationType).toBe('Subscription'); + expect(cp.entityTypeName).toBe('Product'); + // maxAge omitted on the directive → builder passes undefined, leaving the optional proto field unset. + expect(cp.maxAgeSeconds).toBeUndefined(); + }); + + test('a subgraph with no entity-caching directives omits the EntityCaching message', () => { + const ec = buildEntityCaching(` + type Query { + product(id: ID!): Product + } + type Product @key(fields: "id") { + id: ID! + name: String! + } + `); + + expect(ec).toBeUndefined(); + }); +}); From 4cbbaf74f59208618ae1ae1a38c959a5d200af62 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Fri, 19 Jun 2026 12:11:42 +0530 Subject: [PATCH 06/65] fix(composition): use OPENFED_-prefixed directive name constants and add createSubgraphWithDefault test helper --- .../directive-definition-data.ts | 18 +++++++++--------- composition/src/utils/string-constants.ts | 2 +- composition/src/v1/constants/constants.ts | 6 +++--- .../src/v1/constants/directive-definitions.ts | 6 +++--- .../v1/normalization/normalization-factory.ts | 16 +++++++++------- composition/src/v1/normalization/utils.ts | 4 ++-- composition/tests/utils/utils.ts | 4 ++++ .../tests/v1/directives/entity-cache.test.ts | 8 +++++++- 8 files changed, 38 insertions(+), 26 deletions(-) diff --git a/composition/src/directive-definition-data/directive-definition-data.ts b/composition/src/directive-definition-data/directive-definition-data.ts index 20bb517d09..24b0c9acfd 100644 --- a/composition/src/directive-definition-data/directive-definition-data.ts +++ b/composition/src/directive-definition-data/directive-definition-data.ts @@ -81,7 +81,7 @@ import { UNION_UPPER, URL_LOWER, WEIGHT, - ENTITY_CACHE, + OPENFED_ENTITY_CACHE, INCLUDE_HEADERS, MAX_AGE, NEGATIVE_CACHE_TTL, @@ -118,7 +118,7 @@ import { REQUIRES_SCOPES_DEFINITION, SEMANTIC_NON_NULL_DEFINITION, SHAREABLE_DEFINITION, - ENTITY_CACHE_DEFINITION, + OPENFED_ENTITY_CACHE_DEFINITION, SPECIFIED_BY_DEFINITION, SUBSCRIPTION_FILTER_DEFINITION, TAG_DEFINITION, @@ -962,7 +962,7 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ [ MAX_AGE, newDirectiveArgumentData({ - directive: `@${ENTITY_CACHE}`, + directive: `@${OPENFED_ENTITY_CACHE}`, name: MAX_AGE, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, typeNode: REQUIRED_INT_TYPE_NODE, @@ -971,7 +971,7 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ [ NEGATIVE_CACHE_TTL, newDirectiveArgumentData({ - directive: `@${ENTITY_CACHE}`, + directive: `@${OPENFED_ENTITY_CACHE}`, defaultValue: { kind: Kind.INT, value: '0' }, name: NEGATIVE_CACHE_TTL, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, @@ -981,7 +981,7 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ [ INCLUDE_HEADERS, newDirectiveArgumentData({ - directive: `@${ENTITY_CACHE}`, + directive: `@${OPENFED_ENTITY_CACHE}`, defaultValue: { kind: Kind.BOOLEAN, value: false }, name: INCLUDE_HEADERS, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, @@ -991,7 +991,7 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ [ PARTIAL_CACHE_LOAD, newDirectiveArgumentData({ - directive: `@${ENTITY_CACHE}`, + directive: `@${OPENFED_ENTITY_CACHE}`, defaultValue: { kind: Kind.BOOLEAN, value: false }, name: PARTIAL_CACHE_LOAD, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, @@ -1001,7 +1001,7 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ [ SHADOW_MODE, newDirectiveArgumentData({ - directive: `@${ENTITY_CACHE}`, + directive: `@${OPENFED_ENTITY_CACHE}`, defaultValue: { kind: Kind.BOOLEAN, value: false }, name: SHADOW_MODE, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, @@ -1010,8 +1010,8 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ ], ]), locations: new Set([OBJECT_UPPER]), - name: ENTITY_CACHE, - node: ENTITY_CACHE_DEFINITION, + name: OPENFED_ENTITY_CACHE, + node: OPENFED_ENTITY_CACHE_DEFINITION, optionalArgumentNames: new Set([NEGATIVE_CACHE_TTL, INCLUDE_HEADERS, PARTIAL_CACHE_LOAD, SHADOW_MODE]), requiredArgumentNames: new Set([MAX_AGE]), }); diff --git a/composition/src/utils/string-constants.ts b/composition/src/utils/string-constants.ts index 4177ca6b70..60045ad071 100644 --- a/composition/src/utils/string-constants.ts +++ b/composition/src/utils/string-constants.ts @@ -41,7 +41,7 @@ export const EDFS_REDIS_PUBLISH = 'edfs__redisPublish'; export const EDFS_REDIS_SUBSCRIBE = 'edfs__redisSubscribe'; export const ENTITIES = 'entities'; export const ENTITIES_FIELD = '_entities'; -export const ENTITY_CACHE = 'openfed__entityCache'; +export const OPENFED_ENTITY_CACHE = 'openfed__entityCache'; export const ENTITY_UNION = '_Entity'; export const ENUM = 'Enum'; export const ENUM_UPPER = 'ENUM'; diff --git a/composition/src/v1/constants/constants.ts b/composition/src/v1/constants/constants.ts index 0ef018d365..45c1fef51a 100644 --- a/composition/src/v1/constants/constants.ts +++ b/composition/src/v1/constants/constants.ts @@ -7,7 +7,7 @@ import { CONFIGURE_DESCRIPTION, CONNECT_FIELD_RESOLVER, COST, - ENTITY_CACHE, + OPENFED_ENTITY_CACHE, DEPRECATED, EDFS_KAFKA_PUBLISH, EDFS_KAFKA_SUBSCRIBE, @@ -75,7 +75,7 @@ import { SPECIFIED_BY_DEFINITION, SUBSCRIPTION_FILTER_DEFINITION, TAG_DEFINITION, - ENTITY_CACHE_DEFINITION, + OPENFED_ENTITY_CACHE_DEFINITION, } from './directive-definitions'; export const DIRECTIVE_DEFINITION_BY_NAME: ReadonlyMap = new Map< @@ -88,7 +88,7 @@ export const DIRECTIVE_DEFINITION_BY_NAME: ReadonlyMap { `), ROUTER_COMPATIBILITY_VERSION_ONE, ); - expect(errors.some((e) => e.message.includes('negativeCacheTTL must be a non-negative integer'))).toBe(true); + expect(errors).toHaveLength(1); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_ENTITY_CACHE, 'Product', FIRST_ORDINAL, [ + negativeCacheTTLNotNonNegativeIntegerErrorMessage(OPENFED_ENTITY_CACHE, -1), + ]), + ); }); }); From 9910b6df0ee6ab87ff3d0a195331d15868584dcb Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Fri, 19 Jun 2026 12:17:29 +0530 Subject: [PATCH 07/65] fix(composition): OPENFED_ constants, final directive tests, createSubgraphWithDefault helper --- .../directive-definition-data.ts | 26 +++++++++---------- composition/src/utils/string-constants.ts | 4 +-- composition/src/v1/constants/constants.ts | 12 ++++----- .../src/v1/constants/directive-definitions.ts | 12 ++++----- .../v1/normalization/normalization-factory.ts | 24 +++++++++-------- composition/src/v1/normalization/utils.ts | 8 +++--- composition/tests/utils/utils.ts | 4 +++ .../tests/v1/directives/entity-cache.test.ts | 8 +++++- 8 files changed, 55 insertions(+), 43 deletions(-) diff --git a/composition/src/directive-definition-data/directive-definition-data.ts b/composition/src/directive-definition-data/directive-definition-data.ts index d496a5bf87..e2a85cbf0c 100644 --- a/composition/src/directive-definition-data/directive-definition-data.ts +++ b/composition/src/directive-definition-data/directive-definition-data.ts @@ -81,8 +81,8 @@ import { UNION_UPPER, URL_LOWER, WEIGHT, - CACHE_INVALIDATE, - ENTITY_CACHE, + OPENFED_CACHE_INVALIDATE, + OPENFED_ENTITY_CACHE, INCLUDE_HEADERS, MAX_AGE, NEGATIVE_CACHE_TTL, @@ -119,8 +119,8 @@ import { REQUIRES_SCOPES_DEFINITION, SEMANTIC_NON_NULL_DEFINITION, SHAREABLE_DEFINITION, - CACHE_INVALIDATE_DEFINITION, - ENTITY_CACHE_DEFINITION, + OPENFED_CACHE_INVALIDATE_DEFINITION, + OPENFED_ENTITY_CACHE_DEFINITION, SPECIFIED_BY_DEFINITION, SUBSCRIPTION_FILTER_DEFINITION, TAG_DEFINITION, @@ -964,7 +964,7 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ [ MAX_AGE, newDirectiveArgumentData({ - directive: `@${ENTITY_CACHE}`, + directive: `@${OPENFED_ENTITY_CACHE}`, name: MAX_AGE, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, typeNode: REQUIRED_INT_TYPE_NODE, @@ -973,7 +973,7 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ [ NEGATIVE_CACHE_TTL, newDirectiveArgumentData({ - directive: `@${ENTITY_CACHE}`, + directive: `@${OPENFED_ENTITY_CACHE}`, defaultValue: { kind: Kind.INT, value: '0' }, name: NEGATIVE_CACHE_TTL, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, @@ -983,7 +983,7 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ [ INCLUDE_HEADERS, newDirectiveArgumentData({ - directive: `@${ENTITY_CACHE}`, + directive: `@${OPENFED_ENTITY_CACHE}`, defaultValue: { kind: Kind.BOOLEAN, value: false }, name: INCLUDE_HEADERS, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, @@ -993,7 +993,7 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ [ PARTIAL_CACHE_LOAD, newDirectiveArgumentData({ - directive: `@${ENTITY_CACHE}`, + directive: `@${OPENFED_ENTITY_CACHE}`, defaultValue: { kind: Kind.BOOLEAN, value: false }, name: PARTIAL_CACHE_LOAD, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, @@ -1003,7 +1003,7 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ [ SHADOW_MODE, newDirectiveArgumentData({ - directive: `@${ENTITY_CACHE}`, + directive: `@${OPENFED_ENTITY_CACHE}`, defaultValue: { kind: Kind.BOOLEAN, value: false }, name: SHADOW_MODE, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, @@ -1012,8 +1012,8 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ ], ]), locations: new Set([OBJECT_UPPER]), - name: ENTITY_CACHE, - node: ENTITY_CACHE_DEFINITION, + name: OPENFED_ENTITY_CACHE, + node: OPENFED_ENTITY_CACHE_DEFINITION, optionalArgumentNames: new Set([NEGATIVE_CACHE_TTL, INCLUDE_HEADERS, PARTIAL_CACHE_LOAD, SHADOW_MODE]), requiredArgumentNames: new Set([MAX_AGE]), }); @@ -1021,6 +1021,6 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ export const CACHE_INVALIDATE_DEFINITION_DATA = newDirectiveDefinitionData({ argumentDataByName: new Map(), locations: new Set([FIELD_DEFINITION_UPPER]), - name: CACHE_INVALIDATE, - node: CACHE_INVALIDATE_DEFINITION, + name: OPENFED_CACHE_INVALIDATE, + node: OPENFED_CACHE_INVALIDATE_DEFINITION, }); diff --git a/composition/src/utils/string-constants.ts b/composition/src/utils/string-constants.ts index 3c9af32635..e160e69ed2 100644 --- a/composition/src/utils/string-constants.ts +++ b/composition/src/utils/string-constants.ts @@ -10,7 +10,7 @@ export const AUTHENTICATED = 'authenticated'; export const ARGUMENT_DEFINITION_UPPER = 'ARGUMENT_DEFINITION'; export const BOOLEAN = 'boolean'; export const BOOLEAN_SCALAR = 'Boolean'; -export const CACHE_INVALIDATE = 'openfed__cacheInvalidate'; +export const OPENFED_CACHE_INVALIDATE = 'openfed__cacheInvalidate'; export const CHANNEL = 'channel'; export const CHANNELS = 'channels'; export const COMPOSE_DIRECTIVE = 'composeDirective'; @@ -42,7 +42,7 @@ export const EDFS_REDIS_PUBLISH = 'edfs__redisPublish'; export const EDFS_REDIS_SUBSCRIBE = 'edfs__redisSubscribe'; export const ENTITIES = 'entities'; export const ENTITIES_FIELD = '_entities'; -export const ENTITY_CACHE = 'openfed__entityCache'; +export const OPENFED_ENTITY_CACHE = 'openfed__entityCache'; export const ENTITY_UNION = '_Entity'; export const ENUM = 'Enum'; export const ENUM_UPPER = 'ENUM'; diff --git a/composition/src/v1/constants/constants.ts b/composition/src/v1/constants/constants.ts index f21769c0eb..01386f0fc9 100644 --- a/composition/src/v1/constants/constants.ts +++ b/composition/src/v1/constants/constants.ts @@ -6,9 +6,9 @@ import { CONFIGURE_CHILD_DESCRIPTIONS, CONFIGURE_DESCRIPTION, CONNECT_FIELD_RESOLVER, - CACHE_INVALIDATE, + OPENFED_CACHE_INVALIDATE, COST, - ENTITY_CACHE, + OPENFED_ENTITY_CACHE, DEPRECATED, EDFS_KAFKA_PUBLISH, EDFS_KAFKA_SUBSCRIBE, @@ -76,8 +76,8 @@ import { SPECIFIED_BY_DEFINITION, SUBSCRIPTION_FILTER_DEFINITION, TAG_DEFINITION, - CACHE_INVALIDATE_DEFINITION, - ENTITY_CACHE_DEFINITION, + OPENFED_CACHE_INVALIDATE_DEFINITION, + OPENFED_ENTITY_CACHE_DEFINITION, } from './directive-definitions'; export const DIRECTIVE_DEFINITION_BY_NAME: ReadonlyMap = new Map< @@ -90,8 +90,8 @@ export const DIRECTIVE_DEFINITION_BY_NAME: ReadonlyMap { `), ROUTER_COMPATIBILITY_VERSION_ONE, ); - expect(errors.some((e) => e.message.includes('negativeCacheTTL must be a non-negative integer'))).toBe(true); + expect(errors).toHaveLength(1); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_ENTITY_CACHE, 'Product', FIRST_ORDINAL, [ + negativeCacheTTLNotNonNegativeIntegerErrorMessage(OPENFED_ENTITY_CACHE, -1), + ]), + ); }); }); From 75a58122bd086573bac8ed3781b80997b2a13892 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Fri, 19 Jun 2026 12:17:50 +0530 Subject: [PATCH 08/65] fix(composition): OPENFED_ constants, final directive tests, createSubgraphWithDefault helper --- .../directive-definition-data.ts | 36 ++++++++-------- composition/src/utils/string-constants.ts | 6 +-- composition/src/v1/constants/constants.ts | 18 ++++---- .../src/v1/constants/directive-definitions.ts | 18 ++++---- .../v1/normalization/normalization-factory.ts | 42 ++++++++++--------- composition/src/v1/normalization/utils.ts | 12 +++--- composition/tests/utils/utils.ts | 4 ++ .../tests/v1/directives/entity-cache.test.ts | 8 +++- 8 files changed, 79 insertions(+), 65 deletions(-) diff --git a/composition/src/directive-definition-data/directive-definition-data.ts b/composition/src/directive-definition-data/directive-definition-data.ts index a675e84fa7..32eae0a524 100644 --- a/composition/src/directive-definition-data/directive-definition-data.ts +++ b/composition/src/directive-definition-data/directive-definition-data.ts @@ -81,9 +81,9 @@ import { UNION_UPPER, URL_LOWER, WEIGHT, - CACHE_INVALIDATE, - CACHE_POPULATE, - ENTITY_CACHE, + OPENFED_CACHE_INVALIDATE, + OPENFED_CACHE_POPULATE, + OPENFED_ENTITY_CACHE, INCLUDE_HEADERS, MAX_AGE, NEGATIVE_CACHE_TTL, @@ -120,9 +120,9 @@ import { REQUIRES_SCOPES_DEFINITION, SEMANTIC_NON_NULL_DEFINITION, SHAREABLE_DEFINITION, - CACHE_INVALIDATE_DEFINITION, - CACHE_POPULATE_DEFINITION, - ENTITY_CACHE_DEFINITION, + OPENFED_CACHE_INVALIDATE_DEFINITION, + OPENFED_CACHE_POPULATE_DEFINITION, + OPENFED_ENTITY_CACHE_DEFINITION, SPECIFIED_BY_DEFINITION, SUBSCRIPTION_FILTER_DEFINITION, TAG_DEFINITION, @@ -966,7 +966,7 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ [ MAX_AGE, newDirectiveArgumentData({ - directive: `@${ENTITY_CACHE}`, + directive: `@${OPENFED_ENTITY_CACHE}`, name: MAX_AGE, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, typeNode: REQUIRED_INT_TYPE_NODE, @@ -975,7 +975,7 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ [ NEGATIVE_CACHE_TTL, newDirectiveArgumentData({ - directive: `@${ENTITY_CACHE}`, + directive: `@${OPENFED_ENTITY_CACHE}`, defaultValue: { kind: Kind.INT, value: '0' }, name: NEGATIVE_CACHE_TTL, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, @@ -985,7 +985,7 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ [ INCLUDE_HEADERS, newDirectiveArgumentData({ - directive: `@${ENTITY_CACHE}`, + directive: `@${OPENFED_ENTITY_CACHE}`, defaultValue: { kind: Kind.BOOLEAN, value: false }, name: INCLUDE_HEADERS, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, @@ -995,7 +995,7 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ [ PARTIAL_CACHE_LOAD, newDirectiveArgumentData({ - directive: `@${ENTITY_CACHE}`, + directive: `@${OPENFED_ENTITY_CACHE}`, defaultValue: { kind: Kind.BOOLEAN, value: false }, name: PARTIAL_CACHE_LOAD, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, @@ -1005,7 +1005,7 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ [ SHADOW_MODE, newDirectiveArgumentData({ - directive: `@${ENTITY_CACHE}`, + directive: `@${OPENFED_ENTITY_CACHE}`, defaultValue: { kind: Kind.BOOLEAN, value: false }, name: SHADOW_MODE, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, @@ -1014,8 +1014,8 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ ], ]), locations: new Set([OBJECT_UPPER]), - name: ENTITY_CACHE, - node: ENTITY_CACHE_DEFINITION, + name: OPENFED_ENTITY_CACHE, + node: OPENFED_ENTITY_CACHE_DEFINITION, optionalArgumentNames: new Set([NEGATIVE_CACHE_TTL, INCLUDE_HEADERS, PARTIAL_CACHE_LOAD, SHADOW_MODE]), requiredArgumentNames: new Set([MAX_AGE]), }); @@ -1023,8 +1023,8 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ export const CACHE_INVALIDATE_DEFINITION_DATA = newDirectiveDefinitionData({ argumentDataByName: new Map(), locations: new Set([FIELD_DEFINITION_UPPER]), - name: CACHE_INVALIDATE, - node: CACHE_INVALIDATE_DEFINITION, + name: OPENFED_CACHE_INVALIDATE, + node: OPENFED_CACHE_INVALIDATE_DEFINITION, }); export const CACHE_POPULATE_DEFINITION_DATA = newDirectiveDefinitionData({ @@ -1032,7 +1032,7 @@ export const CACHE_POPULATE_DEFINITION_DATA = newDirectiveDefinitionData({ [ MAX_AGE, newDirectiveArgumentData({ - directive: `@${CACHE_POPULATE}`, + directive: `@${OPENFED_CACHE_POPULATE}`, name: MAX_AGE, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, typeNode: stringToNamedTypeNode(INT_SCALAR), @@ -1040,7 +1040,7 @@ export const CACHE_POPULATE_DEFINITION_DATA = newDirectiveDefinitionData({ ], ]), locations: new Set([FIELD_DEFINITION_UPPER]), - name: CACHE_POPULATE, - node: CACHE_POPULATE_DEFINITION, + name: OPENFED_CACHE_POPULATE, + node: OPENFED_CACHE_POPULATE_DEFINITION, optionalArgumentNames: new Set([MAX_AGE]), }); diff --git a/composition/src/utils/string-constants.ts b/composition/src/utils/string-constants.ts index acf64234c6..3235f9ce05 100644 --- a/composition/src/utils/string-constants.ts +++ b/composition/src/utils/string-constants.ts @@ -10,8 +10,8 @@ export const AUTHENTICATED = 'authenticated'; export const ARGUMENT_DEFINITION_UPPER = 'ARGUMENT_DEFINITION'; export const BOOLEAN = 'boolean'; export const BOOLEAN_SCALAR = 'Boolean'; -export const CACHE_INVALIDATE = 'openfed__cacheInvalidate'; -export const CACHE_POPULATE = 'openfed__cachePopulate'; +export const OPENFED_CACHE_INVALIDATE = 'openfed__cacheInvalidate'; +export const OPENFED_CACHE_POPULATE = 'openfed__cachePopulate'; export const CHANNEL = 'channel'; export const CHANNELS = 'channels'; export const COMPOSE_DIRECTIVE = 'composeDirective'; @@ -43,7 +43,7 @@ export const EDFS_REDIS_PUBLISH = 'edfs__redisPublish'; export const EDFS_REDIS_SUBSCRIBE = 'edfs__redisSubscribe'; export const ENTITIES = 'entities'; export const ENTITIES_FIELD = '_entities'; -export const ENTITY_CACHE = 'openfed__entityCache'; +export const OPENFED_ENTITY_CACHE = 'openfed__entityCache'; export const ENTITY_UNION = '_Entity'; export const ENUM = 'Enum'; export const ENUM_UPPER = 'ENUM'; diff --git a/composition/src/v1/constants/constants.ts b/composition/src/v1/constants/constants.ts index 0f950b5ed5..a91e5bf469 100644 --- a/composition/src/v1/constants/constants.ts +++ b/composition/src/v1/constants/constants.ts @@ -6,10 +6,10 @@ import { CONFIGURE_CHILD_DESCRIPTIONS, CONFIGURE_DESCRIPTION, CONNECT_FIELD_RESOLVER, - CACHE_INVALIDATE, - CACHE_POPULATE, + OPENFED_CACHE_INVALIDATE, + OPENFED_CACHE_POPULATE, COST, - ENTITY_CACHE, + OPENFED_ENTITY_CACHE, DEPRECATED, EDFS_KAFKA_PUBLISH, EDFS_KAFKA_SUBSCRIBE, @@ -77,9 +77,9 @@ import { SPECIFIED_BY_DEFINITION, SUBSCRIPTION_FILTER_DEFINITION, TAG_DEFINITION, - CACHE_INVALIDATE_DEFINITION, - CACHE_POPULATE_DEFINITION, - ENTITY_CACHE_DEFINITION, + OPENFED_CACHE_INVALIDATE_DEFINITION, + OPENFED_CACHE_POPULATE_DEFINITION, + OPENFED_ENTITY_CACHE_DEFINITION, } from './directive-definitions'; export const DIRECTIVE_DEFINITION_BY_NAME: ReadonlyMap = new Map< @@ -92,9 +92,9 @@ export const DIRECTIVE_DEFINITION_BY_NAME: ReadonlyMap arg.name.value === MAX_AGE); let maxAgeSeconds: number | undefined; @@ -4214,8 +4218,8 @@ export class NormalizationFactory { const maxAgeRaw = parseInt(maxAgeArgument.value.value, 10); if (maxAgeRaw <= 0) { this.errors.push( - invalidDirectiveError(CACHE_POPULATE, fieldCoords, FIRST_ORDINAL, [ - maxAgeNotPositiveIntegerErrorMessage(CACHE_POPULATE, maxAgeRaw), + invalidDirectiveError(OPENFED_CACHE_POPULATE, fieldCoords, FIRST_ORDINAL, [ + maxAgeNotPositiveIntegerErrorMessage(OPENFED_CACHE_POPULATE, maxAgeRaw), ]), ); return; diff --git a/composition/src/v1/normalization/utils.ts b/composition/src/v1/normalization/utils.ts index 4edbd10d54..8fa5b00994 100644 --- a/composition/src/v1/normalization/utils.ts +++ b/composition/src/v1/normalization/utils.ts @@ -87,10 +87,10 @@ import { CONFIGURE_CHILD_DESCRIPTIONS, CONFIGURE_DESCRIPTION, CONNECT_FIELD_RESOLVER, - CACHE_INVALIDATE, - CACHE_POPULATE, + OPENFED_CACHE_INVALIDATE, + OPENFED_CACHE_POPULATE, COST, - ENTITY_CACHE, + OPENFED_ENTITY_CACHE, DEPRECATED, EDFS_KAFKA_PUBLISH, EDFS_KAFKA_SUBSCRIBE, @@ -479,9 +479,9 @@ export function initializeDirectiveDefinitionDatas(): Map { `), ROUTER_COMPATIBILITY_VERSION_ONE, ); - expect(errors.some((e) => e.message.includes('negativeCacheTTL must be a non-negative integer'))).toBe(true); + expect(errors).toHaveLength(1); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_ENTITY_CACHE, 'Product', FIRST_ORDINAL, [ + negativeCacheTTLNotNonNegativeIntegerErrorMessage(OPENFED_ENTITY_CACHE, -1), + ]), + ); }); }); From ea8c9b7d88c5f6b8fc2de38e4fe30420b14c496e Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Fri, 19 Jun 2026 12:17:57 +0530 Subject: [PATCH 09/65] fix(composition): OPENFED_ constants, final directive tests, createSubgraphWithDefault helper --- .../directive-definition-data.ts | 47 +++++++++---------- composition/src/utils/string-constants.ts | 8 ++-- composition/src/v1/constants/constants.ts | 24 +++++----- .../src/v1/constants/directive-definitions.ts | 25 +++++----- .../v1/normalization/normalization-factory.ts | 46 +++++++++--------- composition/src/v1/normalization/utils.ts | 16 +++---- composition/tests/utils/utils.ts | 4 ++ .../tests/v1/directives/entity-cache.test.ts | 8 +++- 8 files changed, 95 insertions(+), 83 deletions(-) diff --git a/composition/src/directive-definition-data/directive-definition-data.ts b/composition/src/directive-definition-data/directive-definition-data.ts index f2c8af2fe0..7bc2e00843 100644 --- a/composition/src/directive-definition-data/directive-definition-data.ts +++ b/composition/src/directive-definition-data/directive-definition-data.ts @@ -81,14 +81,14 @@ import { UNION_UPPER, URL_LOWER, WEIGHT, - CACHE_INVALIDATE, - CACHE_POPULATE, - ENTITY_CACHE, + OPENFED_CACHE_INVALIDATE, + OPENFED_CACHE_POPULATE, + OPENFED_ENTITY_CACHE, INCLUDE_HEADERS, MAX_AGE, NEGATIVE_CACHE_TTL, PARTIAL_CACHE_LOAD, - REQUEST_SCOPED, + OPENFED_REQUEST_SCOPED, SHADOW_MODE, } from '../utils/string-constants'; import { @@ -121,10 +121,10 @@ import { REQUIRES_SCOPES_DEFINITION, SEMANTIC_NON_NULL_DEFINITION, SHAREABLE_DEFINITION, - CACHE_INVALIDATE_DEFINITION, - CACHE_POPULATE_DEFINITION, - ENTITY_CACHE_DEFINITION, - REQUEST_SCOPED_DEFINITION, + OPENFED_CACHE_INVALIDATE_DEFINITION, + OPENFED_CACHE_POPULATE_DEFINITION, + OPENFED_ENTITY_CACHE_DEFINITION, + OPENFED_REQUEST_SCOPED_DEFINITION, SPECIFIED_BY_DEFINITION, SUBSCRIPTION_FILTER_DEFINITION, TAG_DEFINITION, @@ -968,7 +968,7 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ [ MAX_AGE, newDirectiveArgumentData({ - directive: `@${ENTITY_CACHE}`, + directive: `@${OPENFED_ENTITY_CACHE}`, name: MAX_AGE, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, typeNode: REQUIRED_INT_TYPE_NODE, @@ -977,7 +977,7 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ [ NEGATIVE_CACHE_TTL, newDirectiveArgumentData({ - directive: `@${ENTITY_CACHE}`, + directive: `@${OPENFED_ENTITY_CACHE}`, defaultValue: { kind: Kind.INT, value: '0' }, name: NEGATIVE_CACHE_TTL, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, @@ -987,7 +987,7 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ [ INCLUDE_HEADERS, newDirectiveArgumentData({ - directive: `@${ENTITY_CACHE}`, + directive: `@${OPENFED_ENTITY_CACHE}`, defaultValue: { kind: Kind.BOOLEAN, value: false }, name: INCLUDE_HEADERS, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, @@ -997,7 +997,7 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ [ PARTIAL_CACHE_LOAD, newDirectiveArgumentData({ - directive: `@${ENTITY_CACHE}`, + directive: `@${OPENFED_ENTITY_CACHE}`, defaultValue: { kind: Kind.BOOLEAN, value: false }, name: PARTIAL_CACHE_LOAD, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, @@ -1007,7 +1007,7 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ [ SHADOW_MODE, newDirectiveArgumentData({ - directive: `@${ENTITY_CACHE}`, + directive: `@${OPENFED_ENTITY_CACHE}`, defaultValue: { kind: Kind.BOOLEAN, value: false }, name: SHADOW_MODE, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, @@ -1016,8 +1016,8 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ ], ]), locations: new Set([OBJECT_UPPER]), - name: ENTITY_CACHE, - node: ENTITY_CACHE_DEFINITION, + name: OPENFED_ENTITY_CACHE, + node: OPENFED_ENTITY_CACHE_DEFINITION, optionalArgumentNames: new Set([NEGATIVE_CACHE_TTL, INCLUDE_HEADERS, PARTIAL_CACHE_LOAD, SHADOW_MODE]), requiredArgumentNames: new Set([MAX_AGE]), }); @@ -1025,8 +1025,8 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ export const CACHE_INVALIDATE_DEFINITION_DATA = newDirectiveDefinitionData({ argumentDataByName: new Map(), locations: new Set([FIELD_DEFINITION_UPPER]), - name: CACHE_INVALIDATE, - node: CACHE_INVALIDATE_DEFINITION, + name: OPENFED_CACHE_INVALIDATE, + node: OPENFED_CACHE_INVALIDATE_DEFINITION, }); export const CACHE_POPULATE_DEFINITION_DATA = newDirectiveDefinitionData({ @@ -1034,7 +1034,7 @@ export const CACHE_POPULATE_DEFINITION_DATA = newDirectiveDefinitionData({ [ MAX_AGE, newDirectiveArgumentData({ - directive: `@${CACHE_POPULATE}`, + directive: `@${OPENFED_CACHE_POPULATE}`, name: MAX_AGE, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, typeNode: stringToNamedTypeNode(INT_SCALAR), @@ -1042,8 +1042,8 @@ export const CACHE_POPULATE_DEFINITION_DATA = newDirectiveDefinitionData({ ], ]), locations: new Set([FIELD_DEFINITION_UPPER]), - name: CACHE_POPULATE, - node: CACHE_POPULATE_DEFINITION, + name: OPENFED_CACHE_POPULATE, + node: OPENFED_CACHE_POPULATE_DEFINITION, optionalArgumentNames: new Set([MAX_AGE]), }); export const REQUEST_SCOPED_DEFINITION_DATA = newDirectiveDefinitionData({ @@ -1051,7 +1051,7 @@ export const REQUEST_SCOPED_DEFINITION_DATA = newDirectiveDefinitionData({ [ KEY, newDirectiveArgumentData({ - directive: `@${REQUEST_SCOPED}`, + directive: `@${OPENFED_REQUEST_SCOPED}`, name: KEY, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, typeNode: REQUIRED_STRING_TYPE_NODE, @@ -1059,8 +1059,7 @@ export const REQUEST_SCOPED_DEFINITION_DATA = newDirectiveDefinitionData({ ], ]), locations: new Set([FIELD_DEFINITION_UPPER]), - name: REQUEST_SCOPED, - node: REQUEST_SCOPED_DEFINITION, + name: OPENFED_REQUEST_SCOPED, + node: OPENFED_REQUEST_SCOPED_DEFINITION, requiredArgumentNames: new Set([KEY]), }); - diff --git a/composition/src/utils/string-constants.ts b/composition/src/utils/string-constants.ts index 9640ee1f24..dc18f3083a 100644 --- a/composition/src/utils/string-constants.ts +++ b/composition/src/utils/string-constants.ts @@ -10,8 +10,8 @@ export const AUTHENTICATED = 'authenticated'; export const ARGUMENT_DEFINITION_UPPER = 'ARGUMENT_DEFINITION'; export const BOOLEAN = 'boolean'; export const BOOLEAN_SCALAR = 'Boolean'; -export const CACHE_INVALIDATE = 'openfed__cacheInvalidate'; -export const CACHE_POPULATE = 'openfed__cachePopulate'; +export const OPENFED_CACHE_INVALIDATE = 'openfed__cacheInvalidate'; +export const OPENFED_CACHE_POPULATE = 'openfed__cachePopulate'; export const CHANNEL = 'channel'; export const CHANNELS = 'channels'; export const COMPOSE_DIRECTIVE = 'composeDirective'; @@ -43,7 +43,7 @@ export const EDFS_REDIS_PUBLISH = 'edfs__redisPublish'; export const EDFS_REDIS_SUBSCRIBE = 'edfs__redisSubscribe'; export const ENTITIES = 'entities'; export const ENTITIES_FIELD = '_entities'; -export const ENTITY_CACHE = 'openfed__entityCache'; +export const OPENFED_ENTITY_CACHE = 'openfed__entityCache'; export const ENTITY_UNION = '_Entity'; export const ENUM = 'Enum'; export const ENUM_UPPER = 'ENUM'; @@ -132,7 +132,7 @@ export const REASON = 'reason'; export const REQUEST = 'request'; export const REQUIRE_FETCH_REASONS = 'openfed__requireFetchReasons'; export const REQUIRE_ONE_SLICING_ARGUMENT = 'requireOneSlicingArgument'; -export const REQUEST_SCOPED = 'openfed__requestScoped'; +export const OPENFED_REQUEST_SCOPED = 'openfed__requestScoped'; export const REQUIRES = 'requires'; export const REQUIRES_SCOPES = 'requiresScopes'; export const RESOLVABLE = 'resolvable'; diff --git a/composition/src/v1/constants/constants.ts b/composition/src/v1/constants/constants.ts index f2b9d878a3..cf16590b35 100644 --- a/composition/src/v1/constants/constants.ts +++ b/composition/src/v1/constants/constants.ts @@ -6,11 +6,11 @@ import { CONFIGURE_CHILD_DESCRIPTIONS, CONFIGURE_DESCRIPTION, CONNECT_FIELD_RESOLVER, - CACHE_INVALIDATE, - CACHE_POPULATE, + OPENFED_CACHE_INVALIDATE, + OPENFED_CACHE_POPULATE, COST, - ENTITY_CACHE, - REQUEST_SCOPED, + OPENFED_ENTITY_CACHE, + OPENFED_REQUEST_SCOPED, DEPRECATED, EDFS_KAFKA_PUBLISH, EDFS_KAFKA_SUBSCRIBE, @@ -78,10 +78,10 @@ import { SPECIFIED_BY_DEFINITION, SUBSCRIPTION_FILTER_DEFINITION, TAG_DEFINITION, - CACHE_INVALIDATE_DEFINITION, - CACHE_POPULATE_DEFINITION, - ENTITY_CACHE_DEFINITION, - REQUEST_SCOPED_DEFINITION, + OPENFED_CACHE_INVALIDATE_DEFINITION, + OPENFED_CACHE_POPULATE_DEFINITION, + OPENFED_ENTITY_CACHE_DEFINITION, + OPENFED_REQUEST_SCOPED_DEFINITION, } from './directive-definitions'; export const DIRECTIVE_DEFINITION_BY_NAME: ReadonlyMap = new Map< @@ -94,10 +94,10 @@ export const DIRECTIVE_DEFINITION_BY_NAME: ReadonlyMap arg.name.value === MAX_AGE); let maxAgeSeconds: number | undefined; @@ -4218,8 +4222,8 @@ export class NormalizationFactory { const maxAgeRaw = parseInt(maxAgeArgument.value.value, 10); if (maxAgeRaw <= 0) { this.errors.push( - invalidDirectiveError(CACHE_POPULATE, fieldCoords, FIRST_ORDINAL, [ - maxAgeNotPositiveIntegerErrorMessage(CACHE_POPULATE, maxAgeRaw), + invalidDirectiveError(OPENFED_CACHE_POPULATE, fieldCoords, FIRST_ORDINAL, [ + maxAgeNotPositiveIntegerErrorMessage(OPENFED_CACHE_POPULATE, maxAgeRaw), ]), ); return; @@ -4263,7 +4267,7 @@ export class NormalizationFactory { } const typeName = getParentTypeName(parentData); for (const [fieldName, fieldData] of parentData.fieldDataByName) { - const directives = fieldData.directivesByName.get(REQUEST_SCOPED); + const directives = fieldData.directivesByName.get(OPENFED_REQUEST_SCOPED); if (!directives) { continue; } diff --git a/composition/src/v1/normalization/utils.ts b/composition/src/v1/normalization/utils.ts index c60e3e3af1..0dca7c1fa0 100644 --- a/composition/src/v1/normalization/utils.ts +++ b/composition/src/v1/normalization/utils.ts @@ -88,11 +88,11 @@ import { CONFIGURE_CHILD_DESCRIPTIONS, CONFIGURE_DESCRIPTION, CONNECT_FIELD_RESOLVER, - CACHE_INVALIDATE, - CACHE_POPULATE, + OPENFED_CACHE_INVALIDATE, + OPENFED_CACHE_POPULATE, COST, - ENTITY_CACHE, - REQUEST_SCOPED, + OPENFED_ENTITY_CACHE, + OPENFED_REQUEST_SCOPED, DEPRECATED, EDFS_KAFKA_PUBLISH, EDFS_KAFKA_SUBSCRIBE, @@ -481,10 +481,10 @@ export function initializeDirectiveDefinitionDatas(): Map { `), ROUTER_COMPATIBILITY_VERSION_ONE, ); - expect(errors.some((e) => e.message.includes('negativeCacheTTL must be a non-negative integer'))).toBe(true); + expect(errors).toHaveLength(1); + expect(errors[0]).toStrictEqual( + invalidDirectiveError(OPENFED_ENTITY_CACHE, 'Product', FIRST_ORDINAL, [ + negativeCacheTTLNotNonNegativeIntegerErrorMessage(OPENFED_ENTITY_CACHE, -1), + ]), + ); }); }); From 9d525bac0c4253fa2f15c6fa27556ac06d5d7c13 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Fri, 19 Jun 2026 12:18:56 +0530 Subject: [PATCH 10/65] fix(composition): prettier formatting --- .../tests/v1/directives/query-cache.test.ts | 30 +++++++------------ shared/test/entity-caching.test.ts | 7 ++++- 2 files changed, 16 insertions(+), 21 deletions(-) diff --git a/composition/tests/v1/directives/query-cache.test.ts b/composition/tests/v1/directives/query-cache.test.ts index 67afdeadba..ff089fdf5e 100644 --- a/composition/tests/v1/directives/query-cache.test.ts +++ b/composition/tests/v1/directives/query-cache.test.ts @@ -74,8 +74,7 @@ describe('@openfed__queryCache', () => { `), ROUTER_COMPATIBILITY_VERSION_ONE, ); - const rootFieldConfigs = - result.configurationDataByTypeName.get('Query')!.entityCaching?.queryCacheConfigurations; + const rootFieldConfigs = result.configurationDataByTypeName.get('Query')!.entityCaching?.queryCacheConfigurations; expect(rootFieldConfigs![0]).toMatchObject({ fieldName: 'user', maxAgeSeconds: 120, @@ -96,8 +95,7 @@ describe('@openfed__queryCache', () => { `), ROUTER_COMPATIBILITY_VERSION_ONE, ); - const rootFieldConfigs = - result.configurationDataByTypeName.get('Query')!.entityCaching?.queryCacheConfigurations; + const rootFieldConfigs = result.configurationDataByTypeName.get('Query')!.entityCaching?.queryCacheConfigurations; expect(rootFieldConfigs![0].entityKeyMappings).toEqual([ { entityTypeName: 'User', @@ -122,8 +120,7 @@ describe('@openfed__queryCache', () => { `), ROUTER_COMPATIBILITY_VERSION_ONE, ); - const rootFieldConfigs = - result.configurationDataByTypeName.get('Query')!.entityCaching?.queryCacheConfigurations; + const rootFieldConfigs = result.configurationDataByTypeName.get('Query')!.entityCaching?.queryCacheConfigurations; expect(rootFieldConfigs).toHaveLength(2); expect(rootFieldConfigs!.map((c) => c.fieldName)).toEqual(['user', 'product']); }); @@ -145,8 +142,7 @@ describe('@openfed__queryCache', () => { `), ROUTER_COMPATIBILITY_VERSION_ONE, ); - const rootFieldConfigs = - result.configurationDataByTypeName.get('Query')!.entityCaching?.queryCacheConfigurations; + const rootFieldConfigs = result.configurationDataByTypeName.get('Query')!.entityCaching?.queryCacheConfigurations; expect(rootFieldConfigs![0].entityKeyMappings).toEqual([ { entityTypeName: 'Product', @@ -171,8 +167,7 @@ describe('@openfed__queryCache', () => { `), ROUTER_COMPATIBILITY_VERSION_ONE, ); - const rootFieldConfigs = - result.configurationDataByTypeName.get('Query')!.entityCaching?.queryCacheConfigurations; + const rootFieldConfigs = result.configurationDataByTypeName.get('Query')!.entityCaching?.queryCacheConfigurations; expect(rootFieldConfigs![0].entityKeyMappings).toEqual([ { entityTypeName: 'Product', @@ -205,8 +200,7 @@ describe('@openfed__queryCache', () => { `), ROUTER_COMPATIBILITY_VERSION_ONE, ); - const rootFieldConfigs = - result.configurationDataByTypeName.get('Query')!.entityCaching?.queryCacheConfigurations; + const rootFieldConfigs = result.configurationDataByTypeName.get('Query')!.entityCaching?.queryCacheConfigurations; expect(rootFieldConfigs![0].entityKeyMappings).toEqual([ { entityTypeName: 'Review', @@ -232,8 +226,7 @@ describe('@openfed__queryCache', () => { `), ROUTER_COMPATIBILITY_VERSION_ONE, ); - const rootFieldConfigs = - result.configurationDataByTypeName.get('Query')!.entityCaching?.queryCacheConfigurations; + const rootFieldConfigs = result.configurationDataByTypeName.get('Query')!.entityCaching?.queryCacheConfigurations; expect(rootFieldConfigs![0].entityKeyMappings).toEqual([ { entityTypeName: 'Product', @@ -258,8 +251,7 @@ describe('@openfed__queryCache', () => { `), ROUTER_COMPATIBILITY_VERSION_ONE, ); - const rootFieldConfigs = - result.configurationDataByTypeName.get('Query')!.entityCaching?.queryCacheConfigurations; + const rootFieldConfigs = result.configurationDataByTypeName.get('Query')!.entityCaching?.queryCacheConfigurations; expect(rootFieldConfigs![0].entityKeyMappings).toEqual([ { entityTypeName: 'User', @@ -309,8 +301,7 @@ describe('@openfed__queryCache', () => { `), ROUTER_COMPATIBILITY_VERSION_ONE, ); - const rootFieldConfigs = - result.configurationDataByTypeName.get('Query')!.entityCaching?.queryCacheConfigurations; + const rootFieldConfigs = result.configurationDataByTypeName.get('Query')!.entityCaching?.queryCacheConfigurations; expect(rootFieldConfigs![0].entityKeyMappings).toEqual([ { entityTypeName: 'User', @@ -331,8 +322,7 @@ describe('@openfed__queryCache', () => { `), ROUTER_COMPATIBILITY_VERSION_ONE, ); - const rootFieldConfigs = - result.configurationDataByTypeName.get('Query')!.entityCaching?.queryCacheConfigurations; + const rootFieldConfigs = result.configurationDataByTypeName.get('Query')!.entityCaching?.queryCacheConfigurations; expect(rootFieldConfigs![0].entityKeyMappings).toEqual([ { entityTypeName: 'Product', diff --git a/shared/test/entity-caching.test.ts b/shared/test/entity-caching.test.ts index bcec51be9e..bf8da8bef3 100644 --- a/shared/test/entity-caching.test.ts +++ b/shared/test/entity-caching.test.ts @@ -1,5 +1,10 @@ import { describe, expect, test } from 'vitest'; -import { federateSubgraphs, FederationSuccess, LATEST_ROUTER_COMPATIBILITY_VERSION, parse } from '@wundergraph/composition'; +import { + federateSubgraphs, + FederationSuccess, + LATEST_ROUTER_COMPATIBILITY_VERSION, + parse, +} from '@wundergraph/composition'; import { EntityCaching } from '@wundergraph/cosmo-connect/dist/node/v1/node_pb'; import { buildRouterConfig, ComposedSubgraph, SubgraphKind } from '../src'; From 85ed11a00cc8bd0c717e2ffa9c217584cd29ac9e Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Fri, 19 Jun 2026 12:29:31 +0530 Subject: [PATCH 11/65] fix(shared): prettier formatting --- shared/src/router-config/builder.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/shared/src/router-config/builder.ts b/shared/src/router-config/builder.ts index 314e2d0932..1f91ad86a9 100644 --- a/shared/src/router-config/builder.ts +++ b/shared/src/router-config/builder.ts @@ -96,9 +96,7 @@ function toEntityCaching(dataByTypeName?: Map): Ent ); } } - if ( - entityCacheConfigurations.length === 0 - ) { + if (entityCacheConfigurations.length === 0) { return undefined; } return new EntityCaching({ From 3e3dee3322dec701d912752548d2ab69d5bf746b Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Fri, 19 Jun 2026 12:29:32 +0530 Subject: [PATCH 12/65] fix(shared): prettier formatting --- shared/src/router-config/builder.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/shared/src/router-config/builder.ts b/shared/src/router-config/builder.ts index fe334e739d..d3bf1f1973 100644 --- a/shared/src/router-config/builder.ts +++ b/shared/src/router-config/builder.ts @@ -107,10 +107,7 @@ function toEntityCaching(dataByTypeName?: Map): Ent ); } } - if ( - entityCacheConfigurations.length === 0 && - cacheInvalidateConfigurations.length === 0 - ) { + if (entityCacheConfigurations.length === 0 && cacheInvalidateConfigurations.length === 0) { return undefined; } return new EntityCaching({ From 7be55f0f372c4c229033aaac36adf86506651085 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Fri, 19 Jun 2026 13:19:25 +0530 Subject: [PATCH 13/65] fix: review comments --- composition/src/v1/normalization/normalization-factory.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index ba873e36e6..213e7975c3 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -4298,7 +4298,7 @@ export class NormalizationFactory { getValueOrDefault(coordsByKey, c.key, () => []).push(c.fieldCoords); } for (const [key, coordsList] of coordsByKey) { - if (coordsList.length == 1) { + if (coordsList.length === 1) { this.warnings.push( requestScopedSingleFieldWarning({ subgraphName: this.subgraphName, From ecc804758d33c933014e14f6a669ef2fbe667ca6 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Fri, 19 Jun 2026 20:25:18 +0530 Subject: [PATCH 14/65] fix: review comments --- .../directive-definition-data.ts | 7 +- composition/src/errors/errors.ts | 16 +- composition/src/errors/types/params.ts | 5 + composition/src/router-configuration/types.ts | 4 +- .../src/v1/constants/directive-definitions.ts | 10 +- .../v1/normalization/normalization-factory.ts | 172 ++++++++++-------- .../src/v1/normalization/types/types.ts | 54 +++++- .../tests/v1/directives/entity-cache.test.ts | 26 +-- .../gen/proto/wg/cosmo/node/v1/node.pb.go | 52 +++--- connect/src/wg/cosmo/node/v1/node_pb.ts | 36 ++-- proto/wg/cosmo/node/v1/node.proto | 6 +- router/gen/proto/wg/cosmo/node/v1/node.pb.go | 52 +++--- shared/src/router-config/builder.ts | 20 +- 13 files changed, 266 insertions(+), 194 deletions(-) diff --git a/composition/src/directive-definition-data/directive-definition-data.ts b/composition/src/directive-definition-data/directive-definition-data.ts index 24b0c9acfd..79351afb4c 100644 --- a/composition/src/directive-definition-data/directive-definition-data.ts +++ b/composition/src/directive-definition-data/directive-definition-data.ts @@ -122,6 +122,7 @@ import { SPECIFIED_BY_DEFINITION, SUBSCRIPTION_FILTER_DEFINITION, TAG_DEFINITION, + BOOLEAN_FALSE_VALUE_NODE, } from '../v1/constants/directive-definitions'; import { REQUIRED_FIELDSET_TYPE_NODE, @@ -982,7 +983,7 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ INCLUDE_HEADERS, newDirectiveArgumentData({ directive: `@${OPENFED_ENTITY_CACHE}`, - defaultValue: { kind: Kind.BOOLEAN, value: false }, + defaultValue: BOOLEAN_FALSE_VALUE_NODE, name: INCLUDE_HEADERS, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, typeNode: stringToNamedTypeNode(BOOLEAN_SCALAR), @@ -992,7 +993,7 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ PARTIAL_CACHE_LOAD, newDirectiveArgumentData({ directive: `@${OPENFED_ENTITY_CACHE}`, - defaultValue: { kind: Kind.BOOLEAN, value: false }, + defaultValue: BOOLEAN_FALSE_VALUE_NODE, name: PARTIAL_CACHE_LOAD, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, typeNode: stringToNamedTypeNode(BOOLEAN_SCALAR), @@ -1002,7 +1003,7 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ SHADOW_MODE, newDirectiveArgumentData({ directive: `@${OPENFED_ENTITY_CACHE}`, - defaultValue: { kind: Kind.BOOLEAN, value: false }, + defaultValue: BOOLEAN_FALSE_VALUE_NODE, name: SHADOW_MODE, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, typeNode: stringToNamedTypeNode(BOOLEAN_SCALAR), diff --git a/composition/src/errors/errors.ts b/composition/src/errors/errors.ts index 97d6dd3567..929906abee 100644 --- a/composition/src/errors/errors.ts +++ b/composition/src/errors/errors.ts @@ -17,6 +17,7 @@ import { type InvalidRepeatedDirectiveErrorParams, type InvalidSubValueFieldLinkDirectiveImportErrorParams, type invalidVersionLinkDirectiveUrlErrorParams, + type MaxAgeNotPositiveIntegerErrorParams, type NonExternalConditionalFieldErrorParams, type OneOfRequiredFieldsErrorParams, type SemanticNonNullLevelsIndexOutOfBoundsErrorParams, @@ -2051,14 +2052,17 @@ export function unknownSubgraphNameError(subgraphName: SubgraphName): Error { return new Error(`Internal Error: Expected subgraph "${subgraphName}" to be a valid record.`); } -export function entityCacheWithoutKeyErrorMessage(typeName: string): string { - return `Type "${typeName}" has @openfed__entityCache but no @key directive.`; +export function entityCacheWithoutKeyErrorMessage(typeName: TypeName): string { + return `Type "${typeName}" declares the @openfed__entityCache directive but does not define a @key directive.`; } -export function maxAgeNotPositiveIntegerErrorMessage(directiveName: string, value: number): string { - return `@${directiveName} maxAge must be a positive integer, got "${value}".`; +export function maxAgeNotPositiveIntegerErrorMessage({ + directiveName, + value, +}: MaxAgeNotPositiveIntegerErrorParams): string { + return `The directive "@${directiveName}" argument "maxAge" must be provided a positive integer; received "${value}".`; } -export function negativeCacheTTLNotNonNegativeIntegerErrorMessage(directiveName: string, value: number): string { - return `@${directiveName} negativeCacheTTL must be zero or a positive integer, got "${value}".`; +export function negativeCacheTTLNotNonNegativeIntegerErrorMessage(value: number): string { + return `The directive "@openfed__entityCache" argument "negativeCacheTTL" must be provided a zero or positive integer; received "${value}".`; } diff --git a/composition/src/errors/types/params.ts b/composition/src/errors/types/params.ts index 05e060c4a6..a1d7c24adb 100644 --- a/composition/src/errors/types/params.ts +++ b/composition/src/errors/types/params.ts @@ -94,3 +94,8 @@ export type InvalidArgumentValueErrorParams = { value: string; expectedTypeString: string; }; + +export type MaxAgeNotPositiveIntegerErrorParams = { + directiveName: DirectiveName; + value: number; +}; diff --git a/composition/src/router-configuration/types.ts b/composition/src/router-configuration/types.ts index 28cbd91120..e717e6e233 100644 --- a/composition/src/router-configuration/types.ts +++ b/composition/src/router-configuration/types.ts @@ -103,7 +103,7 @@ export type ConfigurationData = { // Extracted from @openfed__entityCache(maxAge: Int!, negativeCacheTTL: Int, includeHeaders: Boolean, // partialCacheLoad: Boolean, shadowMode: Boolean) on OBJECT types. Defines per-entity cache TTL and behavior. -export type EntityCacheConfig = { +export type EntityCacheConfiguration = { typeName: TypeName; maxAgeSeconds: number; // TTL (in seconds) for caching "not found" entity responses (entity returned null @@ -121,7 +121,7 @@ export type EntityCacheConfig = { export type EntityCachingConfiguration = { // Attached to an entity type's ConfigurationData (e.g. "Product") from @openfed__entityCache. - entityCacheConfigurations?: Array; + entityCacheConfigurations?: Array; }; export type Costs = { diff --git a/composition/src/v1/constants/directive-definitions.ts b/composition/src/v1/constants/directive-definitions.ts index 74f5c870be..64ad1e333e 100644 --- a/composition/src/v1/constants/directive-definitions.ts +++ b/composition/src/v1/constants/directive-definitions.ts @@ -1,4 +1,4 @@ -import { DEFAULT_DEPRECATION_REASON, type DirectiveDefinitionNode, Kind } from 'graphql'; +import { type ConstValueNode, DEFAULT_DEPRECATION_REASON, type DirectiveDefinitionNode, Kind } from 'graphql'; import { stringArrayToNameNodeArray, stringToNamedTypeNode, stringToNameNode } from '../../ast/utils'; import { ARGUMENT_DEFINITION_UPPER, @@ -104,6 +104,8 @@ export const AUTHENTICATED_DEFINITION: DirectiveDefinitionNode = { repeatable: false, }; +export const BOOLEAN_FALSE_VALUE_NODE: ConstValueNode = { kind: Kind.BOOLEAN, value: false }; + // @composeDirective is currently unimplemented /* directive @composeDirective(name: String!) repeatable on SCHEMA */ export const COMPOSE_DIRECTIVE_DEFINITION: DirectiveDefinitionNode = { @@ -843,19 +845,19 @@ export const OPENFED_ENTITY_CACHE_DEFINITION: DirectiveDefinitionNode = { kind: Kind.INPUT_VALUE_DEFINITION, name: stringToNameNode(INCLUDE_HEADERS), type: stringToNamedTypeNode(BOOLEAN_SCALAR), - defaultValue: { kind: Kind.BOOLEAN, value: false }, + defaultValue: BOOLEAN_FALSE_VALUE_NODE, }, { kind: Kind.INPUT_VALUE_DEFINITION, name: stringToNameNode(PARTIAL_CACHE_LOAD), type: stringToNamedTypeNode(BOOLEAN_SCALAR), - defaultValue: { kind: Kind.BOOLEAN, value: false }, + defaultValue: BOOLEAN_FALSE_VALUE_NODE, }, { kind: Kind.INPUT_VALUE_DEFINITION, name: stringToNameNode(SHADOW_MODE), type: stringToNamedTypeNode(BOOLEAN_SCALAR), - defaultValue: { kind: Kind.BOOLEAN, value: false }, + defaultValue: BOOLEAN_FALSE_VALUE_NODE, }, ], kind: Kind.DIRECTIVE_DEFINITION, diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index 678f6038d4..441f3d0613 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -185,7 +185,7 @@ import { type FieldWeightConfiguration, type NatsEventType, type RequiredFieldConfiguration, - type EntityCacheConfig, + type EntityCacheConfiguration, } from '../../router-configuration/types'; import { printTypeNode } from '@graphql-tools/merge'; import { @@ -456,10 +456,10 @@ export class NormalizationFactory { directiveDefinitionDataByName = initializeDirectiveDefinitionDatas(); doesParentRequireFetchReasons = false; edfsDirectiveReferences = new Set(); - // Cached entity configs keyed by type name, populated by extractEntityCacheDirectives() from + // Cached entity configs keyed by type name, populated by extractEntityCacheDirective() from // @openfed__entityCache. Future caching directives (@openfed__queryCache etc.) use this as a lookup // to verify a field's return type is a cached entity. - entityCacheConfigByTypeName = new Map(); + entityCacheConfigByTypeName = new Map(); errors = new Array(); entityDataByTypeName = new Map(); entityInterfaceDataByTypeName = new Map(); @@ -4000,85 +4000,104 @@ export class NormalizationFactory { } } - extractEntityCacheDirectives() { - for (const [typeName, parentData] of this.parentDefinitionDataByTypeName) { - if (parentData.kind !== Kind.OBJECT_TYPE_DEFINITION) { - continue; - } - const entityCacheDirectives = parentData.directivesByName.get(OPENFED_ENTITY_CACHE); - if (!entityCacheDirectives) { - continue; - } - if (!this.keyFieldSetDatasByTypeName.has(typeName)) { - this.errors.push( - invalidDirectiveError(OPENFED_ENTITY_CACHE, typeName, FIRST_ORDINAL, [ - entityCacheWithoutKeyErrorMessage(typeName), - ]), - ); + extractEntityCacheDirective(typeName: string, parentData: ParentDefinitionData) { + if (parentData.kind !== Kind.OBJECT_TYPE_DEFINITION) { + return; + } + const entityCacheDirectives = parentData.directivesByName.get(OPENFED_ENTITY_CACHE); + if (!entityCacheDirectives || entityCacheDirectives.length == 0) { + return; + } + if (!this.keyFieldSetDatasByTypeName.has(typeName)) { + this.errors.push( + invalidDirectiveError(OPENFED_ENTITY_CACHE, typeName, FIRST_ORDINAL, [ + entityCacheWithoutKeyErrorMessage(typeName), + ]), + ); + return; + } + // validateDirectives() (run earlier in normalize()) has already guaranteed each argument's type — + // Int for maxAge/negativeCacheTTL, Boolean for the flags — so the generic ConstDirectiveNode is + // narrowed once to the precise typed node, mirroring RequestScopedDirectiveNode/ComposeDirectiveNode. + // Optional arguments may be absent (definition defaults are not materialized onto the usage AST), + // so the config starts at the directive's documented defaults and each present argument overrides it. + const directive = entityCacheDirectives[0] as EntityCacheDirectiveNode; + const config: EntityCacheConfiguration = { + typeName, + maxAgeSeconds: 0, + notFoundCacheTtlSeconds: 0, + includeHeaders: false, + partialCacheLoad: false, + shadowMode: false, + }; + + for (const arg of directive.arguments) { + if (!arg) { continue; } - // validateDirectives() (run earlier in normalize()) has already guaranteed each argument's type — - // Int for maxAge/negativeCacheTTL, Boolean for the flags — so the generic ConstDirectiveNode is - // narrowed once to the precise typed node, mirroring RequestScopedDirectiveNode/ComposeDirectiveNode. - // Optional arguments may be absent (definition defaults are not materialized onto the usage AST), - // so the config starts at the directive's documented defaults and each present argument overrides it. - const directive = entityCacheDirectives[0] as EntityCacheDirectiveNode; - const config: EntityCacheConfig = { - typeName, - maxAgeSeconds: 0, - notFoundCacheTtlSeconds: 0, - includeHeaders: false, - partialCacheLoad: false, - shadowMode: false, - }; - for (const { name, value } of directive.arguments ?? []) { - switch (name.value) { - case MAX_AGE: - if (value.kind === Kind.INT) config.maxAgeSeconds = parseInt(value.value, 10); - break; - case NEGATIVE_CACHE_TTL: - if (value.kind === Kind.INT) config.notFoundCacheTtlSeconds = parseInt(value.value, 10); - break; - case INCLUDE_HEADERS: - if (value.kind === Kind.BOOLEAN) config.includeHeaders = value.value; - break; - case PARTIAL_CACHE_LOAD: - if (value.kind === Kind.BOOLEAN) config.partialCacheLoad = value.value; - break; - case SHADOW_MODE: - if (value.kind === Kind.BOOLEAN) config.shadowMode = value.value; - break; - } - } + const { name, value } = arg; - if (config.maxAgeSeconds <= 0) { - this.errors.push( - invalidDirectiveError(OPENFED_ENTITY_CACHE, typeName, FIRST_ORDINAL, [ - maxAgeNotPositiveIntegerErrorMessage(OPENFED_ENTITY_CACHE, config.maxAgeSeconds), - ]), - ); - continue; + switch (value.kind) { + case Kind.INT: { + switch (name.value) { + case MAX_AGE: { + config.maxAgeSeconds = parseInt(value.value, 10); + break; + } + case NEGATIVE_CACHE_TTL: { + config.notFoundCacheTtlSeconds = parseInt(value.value, 10); + break; + } + } + break; + } + default: { + switch (name.value) { + case INCLUDE_HEADERS: { + config.includeHeaders = value.value; + break; + } + case PARTIAL_CACHE_LOAD: { + config.partialCacheLoad = value.value; + break; + } + case SHADOW_MODE: { + config.shadowMode = value.value; + break; + } + } + break; + } } + } - if (config.notFoundCacheTtlSeconds < 0) { - this.errors.push( - invalidDirectiveError(OPENFED_ENTITY_CACHE, typeName, FIRST_ORDINAL, [ - negativeCacheTTLNotNonNegativeIntegerErrorMessage(OPENFED_ENTITY_CACHE, config.notFoundCacheTtlSeconds), - ]), - ); - continue; - } + if (config.maxAgeSeconds <= 0) { + this.errors.push( + invalidDirectiveError(OPENFED_ENTITY_CACHE, typeName, FIRST_ORDINAL, [ + maxAgeNotPositiveIntegerErrorMessage({ directiveName: OPENFED_ENTITY_CACHE, value: config.maxAgeSeconds }), + ]), + ); + return; + } - this.entityCacheConfigByTypeName.set(typeName, config); - const configurationData = getValueOrDefault(this.configurationDataByTypeName, typeName, () => - newConfigurationData(true, typeName), + if (config.notFoundCacheTtlSeconds < 0) { + this.errors.push( + invalidDirectiveError(OPENFED_ENTITY_CACHE, typeName, FIRST_ORDINAL, [ + negativeCacheTTLNotNonNegativeIntegerErrorMessage(config.notFoundCacheTtlSeconds), + ]), ); - configurationData.entityCaching = { - ...configurationData.entityCaching, - entityCacheConfigurations: [...(configurationData.entityCaching?.entityCacheConfigurations ?? []), config], - }; + return; } + + this.entityCacheConfigByTypeName.set(typeName, config); + const configurationData = getValueOrDefault(this.configurationDataByTypeName, typeName, () => + newConfigurationData(true, typeName), + ); + configurationData.entityCaching = { + ...configurationData.entityCaching, + entityCacheConfigurations: [...(configurationData.entityCaching?.entityCacheConfigurations ?? []), config], + }; } addFieldNamesToConfigurationData(fieldDataByFieldName: Map, configurationData: ConfigurationData) { @@ -4243,6 +4262,10 @@ export class NormalizationFactory { const isEntity = this.entityDataByTypeName.has(parentTypeName); const operationTypeNode = this.operationTypeNodeByTypeName.get(parentTypeName); const isObject = parentData.kind === Kind.OBJECT_TYPE_DEFINITION; + + // Extract @openfed__entityCache here (Object-only) so we reuse this iterator instead of a separate pass. + this.extractEntityCacheDirective(parentTypeName, parentData); + if (this.isSubgraphVersionTwo && parentData.extensionType === ExtensionType.EXTENDS) { // @extends is essentially ignored in V2. It was only propagated to handle @external key fields. parentData.extensionType = ExtensionType.NONE; @@ -4348,9 +4371,6 @@ export class NormalizationFactory { this.addValidConditionalFieldSetConfigurations(); // this is where @key configurations are added to the ConfigurationData this.addValidKeyFieldSetConfigurations(); - // this is where @openfed__entityCache configurations are added to the ConfigurationData - // (runs after key-field-set configs so keyFieldSetDatasByTypeName is populated for the @key check) - this.extractEntityCacheDirectives(); // Check that explicitly defined operations types are valid objects and that their fields are also valid for (const operationType of Object.values(OperationTypeNode)) { const operationTypeNode = this.schemaData.operationTypes.get(operationType); diff --git a/composition/src/v1/normalization/types/types.ts b/composition/src/v1/normalization/types/types.ts index f8870f7a43..f77a544f36 100644 --- a/composition/src/v1/normalization/types/types.ts +++ b/composition/src/v1/normalization/types/types.ts @@ -32,6 +32,14 @@ import { type DirectiveArgumentData, type DirectiveDefinitionData, } from '../../../directive-definition-data/types/types'; +import { + type INCLUDE_HEADERS, + type MAX_AGE, + type NEGATIVE_CACHE_TTL, + type OPENFED_ENTITY_CACHE, + type PARTIAL_CACHE_LOAD, + type SHADOW_MODE, +} from '../../../utils/string-constants'; export type KeyFieldSetData = { documentNode: DocumentNode; @@ -140,20 +148,52 @@ export type ComposeDirectiveArgumentNode = { }; export type EntityCacheDirectiveNode = { - readonly arguments: ReadonlyArray; + readonly arguments: [EntityCacheRequiredArgumentNodes, EntityCacheOptionalArgumentNodes?]; readonly kind: Kind.DIRECTIVE; - readonly name: NameNode; + readonly name: NameNode & { readonly value: typeof OPENFED_ENTITY_CACHE }; readonly loc?: Location; }; -export type EntityCacheArgumentNode = { +export type EntityCacheRequiredArgumentNodes = MaxAgeArgumentNode; + +export type EntityCacheOptionalArgumentNodes = + | NegativeCacheTtlArgumentNode + | IncludeHeadersArgumentNode + | PartialCacheLoadArgumentNode + | ShadowModeArgumentNode; + +// string +export type MaxAgeArgumentNode = { readonly kind: Kind.ARGUMENT; - readonly name: NameNode; - // maxAge/negativeCacheTTL are Int; includeHeaders/partialCacheLoad/shadowMode are Boolean. - // validateDirectives() guarantees each argument's value matches its declared type. - readonly value: IntValueNode | BooleanValueNode; + readonly name: NameNode & { readonly value: typeof MAX_AGE }; + readonly value: IntValueNode; + readonly loc?: Location; +}; +export type NegativeCacheTtlArgumentNode = { + readonly kind: Kind.ARGUMENT; + readonly name: NameNode & { readonly value: typeof NEGATIVE_CACHE_TTL }; + readonly value: IntValueNode; + readonly loc?: Location; +}; +export type IncludeHeadersArgumentNode = { + readonly kind: Kind.ARGUMENT; + readonly name: NameNode & { readonly value: typeof INCLUDE_HEADERS }; + readonly value: BooleanValueNode; + readonly loc?: Location; +}; +export type PartialCacheLoadArgumentNode = { + readonly kind: Kind.ARGUMENT; + readonly name: NameNode & { readonly value: typeof PARTIAL_CACHE_LOAD }; + readonly value: BooleanValueNode; readonly loc?: Location; }; +export type ShadowModeArgumentNode = { + readonly kind: Kind.ARGUMENT; + readonly name: NameNode & { readonly value: typeof SHADOW_MODE }; + readonly value: BooleanValueNode; + readonly loc?: Location; +}; + export type LinkImportData = { name: DirectiveName; coreUrl: string; diff --git a/composition/tests/v1/directives/entity-cache.test.ts b/composition/tests/v1/directives/entity-cache.test.ts index 4927f993ce..bec2b57f7f 100644 --- a/composition/tests/v1/directives/entity-cache.test.ts +++ b/composition/tests/v1/directives/entity-cache.test.ts @@ -1,7 +1,7 @@ import { describe, expect, test } from 'vitest'; import { OPENFED_ENTITY_CACHE, - type EntityCacheConfig, + type EntityCacheConfiguration, entityCacheWithoutKeyErrorMessage, FIRST_ORDINAL, invalidDirectiveError, @@ -15,7 +15,7 @@ import { createSubgraphWithDefault, normalizeSubgraphFailure, normalizeSubgraphS // construct cache keys) and a positive maxAge (TTL in seconds). describe('@openfed__entityCache', () => { describe('validation', () => { - test('errors without @key — the router needs @key fields to construct cache keys', () => { + test('that an error is raised without @key — the router needs @key fields to construct cache keys', () => { const { errors } = normalizeSubgraphFailure( createSubgraphWithDefault(` type Query { product(id: ID!): Product } @@ -35,7 +35,7 @@ describe('@openfed__entityCache', () => { ); }); - test('rejects a maxAge of zero — TTL must be at least 1 second', () => { + test('that a maxAge of zero is rejected — TTL must be at least 1 second', () => { const { errors } = normalizeSubgraphFailure( createSubgraphWithDefault(` type Query { product(id: ID!): Product } @@ -49,12 +49,12 @@ describe('@openfed__entityCache', () => { expect(errors).toHaveLength(1); expect(errors[0]).toStrictEqual( invalidDirectiveError(OPENFED_ENTITY_CACHE, 'Product', FIRST_ORDINAL, [ - maxAgeNotPositiveIntegerErrorMessage(OPENFED_ENTITY_CACHE, 0), + maxAgeNotPositiveIntegerErrorMessage({ directiveName: OPENFED_ENTITY_CACHE, value: 0 }), ]), ); }); - test('rejects a negative maxAge', () => { + test('that a negative maxAge is rejected', () => { const { errors } = normalizeSubgraphFailure( createSubgraphWithDefault(` type Query { product(id: ID!): Product } @@ -68,12 +68,12 @@ describe('@openfed__entityCache', () => { expect(errors).toHaveLength(1); expect(errors[0]).toStrictEqual( invalidDirectiveError(OPENFED_ENTITY_CACHE, 'Product', FIRST_ORDINAL, [ - maxAgeNotPositiveIntegerErrorMessage(OPENFED_ENTITY_CACHE, -5), + maxAgeNotPositiveIntegerErrorMessage({ directiveName: OPENFED_ENTITY_CACHE, value: -5 }), ]), ); }); - test('rejects a negative negativeCacheTTL', () => { + test('that a negative negativeCacheTTL is rejected', () => { const { errors } = normalizeSubgraphFailure( createSubgraphWithDefault(` type Query { product(id: ID!): Product } @@ -87,14 +87,14 @@ describe('@openfed__entityCache', () => { expect(errors).toHaveLength(1); expect(errors[0]).toStrictEqual( invalidDirectiveError(OPENFED_ENTITY_CACHE, 'Product', FIRST_ORDINAL, [ - negativeCacheTTLNotNonNegativeIntegerErrorMessage(OPENFED_ENTITY_CACHE, -1), + negativeCacheTTLNotNonNegativeIntegerErrorMessage(-1), ]), ); }); }); describe('configuration extraction', () => { - test('with defaults produces the correct EntityCacheConfig', () => { + test('that defaults produce the correct EntityCacheConfig', () => { // Only maxAge is required; includeHeaders, partialCacheLoad, shadowMode default to false const configs = getEntityCacheConfigs( ` @@ -115,10 +115,10 @@ describe('@openfed__entityCache', () => { partialCacheLoad: false, shadowMode: false, }, - ] satisfies EntityCacheConfig[]); + ] satisfies EntityCacheConfiguration[]); }); - test('every argument propagates to the EntityCacheConfig', () => { + test('that every argument propagates to the EntityCacheConfig', () => { const configs = getEntityCacheConfigs( ` type Query { product(id: ID!): Product } @@ -138,14 +138,14 @@ describe('@openfed__entityCache', () => { partialCacheLoad: true, shadowMode: true, }, - ] satisfies EntityCacheConfig[]); + ] satisfies EntityCacheConfiguration[]); }); }); }); // Helper: normalizes the subgraph and returns the entityCache config array attached to `typeName`. // On this branch entity-caching config is nested under ConfigurationData.entityCaching. -function getEntityCacheConfigs(sdl: string, typeName: string): Array | undefined { +function getEntityCacheConfigs(sdl: string, typeName: string): Array | undefined { const result = normalizeSubgraphSuccess(createSubgraphWithDefault(sdl), ROUTER_COMPATIBILITY_VERSION_ONE); return result.configurationDataByTypeName.get(typeName)?.entityCaching?.entityCacheConfigurations; } diff --git a/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go b/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go index 7d3e790f61..591ad643b1 100644 --- a/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go +++ b/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go @@ -1071,9 +1071,9 @@ type DataSourceConfiguration struct { InterfaceObjects []*EntityInterfaceConfiguration `protobuf:"bytes,15,rep,name=interface_objects,json=interfaceObjects,proto3" json:"interface_objects,omitempty"` CostConfiguration *CostConfiguration `protobuf:"bytes,16,opt,name=cost_configuration,json=costConfiguration,proto3" json:"cost_configuration,omitempty"` // Entity caching configuration (e.g. request-scoped fields from @openfed__requestScoped). - EntityCaching *EntityCaching `protobuf:"bytes,17,opt,name=entity_caching,json=entityCaching,proto3" json:"entity_caching,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + EntityCachingConfiguration *EntityCachingConfiguration `protobuf:"bytes,17,opt,name=entity_caching_configuration,json=entityCachingConfiguration,proto3" json:"entity_caching_configuration,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DataSourceConfiguration) Reset() { @@ -1218,36 +1218,36 @@ func (x *DataSourceConfiguration) GetCostConfiguration() *CostConfiguration { return nil } -func (x *DataSourceConfiguration) GetEntityCaching() *EntityCaching { +func (x *DataSourceConfiguration) GetEntityCachingConfiguration() *EntityCachingConfiguration { if x != nil { - return x.EntityCaching + return x.EntityCachingConfiguration } return nil } // Entity caching configuration for a subgraph data source. -type EntityCaching struct { +type EntityCachingConfiguration struct { state protoimpl.MessageState `protogen:"open.v1"` // Per-entity cache configurations (from @openfed__entityCache directive) - EntityCacheConfigurations []*EntityCacheConfiguration `protobuf:"bytes,1,rep,name=entity_cache_configurations,json=entityCacheConfigurations,proto3" json:"entity_cache_configurations,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + EntityCache []*EntityCacheConfiguration `protobuf:"bytes,1,rep,name=entity_cache,json=entityCache,proto3" json:"entity_cache,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *EntityCaching) Reset() { - *x = EntityCaching{} +func (x *EntityCachingConfiguration) Reset() { + *x = EntityCachingConfiguration{} mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *EntityCaching) String() string { +func (x *EntityCachingConfiguration) String() string { return protoimpl.X.MessageStringOf(x) } -func (*EntityCaching) ProtoMessage() {} +func (*EntityCachingConfiguration) ProtoMessage() {} -func (x *EntityCaching) ProtoReflect() protoreflect.Message { +func (x *EntityCachingConfiguration) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1259,14 +1259,14 @@ func (x *EntityCaching) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use EntityCaching.ProtoReflect.Descriptor instead. -func (*EntityCaching) Descriptor() ([]byte, []int) { +// Deprecated: Use EntityCachingConfiguration.ProtoReflect.Descriptor instead. +func (*EntityCachingConfiguration) Descriptor() ([]byte, []int) { return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{12} } -func (x *EntityCaching) GetEntityCacheConfigurations() []*EntityCacheConfiguration { +func (x *EntityCachingConfiguration) GetEntityCache() []*EntityCacheConfiguration { if x != nil { - return x.EntityCacheConfigurations + return x.EntityCache } return nil } @@ -4816,7 +4816,7 @@ const file_wg_cosmo_node_v1_node_proto_rawDesc = "" + "\x12StringStorageEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\x18\n" + - "\x16_graphql_client_schema\"\x96\t\n" + + "\x16_graphql_client_schema\"\xbe\t\n" + "\x17DataSourceConfiguration\x124\n" + "\x04kind\x18\x01 \x01(\x0e2 .wg.cosmo.node.v1.DataSourceKindR\x04kind\x12:\n" + "\n" + @@ -4838,10 +4838,10 @@ const file_wg_cosmo_node_v1_node_proto_rawDesc = "" + "\rcustom_events\x18\r \x01(\v2(.wg.cosmo.node.v1.DataSourceCustomEventsR\fcustomEvents\x12[\n" + "\x11entity_interfaces\x18\x0e \x03(\v2..wg.cosmo.node.v1.EntityInterfaceConfigurationR\x10entityInterfaces\x12[\n" + "\x11interface_objects\x18\x0f \x03(\v2..wg.cosmo.node.v1.EntityInterfaceConfigurationR\x10interfaceObjects\x12R\n" + - "\x12cost_configuration\x18\x10 \x01(\v2#.wg.cosmo.node.v1.CostConfigurationR\x11costConfiguration\x12F\n" + - "\x0eentity_caching\x18\x11 \x01(\v2\x1f.wg.cosmo.node.v1.EntityCachingR\rentityCaching\"{\n" + - "\rEntityCaching\x12j\n" + - "\x1bentity_cache_configurations\x18\x01 \x03(\v2*.wg.cosmo.node.v1.EntityCacheConfigurationR\x19entityCacheConfigurations\"\x95\x02\n" + + "\x12cost_configuration\x18\x10 \x01(\v2#.wg.cosmo.node.v1.CostConfigurationR\x11costConfiguration\x12n\n" + + "\x1centity_caching_configuration\x18\x11 \x01(\v2,.wg.cosmo.node.v1.EntityCachingConfigurationR\x1aentityCachingConfiguration\"k\n" + + "\x1aEntityCachingConfiguration\x12M\n" + + "\fentity_cache\x18\x01 \x03(\v2*.wg.cosmo.node.v1.EntityCacheConfigurationR\ventityCache\"\x95\x02\n" + "\x18EntityCacheConfiguration\x12\x1b\n" + "\ttype_name\x18\x01 \x01(\tR\btypeName\x12&\n" + "\x0fmax_age_seconds\x18\x02 \x01(\x03R\rmaxAgeSeconds\x12'\n" + @@ -5210,7 +5210,7 @@ var file_wg_cosmo_node_v1_node_proto_goTypes = []any{ (*SelfRegisterResponse)(nil), // 17: wg.cosmo.node.v1.SelfRegisterResponse (*EngineConfiguration)(nil), // 18: wg.cosmo.node.v1.EngineConfiguration (*DataSourceConfiguration)(nil), // 19: wg.cosmo.node.v1.DataSourceConfiguration - (*EntityCaching)(nil), // 20: wg.cosmo.node.v1.EntityCaching + (*EntityCachingConfiguration)(nil), // 20: wg.cosmo.node.v1.EntityCachingConfiguration (*EntityCacheConfiguration)(nil), // 21: wg.cosmo.node.v1.EntityCacheConfiguration (*CostConfiguration)(nil), // 22: wg.cosmo.node.v1.CostConfiguration (*FieldWeightConfiguration)(nil), // 23: wg.cosmo.node.v1.FieldWeightConfiguration @@ -5306,8 +5306,8 @@ var file_wg_cosmo_node_v1_node_proto_depIdxs = []int32{ 34, // 24: wg.cosmo.node.v1.DataSourceConfiguration.entity_interfaces:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration 34, // 25: wg.cosmo.node.v1.DataSourceConfiguration.interface_objects:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration 22, // 26: wg.cosmo.node.v1.DataSourceConfiguration.cost_configuration:type_name -> wg.cosmo.node.v1.CostConfiguration - 20, // 27: wg.cosmo.node.v1.DataSourceConfiguration.entity_caching:type_name -> wg.cosmo.node.v1.EntityCaching - 21, // 28: wg.cosmo.node.v1.EntityCaching.entity_cache_configurations:type_name -> wg.cosmo.node.v1.EntityCacheConfiguration + 20, // 27: wg.cosmo.node.v1.DataSourceConfiguration.entity_caching_configuration:type_name -> wg.cosmo.node.v1.EntityCachingConfiguration + 21, // 28: wg.cosmo.node.v1.EntityCachingConfiguration.entity_cache:type_name -> wg.cosmo.node.v1.EntityCacheConfiguration 23, // 29: wg.cosmo.node.v1.CostConfiguration.field_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration 24, // 30: wg.cosmo.node.v1.CostConfiguration.list_sizes:type_name -> wg.cosmo.node.v1.FieldListSizeConfiguration 79, // 31: wg.cosmo.node.v1.CostConfiguration.type_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry diff --git a/connect/src/wg/cosmo/node/v1/node_pb.ts b/connect/src/wg/cosmo/node/v1/node_pb.ts index 3d538d976f..f8b1c2bbd6 100644 --- a/connect/src/wg/cosmo/node/v1/node_pb.ts +++ b/connect/src/wg/cosmo/node/v1/node_pb.ts @@ -846,9 +846,9 @@ export class DataSourceConfiguration extends Message { /** * Entity caching configuration (e.g. request-scoped fields from @openfed__requestScoped). * - * @generated from field: wg.cosmo.node.v1.EntityCaching entity_caching = 17; + * @generated from field: wg.cosmo.node.v1.EntityCachingConfiguration entity_caching_configuration = 17; */ - entityCaching?: EntityCaching; + entityCachingConfiguration?: EntityCachingConfiguration; constructor(data?: PartialMessage) { super(); @@ -874,7 +874,7 @@ export class DataSourceConfiguration extends Message { { no: 14, name: "entity_interfaces", kind: "message", T: EntityInterfaceConfiguration, repeated: true }, { no: 15, name: "interface_objects", kind: "message", T: EntityInterfaceConfiguration, repeated: true }, { no: 16, name: "cost_configuration", kind: "message", T: CostConfiguration }, - { no: 17, name: "entity_caching", kind: "message", T: EntityCaching }, + { no: 17, name: "entity_caching_configuration", kind: "message", T: EntityCachingConfiguration }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): DataSourceConfiguration { @@ -897,41 +897,41 @@ export class DataSourceConfiguration extends Message { /** * Entity caching configuration for a subgraph data source. * - * @generated from message wg.cosmo.node.v1.EntityCaching + * @generated from message wg.cosmo.node.v1.EntityCachingConfiguration */ -export class EntityCaching extends Message { +export class EntityCachingConfiguration extends Message { /** * Per-entity cache configurations (from @openfed__entityCache directive) * - * @generated from field: repeated wg.cosmo.node.v1.EntityCacheConfiguration entity_cache_configurations = 1; + * @generated from field: repeated wg.cosmo.node.v1.EntityCacheConfiguration entity_cache = 1; */ - entityCacheConfigurations: EntityCacheConfiguration[] = []; + entityCache: EntityCacheConfiguration[] = []; - constructor(data?: PartialMessage) { + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "wg.cosmo.node.v1.EntityCaching"; + static readonly typeName = "wg.cosmo.node.v1.EntityCachingConfiguration"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "entity_cache_configurations", kind: "message", T: EntityCacheConfiguration, repeated: true }, + { no: 1, name: "entity_cache", kind: "message", T: EntityCacheConfiguration, repeated: true }, ]); - static fromBinary(bytes: Uint8Array, options?: Partial): EntityCaching { - return new EntityCaching().fromBinary(bytes, options); + static fromBinary(bytes: Uint8Array, options?: Partial): EntityCachingConfiguration { + return new EntityCachingConfiguration().fromBinary(bytes, options); } - static fromJson(jsonValue: JsonValue, options?: Partial): EntityCaching { - return new EntityCaching().fromJson(jsonValue, options); + static fromJson(jsonValue: JsonValue, options?: Partial): EntityCachingConfiguration { + return new EntityCachingConfiguration().fromJson(jsonValue, options); } - static fromJsonString(jsonString: string, options?: Partial): EntityCaching { - return new EntityCaching().fromJsonString(jsonString, options); + static fromJsonString(jsonString: string, options?: Partial): EntityCachingConfiguration { + return new EntityCachingConfiguration().fromJsonString(jsonString, options); } - static equals(a: EntityCaching | PlainMessage | undefined, b: EntityCaching | PlainMessage | undefined): boolean { - return proto3.util.equals(EntityCaching, a, b); + static equals(a: EntityCachingConfiguration | PlainMessage | undefined, b: EntityCachingConfiguration | PlainMessage | undefined): boolean { + return proto3.util.equals(EntityCachingConfiguration, a, b); } } diff --git a/proto/wg/cosmo/node/v1/node.proto b/proto/wg/cosmo/node/v1/node.proto index ea3652ccf9..901ff7c26f 100644 --- a/proto/wg/cosmo/node/v1/node.proto +++ b/proto/wg/cosmo/node/v1/node.proto @@ -92,13 +92,13 @@ message DataSourceConfiguration { repeated EntityInterfaceConfiguration interface_objects = 15; CostConfiguration cost_configuration = 16; // Entity caching configuration (e.g. request-scoped fields from @openfed__requestScoped). - EntityCaching entity_caching = 17; + EntityCachingConfiguration entity_caching_configuration = 17; } // Entity caching configuration for a subgraph data source. -message EntityCaching { +message EntityCachingConfiguration { // Per-entity cache configurations (from @openfed__entityCache directive) - repeated EntityCacheConfiguration entity_cache_configurations = 1; + repeated EntityCacheConfiguration entity_cache = 1; } // Per-entity declaration for @openfed__entityCache. Marks a @key entity type as cacheable so the diff --git a/router/gen/proto/wg/cosmo/node/v1/node.pb.go b/router/gen/proto/wg/cosmo/node/v1/node.pb.go index b24242fb21..f76e5c3dfa 100644 --- a/router/gen/proto/wg/cosmo/node/v1/node.pb.go +++ b/router/gen/proto/wg/cosmo/node/v1/node.pb.go @@ -1071,9 +1071,9 @@ type DataSourceConfiguration struct { InterfaceObjects []*EntityInterfaceConfiguration `protobuf:"bytes,15,rep,name=interface_objects,json=interfaceObjects,proto3" json:"interface_objects,omitempty"` CostConfiguration *CostConfiguration `protobuf:"bytes,16,opt,name=cost_configuration,json=costConfiguration,proto3" json:"cost_configuration,omitempty"` // Entity caching configuration (e.g. request-scoped fields from @openfed__requestScoped). - EntityCaching *EntityCaching `protobuf:"bytes,17,opt,name=entity_caching,json=entityCaching,proto3" json:"entity_caching,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + EntityCachingConfiguration *EntityCachingConfiguration `protobuf:"bytes,17,opt,name=entity_caching_configuration,json=entityCachingConfiguration,proto3" json:"entity_caching_configuration,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DataSourceConfiguration) Reset() { @@ -1218,36 +1218,36 @@ func (x *DataSourceConfiguration) GetCostConfiguration() *CostConfiguration { return nil } -func (x *DataSourceConfiguration) GetEntityCaching() *EntityCaching { +func (x *DataSourceConfiguration) GetEntityCachingConfiguration() *EntityCachingConfiguration { if x != nil { - return x.EntityCaching + return x.EntityCachingConfiguration } return nil } // Entity caching configuration for a subgraph data source. -type EntityCaching struct { +type EntityCachingConfiguration struct { state protoimpl.MessageState `protogen:"open.v1"` // Per-entity cache configurations (from @openfed__entityCache directive) - EntityCacheConfigurations []*EntityCacheConfiguration `protobuf:"bytes,1,rep,name=entity_cache_configurations,json=entityCacheConfigurations,proto3" json:"entity_cache_configurations,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + EntityCache []*EntityCacheConfiguration `protobuf:"bytes,1,rep,name=entity_cache,json=entityCache,proto3" json:"entity_cache,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *EntityCaching) Reset() { - *x = EntityCaching{} +func (x *EntityCachingConfiguration) Reset() { + *x = EntityCachingConfiguration{} mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *EntityCaching) String() string { +func (x *EntityCachingConfiguration) String() string { return protoimpl.X.MessageStringOf(x) } -func (*EntityCaching) ProtoMessage() {} +func (*EntityCachingConfiguration) ProtoMessage() {} -func (x *EntityCaching) ProtoReflect() protoreflect.Message { +func (x *EntityCachingConfiguration) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1259,14 +1259,14 @@ func (x *EntityCaching) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use EntityCaching.ProtoReflect.Descriptor instead. -func (*EntityCaching) Descriptor() ([]byte, []int) { +// Deprecated: Use EntityCachingConfiguration.ProtoReflect.Descriptor instead. +func (*EntityCachingConfiguration) Descriptor() ([]byte, []int) { return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{12} } -func (x *EntityCaching) GetEntityCacheConfigurations() []*EntityCacheConfiguration { +func (x *EntityCachingConfiguration) GetEntityCache() []*EntityCacheConfiguration { if x != nil { - return x.EntityCacheConfigurations + return x.EntityCache } return nil } @@ -4816,7 +4816,7 @@ const file_wg_cosmo_node_v1_node_proto_rawDesc = "" + "\x12StringStorageEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\x18\n" + - "\x16_graphql_client_schema\"\x96\t\n" + + "\x16_graphql_client_schema\"\xbe\t\n" + "\x17DataSourceConfiguration\x124\n" + "\x04kind\x18\x01 \x01(\x0e2 .wg.cosmo.node.v1.DataSourceKindR\x04kind\x12:\n" + "\n" + @@ -4838,10 +4838,10 @@ const file_wg_cosmo_node_v1_node_proto_rawDesc = "" + "\rcustom_events\x18\r \x01(\v2(.wg.cosmo.node.v1.DataSourceCustomEventsR\fcustomEvents\x12[\n" + "\x11entity_interfaces\x18\x0e \x03(\v2..wg.cosmo.node.v1.EntityInterfaceConfigurationR\x10entityInterfaces\x12[\n" + "\x11interface_objects\x18\x0f \x03(\v2..wg.cosmo.node.v1.EntityInterfaceConfigurationR\x10interfaceObjects\x12R\n" + - "\x12cost_configuration\x18\x10 \x01(\v2#.wg.cosmo.node.v1.CostConfigurationR\x11costConfiguration\x12F\n" + - "\x0eentity_caching\x18\x11 \x01(\v2\x1f.wg.cosmo.node.v1.EntityCachingR\rentityCaching\"{\n" + - "\rEntityCaching\x12j\n" + - "\x1bentity_cache_configurations\x18\x01 \x03(\v2*.wg.cosmo.node.v1.EntityCacheConfigurationR\x19entityCacheConfigurations\"\x95\x02\n" + + "\x12cost_configuration\x18\x10 \x01(\v2#.wg.cosmo.node.v1.CostConfigurationR\x11costConfiguration\x12n\n" + + "\x1centity_caching_configuration\x18\x11 \x01(\v2,.wg.cosmo.node.v1.EntityCachingConfigurationR\x1aentityCachingConfiguration\"k\n" + + "\x1aEntityCachingConfiguration\x12M\n" + + "\fentity_cache\x18\x01 \x03(\v2*.wg.cosmo.node.v1.EntityCacheConfigurationR\ventityCache\"\x95\x02\n" + "\x18EntityCacheConfiguration\x12\x1b\n" + "\ttype_name\x18\x01 \x01(\tR\btypeName\x12&\n" + "\x0fmax_age_seconds\x18\x02 \x01(\x03R\rmaxAgeSeconds\x12'\n" + @@ -5210,7 +5210,7 @@ var file_wg_cosmo_node_v1_node_proto_goTypes = []any{ (*SelfRegisterResponse)(nil), // 17: wg.cosmo.node.v1.SelfRegisterResponse (*EngineConfiguration)(nil), // 18: wg.cosmo.node.v1.EngineConfiguration (*DataSourceConfiguration)(nil), // 19: wg.cosmo.node.v1.DataSourceConfiguration - (*EntityCaching)(nil), // 20: wg.cosmo.node.v1.EntityCaching + (*EntityCachingConfiguration)(nil), // 20: wg.cosmo.node.v1.EntityCachingConfiguration (*EntityCacheConfiguration)(nil), // 21: wg.cosmo.node.v1.EntityCacheConfiguration (*CostConfiguration)(nil), // 22: wg.cosmo.node.v1.CostConfiguration (*FieldWeightConfiguration)(nil), // 23: wg.cosmo.node.v1.FieldWeightConfiguration @@ -5306,8 +5306,8 @@ var file_wg_cosmo_node_v1_node_proto_depIdxs = []int32{ 34, // 24: wg.cosmo.node.v1.DataSourceConfiguration.entity_interfaces:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration 34, // 25: wg.cosmo.node.v1.DataSourceConfiguration.interface_objects:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration 22, // 26: wg.cosmo.node.v1.DataSourceConfiguration.cost_configuration:type_name -> wg.cosmo.node.v1.CostConfiguration - 20, // 27: wg.cosmo.node.v1.DataSourceConfiguration.entity_caching:type_name -> wg.cosmo.node.v1.EntityCaching - 21, // 28: wg.cosmo.node.v1.EntityCaching.entity_cache_configurations:type_name -> wg.cosmo.node.v1.EntityCacheConfiguration + 20, // 27: wg.cosmo.node.v1.DataSourceConfiguration.entity_caching_configuration:type_name -> wg.cosmo.node.v1.EntityCachingConfiguration + 21, // 28: wg.cosmo.node.v1.EntityCachingConfiguration.entity_cache:type_name -> wg.cosmo.node.v1.EntityCacheConfiguration 23, // 29: wg.cosmo.node.v1.CostConfiguration.field_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration 24, // 30: wg.cosmo.node.v1.CostConfiguration.list_sizes:type_name -> wg.cosmo.node.v1.FieldListSizeConfiguration 79, // 31: wg.cosmo.node.v1.CostConfiguration.type_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry diff --git a/shared/src/router-config/builder.ts b/shared/src/router-config/builder.ts index 1f91ad86a9..0ff50b4010 100644 --- a/shared/src/router-config/builder.ts +++ b/shared/src/router-config/builder.ts @@ -26,7 +26,7 @@ import { DataSourceKind, EngineConfiguration, EntityCacheConfiguration, - EntityCaching, + EntityCachingConfiguration, FieldListSizeConfiguration, FieldWeightConfiguration, GraphQLSubscriptionConfiguration, @@ -77,14 +77,14 @@ function costsToCostConfiguration(costs?: Costs): CostConfiguration | undefined * @returns The `EntityCaching` message, or `undefined` when empty so the field is omitted (like * `costsToCostConfiguration`). */ -function toEntityCaching(dataByTypeName?: Map): EntityCaching | undefined { +function extractEntityCachingConfiguration(dataByTypeName?: Map): EntityCachingConfiguration | undefined { if (!dataByTypeName) { - return undefined; + return; } - const entityCacheConfigurations: EntityCacheConfiguration[] = []; + const entityCache: EntityCacheConfiguration[] = []; for (const data of dataByTypeName.values()) { for (const ec of data.entityCaching?.entityCacheConfigurations ?? []) { - entityCacheConfigurations.push( + entityCache.push( new EntityCacheConfiguration({ typeName: ec.typeName, maxAgeSeconds: BigInt(ec.maxAgeSeconds), @@ -96,11 +96,11 @@ function toEntityCaching(dataByTypeName?: Map): Ent ); } } - if (entityCacheConfigurations.length === 0) { - return undefined; + if (entityCache.length === 0) { + return; } - return new EntityCaching({ - entityCacheConfigurations, + return new EntityCachingConfiguration({ + entityCache, }); } @@ -352,12 +352,12 @@ export const buildRouterConfig = function (input: Input): RouterConfig { customGraphql, directives: [], entityInterfaces, + entityCachingConfiguration: extractEntityCachingConfiguration(subgraph.configurationDataByTypeName), interfaceObjects, keys, kind, overrideFieldPathFromAlias: true, provides, - entityCaching: toEntityCaching(subgraph.configurationDataByTypeName), requestTimeoutSeconds: BigInt(10), requires, rootNodes, From bf76389160610cdbf29238c939f919aae310bbe6 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Fri, 19 Jun 2026 20:26:51 +0530 Subject: [PATCH 15/65] fix: review comments --- composition/src/v1/normalization/types/types.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/composition/src/v1/normalization/types/types.ts b/composition/src/v1/normalization/types/types.ts index f77a544f36..53ca4ad4b0 100644 --- a/composition/src/v1/normalization/types/types.ts +++ b/composition/src/v1/normalization/types/types.ts @@ -162,7 +162,6 @@ export type EntityCacheOptionalArgumentNodes = | PartialCacheLoadArgumentNode | ShadowModeArgumentNode; -// string export type MaxAgeArgumentNode = { readonly kind: Kind.ARGUMENT; readonly name: NameNode & { readonly value: typeof MAX_AGE }; From fe0c99186e33f992b6e7872a7a870c0cb867909c Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Fri, 19 Jun 2026 20:53:10 +0530 Subject: [PATCH 16/65] fix: review comments --- composition/src/errors/errors.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composition/src/errors/errors.ts b/composition/src/errors/errors.ts index 929906abee..d3485a5eca 100644 --- a/composition/src/errors/errors.ts +++ b/composition/src/errors/errors.ts @@ -2053,7 +2053,7 @@ export function unknownSubgraphNameError(subgraphName: SubgraphName): Error { } export function entityCacheWithoutKeyErrorMessage(typeName: TypeName): string { - return `Type "${typeName}" declares the @openfed__entityCache directive but does not define a @key directive.`; + return `Type "${typeName}" declares the directive "@openfed__entityCache" but does not define a "@key" directive.`; } export function maxAgeNotPositiveIntegerErrorMessage({ From 32f2f158dc6c393cf4f09a428b3989794e4dd3e0 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Fri, 19 Jun 2026 21:12:09 +0530 Subject: [PATCH 17/65] fix: review comments --- .../src/v1/normalization/normalization-factory.ts | 6 +++--- composition/src/v1/normalization/types/types.ts | 10 +++++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index 441f3d0613..b1686ed2e1 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -4000,11 +4000,11 @@ export class NormalizationFactory { } } - extractEntityCacheDirective(typeName: string, parentData: ParentDefinitionData) { - if (parentData.kind !== Kind.OBJECT_TYPE_DEFINITION) { + extractEntityCacheDirective({ directivesByName, kind, name: typeName }: ParentDefinitionData) { + if (kind !== Kind.OBJECT_TYPE_DEFINITION) { return; } - const entityCacheDirectives = parentData.directivesByName.get(OPENFED_ENTITY_CACHE); + const entityCacheDirectives = directivesByName.get(OPENFED_ENTITY_CACHE); if (!entityCacheDirectives || entityCacheDirectives.length == 0) { return; } diff --git a/composition/src/v1/normalization/types/types.ts b/composition/src/v1/normalization/types/types.ts index 53ca4ad4b0..2bf916a661 100644 --- a/composition/src/v1/normalization/types/types.ts +++ b/composition/src/v1/normalization/types/types.ts @@ -148,14 +148,14 @@ export type ComposeDirectiveArgumentNode = { }; export type EntityCacheDirectiveNode = { - readonly arguments: [EntityCacheRequiredArgumentNodes, EntityCacheOptionalArgumentNodes?]; + readonly arguments: + readonly [MaxAgeArgumentNode] | + readonly [MaxAgeArgumentNode, NegativeCacheTtlArgumentNode?, IncludeHeadersArgumentNode?, PartialCacheLoadArgumentNode?, ShadowModeArgumentNode?]; readonly kind: Kind.DIRECTIVE; readonly name: NameNode & { readonly value: typeof OPENFED_ENTITY_CACHE }; readonly loc?: Location; }; -export type EntityCacheRequiredArgumentNodes = MaxAgeArgumentNode; - export type EntityCacheOptionalArgumentNodes = | NegativeCacheTtlArgumentNode | IncludeHeadersArgumentNode @@ -168,24 +168,28 @@ export type MaxAgeArgumentNode = { readonly value: IntValueNode; readonly loc?: Location; }; + export type NegativeCacheTtlArgumentNode = { readonly kind: Kind.ARGUMENT; readonly name: NameNode & { readonly value: typeof NEGATIVE_CACHE_TTL }; readonly value: IntValueNode; readonly loc?: Location; }; + export type IncludeHeadersArgumentNode = { readonly kind: Kind.ARGUMENT; readonly name: NameNode & { readonly value: typeof INCLUDE_HEADERS }; readonly value: BooleanValueNode; readonly loc?: Location; }; + export type PartialCacheLoadArgumentNode = { readonly kind: Kind.ARGUMENT; readonly name: NameNode & { readonly value: typeof PARTIAL_CACHE_LOAD }; readonly value: BooleanValueNode; readonly loc?: Location; }; + export type ShadowModeArgumentNode = { readonly kind: Kind.ARGUMENT; readonly name: NameNode & { readonly value: typeof SHADOW_MODE }; From 12f3887be653f01ab384c4888704c0ce20e99387 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Fri, 19 Jun 2026 21:12:54 +0530 Subject: [PATCH 18/65] fix: review comments --- shared/src/router-config/builder.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/shared/src/router-config/builder.ts b/shared/src/router-config/builder.ts index 0ff50b4010..0f17631d82 100644 --- a/shared/src/router-config/builder.ts +++ b/shared/src/router-config/builder.ts @@ -77,7 +77,9 @@ function costsToCostConfiguration(costs?: Costs): CostConfiguration | undefined * @returns The `EntityCaching` message, or `undefined` when empty so the field is omitted (like * `costsToCostConfiguration`). */ -function extractEntityCachingConfiguration(dataByTypeName?: Map): EntityCachingConfiguration | undefined { +function extractEntityCachingConfiguration( + dataByTypeName?: Map, +): EntityCachingConfiguration | undefined { if (!dataByTypeName) { return; } From 928fee57cbaeafd423cb604e5975a50523b555b8 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Fri, 19 Jun 2026 21:14:11 +0530 Subject: [PATCH 19/65] fix: review comments --- composition/src/v1/normalization/normalization-factory.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index b1686ed2e1..d9a7af243f 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -4264,7 +4264,7 @@ export class NormalizationFactory { const isObject = parentData.kind === Kind.OBJECT_TYPE_DEFINITION; // Extract @openfed__entityCache here (Object-only) so we reuse this iterator instead of a separate pass. - this.extractEntityCacheDirective(parentTypeName, parentData); + this.extractEntityCacheDirective(parentData); if (this.isSubgraphVersionTwo && parentData.extensionType === ExtensionType.EXTENDS) { // @extends is essentially ignored in V2. It was only propagated to handle @external key fields. From 15e686510e7b5052862e5dbe48e773b4efbab3d4 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Fri, 19 Jun 2026 21:17:14 +0530 Subject: [PATCH 20/65] fix: review comments --- .../directive-definition-data.ts | 2 +- composition/src/v1/constants/directive-definitions.ts | 9 ++++++--- composition/src/v1/constants/type-nodes.ts | 4 +++- composition/src/v1/normalization/types/types.ts | 10 ++++++++-- 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/composition/src/directive-definition-data/directive-definition-data.ts b/composition/src/directive-definition-data/directive-definition-data.ts index 79351afb4c..83d0d2bf28 100644 --- a/composition/src/directive-definition-data/directive-definition-data.ts +++ b/composition/src/directive-definition-data/directive-definition-data.ts @@ -122,9 +122,9 @@ import { SPECIFIED_BY_DEFINITION, SUBSCRIPTION_FILTER_DEFINITION, TAG_DEFINITION, - BOOLEAN_FALSE_VALUE_NODE, } from '../v1/constants/directive-definitions'; import { + BOOLEAN_FALSE_VALUE_NODE, REQUIRED_FIELDSET_TYPE_NODE, REQUIRED_INT_TYPE_NODE, REQUIRED_STRING_TYPE_NODE, diff --git a/composition/src/v1/constants/directive-definitions.ts b/composition/src/v1/constants/directive-definitions.ts index 64ad1e333e..20229348cd 100644 --- a/composition/src/v1/constants/directive-definitions.ts +++ b/composition/src/v1/constants/directive-definitions.ts @@ -88,7 +88,12 @@ import { PARTIAL_CACHE_LOAD, SHADOW_MODE, } from '../../utils/string-constants'; -import { REQUIRED_FIELDSET_TYPE_NODE, REQUIRED_INT_TYPE_NODE, REQUIRED_STRING_TYPE_NODE } from './type-nodes'; +import { + BOOLEAN_FALSE_VALUE_NODE, + REQUIRED_FIELDSET_TYPE_NODE, + REQUIRED_INT_TYPE_NODE, + REQUIRED_STRING_TYPE_NODE, +} from './type-nodes'; // @authenticated on ENUM | FIELD_DEFINITION | INTERFACE | OBJECT | SCALAR export const AUTHENTICATED_DEFINITION: DirectiveDefinitionNode = { @@ -104,8 +109,6 @@ export const AUTHENTICATED_DEFINITION: DirectiveDefinitionNode = { repeatable: false, }; -export const BOOLEAN_FALSE_VALUE_NODE: ConstValueNode = { kind: Kind.BOOLEAN, value: false }; - // @composeDirective is currently unimplemented /* directive @composeDirective(name: String!) repeatable on SCHEMA */ export const COMPOSE_DIRECTIVE_DEFINITION: DirectiveDefinitionNode = { diff --git a/composition/src/v1/constants/type-nodes.ts b/composition/src/v1/constants/type-nodes.ts index 1fab7278f3..39732352a7 100644 --- a/composition/src/v1/constants/type-nodes.ts +++ b/composition/src/v1/constants/type-nodes.ts @@ -1,4 +1,4 @@ -import { Kind, type TypeNode } from 'graphql'; +import { type ConstValueNode, Kind, type TypeNode } from 'graphql'; import { stringToNamedTypeNode } from '../../ast/utils'; import { FIELD_SET_SCALAR, INT_SCALAR, STRING_SCALAR } from '../../utils/string-constants'; @@ -16,3 +16,5 @@ export const REQUIRED_FIELDSET_TYPE_NODE: TypeNode = { kind: Kind.NON_NULL_TYPE, type: stringToNamedTypeNode(FIELD_SET_SCALAR), }; + +export const BOOLEAN_FALSE_VALUE_NODE: ConstValueNode = { kind: Kind.BOOLEAN, value: false }; diff --git a/composition/src/v1/normalization/types/types.ts b/composition/src/v1/normalization/types/types.ts index 2bf916a661..b1979a0e26 100644 --- a/composition/src/v1/normalization/types/types.ts +++ b/composition/src/v1/normalization/types/types.ts @@ -149,8 +149,14 @@ export type ComposeDirectiveArgumentNode = { export type EntityCacheDirectiveNode = { readonly arguments: - readonly [MaxAgeArgumentNode] | - readonly [MaxAgeArgumentNode, NegativeCacheTtlArgumentNode?, IncludeHeadersArgumentNode?, PartialCacheLoadArgumentNode?, ShadowModeArgumentNode?]; + | readonly [MaxAgeArgumentNode] + | readonly [ + MaxAgeArgumentNode, + NegativeCacheTtlArgumentNode?, + IncludeHeadersArgumentNode?, + PartialCacheLoadArgumentNode?, + ShadowModeArgumentNode?, + ]; readonly kind: Kind.DIRECTIVE; readonly name: NameNode & { readonly value: typeof OPENFED_ENTITY_CACHE }; readonly loc?: Location; From bb3e8dadfca374b99f4f35fd3f97580925b092e2 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Fri, 19 Jun 2026 22:11:46 +0530 Subject: [PATCH 21/65] fix: review comments --- composition/src/errors/errors.ts | 9 +++------ composition/src/errors/types/params.ts | 4 ---- .../src/v1/normalization/normalization-factory.ts | 13 +++++++++---- .../tests/v1/directives/entity-cache.test.ts | 4 ++-- 4 files changed, 14 insertions(+), 16 deletions(-) diff --git a/composition/src/errors/errors.ts b/composition/src/errors/errors.ts index d3485a5eca..176b081599 100644 --- a/composition/src/errors/errors.ts +++ b/composition/src/errors/errors.ts @@ -2056,13 +2056,10 @@ export function entityCacheWithoutKeyErrorMessage(typeName: TypeName): string { return `Type "${typeName}" declares the directive "@openfed__entityCache" but does not define a "@key" directive.`; } -export function maxAgeNotPositiveIntegerErrorMessage({ - directiveName, - value, -}: MaxAgeNotPositiveIntegerErrorParams): string { - return `The directive "@${directiveName}" argument "maxAge" must be provided a positive integer; received "${value}".`; +export function maxAgeNotPositiveIntegerErrorMessage(value: number): string { + return `The argument "maxAge" must be provided a positive integer; received "${value}".`; } export function negativeCacheTTLNotNonNegativeIntegerErrorMessage(value: number): string { - return `The directive "@openfed__entityCache" argument "negativeCacheTTL" must be provided a zero or positive integer; received "${value}".`; + return `The argument "negativeCacheTTL" must be provided a zero or positive integer; received "${value}".`; } diff --git a/composition/src/errors/types/params.ts b/composition/src/errors/types/params.ts index a1d7c24adb..ef3c18f350 100644 --- a/composition/src/errors/types/params.ts +++ b/composition/src/errors/types/params.ts @@ -95,7 +95,3 @@ export type InvalidArgumentValueErrorParams = { expectedTypeString: string; }; -export type MaxAgeNotPositiveIntegerErrorParams = { - directiveName: DirectiveName; - value: number; -}; diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index d9a7af243f..6beac07877 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -4072,21 +4072,26 @@ export class NormalizationFactory { } } + const entityCacheErrors = []; + if (config.maxAgeSeconds <= 0) { - this.errors.push( + entityCacheErrors.push( invalidDirectiveError(OPENFED_ENTITY_CACHE, typeName, FIRST_ORDINAL, [ - maxAgeNotPositiveIntegerErrorMessage({ directiveName: OPENFED_ENTITY_CACHE, value: config.maxAgeSeconds }), + maxAgeNotPositiveIntegerErrorMessage(config.maxAgeSeconds), ]), ); - return; } if (config.notFoundCacheTtlSeconds < 0) { - this.errors.push( + entityCacheErrors.push( invalidDirectiveError(OPENFED_ENTITY_CACHE, typeName, FIRST_ORDINAL, [ negativeCacheTTLNotNonNegativeIntegerErrorMessage(config.notFoundCacheTtlSeconds), ]), ); + } + + if (entityCacheErrors.length > 0) { + this.errors.push(...entityCacheErrors) return; } diff --git a/composition/tests/v1/directives/entity-cache.test.ts b/composition/tests/v1/directives/entity-cache.test.ts index bec2b57f7f..b930cdf8b9 100644 --- a/composition/tests/v1/directives/entity-cache.test.ts +++ b/composition/tests/v1/directives/entity-cache.test.ts @@ -49,7 +49,7 @@ describe('@openfed__entityCache', () => { expect(errors).toHaveLength(1); expect(errors[0]).toStrictEqual( invalidDirectiveError(OPENFED_ENTITY_CACHE, 'Product', FIRST_ORDINAL, [ - maxAgeNotPositiveIntegerErrorMessage({ directiveName: OPENFED_ENTITY_CACHE, value: 0 }), + maxAgeNotPositiveIntegerErrorMessage(0), ]), ); }); @@ -68,7 +68,7 @@ describe('@openfed__entityCache', () => { expect(errors).toHaveLength(1); expect(errors[0]).toStrictEqual( invalidDirectiveError(OPENFED_ENTITY_CACHE, 'Product', FIRST_ORDINAL, [ - maxAgeNotPositiveIntegerErrorMessage({ directiveName: OPENFED_ENTITY_CACHE, value: -5 }), + maxAgeNotPositiveIntegerErrorMessage(-5), ]), ); }); From 8f00a107f6693e01faabdd2edefb76529b8d73e3 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Fri, 19 Jun 2026 23:06:21 +0530 Subject: [PATCH 22/65] fix: review comments --- composition/src/errors/errors.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/composition/src/errors/errors.ts b/composition/src/errors/errors.ts index 176b081599..91501f3022 100644 --- a/composition/src/errors/errors.ts +++ b/composition/src/errors/errors.ts @@ -17,7 +17,6 @@ import { type InvalidRepeatedDirectiveErrorParams, type InvalidSubValueFieldLinkDirectiveImportErrorParams, type invalidVersionLinkDirectiveUrlErrorParams, - type MaxAgeNotPositiveIntegerErrorParams, type NonExternalConditionalFieldErrorParams, type OneOfRequiredFieldsErrorParams, type SemanticNonNullLevelsIndexOutOfBoundsErrorParams, From 075bdfd3fd738450533b37888d3bf422a540d19f Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Fri, 19 Jun 2026 23:10:52 +0530 Subject: [PATCH 23/65] fix: review comments --- composition/src/errors/types/params.ts | 1 - composition/src/v1/normalization/normalization-factory.ts | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/composition/src/errors/types/params.ts b/composition/src/errors/types/params.ts index ef3c18f350..05e060c4a6 100644 --- a/composition/src/errors/types/params.ts +++ b/composition/src/errors/types/params.ts @@ -94,4 +94,3 @@ export type InvalidArgumentValueErrorParams = { value: string; expectedTypeString: string; }; - diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index 6beac07877..88dfedce06 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -4091,7 +4091,7 @@ export class NormalizationFactory { } if (entityCacheErrors.length > 0) { - this.errors.push(...entityCacheErrors) + this.errors.push(...entityCacheErrors); return; } From f133458325fda921a5ec40b16886bfe3ae4b499c Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Fri, 19 Jun 2026 23:39:09 +0530 Subject: [PATCH 24/65] fix: review comments --- .../directive-definition-data.ts | 8 ++++---- .../src/v1/constants/directive-definitions.ts | 8 ++++---- composition/src/v1/constants/type-nodes.ts | 2 +- .../v1/normalization/normalization-factory.ts | 19 ++++++++++--------- composition/tests/utils/utils.ts | 2 +- .../tests/v1/directives/entity-cache.test.ts | 18 +++++++++--------- 6 files changed, 29 insertions(+), 28 deletions(-) diff --git a/composition/src/directive-definition-data/directive-definition-data.ts b/composition/src/directive-definition-data/directive-definition-data.ts index 83d0d2bf28..856c5a43a2 100644 --- a/composition/src/directive-definition-data/directive-definition-data.ts +++ b/composition/src/directive-definition-data/directive-definition-data.ts @@ -124,7 +124,7 @@ import { TAG_DEFINITION, } from '../v1/constants/directive-definitions'; import { - BOOLEAN_FALSE_VALUE_NODE, + FALSE_BOOLEAN_VALUE_NODE, REQUIRED_FIELDSET_TYPE_NODE, REQUIRED_INT_TYPE_NODE, REQUIRED_STRING_TYPE_NODE, @@ -983,7 +983,7 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ INCLUDE_HEADERS, newDirectiveArgumentData({ directive: `@${OPENFED_ENTITY_CACHE}`, - defaultValue: BOOLEAN_FALSE_VALUE_NODE, + defaultValue: FALSE_BOOLEAN_VALUE_NODE, name: INCLUDE_HEADERS, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, typeNode: stringToNamedTypeNode(BOOLEAN_SCALAR), @@ -993,7 +993,7 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ PARTIAL_CACHE_LOAD, newDirectiveArgumentData({ directive: `@${OPENFED_ENTITY_CACHE}`, - defaultValue: BOOLEAN_FALSE_VALUE_NODE, + defaultValue: FALSE_BOOLEAN_VALUE_NODE, name: PARTIAL_CACHE_LOAD, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, typeNode: stringToNamedTypeNode(BOOLEAN_SCALAR), @@ -1003,7 +1003,7 @@ export const ENTITY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ SHADOW_MODE, newDirectiveArgumentData({ directive: `@${OPENFED_ENTITY_CACHE}`, - defaultValue: BOOLEAN_FALSE_VALUE_NODE, + defaultValue: FALSE_BOOLEAN_VALUE_NODE, name: SHADOW_MODE, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, typeNode: stringToNamedTypeNode(BOOLEAN_SCALAR), diff --git a/composition/src/v1/constants/directive-definitions.ts b/composition/src/v1/constants/directive-definitions.ts index 20229348cd..58632fd0bc 100644 --- a/composition/src/v1/constants/directive-definitions.ts +++ b/composition/src/v1/constants/directive-definitions.ts @@ -89,7 +89,7 @@ import { SHADOW_MODE, } from '../../utils/string-constants'; import { - BOOLEAN_FALSE_VALUE_NODE, + FALSE_BOOLEAN_VALUE_NODE, REQUIRED_FIELDSET_TYPE_NODE, REQUIRED_INT_TYPE_NODE, REQUIRED_STRING_TYPE_NODE, @@ -848,19 +848,19 @@ export const OPENFED_ENTITY_CACHE_DEFINITION: DirectiveDefinitionNode = { kind: Kind.INPUT_VALUE_DEFINITION, name: stringToNameNode(INCLUDE_HEADERS), type: stringToNamedTypeNode(BOOLEAN_SCALAR), - defaultValue: BOOLEAN_FALSE_VALUE_NODE, + defaultValue: FALSE_BOOLEAN_VALUE_NODE, }, { kind: Kind.INPUT_VALUE_DEFINITION, name: stringToNameNode(PARTIAL_CACHE_LOAD), type: stringToNamedTypeNode(BOOLEAN_SCALAR), - defaultValue: BOOLEAN_FALSE_VALUE_NODE, + defaultValue: FALSE_BOOLEAN_VALUE_NODE, }, { kind: Kind.INPUT_VALUE_DEFINITION, name: stringToNameNode(SHADOW_MODE), type: stringToNamedTypeNode(BOOLEAN_SCALAR), - defaultValue: BOOLEAN_FALSE_VALUE_NODE, + defaultValue: FALSE_BOOLEAN_VALUE_NODE, }, ], kind: Kind.DIRECTIVE_DEFINITION, diff --git a/composition/src/v1/constants/type-nodes.ts b/composition/src/v1/constants/type-nodes.ts index 39732352a7..c33a11722f 100644 --- a/composition/src/v1/constants/type-nodes.ts +++ b/composition/src/v1/constants/type-nodes.ts @@ -17,4 +17,4 @@ export const REQUIRED_FIELDSET_TYPE_NODE: TypeNode = { type: stringToNamedTypeNode(FIELD_SET_SCALAR), }; -export const BOOLEAN_FALSE_VALUE_NODE: ConstValueNode = { kind: Kind.BOOLEAN, value: false }; +export const FALSE_BOOLEAN_VALUE_NODE: ConstValueNode = { kind: Kind.BOOLEAN, value: false }; diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index 88dfedce06..68f8f7b8e6 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -456,9 +456,10 @@ export class NormalizationFactory { directiveDefinitionDataByName = initializeDirectiveDefinitionDatas(); doesParentRequireFetchReasons = false; edfsDirectiveReferences = new Set(); - // Cached entity configs keyed by type name, populated by extractEntityCacheDirective() from - // @openfed__entityCache. Future caching directives (@openfed__queryCache etc.) use this as a lookup - // to verify a field's return type is a cached entity. + /* Cached entity configs keyed by type name, populated by extractEntityCacheDirective() from + * @openfed__entityCache. Future caching directives (@openfed__queryCache etc.) use this as a lookup + * to verify a field's return type is a cached entity. + */ entityCacheConfigByTypeName = new Map(); errors = new Array(); entityDataByTypeName = new Map(); @@ -4016,11 +4017,12 @@ export class NormalizationFactory { ); return; } - // validateDirectives() (run earlier in normalize()) has already guaranteed each argument's type — - // Int for maxAge/negativeCacheTTL, Boolean for the flags — so the generic ConstDirectiveNode is - // narrowed once to the precise typed node, mirroring RequestScopedDirectiveNode/ComposeDirectiveNode. - // Optional arguments may be absent (definition defaults are not materialized onto the usage AST), - // so the config starts at the directive's documented defaults and each present argument overrides it. + /* validateDirectives() (run earlier in normalize()) has already guaranteed each argument's type — + * Int for maxAge/negativeCacheTTL, Boolean for the flags — so the generic ConstDirectiveNode is + * narrowed once to the precise typed node, mirroring RequestScopedDirectiveNode/ComposeDirectiveNode. + * Optional arguments may be absent (definition defaults are not materialized onto the usage AST), + * so the config starts at the directive's documented defaults and each present argument overrides it. + */ const directive = entityCacheDirectives[0] as EntityCacheDirectiveNode; const config: EntityCacheConfiguration = { typeName, @@ -4268,7 +4270,6 @@ export class NormalizationFactory { const operationTypeNode = this.operationTypeNodeByTypeName.get(parentTypeName); const isObject = parentData.kind === Kind.OBJECT_TYPE_DEFINITION; - // Extract @openfed__entityCache here (Object-only) so we reuse this iterator instead of a separate pass. this.extractEntityCacheDirective(parentData); if (this.isSubgraphVersionTwo && parentData.extensionType === ExtensionType.EXTENDS) { diff --git a/composition/tests/utils/utils.ts b/composition/tests/utils/utils.ts index 003f473bd5..551fce5a5d 100644 --- a/composition/tests/utils/utils.ts +++ b/composition/tests/utils/utils.ts @@ -133,6 +133,6 @@ export function createSubgraph(name: SubgraphName, sdlString: string): Subgraph }; } -export function createSubgraphWithDefault(sdlString: string): Subgraph { +export function createSubgraphWithDefaultName(sdlString: string): Subgraph { return createSubgraph('subgraph-default-a', sdlString); } diff --git a/composition/tests/v1/directives/entity-cache.test.ts b/composition/tests/v1/directives/entity-cache.test.ts index b930cdf8b9..4fde350c58 100644 --- a/composition/tests/v1/directives/entity-cache.test.ts +++ b/composition/tests/v1/directives/entity-cache.test.ts @@ -9,15 +9,15 @@ import { negativeCacheTTLNotNonNegativeIntegerErrorMessage, ROUTER_COMPATIBILITY_VERSION_ONE, } from '../../../src'; -import { createSubgraphWithDefault, normalizeSubgraphFailure, normalizeSubgraphSuccess } from '../../utils/utils'; +import { createSubgraphWithDefaultName, normalizeSubgraphFailure, normalizeSubgraphSuccess } from '../../utils/utils'; // @openfed__entityCache marks an entity type as cacheable. It requires @key (so the router can // construct cache keys) and a positive maxAge (TTL in seconds). -describe('@openfed__entityCache', () => { - describe('validation', () => { +describe('@openfed__entityCache tests', () => { + describe('validation tests', () => { test('that an error is raised without @key — the router needs @key fields to construct cache keys', () => { const { errors } = normalizeSubgraphFailure( - createSubgraphWithDefault(` + createSubgraphWithDefaultName(` type Query { product(id: ID!): Product } # Product has @openfed__entityCache but no @key — there's no cache key to use type Product @openfed__entityCache(maxAge: 60) { @@ -37,7 +37,7 @@ describe('@openfed__entityCache', () => { test('that a maxAge of zero is rejected — TTL must be at least 1 second', () => { const { errors } = normalizeSubgraphFailure( - createSubgraphWithDefault(` + createSubgraphWithDefaultName(` type Query { product(id: ID!): Product } type Product @key(fields: "id") @openfed__entityCache(maxAge: 0) { id: ID! @@ -56,7 +56,7 @@ describe('@openfed__entityCache', () => { test('that a negative maxAge is rejected', () => { const { errors } = normalizeSubgraphFailure( - createSubgraphWithDefault(` + createSubgraphWithDefaultName(` type Query { product(id: ID!): Product } type Product @key(fields: "id") @openfed__entityCache(maxAge: -5) { id: ID! @@ -75,7 +75,7 @@ describe('@openfed__entityCache', () => { test('that a negative negativeCacheTTL is rejected', () => { const { errors } = normalizeSubgraphFailure( - createSubgraphWithDefault(` + createSubgraphWithDefaultName(` type Query { product(id: ID!): Product } type Product @key(fields: "id") @openfed__entityCache(maxAge: 300, negativeCacheTTL: -1) { id: ID! @@ -93,7 +93,7 @@ describe('@openfed__entityCache', () => { }); }); - describe('configuration extraction', () => { + describe('configuration extraction tests', () => { test('that defaults produce the correct EntityCacheConfig', () => { // Only maxAge is required; includeHeaders, partialCacheLoad, shadowMode default to false const configs = getEntityCacheConfigs( @@ -146,6 +146,6 @@ describe('@openfed__entityCache', () => { // Helper: normalizes the subgraph and returns the entityCache config array attached to `typeName`. // On this branch entity-caching config is nested under ConfigurationData.entityCaching. function getEntityCacheConfigs(sdl: string, typeName: string): Array | undefined { - const result = normalizeSubgraphSuccess(createSubgraphWithDefault(sdl), ROUTER_COMPATIBILITY_VERSION_ONE); + const result = normalizeSubgraphSuccess(createSubgraphWithDefaultName(sdl), ROUTER_COMPATIBILITY_VERSION_ONE); return result.configurationDataByTypeName.get(typeName)?.entityCaching?.entityCacheConfigurations; } From 86deba391d970e4ea2ba806103929c7cb52b06d9 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Sat, 20 Jun 2026 02:16:37 +0530 Subject: [PATCH 25/65] fix: review comments --- composition/src/errors/errors.ts | 10 ++- composition/src/errors/types/params.ts | 5 ++ .../v1/normalization/normalization-factory.ts | 67 ++++++++-------- .../v1/directives/cache-invalidate.test.ts | 78 ++++++------------- 4 files changed, 69 insertions(+), 91 deletions(-) diff --git a/composition/src/errors/errors.ts b/composition/src/errors/errors.ts index b9867fa48c..3e0ba7de5f 100644 --- a/composition/src/errors/errors.ts +++ b/composition/src/errors/errors.ts @@ -6,6 +6,7 @@ import { type ObjectDefinitionData, } from '../schema-building/types/types'; import { + type CacheInvalidateOnNonEntityReturnTypeErrorParams, type IncompatibleMergedTypesErrorParams, type IncompatibleParentTypeMergeErrorParams, type IncompatibleTypeWithProvidesErrorMessageParams, @@ -2064,9 +2065,12 @@ export function negativeCacheTTLNotNonNegativeIntegerErrorMessage(value: number) } export function cacheInvalidateOnNonMutationSubscriptionFieldErrorMessage(fieldCoords: string): string { - return `@openfed__cacheInvalidate is only valid on Mutation or Subscription fields, found on "${fieldCoords}".`; + return `Coordinates "${fieldCoords}" are not a Mutation or Subscription root field.`; } -export function cacheInvalidateOnNonEntityReturnTypeErrorMessage(fieldCoords: string, returnType: string): string { - return `Field "${fieldCoords}" has @openfed__cacheInvalidate but returns non-entity type "${returnType}".`; +export function cacheInvalidateOnNonEntityReturnTypeErrorMessage({ + fieldCoords, + returnType, +}: CacheInvalidateOnNonEntityReturnTypeErrorParams): string { + return `Coordinates "${fieldCoords}" return non-entity type "${returnType}".`; } diff --git a/composition/src/errors/types/params.ts b/composition/src/errors/types/params.ts index 05e060c4a6..61c4db482e 100644 --- a/composition/src/errors/types/params.ts +++ b/composition/src/errors/types/params.ts @@ -94,3 +94,8 @@ export type InvalidArgumentValueErrorParams = { value: string; expectedTypeString: string; }; + +export type CacheInvalidateOnNonEntityReturnTypeErrorParams = { + fieldCoords: string; + returnType: string; +}; diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index 9bc2ad644e..78af294e6a 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -4111,43 +4111,36 @@ export class NormalizationFactory { }; } - // Dispatches the per-field caching directives. Must run after extractEntityCacheDirective() (reads - // entityCacheConfigByTypeName). All object types are walked, not just root operation types: these - // directives are declared `on FIELD_DEFINITION`, so they can be (mis)placed on any field. - // getOperationTypeNodeForRootTypeName() returns undefined for non-root types; each extractor then reports - // the misplacement via its operation-type check, rather than silently ignoring it. - processRootFieldCacheDirectives() { - for (const [parentTypeName, parentData] of this.parentDefinitionDataByTypeName) { - if (parentData.kind !== Kind.OBJECT_TYPE_DEFINITION) { - continue; - } - const operationType = this.getOperationTypeNodeForRootTypeName(parentTypeName); - // A renamed root type (e.g. `schema { query: MyQuery }`) is keyed in configurationDataByTypeName under - // its federated/canonical name (Query/Mutation/Subscription) by every other config writer (keys, provides, - // the root-node lookup). Cache configs must use the same key, or the router reads the canonical node and - // never sees them. - const configurationTypeName = getParentTypeName(parentData); - - for (const [fieldName, fieldData] of parentData.fieldDataByName) { - if (fieldData.directivesByName.has(OPENFED_CACHE_INVALIDATE)) { - this.extractCacheInvalidateConfig(parentTypeName, configurationTypeName, fieldName, fieldData, operationType); - } - } - } - } - // Extracts @openfed__cacheInvalidate from Mutation/Subscription fields. The return type must be a cached // entity (@key + @openfed__entityCache). A non-Mutation/Subscription placement (including non-root fields, // where operationType is undefined) is reported, never silently ignored. + extractFieldCacheInvalidateConfig( + parentData: CompositeOutputData, + configurationTypeName: string, + fieldName: string, + fieldData: FieldData, + ) { + if (parentData.kind !== Kind.OBJECT_TYPE_DEFINITION) { + return; + } + if (fieldData.directivesByName.has(OPENFED_CACHE_INVALIDATE)) { + this.extractCacheInvalidateConfig(parentData.name, configurationTypeName, fieldName, fieldData); + } + } + extractCacheInvalidateConfig( parentTypeName: string, configurationTypeName: string, fieldName: string, fieldData: FieldData, - operationType: OperationTypeNode | undefined, ) { + if (!fieldData.directivesByName.has(OPENFED_CACHE_INVALIDATE)) { + return; + } + + const operationType = this.getOperationTypeNodeForRootTypeName(parentTypeName); const fieldCoords = `${parentTypeName}.${fieldName}`; - if (operationType !== OperationTypeNode.MUTATION && operationType !== OperationTypeNode.SUBSCRIPTION) { + if (!operationType || operationType === OperationTypeNode.QUERY) { this.errors.push( invalidDirectiveError(OPENFED_CACHE_INVALIDATE, fieldCoords, FIRST_ORDINAL, [ cacheInvalidateOnNonMutationSubscriptionFieldErrorMessage(fieldCoords), @@ -4159,14 +4152,14 @@ export class NormalizationFactory { if (!this.keyFieldSetDatasByTypeName.has(returnTypeName) || !this.entityCacheConfigByTypeName.has(returnTypeName)) { this.errors.push( invalidDirectiveError(OPENFED_CACHE_INVALIDATE, fieldCoords, FIRST_ORDINAL, [ - cacheInvalidateOnNonEntityReturnTypeErrorMessage(fieldCoords, returnTypeName), + cacheInvalidateOnNonEntityReturnTypeErrorMessage({ fieldCoords, returnType: returnTypeName }), ]), ); return; } const config: CacheInvalidateConfig = { fieldName, - operationType: operationType === OperationTypeNode.MUTATION ? MUTATION : SUBSCRIPTION, + operationType: operationType, entityTypeName: returnTypeName, }; const configurationData = getValueOrDefault(this.configurationDataByTypeName, configurationTypeName, () => @@ -4174,10 +4167,11 @@ export class NormalizationFactory { ); const existingCacheInvalidates = configurationData.entityCaching?.cacheInvalidateConfigurations ?? []; - configurationData.entityCaching = { - ...configurationData.entityCaching, - cacheInvalidateConfigurations: [...existingCacheInvalidates, config], - }; + + if (!configurationData.entityCaching) { + configurationData.entityCaching = {}; + } + configurationData.entityCaching.cacheInvalidateConfigurations = [...existingCacheInvalidates, config]; } addFieldNamesToConfigurationData(fieldDataByFieldName: Map, configurationData: ConfigurationData) { @@ -4353,8 +4347,13 @@ export class NormalizationFactory { parentData.fieldDataByName.delete(SERVICE_FIELD); parentData.fieldDataByName.delete(ENTITIES_FIELD); } + + const newParentTypeName = getParentTypeName(parentData); + const externalInterfaceFieldNames: Array = []; for (const [fieldName, fieldData] of parentData.fieldDataByName) { + this.extractFieldCacheInvalidateConfig(parentData, newParentTypeName, fieldName, fieldData); + if (!isObject && fieldData.externalFieldDataBySubgraphName.get(this.subgraphName)?.isDefinedExternal) { externalInterfaceFieldNames.push(fieldName); } @@ -4391,7 +4390,6 @@ export class NormalizationFactory { externalInterfaceFieldsWarning(this.subgraphName, parentTypeName, [...externalInterfaceFieldNames]), ); } - const newParentTypeName = getParentTypeName(parentData); const configurationData = getValueOrDefault(this.configurationDataByTypeName, newParentTypeName, () => newConfigurationData(isEntity, parentTypeName), ); @@ -4453,7 +4451,6 @@ export class NormalizationFactory { // per-field caching directives (@openfed__cacheInvalidate etc.) — must run after entityCache // (entityCacheConfigByTypeName is populated earlier by extractEntityCacheDirective() during the // parentDefinitionData iteration in normalize()) - this.processRootFieldCacheDirectives(); // Check that explicitly defined operations types are valid objects and that their fields are also valid for (const operationType of Object.values(OperationTypeNode)) { const operationTypeNode = this.schemaData.operationTypes.get(operationType); diff --git a/composition/tests/v1/directives/cache-invalidate.test.ts b/composition/tests/v1/directives/cache-invalidate.test.ts index e7081bb5e9..4dcddf983b 100644 --- a/composition/tests/v1/directives/cache-invalidate.test.ts +++ b/composition/tests/v1/directives/cache-invalidate.test.ts @@ -17,30 +17,13 @@ import { cacheInvalidateOnNonEntityReturnTypeErrorMessage, cacheInvalidateOnNonMutationSubscriptionFieldErrorMessage, } from '../../../src/errors/errors'; -import { createSubgraphWithDefault, normalizeSubgraphFailure, normalizeSubgraphSuccess } from '../../utils/utils'; +import { createSubgraphWithDefaultName, normalizeSubgraphFailure, normalizeSubgraphSuccess } from '../../utils/utils'; -describe('@openfed__cacheInvalidate', () => { - describe('on Mutation fields', () => { - test('normalizes a Mutation field returning a cached entity', () => { - const { schema } = normalizeSubgraphSuccess( - createSubgraphWithDefault(` - type Query { dummy: String! } - type Mutation { - updateProduct(id: ID!): Product @openfed__cacheInvalidate - } - type Product @key(fields: "id") @openfed__entityCache(maxAge: 60) { - id: ID! - name: String! - } - `), - ROUTER_COMPATIBILITY_VERSION_ONE, - ); - expect(schema).toBeDefined(); - }); - - test('produces a CacheInvalidateConfig', () => { +describe('@openfed__cacheInvalidate directive tests', () => { + describe('Mutation field tests', () => { + test('that a valid CacheInvalidateConfig is produced', () => { const config = getConfigForType( - createSubgraphWithDefault(` + createSubgraphWithDefaultName(` type Query { dummy: String! } type Mutation { updateProduct(id: ID!): Product @openfed__cacheInvalidate @@ -63,27 +46,10 @@ describe('@openfed__cacheInvalidate', () => { }); }); - describe('on Subscription fields', () => { - test('normalizes a Subscription field returning a cached entity', () => { - const { schema } = normalizeSubgraphSuccess( - createSubgraphWithDefault(` - type Query { dummy: String! } - type Subscription { - itemUpdated: Product @openfed__cacheInvalidate - } - type Product @key(fields: "id") @openfed__entityCache(maxAge: 60) { - id: ID! - name: String! - } - `), - ROUTER_COMPATIBILITY_VERSION_ONE, - ); - expect(schema).toBeDefined(); - }); - - test('produces a CacheInvalidateConfig', () => { + describe('Subscription field tests', () => { + test('that a valid CacheInvalidateConfig is produced', () => { const config = getConfigForType( - createSubgraphWithDefault(` + createSubgraphWithDefaultName(` type Query { dummy: String! } type Subscription { itemUpdated: Product @openfed__cacheInvalidate @@ -106,10 +72,10 @@ describe('@openfed__cacheInvalidate', () => { }); }); - describe('validation errors', () => { - test('rejects placement on a Query field', () => { + describe('validation error tests', () => { + test('that a placement on a Query field is rejected', () => { const { errors } = normalizeSubgraphFailure( - createSubgraphWithDefault(` + createSubgraphWithDefaultName(` type Query { product(id: ID!): Product @openfed__cacheInvalidate } @@ -128,9 +94,9 @@ describe('@openfed__cacheInvalidate', () => { ); }); - test('rejects a return type that is not a cached entity', () => { + test('that a return type that is not a cached entity is rejected', () => { const { errors } = normalizeSubgraphFailure( - createSubgraphWithDefault(` + createSubgraphWithDefaultName(` type Query { dummy: String! } type Mutation { updateProduct(id: ID!): Result @openfed__cacheInvalidate @@ -146,14 +112,17 @@ describe('@openfed__cacheInvalidate', () => { expect(errors).toHaveLength(1); expect(errors[0]).toStrictEqual( invalidDirectiveError(OPENFED_CACHE_INVALIDATE, 'Mutation.updateProduct', FIRST_ORDINAL, [ - cacheInvalidateOnNonEntityReturnTypeErrorMessage('Mutation.updateProduct', 'Result'), + cacheInvalidateOnNonEntityReturnTypeErrorMessage({ + fieldCoords: 'Mutation.updateProduct', + returnType: 'Result', + }), ]), ); }); - test('rejects a @key entity without @openfed__entityCache', () => { + test('that a @key entity without @openfed__entityCache is rejected', () => { const { errors } = normalizeSubgraphFailure( - createSubgraphWithDefault(` + createSubgraphWithDefaultName(` type Query { dummy: String! } type Mutation { updateProduct(id: ID!): Product @openfed__cacheInvalidate @@ -168,14 +137,17 @@ describe('@openfed__cacheInvalidate', () => { expect(errors).toHaveLength(1); expect(errors[0]).toStrictEqual( invalidDirectiveError(OPENFED_CACHE_INVALIDATE, 'Mutation.updateProduct', FIRST_ORDINAL, [ - cacheInvalidateOnNonEntityReturnTypeErrorMessage('Mutation.updateProduct', 'Product'), + cacheInvalidateOnNonEntityReturnTypeErrorMessage({ + fieldCoords: 'Mutation.updateProduct', + returnType: 'Product', + }), ]), ); }); - test('rejects placement on a non-root object-type field', () => { + test('that a placement on a non-root object-type field is rejected', () => { const { errors } = normalizeSubgraphFailure( - createSubgraphWithDefault(` + createSubgraphWithDefaultName(` type Query { product: Product } From b4b87353f35a93b278e81b4d543b2d8866bbe2f7 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Sun, 21 Jun 2026 01:14:03 +0530 Subject: [PATCH 26/65] fix: review comments --- .../v1/normalization/normalization-factory.ts | 41 +++++++--------- .../v1/directives/cache-invalidate.test.ts | 47 ++++++++++++++++++- 2 files changed, 61 insertions(+), 27 deletions(-) diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index 78af294e6a..04f9aa97a1 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -4111,35 +4111,21 @@ export class NormalizationFactory { }; } - // Extracts @openfed__cacheInvalidate from Mutation/Subscription fields. The return type must be a cached - // entity (@key + @openfed__entityCache). A non-Mutation/Subscription placement (including non-root fields, - // where operationType is undefined) is reported, never silently ignored. - extractFieldCacheInvalidateConfig( + extractCacheInvalidateConfig( parentData: CompositeOutputData, configurationTypeName: string, - fieldName: string, fieldData: FieldData, ) { - if (parentData.kind !== Kind.OBJECT_TYPE_DEFINITION) { + if (!fieldData.directivesByName.has(OPENFED_CACHE_INVALIDATE)) { return; } - if (fieldData.directivesByName.has(OPENFED_CACHE_INVALIDATE)) { - this.extractCacheInvalidateConfig(parentData.name, configurationTypeName, fieldName, fieldData); - } - } - extractCacheInvalidateConfig( - parentTypeName: string, - configurationTypeName: string, - fieldName: string, - fieldData: FieldData, - ) { - if (!fieldData.directivesByName.has(OPENFED_CACHE_INVALIDATE)) { + if (parentData.kind !== Kind.OBJECT_TYPE_DEFINITION) { return; } - const operationType = this.getOperationTypeNodeForRootTypeName(parentTypeName); - const fieldCoords = `${parentTypeName}.${fieldName}`; + const operationType = this.getOperationTypeNodeForRootTypeName(parentData.name); + const fieldCoords = `${parentData.name}.${fieldData.name}`; if (!operationType || operationType === OperationTypeNode.QUERY) { this.errors.push( invalidDirectiveError(OPENFED_CACHE_INVALIDATE, fieldCoords, FIRST_ORDINAL, [ @@ -4158,7 +4144,7 @@ export class NormalizationFactory { return; } const config: CacheInvalidateConfig = { - fieldName, + fieldName: fieldData.name, operationType: operationType, entityTypeName: returnTypeName, }; @@ -4166,11 +4152,10 @@ export class NormalizationFactory { newConfigurationData(false, configurationTypeName), ); - const existingCacheInvalidates = configurationData.entityCaching?.cacheInvalidateConfigurations ?? []; - if (!configurationData.entityCaching) { configurationData.entityCaching = {}; } + const existingCacheInvalidates = configurationData.entityCaching?.cacheInvalidateConfigurations ?? []; configurationData.entityCaching.cacheInvalidateConfigurations = [...existingCacheInvalidates, config]; } @@ -4279,6 +4264,14 @@ export class NormalizationFactory { } // Check all key field sets for @external fields to assess whether they are conditional this.evaluateExternalKeyFields(); + /* + * Register every @openfed__entityCache config before the main loop below extracts @openfed__cacheInvalidate. + * cacheInvalidate validation requires the return type's entity-cache config to already exist + * (see extractCacheInvalidateConfig), and the return type may be iterated after the field that references it. + */ + for (const parentData of this.parentDefinitionDataByTypeName.values()) { + this.extractEntityCacheDirective(parentData); + } for (const [parentTypeName, parentData] of this.parentDefinitionDataByTypeName) { switch (parentData.kind) { case Kind.ENUM_TYPE_DEFINITION: { @@ -4337,8 +4330,6 @@ export class NormalizationFactory { const operationTypeNode = this.operationTypeNodeByTypeName.get(parentTypeName); const isObject = parentData.kind === Kind.OBJECT_TYPE_DEFINITION; - this.extractEntityCacheDirective(parentData); - if (this.isSubgraphVersionTwo && parentData.extensionType === ExtensionType.EXTENDS) { // @extends is essentially ignored in V2. It was only propagated to handle @external key fields. parentData.extensionType = ExtensionType.NONE; @@ -4352,7 +4343,7 @@ export class NormalizationFactory { const externalInterfaceFieldNames: Array = []; for (const [fieldName, fieldData] of parentData.fieldDataByName) { - this.extractFieldCacheInvalidateConfig(parentData, newParentTypeName, fieldName, fieldData); + this.extractCacheInvalidateConfig(parentData, newParentTypeName, fieldData); if (!isObject && fieldData.externalFieldDataBySubgraphName.get(this.subgraphName)?.isDefinedExternal) { externalInterfaceFieldNames.push(fieldName); diff --git a/composition/tests/v1/directives/cache-invalidate.test.ts b/composition/tests/v1/directives/cache-invalidate.test.ts index 4dcddf983b..52663694f7 100644 --- a/composition/tests/v1/directives/cache-invalidate.test.ts +++ b/composition/tests/v1/directives/cache-invalidate.test.ts @@ -1,4 +1,5 @@ import { describe, expect, test } from 'vitest'; +import { OperationTypeNode } from 'graphql'; import { type BatchNormalizationSuccess, BatchNormalizer, @@ -39,11 +40,53 @@ describe('@openfed__cacheInvalidate directive tests', () => { expect(config!.entityCaching?.cacheInvalidateConfigurations).toStrictEqual([ { fieldName: 'updateProduct', - operationType: MUTATION, + operationType: OperationTypeNode.MUTATION, entityTypeName: 'Product', }, ] satisfies CacheInvalidateConfig[]); }); + + test('that multiple cacheInvalidate fields on the same type accumulate into one config array', () => { + const config = getConfigForType( + createSubgraphWithDefaultName(` + type Query { dummy: String! } + type Mutation { + updateProduct(id: ID!): Product @openfed__cacheInvalidate + deleteProduct(id: ID!): Product @openfed__cacheInvalidate + updateReview(id: ID!): Review @openfed__cacheInvalidate + } + type Product @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + name: String! + } + type Review @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + body: String! + } + `), + MUTATION, + ); + expect(config).toBeDefined(); + // Each field on Mutation shares the same configurationData, so configs accumulate via + // `[...existingCacheInvalidates, config]` — the 2nd and 3rd fields see existing length > 0. + expect(config!.entityCaching?.cacheInvalidateConfigurations).toStrictEqual([ + { + fieldName: 'updateProduct', + operationType: OperationTypeNode.MUTATION, + entityTypeName: 'Product', + }, + { + fieldName: 'deleteProduct', + operationType: OperationTypeNode.MUTATION, + entityTypeName: 'Product', + }, + { + fieldName: 'updateReview', + operationType: OperationTypeNode.MUTATION, + entityTypeName: 'Review', + }, + ] satisfies CacheInvalidateConfig[]); + }); }); describe('Subscription field tests', () => { @@ -65,7 +108,7 @@ describe('@openfed__cacheInvalidate directive tests', () => { expect(config!.entityCaching?.cacheInvalidateConfigurations).toStrictEqual([ { fieldName: 'itemUpdated', - operationType: SUBSCRIPTION, + operationType: OperationTypeNode.SUBSCRIPTION, entityTypeName: 'Product', }, ] satisfies CacheInvalidateConfig[]); From ceb9df37b58d210ee259ce0a0c17c38179e4945e Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Sun, 21 Jun 2026 01:26:01 +0530 Subject: [PATCH 27/65] fix: review comments --- composition/src/v1/normalization/normalization-factory.ts | 2 +- composition/tests/v1/directives/cache-invalidate.test.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index 04f9aa97a1..a2160158b9 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -4135,7 +4135,7 @@ export class NormalizationFactory { return; } const returnTypeName = getTypeNodeNamedTypeName(fieldData.node.type); - if (!this.keyFieldSetDatasByTypeName.has(returnTypeName) || !this.entityCacheConfigByTypeName.has(returnTypeName)) { + if (!this.entityCacheConfigByTypeName.has(returnTypeName)) { this.errors.push( invalidDirectiveError(OPENFED_CACHE_INVALIDATE, fieldCoords, FIRST_ORDINAL, [ cacheInvalidateOnNonEntityReturnTypeErrorMessage({ fieldCoords, returnType: returnTypeName }), diff --git a/composition/tests/v1/directives/cache-invalidate.test.ts b/composition/tests/v1/directives/cache-invalidate.test.ts index 52663694f7..2413e938a9 100644 --- a/composition/tests/v1/directives/cache-invalidate.test.ts +++ b/composition/tests/v1/directives/cache-invalidate.test.ts @@ -215,10 +215,10 @@ describe('@openfed__cacheInvalidate directive tests', () => { }); // Returns the ConfigurationData for a type. Entity-caching config is nested under `.entityCaching`. -function getConfigForType(sg: Subgraph, typeName: string): ConfigurationData | undefined { +function getConfigForType(sg: Subgraph, typeName: TypeName): ConfigurationData | undefined { const result = new BatchNormalizer({ subgraphs: [sg] }).batchNormalize() as BatchNormalizationSuccess; expect(result.success).toBe(true); const internal = result.internalSubgraphByName.get(sg.name); expect(internal).toBeDefined(); - return internal!.configurationDataByTypeName.get(typeName as TypeName); + return internal!.configurationDataByTypeName.get(typeName); } From b92c1c3621d9802a74f01768e98d44c02a4fbd6c Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Sun, 21 Jun 2026 01:30:16 +0530 Subject: [PATCH 28/65] fix: review comments --- composition/src/router-configuration/types.ts | 3 ++- .../src/v1/normalization/normalization-factory.ts | 12 +++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/composition/src/router-configuration/types.ts b/composition/src/router-configuration/types.ts index 1a935ce00b..e6874b1628 100644 --- a/composition/src/router-configuration/types.ts +++ b/composition/src/router-configuration/types.ts @@ -1,3 +1,4 @@ +import { type OperationTypeNode } from 'graphql'; import { type ArgumentName, type DirectiveArgumentCoords, @@ -123,7 +124,7 @@ export type EntityCacheConfiguration = { // Tells the router to evict the returned entity from the cache after the operation completes. export type CacheInvalidateConfig = { fieldName: FieldName; - operationType: string; + operationType: OperationTypeNode; entityTypeName: TypeName; }; diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index a2160158b9..641d7ab479 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -4143,11 +4143,6 @@ export class NormalizationFactory { ); return; } - const config: CacheInvalidateConfig = { - fieldName: fieldData.name, - operationType: operationType, - entityTypeName: returnTypeName, - }; const configurationData = getValueOrDefault(this.configurationDataByTypeName, configurationTypeName, () => newConfigurationData(false, configurationTypeName), ); @@ -4155,6 +4150,13 @@ export class NormalizationFactory { if (!configurationData.entityCaching) { configurationData.entityCaching = {}; } + + const config: CacheInvalidateConfig = { + fieldName: fieldData.name, + operationType: operationType, + entityTypeName: returnTypeName, + }; + const existingCacheInvalidates = configurationData.entityCaching?.cacheInvalidateConfigurations ?? []; configurationData.entityCaching.cacheInvalidateConfigurations = [...existingCacheInvalidates, config]; } From ecb7cc8d2c2b96aa8e3f7ebd176abeae51588a6c Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Sun, 21 Jun 2026 01:45:07 +0530 Subject: [PATCH 29/65] fix: review comments --- .../v1/normalization/normalization-factory.ts | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index 641d7ab479..da27dc757b 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -4111,21 +4111,18 @@ export class NormalizationFactory { }; } - extractCacheInvalidateConfig( - parentData: CompositeOutputData, - configurationTypeName: string, - fieldData: FieldData, - ) { + extractCacheInvalidateConfig(parentKind: Kind, fieldData: FieldData) { if (!fieldData.directivesByName.has(OPENFED_CACHE_INVALIDATE)) { return; } - if (parentData.kind !== Kind.OBJECT_TYPE_DEFINITION) { + // Silently skip non-object parents (e.g. interface fields) rather than erroring on them. + if (parentKind !== Kind.OBJECT_TYPE_DEFINITION) { return; } - const operationType = this.getOperationTypeNodeForRootTypeName(parentData.name); - const fieldCoords = `${parentData.name}.${fieldData.name}`; + const operationType = this.getOperationTypeNodeForRootTypeName(fieldData.originalParentTypeName); + const fieldCoords = `${fieldData.originalParentTypeName}.${fieldData.name}`; if (!operationType || operationType === OperationTypeNode.QUERY) { this.errors.push( invalidDirectiveError(OPENFED_CACHE_INVALIDATE, fieldCoords, FIRST_ORDINAL, [ @@ -4143,8 +4140,8 @@ export class NormalizationFactory { ); return; } - const configurationData = getValueOrDefault(this.configurationDataByTypeName, configurationTypeName, () => - newConfigurationData(false, configurationTypeName), + const configurationData = getValueOrDefault(this.configurationDataByTypeName, fieldData.renamedParentTypeName, () => + newConfigurationData(false, fieldData.renamedParentTypeName), ); if (!configurationData.entityCaching) { @@ -4345,7 +4342,7 @@ export class NormalizationFactory { const externalInterfaceFieldNames: Array = []; for (const [fieldName, fieldData] of parentData.fieldDataByName) { - this.extractCacheInvalidateConfig(parentData, newParentTypeName, fieldData); + this.extractCacheInvalidateConfig(parentData.kind, fieldData); if (!isObject && fieldData.externalFieldDataBySubgraphName.get(this.subgraphName)?.isDefinedExternal) { externalInterfaceFieldNames.push(fieldName); From 268a7440412ac06b41f0f385e97a3a50170a72ba Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Sun, 21 Jun 2026 01:46:28 +0530 Subject: [PATCH 30/65] fix: review comments --- composition/src/v1/normalization/normalization-factory.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index da27dc757b..31aebab719 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -4116,7 +4116,6 @@ export class NormalizationFactory { return; } - // Silently skip non-object parents (e.g. interface fields) rather than erroring on them. if (parentKind !== Kind.OBJECT_TYPE_DEFINITION) { return; } From ff28d8283ce46f0c385ccd4b1eff4402066b1c56 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Sun, 21 Jun 2026 23:48:32 +0530 Subject: [PATCH 31/65] fix: review comments --- composition/src/errors/errors.ts | 4 ++-- .../src/v1/normalization/normalization-factory.ts | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/composition/src/errors/errors.ts b/composition/src/errors/errors.ts index 91501f3022..4a685e9fdd 100644 --- a/composition/src/errors/errors.ts +++ b/composition/src/errors/errors.ts @@ -2052,7 +2052,7 @@ export function unknownSubgraphNameError(subgraphName: SubgraphName): Error { } export function entityCacheWithoutKeyErrorMessage(typeName: TypeName): string { - return `Type "${typeName}" declares the directive "@openfed__entityCache" but does not define a "@key" directive.`; + return `Object "${typeName}" does not define a "@key" directive.`; } export function maxAgeNotPositiveIntegerErrorMessage(value: number): string { @@ -2060,5 +2060,5 @@ export function maxAgeNotPositiveIntegerErrorMessage(value: number): string { } export function negativeCacheTTLNotNonNegativeIntegerErrorMessage(value: number): string { - return `The argument "negativeCacheTTL" must be provided a zero or positive integer; received "${value}".`; + return `The argument "negativeCacheTTL" must be provided zero or a positive integer; received "${value}".`; } diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index 68f8f7b8e6..320ed4ac40 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -4001,10 +4001,8 @@ export class NormalizationFactory { } } - extractEntityCacheDirective({ directivesByName, kind, name: typeName }: ParentDefinitionData) { - if (kind !== Kind.OBJECT_TYPE_DEFINITION) { - return; - } + extractEntityCacheDirective({ directivesByName, name: typeName }: ObjectDefinitionData) { + const entityCacheDirectives = directivesByName.get(OPENFED_ENTITY_CACHE); if (!entityCacheDirectives || entityCacheDirectives.length == 0) { return; @@ -4270,7 +4268,9 @@ export class NormalizationFactory { const operationTypeNode = this.operationTypeNodeByTypeName.get(parentTypeName); const isObject = parentData.kind === Kind.OBJECT_TYPE_DEFINITION; - this.extractEntityCacheDirective(parentData); + if (isObject) { + this.extractEntityCacheDirective(parentData); + } if (this.isSubgraphVersionTwo && parentData.extensionType === ExtensionType.EXTENDS) { // @extends is essentially ignored in V2. It was only propagated to handle @external key fields. From 4f510c79b5472b7de7b02dcaa1c04839f4463e97 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Mon, 22 Jun 2026 00:26:09 +0530 Subject: [PATCH 32/65] fix: review comments --- composition/src/router-configuration/types.ts | 2 +- composition/src/router-configuration/utils.ts | 16 +++++++++++++++- .../v1/normalization/normalization-factory.ts | 14 ++++++++------ 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/composition/src/router-configuration/types.ts b/composition/src/router-configuration/types.ts index e717e6e233..648437cbb8 100644 --- a/composition/src/router-configuration/types.ts +++ b/composition/src/router-configuration/types.ts @@ -121,7 +121,7 @@ export type EntityCacheConfiguration = { export type EntityCachingConfiguration = { // Attached to an entity type's ConfigurationData (e.g. "Product") from @openfed__entityCache. - entityCacheConfigurations?: Array; + entityCacheConfigurations: Array; }; export type Costs = { diff --git a/composition/src/router-configuration/utils.ts b/composition/src/router-configuration/utils.ts index b0f95f18e7..d42cace183 100644 --- a/composition/src/router-configuration/utils.ts +++ b/composition/src/router-configuration/utils.ts @@ -1,4 +1,9 @@ -import { type ConfigurationData, type FieldSetConditionData, type FieldSetConditionDataParams } from './types'; +import { + type ConfigurationData, + type EntityCachingConfiguration, + type FieldSetConditionData, + type FieldSetConditionDataParams, +} from './types'; import { type FieldName } from '../types/types'; export function newFieldSetConditionData({ @@ -11,6 +16,15 @@ export function newFieldSetConditionData({ }; } +export function getOrInitializeEntityCaching(configurationData: ConfigurationData): EntityCachingConfiguration { + if (!configurationData.entityCaching) { + configurationData.entityCaching = { + entityCacheConfigurations: [], + }; + } + return configurationData.entityCaching; +} + export function newConfigurationData(isEntity: boolean, renamedTypeName: string): ConfigurationData { return { fieldNames: new Set(), diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index 320ed4ac40..6d744b20fa 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -381,7 +381,11 @@ import { type ValidateDirectiveParams, type EntityCacheDirectiveNode, } from './types/types'; -import { newConfigurationData, newFieldSetConditionData } from '../../router-configuration/utils'; +import { + getOrInitializeEntityCaching, + newConfigurationData, + newFieldSetConditionData, +} from '../../router-configuration/utils'; import { type ImplementationErrors, type InvalidFieldImplementation } from '../../utils/types'; import { type AbstractTypeName, @@ -4002,7 +4006,6 @@ export class NormalizationFactory { } extractEntityCacheDirective({ directivesByName, name: typeName }: ObjectDefinitionData) { - const entityCacheDirectives = directivesByName.get(OPENFED_ENTITY_CACHE); if (!entityCacheDirectives || entityCacheDirectives.length == 0) { return; @@ -4099,10 +4102,9 @@ export class NormalizationFactory { const configurationData = getValueOrDefault(this.configurationDataByTypeName, typeName, () => newConfigurationData(true, typeName), ); - configurationData.entityCaching = { - ...configurationData.entityCaching, - entityCacheConfigurations: [...(configurationData.entityCaching?.entityCacheConfigurations ?? []), config], - }; + + const entityCaching = getOrInitializeEntityCaching(configurationData); + entityCaching.entityCacheConfigurations.push(config); } addFieldNamesToConfigurationData(fieldDataByFieldName: Map, configurationData: ConfigurationData) { From 85daf6cc492d014372bf225d25f374fcb23a7899 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Mon, 22 Jun 2026 00:38:56 +0530 Subject: [PATCH 33/65] fix: review comments --- composition/src/router-configuration/utils.ts | 1 + .../src/v1/normalization/normalization-factory.ts | 11 ++++------- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/composition/src/router-configuration/utils.ts b/composition/src/router-configuration/utils.ts index d42cace183..cad006b5d5 100644 --- a/composition/src/router-configuration/utils.ts +++ b/composition/src/router-configuration/utils.ts @@ -20,6 +20,7 @@ export function getOrInitializeEntityCaching(configurationData: ConfigurationDat if (!configurationData.entityCaching) { configurationData.entityCaching = { entityCacheConfigurations: [], + cacheInvalidateConfigurations: [], }; } return configurationData.entityCaching; diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index bb8b7e3c99..5f1aa9cd13 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -4111,15 +4111,11 @@ export class NormalizationFactory { entityCaching.entityCacheConfigurations.push(config); } - extractCacheInvalidateConfig(parentKind: Kind, fieldData: FieldData) { + extractCacheInvalidateConfig(fieldData: FieldData) { if (!fieldData.directivesByName.has(OPENFED_CACHE_INVALIDATE)) { return; } - if (parentKind !== Kind.OBJECT_TYPE_DEFINITION) { - return; - } - const operationType = this.getOperationTypeNodeForRootTypeName(fieldData.originalParentTypeName); const fieldCoords = `${fieldData.originalParentTypeName}.${fieldData.name}`; if (!operationType || operationType === OperationTypeNode.QUERY) { @@ -4143,7 +4139,6 @@ export class NormalizationFactory { newConfigurationData(false, fieldData.renamedParentTypeName), ); - const config: CacheInvalidateConfig = { fieldName: fieldData.name, operationType: operationType, @@ -4342,7 +4337,9 @@ export class NormalizationFactory { const externalInterfaceFieldNames: Array = []; for (const [fieldName, fieldData] of parentData.fieldDataByName) { - this.extractCacheInvalidateConfig(parentData.kind, fieldData); + if (isObject) { + this.extractCacheInvalidateConfig(fieldData); + } if (!isObject && fieldData.externalFieldDataBySubgraphName.get(this.subgraphName)?.isDefinedExternal) { externalInterfaceFieldNames.push(fieldName); From 9c083e145d1217bc22650363beb56f807f132b41 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Mon, 22 Jun 2026 01:06:11 +0530 Subject: [PATCH 34/65] fix: review comments --- .../src/v1/normalization/normalization-factory.ts | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index 5f1aa9cd13..c862e329c1 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -4009,7 +4009,7 @@ export class NormalizationFactory { } } - extractEntityCacheDirective({ directivesByName, name: typeName }: ObjectDefinitionData) { + extractEntityCacheDirective({ directivesByName, name: typeName }: ParentDefinitionData) { const entityCacheDirectives = directivesByName.get(OPENFED_ENTITY_CACHE); if (!entityCacheDirectives || entityCacheDirectives.length == 0) { return; @@ -4260,8 +4260,11 @@ export class NormalizationFactory { * (see extractCacheInvalidateConfig), and the return type may be iterated after the field that references it. */ for (const parentData of this.parentDefinitionDataByTypeName.values()) { - this.extractEntityCacheDirective(parentData); + if (parentData.kind === Kind.OBJECT_TYPE_DEFINITION) { + this.extractEntityCacheDirective(parentData); + } } + for (const [parentTypeName, parentData] of this.parentDefinitionDataByTypeName) { switch (parentData.kind) { case Kind.ENUM_TYPE_DEFINITION: { @@ -4320,10 +4323,6 @@ export class NormalizationFactory { const operationTypeNode = this.operationTypeNodeByTypeName.get(parentTypeName); const isObject = parentData.kind === Kind.OBJECT_TYPE_DEFINITION; - if (isObject) { - this.extractEntityCacheDirective(parentData); - } - if (this.isSubgraphVersionTwo && parentData.extensionType === ExtensionType.EXTENDS) { // @extends is essentially ignored in V2. It was only propagated to handle @external key fields. parentData.extensionType = ExtensionType.NONE; From bbaba62501edaabb3d2dcc77f2495342f3629ebf Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Mon, 22 Jun 2026 01:32:41 +0530 Subject: [PATCH 35/65] fix: review comments --- .../src/v1/normalization/normalization-factory.ts | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index c862e329c1..a44d90457b 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -4009,7 +4009,7 @@ export class NormalizationFactory { } } - extractEntityCacheDirective({ directivesByName, name: typeName }: ParentDefinitionData) { + extractEntityCacheDirective({ directivesByName, name: typeName }: ObjectDefinitionData) { const entityCacheDirectives = directivesByName.get(OPENFED_ENTITY_CACHE); if (!entityCacheDirectives || entityCacheDirectives.length == 0) { return; @@ -4332,8 +4332,6 @@ export class NormalizationFactory { parentData.fieldDataByName.delete(ENTITIES_FIELD); } - const newParentTypeName = getParentTypeName(parentData); - const externalInterfaceFieldNames: Array = []; for (const [fieldName, fieldData] of parentData.fieldDataByName) { if (isObject) { @@ -4376,6 +4374,7 @@ export class NormalizationFactory { externalInterfaceFieldsWarning(this.subgraphName, parentTypeName, [...externalInterfaceFieldNames]), ); } + const newParentTypeName = getParentTypeName(parentData); const configurationData = getValueOrDefault(this.configurationDataByTypeName, newParentTypeName, () => newConfigurationData(isEntity, parentTypeName), ); @@ -4434,10 +4433,6 @@ export class NormalizationFactory { this.addValidConditionalFieldSetConfigurations(); // this is where @key configurations are added to the ConfigurationData this.addValidKeyFieldSetConfigurations(); - // per-field caching directives (@openfed__cacheInvalidate etc.) — must run after entityCache - // (entityCacheConfigByTypeName is populated earlier by extractEntityCacheDirective() during the - // parentDefinitionData iteration in normalize()) - // Check that explicitly defined operations types are valid objects and that their fields are also valid for (const operationType of Object.values(OperationTypeNode)) { const operationTypeNode = this.schemaData.operationTypes.get(operationType); const defaultTypeName = getOrThrowError(operationTypeNodeToDefaultType, operationType, OPERATION_TO_DEFAULT); From de95de0d4aff2e71e47a125ba4d25a4b16594942 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Mon, 22 Jun 2026 01:38:42 +0530 Subject: [PATCH 36/65] fix: review comments --- composition/src/v1/normalization/normalization-factory.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index a44d90457b..59fbd3a352 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -4433,6 +4433,7 @@ export class NormalizationFactory { this.addValidConditionalFieldSetConfigurations(); // this is where @key configurations are added to the ConfigurationData this.addValidKeyFieldSetConfigurations(); + // Check that explicitly defined operations types are valid objects and that their fields are also valid for (const operationType of Object.values(OperationTypeNode)) { const operationTypeNode = this.schemaData.operationTypes.get(operationType); const defaultTypeName = getOrThrowError(operationTypeNodeToDefaultType, operationType, OPERATION_TO_DEFAULT); From 5d6ba2a1adb1b5ed15d5404c3eadd1579ab9d49f Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Mon, 22 Jun 2026 14:45:22 +0530 Subject: [PATCH 37/65] fix: review comments --- composition/src/v1/normalization/normalization-factory.ts | 3 +-- shared/src/router-config/builder.ts | 6 +++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index 6d744b20fa..1d1219d106 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -4103,8 +4103,7 @@ export class NormalizationFactory { newConfigurationData(true, typeName), ); - const entityCaching = getOrInitializeEntityCaching(configurationData); - entityCaching.entityCacheConfigurations.push(config); + getOrInitializeEntityCaching(configurationData).entityCacheConfigurations.push(config); } addFieldNamesToConfigurationData(fieldDataByFieldName: Map, configurationData: ConfigurationData) { diff --git a/shared/src/router-config/builder.ts b/shared/src/router-config/builder.ts index 0f17631d82..9c025af7e4 100644 --- a/shared/src/router-config/builder.ts +++ b/shared/src/router-config/builder.ts @@ -85,7 +85,11 @@ function extractEntityCachingConfiguration( } const entityCache: EntityCacheConfiguration[] = []; for (const data of dataByTypeName.values()) { - for (const ec of data.entityCaching?.entityCacheConfigurations ?? []) { + if (!data.entityCaching) { + continue; + } + + for (const ec of data.entityCaching.entityCacheConfigurations) { entityCache.push( new EntityCacheConfiguration({ typeName: ec.typeName, From 574a260653e0879cd75611df738411c98b7c2bfe Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Mon, 22 Jun 2026 14:52:12 +0530 Subject: [PATCH 38/65] fix: review comments --- composition/src/v1/normalization/normalization-factory.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index 1d1219d106..015bccc9a2 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -4007,7 +4007,7 @@ export class NormalizationFactory { extractEntityCacheDirective({ directivesByName, name: typeName }: ObjectDefinitionData) { const entityCacheDirectives = directivesByName.get(OPENFED_ENTITY_CACHE); - if (!entityCacheDirectives || entityCacheDirectives.length == 0) { + if (!entityCacheDirectives || entityCacheDirectives.length === 0) { return; } if (!this.keyFieldSetDatasByTypeName.has(typeName)) { From 206c769e4eb679cb9c1487f6b41c0f313f7eeb2a Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Mon, 22 Jun 2026 14:55:49 +0530 Subject: [PATCH 39/65] fix: review comments --- composition/tests/utils/utils.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/composition/tests/utils/utils.ts b/composition/tests/utils/utils.ts index 551fce5a5d..e3704cb9a6 100644 --- a/composition/tests/utils/utils.ts +++ b/composition/tests/utils/utils.ts @@ -21,6 +21,8 @@ import { } from '../../src'; import { expect } from 'vitest'; +const DEFAULT_SUBGRAPH_NAME = 'subgraph-default-a'; + export function normalizeString(input: string): string { return input.replace(/\s+/g, ' ').trim(); } @@ -134,5 +136,5 @@ export function createSubgraph(name: SubgraphName, sdlString: string): Subgraph } export function createSubgraphWithDefaultName(sdlString: string): Subgraph { - return createSubgraph('subgraph-default-a', sdlString); + return createSubgraph(DEFAULT_SUBGRAPH_NAME, sdlString); } From 3ad1f497520ac0e0fb01ba1cff8fbc4187d8711d Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Mon, 22 Jun 2026 15:38:10 +0530 Subject: [PATCH 40/65] fix: move to upsertObject --- .../src/v1/normalization/normalization-factory.ts | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index 84a5e3e310..9785969c2e 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -1461,13 +1461,11 @@ export class NormalizationFactory { this.updateCompositeOutputDataByNode(node, parentData, extensionType); if (!directivesByName.has(INTERFACE_OBJECT)) { this.addConcreteTypeNamesForImplementedInterfaces(parentData.implementedInterfaceTypeNames, typeName); + this.extractEntityCacheDirective(parentData); } return; } const implementedInterfaceTypeNames = this.extractImplementedInterfaceTypeNames(node, new Set()); - if (!directivesByName.has(INTERFACE_OBJECT)) { - this.addConcreteTypeNamesForImplementedInterfaces(implementedInterfaceTypeNames, typeName); - } const newParentData: ObjectDefinitionData = { configureDescriptionDataBySubgraphName: new Map(), directivesByName: directivesByName, @@ -1486,6 +1484,10 @@ export class NormalizationFactory { subgraphNames: new Set([this.subgraphName]), description: formatDescription('description' in node ? node.description : undefined), }; + if (!directivesByName.has(INTERFACE_OBJECT)) { + this.addConcreteTypeNamesForImplementedInterfaces(implementedInterfaceTypeNames, typeName); + this.extractEntityCacheDirective(newParentData); + } this.extractConfigureDescriptionsData(newParentData); this.parentDefinitionDataByTypeName.set(typeName, newParentData); } @@ -4272,10 +4274,6 @@ export class NormalizationFactory { const operationTypeNode = this.operationTypeNodeByTypeName.get(parentTypeName); const isObject = parentData.kind === Kind.OBJECT_TYPE_DEFINITION; - if (isObject) { - this.extractEntityCacheDirective(parentData); - } - if (this.isSubgraphVersionTwo && parentData.extensionType === ExtensionType.EXTENDS) { // @extends is essentially ignored in V2. It was only propagated to handle @external key fields. parentData.extensionType = ExtensionType.NONE; From 53e7a3db22ccadf2f371538cdc3e64275034d2fd Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Mon, 22 Jun 2026 15:58:14 +0530 Subject: [PATCH 41/65] fix: cleanup post merge --- .../src/v1/normalization/normalization-factory.ts | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index 7b676bb03c..7492361b07 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -4258,16 +4258,6 @@ export class NormalizationFactory { } // Check all key field sets for @external fields to assess whether they are conditional this.evaluateExternalKeyFields(); - /* - * Register every @openfed__entityCache config before the main loop below extracts @openfed__cacheInvalidate. - * cacheInvalidate validation requires the return type's entity-cache config to already exist - * (see extractCacheInvalidateConfig), and the return type may be iterated after the field that references it. - */ - for (const parentData of this.parentDefinitionDataByTypeName.values()) { - if (parentData.kind === Kind.OBJECT_TYPE_DEFINITION) { - this.extractEntityCacheDirective(parentData); - } - } for (const [parentTypeName, parentData] of this.parentDefinitionDataByTypeName) { switch (parentData.kind) { From 2332597589a76080c30344e04387932e3f846915 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Mon, 22 Jun 2026 16:10:25 +0530 Subject: [PATCH 42/65] fix: review comments --- composition/src/router-configuration/types.ts | 4 +- composition/src/router-configuration/utils.ts | 2 +- .../v1/normalization/normalization-factory.ts | 7 ++- .../v1/directives/cache-invalidate.test.ts | 47 +++++++++++++++---- 4 files changed, 44 insertions(+), 16 deletions(-) diff --git a/composition/src/router-configuration/types.ts b/composition/src/router-configuration/types.ts index 3f5d22ee1e..f0bef8b6f5 100644 --- a/composition/src/router-configuration/types.ts +++ b/composition/src/router-configuration/types.ts @@ -122,7 +122,7 @@ export type EntityCacheConfiguration = { // Extracted from @openfed__cacheInvalidate on Mutation/Subscription fields. // Tells the router to evict the returned entity from the cache after the operation completes. -export type CacheInvalidateConfig = { +export type CacheInvalidationConfiguration = { fieldName: FieldName; operationType: OperationTypeNode; entityTypeName: TypeName; @@ -132,7 +132,7 @@ export type EntityCachingConfiguration = { // Attached to an entity type's ConfigurationData (e.g. "Product") from @openfed__entityCache. entityCacheConfigurations: Array; // Attached to the Mutation/Subscription type's ConfigurationData from @openfed__cacheInvalidate. - cacheInvalidateConfigurations: Array; + cacheInvalidationConfigurations: Array; }; export type Costs = { diff --git a/composition/src/router-configuration/utils.ts b/composition/src/router-configuration/utils.ts index cad006b5d5..8c5a330439 100644 --- a/composition/src/router-configuration/utils.ts +++ b/composition/src/router-configuration/utils.ts @@ -20,7 +20,7 @@ export function getOrInitializeEntityCaching(configurationData: ConfigurationDat if (!configurationData.entityCaching) { configurationData.entityCaching = { entityCacheConfigurations: [], - cacheInvalidateConfigurations: [], + cacheInvalidationConfigurations: [], }; } return configurationData.entityCaching; diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index 7492361b07..84119007c5 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -187,7 +187,7 @@ import { type FieldWeightConfiguration, type NatsEventType, type RequiredFieldConfiguration, - type CacheInvalidateConfig, + type CacheInvalidationConfiguration, type EntityCacheConfiguration, } from '../../router-configuration/types'; import { printTypeNode } from '@graphql-tools/merge'; @@ -4143,14 +4143,13 @@ export class NormalizationFactory { newConfigurationData(false, fieldData.renamedParentTypeName), ); - const config: CacheInvalidateConfig = { + const config: CacheInvalidationConfiguration = { fieldName: fieldData.name, operationType: operationType, entityTypeName: returnTypeName, }; - const entityCaching = getOrInitializeEntityCaching(configurationData); - entityCaching.cacheInvalidateConfigurations.push(config); + getOrInitializeEntityCaching(configurationData).cacheInvalidationConfigurations.push(config); } addFieldNamesToConfigurationData(fieldDataByFieldName: Map, configurationData: ConfigurationData) { diff --git a/composition/tests/v1/directives/cache-invalidate.test.ts b/composition/tests/v1/directives/cache-invalidate.test.ts index 2413e938a9..e45a011eae 100644 --- a/composition/tests/v1/directives/cache-invalidate.test.ts +++ b/composition/tests/v1/directives/cache-invalidate.test.ts @@ -4,7 +4,7 @@ import { type BatchNormalizationSuccess, BatchNormalizer, OPENFED_CACHE_INVALIDATE, - type CacheInvalidateConfig, + type CacheInvalidationConfiguration, type ConfigurationData, FIRST_ORDINAL, invalidDirectiveError, @@ -22,7 +22,7 @@ import { createSubgraphWithDefaultName, normalizeSubgraphFailure, normalizeSubgr describe('@openfed__cacheInvalidate directive tests', () => { describe('Mutation field tests', () => { - test('that a valid CacheInvalidateConfig is produced', () => { + test('that a valid CacheInvalidationConfiguration is produced', () => { const config = getConfigForType( createSubgraphWithDefaultName(` type Query { dummy: String! } @@ -37,13 +37,42 @@ describe('@openfed__cacheInvalidate directive tests', () => { MUTATION, ); expect(config).toBeDefined(); - expect(config!.entityCaching?.cacheInvalidateConfigurations).toStrictEqual([ + expect(config!.entityCaching?.cacheInvalidationConfigurations).toStrictEqual([ { fieldName: 'updateProduct', operationType: OperationTypeNode.MUTATION, entityTypeName: 'Product', }, - ] satisfies CacheInvalidateConfig[]); + ] satisfies CacheInvalidationConfiguration[]); + }); + + test('that a renamed Mutation root type keys the config under the canonical name', () => { + const config = getConfigForType( + createSubgraphWithDefaultName(` + schema { + mutation: Mutations + } + type Query { dummy: String! } + type Mutations { + updateProduct(id: ID!): Product @openfed__cacheInvalidate + } + type Product @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + name: String! + } + `), + MUTATION, + ); + // The config must be keyed under the renamed root name `Mutation`, not the original `Mutations`. + expect(config).toBeDefined(); + expect(config!.typeName).toBe(MUTATION); + expect(config!.entityCaching?.cacheInvalidationConfigurations).toStrictEqual([ + { + fieldName: 'updateProduct', + operationType: OperationTypeNode.MUTATION, + entityTypeName: 'Product', + }, + ] satisfies CacheInvalidationConfiguration[]); }); test('that multiple cacheInvalidate fields on the same type accumulate into one config array', () => { @@ -69,7 +98,7 @@ describe('@openfed__cacheInvalidate directive tests', () => { expect(config).toBeDefined(); // Each field on Mutation shares the same configurationData, so configs accumulate via // `[...existingCacheInvalidates, config]` — the 2nd and 3rd fields see existing length > 0. - expect(config!.entityCaching?.cacheInvalidateConfigurations).toStrictEqual([ + expect(config!.entityCaching?.cacheInvalidationConfigurations).toStrictEqual([ { fieldName: 'updateProduct', operationType: OperationTypeNode.MUTATION, @@ -85,12 +114,12 @@ describe('@openfed__cacheInvalidate directive tests', () => { operationType: OperationTypeNode.MUTATION, entityTypeName: 'Review', }, - ] satisfies CacheInvalidateConfig[]); + ] satisfies CacheInvalidationConfiguration[]); }); }); describe('Subscription field tests', () => { - test('that a valid CacheInvalidateConfig is produced', () => { + test('that a valid CacheInvalidationConfiguration is produced', () => { const config = getConfigForType( createSubgraphWithDefaultName(` type Query { dummy: String! } @@ -105,13 +134,13 @@ describe('@openfed__cacheInvalidate directive tests', () => { SUBSCRIPTION, ); expect(config).toBeDefined(); - expect(config!.entityCaching?.cacheInvalidateConfigurations).toStrictEqual([ + expect(config!.entityCaching?.cacheInvalidationConfigurations).toStrictEqual([ { fieldName: 'itemUpdated', operationType: OperationTypeNode.SUBSCRIPTION, entityTypeName: 'Product', }, - ] satisfies CacheInvalidateConfig[]); + ] satisfies CacheInvalidationConfiguration[]); }); }); From 16d2a8725d16e96a68c3ce65a9883807a4617a83 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Mon, 22 Jun 2026 16:28:29 +0530 Subject: [PATCH 43/65] fix: review comments --- shared/src/router-config/builder.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shared/src/router-config/builder.ts b/shared/src/router-config/builder.ts index 17cb21285e..5a5471c26c 100644 --- a/shared/src/router-config/builder.ts +++ b/shared/src/router-config/builder.ts @@ -103,7 +103,7 @@ function extractEntityCachingConfiguration( }), ); } - for (const ci of data.entityCaching?.cacheInvalidateConfigurations ?? []) { + for (const ci of data.entityCaching?.cacheInvalidationConfigurations) { cacheInvalidateConfigurations.push( new CacheInvalidateConfiguration({ fieldName: ci.fieldName, From d9a9a137a3ee835409d2b45ef5f50ba2f73fe338 Mon Sep 17 00:00:00 2001 From: Aenimus Date: Mon, 22 Jun 2026 12:35:49 +0100 Subject: [PATCH 44/65] chore: handle repeated directive --- .../v1/normalization/normalization-factory.ts | 44 +++++++++++-------- composition/src/v1/normalization/utils.ts | 8 ++-- .../tests/v1/directives/entity-cache.test.ts | 38 ++++++++++++++-- 3 files changed, 64 insertions(+), 26 deletions(-) diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index 84119007c5..937d708158 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -67,6 +67,8 @@ import { newFieldAuthorizationData, } from '../utils/utils'; import { + cacheInvalidateOnNonEntityReturnTypeErrorMessage, + cacheInvalidateOnNonMutationSubscriptionFieldErrorMessage, configureDescriptionNoDescriptionError, costOnInterfaceFieldErrorMessage, duplicateArgumentsError, @@ -77,6 +79,7 @@ import { duplicateImplementedInterfaceError, duplicateTypeDefinitionError, duplicateUnionMemberDefinitionError, + entityCacheWithoutKeyErrorMessage, equivalentSourceAndTargetOverrideErrorMessage, expectedEntityError, externalInterfaceFieldsError, @@ -131,7 +134,9 @@ import { listSizeSlicingArgumentNotIntErrorMessage, listSizeSlicingArgumentSegmentNotFoundErrorMessage, listSizeSlicingArgumentSegmentNotInputObjectErrorMessage, + maxAgeNotPositiveIntegerErrorMessage, multipleNamedTypeDefinitionError, + negativeCacheTTLNotNonNegativeIntegerErrorMessage, noBaseScalarDefinitionError, noDefinedEnumValuesError, noDefinedUnionMembersError, @@ -167,11 +172,6 @@ import { unknownTypeInFieldSetErrorMessage, unparsableFieldSetErrorMessage, unparsableFieldSetSelectionErrorMessage, - cacheInvalidateOnNonEntityReturnTypeErrorMessage, - cacheInvalidateOnNonMutationSubscriptionFieldErrorMessage, - entityCacheWithoutKeyErrorMessage, - maxAgeNotPositiveIntegerErrorMessage, - negativeCacheTTLNotNonNegativeIntegerErrorMessage, } from '../../errors/errors'; import { DEPENDENCIES_BY_DIRECTIVE_NAME, @@ -180,15 +180,15 @@ import { } from '../constants/strings'; import { buildASTSchema } from '../../buildASTSchema/buildASTSchema'; import { + type CacheInvalidationConfiguration, type ConfigurationData, type Costs, + type EntityCacheConfiguration, type EventConfiguration, type FieldListSizeConfiguration, type FieldWeightConfiguration, type NatsEventType, type RequiredFieldConfiguration, - type CacheInvalidationConfiguration, - type EntityCacheConfiguration, } from '../../router-configuration/types'; import { printTypeNode } from '@graphql-tools/merge'; import { @@ -288,12 +288,13 @@ import { EDFS_REDIS_PUBLISH, EDFS_REDIS_SUBSCRIBE, ENTITIES_FIELD, - EXECUTABLE_DIRECTIVE_LOCATIONS, EXTENDS, EXTERNAL, FIELDS, + FIRST_ORDINAL, HYPHEN_JOIN, INACCESSIBLE, + INCLUDE_HEADERS, INHERITABLE_DIRECTIVE_NAMES, INPUT_FIELD, INT_SCALAR, @@ -303,15 +304,20 @@ import { LIST_SIZE, LITERAL_AT, LITERAL_PERIOD, + MAX_AGE, MUTATION, + NEGATIVE_CACHE_TTL, NON_NULLABLE_BOOLEAN, NON_NULLABLE_EDFS_PUBLISH_EVENT_RESULT, NON_NULLABLE_INT, NON_NULLABLE_STRING, NOT_APPLICABLE, ONE_OF, + OPENFED_CACHE_INVALIDATE, + OPENFED_ENTITY_CACHE, OPERATION_TO_DEFAULT, OVERRIDE, + PARTIAL_CACHE_LOAD, PROPAGATE, PROVIDER_ID, PROVIDER_TYPE_KAFKA, @@ -329,6 +335,7 @@ import { SCOPES, SEMANTIC_NON_NULL, SERVICE_FIELD, + SHADOW_MODE, SHAREABLE, SIZED_FIELDS, SLICING_ARGUMENTS, @@ -345,14 +352,6 @@ import { TOPICS, TYPENAME, WEIGHT, - OPENFED_CACHE_INVALIDATE, - OPENFED_ENTITY_CACHE, - FIRST_ORDINAL, - INCLUDE_HEADERS, - MAX_AGE, - NEGATIVE_CACHE_TTL, - PARTIAL_CACHE_LOAD, - SHADOW_MODE, } from '../../utils/string-constants'; import { MAX_INT32 } from '../../utils/integer-constants'; import { @@ -370,20 +369,20 @@ import { type AddInputValueDataByNodeParams, type ComposeDirectiveNode, type ConditionalFieldSetValidationResult, + type EntityCacheDirectiveNode, type ExtractDirectiveArgumentDataResult, type FieldSetData, type FieldSetParentResult, type HandleCostDirectiveParams, type HandleListSizeDirectiveParams, - type RecordDirectiveWeightOnFieldParams, type HandleOverrideDirectiveParams, type HandleRequiresScopesDirectiveParams, type HandleSemanticNonNullDirectiveParams, type KeyFieldSetData, type LinkImportData, + type RecordDirectiveWeightOnFieldParams, type UpsertInputObjectResult, type ValidateDirectiveParams, - type EntityCacheDirectiveNode, } from './types/types'; import { getOrInitializeEntityCaching, @@ -4019,6 +4018,7 @@ export class NormalizationFactory { if (!entityCacheDirectives || entityCacheDirectives.length === 0) { return; } + if (!this.keyFieldSetDatasByTypeName.has(typeName)) { this.errors.push( invalidDirectiveError(OPENFED_ENTITY_CACHE, typeName, FIRST_ORDINAL, [ @@ -4027,6 +4027,7 @@ export class NormalizationFactory { ); return; } + /* validateDirectives() (run earlier in normalize()) has already guaranteed each argument's type — * Int for maxAge/negativeCacheTTL, Boolean for the flags — so the generic ConstDirectiveNode is * narrowed once to the precise typed node, mirroring RequestScopedDirectiveNode/ComposeDirectiveNode. @@ -4034,6 +4035,11 @@ export class NormalizationFactory { * so the config starts at the directive's documented defaults and each present argument overrides it. */ const directive = entityCacheDirectives[0] as EntityCacheDirectiveNode; + if (this.entityCacheConfigByTypeName.has(typeName)) { + // The error would be caught in directive validation as an invalid repeated directive use. + return; + } + const config: EntityCacheConfiguration = { typeName, maxAgeSeconds: 0, @@ -4084,7 +4090,7 @@ export class NormalizationFactory { } } - const entityCacheErrors = []; + const entityCacheErrors: Array = []; if (config.maxAgeSeconds <= 0) { entityCacheErrors.push( diff --git a/composition/src/v1/normalization/utils.ts b/composition/src/v1/normalization/utils.ts index 2017eb0aa2..0fb8332d45 100644 --- a/composition/src/v1/normalization/utils.ts +++ b/composition/src/v1/normalization/utils.ts @@ -45,12 +45,14 @@ import { type CompositeOutputData, type InputValueData } from '../../schema-buil import { getTypeNodeNamedTypeName } from '../../schema-building/ast'; import { AUTHENTICATED_DEFINITION_DATA, + CACHE_INVALIDATE_DEFINITION_DATA, COMPOSE_DIRECTIVE_DEFINITION_DATA, CONFIGURE_CHILD_DESCRIPTIONS_DEFINITION_DATA, CONFIGURE_DESCRIPTION_DEFINITION_DATA, CONNECT_FIELD_RESOLVER_DEFINITION_DATA, COST_DEFINITION_DATA, DEPRECATED_DEFINITION_DATA, + ENTITY_CACHE_DEFINITION_DATA, EXTENDS_DEFINITION_DATA, EXTERNAL_DEFINITION_DATA, INACCESSIBLE_DEFINITION_DATA, @@ -76,8 +78,6 @@ import { SPECIFIED_BY_DEFINITION_DATA, SUBSCRIPTION_FILTER_DEFINITION_DATA, TAG_DEFINITION_DATA, - CACHE_INVALIDATE_DEFINITION_DATA, - ENTITY_CACHE_DEFINITION_DATA, } from '../../directive-definition-data/directive-definition-data'; import { AS, @@ -86,9 +86,7 @@ import { CONFIGURE_CHILD_DESCRIPTIONS, CONFIGURE_DESCRIPTION, CONNECT_FIELD_RESOLVER, - OPENFED_CACHE_INVALIDATE, COST, - OPENFED_ENTITY_CACHE, DEPRECATED, EDFS_KAFKA_PUBLISH, EDFS_KAFKA_SUBSCRIBE, @@ -110,6 +108,8 @@ import { LITERAL_PERIOD, NAME, ONE_OF, + OPENFED_CACHE_INVALIDATE, + OPENFED_ENTITY_CACHE, OVERRIDE, PROVIDES, QUERY, diff --git a/composition/tests/v1/directives/entity-cache.test.ts b/composition/tests/v1/directives/entity-cache.test.ts index 4fde350c58..84aaea0095 100644 --- a/composition/tests/v1/directives/entity-cache.test.ts +++ b/composition/tests/v1/directives/entity-cache.test.ts @@ -8,8 +8,15 @@ import { maxAgeNotPositiveIntegerErrorMessage, negativeCacheTTLNotNonNegativeIntegerErrorMessage, ROUTER_COMPATIBILITY_VERSION_ONE, + invalidRepeatedDirectiveError, + invalidRepeatedDirectiveErrorMessage, } from '../../../src'; -import { createSubgraphWithDefaultName, normalizeSubgraphFailure, normalizeSubgraphSuccess } from '../../utils/utils'; +import { + createSubgraph, + createSubgraphWithDefaultName, + normalizeSubgraphFailure, + normalizeSubgraphSuccess, +} from '../../utils/utils'; // @openfed__entityCache marks an entity type as cacheable. It requires @key (so the router can // construct cache keys) and a positive maxAge (TTL in seconds). @@ -115,7 +122,7 @@ describe('@openfed__entityCache tests', () => { partialCacheLoad: false, shadowMode: false, }, - ] satisfies EntityCacheConfiguration[]); + ] satisfies Array); }); test('that every argument propagates to the EntityCacheConfig', () => { @@ -138,7 +145,32 @@ describe('@openfed__entityCache tests', () => { partialCacheLoad: true, shadowMode: true, }, - ] satisfies EntityCacheConfiguration[]); + ] satisfies Array); + }); + + test('that @openfed__entityCache is non-repeatable', () => { + const { errors, warnings } = normalizeSubgraphFailure( + createSubgraph( + 'a', + ` + type Entity @key(fields: "id") @openfed__entityCache(maxAge: 1) { + id: ID! + } + + extend type Entity @openfed__entityCache(maxAge: 1) { + name: String! + } + `, + ), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors).toHaveLength(1); + expect(errors).toStrictEqual([ + invalidDirectiveError(OPENFED_ENTITY_CACHE, 'Entity', FIRST_ORDINAL, [ + invalidRepeatedDirectiveErrorMessage(OPENFED_ENTITY_CACHE), + ]), + ]); + expect(warnings).toHaveLength(0); }); }); }); From 12907be3837de0a1b85eae997dddc3f92be0abba Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Mon, 22 Jun 2026 17:13:04 +0530 Subject: [PATCH 45/65] fix: review comments --- .../tests/v1/directives/cache-invalidate.test.ts | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/composition/tests/v1/directives/cache-invalidate.test.ts b/composition/tests/v1/directives/cache-invalidate.test.ts index e45a011eae..b83e553717 100644 --- a/composition/tests/v1/directives/cache-invalidate.test.ts +++ b/composition/tests/v1/directives/cache-invalidate.test.ts @@ -47,22 +47,20 @@ describe('@openfed__cacheInvalidate directive tests', () => { }); test('that a renamed Mutation root type keys the config under the canonical name', () => { - const config = getConfigForType( - createSubgraphWithDefaultName(` + const subgraph = createSubgraphWithDefaultName(` schema { - mutation: Mutations + mutation: NewMutations } type Query { dummy: String! } - type Mutations { + type NewMutations { updateProduct(id: ID!): Product @openfed__cacheInvalidate } type Product @key(fields: "id") @openfed__entityCache(maxAge: 60) { id: ID! name: String! } - `), - MUTATION, - ); + `); + const config = getConfigForType(subgraph, MUTATION); // The config must be keyed under the renamed root name `Mutation`, not the original `Mutations`. expect(config).toBeDefined(); expect(config!.typeName).toBe(MUTATION); @@ -73,6 +71,7 @@ describe('@openfed__cacheInvalidate directive tests', () => { entityTypeName: 'Product', }, ] satisfies CacheInvalidationConfiguration[]); + expect(getConfigForType(subgraph, 'NewMutations')).toBeUndefined(); }); test('that multiple cacheInvalidate fields on the same type accumulate into one config array', () => { From 345968c29cdaf0f3230adda80acb0df26fcb43d6 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Mon, 22 Jun 2026 17:30:18 +0530 Subject: [PATCH 46/65] fix: review comments --- composition/src/router-configuration/types.ts | 4 ++-- composition/src/router-configuration/utils.ts | 2 +- .../v1/normalization/normalization-factory.ts | 6 ++--- .../v1/directives/cache-invalidate.test.ts | 22 +++++++++---------- shared/src/router-config/builder.ts | 13 +++++------ 5 files changed, 23 insertions(+), 24 deletions(-) diff --git a/composition/src/router-configuration/types.ts b/composition/src/router-configuration/types.ts index f0bef8b6f5..f311489e6b 100644 --- a/composition/src/router-configuration/types.ts +++ b/composition/src/router-configuration/types.ts @@ -122,7 +122,7 @@ export type EntityCacheConfiguration = { // Extracted from @openfed__cacheInvalidate on Mutation/Subscription fields. // Tells the router to evict the returned entity from the cache after the operation completes. -export type CacheInvalidationConfiguration = { +export type CacheInvalidateConfiguration = { fieldName: FieldName; operationType: OperationTypeNode; entityTypeName: TypeName; @@ -132,7 +132,7 @@ export type EntityCachingConfiguration = { // Attached to an entity type's ConfigurationData (e.g. "Product") from @openfed__entityCache. entityCacheConfigurations: Array; // Attached to the Mutation/Subscription type's ConfigurationData from @openfed__cacheInvalidate. - cacheInvalidationConfigurations: Array; + cacheInvalidateConfigurations: Array; }; export type Costs = { diff --git a/composition/src/router-configuration/utils.ts b/composition/src/router-configuration/utils.ts index 8c5a330439..cad006b5d5 100644 --- a/composition/src/router-configuration/utils.ts +++ b/composition/src/router-configuration/utils.ts @@ -20,7 +20,7 @@ export function getOrInitializeEntityCaching(configurationData: ConfigurationDat if (!configurationData.entityCaching) { configurationData.entityCaching = { entityCacheConfigurations: [], - cacheInvalidationConfigurations: [], + cacheInvalidateConfigurations: [], }; } return configurationData.entityCaching; diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index 937d708158..9ecdc93a33 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -180,7 +180,7 @@ import { } from '../constants/strings'; import { buildASTSchema } from '../../buildASTSchema/buildASTSchema'; import { - type CacheInvalidationConfiguration, + type CacheInvalidateConfiguration, type ConfigurationData, type Costs, type EntityCacheConfiguration, @@ -4149,13 +4149,13 @@ export class NormalizationFactory { newConfigurationData(false, fieldData.renamedParentTypeName), ); - const config: CacheInvalidationConfiguration = { + const config: CacheInvalidateConfiguration = { fieldName: fieldData.name, operationType: operationType, entityTypeName: returnTypeName, }; - getOrInitializeEntityCaching(configurationData).cacheInvalidationConfigurations.push(config); + getOrInitializeEntityCaching(configurationData).cacheInvalidateConfigurations.push(config); } addFieldNamesToConfigurationData(fieldDataByFieldName: Map, configurationData: ConfigurationData) { diff --git a/composition/tests/v1/directives/cache-invalidate.test.ts b/composition/tests/v1/directives/cache-invalidate.test.ts index b83e553717..531b88ea3c 100644 --- a/composition/tests/v1/directives/cache-invalidate.test.ts +++ b/composition/tests/v1/directives/cache-invalidate.test.ts @@ -4,7 +4,7 @@ import { type BatchNormalizationSuccess, BatchNormalizer, OPENFED_CACHE_INVALIDATE, - type CacheInvalidationConfiguration, + type CacheInvalidateConfiguration, type ConfigurationData, FIRST_ORDINAL, invalidDirectiveError, @@ -22,7 +22,7 @@ import { createSubgraphWithDefaultName, normalizeSubgraphFailure, normalizeSubgr describe('@openfed__cacheInvalidate directive tests', () => { describe('Mutation field tests', () => { - test('that a valid CacheInvalidationConfiguration is produced', () => { + test('that a valid CacheInvalidateConfiguration is produced', () => { const config = getConfigForType( createSubgraphWithDefaultName(` type Query { dummy: String! } @@ -37,13 +37,13 @@ describe('@openfed__cacheInvalidate directive tests', () => { MUTATION, ); expect(config).toBeDefined(); - expect(config!.entityCaching?.cacheInvalidationConfigurations).toStrictEqual([ + expect(config!.entityCaching?.cacheInvalidateConfigurations).toStrictEqual([ { fieldName: 'updateProduct', operationType: OperationTypeNode.MUTATION, entityTypeName: 'Product', }, - ] satisfies CacheInvalidationConfiguration[]); + ] satisfies CacheInvalidateConfiguration[]); }); test('that a renamed Mutation root type keys the config under the canonical name', () => { @@ -64,13 +64,13 @@ describe('@openfed__cacheInvalidate directive tests', () => { // The config must be keyed under the renamed root name `Mutation`, not the original `Mutations`. expect(config).toBeDefined(); expect(config!.typeName).toBe(MUTATION); - expect(config!.entityCaching?.cacheInvalidationConfigurations).toStrictEqual([ + expect(config!.entityCaching?.cacheInvalidateConfigurations).toStrictEqual([ { fieldName: 'updateProduct', operationType: OperationTypeNode.MUTATION, entityTypeName: 'Product', }, - ] satisfies CacheInvalidationConfiguration[]); + ] satisfies CacheInvalidateConfiguration[]); expect(getConfigForType(subgraph, 'NewMutations')).toBeUndefined(); }); @@ -97,7 +97,7 @@ describe('@openfed__cacheInvalidate directive tests', () => { expect(config).toBeDefined(); // Each field on Mutation shares the same configurationData, so configs accumulate via // `[...existingCacheInvalidates, config]` — the 2nd and 3rd fields see existing length > 0. - expect(config!.entityCaching?.cacheInvalidationConfigurations).toStrictEqual([ + expect(config!.entityCaching?.cacheInvalidateConfigurations).toStrictEqual([ { fieldName: 'updateProduct', operationType: OperationTypeNode.MUTATION, @@ -113,12 +113,12 @@ describe('@openfed__cacheInvalidate directive tests', () => { operationType: OperationTypeNode.MUTATION, entityTypeName: 'Review', }, - ] satisfies CacheInvalidationConfiguration[]); + ] satisfies CacheInvalidateConfiguration[]); }); }); describe('Subscription field tests', () => { - test('that a valid CacheInvalidationConfiguration is produced', () => { + test('that a valid CacheInvalidateConfiguration is produced', () => { const config = getConfigForType( createSubgraphWithDefaultName(` type Query { dummy: String! } @@ -133,13 +133,13 @@ describe('@openfed__cacheInvalidate directive tests', () => { SUBSCRIPTION, ); expect(config).toBeDefined(); - expect(config!.entityCaching?.cacheInvalidationConfigurations).toStrictEqual([ + expect(config!.entityCaching?.cacheInvalidateConfigurations).toStrictEqual([ { fieldName: 'itemUpdated', operationType: OperationTypeNode.SUBSCRIPTION, entityTypeName: 'Product', }, - ] satisfies CacheInvalidationConfiguration[]); + ] satisfies CacheInvalidateConfiguration[]); }); }); diff --git a/shared/src/router-config/builder.ts b/shared/src/router-config/builder.ts index 5a5471c26c..62264b3306 100644 --- a/shared/src/router-config/builder.ts +++ b/shared/src/router-config/builder.ts @@ -103,7 +103,7 @@ function extractEntityCachingConfiguration( }), ); } - for (const ci of data.entityCaching?.cacheInvalidationConfigurations) { + for (const ci of data.entityCaching?.cacheInvalidateConfigurations) { cacheInvalidateConfigurations.push( new CacheInvalidateConfiguration({ fieldName: ci.fieldName, @@ -113,13 +113,12 @@ function extractEntityCachingConfiguration( ); } } - if (entityCache.length === 0 && cacheInvalidateConfigurations.length === 0) { - return; + if (entityCache.length > 0 || cacheInvalidateConfigurations.length > 0) { + return new EntityCachingConfiguration({ + entityCache, + cacheInvalidateConfigurations, + }); } - return new EntityCachingConfiguration({ - entityCache, - cacheInvalidateConfigurations, - }); } export interface Input { From af8c7075df7d4101da2d1f42cd3b48f454b37383 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Mon, 22 Jun 2026 17:57:35 +0530 Subject: [PATCH 47/65] fix: merge changes --- composition/src/errors/errors.ts | 10 ++++++-- .../v1/normalization/normalization-factory.ts | 22 +++++++++++++---- .../v1/directives/cache-populate.test.ts | 24 +++++++++---------- .../tests/v1/directives/entity-cache.test.ts | 4 ++-- 4 files changed, 40 insertions(+), 20 deletions(-) diff --git a/composition/src/errors/errors.ts b/composition/src/errors/errors.ts index 3e4edeb591..68fabba439 100644 --- a/composition/src/errors/errors.ts +++ b/composition/src/errors/errors.ts @@ -2056,8 +2056,14 @@ export function entityCacheWithoutKeyErrorMessage(typeName: TypeName): string { return `Object "${typeName}" does not define a "@key" directive.`; } -export function maxAgeNotPositiveIntegerErrorMessage(value: number): string { - return `The argument "maxAge" must be provided a positive integer; received "${value}".`; +export function maxAgeNotPositiveIntegerErrorMessage({ + directiveName, + value, +}: { + directiveName: string; + value: number; +}): string { + return `The argument "maxAge" of "@${directiveName}" must be provided a positive integer; received "${value}".`; } export function negativeCacheTTLNotNonNegativeIntegerErrorMessage(value: number): string { diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index 99d6ea12f8..b28b6790da 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -4101,7 +4101,7 @@ export class NormalizationFactory { if (config.maxAgeSeconds <= 0) { entityCacheErrors.push( invalidDirectiveError(OPENFED_ENTITY_CACHE, typeName, FIRST_ORDINAL, [ - maxAgeNotPositiveIntegerErrorMessage(config.maxAgeSeconds), + maxAgeNotPositiveIntegerErrorMessage({ directiveName: OPENFED_ENTITY_CACHE, value: config.maxAgeSeconds }), ]), ); } @@ -4205,7 +4205,7 @@ export class NormalizationFactory { if (maxAgeRaw <= 0) { this.errors.push( invalidDirectiveError(OPENFED_CACHE_POPULATE, fieldCoords, FIRST_ORDINAL, [ - maxAgeNotPositiveIntegerErrorMessage(maxAgeRaw), + maxAgeNotPositiveIntegerErrorMessage({ directiveName: OPENFED_CACHE_POPULATE, value: maxAgeRaw }), ]), ); return; @@ -4402,8 +4402,22 @@ export class NormalizationFactory { const externalInterfaceFieldNames: Array = []; for (const [fieldName, fieldData] of parentData.fieldDataByName) { if (isObject) { - this.extractCacheInvalidateConfig(fieldData); - this.extractCachePopulateConfig(fieldData); + // A field can't both evict (@openfed__cacheInvalidate) and write (@openfed__cachePopulate) + // the cache for the same entity, so the two directives are mutually exclusive. + if ( + fieldData.directivesByName.has(OPENFED_CACHE_INVALIDATE) && + fieldData.directivesByName.has(OPENFED_CACHE_POPULATE) + ) { + const fieldCoords = `${fieldData.originalParentTypeName}.${fieldData.name}`; + this.errors.push( + invalidDirectiveError(OPENFED_CACHE_INVALIDATE, fieldCoords, FIRST_ORDINAL, [ + cacheInvalidateAndPopulateMutualExclusionErrorMessage(fieldCoords), + ]), + ); + } else { + this.extractCacheInvalidateConfig(fieldData); + this.extractCachePopulateConfig(fieldData); + } } if (!isObject && fieldData.externalFieldDataBySubgraphName.get(this.subgraphName)?.isDefinedExternal) { diff --git a/composition/tests/v1/directives/cache-populate.test.ts b/composition/tests/v1/directives/cache-populate.test.ts index dc4813c935..5804456ab9 100644 --- a/composition/tests/v1/directives/cache-populate.test.ts +++ b/composition/tests/v1/directives/cache-populate.test.ts @@ -21,13 +21,13 @@ import { cachePopulateOnNonMutationSubscriptionFieldErrorMessage, maxAgeNotPositiveIntegerErrorMessage, } from '../../../src/errors/errors'; -import { createSubgraphWithDefault, normalizeSubgraphFailure, normalizeSubgraphSuccess } from '../../utils/utils'; +import { createSubgraphWithDefaultName, normalizeSubgraphFailure, normalizeSubgraphSuccess } from '../../utils/utils'; describe('@openfed__cachePopulate', () => { describe('on Mutation fields', () => { test("normalizes without maxAge (uses the entity's default TTL)", () => { const { schema } = normalizeSubgraphSuccess( - createSubgraphWithDefault(` + createSubgraphWithDefaultName(` type Query { dummy: String! } type Mutation { createProduct(name: String!): Product @openfed__cachePopulate @@ -44,7 +44,7 @@ describe('@openfed__cachePopulate', () => { test('normalizes with an explicit maxAge override', () => { const { schema } = normalizeSubgraphSuccess( - createSubgraphWithDefault(` + createSubgraphWithDefaultName(` type Query { dummy: String! } type Mutation { createProduct(name: String!): Product @openfed__cachePopulate(maxAge: 120) @@ -61,7 +61,7 @@ describe('@openfed__cachePopulate', () => { test('config without maxAge leaves maxAgeSeconds undefined', () => { const config = getConfigForType( - createSubgraphWithDefault(` + createSubgraphWithDefaultName(` type Query { dummy: String! } type Mutation { createProduct(name: String!): Product @openfed__cachePopulate @@ -86,7 +86,7 @@ describe('@openfed__cachePopulate', () => { test('config with an explicit maxAge override', () => { const config = getConfigForType( - createSubgraphWithDefault(` + createSubgraphWithDefaultName(` type Query { dummy: String! } type Mutation { createProduct(name: String!): Product @openfed__cachePopulate(maxAge: 120) @@ -113,7 +113,7 @@ describe('@openfed__cachePopulate', () => { describe('on Subscription fields', () => { test('normalizes a Subscription field', () => { const { schema } = normalizeSubgraphSuccess( - createSubgraphWithDefault(` + createSubgraphWithDefaultName(` type Query { dummy: String! } type Subscription { itemCreated: Product @openfed__cachePopulate @@ -130,7 +130,7 @@ describe('@openfed__cachePopulate', () => { test('produces the correct config', () => { const config = getConfigForType( - createSubgraphWithDefault(` + createSubgraphWithDefaultName(` type Query { dummy: String! } type Subscription { itemCreated: Product @openfed__cachePopulate @@ -157,7 +157,7 @@ describe('@openfed__cachePopulate', () => { describe('validation errors', () => { test('rejects placement on a Query field', () => { const { errors } = normalizeSubgraphFailure( - createSubgraphWithDefault(` + createSubgraphWithDefaultName(` type Query { product(id: ID!): Product @openfed__cachePopulate } @@ -178,7 +178,7 @@ describe('@openfed__cachePopulate', () => { test('rejects a return type that is not a cached entity', () => { const { errors } = normalizeSubgraphFailure( - createSubgraphWithDefault(` + createSubgraphWithDefaultName(` type Query { dummy: String! } type Mutation { createProduct(name: String!): Result @openfed__cachePopulate @@ -201,7 +201,7 @@ describe('@openfed__cachePopulate', () => { test('rejects a maxAge of zero', () => { const { errors } = normalizeSubgraphFailure( - createSubgraphWithDefault(` + createSubgraphWithDefaultName(` type Query { dummy: String! } type Mutation { createProduct(name: String!): Product @openfed__cachePopulate(maxAge: 0) @@ -226,7 +226,7 @@ describe('@openfed__cachePopulate', () => { // Composition now fails outright, so assert exactly the one @openfed__cachePopulate error. const result = new BatchNormalizer({ subgraphs: [ - createSubgraphWithDefault(` + createSubgraphWithDefaultName(` type Query { dummy: String! } type Mutation { createProduct(name: String!): Product @openfed__cachePopulate(maxAge: 0) @@ -253,7 +253,7 @@ describe('@openfed__cachePopulate', () => { test('rejects coexisting @openfed__cacheInvalidate and @openfed__cachePopulate on the same field', () => { // A mutation can't both evict and write to the cache for the same entity const { errors } = normalizeSubgraphFailure( - createSubgraphWithDefault(` + createSubgraphWithDefaultName(` type Query { dummy: String! } type Mutation { updateProduct(id: ID!): Product @openfed__cacheInvalidate @openfed__cachePopulate diff --git a/composition/tests/v1/directives/entity-cache.test.ts b/composition/tests/v1/directives/entity-cache.test.ts index 84aaea0095..e48f97d0e6 100644 --- a/composition/tests/v1/directives/entity-cache.test.ts +++ b/composition/tests/v1/directives/entity-cache.test.ts @@ -56,7 +56,7 @@ describe('@openfed__entityCache tests', () => { expect(errors).toHaveLength(1); expect(errors[0]).toStrictEqual( invalidDirectiveError(OPENFED_ENTITY_CACHE, 'Product', FIRST_ORDINAL, [ - maxAgeNotPositiveIntegerErrorMessage(0), + maxAgeNotPositiveIntegerErrorMessage({ directiveName: OPENFED_ENTITY_CACHE, value: 0 }), ]), ); }); @@ -75,7 +75,7 @@ describe('@openfed__entityCache tests', () => { expect(errors).toHaveLength(1); expect(errors[0]).toStrictEqual( invalidDirectiveError(OPENFED_ENTITY_CACHE, 'Product', FIRST_ORDINAL, [ - maxAgeNotPositiveIntegerErrorMessage(-5), + maxAgeNotPositiveIntegerErrorMessage({ directiveName: OPENFED_ENTITY_CACHE, value: -5 }), ]), ); }); From da93894c5f7d64a0f59dad7809d09366502c51c8 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Mon, 22 Jun 2026 19:07:00 +0530 Subject: [PATCH 48/65] fix: review comments --- composition/src/errors/errors.ts | 14 ++----- composition/src/router-configuration/types.ts | 4 +- .../v1/normalization/normalization-factory.ts | 8 ++-- .../v1/directives/cache-populate.test.ts | 40 +++++++++---------- .../tests/v1/directives/entity-cache.test.ts | 4 +- .../gen/proto/wg/cosmo/node/v1/node.pb.go | 26 +++++------- connect/src/wg/cosmo/node/v1/node_pb.ts | 9 ++--- proto/wg/cosmo/node/v1/node.proto | 4 +- router/gen/proto/wg/cosmo/node/v1/node.pb.go | 26 +++++------- shared/src/router-config/builder.ts | 21 ++++------ 10 files changed, 66 insertions(+), 90 deletions(-) diff --git a/composition/src/errors/errors.ts b/composition/src/errors/errors.ts index 68fabba439..af9f4b7ba8 100644 --- a/composition/src/errors/errors.ts +++ b/composition/src/errors/errors.ts @@ -2056,14 +2056,8 @@ export function entityCacheWithoutKeyErrorMessage(typeName: TypeName): string { return `Object "${typeName}" does not define a "@key" directive.`; } -export function maxAgeNotPositiveIntegerErrorMessage({ - directiveName, - value, -}: { - directiveName: string; - value: number; -}): string { - return `The argument "maxAge" of "@${directiveName}" must be provided a positive integer; received "${value}".`; +export function maxAgeNotPositiveIntegerErrorMessage(value: number): string { + return `The argument "maxAge" must be provided a positive integer; received "${value}".`; } export function negativeCacheTTLNotNonNegativeIntegerErrorMessage(value: number): string { @@ -2085,8 +2079,8 @@ export function cachePopulateOnNonMutationSubscriptionFieldErrorMessage(fieldCoo return `@openfed__cachePopulate is only valid on Mutation or Subscription fields, found on "${fieldCoords}".`; } -export function cachePopulateOnNonEntityReturnTypeErrorMessage(fieldCoords: string, returnType: string): string { - return `Field "${fieldCoords}" has @openfed__cachePopulate but returns non-entity type "${returnType}".`; +export function cachePopulateOnNonEntityReturnTypeErrorMessage(returnType: string): string { + return `@openfed__cachePopulate returns non-entity type "${returnType}".`; } export function cacheInvalidateAndPopulateMutualExclusionErrorMessage(fieldCoords: string): string { diff --git a/composition/src/router-configuration/types.ts b/composition/src/router-configuration/types.ts index 27f01d7824..bc6609afcf 100644 --- a/composition/src/router-configuration/types.ts +++ b/composition/src/router-configuration/types.ts @@ -132,10 +132,10 @@ export type CacheInvalidateConfiguration = { // Tells the router to populate the entity cache with the operation's return value. // maxAgeSeconds overrides the entity's default TTL when provided. export type CachePopulateConfig = { - fieldName: FieldName; - operationType: string; entityTypeName: TypeName; + fieldName: FieldName; maxAgeSeconds?: number; + operationType: string; }; export type EntityCachingConfiguration = { diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index 3c32e97e96..eaca3c4224 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -4101,7 +4101,7 @@ export class NormalizationFactory { if (config.maxAgeSeconds <= 0) { entityCacheErrors.push( invalidDirectiveError(OPENFED_ENTITY_CACHE, typeName, FIRST_ORDINAL, [ - maxAgeNotPositiveIntegerErrorMessage({ directiveName: OPENFED_ENTITY_CACHE, value: config.maxAgeSeconds }), + maxAgeNotPositiveIntegerErrorMessage(config.maxAgeSeconds), ]), ); } @@ -4168,7 +4168,7 @@ export class NormalizationFactory { // entity (@key + @openfed__entityCache). maxAge is optional — when absent the router falls back to the // entity's @openfed__entityCache TTL; when present it must be positive. extractCachePopulateConfig(fieldData: FieldData) { - if (!fieldData.directivesByName.has(OPENFED_CACHE_POPULATE)) { + if (!fieldData.directivesByName.has(OPENFED_CACHE_POPULATE)) { return; } @@ -4186,7 +4186,7 @@ export class NormalizationFactory { if (!this.keyFieldSetDatasByTypeName.has(returnTypeName) || !this.entityCacheConfigByTypeName.has(returnTypeName)) { this.errors.push( invalidDirectiveError(OPENFED_CACHE_POPULATE, fieldCoords, FIRST_ORDINAL, [ - cachePopulateOnNonEntityReturnTypeErrorMessage(fieldCoords, returnTypeName), + cachePopulateOnNonEntityReturnTypeErrorMessage(returnTypeName), ]), ); return; @@ -4205,7 +4205,7 @@ export class NormalizationFactory { if (maxAgeRaw <= 0) { this.errors.push( invalidDirectiveError(OPENFED_CACHE_POPULATE, fieldCoords, FIRST_ORDINAL, [ - maxAgeNotPositiveIntegerErrorMessage({ directiveName: OPENFED_CACHE_POPULATE, value: maxAgeRaw }), + maxAgeNotPositiveIntegerErrorMessage(maxAgeRaw), ]), ); return; diff --git a/composition/tests/v1/directives/cache-populate.test.ts b/composition/tests/v1/directives/cache-populate.test.ts index 5804456ab9..d9ac68163a 100644 --- a/composition/tests/v1/directives/cache-populate.test.ts +++ b/composition/tests/v1/directives/cache-populate.test.ts @@ -23,9 +23,9 @@ import { } from '../../../src/errors/errors'; import { createSubgraphWithDefaultName, normalizeSubgraphFailure, normalizeSubgraphSuccess } from '../../utils/utils'; -describe('@openfed__cachePopulate', () => { - describe('on Mutation fields', () => { - test("normalizes without maxAge (uses the entity's default TTL)", () => { +describe('@openfed__cachePopulate tests', () => { + describe('Mutation fields tests', () => { + test("that it normalizes without maxAge (uses the entity's default TTL)", () => { const { schema } = normalizeSubgraphSuccess( createSubgraphWithDefaultName(` type Query { dummy: String! } @@ -42,7 +42,7 @@ describe('@openfed__cachePopulate', () => { expect(schema).toBeDefined(); }); - test('normalizes with an explicit maxAge override', () => { + test('that it normalizes with an explicit maxAge override', () => { const { schema } = normalizeSubgraphSuccess( createSubgraphWithDefaultName(` type Query { dummy: String! } @@ -59,7 +59,7 @@ describe('@openfed__cachePopulate', () => { expect(schema).toBeDefined(); }); - test('config without maxAge leaves maxAgeSeconds undefined', () => { + test('that a config without maxAge leaves maxAgeSeconds undefined', () => { const config = getConfigForType( createSubgraphWithDefaultName(` type Query { dummy: String! } @@ -84,7 +84,7 @@ describe('@openfed__cachePopulate', () => { ] satisfies CachePopulateConfig[]); }); - test('config with an explicit maxAge override', () => { + test('that a config with an explicit maxAge override is produced', () => { const config = getConfigForType( createSubgraphWithDefaultName(` type Query { dummy: String! } @@ -110,8 +110,8 @@ describe('@openfed__cachePopulate', () => { }); }); - describe('on Subscription fields', () => { - test('normalizes a Subscription field', () => { + describe('Subscription fields tests', () => { + test('that it normalizes a Subscription field', () => { const { schema } = normalizeSubgraphSuccess( createSubgraphWithDefaultName(` type Query { dummy: String! } @@ -128,7 +128,7 @@ describe('@openfed__cachePopulate', () => { expect(schema).toBeDefined(); }); - test('produces the correct config', () => { + test('that it produces the correct config', () => { const config = getConfigForType( createSubgraphWithDefaultName(` type Query { dummy: String! } @@ -154,8 +154,8 @@ describe('@openfed__cachePopulate', () => { }); }); - describe('validation errors', () => { - test('rejects placement on a Query field', () => { + describe('Validation errors tests', () => { + test('that it rejects placement on a Query field', () => { const { errors } = normalizeSubgraphFailure( createSubgraphWithDefaultName(` type Query { @@ -176,7 +176,7 @@ describe('@openfed__cachePopulate', () => { ); }); - test('rejects a return type that is not a cached entity', () => { + test('that it rejects a return type that is not a cached entity', () => { const { errors } = normalizeSubgraphFailure( createSubgraphWithDefaultName(` type Query { dummy: String! } @@ -194,12 +194,12 @@ describe('@openfed__cachePopulate', () => { expect(errors).toHaveLength(1); expect(errors[0]).toStrictEqual( invalidDirectiveError(OPENFED_CACHE_POPULATE, 'Mutation.createProduct', FIRST_ORDINAL, [ - cachePopulateOnNonEntityReturnTypeErrorMessage('Mutation.createProduct', 'Result'), + cachePopulateOnNonEntityReturnTypeErrorMessage('Result'), ]), ); }); - test('rejects a maxAge of zero', () => { + test('that it rejects a maxAge of zero', () => { const { errors } = normalizeSubgraphFailure( createSubgraphWithDefaultName(` type Query { dummy: String! } @@ -216,12 +216,12 @@ describe('@openfed__cachePopulate', () => { expect(errors).toHaveLength(1); expect(errors[0]).toStrictEqual( invalidDirectiveError(OPENFED_CACHE_POPULATE, 'Mutation.createProduct', FIRST_ORDINAL, [ - maxAgeNotPositiveIntegerErrorMessage({ directiveName: OPENFED_CACHE_POPULATE, value: 0 }), + maxAgeNotPositiveIntegerErrorMessage(0), ]), ); }); - test('an invalid maxAge does not produce a config (regression)', () => { + test('that an invalid maxAge does not produce a config (regression)', () => { // Regression: a maxAge of 0 once emitted a cachePopulate config despite failing validation. // Composition now fails outright, so assert exactly the one @openfed__cachePopulate error. const result = new BatchNormalizer({ @@ -244,13 +244,13 @@ describe('@openfed__cachePopulate', () => { expect(result.errors[0]).toStrictEqual( subgraphValidationError('subgraph-default-a', [ invalidDirectiveError(OPENFED_CACHE_POPULATE, 'Mutation.createProduct', FIRST_ORDINAL, [ - maxAgeNotPositiveIntegerErrorMessage({ directiveName: OPENFED_CACHE_POPULATE, value: 0 }), + maxAgeNotPositiveIntegerErrorMessage(0), ]), ]), ); }); - test('rejects coexisting @openfed__cacheInvalidate and @openfed__cachePopulate on the same field', () => { + test('that it rejects coexisting @openfed__cacheInvalidate and @openfed__cachePopulate on the same field', () => { // A mutation can't both evict and write to the cache for the same entity const { errors } = normalizeSubgraphFailure( createSubgraphWithDefaultName(` @@ -276,10 +276,10 @@ describe('@openfed__cachePopulate', () => { }); // Returns the ConfigurationData for a type. Entity-caching config is nested under `.entityCaching`. -function getConfigForType(sg: Subgraph, typeName: string): ConfigurationData | undefined { +function getConfigForType(sg: Subgraph, typeName: TypeName): ConfigurationData | undefined { const result = new BatchNormalizer({ subgraphs: [sg] }).batchNormalize() as BatchNormalizationSuccess; expect(result.success).toBe(true); const internal = result.internalSubgraphByName.get(sg.name); expect(internal).toBeDefined(); - return internal!.configurationDataByTypeName.get(typeName as TypeName); + return internal!.configurationDataByTypeName.get(typeName); } diff --git a/composition/tests/v1/directives/entity-cache.test.ts b/composition/tests/v1/directives/entity-cache.test.ts index e48f97d0e6..84aaea0095 100644 --- a/composition/tests/v1/directives/entity-cache.test.ts +++ b/composition/tests/v1/directives/entity-cache.test.ts @@ -56,7 +56,7 @@ describe('@openfed__entityCache tests', () => { expect(errors).toHaveLength(1); expect(errors[0]).toStrictEqual( invalidDirectiveError(OPENFED_ENTITY_CACHE, 'Product', FIRST_ORDINAL, [ - maxAgeNotPositiveIntegerErrorMessage({ directiveName: OPENFED_ENTITY_CACHE, value: 0 }), + maxAgeNotPositiveIntegerErrorMessage(0), ]), ); }); @@ -75,7 +75,7 @@ describe('@openfed__entityCache tests', () => { expect(errors).toHaveLength(1); expect(errors[0]).toStrictEqual( invalidDirectiveError(OPENFED_ENTITY_CACHE, 'Product', FIRST_ORDINAL, [ - maxAgeNotPositiveIntegerErrorMessage({ directiveName: OPENFED_ENTITY_CACHE, value: -5 }), + maxAgeNotPositiveIntegerErrorMessage(-5), ]), ); }); diff --git a/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go b/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go index ff38e6acd3..c63b2ab47c 100644 --- a/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go +++ b/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go @@ -1446,13 +1446,11 @@ func (x *CacheInvalidateConfiguration) GetEntityTypeName() string { // Per-field declaration for @openfed__cachePopulate. Tells the router to populate the entity cache // with the (Mutation/Subscription) operation's return value. type CachePopulateConfiguration struct { - state protoimpl.MessageState `protogen:"open.v1"` - FieldName string `protobuf:"bytes,1,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` - OperationType string `protobuf:"bytes,2,opt,name=operation_type,json=operationType,proto3" json:"operation_type,omitempty"` - // Optional override TTL. When omitted, falls back to the target entity's max_age_seconds. - // Composition rejects non-positive values. - MaxAgeSeconds *int64 `protobuf:"varint,3,opt,name=max_age_seconds,json=maxAgeSeconds,proto3,oneof" json:"max_age_seconds,omitempty"` - EntityTypeName string `protobuf:"bytes,4,opt,name=entity_type_name,json=entityTypeName,proto3" json:"entity_type_name,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + FieldName string `protobuf:"bytes,1,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` + OperationType string `protobuf:"bytes,2,opt,name=operation_type,json=operationType,proto3" json:"operation_type,omitempty"` + MaxAgeSeconds int64 `protobuf:"varint,3,opt,name=max_age_seconds,json=maxAgeSeconds,proto3" json:"max_age_seconds,omitempty"` + EntityTypeName string `protobuf:"bytes,4,opt,name=entity_type_name,json=entityTypeName,proto3" json:"entity_type_name,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -1502,8 +1500,8 @@ func (x *CachePopulateConfiguration) GetOperationType() string { } func (x *CachePopulateConfiguration) GetMaxAgeSeconds() int64 { - if x != nil && x.MaxAgeSeconds != nil { - return *x.MaxAgeSeconds + if x != nil { + return x.MaxAgeSeconds } return 0 } @@ -5008,14 +5006,13 @@ const file_wg_cosmo_node_v1_node_proto_rawDesc = "" + "\n" + "field_name\x18\x01 \x01(\tR\tfieldName\x12%\n" + "\x0eoperation_type\x18\x02 \x01(\tR\roperationType\x12(\n" + - "\x10entity_type_name\x18\x03 \x01(\tR\x0eentityTypeName\"\xcd\x01\n" + + "\x10entity_type_name\x18\x03 \x01(\tR\x0eentityTypeName\"\xb4\x01\n" + "\x1aCachePopulateConfiguration\x12\x1d\n" + "\n" + "field_name\x18\x01 \x01(\tR\tfieldName\x12%\n" + - "\x0eoperation_type\x18\x02 \x01(\tR\roperationType\x12+\n" + - "\x0fmax_age_seconds\x18\x03 \x01(\x03H\x00R\rmaxAgeSeconds\x88\x01\x01\x12(\n" + - "\x10entity_type_name\x18\x04 \x01(\tR\x0eentityTypeNameB\x12\n" + - "\x10_max_age_seconds\"\x98\x04\n" + + "\x0eoperation_type\x18\x02 \x01(\tR\roperationType\x12&\n" + + "\x0fmax_age_seconds\x18\x03 \x01(\x03R\rmaxAgeSeconds\x12(\n" + + "\x10entity_type_name\x18\x04 \x01(\tR\x0eentityTypeName\"\x98\x04\n" + "\x11CostConfiguration\x12O\n" + "\rfield_weights\x18\x01 \x03(\v2*.wg.cosmo.node.v1.FieldWeightConfigurationR\ffieldWeights\x12K\n" + "\n" + @@ -5569,7 +5566,6 @@ func file_wg_cosmo_node_v1_node_proto_init() { file_wg_cosmo_node_v1_node_proto_msgTypes[4].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[9].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[10].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[15].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[17].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[18].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[22].OneofWrappers = []any{} diff --git a/connect/src/wg/cosmo/node/v1/node_pb.ts b/connect/src/wg/cosmo/node/v1/node_pb.ts index 1309bbc5bf..3599a7fb04 100644 --- a/connect/src/wg/cosmo/node/v1/node_pb.ts +++ b/connect/src/wg/cosmo/node/v1/node_pb.ts @@ -1099,12 +1099,9 @@ export class CachePopulateConfiguration extends Message [ { no: 1, name: "field_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, { no: 2, name: "operation_type", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 3, name: "max_age_seconds", kind: "scalar", T: 3 /* ScalarType.INT64 */, opt: true }, + { no: 3, name: "max_age_seconds", kind: "scalar", T: 3 /* ScalarType.INT64 */ }, { no: 4, name: "entity_type_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, ]); diff --git a/proto/wg/cosmo/node/v1/node.proto b/proto/wg/cosmo/node/v1/node.proto index 6b02ecd22a..33f70319d4 100644 --- a/proto/wg/cosmo/node/v1/node.proto +++ b/proto/wg/cosmo/node/v1/node.proto @@ -135,9 +135,7 @@ message CacheInvalidateConfiguration { message CachePopulateConfiguration { string field_name = 1; string operation_type = 2; - // Optional override TTL. When omitted, falls back to the target entity's max_age_seconds. - // Composition rejects non-positive values. - optional int64 max_age_seconds = 3; + int64 max_age_seconds = 3; string entity_type_name = 4; } diff --git a/router/gen/proto/wg/cosmo/node/v1/node.pb.go b/router/gen/proto/wg/cosmo/node/v1/node.pb.go index 1f99994e09..33fcb7cf69 100644 --- a/router/gen/proto/wg/cosmo/node/v1/node.pb.go +++ b/router/gen/proto/wg/cosmo/node/v1/node.pb.go @@ -1446,13 +1446,11 @@ func (x *CacheInvalidateConfiguration) GetEntityTypeName() string { // Per-field declaration for @openfed__cachePopulate. Tells the router to populate the entity cache // with the (Mutation/Subscription) operation's return value. type CachePopulateConfiguration struct { - state protoimpl.MessageState `protogen:"open.v1"` - FieldName string `protobuf:"bytes,1,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` - OperationType string `protobuf:"bytes,2,opt,name=operation_type,json=operationType,proto3" json:"operation_type,omitempty"` - // Optional override TTL. When omitted, falls back to the target entity's max_age_seconds. - // Composition rejects non-positive values. - MaxAgeSeconds *int64 `protobuf:"varint,3,opt,name=max_age_seconds,json=maxAgeSeconds,proto3,oneof" json:"max_age_seconds,omitempty"` - EntityTypeName string `protobuf:"bytes,4,opt,name=entity_type_name,json=entityTypeName,proto3" json:"entity_type_name,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + FieldName string `protobuf:"bytes,1,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` + OperationType string `protobuf:"bytes,2,opt,name=operation_type,json=operationType,proto3" json:"operation_type,omitempty"` + MaxAgeSeconds int64 `protobuf:"varint,3,opt,name=max_age_seconds,json=maxAgeSeconds,proto3" json:"max_age_seconds,omitempty"` + EntityTypeName string `protobuf:"bytes,4,opt,name=entity_type_name,json=entityTypeName,proto3" json:"entity_type_name,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -1502,8 +1500,8 @@ func (x *CachePopulateConfiguration) GetOperationType() string { } func (x *CachePopulateConfiguration) GetMaxAgeSeconds() int64 { - if x != nil && x.MaxAgeSeconds != nil { - return *x.MaxAgeSeconds + if x != nil { + return x.MaxAgeSeconds } return 0 } @@ -5008,14 +5006,13 @@ const file_wg_cosmo_node_v1_node_proto_rawDesc = "" + "\n" + "field_name\x18\x01 \x01(\tR\tfieldName\x12%\n" + "\x0eoperation_type\x18\x02 \x01(\tR\roperationType\x12(\n" + - "\x10entity_type_name\x18\x03 \x01(\tR\x0eentityTypeName\"\xcd\x01\n" + + "\x10entity_type_name\x18\x03 \x01(\tR\x0eentityTypeName\"\xb4\x01\n" + "\x1aCachePopulateConfiguration\x12\x1d\n" + "\n" + "field_name\x18\x01 \x01(\tR\tfieldName\x12%\n" + - "\x0eoperation_type\x18\x02 \x01(\tR\roperationType\x12+\n" + - "\x0fmax_age_seconds\x18\x03 \x01(\x03H\x00R\rmaxAgeSeconds\x88\x01\x01\x12(\n" + - "\x10entity_type_name\x18\x04 \x01(\tR\x0eentityTypeNameB\x12\n" + - "\x10_max_age_seconds\"\x98\x04\n" + + "\x0eoperation_type\x18\x02 \x01(\tR\roperationType\x12&\n" + + "\x0fmax_age_seconds\x18\x03 \x01(\x03R\rmaxAgeSeconds\x12(\n" + + "\x10entity_type_name\x18\x04 \x01(\tR\x0eentityTypeName\"\x98\x04\n" + "\x11CostConfiguration\x12O\n" + "\rfield_weights\x18\x01 \x03(\v2*.wg.cosmo.node.v1.FieldWeightConfigurationR\ffieldWeights\x12K\n" + "\n" + @@ -5569,7 +5566,6 @@ func file_wg_cosmo_node_v1_node_proto_init() { file_wg_cosmo_node_v1_node_proto_msgTypes[4].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[9].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[10].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[15].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[17].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[18].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[22].OneofWrappers = []any{} diff --git a/shared/src/router-config/builder.ts b/shared/src/router-config/builder.ts index 6314a45545..5e3a4c428a 100644 --- a/shared/src/router-config/builder.ts +++ b/shared/src/router-config/builder.ts @@ -114,29 +114,24 @@ function extractEntityCachingConfiguration( }), ); } - for (const cp of data.entityCaching?.cachePopulateConfigurations ?? []) { + for (const cp of data.entityCaching?.cachePopulateConfigurations) { cachePopulateConfigurations.push( new CachePopulateConfiguration({ + entityTypeName: cp.entityTypeName, fieldName: cp.fieldName, operationType: cp.operationType, - entityTypeName: cp.entityTypeName, maxAgeSeconds: cp.maxAgeSeconds === undefined ? undefined : BigInt(cp.maxAgeSeconds), }), ); } } - if ( - entityCache.length === 0 && - cacheInvalidateConfigurations.length === 0 && - cachePopulateConfigurations.length === 0 - ) { - return; + if (entityCache.length > 0 || cacheInvalidateConfigurations.length > 0 || cachePopulateConfigurations.length > 0) { + return new EntityCachingConfiguration({ + cacheInvalidateConfigurations, + cachePopulateConfigurations, + entityCache, + }); } - return new EntityCachingConfiguration({ - entityCache, - cacheInvalidateConfigurations, - cachePopulateConfigurations, - }); } export interface Input { From ccd61b74d256560674a57799ce372c93953b55b7 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Mon, 22 Jun 2026 19:10:21 +0530 Subject: [PATCH 49/65] fix: review comments --- .../v1/directives/cache-populate.test.ts | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/composition/tests/v1/directives/cache-populate.test.ts b/composition/tests/v1/directives/cache-populate.test.ts index d9ac68163a..957e449833 100644 --- a/composition/tests/v1/directives/cache-populate.test.ts +++ b/composition/tests/v1/directives/cache-populate.test.ts @@ -108,6 +108,35 @@ describe('@openfed__cachePopulate tests', () => { }, ] satisfies CachePopulateConfig[]); }); + + test('that a renamed Mutation root type keys the config under the canonical name', () => { + const subgraph = createSubgraphWithDefaultName(` + schema { + mutation: NewMutations + } + type Query { dummy: String! } + type NewMutations { + createProduct(name: String!): Product @openfed__cachePopulate + } + type Product @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + name: String! + } + `); + const config = getConfigForType(subgraph, MUTATION); + // The config must be keyed under the renamed root name `Mutation`, not the original `NewMutations`. + expect(config).toBeDefined(); + expect(config!.typeName).toBe(MUTATION); + expect(config!.entityCaching?.cachePopulateConfigurations).toStrictEqual([ + { + fieldName: 'createProduct', + operationType: MUTATION, + entityTypeName: 'Product', + maxAgeSeconds: undefined, + }, + ] satisfies CachePopulateConfig[]); + expect(getConfigForType(subgraph, 'NewMutations')).toBeUndefined(); + }); }); describe('Subscription fields tests', () => { From a46e87402d2efaba2ee3214ac76d67e68e575ff7 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Mon, 22 Jun 2026 20:57:32 +0530 Subject: [PATCH 50/65] fix: review comments --- composition/src/router-configuration/types.ts | 4 +- composition/src/router-configuration/utils.ts | 1 + .../v1/normalization/normalization-factory.ts | 102 +++++------------- .../v1/directives/request-scoped.test.ts | 28 ++--- 4 files changed, 39 insertions(+), 96 deletions(-) diff --git a/composition/src/router-configuration/types.ts b/composition/src/router-configuration/types.ts index eba9f7bba1..f884bd8d30 100644 --- a/composition/src/router-configuration/types.ts +++ b/composition/src/router-configuration/types.ts @@ -87,7 +87,7 @@ export type RequiredFieldConfiguration = { disableEntityResolver?: boolean; }; -export type RequestScopedFieldConfig = { +export type RequestScopedFieldConfiguration = { fieldName: FieldName; typeName: TypeName; // L1 cache key used to store/lookup this field's value for the duration of a request. @@ -156,7 +156,7 @@ export type EntityCachingConfiguration = { entityCacheConfigurations: Array; // Attached to the Mutation/Subscription type's ConfigurationData from @openfed__cachePopulate. cachePopulateConfigurations: Array; - requestScopedFields?: Array; + requestScopedConfigurations: Array; }; export type Costs = { diff --git a/composition/src/router-configuration/utils.ts b/composition/src/router-configuration/utils.ts index 38b493f32e..9cfa735fe2 100644 --- a/composition/src/router-configuration/utils.ts +++ b/composition/src/router-configuration/utils.ts @@ -22,6 +22,7 @@ export function getOrInitializeEntityCaching(configurationData: ConfigurationDat cacheInvalidateConfigurations: [], entityCacheConfigurations: [], cachePopulateConfigurations: [], + requestScopedConfigurations: [], }; } return configurationData.entityCaching; diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index e3a805bfc9..462734e458 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -193,7 +193,7 @@ import { type NatsEventType, type RequiredFieldConfiguration, type CachePopulateConfig, - type RequestScopedFieldConfig, + type RequestScopedFieldConfiguration, } from '../../router-configuration/types'; import { printTypeNode } from '@graphql-tools/merge'; import { @@ -206,7 +206,6 @@ import { nonExternalConditionalFieldWarning, singleSubgraphInputFieldOneOfWarning, unimplementedInterfaceOutputTypeWarning, - requestScopedSingleFieldWarning, } from '../warnings/warnings'; import { upsertDirectiveSchemaAndEntityDefinitions, upsertParentsAndChildren } from './walkers'; import { @@ -4230,81 +4229,32 @@ export class NormalizationFactory { getOrInitializeEntityCaching(configurationData).cachePopulateConfigurations.push(config); } - extractRequestScopedFields() { - // Gather fields annotated with @openfed__requestScoped across all types in this subgraph. - // A field is both a reader and writer of the coordinate L1 — no receiver/provider. - // Fields with the same `key` share the same L1 entry: whichever is resolved first - // populates it, subsequent ones inject from it. - type Collected = { - typeName: string; - fieldName: string; - fieldCoords: string; - key: string; - l1Key: string; - }; - const collected: Array = []; - - for (const [, parentData] of this.parentDefinitionDataByTypeName) { - if (parentData.kind !== Kind.OBJECT_TYPE_DEFINITION && parentData.kind !== Kind.INTERFACE_TYPE_DEFINITION) { - continue; - } - const typeName = getParentTypeName(parentData); - for (const [fieldName, fieldData] of parentData.fieldDataByName) { - const directives = fieldData.directivesByName.get(OPENFED_REQUEST_SCOPED); - if (!directives) { - continue; - } - // validateDirectives() (run earlier in normalize()) has already guaranteed a single, non-repeated - // @openfed__requestScoped with a required String `key`, so the generic ConstDirectiveNode can be - // narrowed to the precise typed node — mirroring handleComposeDirective()/ComposeDirectiveNode. - const directive = directives[0] as RequestScopedDirectiveNode; - const keyArg = directive.arguments.find((arg) => arg.name.value === KEY); - if (!keyArg) { - continue; - } - - const fieldCoords = `${typeName}.${fieldName}`; - const key = keyArg.value.value; - const l1Key = `${this.subgraphName}.${key}`; - collected.push({ typeName, fieldName, fieldCoords, key, l1Key }); - } - } - - if (collected.length === 0) { + // Attaches a single field annotated with @openfed__requestScoped to its type's configurationData. A field + // is both a reader and writer of the coordinate L1 — no receiver/provider. Fields with the same `key` share + // the same L1 entry: whichever is resolved first populates it, subsequent ones inject from it. + extractRequestScopedConfig(fieldData: FieldData, typeName: string) { + const directives = fieldData.directivesByName.get(OPENFED_REQUEST_SCOPED); + if (!directives) { return; } - - // Warn when a key is used on only one field — @openfed__requestScoped is meaningless - // unless >= 2 fields share the key (there'd be no second reader to benefit). - const coordsByKey = new Map>(); - for (const c of collected) { - getValueOrDefault(coordsByKey, c.key, () => []).push(c.fieldCoords); - } - for (const [key, coordsList] of coordsByKey) { - if (coordsList.length === 1) { - this.warnings.push( - requestScopedSingleFieldWarning({ - subgraphName: this.subgraphName, - key, - fieldCoords: coordsList[0], - }), - ); - } + // validateDirectives() (run earlier in normalize()) has already guaranteed a single, non-repeated + // @openfed__requestScoped with a required String `key`, so the generic ConstDirectiveNode can be + // narrowed to the precise typed node — mirroring handleComposeDirective()/ComposeDirectiveNode. + const directive = directives[0] as RequestScopedDirectiveNode; + const keyArg = directive.arguments.find((arg) => arg.name.value === KEY); + if (!keyArg) { + return; } - // Group by type and attach to configurationData. - const byType = new Map>(); - for (const c of collected) { - const list = byType.get(c.typeName) ?? []; - list.push({ fieldName: c.fieldName, typeName: c.typeName, l1Key: c.l1Key }); - byType.set(c.typeName, list); - } - for (const [typeName, fields] of byType) { - const configurationData = getValueOrDefault(this.configurationDataByTypeName, typeName, () => - newConfigurationData(false, typeName), - ); - getOrInitializeEntityCaching(configurationData).requestScopedFields = fields; - } + const config: RequestScopedFieldConfiguration = { + fieldName: fieldData.name, + typeName, + l1Key: `${this.subgraphName}.${keyArg.value.value}`, + }; + const configurationData = getValueOrDefault(this.configurationDataByTypeName, typeName, () => + newConfigurationData(false, typeName), + ); + getOrInitializeEntityCaching(configurationData).requestScopedConfigurations.push(config); } addFieldNamesToConfigurationData(fieldDataByFieldName: Map, configurationData: ConfigurationData) { @@ -4480,8 +4430,11 @@ export class NormalizationFactory { parentData.fieldDataByName.delete(ENTITIES_FIELD); } + const newParentTypeName = getParentTypeName(parentData); const externalInterfaceFieldNames: Array = []; for (const [fieldName, fieldData] of parentData.fieldDataByName) { + // @openfed__requestScoped is valid on both object and interface fields. + this.extractRequestScopedConfig(fieldData, newParentTypeName); if (isObject) { // A field can't both evict (@openfed__cacheInvalidate) and write (@openfed__cachePopulate) // the cache for the same entity, so the two directives are mutually exclusive. @@ -4535,7 +4488,6 @@ export class NormalizationFactory { externalInterfaceFieldsWarning(this.subgraphName, parentTypeName, [...externalInterfaceFieldNames]), ); } - const newParentTypeName = getParentTypeName(parentData); const configurationData = getValueOrDefault(this.configurationDataByTypeName, newParentTypeName, () => newConfigurationData(isEntity, parentTypeName), ); @@ -4594,8 +4546,6 @@ export class NormalizationFactory { this.addValidConditionalFieldSetConfigurations(); // this is where @key configurations are added to the ConfigurationData this.addValidKeyFieldSetConfigurations(); - // this is where @openfed__requestScoped configurations are added to the ConfigurationData - this.extractRequestScopedFields(); // Check that explicitly defined operations types are valid objects and that their fields are also valid for (const operationType of Object.values(OperationTypeNode)) { const operationTypeNode = this.schemaData.operationTypes.get(operationType); diff --git a/composition/tests/v1/directives/request-scoped.test.ts b/composition/tests/v1/directives/request-scoped.test.ts index 66a536aa6a..d20c8cf675 100644 --- a/composition/tests/v1/directives/request-scoped.test.ts +++ b/composition/tests/v1/directives/request-scoped.test.ts @@ -6,7 +6,6 @@ import { invalidRepeatedDirectiveErrorMessage, OPENFED_REQUEST_SCOPED, OPENFED_REQUEST_SCOPED_DEFINITION, - requestScopedSingleFieldWarning, ROUTER_COMPATIBILITY_VERSION_ONE, undefinedRequiredArgumentsErrorMessage, } from '../../../src'; @@ -47,9 +46,9 @@ describe('@openfed__requestScoped', () => { ROUTER_COMPATIBILITY_VERSION_ONE, ); const config = result.configurationDataByTypeName.get('Query'); - expect(config!.entityCaching?.requestScopedFields).toBeDefined(); - expect(config!.entityCaching?.requestScopedFields).toHaveLength(2); - expect(config!.entityCaching!.requestScopedFields!.map((f) => f.l1Key)).toEqual([ + expect(config!.entityCaching?.requestScopedConfigurations).toBeDefined(); + expect(config!.entityCaching?.requestScopedConfigurations).toHaveLength(2); + expect(config!.entityCaching!.requestScopedConfigurations!.map((f) => f.l1Key)).toEqual([ 'subgraph-default-a.me', 'subgraph-default-a.me', ]); @@ -67,13 +66,13 @@ describe('@openfed__requestScoped', () => { ROUTER_COMPATIBILITY_VERSION_ONE, ); const config = result.configurationDataByTypeName.get('Query'); - expect(config!.entityCaching?.requestScopedFields).toBeDefined(); - expect(config!.entityCaching?.requestScopedFields).toHaveLength(2); - expect(config!.entityCaching!.requestScopedFields![0].fieldName).toBe('currentLocale'); - expect(config!.entityCaching!.requestScopedFields![0].l1Key).toBe('subgraph-default-a.locale'); + expect(config!.entityCaching?.requestScopedConfigurations).toBeDefined(); + expect(config!.entityCaching?.requestScopedConfigurations).toHaveLength(2); + expect(config!.entityCaching!.requestScopedConfigurations![0].fieldName).toBe('currentLocale'); + expect(config!.entityCaching!.requestScopedConfigurations![0].l1Key).toBe('subgraph-default-a.locale'); }); - test('a key declared on only one field still populates config but emits a warning', () => { + test('a key declared on only one field still populates config', () => { const result = normalizeSubgraphSuccess( createSubgraphWithDefaultName(` type Query { @@ -86,15 +85,8 @@ describe('@openfed__requestScoped', () => { ROUTER_COMPATIBILITY_VERSION_ONE, ); const config = result.configurationDataByTypeName.get('Query'); - expect(config!.entityCaching?.requestScopedFields).toHaveLength(1); - expect(config!.entityCaching!.requestScopedFields![0].l1Key).toBe('subgraph-default-a.lonely'); - expect(result.warnings).toStrictEqual([ - requestScopedSingleFieldWarning({ - subgraphName: 'subgraph-default-a', - key: 'lonely', - fieldCoords: 'Query.currentUser', - }), - ]); + expect(config!.entityCaching?.requestScopedConfigurations).toHaveLength(1); + expect(config!.entityCaching!.requestScopedConfigurations![0].l1Key).toBe('subgraph-default-a.lonely'); }); }); From dc74e327587915a0ea050b7c1193004d94dc36d3 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Mon, 22 Jun 2026 21:26:13 +0530 Subject: [PATCH 51/65] fix: review comments --- composition/src/router-configuration/types.ts | 4 +- .../v1/normalization/normalization-factory.ts | 17 +++---- .../v1/directives/request-scoped.test.ts | 10 +++- .../gen/proto/wg/cosmo/node/v1/node.pb.go | 46 +++++++++---------- connect/src/wg/cosmo/node/v1/node_pb.ts | 30 ++++++------ proto/wg/cosmo/node/v1/node.proto | 4 +- router/gen/proto/wg/cosmo/node/v1/node.pb.go | 46 +++++++++---------- shared/src/router-config/builder.ts | 40 ++++++++-------- 8 files changed, 102 insertions(+), 95 deletions(-) diff --git a/composition/src/router-configuration/types.ts b/composition/src/router-configuration/types.ts index f884bd8d30..943b4cbd51 100644 --- a/composition/src/router-configuration/types.ts +++ b/composition/src/router-configuration/types.ts @@ -87,7 +87,7 @@ export type RequiredFieldConfiguration = { disableEntityResolver?: boolean; }; -export type RequestScopedFieldConfiguration = { +export type RequestScopedConfiguration = { fieldName: FieldName; typeName: TypeName; // L1 cache key used to store/lookup this field's value for the duration of a request. @@ -156,7 +156,7 @@ export type EntityCachingConfiguration = { entityCacheConfigurations: Array; // Attached to the Mutation/Subscription type's ConfigurationData from @openfed__cachePopulate. cachePopulateConfigurations: Array; - requestScopedConfigurations: Array; + requestScopedConfigurations: Array; }; export type Costs = { diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index 462734e458..15e8a980c5 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -193,7 +193,7 @@ import { type NatsEventType, type RequiredFieldConfiguration, type CachePopulateConfig, - type RequestScopedFieldConfiguration, + type RequestScopedConfiguration, } from '../../router-configuration/types'; import { printTypeNode } from '@graphql-tools/merge'; import { @@ -204,6 +204,7 @@ import { fieldAlreadyProvidedWarning, invalidExternalFieldWarning, nonExternalConditionalFieldWarning, + requestScopedSingleFieldWarning, singleSubgraphInputFieldOneOfWarning, unimplementedInterfaceOutputTypeWarning, } from '../warnings/warnings'; @@ -4232,7 +4233,7 @@ export class NormalizationFactory { // Attaches a single field annotated with @openfed__requestScoped to its type's configurationData. A field // is both a reader and writer of the coordinate L1 — no receiver/provider. Fields with the same `key` share // the same L1 entry: whichever is resolved first populates it, subsequent ones inject from it. - extractRequestScopedConfig(fieldData: FieldData, typeName: string) { + extractRequestScopedConfig(fieldData: FieldData) { const directives = fieldData.directivesByName.get(OPENFED_REQUEST_SCOPED); if (!directives) { return; @@ -4246,13 +4247,13 @@ export class NormalizationFactory { return; } - const config: RequestScopedFieldConfiguration = { + const config: RequestScopedConfiguration = { fieldName: fieldData.name, - typeName, + typeName: fieldData.renamedParentTypeName, l1Key: `${this.subgraphName}.${keyArg.value.value}`, }; - const configurationData = getValueOrDefault(this.configurationDataByTypeName, typeName, () => - newConfigurationData(false, typeName), + const configurationData = getValueOrDefault(this.configurationDataByTypeName, fieldData.renamedParentTypeName, () => + newConfigurationData(false, fieldData.renamedParentTypeName), ); getOrInitializeEntityCaching(configurationData).requestScopedConfigurations.push(config); } @@ -4433,8 +4434,6 @@ export class NormalizationFactory { const newParentTypeName = getParentTypeName(parentData); const externalInterfaceFieldNames: Array = []; for (const [fieldName, fieldData] of parentData.fieldDataByName) { - // @openfed__requestScoped is valid on both object and interface fields. - this.extractRequestScopedConfig(fieldData, newParentTypeName); if (isObject) { // A field can't both evict (@openfed__cacheInvalidate) and write (@openfed__cachePopulate) // the cache for the same entity, so the two directives are mutually exclusive. @@ -4452,6 +4451,8 @@ export class NormalizationFactory { this.extractCacheInvalidateConfig(fieldData); this.extractCachePopulateConfig(fieldData); } + + this.extractRequestScopedConfig(fieldData); } else if (fieldData.externalFieldDataBySubgraphName.get(this.subgraphName)?.isDefinedExternal) { externalInterfaceFieldNames.push(fieldName); } diff --git a/composition/tests/v1/directives/request-scoped.test.ts b/composition/tests/v1/directives/request-scoped.test.ts index d20c8cf675..d2c442a610 100644 --- a/composition/tests/v1/directives/request-scoped.test.ts +++ b/composition/tests/v1/directives/request-scoped.test.ts @@ -6,6 +6,7 @@ import { invalidRepeatedDirectiveErrorMessage, OPENFED_REQUEST_SCOPED, OPENFED_REQUEST_SCOPED_DEFINITION, + requestScopedSingleFieldWarning, ROUTER_COMPATIBILITY_VERSION_ONE, undefinedRequiredArgumentsErrorMessage, } from '../../../src'; @@ -72,7 +73,7 @@ describe('@openfed__requestScoped', () => { expect(config!.entityCaching!.requestScopedConfigurations![0].l1Key).toBe('subgraph-default-a.locale'); }); - test('a key declared on only one field still populates config', () => { + test('a key declared on only one field still populates config but emits a warning', () => { const result = normalizeSubgraphSuccess( createSubgraphWithDefaultName(` type Query { @@ -87,6 +88,13 @@ describe('@openfed__requestScoped', () => { const config = result.configurationDataByTypeName.get('Query'); expect(config!.entityCaching?.requestScopedConfigurations).toHaveLength(1); expect(config!.entityCaching!.requestScopedConfigurations![0].l1Key).toBe('subgraph-default-a.lonely'); + expect(result.warnings).toStrictEqual([ + requestScopedSingleFieldWarning({ + subgraphName: 'subgraph-default-a', + key: 'lonely', + fieldCoords: 'Query.currentUser', + }), + ]); }); }); diff --git a/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go b/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go index 16a35f8d04..711017cdbf 100644 --- a/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go +++ b/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go @@ -1235,9 +1235,9 @@ type EntityCachingConfiguration struct { // Per-Mutation/Subscription-field cache population configs (from @openfed__cachePopulate) CachePopulateConfigurations []*CachePopulateConfiguration `protobuf:"bytes,3,rep,name=cache_populate_configurations,json=cachePopulateConfigurations,proto3" json:"cache_populate_configurations,omitempty"` // Request-scoped field configurations (from @openfed__requestScoped directive) - RequestScopedFields []*RequestScopedFieldConfiguration `protobuf:"bytes,4,rep,name=request_scoped_fields,json=requestScopedFields,proto3" json:"request_scoped_fields,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + RequestScopedConfigurations []*RequestScopedConfiguration `protobuf:"bytes,4,rep,name=request_scoped_configurations,json=requestScopedConfigurations,proto3" json:"request_scoped_configurations,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *EntityCachingConfiguration) Reset() { @@ -1291,9 +1291,9 @@ func (x *EntityCachingConfiguration) GetCachePopulateConfigurations() []*CachePo return nil } -func (x *EntityCachingConfiguration) GetRequestScopedFields() []*RequestScopedFieldConfiguration { +func (x *EntityCachingConfiguration) GetRequestScopedConfigurations() []*RequestScopedConfiguration { if x != nil { - return x.RequestScopedFields + return x.RequestScopedConfigurations } return nil } @@ -1526,7 +1526,7 @@ func (x *CachePopulateConfiguration) GetEntityTypeName() string { // @openfed__requestScoped(key: "X") share L1 key "{subgraphName}.X". The first field to resolve // populates L1; subsequent fields with the same key inject from L1 and can skip their // fetch when all required sub-fields are present. -type RequestScopedFieldConfiguration struct { +type RequestScopedConfiguration struct { state protoimpl.MessageState `protogen:"open.v1"` FieldName string `protobuf:"bytes,1,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` TypeName string `protobuf:"bytes,2,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` @@ -1535,20 +1535,20 @@ type RequestScopedFieldConfiguration struct { sizeCache protoimpl.SizeCache } -func (x *RequestScopedFieldConfiguration) Reset() { - *x = RequestScopedFieldConfiguration{} +func (x *RequestScopedConfiguration) Reset() { + *x = RequestScopedConfiguration{} mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *RequestScopedFieldConfiguration) String() string { +func (x *RequestScopedConfiguration) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RequestScopedFieldConfiguration) ProtoMessage() {} +func (*RequestScopedConfiguration) ProtoMessage() {} -func (x *RequestScopedFieldConfiguration) ProtoReflect() protoreflect.Message { +func (x *RequestScopedConfiguration) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1560,26 +1560,26 @@ func (x *RequestScopedFieldConfiguration) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RequestScopedFieldConfiguration.ProtoReflect.Descriptor instead. -func (*RequestScopedFieldConfiguration) Descriptor() ([]byte, []int) { +// Deprecated: Use RequestScopedConfiguration.ProtoReflect.Descriptor instead. +func (*RequestScopedConfiguration) Descriptor() ([]byte, []int) { return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{16} } -func (x *RequestScopedFieldConfiguration) GetFieldName() string { +func (x *RequestScopedConfiguration) GetFieldName() string { if x != nil { return x.FieldName } return "" } -func (x *RequestScopedFieldConfiguration) GetTypeName() string { +func (x *RequestScopedConfiguration) GetTypeName() string { if x != nil { return x.TypeName } return "" } -func (x *RequestScopedFieldConfiguration) GetL1Key() string { +func (x *RequestScopedConfiguration) GetL1Key() string { if x != nil { return x.L1Key } @@ -5062,12 +5062,12 @@ const file_wg_cosmo_node_v1_node_proto_rawDesc = "" + "\x11entity_interfaces\x18\x0e \x03(\v2..wg.cosmo.node.v1.EntityInterfaceConfigurationR\x10entityInterfaces\x12[\n" + "\x11interface_objects\x18\x0f \x03(\v2..wg.cosmo.node.v1.EntityInterfaceConfigurationR\x10interfaceObjects\x12R\n" + "\x12cost_configuration\x18\x10 \x01(\v2#.wg.cosmo.node.v1.CostConfigurationR\x11costConfiguration\x12n\n" + - "\x1centity_caching_configuration\x18\x11 \x01(\v2,.wg.cosmo.node.v1.EntityCachingConfigurationR\x1aentityCachingConfiguration\"\xbc\x03\n" + + "\x1centity_caching_configuration\x18\x11 \x01(\v2,.wg.cosmo.node.v1.EntityCachingConfigurationR\x1aentityCachingConfiguration\"\xc7\x03\n" + "\x1aEntityCachingConfiguration\x12M\n" + "\fentity_cache\x18\x01 \x03(\v2*.wg.cosmo.node.v1.EntityCacheConfigurationR\ventityCache\x12v\n" + "\x1fcache_invalidate_configurations\x18\x02 \x03(\v2..wg.cosmo.node.v1.CacheInvalidateConfigurationR\x1dcacheInvalidateConfigurations\x12p\n" + - "\x1dcache_populate_configurations\x18\x03 \x03(\v2,.wg.cosmo.node.v1.CachePopulateConfigurationR\x1bcachePopulateConfigurations\x12e\n" + - "\x15request_scoped_fields\x18\x04 \x03(\v21.wg.cosmo.node.v1.RequestScopedFieldConfigurationR\x13requestScopedFields\"\x95\x02\n" + + "\x1dcache_populate_configurations\x18\x03 \x03(\v2,.wg.cosmo.node.v1.CachePopulateConfigurationR\x1bcachePopulateConfigurations\x12p\n" + + "\x1drequest_scoped_configurations\x18\x04 \x03(\v2,.wg.cosmo.node.v1.RequestScopedConfigurationR\x1brequestScopedConfigurations\"\x95\x02\n" + "\x18EntityCacheConfiguration\x12\x1b\n" + "\ttype_name\x18\x01 \x01(\tR\btypeName\x12&\n" + "\x0fmax_age_seconds\x18\x02 \x01(\x03R\rmaxAgeSeconds\x12'\n" + @@ -5086,8 +5086,8 @@ const file_wg_cosmo_node_v1_node_proto_rawDesc = "" + "field_name\x18\x01 \x01(\tR\tfieldName\x12%\n" + "\x0eoperation_type\x18\x02 \x01(\tR\roperationType\x12&\n" + "\x0fmax_age_seconds\x18\x03 \x01(\x03R\rmaxAgeSeconds\x12(\n" + - "\x10entity_type_name\x18\x04 \x01(\tR\x0eentityTypeName\"t\n" + - "\x1fRequestScopedFieldConfiguration\x12\x1d\n" + + "\x10entity_type_name\x18\x04 \x01(\tR\x0eentityTypeName\"o\n" + + "\x1aRequestScopedConfiguration\x12\x1d\n" + "\n" + "field_name\x18\x01 \x01(\tR\tfieldName\x12\x1b\n" + "\ttype_name\x18\x02 \x01(\tR\btypeName\x12\x15\n" + @@ -5456,7 +5456,7 @@ var file_wg_cosmo_node_v1_node_proto_goTypes = []any{ (*EntityCacheConfiguration)(nil), // 21: wg.cosmo.node.v1.EntityCacheConfiguration (*CacheInvalidateConfiguration)(nil), // 22: wg.cosmo.node.v1.CacheInvalidateConfiguration (*CachePopulateConfiguration)(nil), // 23: wg.cosmo.node.v1.CachePopulateConfiguration - (*RequestScopedFieldConfiguration)(nil), // 24: wg.cosmo.node.v1.RequestScopedFieldConfiguration + (*RequestScopedConfiguration)(nil), // 24: wg.cosmo.node.v1.RequestScopedConfiguration (*CostConfiguration)(nil), // 25: wg.cosmo.node.v1.CostConfiguration (*FieldWeightConfiguration)(nil), // 26: wg.cosmo.node.v1.FieldWeightConfiguration (*FieldListSizeConfiguration)(nil), // 27: wg.cosmo.node.v1.FieldListSizeConfiguration @@ -5555,7 +5555,7 @@ var file_wg_cosmo_node_v1_node_proto_depIdxs = []int32{ 21, // 28: wg.cosmo.node.v1.EntityCachingConfiguration.entity_cache:type_name -> wg.cosmo.node.v1.EntityCacheConfiguration 22, // 29: wg.cosmo.node.v1.EntityCachingConfiguration.cache_invalidate_configurations:type_name -> wg.cosmo.node.v1.CacheInvalidateConfiguration 23, // 30: wg.cosmo.node.v1.EntityCachingConfiguration.cache_populate_configurations:type_name -> wg.cosmo.node.v1.CachePopulateConfiguration - 24, // 31: wg.cosmo.node.v1.EntityCachingConfiguration.request_scoped_fields:type_name -> wg.cosmo.node.v1.RequestScopedFieldConfiguration + 24, // 31: wg.cosmo.node.v1.EntityCachingConfiguration.request_scoped_configurations:type_name -> wg.cosmo.node.v1.RequestScopedConfiguration 26, // 32: wg.cosmo.node.v1.CostConfiguration.field_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration 27, // 33: wg.cosmo.node.v1.CostConfiguration.list_sizes:type_name -> wg.cosmo.node.v1.FieldListSizeConfiguration 82, // 34: wg.cosmo.node.v1.CostConfiguration.type_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry diff --git a/connect/src/wg/cosmo/node/v1/node_pb.ts b/connect/src/wg/cosmo/node/v1/node_pb.ts index 1447f5b07e..01c8658e7a 100644 --- a/connect/src/wg/cosmo/node/v1/node_pb.ts +++ b/connect/src/wg/cosmo/node/v1/node_pb.ts @@ -924,9 +924,9 @@ export class EntityCachingConfiguration extends Message) { super(); @@ -939,7 +939,7 @@ export class EntityCachingConfiguration extends Message): EntityCachingConfiguration { @@ -1153,9 +1153,9 @@ export class CachePopulateConfiguration extends Message { +export class RequestScopedConfiguration extends Message { /** * @generated from field: string field_name = 1; */ @@ -1171,33 +1171,33 @@ export class RequestScopedFieldConfiguration extends Message) { + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "wg.cosmo.node.v1.RequestScopedFieldConfiguration"; + static readonly typeName = "wg.cosmo.node.v1.RequestScopedConfiguration"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "field_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, { no: 2, name: "type_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, { no: 3, name: "l1_key", kind: "scalar", T: 9 /* ScalarType.STRING */ }, ]); - static fromBinary(bytes: Uint8Array, options?: Partial): RequestScopedFieldConfiguration { - return new RequestScopedFieldConfiguration().fromBinary(bytes, options); + static fromBinary(bytes: Uint8Array, options?: Partial): RequestScopedConfiguration { + return new RequestScopedConfiguration().fromBinary(bytes, options); } - static fromJson(jsonValue: JsonValue, options?: Partial): RequestScopedFieldConfiguration { - return new RequestScopedFieldConfiguration().fromJson(jsonValue, options); + static fromJson(jsonValue: JsonValue, options?: Partial): RequestScopedConfiguration { + return new RequestScopedConfiguration().fromJson(jsonValue, options); } - static fromJsonString(jsonString: string, options?: Partial): RequestScopedFieldConfiguration { - return new RequestScopedFieldConfiguration().fromJsonString(jsonString, options); + static fromJsonString(jsonString: string, options?: Partial): RequestScopedConfiguration { + return new RequestScopedConfiguration().fromJsonString(jsonString, options); } - static equals(a: RequestScopedFieldConfiguration | PlainMessage | undefined, b: RequestScopedFieldConfiguration | PlainMessage | undefined): boolean { - return proto3.util.equals(RequestScopedFieldConfiguration, a, b); + static equals(a: RequestScopedConfiguration | PlainMessage | undefined, b: RequestScopedConfiguration | PlainMessage | undefined): boolean { + return proto3.util.equals(RequestScopedConfiguration, a, b); } } diff --git a/proto/wg/cosmo/node/v1/node.proto b/proto/wg/cosmo/node/v1/node.proto index 854fe6b51e..e75b2d5e6e 100644 --- a/proto/wg/cosmo/node/v1/node.proto +++ b/proto/wg/cosmo/node/v1/node.proto @@ -104,7 +104,7 @@ message EntityCachingConfiguration { // Per-Mutation/Subscription-field cache population configs (from @openfed__cachePopulate) repeated CachePopulateConfiguration cache_populate_configurations = 3; // Request-scoped field configurations (from @openfed__requestScoped directive) - repeated RequestScopedFieldConfiguration request_scoped_fields = 4; + repeated RequestScopedConfiguration request_scoped_configurations = 4; } // Per-entity declaration for @openfed__entityCache. Marks a @key entity type as cacheable so the @@ -145,7 +145,7 @@ message CachePopulateConfiguration { // @openfed__requestScoped(key: "X") share L1 key "{subgraphName}.X". The first field to resolve // populates L1; subsequent fields with the same key inject from L1 and can skip their // fetch when all required sub-fields are present. -message RequestScopedFieldConfiguration { +message RequestScopedConfiguration { string field_name = 1; string type_name = 2; string l1_key = 3; diff --git a/router/gen/proto/wg/cosmo/node/v1/node.pb.go b/router/gen/proto/wg/cosmo/node/v1/node.pb.go index 838521627d..af73ae9b12 100644 --- a/router/gen/proto/wg/cosmo/node/v1/node.pb.go +++ b/router/gen/proto/wg/cosmo/node/v1/node.pb.go @@ -1235,9 +1235,9 @@ type EntityCachingConfiguration struct { // Per-Mutation/Subscription-field cache population configs (from @openfed__cachePopulate) CachePopulateConfigurations []*CachePopulateConfiguration `protobuf:"bytes,3,rep,name=cache_populate_configurations,json=cachePopulateConfigurations,proto3" json:"cache_populate_configurations,omitempty"` // Request-scoped field configurations (from @openfed__requestScoped directive) - RequestScopedFields []*RequestScopedFieldConfiguration `protobuf:"bytes,4,rep,name=request_scoped_fields,json=requestScopedFields,proto3" json:"request_scoped_fields,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + RequestScopedConfigurations []*RequestScopedConfiguration `protobuf:"bytes,4,rep,name=request_scoped_configurations,json=requestScopedConfigurations,proto3" json:"request_scoped_configurations,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *EntityCachingConfiguration) Reset() { @@ -1291,9 +1291,9 @@ func (x *EntityCachingConfiguration) GetCachePopulateConfigurations() []*CachePo return nil } -func (x *EntityCachingConfiguration) GetRequestScopedFields() []*RequestScopedFieldConfiguration { +func (x *EntityCachingConfiguration) GetRequestScopedConfigurations() []*RequestScopedConfiguration { if x != nil { - return x.RequestScopedFields + return x.RequestScopedConfigurations } return nil } @@ -1526,7 +1526,7 @@ func (x *CachePopulateConfiguration) GetEntityTypeName() string { // @openfed__requestScoped(key: "X") share L1 key "{subgraphName}.X". The first field to resolve // populates L1; subsequent fields with the same key inject from L1 and can skip their // fetch when all required sub-fields are present. -type RequestScopedFieldConfiguration struct { +type RequestScopedConfiguration struct { state protoimpl.MessageState `protogen:"open.v1"` FieldName string `protobuf:"bytes,1,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` TypeName string `protobuf:"bytes,2,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` @@ -1535,20 +1535,20 @@ type RequestScopedFieldConfiguration struct { sizeCache protoimpl.SizeCache } -func (x *RequestScopedFieldConfiguration) Reset() { - *x = RequestScopedFieldConfiguration{} +func (x *RequestScopedConfiguration) Reset() { + *x = RequestScopedConfiguration{} mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *RequestScopedFieldConfiguration) String() string { +func (x *RequestScopedConfiguration) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RequestScopedFieldConfiguration) ProtoMessage() {} +func (*RequestScopedConfiguration) ProtoMessage() {} -func (x *RequestScopedFieldConfiguration) ProtoReflect() protoreflect.Message { +func (x *RequestScopedConfiguration) ProtoReflect() protoreflect.Message { mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1560,26 +1560,26 @@ func (x *RequestScopedFieldConfiguration) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RequestScopedFieldConfiguration.ProtoReflect.Descriptor instead. -func (*RequestScopedFieldConfiguration) Descriptor() ([]byte, []int) { +// Deprecated: Use RequestScopedConfiguration.ProtoReflect.Descriptor instead. +func (*RequestScopedConfiguration) Descriptor() ([]byte, []int) { return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{16} } -func (x *RequestScopedFieldConfiguration) GetFieldName() string { +func (x *RequestScopedConfiguration) GetFieldName() string { if x != nil { return x.FieldName } return "" } -func (x *RequestScopedFieldConfiguration) GetTypeName() string { +func (x *RequestScopedConfiguration) GetTypeName() string { if x != nil { return x.TypeName } return "" } -func (x *RequestScopedFieldConfiguration) GetL1Key() string { +func (x *RequestScopedConfiguration) GetL1Key() string { if x != nil { return x.L1Key } @@ -5062,12 +5062,12 @@ const file_wg_cosmo_node_v1_node_proto_rawDesc = "" + "\x11entity_interfaces\x18\x0e \x03(\v2..wg.cosmo.node.v1.EntityInterfaceConfigurationR\x10entityInterfaces\x12[\n" + "\x11interface_objects\x18\x0f \x03(\v2..wg.cosmo.node.v1.EntityInterfaceConfigurationR\x10interfaceObjects\x12R\n" + "\x12cost_configuration\x18\x10 \x01(\v2#.wg.cosmo.node.v1.CostConfigurationR\x11costConfiguration\x12n\n" + - "\x1centity_caching_configuration\x18\x11 \x01(\v2,.wg.cosmo.node.v1.EntityCachingConfigurationR\x1aentityCachingConfiguration\"\xbc\x03\n" + + "\x1centity_caching_configuration\x18\x11 \x01(\v2,.wg.cosmo.node.v1.EntityCachingConfigurationR\x1aentityCachingConfiguration\"\xc7\x03\n" + "\x1aEntityCachingConfiguration\x12M\n" + "\fentity_cache\x18\x01 \x03(\v2*.wg.cosmo.node.v1.EntityCacheConfigurationR\ventityCache\x12v\n" + "\x1fcache_invalidate_configurations\x18\x02 \x03(\v2..wg.cosmo.node.v1.CacheInvalidateConfigurationR\x1dcacheInvalidateConfigurations\x12p\n" + - "\x1dcache_populate_configurations\x18\x03 \x03(\v2,.wg.cosmo.node.v1.CachePopulateConfigurationR\x1bcachePopulateConfigurations\x12e\n" + - "\x15request_scoped_fields\x18\x04 \x03(\v21.wg.cosmo.node.v1.RequestScopedFieldConfigurationR\x13requestScopedFields\"\x95\x02\n" + + "\x1dcache_populate_configurations\x18\x03 \x03(\v2,.wg.cosmo.node.v1.CachePopulateConfigurationR\x1bcachePopulateConfigurations\x12p\n" + + "\x1drequest_scoped_configurations\x18\x04 \x03(\v2,.wg.cosmo.node.v1.RequestScopedConfigurationR\x1brequestScopedConfigurations\"\x95\x02\n" + "\x18EntityCacheConfiguration\x12\x1b\n" + "\ttype_name\x18\x01 \x01(\tR\btypeName\x12&\n" + "\x0fmax_age_seconds\x18\x02 \x01(\x03R\rmaxAgeSeconds\x12'\n" + @@ -5086,8 +5086,8 @@ const file_wg_cosmo_node_v1_node_proto_rawDesc = "" + "field_name\x18\x01 \x01(\tR\tfieldName\x12%\n" + "\x0eoperation_type\x18\x02 \x01(\tR\roperationType\x12&\n" + "\x0fmax_age_seconds\x18\x03 \x01(\x03R\rmaxAgeSeconds\x12(\n" + - "\x10entity_type_name\x18\x04 \x01(\tR\x0eentityTypeName\"t\n" + - "\x1fRequestScopedFieldConfiguration\x12\x1d\n" + + "\x10entity_type_name\x18\x04 \x01(\tR\x0eentityTypeName\"o\n" + + "\x1aRequestScopedConfiguration\x12\x1d\n" + "\n" + "field_name\x18\x01 \x01(\tR\tfieldName\x12\x1b\n" + "\ttype_name\x18\x02 \x01(\tR\btypeName\x12\x15\n" + @@ -5456,7 +5456,7 @@ var file_wg_cosmo_node_v1_node_proto_goTypes = []any{ (*EntityCacheConfiguration)(nil), // 21: wg.cosmo.node.v1.EntityCacheConfiguration (*CacheInvalidateConfiguration)(nil), // 22: wg.cosmo.node.v1.CacheInvalidateConfiguration (*CachePopulateConfiguration)(nil), // 23: wg.cosmo.node.v1.CachePopulateConfiguration - (*RequestScopedFieldConfiguration)(nil), // 24: wg.cosmo.node.v1.RequestScopedFieldConfiguration + (*RequestScopedConfiguration)(nil), // 24: wg.cosmo.node.v1.RequestScopedConfiguration (*CostConfiguration)(nil), // 25: wg.cosmo.node.v1.CostConfiguration (*FieldWeightConfiguration)(nil), // 26: wg.cosmo.node.v1.FieldWeightConfiguration (*FieldListSizeConfiguration)(nil), // 27: wg.cosmo.node.v1.FieldListSizeConfiguration @@ -5555,7 +5555,7 @@ var file_wg_cosmo_node_v1_node_proto_depIdxs = []int32{ 21, // 28: wg.cosmo.node.v1.EntityCachingConfiguration.entity_cache:type_name -> wg.cosmo.node.v1.EntityCacheConfiguration 22, // 29: wg.cosmo.node.v1.EntityCachingConfiguration.cache_invalidate_configurations:type_name -> wg.cosmo.node.v1.CacheInvalidateConfiguration 23, // 30: wg.cosmo.node.v1.EntityCachingConfiguration.cache_populate_configurations:type_name -> wg.cosmo.node.v1.CachePopulateConfiguration - 24, // 31: wg.cosmo.node.v1.EntityCachingConfiguration.request_scoped_fields:type_name -> wg.cosmo.node.v1.RequestScopedFieldConfiguration + 24, // 31: wg.cosmo.node.v1.EntityCachingConfiguration.request_scoped_configurations:type_name -> wg.cosmo.node.v1.RequestScopedConfiguration 26, // 32: wg.cosmo.node.v1.CostConfiguration.field_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration 27, // 33: wg.cosmo.node.v1.CostConfiguration.list_sizes:type_name -> wg.cosmo.node.v1.FieldListSizeConfiguration 82, // 34: wg.cosmo.node.v1.CostConfiguration.type_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry diff --git a/shared/src/router-config/builder.ts b/shared/src/router-config/builder.ts index 4e9a552c42..a9c7a0decc 100644 --- a/shared/src/router-config/builder.ts +++ b/shared/src/router-config/builder.ts @@ -38,7 +38,7 @@ import { ImageReference, InternedString, PluginConfiguration, - RequestScopedFieldConfiguration, + RequestScopedConfiguration, RouterConfig, TypeField, } from '@wundergraph/cosmo-connect/dist/node/v1/node_pb'; @@ -87,9 +87,13 @@ function extractEntityCachingConfiguration(dataByTypeName?: Map 0 || cacheInvalidateConfigurations.length > 0 || cachePopulateConfigurations.length > 0 || requestScopedConfigurations.length > 0) { + return new EntityCachingConfiguration({ + entityCache, + cacheInvalidateConfigurations, + cachePopulateConfigurations, + requestScopedConfigurations, + }); } - return new EntityCachingConfiguration({ - entityCache, - cacheInvalidateConfigurations, - cachePopulateConfigurations, - requestScopedFields, - }); } export interface Input { From d2aa192cf7d7a469ee96e40407fd9012d2e54902 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Mon, 22 Jun 2026 21:31:35 +0530 Subject: [PATCH 52/65] fix: review comments --- .../v1/normalization/normalization-factory.ts | 1 - composition/src/v1/warnings/params.ts | 6 --- composition/src/v1/warnings/warnings.ts | 17 -------- .../v1/directives/request-scoped.test.ts | 43 ++++--------------- 4 files changed, 9 insertions(+), 58 deletions(-) diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index 15e8a980c5..385c13330f 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -204,7 +204,6 @@ import { fieldAlreadyProvidedWarning, invalidExternalFieldWarning, nonExternalConditionalFieldWarning, - requestScopedSingleFieldWarning, singleSubgraphInputFieldOneOfWarning, unimplementedInterfaceOutputTypeWarning, } from '../warnings/warnings'; diff --git a/composition/src/v1/warnings/params.ts b/composition/src/v1/warnings/params.ts index 95a42f7152..5e5b5ece75 100644 --- a/composition/src/v1/warnings/params.ts +++ b/composition/src/v1/warnings/params.ts @@ -16,9 +16,3 @@ export type InvalidRepeatedComposedDirectiveWarningParams = { directiveName: DirectiveName; printedDirective: string; }; - -export type RequestScopedSingleFieldWarningParams = { - subgraphName: SubgraphName; - key: string; - fieldCoords: FieldName; -}; diff --git a/composition/src/v1/warnings/warnings.ts b/composition/src/v1/warnings/warnings.ts index 9cbfe0a7fb..4089288f94 100644 --- a/composition/src/v1/warnings/warnings.ts +++ b/composition/src/v1/warnings/warnings.ts @@ -2,7 +2,6 @@ import { Warning } from '../../warnings/types'; import { QUOTATION_JOIN } from '../../utils/string-constants'; import { type InvalidRepeatedComposedDirectiveWarningParams, - type RequestScopedSingleFieldWarningParams, type SingleFederatedInputFieldOneOfWarningParams, type SingleSubgraphInputFieldOneOfWarningParams, } from './params'; @@ -237,19 +236,3 @@ export function invalidRepeatedComposedDirectiveWarning({ }, }); } - -export function requestScopedSingleFieldWarning({ - subgraphName, - key, - fieldCoords, -}: RequestScopedSingleFieldWarningParams): Warning { - return new Warning({ - message: - `@openfed__requestScoped(key: "${key}") is declared on only one field ("${fieldCoords}") in this subgraph.` + - ` The directive is meaningless unless at least 2 fields share the same key so that the second` + - ` and subsequent fields can be served from the per-request L1 cache populated by the first.`, - subgraph: { - name: subgraphName, - }, - }); -} diff --git a/composition/tests/v1/directives/request-scoped.test.ts b/composition/tests/v1/directives/request-scoped.test.ts index d2c442a610..dfe6b3e715 100644 --- a/composition/tests/v1/directives/request-scoped.test.ts +++ b/composition/tests/v1/directives/request-scoped.test.ts @@ -6,15 +6,14 @@ import { invalidRepeatedDirectiveErrorMessage, OPENFED_REQUEST_SCOPED, OPENFED_REQUEST_SCOPED_DEFINITION, - requestScopedSingleFieldWarning, ROUTER_COMPATIBILITY_VERSION_ONE, undefinedRequiredArgumentsErrorMessage, } from '../../../src'; import { createSubgraphWithDefaultName, normalizeSubgraphFailure, normalizeSubgraphSuccess } from '../../utils/utils'; -describe('@openfed__requestScoped', () => { - describe('registry', () => { - test('the directive is materialized in the normalized subgraph output', () => { +describe('@openfed__requestScoped tests', () => { + describe('registry tests', () => { + test('that the directive is materialized in the normalized subgraph output', () => { const { directiveDefinitionByName } = normalizeSubgraphSuccess( createSubgraphWithDefaultName(` type Query { @@ -32,8 +31,8 @@ describe('@openfed__requestScoped', () => { }); }); - describe('configuration extraction', () => { - test('≥ 2 fields sharing the same key produce a subgraph-prefixed l1Key and no warning', () => { + describe('configuration extraction tests', () => { + test('that ≥ 2 fields sharing the same key produce a subgraph-prefixed l1Key and no warning', () => { const result = normalizeSubgraphSuccess( createSubgraphWithDefaultName(` type Query { @@ -56,7 +55,7 @@ describe('@openfed__requestScoped', () => { expect(result.warnings).toHaveLength(0); }); - test('works on a non-entity object type field', () => { + test('that it works on a non-entity object type field', () => { const result = normalizeSubgraphSuccess( createSubgraphWithDefaultName(` type Query { @@ -72,34 +71,10 @@ describe('@openfed__requestScoped', () => { expect(config!.entityCaching!.requestScopedConfigurations![0].fieldName).toBe('currentLocale'); expect(config!.entityCaching!.requestScopedConfigurations![0].l1Key).toBe('subgraph-default-a.locale'); }); - - test('a key declared on only one field still populates config but emits a warning', () => { - const result = normalizeSubgraphSuccess( - createSubgraphWithDefaultName(` - type Query { - currentUser: User @openfed__requestScoped(key: "lonely") - } - type User @key(fields: "id") { - id: ID! - } - `), - ROUTER_COMPATIBILITY_VERSION_ONE, - ); - const config = result.configurationDataByTypeName.get('Query'); - expect(config!.entityCaching?.requestScopedConfigurations).toHaveLength(1); - expect(config!.entityCaching!.requestScopedConfigurations![0].l1Key).toBe('subgraph-default-a.lonely'); - expect(result.warnings).toStrictEqual([ - requestScopedSingleFieldWarning({ - subgraphName: 'subgraph-default-a', - key: 'lonely', - fieldCoords: 'Query.currentUser', - }), - ]); - }); }); - describe('validation', () => { - test('missing key argument is a failure', () => { + describe('validation tests', () => { + test('that a missing key argument is a failure', () => { const { errors } = normalizeSubgraphFailure( createSubgraphWithDefaultName(` type Query { @@ -118,7 +93,7 @@ describe('@openfed__requestScoped', () => { ); }); - test('the directive is not repeatable — two on the same field fails', () => { + test('that the directive is not repeatable — two on the same field fails', () => { const { errors } = normalizeSubgraphFailure( createSubgraphWithDefaultName(` type Query { From 89af114a39cf6d277ebbc22cba7d775064a68251 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Mon, 22 Jun 2026 21:34:24 +0530 Subject: [PATCH 53/65] fix: review comments --- composition/src/v1/normalization/normalization-factory.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index 385c13330f..6b964dfc31 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -4430,7 +4430,6 @@ export class NormalizationFactory { parentData.fieldDataByName.delete(ENTITIES_FIELD); } - const newParentTypeName = getParentTypeName(parentData); const externalInterfaceFieldNames: Array = []; for (const [fieldName, fieldData] of parentData.fieldDataByName) { if (isObject) { @@ -4488,6 +4487,7 @@ export class NormalizationFactory { externalInterfaceFieldsWarning(this.subgraphName, parentTypeName, [...externalInterfaceFieldNames]), ); } + const newParentTypeName = getParentTypeName(parentData); const configurationData = getValueOrDefault(this.configurationDataByTypeName, newParentTypeName, () => newConfigurationData(isEntity, parentTypeName), ); From 7cc280b43ee787fbb402b28d967c46e7bc2c96a1 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Mon, 22 Jun 2026 21:37:23 +0530 Subject: [PATCH 54/65] fix: review comments --- composition/src/v1/warnings/params.ts | 6 +++++ composition/src/v1/warnings/warnings.ts | 17 ++++++++++++ .../v1/directives/request-scoped.test.ts | 26 ++++++++++++++++++- shared/src/router-config/builder.ts | 13 +++++++--- 4 files changed, 58 insertions(+), 4 deletions(-) diff --git a/composition/src/v1/warnings/params.ts b/composition/src/v1/warnings/params.ts index 5e5b5ece75..bae96d98c2 100644 --- a/composition/src/v1/warnings/params.ts +++ b/composition/src/v1/warnings/params.ts @@ -16,3 +16,9 @@ export type InvalidRepeatedComposedDirectiveWarningParams = { directiveName: DirectiveName; printedDirective: string; }; + +export type RequestScopedSingleFieldWarningParams = { + subgraphName: SubgraphName; + key: string; + fieldCoords: string; +}; diff --git a/composition/src/v1/warnings/warnings.ts b/composition/src/v1/warnings/warnings.ts index 4089288f94..31438113d8 100644 --- a/composition/src/v1/warnings/warnings.ts +++ b/composition/src/v1/warnings/warnings.ts @@ -2,6 +2,7 @@ import { Warning } from '../../warnings/types'; import { QUOTATION_JOIN } from '../../utils/string-constants'; import { type InvalidRepeatedComposedDirectiveWarningParams, + type RequestScopedSingleFieldWarningParams, type SingleFederatedInputFieldOneOfWarningParams, type SingleSubgraphInputFieldOneOfWarningParams, } from './params'; @@ -192,6 +193,22 @@ export function singleSubgraphInputFieldOneOfWarning({ }); } +export function requestScopedSingleFieldWarning({ + subgraphName, + key, + fieldCoords, +}: RequestScopedSingleFieldWarningParams): Warning { + return new Warning({ + message: + `@openfed__requestScoped(key: "${key}") is declared on only one field ("${fieldCoords}") in this subgraph.` + + ` The directive is meaningless unless at least 2 fields share the same key so that the second and` + + ` subsequent fields can be served from the per-request L1 cache populated by the first.`, + subgraph: { + name: subgraphName, + }, + }); +} + export function singleFederatedInputFieldOneOfWarning({ fieldName, typeName, diff --git a/composition/tests/v1/directives/request-scoped.test.ts b/composition/tests/v1/directives/request-scoped.test.ts index dfe6b3e715..19cb72838d 100644 --- a/composition/tests/v1/directives/request-scoped.test.ts +++ b/composition/tests/v1/directives/request-scoped.test.ts @@ -1,11 +1,11 @@ import { describe, expect, test } from 'vitest'; import { - DIRECTIVE_DEFINITION_BY_NAME, FIRST_ORDINAL, invalidDirectiveError, invalidRepeatedDirectiveErrorMessage, OPENFED_REQUEST_SCOPED, OPENFED_REQUEST_SCOPED_DEFINITION, + requestScopedSingleFieldWarning, ROUTER_COMPATIBILITY_VERSION_ONE, undefinedRequiredArgumentsErrorMessage, } from '../../../src'; @@ -71,6 +71,30 @@ describe('@openfed__requestScoped tests', () => { expect(config!.entityCaching!.requestScopedConfigurations![0].fieldName).toBe('currentLocale'); expect(config!.entityCaching!.requestScopedConfigurations![0].l1Key).toBe('subgraph-default-a.locale'); }); + + test('that a key declared on only one field still populates config but emits a warning', () => { + const result = normalizeSubgraphSuccess( + createSubgraphWithDefaultName(` + type Query { + currentUser: User @openfed__requestScoped(key: "lonely") + } + type User @key(fields: "id") { + id: ID! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + const config = result.configurationDataByTypeName.get('Query'); + expect(config!.entityCaching?.requestScopedConfigurations).toHaveLength(1); + expect(config!.entityCaching!.requestScopedConfigurations![0].l1Key).toBe('subgraph-default-a.lonely'); + expect(result.warnings).toStrictEqual([ + requestScopedSingleFieldWarning({ + subgraphName: 'subgraph-default-a', + key: 'lonely', + fieldCoords: 'Query.currentUser', + }), + ]); + }); }); describe('validation tests', () => { diff --git a/shared/src/router-config/builder.ts b/shared/src/router-config/builder.ts index a9c7a0decc..524f702727 100644 --- a/shared/src/router-config/builder.ts +++ b/shared/src/router-config/builder.ts @@ -80,7 +80,9 @@ function costsToCostConfiguration(costs?: Costs): CostConfiguration | undefined * @returns The `EntityCaching` message, or `undefined` when empty so the field is omitted (like * `costsToCostConfiguration`). */ -function extractEntityCachingConfiguration(dataByTypeName?: Map): EntityCachingConfiguration | undefined { +function extractEntityCachingConfiguration( + dataByTypeName?: Map, +): EntityCachingConfiguration | undefined { if (!dataByTypeName) { return; } @@ -134,8 +136,13 @@ function extractEntityCachingConfiguration(dataByTypeName?: Map 0 || cacheInvalidateConfigurations.length > 0 || cachePopulateConfigurations.length > 0 || requestScopedConfigurations.length > 0) { - return new EntityCachingConfiguration({ + if ( + entityCache.length > 0 || + cacheInvalidateConfigurations.length > 0 || + cachePopulateConfigurations.length > 0 || + requestScopedConfigurations.length > 0 + ) { + return new EntityCachingConfiguration({ entityCache, cacheInvalidateConfigurations, cachePopulateConfigurations, From 93b5cbc7792a53708fcd5f1ee252cff7045d425f Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Mon, 22 Jun 2026 21:44:57 +0530 Subject: [PATCH 55/65] fix: review comments --- .../v1/normalization/normalization-factory.ts | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index 6b964dfc31..66c94401f3 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -204,6 +204,7 @@ import { fieldAlreadyProvidedWarning, invalidExternalFieldWarning, nonExternalConditionalFieldWarning, + requestScopedSingleFieldWarning, singleSubgraphInputFieldOneOfWarning, unimplementedInterfaceOutputTypeWarning, } from '../warnings/warnings'; @@ -509,6 +510,7 @@ export class NormalizationFactory { referencedDirectiveNames = new Set(); referencedTypeNames = new Set(); renamedParentTypeName = ''; + requestScopedFieldCoordsByL1Key = new Map>(); schemaData: SchemaData; subgraphName: SubgraphName; unvalidatedExternalFieldCoords = new Set(); @@ -4255,6 +4257,10 @@ export class NormalizationFactory { newConfigurationData(false, fieldData.renamedParentTypeName), ); getOrInitializeEntityCaching(configurationData).requestScopedConfigurations.push(config); + // Track field coords per L1 key so the single-field warning can be emitted after the walk completes. + getValueOrDefault(this.requestScopedFieldCoordsByL1Key, config.l1Key, () => []).push( + `${config.typeName}.${config.fieldName}`, + ); } addFieldNamesToConfigurationData(fieldDataByFieldName: Map, configurationData: ConfigurationData) { @@ -4541,6 +4547,21 @@ export class NormalizationFactory { } } } + // @openfed__requestScoped is meaningless unless >= 2 fields share a key (there'd be no second reader to + // benefit), so warn for any key used on only one field across the subgraph. extractRequestScopedConfig() + // populated requestScopedFieldCoordsByL1Key during the type walk above. + for (const [l1Key, fieldCoordsList] of this.requestScopedFieldCoordsByL1Key) { + if (fieldCoordsList.length === 1) { + this.warnings.push( + requestScopedSingleFieldWarning({ + subgraphName: this.subgraphName, + // l1Key is `${this.subgraphName}.${key}`, so strip the prefix to recover the original key. + key: l1Key.slice(this.subgraphName.length + 1), + fieldCoords: fieldCoordsList[0], + }), + ); + } + } this.isSubgraphEventDrivenGraph = this.edfsDirectiveReferences.size > 0; // this is where @provides and @requires configurations are added to the ConfigurationData this.addValidConditionalFieldSetConfigurations(); From e137a0f144f2a69406878911209d9b7eedc7c920 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Mon, 22 Jun 2026 22:38:52 +0530 Subject: [PATCH 56/65] fix: review comments --- .../v1/normalization/normalization-factory.ts | 55 +++++++------------ 1 file changed, 20 insertions(+), 35 deletions(-) diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index b64f5f0132..6cf9744736 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -4164,38 +4164,6 @@ export class NormalizationFactory { getOrInitializeEntityCaching(configurationData).entityCacheConfigurations.push(config); } - /** - * Dispatches per-field @openfed__queryCache extraction and @openfed__is placement validation. Must run - * after {@link extractEntityCacheDirective} (reads {@link entityCacheConfigByTypeName}) and after key field - * sets are available. @openfed__cacheInvalidate/@openfed__cachePopulate are extracted inline during the - * parent walk (see {@link extractCacheInvalidateConfig}/{@link extractCachePopulateConfig}). All object types - * are walked, not just root operation types: @openfed__queryCache is declared `on FIELD_DEFINITION`, so it - * can be (mis)placed on any field. `getOperationTypeNodeForRootTypeName()` returns undefined for non-root - * types; the extractor then reports the misplacement via its operation-type check. - */ - processRootFieldCacheDirectives() { - for (const [parentTypeName, parentData] of this.parentDefinitionDataByTypeName) { - if (parentData.kind !== Kind.OBJECT_TYPE_DEFINITION) { - continue; - } - const operationType = this.getOperationTypeNodeForRootTypeName(parentTypeName); - // A renamed root type (e.g. `schema { query: MyQuery }`) is keyed in configurationDataByTypeName under - // its federated/canonical name (Query/Mutation/Subscription) by every other config writer (keys, provides, - // the root-node lookup). Cache configs must use the same key, or the router reads the canonical node and - // never sees them. - const configurationTypeName = getParentTypeName(parentData); - - for (const [fieldName, fieldData] of parentData.fieldDataByName) { - const fieldCoords = `${parentTypeName}.${fieldName}`; - const hasQueryCache = fieldData.directivesByName.has(OPENFED_QUERY_CACHE); - if (hasQueryCache) { - this.extractQueryCacheConfig(parentTypeName, configurationTypeName, fieldName, fieldData, operationType); - } - this.validateIsDirectivePlacement(fieldCoords, fieldData, hasQueryCache); - } - } - } - extractCacheInvalidateConfig(fieldData: FieldData) { if (!fieldData.directivesByName.has(OPENFED_CACHE_INVALIDATE)) { return; @@ -5441,6 +5409,26 @@ export class NormalizationFactory { } this.extractRequestScopedConfig(fieldData); + + // @openfed__queryCache extraction and @openfed__is placement validation. Key field sets and + // entity-cache configs are already finalized at this point in normalize() (populated by + // upsertParentsAndChildren and extractEntityCacheDirective, invalid keys pruned by + // evaluateExternalKeyFields), so queryCache can read keyFieldSetDatasByTypeName to build + // argument→key mappings. + const hasQueryCache = fieldData.directivesByName.has(OPENFED_QUERY_CACHE); + if (hasQueryCache) { + // A renamed root type (e.g. `schema { query: MyQuery }`) is keyed in configurationDataByTypeName + // under its federated/canonical name (Query/Mutation/Subscription) by every other config writer. + // Cache configs must use the same key, or the router reads the canonical node and never sees them. + this.extractQueryCacheConfig( + parentTypeName, + getParentTypeName(parentData), + fieldName, + fieldData, + this.getOperationTypeNodeForRootTypeName(parentTypeName), + ); + } + this.validateIsDirectivePlacement(`${parentTypeName}.${fieldName}`, fieldData, hasQueryCache); } else if (fieldData.externalFieldDataBySubgraphName.get(this.subgraphName)?.isDefinedExternal) { externalInterfaceFieldNames.push(fieldName); } @@ -5551,9 +5539,6 @@ export class NormalizationFactory { this.addValidConditionalFieldSetConfigurations(); // this is where @key configurations are added to the ConfigurationData this.addValidKeyFieldSetConfigurations(); - // @openfed__queryCache extraction and @openfed__is placement validation — must run after key field sets - // are available (queryCache reads keyFieldSetDatasByTypeName to build argument→key mappings) - this.processRootFieldCacheDirectives(); // Check that explicitly defined operations types are valid objects and that their fields are also valid for (const operationType of Object.values(OperationTypeNode)) { const operationTypeNode = this.schemaData.operationTypes.get(operationType); From ba1f0542d39eebc1aba0cbfd83c95f0774dc9ae0 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Mon, 22 Jun 2026 22:51:09 +0530 Subject: [PATCH 57/65] fix: review comments --- .../src/v1/normalization/normalization-factory.ts | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index 6cf9744736..f162cd1e51 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -4353,10 +4353,7 @@ export class NormalizationFactory { entityCaching.queryCacheConfigurations = [...(entityCaching.queryCacheConfigurations ?? []), config]; } - validateIsDirectivePlacement(fieldCoords: string, fieldData: FieldData, hasQueryCache: boolean) { - if (hasQueryCache) { - return; - } + validateIsDirectivePlacement(fieldCoords: string, fieldData: FieldData) { for (const [argumentName, argumentData] of fieldData.argumentDataByName) { if (!argumentData.directivesByName.has(OPENFED_IS)) { continue; @@ -5415,8 +5412,7 @@ export class NormalizationFactory { // upsertParentsAndChildren and extractEntityCacheDirective, invalid keys pruned by // evaluateExternalKeyFields), so queryCache can read keyFieldSetDatasByTypeName to build // argument→key mappings. - const hasQueryCache = fieldData.directivesByName.has(OPENFED_QUERY_CACHE); - if (hasQueryCache) { + if (fieldData.directivesByName.has(OPENFED_QUERY_CACHE)) { // A renamed root type (e.g. `schema { query: MyQuery }`) is keyed in configurationDataByTypeName // under its federated/canonical name (Query/Mutation/Subscription) by every other config writer. // Cache configs must use the same key, or the router reads the canonical node and never sees them. @@ -5427,8 +5423,11 @@ export class NormalizationFactory { fieldData, this.getOperationTypeNodeForRootTypeName(parentTypeName), ); + } else { + // @openfed__is on an argument is only valid alongside @openfed__queryCache on the field, so any + // @openfed__is here (no queryCache) is a misplacement. + this.validateIsDirectivePlacement(`${parentTypeName}.${fieldName}`, fieldData); } - this.validateIsDirectivePlacement(`${parentTypeName}.${fieldName}`, fieldData, hasQueryCache); } else if (fieldData.externalFieldDataBySubgraphName.get(this.subgraphName)?.isDefinedExternal) { externalInterfaceFieldNames.push(fieldName); } From 43e774304950bf0845a49a3cfdedc2bff89ed995 Mon Sep 17 00:00:00 2001 From: Aenimus Date: Mon, 22 Jun 2026 18:48:45 +0100 Subject: [PATCH 58/65] chore: refactor --- composition/src/errors/errors.ts | 32 ++-- composition/src/errors/types/params.ts | 4 +- composition/src/router-configuration/types.ts | 10 +- composition/src/router-configuration/utils.ts | 3 +- .../v1/normalization/normalization-factory.ts | 144 +++++++++------- .../src/v1/normalization/types/types.ts | 5 +- .../v1/directives/cache-invalidate.test.ts | 18 +- .../v1/directives/cache-populate.test.ts | 157 ++++++++++-------- shared/src/router-config/builder.ts | 35 ++-- 9 files changed, 218 insertions(+), 190 deletions(-) diff --git a/composition/src/errors/errors.ts b/composition/src/errors/errors.ts index af9f4b7ba8..6c7d4ff38f 100644 --- a/composition/src/errors/errors.ts +++ b/composition/src/errors/errors.ts @@ -6,7 +6,7 @@ import { type ObjectDefinitionData, } from '../schema-building/types/types'; import { - type CacheInvalidateOnNonEntityReturnTypeErrorParams, + type InvalidEntityReturnTypeErrorParams, type IncompatibleMergedTypesErrorParams, type IncompatibleParentTypeMergeErrorParams, type IncompatibleTypeWithProvidesErrorMessageParams, @@ -2056,7 +2056,7 @@ export function entityCacheWithoutKeyErrorMessage(typeName: TypeName): string { return `Object "${typeName}" does not define a "@key" directive.`; } -export function maxAgeNotPositiveIntegerErrorMessage(value: number): string { +export function maxAgeNotPositiveIntegerErrorMessage(value: number | string): string { return `The argument "maxAge" must be provided a positive integer; received "${value}".`; } @@ -2064,28 +2064,20 @@ export function negativeCacheTTLNotNonNegativeIntegerErrorMessage(value: number) return `The argument "negativeCacheTTL" must be provided zero or a positive integer; received "${value}".`; } -export function cacheInvalidateOnNonMutationSubscriptionFieldErrorMessage(fieldCoords: string): string { - return `Coordinates "${fieldCoords}" are not a Mutation or Subscription root field.`; +export function invalidMutationOrSubscriptionFieldCoordsErrorMessage(fieldCoords: string): string { + return `Field coordinates "${fieldCoords}" are not a Mutation or Subscription root field.`; } -export function cacheInvalidateOnNonEntityReturnTypeErrorMessage({ +export function invalidEntityReturnTypeErrorMessage({ fieldCoords, - returnType, -}: CacheInvalidateOnNonEntityReturnTypeErrorParams): string { - return `Coordinates "${fieldCoords}" return non-entity type "${returnType}".`; + returnTypeName, +}: InvalidEntityReturnTypeErrorParams): string { + return `Field coordinates "${fieldCoords}" return non-entity type "${returnTypeName}".`; } -export function cachePopulateOnNonMutationSubscriptionFieldErrorMessage(fieldCoords: string): string { - return `@openfed__cachePopulate is only valid on Mutation or Subscription fields, found on "${fieldCoords}".`; -} - -export function cachePopulateOnNonEntityReturnTypeErrorMessage(returnType: string): string { - return `@openfed__cachePopulate returns non-entity type "${returnType}".`; -} - -export function cacheInvalidateAndPopulateMutualExclusionErrorMessage(fieldCoords: string): string { - return ( - `Field "${fieldCoords}" has both @openfed__cacheInvalidate and @openfed__cachePopulate.` + - ` A field must use one or the other, not both.` +export function invalidMutuallyExclusiveCacheDirectivesError(fieldCoords: string): Error { + return new Error( + `Field coordinates "${fieldCoords}" define both mutually exclusive directives "@openfed__cacheInvalidate"` + + ` and "@openfed__cachePopulate".`, ); } diff --git a/composition/src/errors/types/params.ts b/composition/src/errors/types/params.ts index 61c4db482e..826aa98382 100644 --- a/composition/src/errors/types/params.ts +++ b/composition/src/errors/types/params.ts @@ -95,7 +95,7 @@ export type InvalidArgumentValueErrorParams = { expectedTypeString: string; }; -export type CacheInvalidateOnNonEntityReturnTypeErrorParams = { +export type InvalidEntityReturnTypeErrorParams = { fieldCoords: string; - returnType: string; + returnTypeName: string; }; diff --git a/composition/src/router-configuration/types.ts b/composition/src/router-configuration/types.ts index bc6609afcf..e55d3c7da9 100644 --- a/composition/src/router-configuration/types.ts +++ b/composition/src/router-configuration/types.ts @@ -131,20 +131,20 @@ export type CacheInvalidateConfiguration = { // Extracted from @openfed__cachePopulate on Mutation/Subscription fields. // Tells the router to populate the entity cache with the operation's return value. // maxAgeSeconds overrides the entity's default TTL when provided. -export type CachePopulateConfig = { +export type CachePopulateConfiguration = { entityTypeName: TypeName; fieldName: FieldName; - maxAgeSeconds?: number; - operationType: string; + maxAgeSeconds: number; + operationType: OperationTypeNode; }; export type EntityCachingConfiguration = { // Attached to the Mutation/Subscription type's ConfigurationData from @openfed__cacheInvalidate. cacheInvalidateConfigurations: Array; + // Attached to the Mutation/Subscription type's ConfigurationData from @openfed__cachePopulate. + cachePopulateConfigurations: Array; // Attached to an entity type's ConfigurationData (e.g. "Product") from @openfed__entityCache. entityCacheConfigurations: Array; - // Attached to the Mutation/Subscription type's ConfigurationData from @openfed__cachePopulate. - cachePopulateConfigurations: Array; }; export type Costs = { diff --git a/composition/src/router-configuration/utils.ts b/composition/src/router-configuration/utils.ts index 38b493f32e..54fb3b7bf0 100644 --- a/composition/src/router-configuration/utils.ts +++ b/composition/src/router-configuration/utils.ts @@ -20,10 +20,11 @@ export function getOrInitializeEntityCaching(configurationData: ConfigurationDat if (!configurationData.entityCaching) { configurationData.entityCaching = { cacheInvalidateConfigurations: [], - entityCacheConfigurations: [], cachePopulateConfigurations: [], + entityCacheConfigurations: [], }; } + return configurationData.entityCaching; } diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index eaca3c4224..3ebfecf4d1 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -67,8 +67,6 @@ import { newFieldAuthorizationData, } from '../utils/utils'; import { - cacheInvalidateOnNonEntityReturnTypeErrorMessage, - cacheInvalidateOnNonMutationSubscriptionFieldErrorMessage, configureDescriptionNoDescriptionError, costOnInterfaceFieldErrorMessage, duplicateArgumentsError, @@ -93,6 +91,7 @@ import { invalidDirectiveError, invalidDirectiveLocationErrorMessage, invalidEdfsPublishResultObjectErrorMessage, + invalidEntityReturnTypeErrorMessage, invalidEventDirectiveError, invalidEventDrivenGraphError, invalidEventDrivenMutationResponseTypeErrorMessage, @@ -107,6 +106,8 @@ import { invalidInlineFragmentTypeErrorMessage, invalidInterfaceImplementationError, invalidKeyFieldSetsEventDrivenErrorMessage, + invalidMutationOrSubscriptionFieldCoordsErrorMessage, + invalidMutuallyExclusiveCacheDirectivesError, invalidNamedTypeError, invalidNatsStreamConfigurationDefinitionErrorMessage, invalidNatsStreamInputErrorMessage, @@ -172,9 +173,6 @@ import { unknownTypeInFieldSetErrorMessage, unparsableFieldSetErrorMessage, unparsableFieldSetSelectionErrorMessage, - cacheInvalidateAndPopulateMutualExclusionErrorMessage, - cachePopulateOnNonEntityReturnTypeErrorMessage, - cachePopulateOnNonMutationSubscriptionFieldErrorMessage, } from '../../errors/errors'; import { DEPENDENCIES_BY_DIRECTIVE_NAME, @@ -184,6 +182,7 @@ import { import { buildASTSchema } from '../../buildASTSchema/buildASTSchema'; import { type CacheInvalidateConfiguration, + type CachePopulateConfiguration, type ConfigurationData, type Costs, type EntityCacheConfiguration, @@ -192,7 +191,6 @@ import { type FieldWeightConfiguration, type NatsEventType, type RequiredFieldConfiguration, - type CachePopulateConfig, } from '../../router-configuration/types'; import { printTypeNode } from '@graphql-tools/merge'; import { @@ -318,6 +316,7 @@ import { NOT_APPLICABLE, ONE_OF, OPENFED_CACHE_INVALIDATE, + OPENFED_CACHE_POPULATE, OPENFED_ENTITY_CACHE, OPERATION_TO_DEFAULT, OVERRIDE, @@ -356,7 +355,6 @@ import { TOPICS, TYPENAME, WEIGHT, - OPENFED_CACHE_POPULATE, } from '../../utils/string-constants'; import { MAX_INT32 } from '../../utils/integer-constants'; import { @@ -372,6 +370,7 @@ import { } from '../../utils/utils'; import { type AddInputValueDataByNodeParams, + type CachePopulateDirectiveNode, type ComposeDirectiveNode, type ConditionalFieldSetValidationResult, type EntityCacheDirectiveNode, @@ -388,7 +387,6 @@ import { type RecordDirectiveWeightOnFieldParams, type UpsertInputObjectResult, type ValidateDirectiveParams, - type CachePopulateDirectiveNode, } from './types/types'; import { getOrInitializeEntityCaching, @@ -4127,9 +4125,10 @@ export class NormalizationFactory { getOrInitializeEntityCaching(configurationData).entityCacheConfigurations.push(config); } - extractCacheInvalidateConfig(fieldData: FieldData) { + // Returns true if the directive is defined and false otherwise + extractCacheInvalidateConfig(fieldData: FieldData): boolean { if (!fieldData.directivesByName.has(OPENFED_CACHE_INVALIDATE)) { - return; + return false; } const operationType = this.getOperationTypeNodeForRootTypeName(fieldData.originalParentTypeName); @@ -4137,20 +4136,22 @@ export class NormalizationFactory { if (!operationType || operationType === OperationTypeNode.QUERY) { this.errors.push( invalidDirectiveError(OPENFED_CACHE_INVALIDATE, fieldCoords, FIRST_ORDINAL, [ - cacheInvalidateOnNonMutationSubscriptionFieldErrorMessage(fieldCoords), + invalidMutationOrSubscriptionFieldCoordsErrorMessage(fieldCoords), ]), ); - return; + return true; } + const returnTypeName = getTypeNodeNamedTypeName(fieldData.node.type); if (!this.entityCacheConfigByTypeName.has(returnTypeName)) { this.errors.push( invalidDirectiveError(OPENFED_CACHE_INVALIDATE, fieldCoords, FIRST_ORDINAL, [ - cacheInvalidateOnNonEntityReturnTypeErrorMessage({ fieldCoords, returnType: returnTypeName }), + invalidEntityReturnTypeErrorMessage({ fieldCoords, returnTypeName: returnTypeName }), ]), ); - return; + return true; } + const configurationData = getValueOrDefault(this.configurationDataByTypeName, fieldData.renamedParentTypeName, () => newConfigurationData(false, fieldData.renamedParentTypeName), ); @@ -4162,68 +4163,88 @@ export class NormalizationFactory { }; getOrInitializeEntityCaching(configurationData).cacheInvalidateConfigurations.push(config); + return true; } - // Extracts @openfed__cachePopulate from Mutation/Subscription fields. The return type must be a cached - // entity (@key + @openfed__entityCache). maxAge is optional — when absent the router falls back to the - // entity's @openfed__entityCache TTL; when present it must be positive. - extractCachePopulateConfig(fieldData: FieldData) { + /* Extracts @openfed__cachePopulate from Mutation/Subscription fields. + * The return type must be a cached entity (@key & @openfed__entityCache). + * Argument `maxAge` is optional; if absent, the router falls back to the entity's @openfed__entityCache TTL; + * if provided, must be a positive integer. + * + * Returns true if the directive is defined and false otherwise + */ + extractCachePopulateConfig(fieldData: FieldData): boolean { if (!fieldData.directivesByName.has(OPENFED_CACHE_POPULATE)) { - return; + return false; } const fieldCoords = `${fieldData.originalParentTypeName}.${fieldData.name}`; const operationType = this.getOperationTypeNodeForRootTypeName(fieldData.originalParentTypeName); - if (operationType !== OperationTypeNode.MUTATION && operationType !== OperationTypeNode.SUBSCRIPTION) { + if (!operationType || operationType === OperationTypeNode.QUERY) { this.errors.push( invalidDirectiveError(OPENFED_CACHE_POPULATE, fieldCoords, FIRST_ORDINAL, [ - cachePopulateOnNonMutationSubscriptionFieldErrorMessage(fieldCoords), + invalidMutationOrSubscriptionFieldCoordsErrorMessage(fieldCoords), ]), ); - return; + return true; } + const returnTypeName = getTypeNodeNamedTypeName(fieldData.node.type); - if (!this.keyFieldSetDatasByTypeName.has(returnTypeName) || !this.entityCacheConfigByTypeName.has(returnTypeName)) { + const entityCacheConfig = this.entityCacheConfigByTypeName.get(returnTypeName); + if (!entityCacheConfig) { this.errors.push( invalidDirectiveError(OPENFED_CACHE_POPULATE, fieldCoords, FIRST_ORDINAL, [ - cachePopulateOnNonEntityReturnTypeErrorMessage(returnTypeName), + invalidEntityReturnTypeErrorMessage({ fieldCoords, returnTypeName }), ]), ); - return; + return true; } - // validateDirectives() has already guaranteed maxAge is an Int when present, so the generic - // ConstDirectiveNode is narrowed once to the precise typed node — mirroring the other caching - // directives. maxAge is the only argument and is optional. + + /* validateDirectives() has already guaranteed maxAge is an Int when present, so the generic + * ConstDirectiveNode is narrowed once to the precise typed node — mirroring the other caching + * directives. maxAge is the only argument and is optional. + */ const cachePopulateDirective = fieldData.directivesByName.get( OPENFED_CACHE_POPULATE, )![0] as CachePopulateDirectiveNode; - const maxAgeArgument = cachePopulateDirective.arguments.find((arg) => arg.name.value === MAX_AGE); - let maxAgeSeconds: number | undefined; - if (maxAgeArgument) { - const maxAgeRaw = parseInt(maxAgeArgument.value.value, 10); - if (maxAgeRaw <= 0) { - this.errors.push( - invalidDirectiveError(OPENFED_CACHE_POPULATE, fieldCoords, FIRST_ORDINAL, [ - maxAgeNotPositiveIntegerErrorMessage(maxAgeRaw), - ]), - ); - return; - } - maxAgeSeconds = maxAgeRaw; - } - const config: CachePopulateConfig = { - fieldName: fieldData.name, - operationType: operationType === OperationTypeNode.MUTATION ? MUTATION : SUBSCRIPTION, + const config: CachePopulateConfiguration = { entityTypeName: returnTypeName, - maxAgeSeconds, + fieldName: fieldData.name, + operationType, + maxAgeSeconds: entityCacheConfig.maxAgeSeconds, // Set fallback immediately; overridden where appropriate. }; + const maxAgeArgument = cachePopulateDirective.arguments[0]; + if (!maxAgeArgument) { + const configurationData = getValueOrDefault( + this.configurationDataByTypeName, + fieldData.renamedParentTypeName, + () => newConfigurationData(false, fieldData.renamedParentTypeName), + ); + + getOrInitializeEntityCaching(configurationData).cachePopulateConfigurations.push(config); + return true; + } + + config.maxAgeSeconds = parseInt(maxAgeArgument.value.value, 10); + // This syntax handles possible NaN. + if (!(config.maxAgeSeconds > 0)) { + this.errors.push( + invalidDirectiveError(OPENFED_CACHE_POPULATE, fieldCoords, FIRST_ORDINAL, [ + // If null is explicitly provided in GraphQL the value in JS is undefined. + maxAgeNotPositiveIntegerErrorMessage(maxAgeArgument.value.value ?? null), + ]), + ); + return true; + } + const configurationData = getValueOrDefault(this.configurationDataByTypeName, fieldData.renamedParentTypeName, () => newConfigurationData(false, fieldData.renamedParentTypeName), ); getOrInitializeEntityCaching(configurationData).cachePopulateConfigurations.push(config); + return true; } addFieldNamesToConfigurationData(fieldDataByFieldName: Map, configurationData: ConfigurationData) { @@ -4290,6 +4311,19 @@ export class NormalizationFactory { definitions.push(...dependencies); } + // Only Object fields should be passed to this method + handleFieldCacheDirectives(data: FieldData): void { + /* A field can't both evict (@openfed__cacheInvalidate) and write (@openfed__cachePopulate) + * the cache for the same entity, so the two directives are mutually exclusive. + */ + const definesInvalidate = this.extractCacheInvalidateConfig(data); + const definesPopulate = this.extractCachePopulateConfig(data); + if (definesInvalidate && definesPopulate) { + const fieldCoords = `${data.originalParentTypeName}.${data.name}`; + this.errors.push(invalidMutuallyExclusiveCacheDirectivesError(fieldCoords)); + } + } + normalize(document: DocumentNode): NormalizationResult { // Collect any renamed root types upsertDirectiveSchemaAndEntityDefinitions(this, document); @@ -4402,25 +4436,11 @@ export class NormalizationFactory { const externalInterfaceFieldNames: Array = []; for (const [fieldName, fieldData] of parentData.fieldDataByName) { if (isObject) { - // A field can't both evict (@openfed__cacheInvalidate) and write (@openfed__cachePopulate) - // the cache for the same entity, so the two directives are mutually exclusive. - if ( - fieldData.directivesByName.has(OPENFED_CACHE_INVALIDATE) && - fieldData.directivesByName.has(OPENFED_CACHE_POPULATE) - ) { - const fieldCoords = `${fieldData.originalParentTypeName}.${fieldData.name}`; - this.errors.push( - invalidDirectiveError(OPENFED_CACHE_INVALIDATE, fieldCoords, FIRST_ORDINAL, [ - cacheInvalidateAndPopulateMutualExclusionErrorMessage(fieldCoords), - ]), - ); - } else { - this.extractCacheInvalidateConfig(fieldData); - this.extractCachePopulateConfig(fieldData); - } + this.handleFieldCacheDirectives(fieldData); } else if (fieldData.externalFieldDataBySubgraphName.get(this.subgraphName)?.isDefinedExternal) { externalInterfaceFieldNames.push(fieldName); } + // Arguments can only be fully validated once all parents types are known this.validateArguments(fieldData, parentData.kind); // Base Scalars have already been set diff --git a/composition/src/v1/normalization/types/types.ts b/composition/src/v1/normalization/types/types.ts index 39da853fad..bc7bef4ac9 100644 --- a/composition/src/v1/normalization/types/types.ts +++ b/composition/src/v1/normalization/types/types.ts @@ -36,6 +36,7 @@ import { type INCLUDE_HEADERS, type MAX_AGE, type NEGATIVE_CACHE_TTL, + type OPENFED_CACHE_POPULATE, type OPENFED_ENTITY_CACHE, type PARTIAL_CACHE_LOAD, type SHADOW_MODE, @@ -206,13 +207,13 @@ export type ShadowModeArgumentNode = { export type CachePopulateDirectiveNode = { readonly arguments: ReadonlyArray; readonly kind: Kind.DIRECTIVE; - readonly name: NameNode; + readonly name: NameNode & { readonly value: typeof OPENFED_CACHE_POPULATE }; readonly loc?: Location; }; export type CachePopulateArgumentNode = { readonly kind: Kind.ARGUMENT; - readonly name: NameNode; + readonly name: NameNode & { readonly value: typeof MAX_AGE }; // maxAge: Int (optional). validateDirectives() guarantees it's an Int literal when present. readonly value: IntValueNode; readonly loc?: Location; diff --git a/composition/tests/v1/directives/cache-invalidate.test.ts b/composition/tests/v1/directives/cache-invalidate.test.ts index 531b88ea3c..e665359f9c 100644 --- a/composition/tests/v1/directives/cache-invalidate.test.ts +++ b/composition/tests/v1/directives/cache-invalidate.test.ts @@ -15,9 +15,9 @@ import { type TypeName, } from '../../../src'; import { - cacheInvalidateOnNonEntityReturnTypeErrorMessage, - cacheInvalidateOnNonMutationSubscriptionFieldErrorMessage, -} from '../../../src/errors/errors'; + invalidEntityReturnTypeErrorMessage, + invalidMutationOrSubscriptionFieldCoordsErrorMessage, +} from '../../../src'; import { createSubgraphWithDefaultName, normalizeSubgraphFailure, normalizeSubgraphSuccess } from '../../utils/utils'; describe('@openfed__cacheInvalidate directive tests', () => { @@ -160,7 +160,7 @@ describe('@openfed__cacheInvalidate directive tests', () => { expect(errors).toHaveLength(1); expect(errors[0]).toStrictEqual( invalidDirectiveError(OPENFED_CACHE_INVALIDATE, 'Query.product', FIRST_ORDINAL, [ - cacheInvalidateOnNonMutationSubscriptionFieldErrorMessage('Query.product'), + invalidMutationOrSubscriptionFieldCoordsErrorMessage('Query.product'), ]), ); }); @@ -183,9 +183,9 @@ describe('@openfed__cacheInvalidate directive tests', () => { expect(errors).toHaveLength(1); expect(errors[0]).toStrictEqual( invalidDirectiveError(OPENFED_CACHE_INVALIDATE, 'Mutation.updateProduct', FIRST_ORDINAL, [ - cacheInvalidateOnNonEntityReturnTypeErrorMessage({ + invalidEntityReturnTypeErrorMessage({ fieldCoords: 'Mutation.updateProduct', - returnType: 'Result', + returnTypeName: 'Result', }), ]), ); @@ -208,9 +208,9 @@ describe('@openfed__cacheInvalidate directive tests', () => { expect(errors).toHaveLength(1); expect(errors[0]).toStrictEqual( invalidDirectiveError(OPENFED_CACHE_INVALIDATE, 'Mutation.updateProduct', FIRST_ORDINAL, [ - cacheInvalidateOnNonEntityReturnTypeErrorMessage({ + invalidEntityReturnTypeErrorMessage({ fieldCoords: 'Mutation.updateProduct', - returnType: 'Product', + returnTypeName: 'Product', }), ]), ); @@ -235,7 +235,7 @@ describe('@openfed__cacheInvalidate directive tests', () => { expect(errors).toHaveLength(1); expect(errors[0]).toStrictEqual( invalidDirectiveError(OPENFED_CACHE_INVALIDATE, 'Product.related', FIRST_ORDINAL, [ - cacheInvalidateOnNonMutationSubscriptionFieldErrorMessage('Product.related'), + invalidMutationOrSubscriptionFieldCoordsErrorMessage('Product.related'), ]), ); }); diff --git a/composition/tests/v1/directives/cache-populate.test.ts b/composition/tests/v1/directives/cache-populate.test.ts index 957e449833..89b5a8231c 100644 --- a/composition/tests/v1/directives/cache-populate.test.ts +++ b/composition/tests/v1/directives/cache-populate.test.ts @@ -1,27 +1,22 @@ import { describe, expect, test } from 'vitest'; import { - type BatchNormalizationSuccess, - BatchNormalizer, - OPENFED_CACHE_INVALIDATE, - OPENFED_CACHE_POPULATE, - type CachePopulateConfig, + type CachePopulateConfiguration, type ConfigurationData, FIRST_ORDINAL, invalidDirectiveError, + invalidEntityReturnTypeErrorMessage, + invalidMutationOrSubscriptionFieldCoordsErrorMessage, + invalidMutuallyExclusiveCacheDirectivesError, + maxAgeNotPositiveIntegerErrorMessage, MUTATION, + OPENFED_CACHE_POPULATE, ROUTER_COMPATIBILITY_VERSION_ONE, type Subgraph, - subgraphValidationError, SUBSCRIPTION, type TypeName, } from '../../../src'; -import { - cacheInvalidateAndPopulateMutualExclusionErrorMessage, - cachePopulateOnNonEntityReturnTypeErrorMessage, - cachePopulateOnNonMutationSubscriptionFieldErrorMessage, - maxAgeNotPositiveIntegerErrorMessage, -} from '../../../src/errors/errors'; import { createSubgraphWithDefaultName, normalizeSubgraphFailure, normalizeSubgraphSuccess } from '../../utils/utils'; +import { OperationTypeNode } from 'graphql'; describe('@openfed__cachePopulate tests', () => { describe('Mutation fields tests', () => { @@ -59,31 +54,6 @@ describe('@openfed__cachePopulate tests', () => { expect(schema).toBeDefined(); }); - test('that a config without maxAge leaves maxAgeSeconds undefined', () => { - const config = getConfigForType( - createSubgraphWithDefaultName(` - type Query { dummy: String! } - type Mutation { - createProduct(name: String!): Product @openfed__cachePopulate - } - type Product @key(fields: "id") @openfed__entityCache(maxAge: 60) { - id: ID! - name: String! - } - `), - MUTATION, - ); - expect(config).toBeDefined(); - expect(config!.entityCaching?.cachePopulateConfigurations).toStrictEqual([ - { - fieldName: 'createProduct', - operationType: MUTATION, - entityTypeName: 'Product', - maxAgeSeconds: undefined, - }, - ] satisfies CachePopulateConfig[]); - }); - test('that a config with an explicit maxAge override is produced', () => { const config = getConfigForType( createSubgraphWithDefaultName(` @@ -101,12 +71,12 @@ describe('@openfed__cachePopulate tests', () => { expect(config).toBeDefined(); expect(config!.entityCaching?.cachePopulateConfigurations).toStrictEqual([ { - fieldName: 'createProduct', - operationType: MUTATION, entityTypeName: 'Product', + fieldName: 'createProduct', maxAgeSeconds: 120, + operationType: OperationTypeNode.MUTATION, }, - ] satisfies CachePopulateConfig[]); + ] satisfies Array); }); test('that a renamed Mutation root type keys the config under the canonical name', () => { @@ -129,12 +99,12 @@ describe('@openfed__cachePopulate tests', () => { expect(config!.typeName).toBe(MUTATION); expect(config!.entityCaching?.cachePopulateConfigurations).toStrictEqual([ { - fieldName: 'createProduct', - operationType: MUTATION, entityTypeName: 'Product', - maxAgeSeconds: undefined, + fieldName: 'createProduct', + maxAgeSeconds: 60, + operationType: OperationTypeNode.MUTATION, }, - ] satisfies CachePopulateConfig[]); + ] satisfies Array); expect(getConfigForType(subgraph, 'NewMutations')).toBeUndefined(); }); }); @@ -157,7 +127,7 @@ describe('@openfed__cachePopulate tests', () => { expect(schema).toBeDefined(); }); - test('that it produces the correct config', () => { + test('that if maxAge is not provided, the value falls back to the entityCache maxAge', () => { const config = getConfigForType( createSubgraphWithDefaultName(` type Query { dummy: String! } @@ -174,12 +144,12 @@ describe('@openfed__cachePopulate tests', () => { expect(config).toBeDefined(); expect(config!.entityCaching?.cachePopulateConfigurations).toStrictEqual([ { - fieldName: 'itemCreated', - operationType: SUBSCRIPTION, entityTypeName: 'Product', - maxAgeSeconds: undefined, + fieldName: 'itemCreated', + maxAgeSeconds: 60, + operationType: OperationTypeNode.SUBSCRIPTION, }, - ] satisfies CachePopulateConfig[]); + ] satisfies Array); }); }); @@ -200,7 +170,7 @@ describe('@openfed__cachePopulate tests', () => { expect(errors).toHaveLength(1); expect(errors[0]).toStrictEqual( invalidDirectiveError(OPENFED_CACHE_POPULATE, 'Query.product', FIRST_ORDINAL, [ - cachePopulateOnNonMutationSubscriptionFieldErrorMessage('Query.product'), + invalidMutationOrSubscriptionFieldCoordsErrorMessage('Query.product'), ]), ); }); @@ -221,9 +191,10 @@ describe('@openfed__cachePopulate tests', () => { ROUTER_COMPATIBILITY_VERSION_ONE, ); expect(errors).toHaveLength(1); + const fieldCoords = 'Mutation.createProduct'; expect(errors[0]).toStrictEqual( - invalidDirectiveError(OPENFED_CACHE_POPULATE, 'Mutation.createProduct', FIRST_ORDINAL, [ - cachePopulateOnNonEntityReturnTypeErrorMessage('Result'), + invalidDirectiveError(OPENFED_CACHE_POPULATE, fieldCoords, FIRST_ORDINAL, [ + invalidEntityReturnTypeErrorMessage({ fieldCoords, returnTypeName: 'Result' }), ]), ); }); @@ -253,9 +224,8 @@ describe('@openfed__cachePopulate tests', () => { test('that an invalid maxAge does not produce a config (regression)', () => { // Regression: a maxAge of 0 once emitted a cachePopulate config despite failing validation. // Composition now fails outright, so assert exactly the one @openfed__cachePopulate error. - const result = new BatchNormalizer({ - subgraphs: [ - createSubgraphWithDefaultName(` + const { errors, warnings } = normalizeSubgraphFailure( + createSubgraphWithDefaultName(` type Query { dummy: String! } type Mutation { createProduct(name: String!): Product @openfed__cachePopulate(maxAge: 0) @@ -265,18 +235,16 @@ describe('@openfed__cachePopulate tests', () => { name: String! } `), - ], - }).batchNormalize(); - expect(result.success).toBe(false); - if (result.success) return; - expect(result.errors).toHaveLength(1); - expect(result.errors[0]).toStrictEqual( - subgraphValidationError('subgraph-default-a', [ - invalidDirectiveError(OPENFED_CACHE_POPULATE, 'Mutation.createProduct', FIRST_ORDINAL, [ - maxAgeNotPositiveIntegerErrorMessage(0), - ]), - ]), + ROUTER_COMPATIBILITY_VERSION_ONE, ); + + expect(errors).toHaveLength(1); + expect(errors).toStrictEqual([ + invalidDirectiveError(OPENFED_CACHE_POPULATE, 'Mutation.createProduct', FIRST_ORDINAL, [ + maxAgeNotPositiveIntegerErrorMessage(0), + ]), + ]); + expect(warnings).toHaveLength(0); }); test('that it rejects coexisting @openfed__cacheInvalidate and @openfed__cachePopulate on the same field', () => { @@ -295,9 +263,55 @@ describe('@openfed__cachePopulate tests', () => { ROUTER_COMPATIBILITY_VERSION_ONE, ); expect(errors).toHaveLength(1); + expect(errors[0]).toStrictEqual(invalidMutuallyExclusiveCacheDirectivesError('Mutation.updateProduct')); + }); + + test('that if maxAge is not provided, the value falls back to the entityCache maxAge', () => { + const subgraph = createSubgraphWithDefaultName(` + type Query { + dummy: String! + } + + type Mutation { + createProduct(name: String!): Product @openfed__cachePopulate + } + + type Product @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + name: String! + } + `); + const config = getConfigForType(subgraph, MUTATION); + expect(config).toBeDefined(); + expect(config!.entityCaching?.cachePopulateConfigurations).toStrictEqual([ + { + entityTypeName: 'Product', + fieldName: 'createProduct', + maxAgeSeconds: 60, + operationType: OperationTypeNode.MUTATION, + }, + ] satisfies Array); + }); + + test('that an error is returned if maxAge is provided as null', () => { + // A mutation can't both evict and write to the cache for the same entity + const { errors } = normalizeSubgraphFailure( + createSubgraphWithDefaultName(` + type Query { dummy: String! } + type Mutation { + updateProduct(id: ID!): Product @openfed__cachePopulate(maxAge: null) + } + type Product @key(fields: "id") @openfed__entityCache(maxAge: 60) { + id: ID! + name: String! + } + `), + ROUTER_COMPATIBILITY_VERSION_ONE, + ); + expect(errors).toHaveLength(1); expect(errors[0]).toStrictEqual( - invalidDirectiveError(OPENFED_CACHE_INVALIDATE, 'Mutation.updateProduct', FIRST_ORDINAL, [ - cacheInvalidateAndPopulateMutualExclusionErrorMessage('Mutation.updateProduct'), + invalidDirectiveError(OPENFED_CACHE_POPULATE, 'Mutation.updateProduct', FIRST_ORDINAL, [ + maxAgeNotPositiveIntegerErrorMessage('null'), ]), ); }); @@ -306,9 +320,6 @@ describe('@openfed__cachePopulate tests', () => { // Returns the ConfigurationData for a type. Entity-caching config is nested under `.entityCaching`. function getConfigForType(sg: Subgraph, typeName: TypeName): ConfigurationData | undefined { - const result = new BatchNormalizer({ subgraphs: [sg] }).batchNormalize() as BatchNormalizationSuccess; - expect(result.success).toBe(true); - const internal = result.internalSubgraphByName.get(sg.name); - expect(internal).toBeDefined(); - return internal!.configurationDataByTypeName.get(typeName); + const { configurationDataByTypeName } = normalizeSubgraphSuccess(sg, ROUTER_COMPATIBILITY_VERSION_ONE); + return configurationDataByTypeName.get(typeName); } diff --git a/shared/src/router-config/builder.ts b/shared/src/router-config/builder.ts index 5e3a4c428a..d6e51e9506 100644 --- a/shared/src/router-config/builder.ts +++ b/shared/src/router-config/builder.ts @@ -93,38 +93,41 @@ function extractEntityCachingConfiguration( continue; } - for (const ec of data.entityCaching.entityCacheConfigurations) { + for (const config of data.entityCaching.entityCacheConfigurations) { entityCache.push( new EntityCacheConfiguration({ - typeName: ec.typeName, - maxAgeSeconds: BigInt(ec.maxAgeSeconds), - notFoundCacheTtlSeconds: BigInt(ec.notFoundCacheTtlSeconds), - includeHeaders: ec.includeHeaders, - partialCacheLoad: ec.partialCacheLoad, - shadowMode: ec.shadowMode, + typeName: config.typeName, + maxAgeSeconds: BigInt(config.maxAgeSeconds), + notFoundCacheTtlSeconds: BigInt(config.notFoundCacheTtlSeconds), + includeHeaders: config.includeHeaders, + partialCacheLoad: config.partialCacheLoad, + shadowMode: config.shadowMode, }), ); } - for (const ci of data.entityCaching?.cacheInvalidateConfigurations) { + + for (const config of data.entityCaching?.cacheInvalidateConfigurations) { cacheInvalidateConfigurations.push( new CacheInvalidateConfiguration({ - entityTypeName: ci.entityTypeName, - fieldName: ci.fieldName, - operationType: ci.operationType, + entityTypeName: config.entityTypeName, + fieldName: config.fieldName, + operationType: config.operationType, }), ); } - for (const cp of data.entityCaching?.cachePopulateConfigurations) { + + for (const config of data.entityCaching?.cachePopulateConfigurations) { cachePopulateConfigurations.push( new CachePopulateConfiguration({ - entityTypeName: cp.entityTypeName, - fieldName: cp.fieldName, - operationType: cp.operationType, - maxAgeSeconds: cp.maxAgeSeconds === undefined ? undefined : BigInt(cp.maxAgeSeconds), + entityTypeName: config.entityTypeName, + fieldName: config.fieldName, + operationType: config.operationType, + maxAgeSeconds: BigInt(config.maxAgeSeconds), }), ); } } + if (entityCache.length > 0 || cacheInvalidateConfigurations.length > 0 || cachePopulateConfigurations.length > 0) { return new EntityCachingConfiguration({ cacheInvalidateConfigurations, From 64414b8e126f1a64239b8d5955b61e6ef5c094cc Mon Sep 17 00:00:00 2001 From: Aenimus Date: Mon, 22 Jun 2026 18:52:01 +0100 Subject: [PATCH 59/65] chore: remove unnecessary comment --- composition/src/v1/normalization/types/types.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/composition/src/v1/normalization/types/types.ts b/composition/src/v1/normalization/types/types.ts index bc7bef4ac9..47528acc18 100644 --- a/composition/src/v1/normalization/types/types.ts +++ b/composition/src/v1/normalization/types/types.ts @@ -214,7 +214,6 @@ export type CachePopulateDirectiveNode = { export type CachePopulateArgumentNode = { readonly kind: Kind.ARGUMENT; readonly name: NameNode & { readonly value: typeof MAX_AGE }; - // maxAge: Int (optional). validateDirectives() guarantees it's an Int literal when present. readonly value: IntValueNode; readonly loc?: Location; }; From acd81a5cb8e8f830229c1360a800e6391dfd3f61 Mon Sep 17 00:00:00 2001 From: Aenimus Date: Mon, 22 Jun 2026 20:04:13 +0100 Subject: [PATCH 60/65] chore: respond to PR feedback --- composition/src/errors/errors.ts | 2 +- composition/src/v1/normalization/normalization-factory.ts | 2 +- composition/tests/v1/directives/cache-populate.test.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/composition/src/errors/errors.ts b/composition/src/errors/errors.ts index 6c7d4ff38f..0023a0ddd3 100644 --- a/composition/src/errors/errors.ts +++ b/composition/src/errors/errors.ts @@ -2056,7 +2056,7 @@ export function entityCacheWithoutKeyErrorMessage(typeName: TypeName): string { return `Object "${typeName}" does not define a "@key" directive.`; } -export function maxAgeNotPositiveIntegerErrorMessage(value: number | string): string { +export function maxAgeNotPositiveIntegerErrorMessage(value: number | string | null): string { return `The argument "maxAge" must be provided a positive integer; received "${value}".`; } diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index 3ebfecf4d1..ef9d7360f0 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -4229,7 +4229,7 @@ export class NormalizationFactory { config.maxAgeSeconds = parseInt(maxAgeArgument.value.value, 10); // This syntax handles possible NaN. - if (!(config.maxAgeSeconds > 0)) { + if (isNaN(config.maxAgeSeconds) || config.maxAgeSeconds <= 0) { this.errors.push( invalidDirectiveError(OPENFED_CACHE_POPULATE, fieldCoords, FIRST_ORDINAL, [ // If null is explicitly provided in GraphQL the value in JS is undefined. diff --git a/composition/tests/v1/directives/cache-populate.test.ts b/composition/tests/v1/directives/cache-populate.test.ts index 89b5a8231c..a51d0b38f8 100644 --- a/composition/tests/v1/directives/cache-populate.test.ts +++ b/composition/tests/v1/directives/cache-populate.test.ts @@ -311,7 +311,7 @@ describe('@openfed__cachePopulate tests', () => { expect(errors).toHaveLength(1); expect(errors[0]).toStrictEqual( invalidDirectiveError(OPENFED_CACHE_POPULATE, 'Mutation.updateProduct', FIRST_ORDINAL, [ - maxAgeNotPositiveIntegerErrorMessage('null'), + maxAgeNotPositiveIntegerErrorMessage(null), ]), ); }); From fc06034c2bee8aa9f00f5b5cea668f28b6d0724e Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Tue, 23 Jun 2026 11:18:23 +0530 Subject: [PATCH 61/65] fix: updates --- shared/test/entity-caching.test.ts | 48 +++++++++++++++--------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/shared/test/entity-caching.test.ts b/shared/test/entity-caching.test.ts index bf8da8bef3..6934435301 100644 --- a/shared/test/entity-caching.test.ts +++ b/shared/test/entity-caching.test.ts @@ -5,13 +5,13 @@ import { LATEST_ROUTER_COMPATIBILITY_VERSION, parse, } from '@wundergraph/composition'; -import { EntityCaching } from '@wundergraph/cosmo-connect/dist/node/v1/node_pb'; +import { EntityCachingConfiguration } from '@wundergraph/cosmo-connect/dist/node/v1/node_pb'; import { buildRouterConfig, ComposedSubgraph, SubgraphKind } from '../src'; -// Drives a single subgraph through federation + buildRouterConfig and returns the EntityCaching +// Drives a single subgraph through federation + buildRouterConfig and returns the EntityCachingConfiguration // proto message attached to its datasource configuration (or undefined when no caching directives -// are present). Exercises builder.ts#toEntityCaching end-to-end. -function buildEntityCaching(sdl: string): EntityCaching | undefined { +// are present). Exercises builder.ts#extractEntityCachingConfiguration end-to-end. +function buildEntityCaching(sdl: string): EntityCachingConfiguration | undefined { const result = federateSubgraphs({ subgraphs: [{ name: 'test', url: '', definitions: parse(sdl) }], version: LATEST_ROUTER_COMPATIBILITY_VERSION, @@ -38,11 +38,11 @@ function buildEntityCaching(sdl: string): EntityCaching | undefined { federatedSDL: sdl, schemaVersionId: '', }); - return routerConfig.engineConfig!.datasourceConfigurations[0].entityCaching; + return routerConfig.engineConfig!.datasourceConfigurations[0].entityCachingConfiguration; } -describe('Entity caching router-config builder (toEntityCaching)', () => { - test('maps every entity-caching directive type into the EntityCaching message', () => { +describe('Entity caching router-config builder (extractEntityCachingConfiguration)', () => { + test('maps every entity-caching directive type into the EntityCachingConfiguration message', () => { const ec = buildEntityCaching(` type Query { product(id: ID! @openfed__is(fields: "id")): Product @openfed__queryCache(maxAge: 30) @@ -65,19 +65,19 @@ describe('Entity caching router-config builder (toEntityCaching)', () => { expect(ec).toBeDefined(); // @openfed__requestScoped - expect(ec!.requestScopedFields).toHaveLength(1); - expect(ec!.requestScopedFields[0].fieldName).toBe('me'); - expect(ec!.requestScopedFields[0].typeName).toBe('Query'); - expect(ec!.requestScopedFields[0].l1Key).toBe('test.u'); + expect(ec!.requestScopedConfigurations).toHaveLength(1); + expect(ec!.requestScopedConfigurations[0].fieldName).toBe('me'); + expect(ec!.requestScopedConfigurations[0].typeName).toBe('Query'); + expect(ec!.requestScopedConfigurations[0].l1Key).toBe('test.u'); // @openfed__entityCache (Int args become BigInt; flag defaults preserved) - expect(ec!.entityCacheConfigurations).toHaveLength(1); - expect(ec!.entityCacheConfigurations[0].typeName).toBe('Product'); - expect(ec!.entityCacheConfigurations[0].maxAgeSeconds).toBe(60n); - expect(ec!.entityCacheConfigurations[0].notFoundCacheTtlSeconds).toBe(5n); - expect(ec!.entityCacheConfigurations[0].includeHeaders).toBe(true); - expect(ec!.entityCacheConfigurations[0].partialCacheLoad).toBe(false); - expect(ec!.entityCacheConfigurations[0].shadowMode).toBe(false); + expect(ec!.entityCache).toHaveLength(1); + expect(ec!.entityCache[0].typeName).toBe('Product'); + expect(ec!.entityCache[0].maxAgeSeconds).toBe(60n); + expect(ec!.entityCache[0].notFoundCacheTtlSeconds).toBe(5n); + expect(ec!.entityCache[0].includeHeaders).toBe(true); + expect(ec!.entityCache[0].partialCacheLoad).toBe(false); + expect(ec!.entityCache[0].shadowMode).toBe(false); // @openfed__queryCache with @openfed__is mapping (non-batch) expect(ec!.queryCacheConfigurations).toHaveLength(1); @@ -96,13 +96,13 @@ describe('Entity caching router-config builder (toEntityCaching)', () => { // @openfed__cacheInvalidate expect(ec!.cacheInvalidateConfigurations).toHaveLength(1); expect(ec!.cacheInvalidateConfigurations[0].fieldName).toBe('updateProduct'); - expect(ec!.cacheInvalidateConfigurations[0].operationType).toBe('Mutation'); + expect(ec!.cacheInvalidateConfigurations[0].operationType).toBe('mutation'); expect(ec!.cacheInvalidateConfigurations[0].entityTypeName).toBe('Product'); // @openfed__cachePopulate with explicit maxAge expect(ec!.cachePopulateConfigurations).toHaveLength(1); expect(ec!.cachePopulateConfigurations[0].fieldName).toBe('createProduct'); - expect(ec!.cachePopulateConfigurations[0].operationType).toBe('Mutation'); + expect(ec!.cachePopulateConfigurations[0].operationType).toBe('mutation'); expect(ec!.cachePopulateConfigurations[0].entityTypeName).toBe('Product'); expect(ec!.cachePopulateConfigurations[0].maxAgeSeconds).toBe(45n); }); @@ -126,7 +126,7 @@ describe('Entity caching router-config builder (toEntityCaching)', () => { expect(fm.isBatch).toBe(true); }); - test('a Subscription @openfed__cachePopulate without maxAge omits maxAgeSeconds', () => { + test('a Subscription @openfed__cachePopulate without maxAge falls back to the entityCache TTL', () => { const ec = buildEntityCaching(` type Query { dummy: String! @@ -144,10 +144,10 @@ describe('Entity caching router-config builder (toEntityCaching)', () => { expect(ec!.cachePopulateConfigurations).toHaveLength(1); const cp = ec!.cachePopulateConfigurations[0]; expect(cp.fieldName).toBe('productStream'); - expect(cp.operationType).toBe('Subscription'); + expect(cp.operationType).toBe('subscription'); expect(cp.entityTypeName).toBe('Product'); - // maxAge omitted on the directive → builder passes undefined, leaving the optional proto field unset. - expect(cp.maxAgeSeconds).toBeUndefined(); + // maxAge omitted on the directive → composition falls back to the entity's @openfed__entityCache TTL (60s). + expect(cp.maxAgeSeconds).toBe(60n); }); test('a subgraph with no entity-caching directives omits the EntityCaching message', () => { From efa4cdffb9c75e6eeffccdd9573af993b3acdec0 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Tue, 23 Jun 2026 12:18:08 +0530 Subject: [PATCH 62/65] chore: remove requestScoped from queryCache branch (queryCache becomes 4/5) Reorders the stack so @openfed__queryCache/@openfed__is sits directly on main as the 4th PR. The @openfed__requestScoped feature is removed here and re-applied on top in the requestScoped branch (now 5/5). The requestScoped assertions in shared/test/entity-caching.test.ts move to that PR. Proto regenerated (request_scoped_configurations field 4 dropped; query_cache remains field 5). --- .../directive-definition-data.ts | 20 - composition/src/router-configuration/types.ts | 13 - composition/src/router-configuration/utils.ts | 1 - composition/src/utils/string-constants.ts | 1 - composition/src/v1/constants/constants.ts | 3 - .../src/v1/constants/directive-definitions.ts | 19 - .../v1/normalization/normalization-factory.ts | 57 +- .../src/v1/normalization/types/types.ts | 14 - composition/src/v1/normalization/utils.ts | 3 - composition/src/v1/warnings/params.ts | 6 - composition/src/v1/warnings/warnings.ts | 17 - .../v1/directives/request-scoped.test.ts | 139 ---- .../gen/proto/wg/cosmo/node/v1/node.pb.go | 787 ++++++++---------- connect/src/wg/cosmo/node/v1/node_pb.ts | 62 -- proto/wg/cosmo/node/v1/node.proto | 12 - router/gen/proto/wg/cosmo/node/v1/node.pb.go | 787 ++++++++---------- shared/src/router-config/builder.ts | 13 - shared/test/entity-caching.test.ts | 11 - 18 files changed, 708 insertions(+), 1257 deletions(-) delete mode 100644 composition/tests/v1/directives/request-scoped.test.ts diff --git a/composition/src/directive-definition-data/directive-definition-data.ts b/composition/src/directive-definition-data/directive-definition-data.ts index cceca58bce..d320ad5263 100644 --- a/composition/src/directive-definition-data/directive-definition-data.ts +++ b/composition/src/directive-definition-data/directive-definition-data.ts @@ -90,7 +90,6 @@ import { NEGATIVE_CACHE_TTL, PARTIAL_CACHE_LOAD, OPENFED_QUERY_CACHE, - OPENFED_REQUEST_SCOPED, SHADOW_MODE, } from '../utils/string-constants'; import { @@ -128,7 +127,6 @@ import { OPENFED_ENTITY_CACHE_DEFINITION, OPENFED_IS_DEFINITION, OPENFED_QUERY_CACHE_DEFINITION, - OPENFED_REQUEST_SCOPED_DEFINITION, SPECIFIED_BY_DEFINITION, SUBSCRIPTION_FILTER_DEFINITION, TAG_DEFINITION, @@ -1108,21 +1106,3 @@ export const IS_DEFINITION_DATA = newDirectiveDefinitionData({ node: OPENFED_IS_DEFINITION, requiredArgumentNames: new Set([FIELDS]), }); - -export const REQUEST_SCOPED_DEFINITION_DATA = newDirectiveDefinitionData({ - argumentDataByName: new Map([ - [ - KEY, - newDirectiveArgumentData({ - directive: `@${OPENFED_REQUEST_SCOPED}`, - name: KEY, - namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, - typeNode: REQUIRED_STRING_TYPE_NODE, - }), - ], - ]), - locations: new Set([FIELD_DEFINITION_UPPER]), - name: OPENFED_REQUEST_SCOPED, - node: OPENFED_REQUEST_SCOPED_DEFINITION, - requiredArgumentNames: new Set([KEY]), -}); diff --git a/composition/src/router-configuration/types.ts b/composition/src/router-configuration/types.ts index 45f1fffe24..f4de342e17 100644 --- a/composition/src/router-configuration/types.ts +++ b/composition/src/router-configuration/types.ts @@ -87,17 +87,6 @@ export type RequiredFieldConfiguration = { disableEntityResolver?: boolean; }; -export type RequestScopedConfiguration = { - fieldName: FieldName; - typeName: TypeName; - // L1 cache key used to store/lookup this field's value for the duration of a request. - // Format: "{subgraphName}.{key}" where `key` is the @openfed__requestScoped(key:) argument. - // All fields in the same subgraph declaring @openfed__requestScoped with the same key share - // the same L1 entry — the first one to resolve populates it, subsequent ones inject - // from it (subject to widening checks and alias-aware normalization). - l1Key: string; -}; - export type ConfigurationData = { fieldNames: Set; isRootNode: boolean; @@ -186,8 +175,6 @@ export type EntityCachingConfiguration = { cachePopulateConfigurations: Array; // Attached to an entity type's ConfigurationData (e.g. "Product") from @openfed__entityCache. entityCacheConfigurations: Array; - // Attached to a field's ConfigurationData from @openfed__requestScoped. - requestScopedConfigurations: Array; // Attached to the Query type's ConfigurationData from @openfed__queryCache. queryCacheConfigurations?: Array; }; diff --git a/composition/src/router-configuration/utils.ts b/composition/src/router-configuration/utils.ts index ede1663733..54fb3b7bf0 100644 --- a/composition/src/router-configuration/utils.ts +++ b/composition/src/router-configuration/utils.ts @@ -22,7 +22,6 @@ export function getOrInitializeEntityCaching(configurationData: ConfigurationDat cacheInvalidateConfigurations: [], cachePopulateConfigurations: [], entityCacheConfigurations: [], - requestScopedConfigurations: [], }; } diff --git a/composition/src/utils/string-constants.ts b/composition/src/utils/string-constants.ts index 444016f470..f155c7471d 100644 --- a/composition/src/utils/string-constants.ts +++ b/composition/src/utils/string-constants.ts @@ -135,7 +135,6 @@ export const REASON = 'reason'; export const REQUEST = 'request'; export const REQUIRE_FETCH_REASONS = 'openfed__requireFetchReasons'; export const REQUIRE_ONE_SLICING_ARGUMENT = 'requireOneSlicingArgument'; -export const OPENFED_REQUEST_SCOPED = 'openfed__requestScoped'; export const REQUIRES = 'requires'; export const REQUIRES_SCOPES = 'requiresScopes'; export const RESOLVABLE = 'resolvable'; diff --git a/composition/src/v1/constants/constants.ts b/composition/src/v1/constants/constants.ts index 7dea14aca6..3134ed5c90 100644 --- a/composition/src/v1/constants/constants.ts +++ b/composition/src/v1/constants/constants.ts @@ -12,7 +12,6 @@ import { OPENFED_ENTITY_CACHE, OPENFED_IS, OPENFED_QUERY_CACHE, - OPENFED_REQUEST_SCOPED, DEPRECATED, EDFS_KAFKA_PUBLISH, EDFS_KAFKA_SUBSCRIBE, @@ -85,7 +84,6 @@ import { OPENFED_ENTITY_CACHE_DEFINITION, OPENFED_IS_DEFINITION, OPENFED_QUERY_CACHE_DEFINITION, - OPENFED_REQUEST_SCOPED_DEFINITION, } from './directive-definitions'; export const DIRECTIVE_DEFINITION_BY_NAME: ReadonlyMap = new Map< @@ -103,7 +101,6 @@ export const DIRECTIVE_DEFINITION_BY_NAME: ReadonlyMap(); referencedTypeNames = new Set(); renamedParentTypeName = ''; - requestScopedFieldCoordsByL1Key = new Map>(); schemaData: SchemaData; subgraphName: SubgraphName; unvalidatedExternalFieldCoords = new Set(); @@ -4071,7 +4066,7 @@ export class NormalizationFactory { /* validateDirectives() (run earlier in normalize()) has already guaranteed each argument's type — * Int for maxAge/negativeCacheTTL, Boolean for the flags — so the generic ConstDirectiveNode is - * narrowed once to the precise typed node, mirroring RequestScopedDirectiveNode/ComposeDirectiveNode. + * narrowed once to the precise typed node, mirroring ComposeDirectiveNode. * Optional arguments may be absent (definition defaults are not materialized onto the usage AST), * so the config starts at the directive's documented defaults and each present argument overrides it. */ @@ -4314,7 +4309,7 @@ export class NormalizationFactory { } // validateDirectives() has already guaranteed the argument types (Int maxAge, Boolean flags), so the // generic ConstDirectiveNode is narrowed once to the precise typed node — mirroring - // EntityCacheDirectiveNode/RequestScopedDirectiveNode. Optional args may be absent (definition defaults + // EntityCacheDirectiveNode. Optional args may be absent (definition defaults // are not materialized onto the usage AST), so each defaults here and present args override. const queryCacheDirective = fieldData.directivesByName.get(OPENFED_QUERY_CACHE)![0] as QueryCacheDirectiveNode; let maxAgeSeconds = 0; @@ -5204,38 +5199,6 @@ export class NormalizationFactory { return []; } - // Attaches a single field annotated with @openfed__requestScoped to its type's configurationData. A field - // is both a reader and writer of the coordinate L1 — no receiver/provider. Fields with the same `key` share - // the same L1 entry: whichever is resolved first populates it, subsequent ones inject from it. - extractRequestScopedConfig(fieldData: FieldData) { - const directives = fieldData.directivesByName.get(OPENFED_REQUEST_SCOPED); - if (!directives) { - return; - } - // validateDirectives() (run earlier in normalize()) has already guaranteed a single, non-repeated - // @openfed__requestScoped with a required String `key`, so the generic ConstDirectiveNode can be - // narrowed to the precise typed node — mirroring handleComposeDirective()/ComposeDirectiveNode. - const directive = directives[0] as RequestScopedDirectiveNode; - const keyArg = directive.arguments.find((arg) => arg.name.value === KEY); - if (!keyArg) { - return; - } - - const config: RequestScopedConfiguration = { - fieldName: fieldData.name, - typeName: fieldData.renamedParentTypeName, - l1Key: `${this.subgraphName}.${keyArg.value.value}`, - }; - const configurationData = getValueOrDefault(this.configurationDataByTypeName, fieldData.renamedParentTypeName, () => - newConfigurationData(false, fieldData.renamedParentTypeName), - ); - getOrInitializeEntityCaching(configurationData).requestScopedConfigurations.push(config); - // Track field coords per L1 key so the single-field warning can be emitted after the walk completes. - getValueOrDefault(this.requestScopedFieldCoordsByL1Key, config.l1Key, () => []).push( - `${config.typeName}.${config.fieldName}`, - ); - } - addFieldNamesToConfigurationData(fieldDataByFieldName: Map, configurationData: ConfigurationData) { const externalFieldNames = new Set(); for (const [fieldName, fieldData] of fieldDataByFieldName) { @@ -5426,7 +5389,6 @@ export class NormalizationFactory { for (const [fieldName, fieldData] of parentData.fieldDataByName) { if (isObject) { this.handleFieldCacheDirectives(fieldData); - this.extractRequestScopedConfig(fieldData); // @openfed__queryCache extraction and @openfed__is placement validation. Key field sets and // entity-cache configs are already finalized at this point in normalize() (populated by @@ -5540,21 +5502,6 @@ export class NormalizationFactory { } } } - // @openfed__requestScoped is meaningless unless >= 2 fields share a key (there'd be no second reader to - // benefit), so warn for any key used on only one field across the subgraph. extractRequestScopedConfig() - // populated requestScopedFieldCoordsByL1Key during the type walk above. - for (const [l1Key, fieldCoordsList] of this.requestScopedFieldCoordsByL1Key) { - if (fieldCoordsList.length === 1) { - this.warnings.push( - requestScopedSingleFieldWarning({ - subgraphName: this.subgraphName, - // l1Key is `${this.subgraphName}.${key}`, so strip the prefix to recover the original key. - key: l1Key.slice(this.subgraphName.length + 1), - fieldCoords: fieldCoordsList[0], - }), - ); - } - } this.isSubgraphEventDrivenGraph = this.edfsDirectiveReferences.size > 0; // this is where @provides and @requires configurations are added to the ConfigurationData this.addValidConditionalFieldSetConfigurations(); diff --git a/composition/src/v1/normalization/types/types.ts b/composition/src/v1/normalization/types/types.ts index f53fe86bfe..77eaf20f4e 100644 --- a/composition/src/v1/normalization/types/types.ts +++ b/composition/src/v1/normalization/types/types.ts @@ -148,20 +148,6 @@ export type ComposeDirectiveArgumentNode = { readonly loc?: Location; }; -export type RequestScopedDirectiveNode = { - readonly arguments: ReadonlyArray; - readonly kind: Kind.DIRECTIVE; - readonly name: NameNode; - readonly loc?: Location; -}; - -export type RequestScopedArgumentNode = { - readonly kind: Kind.ARGUMENT; - readonly name: NameNode; - readonly value: StringValueNode; // key: String! — guaranteed by validateDirectives() - readonly loc?: Location; -}; - export type EntityCacheDirectiveNode = { readonly arguments: | readonly [MaxAgeArgumentNode] diff --git a/composition/src/v1/normalization/utils.ts b/composition/src/v1/normalization/utils.ts index cf3a2e1909..51a1a7a98b 100644 --- a/composition/src/v1/normalization/utils.ts +++ b/composition/src/v1/normalization/utils.ts @@ -81,7 +81,6 @@ import { CACHE_POPULATE_DEFINITION_DATA, IS_DEFINITION_DATA, QUERY_CACHE_DEFINITION_DATA, - REQUEST_SCOPED_DEFINITION_DATA, } from '../../directive-definition-data/directive-definition-data'; import { AS, @@ -94,7 +93,6 @@ import { COST, OPENFED_IS, OPENFED_QUERY_CACHE, - OPENFED_REQUEST_SCOPED, DEPRECATED, EDFS_KAFKA_PUBLISH, EDFS_KAFKA_SUBSCRIBE, @@ -490,7 +488,6 @@ export function initializeDirectiveDefinitionDatas(): Map { - describe('registry tests', () => { - test('that the directive is materialized in the normalized subgraph output', () => { - const { directiveDefinitionByName } = normalizeSubgraphSuccess( - createSubgraphWithDefaultName(` - type Query { - me: User @openfed__requestScoped(key: "u") - viewer: User @openfed__requestScoped(key: "u") - } - type User @key(fields: "id") { - id: ID! - } - `), - ROUTER_COMPATIBILITY_VERSION_ONE, - ); - expect(directiveDefinitionByName.has(OPENFED_REQUEST_SCOPED)).toBe(true); - expect(directiveDefinitionByName.get(OPENFED_REQUEST_SCOPED)).toBe(OPENFED_REQUEST_SCOPED_DEFINITION); - }); - }); - - describe('configuration extraction tests', () => { - test('that ≥ 2 fields sharing the same key produce a subgraph-prefixed l1Key and no warning', () => { - const result = normalizeSubgraphSuccess( - createSubgraphWithDefaultName(` - type Query { - me: User @openfed__requestScoped(key: "me") - viewer: User @openfed__requestScoped(key: "me") - } - type User @key(fields: "id") { - id: ID! - } - `), - ROUTER_COMPATIBILITY_VERSION_ONE, - ); - const config = result.configurationDataByTypeName.get('Query'); - expect(config!.entityCaching?.requestScopedConfigurations).toBeDefined(); - expect(config!.entityCaching?.requestScopedConfigurations).toHaveLength(2); - expect(config!.entityCaching!.requestScopedConfigurations!.map((f) => f.l1Key)).toEqual([ - 'subgraph-default-a.me', - 'subgraph-default-a.me', - ]); - expect(result.warnings).toHaveLength(0); - }); - - test('that it works on a non-entity object type field', () => { - const result = normalizeSubgraphSuccess( - createSubgraphWithDefaultName(` - type Query { - currentLocale: String @openfed__requestScoped(key: "locale") - articleLocale: String @openfed__requestScoped(key: "locale") - } - `), - ROUTER_COMPATIBILITY_VERSION_ONE, - ); - const config = result.configurationDataByTypeName.get('Query'); - expect(config!.entityCaching?.requestScopedConfigurations).toBeDefined(); - expect(config!.entityCaching?.requestScopedConfigurations).toHaveLength(2); - expect(config!.entityCaching!.requestScopedConfigurations![0].fieldName).toBe('currentLocale'); - expect(config!.entityCaching!.requestScopedConfigurations![0].l1Key).toBe('subgraph-default-a.locale'); - }); - - test('that a key declared on only one field still populates config but emits a warning', () => { - const result = normalizeSubgraphSuccess( - createSubgraphWithDefaultName(` - type Query { - currentUser: User @openfed__requestScoped(key: "lonely") - } - type User @key(fields: "id") { - id: ID! - } - `), - ROUTER_COMPATIBILITY_VERSION_ONE, - ); - const config = result.configurationDataByTypeName.get('Query'); - expect(config!.entityCaching?.requestScopedConfigurations).toHaveLength(1); - expect(config!.entityCaching!.requestScopedConfigurations![0].l1Key).toBe('subgraph-default-a.lonely'); - expect(result.warnings).toStrictEqual([ - requestScopedSingleFieldWarning({ - subgraphName: 'subgraph-default-a', - key: 'lonely', - fieldCoords: 'Query.currentUser', - }), - ]); - }); - }); - - describe('validation tests', () => { - test('that a missing key argument is a failure', () => { - const { errors } = normalizeSubgraphFailure( - createSubgraphWithDefaultName(` - type Query { - currentUser: User @openfed__requestScoped - } - type User @key(fields: "id") { - id: ID! - } - `), - ROUTER_COMPATIBILITY_VERSION_ONE, - ); - expect(errors[0]).toStrictEqual( - invalidDirectiveError(OPENFED_REQUEST_SCOPED, 'Query.currentUser', FIRST_ORDINAL, [ - undefinedRequiredArgumentsErrorMessage(OPENFED_REQUEST_SCOPED, ['key'], []), - ]), - ); - }); - - test('that the directive is not repeatable — two on the same field fails', () => { - const { errors } = normalizeSubgraphFailure( - createSubgraphWithDefaultName(` - type Query { - currentUser: User @openfed__requestScoped(key: "a") @openfed__requestScoped(key: "b") - } - type User @key(fields: "id") { - id: ID! - } - `), - ROUTER_COMPATIBILITY_VERSION_ONE, - ); - expect(errors[0]).toStrictEqual( - invalidDirectiveError(OPENFED_REQUEST_SCOPED, 'Query.currentUser', FIRST_ORDINAL, [ - invalidRepeatedDirectiveErrorMessage(OPENFED_REQUEST_SCOPED), - ]), - ); - }); - }); -}); diff --git a/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go b/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go index b3258918fc..f736dc5fb4 100644 --- a/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go +++ b/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go @@ -1234,8 +1234,6 @@ type EntityCachingConfiguration struct { CacheInvalidateConfigurations []*CacheInvalidateConfiguration `protobuf:"bytes,2,rep,name=cache_invalidate_configurations,json=cacheInvalidateConfigurations,proto3" json:"cache_invalidate_configurations,omitempty"` // Per-Mutation/Subscription-field cache population configs (from @openfed__cachePopulate) CachePopulateConfigurations []*CachePopulateConfiguration `protobuf:"bytes,3,rep,name=cache_populate_configurations,json=cachePopulateConfigurations,proto3" json:"cache_populate_configurations,omitempty"` - // Request-scoped field configurations (from @openfed__requestScoped directive) - RequestScopedConfigurations []*RequestScopedConfiguration `protobuf:"bytes,4,rep,name=request_scoped_configurations,json=requestScopedConfigurations,proto3" json:"request_scoped_configurations,omitempty"` // Per-Query-field cache configurations (from @openfed__queryCache / @openfed__is directives) QueryCacheConfigurations []*QueryCacheConfiguration `protobuf:"bytes,5,rep,name=query_cache_configurations,json=queryCacheConfigurations,proto3" json:"query_cache_configurations,omitempty"` unknownFields protoimpl.UnknownFields @@ -1293,13 +1291,6 @@ func (x *EntityCachingConfiguration) GetCachePopulateConfigurations() []*CachePo return nil } -func (x *EntityCachingConfiguration) GetRequestScopedConfigurations() []*RequestScopedConfiguration { - if x != nil { - return x.RequestScopedConfigurations - } - return nil -} - func (x *EntityCachingConfiguration) GetQueryCacheConfigurations() []*QueryCacheConfiguration { if x != nil { return x.QueryCacheConfigurations @@ -1531,70 +1522,6 @@ func (x *CachePopulateConfiguration) GetEntityTypeName() string { return "" } -// Per-field declaration for @openfed__requestScoped. All fields in the same subgraph declaring -// @openfed__requestScoped(key: "X") share L1 key "{subgraphName}.X". The first field to resolve -// populates L1; subsequent fields with the same key inject from L1 and can skip their -// fetch when all required sub-fields are present. -type RequestScopedConfiguration struct { - state protoimpl.MessageState `protogen:"open.v1"` - FieldName string `protobuf:"bytes,1,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` - TypeName string `protobuf:"bytes,2,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` - L1Key string `protobuf:"bytes,3,opt,name=l1_key,json=l1Key,proto3" json:"l1_key,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *RequestScopedConfiguration) Reset() { - *x = RequestScopedConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *RequestScopedConfiguration) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RequestScopedConfiguration) ProtoMessage() {} - -func (x *RequestScopedConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RequestScopedConfiguration.ProtoReflect.Descriptor instead. -func (*RequestScopedConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{16} -} - -func (x *RequestScopedConfiguration) GetFieldName() string { - if x != nil { - return x.FieldName - } - return "" -} - -func (x *RequestScopedConfiguration) GetTypeName() string { - if x != nil { - return x.TypeName - } - return "" -} - -func (x *RequestScopedConfiguration) GetL1Key() string { - if x != nil { - return x.L1Key - } - return "" -} - // Per-Query-field declaration for @openfed__queryCache. Tells the router a query field can serve // its returned entity from the entity cache, with argument-to-@key mappings for cache-key construction. type QueryCacheConfiguration struct { @@ -1613,7 +1540,7 @@ type QueryCacheConfiguration struct { func (x *QueryCacheConfiguration) Reset() { *x = QueryCacheConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1625,7 +1552,7 @@ func (x *QueryCacheConfiguration) String() string { func (*QueryCacheConfiguration) ProtoMessage() {} func (x *QueryCacheConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1638,7 +1565,7 @@ func (x *QueryCacheConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryCacheConfiguration.ProtoReflect.Descriptor instead. func (*QueryCacheConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{17} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{16} } func (x *QueryCacheConfiguration) GetFieldName() string { @@ -1693,7 +1620,7 @@ type EntityKeyMapping struct { func (x *EntityKeyMapping) Reset() { *x = EntityKeyMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1705,7 +1632,7 @@ func (x *EntityKeyMapping) String() string { func (*EntityKeyMapping) ProtoMessage() {} func (x *EntityKeyMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1718,7 +1645,7 @@ func (x *EntityKeyMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EntityKeyMapping.ProtoReflect.Descriptor instead. func (*EntityKeyMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{18} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{17} } func (x *EntityKeyMapping) GetEntityTypeName() string { @@ -1746,7 +1673,7 @@ type EntityCacheFieldMapping struct { func (x *EntityCacheFieldMapping) Reset() { *x = EntityCacheFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1758,7 +1685,7 @@ func (x *EntityCacheFieldMapping) String() string { func (*EntityCacheFieldMapping) ProtoMessage() {} func (x *EntityCacheFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1771,7 +1698,7 @@ func (x *EntityCacheFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EntityCacheFieldMapping.ProtoReflect.Descriptor instead. func (*EntityCacheFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{19} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{18} } func (x *EntityCacheFieldMapping) GetEntityKeyField() string { @@ -1807,7 +1734,7 @@ type CostConfiguration struct { func (x *CostConfiguration) Reset() { *x = CostConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1819,7 +1746,7 @@ func (x *CostConfiguration) String() string { func (*CostConfiguration) ProtoMessage() {} func (x *CostConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1832,7 +1759,7 @@ func (x *CostConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use CostConfiguration.ProtoReflect.Descriptor instead. func (*CostConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{20} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{19} } func (x *CostConfiguration) GetFieldWeights() []*FieldWeightConfiguration { @@ -1876,7 +1803,7 @@ type FieldWeightConfiguration struct { func (x *FieldWeightConfiguration) Reset() { *x = FieldWeightConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1888,7 +1815,7 @@ func (x *FieldWeightConfiguration) String() string { func (*FieldWeightConfiguration) ProtoMessage() {} func (x *FieldWeightConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1901,7 +1828,7 @@ func (x *FieldWeightConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldWeightConfiguration.ProtoReflect.Descriptor instead. func (*FieldWeightConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{21} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{20} } func (x *FieldWeightConfiguration) GetTypeName() string { @@ -1953,7 +1880,7 @@ type FieldListSizeConfiguration struct { func (x *FieldListSizeConfiguration) Reset() { *x = FieldListSizeConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1965,7 +1892,7 @@ func (x *FieldListSizeConfiguration) String() string { func (*FieldListSizeConfiguration) ProtoMessage() {} func (x *FieldListSizeConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1978,7 +1905,7 @@ func (x *FieldListSizeConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldListSizeConfiguration.ProtoReflect.Descriptor instead. func (*FieldListSizeConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{22} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{21} } func (x *FieldListSizeConfiguration) GetTypeName() string { @@ -2033,7 +1960,7 @@ type ArgumentConfiguration struct { func (x *ArgumentConfiguration) Reset() { *x = ArgumentConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2045,7 +1972,7 @@ func (x *ArgumentConfiguration) String() string { func (*ArgumentConfiguration) ProtoMessage() {} func (x *ArgumentConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2058,7 +1985,7 @@ func (x *ArgumentConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use ArgumentConfiguration.ProtoReflect.Descriptor instead. func (*ArgumentConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{23} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{22} } func (x *ArgumentConfiguration) GetName() string { @@ -2084,7 +2011,7 @@ type Scopes struct { func (x *Scopes) Reset() { *x = Scopes{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2096,7 +2023,7 @@ func (x *Scopes) String() string { func (*Scopes) ProtoMessage() {} func (x *Scopes) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2109,7 +2036,7 @@ func (x *Scopes) ProtoReflect() protoreflect.Message { // Deprecated: Use Scopes.ProtoReflect.Descriptor instead. func (*Scopes) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{24} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{23} } func (x *Scopes) GetRequiredAndScopes() []string { @@ -2130,7 +2057,7 @@ type AuthorizationConfiguration struct { func (x *AuthorizationConfiguration) Reset() { *x = AuthorizationConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2142,7 +2069,7 @@ func (x *AuthorizationConfiguration) String() string { func (*AuthorizationConfiguration) ProtoMessage() {} func (x *AuthorizationConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2155,7 +2082,7 @@ func (x *AuthorizationConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use AuthorizationConfiguration.ProtoReflect.Descriptor instead. func (*AuthorizationConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{25} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{24} } func (x *AuthorizationConfiguration) GetRequiresAuthentication() bool { @@ -2192,7 +2119,7 @@ type FieldConfiguration struct { func (x *FieldConfiguration) Reset() { *x = FieldConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2204,7 +2131,7 @@ func (x *FieldConfiguration) String() string { func (*FieldConfiguration) ProtoMessage() {} func (x *FieldConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2217,7 +2144,7 @@ func (x *FieldConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldConfiguration.ProtoReflect.Descriptor instead. func (*FieldConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{26} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{25} } func (x *FieldConfiguration) GetTypeName() string { @@ -2265,7 +2192,7 @@ type TypeConfiguration struct { func (x *TypeConfiguration) Reset() { *x = TypeConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2277,7 +2204,7 @@ func (x *TypeConfiguration) String() string { func (*TypeConfiguration) ProtoMessage() {} func (x *TypeConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2290,7 +2217,7 @@ func (x *TypeConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeConfiguration.ProtoReflect.Descriptor instead. func (*TypeConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{27} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{26} } func (x *TypeConfiguration) GetTypeName() string { @@ -2319,7 +2246,7 @@ type TypeField struct { func (x *TypeField) Reset() { *x = TypeField{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2331,7 +2258,7 @@ func (x *TypeField) String() string { func (*TypeField) ProtoMessage() {} func (x *TypeField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2344,7 +2271,7 @@ func (x *TypeField) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeField.ProtoReflect.Descriptor instead. func (*TypeField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{28} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{27} } func (x *TypeField) GetTypeName() string { @@ -2385,7 +2312,7 @@ type FieldCoordinates struct { func (x *FieldCoordinates) Reset() { *x = FieldCoordinates{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2397,7 +2324,7 @@ func (x *FieldCoordinates) String() string { func (*FieldCoordinates) ProtoMessage() {} func (x *FieldCoordinates) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2410,7 +2337,7 @@ func (x *FieldCoordinates) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldCoordinates.ProtoReflect.Descriptor instead. func (*FieldCoordinates) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{29} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{28} } func (x *FieldCoordinates) GetFieldName() string { @@ -2437,7 +2364,7 @@ type FieldSetCondition struct { func (x *FieldSetCondition) Reset() { *x = FieldSetCondition{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2449,7 +2376,7 @@ func (x *FieldSetCondition) String() string { func (*FieldSetCondition) ProtoMessage() {} func (x *FieldSetCondition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2462,7 +2389,7 @@ func (x *FieldSetCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldSetCondition.ProtoReflect.Descriptor instead. func (*FieldSetCondition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{30} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{29} } func (x *FieldSetCondition) GetFieldCoordinatesPath() []*FieldCoordinates { @@ -2492,7 +2419,7 @@ type RequiredField struct { func (x *RequiredField) Reset() { *x = RequiredField{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2504,7 +2431,7 @@ func (x *RequiredField) String() string { func (*RequiredField) ProtoMessage() {} func (x *RequiredField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2517,7 +2444,7 @@ func (x *RequiredField) ProtoReflect() protoreflect.Message { // Deprecated: Use RequiredField.ProtoReflect.Descriptor instead. func (*RequiredField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{31} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{30} } func (x *RequiredField) GetTypeName() string { @@ -2565,7 +2492,7 @@ type EntityInterfaceConfiguration struct { func (x *EntityInterfaceConfiguration) Reset() { *x = EntityInterfaceConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2577,7 +2504,7 @@ func (x *EntityInterfaceConfiguration) String() string { func (*EntityInterfaceConfiguration) ProtoMessage() {} func (x *EntityInterfaceConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2590,7 +2517,7 @@ func (x *EntityInterfaceConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use EntityInterfaceConfiguration.ProtoReflect.Descriptor instead. func (*EntityInterfaceConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{32} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{31} } func (x *EntityInterfaceConfiguration) GetInterfaceTypeName() string { @@ -2633,7 +2560,7 @@ type FetchConfiguration struct { func (x *FetchConfiguration) Reset() { *x = FetchConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2645,7 +2572,7 @@ func (x *FetchConfiguration) String() string { func (*FetchConfiguration) ProtoMessage() {} func (x *FetchConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2658,7 +2585,7 @@ func (x *FetchConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FetchConfiguration.ProtoReflect.Descriptor instead. func (*FetchConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{33} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{32} } func (x *FetchConfiguration) GetUrl() *ConfigurationVariable { @@ -2742,7 +2669,7 @@ type StatusCodeTypeMapping struct { func (x *StatusCodeTypeMapping) Reset() { *x = StatusCodeTypeMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2754,7 +2681,7 @@ func (x *StatusCodeTypeMapping) String() string { func (*StatusCodeTypeMapping) ProtoMessage() {} func (x *StatusCodeTypeMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2767,7 +2694,7 @@ func (x *StatusCodeTypeMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use StatusCodeTypeMapping.ProtoReflect.Descriptor instead. func (*StatusCodeTypeMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{34} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{33} } func (x *StatusCodeTypeMapping) GetStatusCode() int64 { @@ -2805,7 +2732,7 @@ type DataSourceCustom_GraphQL struct { func (x *DataSourceCustom_GraphQL) Reset() { *x = DataSourceCustom_GraphQL{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2817,7 +2744,7 @@ func (x *DataSourceCustom_GraphQL) String() string { func (*DataSourceCustom_GraphQL) ProtoMessage() {} func (x *DataSourceCustom_GraphQL) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2830,7 +2757,7 @@ func (x *DataSourceCustom_GraphQL) ProtoReflect() protoreflect.Message { // Deprecated: Use DataSourceCustom_GraphQL.ProtoReflect.Descriptor instead. func (*DataSourceCustom_GraphQL) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{35} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{34} } func (x *DataSourceCustom_GraphQL) GetFetch() *FetchConfiguration { @@ -2886,7 +2813,7 @@ type GRPCConfiguration struct { func (x *GRPCConfiguration) Reset() { *x = GRPCConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2898,7 +2825,7 @@ func (x *GRPCConfiguration) String() string { func (*GRPCConfiguration) ProtoMessage() {} func (x *GRPCConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2911,7 +2838,7 @@ func (x *GRPCConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCConfiguration.ProtoReflect.Descriptor instead. func (*GRPCConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{36} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{35} } func (x *GRPCConfiguration) GetMapping() *GRPCMapping { @@ -2945,7 +2872,7 @@ type ImageReference struct { func (x *ImageReference) Reset() { *x = ImageReference{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2957,7 +2884,7 @@ func (x *ImageReference) String() string { func (*ImageReference) ProtoMessage() {} func (x *ImageReference) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2970,7 +2897,7 @@ func (x *ImageReference) ProtoReflect() protoreflect.Message { // Deprecated: Use ImageReference.ProtoReflect.Descriptor instead. func (*ImageReference) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{37} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{36} } func (x *ImageReference) GetRepository() string { @@ -3000,7 +2927,7 @@ type PluginConfiguration struct { func (x *PluginConfiguration) Reset() { *x = PluginConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3012,7 +2939,7 @@ func (x *PluginConfiguration) String() string { func (*PluginConfiguration) ProtoMessage() {} func (x *PluginConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3025,7 +2952,7 @@ func (x *PluginConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use PluginConfiguration.ProtoReflect.Descriptor instead. func (*PluginConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{38} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{37} } func (x *PluginConfiguration) GetName() string { @@ -3059,7 +2986,7 @@ type SSLConfiguration struct { func (x *SSLConfiguration) Reset() { *x = SSLConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3071,7 +2998,7 @@ func (x *SSLConfiguration) String() string { func (*SSLConfiguration) ProtoMessage() {} func (x *SSLConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3084,7 +3011,7 @@ func (x *SSLConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use SSLConfiguration.ProtoReflect.Descriptor instead. func (*SSLConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{39} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{38} } func (x *SSLConfiguration) GetEnabled() bool { @@ -3117,7 +3044,7 @@ type GRPCMapping struct { func (x *GRPCMapping) Reset() { *x = GRPCMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3129,7 +3056,7 @@ func (x *GRPCMapping) String() string { func (*GRPCMapping) ProtoMessage() {} func (x *GRPCMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3142,7 +3069,7 @@ func (x *GRPCMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCMapping.ProtoReflect.Descriptor instead. func (*GRPCMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{40} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{39} } func (x *GRPCMapping) GetVersion() int32 { @@ -3213,7 +3140,7 @@ type LookupMapping struct { func (x *LookupMapping) Reset() { *x = LookupMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3225,7 +3152,7 @@ func (x *LookupMapping) String() string { func (*LookupMapping) ProtoMessage() {} func (x *LookupMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3238,7 +3165,7 @@ func (x *LookupMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use LookupMapping.ProtoReflect.Descriptor instead. func (*LookupMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{41} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{40} } func (x *LookupMapping) GetType() LookupType { @@ -3289,7 +3216,7 @@ type LookupFieldMapping struct { func (x *LookupFieldMapping) Reset() { *x = LookupFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3301,7 +3228,7 @@ func (x *LookupFieldMapping) String() string { func (*LookupFieldMapping) ProtoMessage() {} func (x *LookupFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3314,7 +3241,7 @@ func (x *LookupFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use LookupFieldMapping.ProtoReflect.Descriptor instead. func (*LookupFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{42} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{41} } func (x *LookupFieldMapping) GetType() string { @@ -3350,7 +3277,7 @@ type OperationMapping struct { func (x *OperationMapping) Reset() { *x = OperationMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3362,7 +3289,7 @@ func (x *OperationMapping) String() string { func (*OperationMapping) ProtoMessage() {} func (x *OperationMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3375,7 +3302,7 @@ func (x *OperationMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use OperationMapping.ProtoReflect.Descriptor instead. func (*OperationMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{43} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{42} } func (x *OperationMapping) GetType() OperationType { @@ -3436,7 +3363,7 @@ type EntityMapping struct { func (x *EntityMapping) Reset() { *x = EntityMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3448,7 +3375,7 @@ func (x *EntityMapping) String() string { func (*EntityMapping) ProtoMessage() {} func (x *EntityMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3461,7 +3388,7 @@ func (x *EntityMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EntityMapping.ProtoReflect.Descriptor instead. func (*EntityMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{44} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{43} } func (x *EntityMapping) GetTypeName() string { @@ -3529,7 +3456,7 @@ type RequiredFieldMapping struct { func (x *RequiredFieldMapping) Reset() { *x = RequiredFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3541,7 +3468,7 @@ func (x *RequiredFieldMapping) String() string { func (*RequiredFieldMapping) ProtoMessage() {} func (x *RequiredFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3554,7 +3481,7 @@ func (x *RequiredFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use RequiredFieldMapping.ProtoReflect.Descriptor instead. func (*RequiredFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{45} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{44} } func (x *RequiredFieldMapping) GetFieldMapping() *FieldMapping { @@ -3598,7 +3525,7 @@ type TypeFieldMapping struct { func (x *TypeFieldMapping) Reset() { *x = TypeFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3610,7 +3537,7 @@ func (x *TypeFieldMapping) String() string { func (*TypeFieldMapping) ProtoMessage() {} func (x *TypeFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3623,7 +3550,7 @@ func (x *TypeFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeFieldMapping.ProtoReflect.Descriptor instead. func (*TypeFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{46} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{45} } func (x *TypeFieldMapping) GetType() string { @@ -3655,7 +3582,7 @@ type FieldMapping struct { func (x *FieldMapping) Reset() { *x = FieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3667,7 +3594,7 @@ func (x *FieldMapping) String() string { func (*FieldMapping) ProtoMessage() {} func (x *FieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3680,7 +3607,7 @@ func (x *FieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldMapping.ProtoReflect.Descriptor instead. func (*FieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{47} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{46} } func (x *FieldMapping) GetOriginal() string { @@ -3717,7 +3644,7 @@ type ArgumentMapping struct { func (x *ArgumentMapping) Reset() { *x = ArgumentMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3729,7 +3656,7 @@ func (x *ArgumentMapping) String() string { func (*ArgumentMapping) ProtoMessage() {} func (x *ArgumentMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3742,7 +3669,7 @@ func (x *ArgumentMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use ArgumentMapping.ProtoReflect.Descriptor instead. func (*ArgumentMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{48} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{47} } func (x *ArgumentMapping) GetOriginal() string { @@ -3769,7 +3696,7 @@ type EnumMapping struct { func (x *EnumMapping) Reset() { *x = EnumMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3781,7 +3708,7 @@ func (x *EnumMapping) String() string { func (*EnumMapping) ProtoMessage() {} func (x *EnumMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3794,7 +3721,7 @@ func (x *EnumMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EnumMapping.ProtoReflect.Descriptor instead. func (*EnumMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{49} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{48} } func (x *EnumMapping) GetType() string { @@ -3821,7 +3748,7 @@ type EnumValueMapping struct { func (x *EnumValueMapping) Reset() { *x = EnumValueMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3833,7 +3760,7 @@ func (x *EnumValueMapping) String() string { func (*EnumValueMapping) ProtoMessage() {} func (x *EnumValueMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3846,7 +3773,7 @@ func (x *EnumValueMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EnumValueMapping.ProtoReflect.Descriptor instead. func (*EnumValueMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{50} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{49} } func (x *EnumValueMapping) GetOriginal() string { @@ -3874,7 +3801,7 @@ type NatsStreamConfiguration struct { func (x *NatsStreamConfiguration) Reset() { *x = NatsStreamConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3886,7 +3813,7 @@ func (x *NatsStreamConfiguration) String() string { func (*NatsStreamConfiguration) ProtoMessage() {} func (x *NatsStreamConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3899,7 +3826,7 @@ func (x *NatsStreamConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use NatsStreamConfiguration.ProtoReflect.Descriptor instead. func (*NatsStreamConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{51} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{50} } func (x *NatsStreamConfiguration) GetConsumerName() string { @@ -3934,7 +3861,7 @@ type NatsEventConfiguration struct { func (x *NatsEventConfiguration) Reset() { *x = NatsEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3946,7 +3873,7 @@ func (x *NatsEventConfiguration) String() string { func (*NatsEventConfiguration) ProtoMessage() {} func (x *NatsEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3959,7 +3886,7 @@ func (x *NatsEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use NatsEventConfiguration.ProtoReflect.Descriptor instead. func (*NatsEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{52} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{51} } func (x *NatsEventConfiguration) GetEngineEventConfiguration() *EngineEventConfiguration { @@ -3993,7 +3920,7 @@ type KafkaEventConfiguration struct { func (x *KafkaEventConfiguration) Reset() { *x = KafkaEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4005,7 +3932,7 @@ func (x *KafkaEventConfiguration) String() string { func (*KafkaEventConfiguration) ProtoMessage() {} func (x *KafkaEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4018,7 +3945,7 @@ func (x *KafkaEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use KafkaEventConfiguration.ProtoReflect.Descriptor instead. func (*KafkaEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{53} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{52} } func (x *KafkaEventConfiguration) GetEngineEventConfiguration() *EngineEventConfiguration { @@ -4045,7 +3972,7 @@ type RedisEventConfiguration struct { func (x *RedisEventConfiguration) Reset() { *x = RedisEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4057,7 +3984,7 @@ func (x *RedisEventConfiguration) String() string { func (*RedisEventConfiguration) ProtoMessage() {} func (x *RedisEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4070,7 +3997,7 @@ func (x *RedisEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use RedisEventConfiguration.ProtoReflect.Descriptor instead. func (*RedisEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{54} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{53} } func (x *RedisEventConfiguration) GetEngineEventConfiguration() *EngineEventConfiguration { @@ -4099,7 +4026,7 @@ type EngineEventConfiguration struct { func (x *EngineEventConfiguration) Reset() { *x = EngineEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4111,7 +4038,7 @@ func (x *EngineEventConfiguration) String() string { func (*EngineEventConfiguration) ProtoMessage() {} func (x *EngineEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4124,7 +4051,7 @@ func (x *EngineEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use EngineEventConfiguration.ProtoReflect.Descriptor instead. func (*EngineEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{55} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{54} } func (x *EngineEventConfiguration) GetProviderId() string { @@ -4166,7 +4093,7 @@ type DataSourceCustomEvents struct { func (x *DataSourceCustomEvents) Reset() { *x = DataSourceCustomEvents{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4178,7 +4105,7 @@ func (x *DataSourceCustomEvents) String() string { func (*DataSourceCustomEvents) ProtoMessage() {} func (x *DataSourceCustomEvents) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4191,7 +4118,7 @@ func (x *DataSourceCustomEvents) ProtoReflect() protoreflect.Message { // Deprecated: Use DataSourceCustomEvents.ProtoReflect.Descriptor instead. func (*DataSourceCustomEvents) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{56} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{55} } func (x *DataSourceCustomEvents) GetNats() []*NatsEventConfiguration { @@ -4224,7 +4151,7 @@ type DataSourceCustom_Static struct { func (x *DataSourceCustom_Static) Reset() { *x = DataSourceCustom_Static{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4236,7 +4163,7 @@ func (x *DataSourceCustom_Static) String() string { func (*DataSourceCustom_Static) ProtoMessage() {} func (x *DataSourceCustom_Static) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4249,7 +4176,7 @@ func (x *DataSourceCustom_Static) ProtoReflect() protoreflect.Message { // Deprecated: Use DataSourceCustom_Static.ProtoReflect.Descriptor instead. func (*DataSourceCustom_Static) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{57} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{56} } func (x *DataSourceCustom_Static) GetData() *ConfigurationVariable { @@ -4272,7 +4199,7 @@ type ConfigurationVariable struct { func (x *ConfigurationVariable) Reset() { *x = ConfigurationVariable{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4284,7 +4211,7 @@ func (x *ConfigurationVariable) String() string { func (*ConfigurationVariable) ProtoMessage() {} func (x *ConfigurationVariable) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4297,7 +4224,7 @@ func (x *ConfigurationVariable) ProtoReflect() protoreflect.Message { // Deprecated: Use ConfigurationVariable.ProtoReflect.Descriptor instead. func (*ConfigurationVariable) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{58} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{57} } func (x *ConfigurationVariable) GetKind() ConfigurationVariableKind { @@ -4345,7 +4272,7 @@ type DirectiveConfiguration struct { func (x *DirectiveConfiguration) Reset() { *x = DirectiveConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4357,7 +4284,7 @@ func (x *DirectiveConfiguration) String() string { func (*DirectiveConfiguration) ProtoMessage() {} func (x *DirectiveConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4370,7 +4297,7 @@ func (x *DirectiveConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use DirectiveConfiguration.ProtoReflect.Descriptor instead. func (*DirectiveConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{59} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{58} } func (x *DirectiveConfiguration) GetDirectiveName() string { @@ -4397,7 +4324,7 @@ type URLQueryConfiguration struct { func (x *URLQueryConfiguration) Reset() { *x = URLQueryConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4409,7 +4336,7 @@ func (x *URLQueryConfiguration) String() string { func (*URLQueryConfiguration) ProtoMessage() {} func (x *URLQueryConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4422,7 +4349,7 @@ func (x *URLQueryConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use URLQueryConfiguration.ProtoReflect.Descriptor instead. func (*URLQueryConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{60} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{59} } func (x *URLQueryConfiguration) GetName() string { @@ -4448,7 +4375,7 @@ type HTTPHeader struct { func (x *HTTPHeader) Reset() { *x = HTTPHeader{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4460,7 +4387,7 @@ func (x *HTTPHeader) String() string { func (*HTTPHeader) ProtoMessage() {} func (x *HTTPHeader) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4473,7 +4400,7 @@ func (x *HTTPHeader) ProtoReflect() protoreflect.Message { // Deprecated: Use HTTPHeader.ProtoReflect.Descriptor instead. func (*HTTPHeader) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{61} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{60} } func (x *HTTPHeader) GetValues() []*ConfigurationVariable { @@ -4494,7 +4421,7 @@ type MTLSConfiguration struct { func (x *MTLSConfiguration) Reset() { *x = MTLSConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4506,7 +4433,7 @@ func (x *MTLSConfiguration) String() string { func (*MTLSConfiguration) ProtoMessage() {} func (x *MTLSConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4519,7 +4446,7 @@ func (x *MTLSConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use MTLSConfiguration.ProtoReflect.Descriptor instead. func (*MTLSConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{62} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{61} } func (x *MTLSConfiguration) GetKey() *ConfigurationVariable { @@ -4557,7 +4484,7 @@ type GraphQLSubscriptionConfiguration struct { func (x *GraphQLSubscriptionConfiguration) Reset() { *x = GraphQLSubscriptionConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4569,7 +4496,7 @@ func (x *GraphQLSubscriptionConfiguration) String() string { func (*GraphQLSubscriptionConfiguration) ProtoMessage() {} func (x *GraphQLSubscriptionConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4582,7 +4509,7 @@ func (x *GraphQLSubscriptionConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use GraphQLSubscriptionConfiguration.ProtoReflect.Descriptor instead. func (*GraphQLSubscriptionConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{63} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{62} } func (x *GraphQLSubscriptionConfiguration) GetEnabled() bool { @@ -4630,7 +4557,7 @@ type GraphQLFederationConfiguration struct { func (x *GraphQLFederationConfiguration) Reset() { *x = GraphQLFederationConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4642,7 +4569,7 @@ func (x *GraphQLFederationConfiguration) String() string { func (*GraphQLFederationConfiguration) ProtoMessage() {} func (x *GraphQLFederationConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4655,7 +4582,7 @@ func (x *GraphQLFederationConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use GraphQLFederationConfiguration.ProtoReflect.Descriptor instead. func (*GraphQLFederationConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{64} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{63} } func (x *GraphQLFederationConfiguration) GetEnabled() bool { @@ -4682,7 +4609,7 @@ type InternedString struct { func (x *InternedString) Reset() { *x = InternedString{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4694,7 +4621,7 @@ func (x *InternedString) String() string { func (*InternedString) ProtoMessage() {} func (x *InternedString) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4707,7 +4634,7 @@ func (x *InternedString) ProtoReflect() protoreflect.Message { // Deprecated: Use InternedString.ProtoReflect.Descriptor instead. func (*InternedString) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{65} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{64} } func (x *InternedString) GetKey() string { @@ -4727,7 +4654,7 @@ type SingleTypeField struct { func (x *SingleTypeField) Reset() { *x = SingleTypeField{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4739,7 +4666,7 @@ func (x *SingleTypeField) String() string { func (*SingleTypeField) ProtoMessage() {} func (x *SingleTypeField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4752,7 +4679,7 @@ func (x *SingleTypeField) ProtoReflect() protoreflect.Message { // Deprecated: Use SingleTypeField.ProtoReflect.Descriptor instead. func (*SingleTypeField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{66} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{65} } func (x *SingleTypeField) GetTypeName() string { @@ -4779,7 +4706,7 @@ type SubscriptionFieldCondition struct { func (x *SubscriptionFieldCondition) Reset() { *x = SubscriptionFieldCondition{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4791,7 +4718,7 @@ func (x *SubscriptionFieldCondition) String() string { func (*SubscriptionFieldCondition) ProtoMessage() {} func (x *SubscriptionFieldCondition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4804,7 +4731,7 @@ func (x *SubscriptionFieldCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionFieldCondition.ProtoReflect.Descriptor instead. func (*SubscriptionFieldCondition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{67} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{66} } func (x *SubscriptionFieldCondition) GetFieldPath() []string { @@ -4833,7 +4760,7 @@ type SubscriptionFilterCondition struct { func (x *SubscriptionFilterCondition) Reset() { *x = SubscriptionFilterCondition{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4845,7 +4772,7 @@ func (x *SubscriptionFilterCondition) String() string { func (*SubscriptionFilterCondition) ProtoMessage() {} func (x *SubscriptionFilterCondition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4858,7 +4785,7 @@ func (x *SubscriptionFilterCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionFilterCondition.ProtoReflect.Descriptor instead. func (*SubscriptionFilterCondition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{68} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{67} } func (x *SubscriptionFilterCondition) GetAnd() []*SubscriptionFilterCondition { @@ -4898,7 +4825,7 @@ type CacheWarmerOperations struct { func (x *CacheWarmerOperations) Reset() { *x = CacheWarmerOperations{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[69] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4910,7 +4837,7 @@ func (x *CacheWarmerOperations) String() string { func (*CacheWarmerOperations) ProtoMessage() {} func (x *CacheWarmerOperations) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[69] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4923,7 +4850,7 @@ func (x *CacheWarmerOperations) ProtoReflect() protoreflect.Message { // Deprecated: Use CacheWarmerOperations.ProtoReflect.Descriptor instead. func (*CacheWarmerOperations) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{69} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{68} } func (x *CacheWarmerOperations) GetOperations() []*Operation { @@ -4943,7 +4870,7 @@ type Operation struct { func (x *Operation) Reset() { *x = Operation{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[70] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4955,7 +4882,7 @@ func (x *Operation) String() string { func (*Operation) ProtoMessage() {} func (x *Operation) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[70] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[69] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4968,7 +4895,7 @@ func (x *Operation) ProtoReflect() protoreflect.Message { // Deprecated: Use Operation.ProtoReflect.Descriptor instead. func (*Operation) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{70} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{69} } func (x *Operation) GetRequest() *OperationRequest { @@ -4996,7 +4923,7 @@ type OperationRequest struct { func (x *OperationRequest) Reset() { *x = OperationRequest{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[71] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5008,7 +4935,7 @@ func (x *OperationRequest) String() string { func (*OperationRequest) ProtoMessage() {} func (x *OperationRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[71] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[70] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5021,7 +4948,7 @@ func (x *OperationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use OperationRequest.ProtoReflect.Descriptor instead. func (*OperationRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{71} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{70} } func (x *OperationRequest) GetOperationName() string { @@ -5054,7 +4981,7 @@ type Extension struct { func (x *Extension) Reset() { *x = Extension{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[72] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5066,7 +4993,7 @@ func (x *Extension) String() string { func (*Extension) ProtoMessage() {} func (x *Extension) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[72] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[71] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5079,7 +5006,7 @@ func (x *Extension) ProtoReflect() protoreflect.Message { // Deprecated: Use Extension.ProtoReflect.Descriptor instead. func (*Extension) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{72} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{71} } func (x *Extension) GetPersistedQuery() *PersistedQuery { @@ -5099,7 +5026,7 @@ type PersistedQuery struct { func (x *PersistedQuery) Reset() { *x = PersistedQuery{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[73] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5111,7 +5038,7 @@ func (x *PersistedQuery) String() string { func (*PersistedQuery) ProtoMessage() {} func (x *PersistedQuery) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[73] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[72] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5124,7 +5051,7 @@ func (x *PersistedQuery) ProtoReflect() protoreflect.Message { // Deprecated: Use PersistedQuery.ProtoReflect.Descriptor instead. func (*PersistedQuery) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{73} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{72} } func (x *PersistedQuery) GetSha256Hash() string { @@ -5151,7 +5078,7 @@ type ClientInfo struct { func (x *ClientInfo) Reset() { *x = ClientInfo{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[74] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5163,7 +5090,7 @@ func (x *ClientInfo) String() string { func (*ClientInfo) ProtoMessage() {} func (x *ClientInfo) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[74] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[73] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5176,7 +5103,7 @@ func (x *ClientInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ClientInfo.ProtoReflect.Descriptor instead. func (*ClientInfo) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{74} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{73} } func (x *ClientInfo) GetName() string { @@ -5271,12 +5198,11 @@ const file_wg_cosmo_node_v1_node_proto_rawDesc = "" + "\x11entity_interfaces\x18\x0e \x03(\v2..wg.cosmo.node.v1.EntityInterfaceConfigurationR\x10entityInterfaces\x12[\n" + "\x11interface_objects\x18\x0f \x03(\v2..wg.cosmo.node.v1.EntityInterfaceConfigurationR\x10interfaceObjects\x12R\n" + "\x12cost_configuration\x18\x10 \x01(\v2#.wg.cosmo.node.v1.CostConfigurationR\x11costConfiguration\x12n\n" + - "\x1centity_caching_configuration\x18\x11 \x01(\v2,.wg.cosmo.node.v1.EntityCachingConfigurationR\x1aentityCachingConfiguration\"\xb0\x04\n" + + "\x1centity_caching_configuration\x18\x11 \x01(\v2,.wg.cosmo.node.v1.EntityCachingConfigurationR\x1aentityCachingConfiguration\"\xbe\x03\n" + "\x1aEntityCachingConfiguration\x12M\n" + "\fentity_cache\x18\x01 \x03(\v2*.wg.cosmo.node.v1.EntityCacheConfigurationR\ventityCache\x12v\n" + "\x1fcache_invalidate_configurations\x18\x02 \x03(\v2..wg.cosmo.node.v1.CacheInvalidateConfigurationR\x1dcacheInvalidateConfigurations\x12p\n" + - "\x1dcache_populate_configurations\x18\x03 \x03(\v2,.wg.cosmo.node.v1.CachePopulateConfigurationR\x1bcachePopulateConfigurations\x12p\n" + - "\x1drequest_scoped_configurations\x18\x04 \x03(\v2,.wg.cosmo.node.v1.RequestScopedConfigurationR\x1brequestScopedConfigurations\x12g\n" + + "\x1dcache_populate_configurations\x18\x03 \x03(\v2,.wg.cosmo.node.v1.CachePopulateConfigurationR\x1bcachePopulateConfigurations\x12g\n" + "\x1aquery_cache_configurations\x18\x05 \x03(\v2).wg.cosmo.node.v1.QueryCacheConfigurationR\x18queryCacheConfigurations\"\x95\x02\n" + "\x18EntityCacheConfiguration\x12\x1b\n" + "\ttype_name\x18\x01 \x01(\tR\btypeName\x12&\n" + @@ -5296,12 +5222,7 @@ const file_wg_cosmo_node_v1_node_proto_rawDesc = "" + "field_name\x18\x01 \x01(\tR\tfieldName\x12%\n" + "\x0eoperation_type\x18\x02 \x01(\tR\roperationType\x12&\n" + "\x0fmax_age_seconds\x18\x03 \x01(\x03R\rmaxAgeSeconds\x12(\n" + - "\x10entity_type_name\x18\x04 \x01(\tR\x0eentityTypeName\"o\n" + - "\x1aRequestScopedConfiguration\x12\x1d\n" + - "\n" + - "field_name\x18\x01 \x01(\tR\tfieldName\x12\x1b\n" + - "\ttype_name\x18\x02 \x01(\tR\btypeName\x12\x15\n" + - "\x06l1_key\x18\x03 \x01(\tR\x05l1Key\"\xa8\x02\n" + + "\x10entity_type_name\x18\x04 \x01(\tR\x0eentityTypeName\"\xa8\x02\n" + "\x17QueryCacheConfiguration\x12\x1d\n" + "\n" + "field_name\x18\x01 \x01(\tR\tfieldName\x12&\n" + @@ -5656,7 +5577,7 @@ func file_wg_cosmo_node_v1_node_proto_rawDescGZIP() []byte { } var file_wg_cosmo_node_v1_node_proto_enumTypes = make([]protoimpl.EnumInfo, 8) -var file_wg_cosmo_node_v1_node_proto_msgTypes = make([]protoimpl.MessageInfo, 82) +var file_wg_cosmo_node_v1_node_proto_msgTypes = make([]protoimpl.MessageInfo, 81) var file_wg_cosmo_node_v1_node_proto_goTypes = []any{ (ArgumentRenderConfiguration)(0), // 0: wg.cosmo.node.v1.ArgumentRenderConfiguration (ArgumentSource)(0), // 1: wg.cosmo.node.v1.ArgumentSource @@ -5682,192 +5603,190 @@ var file_wg_cosmo_node_v1_node_proto_goTypes = []any{ (*EntityCacheConfiguration)(nil), // 21: wg.cosmo.node.v1.EntityCacheConfiguration (*CacheInvalidateConfiguration)(nil), // 22: wg.cosmo.node.v1.CacheInvalidateConfiguration (*CachePopulateConfiguration)(nil), // 23: wg.cosmo.node.v1.CachePopulateConfiguration - (*RequestScopedConfiguration)(nil), // 24: wg.cosmo.node.v1.RequestScopedConfiguration - (*QueryCacheConfiguration)(nil), // 25: wg.cosmo.node.v1.QueryCacheConfiguration - (*EntityKeyMapping)(nil), // 26: wg.cosmo.node.v1.EntityKeyMapping - (*EntityCacheFieldMapping)(nil), // 27: wg.cosmo.node.v1.EntityCacheFieldMapping - (*CostConfiguration)(nil), // 28: wg.cosmo.node.v1.CostConfiguration - (*FieldWeightConfiguration)(nil), // 29: wg.cosmo.node.v1.FieldWeightConfiguration - (*FieldListSizeConfiguration)(nil), // 30: wg.cosmo.node.v1.FieldListSizeConfiguration - (*ArgumentConfiguration)(nil), // 31: wg.cosmo.node.v1.ArgumentConfiguration - (*Scopes)(nil), // 32: wg.cosmo.node.v1.Scopes - (*AuthorizationConfiguration)(nil), // 33: wg.cosmo.node.v1.AuthorizationConfiguration - (*FieldConfiguration)(nil), // 34: wg.cosmo.node.v1.FieldConfiguration - (*TypeConfiguration)(nil), // 35: wg.cosmo.node.v1.TypeConfiguration - (*TypeField)(nil), // 36: wg.cosmo.node.v1.TypeField - (*FieldCoordinates)(nil), // 37: wg.cosmo.node.v1.FieldCoordinates - (*FieldSetCondition)(nil), // 38: wg.cosmo.node.v1.FieldSetCondition - (*RequiredField)(nil), // 39: wg.cosmo.node.v1.RequiredField - (*EntityInterfaceConfiguration)(nil), // 40: wg.cosmo.node.v1.EntityInterfaceConfiguration - (*FetchConfiguration)(nil), // 41: wg.cosmo.node.v1.FetchConfiguration - (*StatusCodeTypeMapping)(nil), // 42: wg.cosmo.node.v1.StatusCodeTypeMapping - (*DataSourceCustom_GraphQL)(nil), // 43: wg.cosmo.node.v1.DataSourceCustom_GraphQL - (*GRPCConfiguration)(nil), // 44: wg.cosmo.node.v1.GRPCConfiguration - (*ImageReference)(nil), // 45: wg.cosmo.node.v1.ImageReference - (*PluginConfiguration)(nil), // 46: wg.cosmo.node.v1.PluginConfiguration - (*SSLConfiguration)(nil), // 47: wg.cosmo.node.v1.SSLConfiguration - (*GRPCMapping)(nil), // 48: wg.cosmo.node.v1.GRPCMapping - (*LookupMapping)(nil), // 49: wg.cosmo.node.v1.LookupMapping - (*LookupFieldMapping)(nil), // 50: wg.cosmo.node.v1.LookupFieldMapping - (*OperationMapping)(nil), // 51: wg.cosmo.node.v1.OperationMapping - (*EntityMapping)(nil), // 52: wg.cosmo.node.v1.EntityMapping - (*RequiredFieldMapping)(nil), // 53: wg.cosmo.node.v1.RequiredFieldMapping - (*TypeFieldMapping)(nil), // 54: wg.cosmo.node.v1.TypeFieldMapping - (*FieldMapping)(nil), // 55: wg.cosmo.node.v1.FieldMapping - (*ArgumentMapping)(nil), // 56: wg.cosmo.node.v1.ArgumentMapping - (*EnumMapping)(nil), // 57: wg.cosmo.node.v1.EnumMapping - (*EnumValueMapping)(nil), // 58: wg.cosmo.node.v1.EnumValueMapping - (*NatsStreamConfiguration)(nil), // 59: wg.cosmo.node.v1.NatsStreamConfiguration - (*NatsEventConfiguration)(nil), // 60: wg.cosmo.node.v1.NatsEventConfiguration - (*KafkaEventConfiguration)(nil), // 61: wg.cosmo.node.v1.KafkaEventConfiguration - (*RedisEventConfiguration)(nil), // 62: wg.cosmo.node.v1.RedisEventConfiguration - (*EngineEventConfiguration)(nil), // 63: wg.cosmo.node.v1.EngineEventConfiguration - (*DataSourceCustomEvents)(nil), // 64: wg.cosmo.node.v1.DataSourceCustomEvents - (*DataSourceCustom_Static)(nil), // 65: wg.cosmo.node.v1.DataSourceCustom_Static - (*ConfigurationVariable)(nil), // 66: wg.cosmo.node.v1.ConfigurationVariable - (*DirectiveConfiguration)(nil), // 67: wg.cosmo.node.v1.DirectiveConfiguration - (*URLQueryConfiguration)(nil), // 68: wg.cosmo.node.v1.URLQueryConfiguration - (*HTTPHeader)(nil), // 69: wg.cosmo.node.v1.HTTPHeader - (*MTLSConfiguration)(nil), // 70: wg.cosmo.node.v1.MTLSConfiguration - (*GraphQLSubscriptionConfiguration)(nil), // 71: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration - (*GraphQLFederationConfiguration)(nil), // 72: wg.cosmo.node.v1.GraphQLFederationConfiguration - (*InternedString)(nil), // 73: wg.cosmo.node.v1.InternedString - (*SingleTypeField)(nil), // 74: wg.cosmo.node.v1.SingleTypeField - (*SubscriptionFieldCondition)(nil), // 75: wg.cosmo.node.v1.SubscriptionFieldCondition - (*SubscriptionFilterCondition)(nil), // 76: wg.cosmo.node.v1.SubscriptionFilterCondition - (*CacheWarmerOperations)(nil), // 77: wg.cosmo.node.v1.CacheWarmerOperations - (*Operation)(nil), // 78: wg.cosmo.node.v1.Operation - (*OperationRequest)(nil), // 79: wg.cosmo.node.v1.OperationRequest - (*Extension)(nil), // 80: wg.cosmo.node.v1.Extension - (*PersistedQuery)(nil), // 81: wg.cosmo.node.v1.PersistedQuery - (*ClientInfo)(nil), // 82: wg.cosmo.node.v1.ClientInfo - nil, // 83: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry - nil, // 84: wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry - nil, // 85: wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry - nil, // 86: wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry - nil, // 87: wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry - nil, // 88: wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry - nil, // 89: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry - (common.EnumStatusCode)(0), // 90: wg.cosmo.common.EnumStatusCode - (common.GraphQLSubscriptionProtocol)(0), // 91: wg.cosmo.common.GraphQLSubscriptionProtocol - (common.GraphQLWebsocketSubprotocol)(0), // 92: wg.cosmo.common.GraphQLWebsocketSubprotocol + (*QueryCacheConfiguration)(nil), // 24: wg.cosmo.node.v1.QueryCacheConfiguration + (*EntityKeyMapping)(nil), // 25: wg.cosmo.node.v1.EntityKeyMapping + (*EntityCacheFieldMapping)(nil), // 26: wg.cosmo.node.v1.EntityCacheFieldMapping + (*CostConfiguration)(nil), // 27: wg.cosmo.node.v1.CostConfiguration + (*FieldWeightConfiguration)(nil), // 28: wg.cosmo.node.v1.FieldWeightConfiguration + (*FieldListSizeConfiguration)(nil), // 29: wg.cosmo.node.v1.FieldListSizeConfiguration + (*ArgumentConfiguration)(nil), // 30: wg.cosmo.node.v1.ArgumentConfiguration + (*Scopes)(nil), // 31: wg.cosmo.node.v1.Scopes + (*AuthorizationConfiguration)(nil), // 32: wg.cosmo.node.v1.AuthorizationConfiguration + (*FieldConfiguration)(nil), // 33: wg.cosmo.node.v1.FieldConfiguration + (*TypeConfiguration)(nil), // 34: wg.cosmo.node.v1.TypeConfiguration + (*TypeField)(nil), // 35: wg.cosmo.node.v1.TypeField + (*FieldCoordinates)(nil), // 36: wg.cosmo.node.v1.FieldCoordinates + (*FieldSetCondition)(nil), // 37: wg.cosmo.node.v1.FieldSetCondition + (*RequiredField)(nil), // 38: wg.cosmo.node.v1.RequiredField + (*EntityInterfaceConfiguration)(nil), // 39: wg.cosmo.node.v1.EntityInterfaceConfiguration + (*FetchConfiguration)(nil), // 40: wg.cosmo.node.v1.FetchConfiguration + (*StatusCodeTypeMapping)(nil), // 41: wg.cosmo.node.v1.StatusCodeTypeMapping + (*DataSourceCustom_GraphQL)(nil), // 42: wg.cosmo.node.v1.DataSourceCustom_GraphQL + (*GRPCConfiguration)(nil), // 43: wg.cosmo.node.v1.GRPCConfiguration + (*ImageReference)(nil), // 44: wg.cosmo.node.v1.ImageReference + (*PluginConfiguration)(nil), // 45: wg.cosmo.node.v1.PluginConfiguration + (*SSLConfiguration)(nil), // 46: wg.cosmo.node.v1.SSLConfiguration + (*GRPCMapping)(nil), // 47: wg.cosmo.node.v1.GRPCMapping + (*LookupMapping)(nil), // 48: wg.cosmo.node.v1.LookupMapping + (*LookupFieldMapping)(nil), // 49: wg.cosmo.node.v1.LookupFieldMapping + (*OperationMapping)(nil), // 50: wg.cosmo.node.v1.OperationMapping + (*EntityMapping)(nil), // 51: wg.cosmo.node.v1.EntityMapping + (*RequiredFieldMapping)(nil), // 52: wg.cosmo.node.v1.RequiredFieldMapping + (*TypeFieldMapping)(nil), // 53: wg.cosmo.node.v1.TypeFieldMapping + (*FieldMapping)(nil), // 54: wg.cosmo.node.v1.FieldMapping + (*ArgumentMapping)(nil), // 55: wg.cosmo.node.v1.ArgumentMapping + (*EnumMapping)(nil), // 56: wg.cosmo.node.v1.EnumMapping + (*EnumValueMapping)(nil), // 57: wg.cosmo.node.v1.EnumValueMapping + (*NatsStreamConfiguration)(nil), // 58: wg.cosmo.node.v1.NatsStreamConfiguration + (*NatsEventConfiguration)(nil), // 59: wg.cosmo.node.v1.NatsEventConfiguration + (*KafkaEventConfiguration)(nil), // 60: wg.cosmo.node.v1.KafkaEventConfiguration + (*RedisEventConfiguration)(nil), // 61: wg.cosmo.node.v1.RedisEventConfiguration + (*EngineEventConfiguration)(nil), // 62: wg.cosmo.node.v1.EngineEventConfiguration + (*DataSourceCustomEvents)(nil), // 63: wg.cosmo.node.v1.DataSourceCustomEvents + (*DataSourceCustom_Static)(nil), // 64: wg.cosmo.node.v1.DataSourceCustom_Static + (*ConfigurationVariable)(nil), // 65: wg.cosmo.node.v1.ConfigurationVariable + (*DirectiveConfiguration)(nil), // 66: wg.cosmo.node.v1.DirectiveConfiguration + (*URLQueryConfiguration)(nil), // 67: wg.cosmo.node.v1.URLQueryConfiguration + (*HTTPHeader)(nil), // 68: wg.cosmo.node.v1.HTTPHeader + (*MTLSConfiguration)(nil), // 69: wg.cosmo.node.v1.MTLSConfiguration + (*GraphQLSubscriptionConfiguration)(nil), // 70: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration + (*GraphQLFederationConfiguration)(nil), // 71: wg.cosmo.node.v1.GraphQLFederationConfiguration + (*InternedString)(nil), // 72: wg.cosmo.node.v1.InternedString + (*SingleTypeField)(nil), // 73: wg.cosmo.node.v1.SingleTypeField + (*SubscriptionFieldCondition)(nil), // 74: wg.cosmo.node.v1.SubscriptionFieldCondition + (*SubscriptionFilterCondition)(nil), // 75: wg.cosmo.node.v1.SubscriptionFilterCondition + (*CacheWarmerOperations)(nil), // 76: wg.cosmo.node.v1.CacheWarmerOperations + (*Operation)(nil), // 77: wg.cosmo.node.v1.Operation + (*OperationRequest)(nil), // 78: wg.cosmo.node.v1.OperationRequest + (*Extension)(nil), // 79: wg.cosmo.node.v1.Extension + (*PersistedQuery)(nil), // 80: wg.cosmo.node.v1.PersistedQuery + (*ClientInfo)(nil), // 81: wg.cosmo.node.v1.ClientInfo + nil, // 82: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry + nil, // 83: wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry + nil, // 84: wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry + nil, // 85: wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry + nil, // 86: wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry + nil, // 87: wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry + nil, // 88: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry + (common.EnumStatusCode)(0), // 89: wg.cosmo.common.EnumStatusCode + (common.GraphQLSubscriptionProtocol)(0), // 90: wg.cosmo.common.GraphQLSubscriptionProtocol + (common.GraphQLWebsocketSubprotocol)(0), // 91: wg.cosmo.common.GraphQLWebsocketSubprotocol } var file_wg_cosmo_node_v1_node_proto_depIdxs = []int32{ - 83, // 0: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.config_by_feature_flag_name:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry + 82, // 0: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.config_by_feature_flag_name:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry 18, // 1: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig.engine_config:type_name -> wg.cosmo.node.v1.EngineConfiguration 8, // 2: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig.subgraphs:type_name -> wg.cosmo.node.v1.Subgraph 18, // 3: wg.cosmo.node.v1.RouterConfig.engine_config:type_name -> wg.cosmo.node.v1.EngineConfiguration 8, // 4: wg.cosmo.node.v1.RouterConfig.subgraphs:type_name -> wg.cosmo.node.v1.Subgraph 9, // 5: wg.cosmo.node.v1.RouterConfig.feature_flag_configs:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs - 90, // 6: wg.cosmo.node.v1.Response.code:type_name -> wg.cosmo.common.EnumStatusCode + 89, // 6: wg.cosmo.node.v1.Response.code:type_name -> wg.cosmo.common.EnumStatusCode 15, // 7: wg.cosmo.node.v1.RegistrationInfo.account_limits:type_name -> wg.cosmo.node.v1.AccountLimits 12, // 8: wg.cosmo.node.v1.SelfRegisterResponse.response:type_name -> wg.cosmo.node.v1.Response 14, // 9: wg.cosmo.node.v1.SelfRegisterResponse.registrationInfo:type_name -> wg.cosmo.node.v1.RegistrationInfo 19, // 10: wg.cosmo.node.v1.EngineConfiguration.datasource_configurations:type_name -> wg.cosmo.node.v1.DataSourceConfiguration - 34, // 11: wg.cosmo.node.v1.EngineConfiguration.field_configurations:type_name -> wg.cosmo.node.v1.FieldConfiguration - 35, // 12: wg.cosmo.node.v1.EngineConfiguration.type_configurations:type_name -> wg.cosmo.node.v1.TypeConfiguration - 84, // 13: wg.cosmo.node.v1.EngineConfiguration.string_storage:type_name -> wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry + 33, // 11: wg.cosmo.node.v1.EngineConfiguration.field_configurations:type_name -> wg.cosmo.node.v1.FieldConfiguration + 34, // 12: wg.cosmo.node.v1.EngineConfiguration.type_configurations:type_name -> wg.cosmo.node.v1.TypeConfiguration + 83, // 13: wg.cosmo.node.v1.EngineConfiguration.string_storage:type_name -> wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry 2, // 14: wg.cosmo.node.v1.DataSourceConfiguration.kind:type_name -> wg.cosmo.node.v1.DataSourceKind - 36, // 15: wg.cosmo.node.v1.DataSourceConfiguration.root_nodes:type_name -> wg.cosmo.node.v1.TypeField - 36, // 16: wg.cosmo.node.v1.DataSourceConfiguration.child_nodes:type_name -> wg.cosmo.node.v1.TypeField - 43, // 17: wg.cosmo.node.v1.DataSourceConfiguration.custom_graphql:type_name -> wg.cosmo.node.v1.DataSourceCustom_GraphQL - 65, // 18: wg.cosmo.node.v1.DataSourceConfiguration.custom_static:type_name -> wg.cosmo.node.v1.DataSourceCustom_Static - 67, // 19: wg.cosmo.node.v1.DataSourceConfiguration.directives:type_name -> wg.cosmo.node.v1.DirectiveConfiguration - 39, // 20: wg.cosmo.node.v1.DataSourceConfiguration.keys:type_name -> wg.cosmo.node.v1.RequiredField - 39, // 21: wg.cosmo.node.v1.DataSourceConfiguration.provides:type_name -> wg.cosmo.node.v1.RequiredField - 39, // 22: wg.cosmo.node.v1.DataSourceConfiguration.requires:type_name -> wg.cosmo.node.v1.RequiredField - 64, // 23: wg.cosmo.node.v1.DataSourceConfiguration.custom_events:type_name -> wg.cosmo.node.v1.DataSourceCustomEvents - 40, // 24: wg.cosmo.node.v1.DataSourceConfiguration.entity_interfaces:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration - 40, // 25: wg.cosmo.node.v1.DataSourceConfiguration.interface_objects:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration - 28, // 26: wg.cosmo.node.v1.DataSourceConfiguration.cost_configuration:type_name -> wg.cosmo.node.v1.CostConfiguration + 35, // 15: wg.cosmo.node.v1.DataSourceConfiguration.root_nodes:type_name -> wg.cosmo.node.v1.TypeField + 35, // 16: wg.cosmo.node.v1.DataSourceConfiguration.child_nodes:type_name -> wg.cosmo.node.v1.TypeField + 42, // 17: wg.cosmo.node.v1.DataSourceConfiguration.custom_graphql:type_name -> wg.cosmo.node.v1.DataSourceCustom_GraphQL + 64, // 18: wg.cosmo.node.v1.DataSourceConfiguration.custom_static:type_name -> wg.cosmo.node.v1.DataSourceCustom_Static + 66, // 19: wg.cosmo.node.v1.DataSourceConfiguration.directives:type_name -> wg.cosmo.node.v1.DirectiveConfiguration + 38, // 20: wg.cosmo.node.v1.DataSourceConfiguration.keys:type_name -> wg.cosmo.node.v1.RequiredField + 38, // 21: wg.cosmo.node.v1.DataSourceConfiguration.provides:type_name -> wg.cosmo.node.v1.RequiredField + 38, // 22: wg.cosmo.node.v1.DataSourceConfiguration.requires:type_name -> wg.cosmo.node.v1.RequiredField + 63, // 23: wg.cosmo.node.v1.DataSourceConfiguration.custom_events:type_name -> wg.cosmo.node.v1.DataSourceCustomEvents + 39, // 24: wg.cosmo.node.v1.DataSourceConfiguration.entity_interfaces:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration + 39, // 25: wg.cosmo.node.v1.DataSourceConfiguration.interface_objects:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration + 27, // 26: wg.cosmo.node.v1.DataSourceConfiguration.cost_configuration:type_name -> wg.cosmo.node.v1.CostConfiguration 20, // 27: wg.cosmo.node.v1.DataSourceConfiguration.entity_caching_configuration:type_name -> wg.cosmo.node.v1.EntityCachingConfiguration 21, // 28: wg.cosmo.node.v1.EntityCachingConfiguration.entity_cache:type_name -> wg.cosmo.node.v1.EntityCacheConfiguration 22, // 29: wg.cosmo.node.v1.EntityCachingConfiguration.cache_invalidate_configurations:type_name -> wg.cosmo.node.v1.CacheInvalidateConfiguration 23, // 30: wg.cosmo.node.v1.EntityCachingConfiguration.cache_populate_configurations:type_name -> wg.cosmo.node.v1.CachePopulateConfiguration - 24, // 31: wg.cosmo.node.v1.EntityCachingConfiguration.request_scoped_configurations:type_name -> wg.cosmo.node.v1.RequestScopedConfiguration - 25, // 32: wg.cosmo.node.v1.EntityCachingConfiguration.query_cache_configurations:type_name -> wg.cosmo.node.v1.QueryCacheConfiguration - 26, // 33: wg.cosmo.node.v1.QueryCacheConfiguration.entity_key_mappings:type_name -> wg.cosmo.node.v1.EntityKeyMapping - 27, // 34: wg.cosmo.node.v1.EntityKeyMapping.field_mappings:type_name -> wg.cosmo.node.v1.EntityCacheFieldMapping - 29, // 35: wg.cosmo.node.v1.CostConfiguration.field_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration - 30, // 36: wg.cosmo.node.v1.CostConfiguration.list_sizes:type_name -> wg.cosmo.node.v1.FieldListSizeConfiguration - 85, // 37: wg.cosmo.node.v1.CostConfiguration.type_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry - 86, // 38: wg.cosmo.node.v1.CostConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry - 87, // 39: wg.cosmo.node.v1.FieldWeightConfiguration.argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry - 88, // 40: wg.cosmo.node.v1.FieldWeightConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry - 1, // 41: wg.cosmo.node.v1.ArgumentConfiguration.source_type:type_name -> wg.cosmo.node.v1.ArgumentSource - 32, // 42: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes:type_name -> wg.cosmo.node.v1.Scopes - 32, // 43: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes_by_or:type_name -> wg.cosmo.node.v1.Scopes - 31, // 44: wg.cosmo.node.v1.FieldConfiguration.arguments_configuration:type_name -> wg.cosmo.node.v1.ArgumentConfiguration - 33, // 45: wg.cosmo.node.v1.FieldConfiguration.authorization_configuration:type_name -> wg.cosmo.node.v1.AuthorizationConfiguration - 76, // 46: wg.cosmo.node.v1.FieldConfiguration.subscription_filter_condition:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 37, // 47: wg.cosmo.node.v1.FieldSetCondition.field_coordinates_path:type_name -> wg.cosmo.node.v1.FieldCoordinates - 38, // 48: wg.cosmo.node.v1.RequiredField.conditions:type_name -> wg.cosmo.node.v1.FieldSetCondition - 66, // 49: wg.cosmo.node.v1.FetchConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 7, // 50: wg.cosmo.node.v1.FetchConfiguration.method:type_name -> wg.cosmo.node.v1.HTTPMethod - 89, // 51: wg.cosmo.node.v1.FetchConfiguration.header:type_name -> wg.cosmo.node.v1.FetchConfiguration.HeaderEntry - 66, // 52: wg.cosmo.node.v1.FetchConfiguration.body:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 68, // 53: wg.cosmo.node.v1.FetchConfiguration.query:type_name -> wg.cosmo.node.v1.URLQueryConfiguration - 70, // 54: wg.cosmo.node.v1.FetchConfiguration.mtls:type_name -> wg.cosmo.node.v1.MTLSConfiguration - 66, // 55: wg.cosmo.node.v1.FetchConfiguration.base_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 66, // 56: wg.cosmo.node.v1.FetchConfiguration.path:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 66, // 57: wg.cosmo.node.v1.FetchConfiguration.http_proxy_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 41, // 58: wg.cosmo.node.v1.DataSourceCustom_GraphQL.fetch:type_name -> wg.cosmo.node.v1.FetchConfiguration - 71, // 59: wg.cosmo.node.v1.DataSourceCustom_GraphQL.subscription:type_name -> wg.cosmo.node.v1.GraphQLSubscriptionConfiguration - 72, // 60: wg.cosmo.node.v1.DataSourceCustom_GraphQL.federation:type_name -> wg.cosmo.node.v1.GraphQLFederationConfiguration - 73, // 61: wg.cosmo.node.v1.DataSourceCustom_GraphQL.upstream_schema:type_name -> wg.cosmo.node.v1.InternedString - 74, // 62: wg.cosmo.node.v1.DataSourceCustom_GraphQL.custom_scalar_type_fields:type_name -> wg.cosmo.node.v1.SingleTypeField - 44, // 63: wg.cosmo.node.v1.DataSourceCustom_GraphQL.grpc:type_name -> wg.cosmo.node.v1.GRPCConfiguration - 48, // 64: wg.cosmo.node.v1.GRPCConfiguration.mapping:type_name -> wg.cosmo.node.v1.GRPCMapping - 46, // 65: wg.cosmo.node.v1.GRPCConfiguration.plugin:type_name -> wg.cosmo.node.v1.PluginConfiguration - 45, // 66: wg.cosmo.node.v1.PluginConfiguration.image_reference:type_name -> wg.cosmo.node.v1.ImageReference - 51, // 67: wg.cosmo.node.v1.GRPCMapping.operation_mappings:type_name -> wg.cosmo.node.v1.OperationMapping - 52, // 68: wg.cosmo.node.v1.GRPCMapping.entity_mappings:type_name -> wg.cosmo.node.v1.EntityMapping - 54, // 69: wg.cosmo.node.v1.GRPCMapping.type_field_mappings:type_name -> wg.cosmo.node.v1.TypeFieldMapping - 57, // 70: wg.cosmo.node.v1.GRPCMapping.enum_mappings:type_name -> wg.cosmo.node.v1.EnumMapping - 49, // 71: wg.cosmo.node.v1.GRPCMapping.resolve_mappings:type_name -> wg.cosmo.node.v1.LookupMapping - 3, // 72: wg.cosmo.node.v1.LookupMapping.type:type_name -> wg.cosmo.node.v1.LookupType - 50, // 73: wg.cosmo.node.v1.LookupMapping.lookup_mapping:type_name -> wg.cosmo.node.v1.LookupFieldMapping - 55, // 74: wg.cosmo.node.v1.LookupFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping - 4, // 75: wg.cosmo.node.v1.OperationMapping.type:type_name -> wg.cosmo.node.v1.OperationType - 53, // 76: wg.cosmo.node.v1.EntityMapping.required_field_mappings:type_name -> wg.cosmo.node.v1.RequiredFieldMapping - 55, // 77: wg.cosmo.node.v1.RequiredFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping - 55, // 78: wg.cosmo.node.v1.TypeFieldMapping.field_mappings:type_name -> wg.cosmo.node.v1.FieldMapping - 56, // 79: wg.cosmo.node.v1.FieldMapping.argument_mappings:type_name -> wg.cosmo.node.v1.ArgumentMapping - 58, // 80: wg.cosmo.node.v1.EnumMapping.values:type_name -> wg.cosmo.node.v1.EnumValueMapping - 63, // 81: wg.cosmo.node.v1.NatsEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 59, // 82: wg.cosmo.node.v1.NatsEventConfiguration.stream_configuration:type_name -> wg.cosmo.node.v1.NatsStreamConfiguration - 63, // 83: wg.cosmo.node.v1.KafkaEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 63, // 84: wg.cosmo.node.v1.RedisEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 5, // 85: wg.cosmo.node.v1.EngineEventConfiguration.type:type_name -> wg.cosmo.node.v1.EventType - 60, // 86: wg.cosmo.node.v1.DataSourceCustomEvents.nats:type_name -> wg.cosmo.node.v1.NatsEventConfiguration - 61, // 87: wg.cosmo.node.v1.DataSourceCustomEvents.kafka:type_name -> wg.cosmo.node.v1.KafkaEventConfiguration - 62, // 88: wg.cosmo.node.v1.DataSourceCustomEvents.redis:type_name -> wg.cosmo.node.v1.RedisEventConfiguration - 66, // 89: wg.cosmo.node.v1.DataSourceCustom_Static.data:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 6, // 90: wg.cosmo.node.v1.ConfigurationVariable.kind:type_name -> wg.cosmo.node.v1.ConfigurationVariableKind - 66, // 91: wg.cosmo.node.v1.HTTPHeader.values:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 66, // 92: wg.cosmo.node.v1.MTLSConfiguration.key:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 66, // 93: wg.cosmo.node.v1.MTLSConfiguration.cert:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 66, // 94: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 91, // 95: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol - 92, // 96: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.websocketSubprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol - 76, // 97: wg.cosmo.node.v1.SubscriptionFilterCondition.and:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 75, // 98: wg.cosmo.node.v1.SubscriptionFilterCondition.in:type_name -> wg.cosmo.node.v1.SubscriptionFieldCondition - 76, // 99: wg.cosmo.node.v1.SubscriptionFilterCondition.not:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 76, // 100: wg.cosmo.node.v1.SubscriptionFilterCondition.or:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 78, // 101: wg.cosmo.node.v1.CacheWarmerOperations.operations:type_name -> wg.cosmo.node.v1.Operation - 79, // 102: wg.cosmo.node.v1.Operation.request:type_name -> wg.cosmo.node.v1.OperationRequest - 82, // 103: wg.cosmo.node.v1.Operation.client:type_name -> wg.cosmo.node.v1.ClientInfo - 80, // 104: wg.cosmo.node.v1.OperationRequest.extensions:type_name -> wg.cosmo.node.v1.Extension - 81, // 105: wg.cosmo.node.v1.Extension.persisted_query:type_name -> wg.cosmo.node.v1.PersistedQuery - 10, // 106: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry.value:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig - 69, // 107: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry.value:type_name -> wg.cosmo.node.v1.HTTPHeader - 16, // 108: wg.cosmo.node.v1.NodeService.SelfRegister:input_type -> wg.cosmo.node.v1.SelfRegisterRequest - 17, // 109: wg.cosmo.node.v1.NodeService.SelfRegister:output_type -> wg.cosmo.node.v1.SelfRegisterResponse - 109, // [109:110] is the sub-list for method output_type - 108, // [108:109] is the sub-list for method input_type - 108, // [108:108] is the sub-list for extension type_name - 108, // [108:108] is the sub-list for extension extendee - 0, // [0:108] is the sub-list for field type_name + 24, // 31: wg.cosmo.node.v1.EntityCachingConfiguration.query_cache_configurations:type_name -> wg.cosmo.node.v1.QueryCacheConfiguration + 25, // 32: wg.cosmo.node.v1.QueryCacheConfiguration.entity_key_mappings:type_name -> wg.cosmo.node.v1.EntityKeyMapping + 26, // 33: wg.cosmo.node.v1.EntityKeyMapping.field_mappings:type_name -> wg.cosmo.node.v1.EntityCacheFieldMapping + 28, // 34: wg.cosmo.node.v1.CostConfiguration.field_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration + 29, // 35: wg.cosmo.node.v1.CostConfiguration.list_sizes:type_name -> wg.cosmo.node.v1.FieldListSizeConfiguration + 84, // 36: wg.cosmo.node.v1.CostConfiguration.type_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry + 85, // 37: wg.cosmo.node.v1.CostConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry + 86, // 38: wg.cosmo.node.v1.FieldWeightConfiguration.argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry + 87, // 39: wg.cosmo.node.v1.FieldWeightConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry + 1, // 40: wg.cosmo.node.v1.ArgumentConfiguration.source_type:type_name -> wg.cosmo.node.v1.ArgumentSource + 31, // 41: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes:type_name -> wg.cosmo.node.v1.Scopes + 31, // 42: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes_by_or:type_name -> wg.cosmo.node.v1.Scopes + 30, // 43: wg.cosmo.node.v1.FieldConfiguration.arguments_configuration:type_name -> wg.cosmo.node.v1.ArgumentConfiguration + 32, // 44: wg.cosmo.node.v1.FieldConfiguration.authorization_configuration:type_name -> wg.cosmo.node.v1.AuthorizationConfiguration + 75, // 45: wg.cosmo.node.v1.FieldConfiguration.subscription_filter_condition:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 36, // 46: wg.cosmo.node.v1.FieldSetCondition.field_coordinates_path:type_name -> wg.cosmo.node.v1.FieldCoordinates + 37, // 47: wg.cosmo.node.v1.RequiredField.conditions:type_name -> wg.cosmo.node.v1.FieldSetCondition + 65, // 48: wg.cosmo.node.v1.FetchConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 7, // 49: wg.cosmo.node.v1.FetchConfiguration.method:type_name -> wg.cosmo.node.v1.HTTPMethod + 88, // 50: wg.cosmo.node.v1.FetchConfiguration.header:type_name -> wg.cosmo.node.v1.FetchConfiguration.HeaderEntry + 65, // 51: wg.cosmo.node.v1.FetchConfiguration.body:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 67, // 52: wg.cosmo.node.v1.FetchConfiguration.query:type_name -> wg.cosmo.node.v1.URLQueryConfiguration + 69, // 53: wg.cosmo.node.v1.FetchConfiguration.mtls:type_name -> wg.cosmo.node.v1.MTLSConfiguration + 65, // 54: wg.cosmo.node.v1.FetchConfiguration.base_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 65, // 55: wg.cosmo.node.v1.FetchConfiguration.path:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 65, // 56: wg.cosmo.node.v1.FetchConfiguration.http_proxy_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 40, // 57: wg.cosmo.node.v1.DataSourceCustom_GraphQL.fetch:type_name -> wg.cosmo.node.v1.FetchConfiguration + 70, // 58: wg.cosmo.node.v1.DataSourceCustom_GraphQL.subscription:type_name -> wg.cosmo.node.v1.GraphQLSubscriptionConfiguration + 71, // 59: wg.cosmo.node.v1.DataSourceCustom_GraphQL.federation:type_name -> wg.cosmo.node.v1.GraphQLFederationConfiguration + 72, // 60: wg.cosmo.node.v1.DataSourceCustom_GraphQL.upstream_schema:type_name -> wg.cosmo.node.v1.InternedString + 73, // 61: wg.cosmo.node.v1.DataSourceCustom_GraphQL.custom_scalar_type_fields:type_name -> wg.cosmo.node.v1.SingleTypeField + 43, // 62: wg.cosmo.node.v1.DataSourceCustom_GraphQL.grpc:type_name -> wg.cosmo.node.v1.GRPCConfiguration + 47, // 63: wg.cosmo.node.v1.GRPCConfiguration.mapping:type_name -> wg.cosmo.node.v1.GRPCMapping + 45, // 64: wg.cosmo.node.v1.GRPCConfiguration.plugin:type_name -> wg.cosmo.node.v1.PluginConfiguration + 44, // 65: wg.cosmo.node.v1.PluginConfiguration.image_reference:type_name -> wg.cosmo.node.v1.ImageReference + 50, // 66: wg.cosmo.node.v1.GRPCMapping.operation_mappings:type_name -> wg.cosmo.node.v1.OperationMapping + 51, // 67: wg.cosmo.node.v1.GRPCMapping.entity_mappings:type_name -> wg.cosmo.node.v1.EntityMapping + 53, // 68: wg.cosmo.node.v1.GRPCMapping.type_field_mappings:type_name -> wg.cosmo.node.v1.TypeFieldMapping + 56, // 69: wg.cosmo.node.v1.GRPCMapping.enum_mappings:type_name -> wg.cosmo.node.v1.EnumMapping + 48, // 70: wg.cosmo.node.v1.GRPCMapping.resolve_mappings:type_name -> wg.cosmo.node.v1.LookupMapping + 3, // 71: wg.cosmo.node.v1.LookupMapping.type:type_name -> wg.cosmo.node.v1.LookupType + 49, // 72: wg.cosmo.node.v1.LookupMapping.lookup_mapping:type_name -> wg.cosmo.node.v1.LookupFieldMapping + 54, // 73: wg.cosmo.node.v1.LookupFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping + 4, // 74: wg.cosmo.node.v1.OperationMapping.type:type_name -> wg.cosmo.node.v1.OperationType + 52, // 75: wg.cosmo.node.v1.EntityMapping.required_field_mappings:type_name -> wg.cosmo.node.v1.RequiredFieldMapping + 54, // 76: wg.cosmo.node.v1.RequiredFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping + 54, // 77: wg.cosmo.node.v1.TypeFieldMapping.field_mappings:type_name -> wg.cosmo.node.v1.FieldMapping + 55, // 78: wg.cosmo.node.v1.FieldMapping.argument_mappings:type_name -> wg.cosmo.node.v1.ArgumentMapping + 57, // 79: wg.cosmo.node.v1.EnumMapping.values:type_name -> wg.cosmo.node.v1.EnumValueMapping + 62, // 80: wg.cosmo.node.v1.NatsEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 58, // 81: wg.cosmo.node.v1.NatsEventConfiguration.stream_configuration:type_name -> wg.cosmo.node.v1.NatsStreamConfiguration + 62, // 82: wg.cosmo.node.v1.KafkaEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 62, // 83: wg.cosmo.node.v1.RedisEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 5, // 84: wg.cosmo.node.v1.EngineEventConfiguration.type:type_name -> wg.cosmo.node.v1.EventType + 59, // 85: wg.cosmo.node.v1.DataSourceCustomEvents.nats:type_name -> wg.cosmo.node.v1.NatsEventConfiguration + 60, // 86: wg.cosmo.node.v1.DataSourceCustomEvents.kafka:type_name -> wg.cosmo.node.v1.KafkaEventConfiguration + 61, // 87: wg.cosmo.node.v1.DataSourceCustomEvents.redis:type_name -> wg.cosmo.node.v1.RedisEventConfiguration + 65, // 88: wg.cosmo.node.v1.DataSourceCustom_Static.data:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 6, // 89: wg.cosmo.node.v1.ConfigurationVariable.kind:type_name -> wg.cosmo.node.v1.ConfigurationVariableKind + 65, // 90: wg.cosmo.node.v1.HTTPHeader.values:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 65, // 91: wg.cosmo.node.v1.MTLSConfiguration.key:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 65, // 92: wg.cosmo.node.v1.MTLSConfiguration.cert:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 65, // 93: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 90, // 94: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol + 91, // 95: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.websocketSubprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol + 75, // 96: wg.cosmo.node.v1.SubscriptionFilterCondition.and:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 74, // 97: wg.cosmo.node.v1.SubscriptionFilterCondition.in:type_name -> wg.cosmo.node.v1.SubscriptionFieldCondition + 75, // 98: wg.cosmo.node.v1.SubscriptionFilterCondition.not:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 75, // 99: wg.cosmo.node.v1.SubscriptionFilterCondition.or:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 77, // 100: wg.cosmo.node.v1.CacheWarmerOperations.operations:type_name -> wg.cosmo.node.v1.Operation + 78, // 101: wg.cosmo.node.v1.Operation.request:type_name -> wg.cosmo.node.v1.OperationRequest + 81, // 102: wg.cosmo.node.v1.Operation.client:type_name -> wg.cosmo.node.v1.ClientInfo + 79, // 103: wg.cosmo.node.v1.OperationRequest.extensions:type_name -> wg.cosmo.node.v1.Extension + 80, // 104: wg.cosmo.node.v1.Extension.persisted_query:type_name -> wg.cosmo.node.v1.PersistedQuery + 10, // 105: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry.value:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig + 68, // 106: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry.value:type_name -> wg.cosmo.node.v1.HTTPHeader + 16, // 107: wg.cosmo.node.v1.NodeService.SelfRegister:input_type -> wg.cosmo.node.v1.SelfRegisterRequest + 17, // 108: wg.cosmo.node.v1.NodeService.SelfRegister:output_type -> wg.cosmo.node.v1.SelfRegisterResponse + 108, // [108:109] is the sub-list for method output_type + 107, // [107:108] is the sub-list for method input_type + 107, // [107:107] is the sub-list for extension type_name + 107, // [107:107] is the sub-list for extension extendee + 0, // [0:107] is the sub-list for field type_name } func init() { file_wg_cosmo_node_v1_node_proto_init() } @@ -5879,20 +5798,20 @@ func file_wg_cosmo_node_v1_node_proto_init() { file_wg_cosmo_node_v1_node_proto_msgTypes[4].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[9].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[10].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[20].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[21].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[22].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[26].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[33].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[38].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[63].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[68].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[25].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[32].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[37].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[62].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[67].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_wg_cosmo_node_v1_node_proto_rawDesc), len(file_wg_cosmo_node_v1_node_proto_rawDesc)), NumEnums: 8, - NumMessages: 82, + NumMessages: 81, NumExtensions: 0, NumServices: 1, }, diff --git a/connect/src/wg/cosmo/node/v1/node_pb.ts b/connect/src/wg/cosmo/node/v1/node_pb.ts index eeb8b45d25..b64885645a 100644 --- a/connect/src/wg/cosmo/node/v1/node_pb.ts +++ b/connect/src/wg/cosmo/node/v1/node_pb.ts @@ -921,13 +921,6 @@ export class EntityCachingConfiguration extends Message { - /** - * @generated from field: string field_name = 1; - */ - fieldName = ""; - - /** - * @generated from field: string type_name = 2; - */ - typeName = ""; - - /** - * @generated from field: string l1_key = 3; - */ - l1Key = ""; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "wg.cosmo.node.v1.RequestScopedConfiguration"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "field_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "type_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 3, name: "l1_key", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): RequestScopedConfiguration { - return new RequestScopedConfiguration().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): RequestScopedConfiguration { - return new RequestScopedConfiguration().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): RequestScopedConfiguration { - return new RequestScopedConfiguration().fromJsonString(jsonString, options); - } - - static equals(a: RequestScopedConfiguration | PlainMessage | undefined, b: RequestScopedConfiguration | PlainMessage | undefined): boolean { - return proto3.util.equals(RequestScopedConfiguration, a, b); - } -} - /** * Per-Query-field declaration for @openfed__queryCache. Tells the router a query field can serve * its returned entity from the entity cache, with argument-to-@key mappings for cache-key construction. diff --git a/proto/wg/cosmo/node/v1/node.proto b/proto/wg/cosmo/node/v1/node.proto index 048ee4aaee..d5b3c5af0a 100644 --- a/proto/wg/cosmo/node/v1/node.proto +++ b/proto/wg/cosmo/node/v1/node.proto @@ -103,8 +103,6 @@ message EntityCachingConfiguration { repeated CacheInvalidateConfiguration cache_invalidate_configurations = 2; // Per-Mutation/Subscription-field cache population configs (from @openfed__cachePopulate) repeated CachePopulateConfiguration cache_populate_configurations = 3; - // Request-scoped field configurations (from @openfed__requestScoped directive) - repeated RequestScopedConfiguration request_scoped_configurations = 4; // Per-Query-field cache configurations (from @openfed__queryCache / @openfed__is directives) repeated QueryCacheConfiguration query_cache_configurations = 5; } @@ -143,16 +141,6 @@ message CachePopulateConfiguration { string entity_type_name = 4; } -// Per-field declaration for @openfed__requestScoped. All fields in the same subgraph declaring -// @openfed__requestScoped(key: "X") share L1 key "{subgraphName}.X". The first field to resolve -// populates L1; subsequent fields with the same key inject from L1 and can skip their -// fetch when all required sub-fields are present. -message RequestScopedConfiguration { - string field_name = 1; - string type_name = 2; - string l1_key = 3; -} - // Per-Query-field declaration for @openfed__queryCache. Tells the router a query field can serve // its returned entity from the entity cache, with argument-to-@key mappings for cache-key construction. message QueryCacheConfiguration { diff --git a/router/gen/proto/wg/cosmo/node/v1/node.pb.go b/router/gen/proto/wg/cosmo/node/v1/node.pb.go index 079e93000e..314c75f677 100644 --- a/router/gen/proto/wg/cosmo/node/v1/node.pb.go +++ b/router/gen/proto/wg/cosmo/node/v1/node.pb.go @@ -1234,8 +1234,6 @@ type EntityCachingConfiguration struct { CacheInvalidateConfigurations []*CacheInvalidateConfiguration `protobuf:"bytes,2,rep,name=cache_invalidate_configurations,json=cacheInvalidateConfigurations,proto3" json:"cache_invalidate_configurations,omitempty"` // Per-Mutation/Subscription-field cache population configs (from @openfed__cachePopulate) CachePopulateConfigurations []*CachePopulateConfiguration `protobuf:"bytes,3,rep,name=cache_populate_configurations,json=cachePopulateConfigurations,proto3" json:"cache_populate_configurations,omitempty"` - // Request-scoped field configurations (from @openfed__requestScoped directive) - RequestScopedConfigurations []*RequestScopedConfiguration `protobuf:"bytes,4,rep,name=request_scoped_configurations,json=requestScopedConfigurations,proto3" json:"request_scoped_configurations,omitempty"` // Per-Query-field cache configurations (from @openfed__queryCache / @openfed__is directives) QueryCacheConfigurations []*QueryCacheConfiguration `protobuf:"bytes,5,rep,name=query_cache_configurations,json=queryCacheConfigurations,proto3" json:"query_cache_configurations,omitempty"` unknownFields protoimpl.UnknownFields @@ -1293,13 +1291,6 @@ func (x *EntityCachingConfiguration) GetCachePopulateConfigurations() []*CachePo return nil } -func (x *EntityCachingConfiguration) GetRequestScopedConfigurations() []*RequestScopedConfiguration { - if x != nil { - return x.RequestScopedConfigurations - } - return nil -} - func (x *EntityCachingConfiguration) GetQueryCacheConfigurations() []*QueryCacheConfiguration { if x != nil { return x.QueryCacheConfigurations @@ -1531,70 +1522,6 @@ func (x *CachePopulateConfiguration) GetEntityTypeName() string { return "" } -// Per-field declaration for @openfed__requestScoped. All fields in the same subgraph declaring -// @openfed__requestScoped(key: "X") share L1 key "{subgraphName}.X". The first field to resolve -// populates L1; subsequent fields with the same key inject from L1 and can skip their -// fetch when all required sub-fields are present. -type RequestScopedConfiguration struct { - state protoimpl.MessageState `protogen:"open.v1"` - FieldName string `protobuf:"bytes,1,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` - TypeName string `protobuf:"bytes,2,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` - L1Key string `protobuf:"bytes,3,opt,name=l1_key,json=l1Key,proto3" json:"l1_key,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *RequestScopedConfiguration) Reset() { - *x = RequestScopedConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *RequestScopedConfiguration) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RequestScopedConfiguration) ProtoMessage() {} - -func (x *RequestScopedConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RequestScopedConfiguration.ProtoReflect.Descriptor instead. -func (*RequestScopedConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{16} -} - -func (x *RequestScopedConfiguration) GetFieldName() string { - if x != nil { - return x.FieldName - } - return "" -} - -func (x *RequestScopedConfiguration) GetTypeName() string { - if x != nil { - return x.TypeName - } - return "" -} - -func (x *RequestScopedConfiguration) GetL1Key() string { - if x != nil { - return x.L1Key - } - return "" -} - // Per-Query-field declaration for @openfed__queryCache. Tells the router a query field can serve // its returned entity from the entity cache, with argument-to-@key mappings for cache-key construction. type QueryCacheConfiguration struct { @@ -1613,7 +1540,7 @@ type QueryCacheConfiguration struct { func (x *QueryCacheConfiguration) Reset() { *x = QueryCacheConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1625,7 +1552,7 @@ func (x *QueryCacheConfiguration) String() string { func (*QueryCacheConfiguration) ProtoMessage() {} func (x *QueryCacheConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1638,7 +1565,7 @@ func (x *QueryCacheConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryCacheConfiguration.ProtoReflect.Descriptor instead. func (*QueryCacheConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{17} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{16} } func (x *QueryCacheConfiguration) GetFieldName() string { @@ -1693,7 +1620,7 @@ type EntityKeyMapping struct { func (x *EntityKeyMapping) Reset() { *x = EntityKeyMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1705,7 +1632,7 @@ func (x *EntityKeyMapping) String() string { func (*EntityKeyMapping) ProtoMessage() {} func (x *EntityKeyMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1718,7 +1645,7 @@ func (x *EntityKeyMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EntityKeyMapping.ProtoReflect.Descriptor instead. func (*EntityKeyMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{18} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{17} } func (x *EntityKeyMapping) GetEntityTypeName() string { @@ -1746,7 +1673,7 @@ type EntityCacheFieldMapping struct { func (x *EntityCacheFieldMapping) Reset() { *x = EntityCacheFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1758,7 +1685,7 @@ func (x *EntityCacheFieldMapping) String() string { func (*EntityCacheFieldMapping) ProtoMessage() {} func (x *EntityCacheFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1771,7 +1698,7 @@ func (x *EntityCacheFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EntityCacheFieldMapping.ProtoReflect.Descriptor instead. func (*EntityCacheFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{19} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{18} } func (x *EntityCacheFieldMapping) GetEntityKeyField() string { @@ -1807,7 +1734,7 @@ type CostConfiguration struct { func (x *CostConfiguration) Reset() { *x = CostConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1819,7 +1746,7 @@ func (x *CostConfiguration) String() string { func (*CostConfiguration) ProtoMessage() {} func (x *CostConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1832,7 +1759,7 @@ func (x *CostConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use CostConfiguration.ProtoReflect.Descriptor instead. func (*CostConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{20} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{19} } func (x *CostConfiguration) GetFieldWeights() []*FieldWeightConfiguration { @@ -1876,7 +1803,7 @@ type FieldWeightConfiguration struct { func (x *FieldWeightConfiguration) Reset() { *x = FieldWeightConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1888,7 +1815,7 @@ func (x *FieldWeightConfiguration) String() string { func (*FieldWeightConfiguration) ProtoMessage() {} func (x *FieldWeightConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1901,7 +1828,7 @@ func (x *FieldWeightConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldWeightConfiguration.ProtoReflect.Descriptor instead. func (*FieldWeightConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{21} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{20} } func (x *FieldWeightConfiguration) GetTypeName() string { @@ -1953,7 +1880,7 @@ type FieldListSizeConfiguration struct { func (x *FieldListSizeConfiguration) Reset() { *x = FieldListSizeConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1965,7 +1892,7 @@ func (x *FieldListSizeConfiguration) String() string { func (*FieldListSizeConfiguration) ProtoMessage() {} func (x *FieldListSizeConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1978,7 +1905,7 @@ func (x *FieldListSizeConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldListSizeConfiguration.ProtoReflect.Descriptor instead. func (*FieldListSizeConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{22} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{21} } func (x *FieldListSizeConfiguration) GetTypeName() string { @@ -2033,7 +1960,7 @@ type ArgumentConfiguration struct { func (x *ArgumentConfiguration) Reset() { *x = ArgumentConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2045,7 +1972,7 @@ func (x *ArgumentConfiguration) String() string { func (*ArgumentConfiguration) ProtoMessage() {} func (x *ArgumentConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2058,7 +1985,7 @@ func (x *ArgumentConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use ArgumentConfiguration.ProtoReflect.Descriptor instead. func (*ArgumentConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{23} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{22} } func (x *ArgumentConfiguration) GetName() string { @@ -2084,7 +2011,7 @@ type Scopes struct { func (x *Scopes) Reset() { *x = Scopes{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2096,7 +2023,7 @@ func (x *Scopes) String() string { func (*Scopes) ProtoMessage() {} func (x *Scopes) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2109,7 +2036,7 @@ func (x *Scopes) ProtoReflect() protoreflect.Message { // Deprecated: Use Scopes.ProtoReflect.Descriptor instead. func (*Scopes) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{24} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{23} } func (x *Scopes) GetRequiredAndScopes() []string { @@ -2130,7 +2057,7 @@ type AuthorizationConfiguration struct { func (x *AuthorizationConfiguration) Reset() { *x = AuthorizationConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2142,7 +2069,7 @@ func (x *AuthorizationConfiguration) String() string { func (*AuthorizationConfiguration) ProtoMessage() {} func (x *AuthorizationConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2155,7 +2082,7 @@ func (x *AuthorizationConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use AuthorizationConfiguration.ProtoReflect.Descriptor instead. func (*AuthorizationConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{25} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{24} } func (x *AuthorizationConfiguration) GetRequiresAuthentication() bool { @@ -2192,7 +2119,7 @@ type FieldConfiguration struct { func (x *FieldConfiguration) Reset() { *x = FieldConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2204,7 +2131,7 @@ func (x *FieldConfiguration) String() string { func (*FieldConfiguration) ProtoMessage() {} func (x *FieldConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2217,7 +2144,7 @@ func (x *FieldConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldConfiguration.ProtoReflect.Descriptor instead. func (*FieldConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{26} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{25} } func (x *FieldConfiguration) GetTypeName() string { @@ -2265,7 +2192,7 @@ type TypeConfiguration struct { func (x *TypeConfiguration) Reset() { *x = TypeConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2277,7 +2204,7 @@ func (x *TypeConfiguration) String() string { func (*TypeConfiguration) ProtoMessage() {} func (x *TypeConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2290,7 +2217,7 @@ func (x *TypeConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeConfiguration.ProtoReflect.Descriptor instead. func (*TypeConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{27} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{26} } func (x *TypeConfiguration) GetTypeName() string { @@ -2319,7 +2246,7 @@ type TypeField struct { func (x *TypeField) Reset() { *x = TypeField{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2331,7 +2258,7 @@ func (x *TypeField) String() string { func (*TypeField) ProtoMessage() {} func (x *TypeField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2344,7 +2271,7 @@ func (x *TypeField) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeField.ProtoReflect.Descriptor instead. func (*TypeField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{28} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{27} } func (x *TypeField) GetTypeName() string { @@ -2385,7 +2312,7 @@ type FieldCoordinates struct { func (x *FieldCoordinates) Reset() { *x = FieldCoordinates{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2397,7 +2324,7 @@ func (x *FieldCoordinates) String() string { func (*FieldCoordinates) ProtoMessage() {} func (x *FieldCoordinates) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2410,7 +2337,7 @@ func (x *FieldCoordinates) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldCoordinates.ProtoReflect.Descriptor instead. func (*FieldCoordinates) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{29} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{28} } func (x *FieldCoordinates) GetFieldName() string { @@ -2437,7 +2364,7 @@ type FieldSetCondition struct { func (x *FieldSetCondition) Reset() { *x = FieldSetCondition{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2449,7 +2376,7 @@ func (x *FieldSetCondition) String() string { func (*FieldSetCondition) ProtoMessage() {} func (x *FieldSetCondition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2462,7 +2389,7 @@ func (x *FieldSetCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldSetCondition.ProtoReflect.Descriptor instead. func (*FieldSetCondition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{30} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{29} } func (x *FieldSetCondition) GetFieldCoordinatesPath() []*FieldCoordinates { @@ -2492,7 +2419,7 @@ type RequiredField struct { func (x *RequiredField) Reset() { *x = RequiredField{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2504,7 +2431,7 @@ func (x *RequiredField) String() string { func (*RequiredField) ProtoMessage() {} func (x *RequiredField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2517,7 +2444,7 @@ func (x *RequiredField) ProtoReflect() protoreflect.Message { // Deprecated: Use RequiredField.ProtoReflect.Descriptor instead. func (*RequiredField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{31} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{30} } func (x *RequiredField) GetTypeName() string { @@ -2565,7 +2492,7 @@ type EntityInterfaceConfiguration struct { func (x *EntityInterfaceConfiguration) Reset() { *x = EntityInterfaceConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2577,7 +2504,7 @@ func (x *EntityInterfaceConfiguration) String() string { func (*EntityInterfaceConfiguration) ProtoMessage() {} func (x *EntityInterfaceConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2590,7 +2517,7 @@ func (x *EntityInterfaceConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use EntityInterfaceConfiguration.ProtoReflect.Descriptor instead. func (*EntityInterfaceConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{32} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{31} } func (x *EntityInterfaceConfiguration) GetInterfaceTypeName() string { @@ -2633,7 +2560,7 @@ type FetchConfiguration struct { func (x *FetchConfiguration) Reset() { *x = FetchConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2645,7 +2572,7 @@ func (x *FetchConfiguration) String() string { func (*FetchConfiguration) ProtoMessage() {} func (x *FetchConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2658,7 +2585,7 @@ func (x *FetchConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use FetchConfiguration.ProtoReflect.Descriptor instead. func (*FetchConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{33} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{32} } func (x *FetchConfiguration) GetUrl() *ConfigurationVariable { @@ -2742,7 +2669,7 @@ type StatusCodeTypeMapping struct { func (x *StatusCodeTypeMapping) Reset() { *x = StatusCodeTypeMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2754,7 +2681,7 @@ func (x *StatusCodeTypeMapping) String() string { func (*StatusCodeTypeMapping) ProtoMessage() {} func (x *StatusCodeTypeMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2767,7 +2694,7 @@ func (x *StatusCodeTypeMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use StatusCodeTypeMapping.ProtoReflect.Descriptor instead. func (*StatusCodeTypeMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{34} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{33} } func (x *StatusCodeTypeMapping) GetStatusCode() int64 { @@ -2805,7 +2732,7 @@ type DataSourceCustom_GraphQL struct { func (x *DataSourceCustom_GraphQL) Reset() { *x = DataSourceCustom_GraphQL{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2817,7 +2744,7 @@ func (x *DataSourceCustom_GraphQL) String() string { func (*DataSourceCustom_GraphQL) ProtoMessage() {} func (x *DataSourceCustom_GraphQL) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2830,7 +2757,7 @@ func (x *DataSourceCustom_GraphQL) ProtoReflect() protoreflect.Message { // Deprecated: Use DataSourceCustom_GraphQL.ProtoReflect.Descriptor instead. func (*DataSourceCustom_GraphQL) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{35} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{34} } func (x *DataSourceCustom_GraphQL) GetFetch() *FetchConfiguration { @@ -2886,7 +2813,7 @@ type GRPCConfiguration struct { func (x *GRPCConfiguration) Reset() { *x = GRPCConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2898,7 +2825,7 @@ func (x *GRPCConfiguration) String() string { func (*GRPCConfiguration) ProtoMessage() {} func (x *GRPCConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2911,7 +2838,7 @@ func (x *GRPCConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCConfiguration.ProtoReflect.Descriptor instead. func (*GRPCConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{36} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{35} } func (x *GRPCConfiguration) GetMapping() *GRPCMapping { @@ -2945,7 +2872,7 @@ type ImageReference struct { func (x *ImageReference) Reset() { *x = ImageReference{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2957,7 +2884,7 @@ func (x *ImageReference) String() string { func (*ImageReference) ProtoMessage() {} func (x *ImageReference) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2970,7 +2897,7 @@ func (x *ImageReference) ProtoReflect() protoreflect.Message { // Deprecated: Use ImageReference.ProtoReflect.Descriptor instead. func (*ImageReference) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{37} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{36} } func (x *ImageReference) GetRepository() string { @@ -3000,7 +2927,7 @@ type PluginConfiguration struct { func (x *PluginConfiguration) Reset() { *x = PluginConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3012,7 +2939,7 @@ func (x *PluginConfiguration) String() string { func (*PluginConfiguration) ProtoMessage() {} func (x *PluginConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3025,7 +2952,7 @@ func (x *PluginConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use PluginConfiguration.ProtoReflect.Descriptor instead. func (*PluginConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{38} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{37} } func (x *PluginConfiguration) GetName() string { @@ -3059,7 +2986,7 @@ type SSLConfiguration struct { func (x *SSLConfiguration) Reset() { *x = SSLConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3071,7 +2998,7 @@ func (x *SSLConfiguration) String() string { func (*SSLConfiguration) ProtoMessage() {} func (x *SSLConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3084,7 +3011,7 @@ func (x *SSLConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use SSLConfiguration.ProtoReflect.Descriptor instead. func (*SSLConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{39} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{38} } func (x *SSLConfiguration) GetEnabled() bool { @@ -3117,7 +3044,7 @@ type GRPCMapping struct { func (x *GRPCMapping) Reset() { *x = GRPCMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3129,7 +3056,7 @@ func (x *GRPCMapping) String() string { func (*GRPCMapping) ProtoMessage() {} func (x *GRPCMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3142,7 +3069,7 @@ func (x *GRPCMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use GRPCMapping.ProtoReflect.Descriptor instead. func (*GRPCMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{40} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{39} } func (x *GRPCMapping) GetVersion() int32 { @@ -3213,7 +3140,7 @@ type LookupMapping struct { func (x *LookupMapping) Reset() { *x = LookupMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3225,7 +3152,7 @@ func (x *LookupMapping) String() string { func (*LookupMapping) ProtoMessage() {} func (x *LookupMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3238,7 +3165,7 @@ func (x *LookupMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use LookupMapping.ProtoReflect.Descriptor instead. func (*LookupMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{41} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{40} } func (x *LookupMapping) GetType() LookupType { @@ -3289,7 +3216,7 @@ type LookupFieldMapping struct { func (x *LookupFieldMapping) Reset() { *x = LookupFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3301,7 +3228,7 @@ func (x *LookupFieldMapping) String() string { func (*LookupFieldMapping) ProtoMessage() {} func (x *LookupFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3314,7 +3241,7 @@ func (x *LookupFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use LookupFieldMapping.ProtoReflect.Descriptor instead. func (*LookupFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{42} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{41} } func (x *LookupFieldMapping) GetType() string { @@ -3350,7 +3277,7 @@ type OperationMapping struct { func (x *OperationMapping) Reset() { *x = OperationMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3362,7 +3289,7 @@ func (x *OperationMapping) String() string { func (*OperationMapping) ProtoMessage() {} func (x *OperationMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3375,7 +3302,7 @@ func (x *OperationMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use OperationMapping.ProtoReflect.Descriptor instead. func (*OperationMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{43} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{42} } func (x *OperationMapping) GetType() OperationType { @@ -3436,7 +3363,7 @@ type EntityMapping struct { func (x *EntityMapping) Reset() { *x = EntityMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3448,7 +3375,7 @@ func (x *EntityMapping) String() string { func (*EntityMapping) ProtoMessage() {} func (x *EntityMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3461,7 +3388,7 @@ func (x *EntityMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EntityMapping.ProtoReflect.Descriptor instead. func (*EntityMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{44} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{43} } func (x *EntityMapping) GetTypeName() string { @@ -3529,7 +3456,7 @@ type RequiredFieldMapping struct { func (x *RequiredFieldMapping) Reset() { *x = RequiredFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3541,7 +3468,7 @@ func (x *RequiredFieldMapping) String() string { func (*RequiredFieldMapping) ProtoMessage() {} func (x *RequiredFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3554,7 +3481,7 @@ func (x *RequiredFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use RequiredFieldMapping.ProtoReflect.Descriptor instead. func (*RequiredFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{45} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{44} } func (x *RequiredFieldMapping) GetFieldMapping() *FieldMapping { @@ -3598,7 +3525,7 @@ type TypeFieldMapping struct { func (x *TypeFieldMapping) Reset() { *x = TypeFieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3610,7 +3537,7 @@ func (x *TypeFieldMapping) String() string { func (*TypeFieldMapping) ProtoMessage() {} func (x *TypeFieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3623,7 +3550,7 @@ func (x *TypeFieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeFieldMapping.ProtoReflect.Descriptor instead. func (*TypeFieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{46} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{45} } func (x *TypeFieldMapping) GetType() string { @@ -3655,7 +3582,7 @@ type FieldMapping struct { func (x *FieldMapping) Reset() { *x = FieldMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3667,7 +3594,7 @@ func (x *FieldMapping) String() string { func (*FieldMapping) ProtoMessage() {} func (x *FieldMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3680,7 +3607,7 @@ func (x *FieldMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use FieldMapping.ProtoReflect.Descriptor instead. func (*FieldMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{47} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{46} } func (x *FieldMapping) GetOriginal() string { @@ -3717,7 +3644,7 @@ type ArgumentMapping struct { func (x *ArgumentMapping) Reset() { *x = ArgumentMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3729,7 +3656,7 @@ func (x *ArgumentMapping) String() string { func (*ArgumentMapping) ProtoMessage() {} func (x *ArgumentMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3742,7 +3669,7 @@ func (x *ArgumentMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use ArgumentMapping.ProtoReflect.Descriptor instead. func (*ArgumentMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{48} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{47} } func (x *ArgumentMapping) GetOriginal() string { @@ -3769,7 +3696,7 @@ type EnumMapping struct { func (x *EnumMapping) Reset() { *x = EnumMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3781,7 +3708,7 @@ func (x *EnumMapping) String() string { func (*EnumMapping) ProtoMessage() {} func (x *EnumMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3794,7 +3721,7 @@ func (x *EnumMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EnumMapping.ProtoReflect.Descriptor instead. func (*EnumMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{49} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{48} } func (x *EnumMapping) GetType() string { @@ -3821,7 +3748,7 @@ type EnumValueMapping struct { func (x *EnumValueMapping) Reset() { *x = EnumValueMapping{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3833,7 +3760,7 @@ func (x *EnumValueMapping) String() string { func (*EnumValueMapping) ProtoMessage() {} func (x *EnumValueMapping) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3846,7 +3773,7 @@ func (x *EnumValueMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use EnumValueMapping.ProtoReflect.Descriptor instead. func (*EnumValueMapping) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{50} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{49} } func (x *EnumValueMapping) GetOriginal() string { @@ -3874,7 +3801,7 @@ type NatsStreamConfiguration struct { func (x *NatsStreamConfiguration) Reset() { *x = NatsStreamConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3886,7 +3813,7 @@ func (x *NatsStreamConfiguration) String() string { func (*NatsStreamConfiguration) ProtoMessage() {} func (x *NatsStreamConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3899,7 +3826,7 @@ func (x *NatsStreamConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use NatsStreamConfiguration.ProtoReflect.Descriptor instead. func (*NatsStreamConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{51} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{50} } func (x *NatsStreamConfiguration) GetConsumerName() string { @@ -3934,7 +3861,7 @@ type NatsEventConfiguration struct { func (x *NatsEventConfiguration) Reset() { *x = NatsEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3946,7 +3873,7 @@ func (x *NatsEventConfiguration) String() string { func (*NatsEventConfiguration) ProtoMessage() {} func (x *NatsEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3959,7 +3886,7 @@ func (x *NatsEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use NatsEventConfiguration.ProtoReflect.Descriptor instead. func (*NatsEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{52} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{51} } func (x *NatsEventConfiguration) GetEngineEventConfiguration() *EngineEventConfiguration { @@ -3993,7 +3920,7 @@ type KafkaEventConfiguration struct { func (x *KafkaEventConfiguration) Reset() { *x = KafkaEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4005,7 +3932,7 @@ func (x *KafkaEventConfiguration) String() string { func (*KafkaEventConfiguration) ProtoMessage() {} func (x *KafkaEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4018,7 +3945,7 @@ func (x *KafkaEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use KafkaEventConfiguration.ProtoReflect.Descriptor instead. func (*KafkaEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{53} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{52} } func (x *KafkaEventConfiguration) GetEngineEventConfiguration() *EngineEventConfiguration { @@ -4045,7 +3972,7 @@ type RedisEventConfiguration struct { func (x *RedisEventConfiguration) Reset() { *x = RedisEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4057,7 +3984,7 @@ func (x *RedisEventConfiguration) String() string { func (*RedisEventConfiguration) ProtoMessage() {} func (x *RedisEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4070,7 +3997,7 @@ func (x *RedisEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use RedisEventConfiguration.ProtoReflect.Descriptor instead. func (*RedisEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{54} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{53} } func (x *RedisEventConfiguration) GetEngineEventConfiguration() *EngineEventConfiguration { @@ -4099,7 +4026,7 @@ type EngineEventConfiguration struct { func (x *EngineEventConfiguration) Reset() { *x = EngineEventConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4111,7 +4038,7 @@ func (x *EngineEventConfiguration) String() string { func (*EngineEventConfiguration) ProtoMessage() {} func (x *EngineEventConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4124,7 +4051,7 @@ func (x *EngineEventConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use EngineEventConfiguration.ProtoReflect.Descriptor instead. func (*EngineEventConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{55} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{54} } func (x *EngineEventConfiguration) GetProviderId() string { @@ -4166,7 +4093,7 @@ type DataSourceCustomEvents struct { func (x *DataSourceCustomEvents) Reset() { *x = DataSourceCustomEvents{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4178,7 +4105,7 @@ func (x *DataSourceCustomEvents) String() string { func (*DataSourceCustomEvents) ProtoMessage() {} func (x *DataSourceCustomEvents) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4191,7 +4118,7 @@ func (x *DataSourceCustomEvents) ProtoReflect() protoreflect.Message { // Deprecated: Use DataSourceCustomEvents.ProtoReflect.Descriptor instead. func (*DataSourceCustomEvents) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{56} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{55} } func (x *DataSourceCustomEvents) GetNats() []*NatsEventConfiguration { @@ -4224,7 +4151,7 @@ type DataSourceCustom_Static struct { func (x *DataSourceCustom_Static) Reset() { *x = DataSourceCustom_Static{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4236,7 +4163,7 @@ func (x *DataSourceCustom_Static) String() string { func (*DataSourceCustom_Static) ProtoMessage() {} func (x *DataSourceCustom_Static) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4249,7 +4176,7 @@ func (x *DataSourceCustom_Static) ProtoReflect() protoreflect.Message { // Deprecated: Use DataSourceCustom_Static.ProtoReflect.Descriptor instead. func (*DataSourceCustom_Static) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{57} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{56} } func (x *DataSourceCustom_Static) GetData() *ConfigurationVariable { @@ -4272,7 +4199,7 @@ type ConfigurationVariable struct { func (x *ConfigurationVariable) Reset() { *x = ConfigurationVariable{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4284,7 +4211,7 @@ func (x *ConfigurationVariable) String() string { func (*ConfigurationVariable) ProtoMessage() {} func (x *ConfigurationVariable) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4297,7 +4224,7 @@ func (x *ConfigurationVariable) ProtoReflect() protoreflect.Message { // Deprecated: Use ConfigurationVariable.ProtoReflect.Descriptor instead. func (*ConfigurationVariable) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{58} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{57} } func (x *ConfigurationVariable) GetKind() ConfigurationVariableKind { @@ -4345,7 +4272,7 @@ type DirectiveConfiguration struct { func (x *DirectiveConfiguration) Reset() { *x = DirectiveConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4357,7 +4284,7 @@ func (x *DirectiveConfiguration) String() string { func (*DirectiveConfiguration) ProtoMessage() {} func (x *DirectiveConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[58] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4370,7 +4297,7 @@ func (x *DirectiveConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use DirectiveConfiguration.ProtoReflect.Descriptor instead. func (*DirectiveConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{59} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{58} } func (x *DirectiveConfiguration) GetDirectiveName() string { @@ -4397,7 +4324,7 @@ type URLQueryConfiguration struct { func (x *URLQueryConfiguration) Reset() { *x = URLQueryConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4409,7 +4336,7 @@ func (x *URLQueryConfiguration) String() string { func (*URLQueryConfiguration) ProtoMessage() {} func (x *URLQueryConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4422,7 +4349,7 @@ func (x *URLQueryConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use URLQueryConfiguration.ProtoReflect.Descriptor instead. func (*URLQueryConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{60} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{59} } func (x *URLQueryConfiguration) GetName() string { @@ -4448,7 +4375,7 @@ type HTTPHeader struct { func (x *HTTPHeader) Reset() { *x = HTTPHeader{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4460,7 +4387,7 @@ func (x *HTTPHeader) String() string { func (*HTTPHeader) ProtoMessage() {} func (x *HTTPHeader) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4473,7 +4400,7 @@ func (x *HTTPHeader) ProtoReflect() protoreflect.Message { // Deprecated: Use HTTPHeader.ProtoReflect.Descriptor instead. func (*HTTPHeader) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{61} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{60} } func (x *HTTPHeader) GetValues() []*ConfigurationVariable { @@ -4494,7 +4421,7 @@ type MTLSConfiguration struct { func (x *MTLSConfiguration) Reset() { *x = MTLSConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4506,7 +4433,7 @@ func (x *MTLSConfiguration) String() string { func (*MTLSConfiguration) ProtoMessage() {} func (x *MTLSConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[61] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4519,7 +4446,7 @@ func (x *MTLSConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use MTLSConfiguration.ProtoReflect.Descriptor instead. func (*MTLSConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{62} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{61} } func (x *MTLSConfiguration) GetKey() *ConfigurationVariable { @@ -4557,7 +4484,7 @@ type GraphQLSubscriptionConfiguration struct { func (x *GraphQLSubscriptionConfiguration) Reset() { *x = GraphQLSubscriptionConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4569,7 +4496,7 @@ func (x *GraphQLSubscriptionConfiguration) String() string { func (*GraphQLSubscriptionConfiguration) ProtoMessage() {} func (x *GraphQLSubscriptionConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[62] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4582,7 +4509,7 @@ func (x *GraphQLSubscriptionConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use GraphQLSubscriptionConfiguration.ProtoReflect.Descriptor instead. func (*GraphQLSubscriptionConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{63} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{62} } func (x *GraphQLSubscriptionConfiguration) GetEnabled() bool { @@ -4630,7 +4557,7 @@ type GraphQLFederationConfiguration struct { func (x *GraphQLFederationConfiguration) Reset() { *x = GraphQLFederationConfiguration{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4642,7 +4569,7 @@ func (x *GraphQLFederationConfiguration) String() string { func (*GraphQLFederationConfiguration) ProtoMessage() {} func (x *GraphQLFederationConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[63] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4655,7 +4582,7 @@ func (x *GraphQLFederationConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use GraphQLFederationConfiguration.ProtoReflect.Descriptor instead. func (*GraphQLFederationConfiguration) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{64} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{63} } func (x *GraphQLFederationConfiguration) GetEnabled() bool { @@ -4682,7 +4609,7 @@ type InternedString struct { func (x *InternedString) Reset() { *x = InternedString{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4694,7 +4621,7 @@ func (x *InternedString) String() string { func (*InternedString) ProtoMessage() {} func (x *InternedString) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[64] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4707,7 +4634,7 @@ func (x *InternedString) ProtoReflect() protoreflect.Message { // Deprecated: Use InternedString.ProtoReflect.Descriptor instead. func (*InternedString) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{65} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{64} } func (x *InternedString) GetKey() string { @@ -4727,7 +4654,7 @@ type SingleTypeField struct { func (x *SingleTypeField) Reset() { *x = SingleTypeField{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4739,7 +4666,7 @@ func (x *SingleTypeField) String() string { func (*SingleTypeField) ProtoMessage() {} func (x *SingleTypeField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[65] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4752,7 +4679,7 @@ func (x *SingleTypeField) ProtoReflect() protoreflect.Message { // Deprecated: Use SingleTypeField.ProtoReflect.Descriptor instead. func (*SingleTypeField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{66} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{65} } func (x *SingleTypeField) GetTypeName() string { @@ -4779,7 +4706,7 @@ type SubscriptionFieldCondition struct { func (x *SubscriptionFieldCondition) Reset() { *x = SubscriptionFieldCondition{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4791,7 +4718,7 @@ func (x *SubscriptionFieldCondition) String() string { func (*SubscriptionFieldCondition) ProtoMessage() {} func (x *SubscriptionFieldCondition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[66] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4804,7 +4731,7 @@ func (x *SubscriptionFieldCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionFieldCondition.ProtoReflect.Descriptor instead. func (*SubscriptionFieldCondition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{67} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{66} } func (x *SubscriptionFieldCondition) GetFieldPath() []string { @@ -4833,7 +4760,7 @@ type SubscriptionFilterCondition struct { func (x *SubscriptionFilterCondition) Reset() { *x = SubscriptionFilterCondition{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4845,7 +4772,7 @@ func (x *SubscriptionFilterCondition) String() string { func (*SubscriptionFilterCondition) ProtoMessage() {} func (x *SubscriptionFilterCondition) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[67] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4858,7 +4785,7 @@ func (x *SubscriptionFilterCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionFilterCondition.ProtoReflect.Descriptor instead. func (*SubscriptionFilterCondition) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{68} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{67} } func (x *SubscriptionFilterCondition) GetAnd() []*SubscriptionFilterCondition { @@ -4898,7 +4825,7 @@ type CacheWarmerOperations struct { func (x *CacheWarmerOperations) Reset() { *x = CacheWarmerOperations{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[69] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4910,7 +4837,7 @@ func (x *CacheWarmerOperations) String() string { func (*CacheWarmerOperations) ProtoMessage() {} func (x *CacheWarmerOperations) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[69] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[68] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4923,7 +4850,7 @@ func (x *CacheWarmerOperations) ProtoReflect() protoreflect.Message { // Deprecated: Use CacheWarmerOperations.ProtoReflect.Descriptor instead. func (*CacheWarmerOperations) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{69} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{68} } func (x *CacheWarmerOperations) GetOperations() []*Operation { @@ -4943,7 +4870,7 @@ type Operation struct { func (x *Operation) Reset() { *x = Operation{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[70] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4955,7 +4882,7 @@ func (x *Operation) String() string { func (*Operation) ProtoMessage() {} func (x *Operation) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[70] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[69] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4968,7 +4895,7 @@ func (x *Operation) ProtoReflect() protoreflect.Message { // Deprecated: Use Operation.ProtoReflect.Descriptor instead. func (*Operation) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{70} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{69} } func (x *Operation) GetRequest() *OperationRequest { @@ -4996,7 +4923,7 @@ type OperationRequest struct { func (x *OperationRequest) Reset() { *x = OperationRequest{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[71] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5008,7 +4935,7 @@ func (x *OperationRequest) String() string { func (*OperationRequest) ProtoMessage() {} func (x *OperationRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[71] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[70] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5021,7 +4948,7 @@ func (x *OperationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use OperationRequest.ProtoReflect.Descriptor instead. func (*OperationRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{71} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{70} } func (x *OperationRequest) GetOperationName() string { @@ -5054,7 +4981,7 @@ type Extension struct { func (x *Extension) Reset() { *x = Extension{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[72] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5066,7 +4993,7 @@ func (x *Extension) String() string { func (*Extension) ProtoMessage() {} func (x *Extension) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[72] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[71] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5079,7 +5006,7 @@ func (x *Extension) ProtoReflect() protoreflect.Message { // Deprecated: Use Extension.ProtoReflect.Descriptor instead. func (*Extension) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{72} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{71} } func (x *Extension) GetPersistedQuery() *PersistedQuery { @@ -5099,7 +5026,7 @@ type PersistedQuery struct { func (x *PersistedQuery) Reset() { *x = PersistedQuery{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[73] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5111,7 +5038,7 @@ func (x *PersistedQuery) String() string { func (*PersistedQuery) ProtoMessage() {} func (x *PersistedQuery) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[73] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[72] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5124,7 +5051,7 @@ func (x *PersistedQuery) ProtoReflect() protoreflect.Message { // Deprecated: Use PersistedQuery.ProtoReflect.Descriptor instead. func (*PersistedQuery) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{73} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{72} } func (x *PersistedQuery) GetSha256Hash() string { @@ -5151,7 +5078,7 @@ type ClientInfo struct { func (x *ClientInfo) Reset() { *x = ClientInfo{} - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[74] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5163,7 +5090,7 @@ func (x *ClientInfo) String() string { func (*ClientInfo) ProtoMessage() {} func (x *ClientInfo) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[74] + mi := &file_wg_cosmo_node_v1_node_proto_msgTypes[73] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5176,7 +5103,7 @@ func (x *ClientInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ClientInfo.ProtoReflect.Descriptor instead. func (*ClientInfo) Descriptor() ([]byte, []int) { - return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{74} + return file_wg_cosmo_node_v1_node_proto_rawDescGZIP(), []int{73} } func (x *ClientInfo) GetName() string { @@ -5271,12 +5198,11 @@ const file_wg_cosmo_node_v1_node_proto_rawDesc = "" + "\x11entity_interfaces\x18\x0e \x03(\v2..wg.cosmo.node.v1.EntityInterfaceConfigurationR\x10entityInterfaces\x12[\n" + "\x11interface_objects\x18\x0f \x03(\v2..wg.cosmo.node.v1.EntityInterfaceConfigurationR\x10interfaceObjects\x12R\n" + "\x12cost_configuration\x18\x10 \x01(\v2#.wg.cosmo.node.v1.CostConfigurationR\x11costConfiguration\x12n\n" + - "\x1centity_caching_configuration\x18\x11 \x01(\v2,.wg.cosmo.node.v1.EntityCachingConfigurationR\x1aentityCachingConfiguration\"\xb0\x04\n" + + "\x1centity_caching_configuration\x18\x11 \x01(\v2,.wg.cosmo.node.v1.EntityCachingConfigurationR\x1aentityCachingConfiguration\"\xbe\x03\n" + "\x1aEntityCachingConfiguration\x12M\n" + "\fentity_cache\x18\x01 \x03(\v2*.wg.cosmo.node.v1.EntityCacheConfigurationR\ventityCache\x12v\n" + "\x1fcache_invalidate_configurations\x18\x02 \x03(\v2..wg.cosmo.node.v1.CacheInvalidateConfigurationR\x1dcacheInvalidateConfigurations\x12p\n" + - "\x1dcache_populate_configurations\x18\x03 \x03(\v2,.wg.cosmo.node.v1.CachePopulateConfigurationR\x1bcachePopulateConfigurations\x12p\n" + - "\x1drequest_scoped_configurations\x18\x04 \x03(\v2,.wg.cosmo.node.v1.RequestScopedConfigurationR\x1brequestScopedConfigurations\x12g\n" + + "\x1dcache_populate_configurations\x18\x03 \x03(\v2,.wg.cosmo.node.v1.CachePopulateConfigurationR\x1bcachePopulateConfigurations\x12g\n" + "\x1aquery_cache_configurations\x18\x05 \x03(\v2).wg.cosmo.node.v1.QueryCacheConfigurationR\x18queryCacheConfigurations\"\x95\x02\n" + "\x18EntityCacheConfiguration\x12\x1b\n" + "\ttype_name\x18\x01 \x01(\tR\btypeName\x12&\n" + @@ -5296,12 +5222,7 @@ const file_wg_cosmo_node_v1_node_proto_rawDesc = "" + "field_name\x18\x01 \x01(\tR\tfieldName\x12%\n" + "\x0eoperation_type\x18\x02 \x01(\tR\roperationType\x12&\n" + "\x0fmax_age_seconds\x18\x03 \x01(\x03R\rmaxAgeSeconds\x12(\n" + - "\x10entity_type_name\x18\x04 \x01(\tR\x0eentityTypeName\"o\n" + - "\x1aRequestScopedConfiguration\x12\x1d\n" + - "\n" + - "field_name\x18\x01 \x01(\tR\tfieldName\x12\x1b\n" + - "\ttype_name\x18\x02 \x01(\tR\btypeName\x12\x15\n" + - "\x06l1_key\x18\x03 \x01(\tR\x05l1Key\"\xa8\x02\n" + + "\x10entity_type_name\x18\x04 \x01(\tR\x0eentityTypeName\"\xa8\x02\n" + "\x17QueryCacheConfiguration\x12\x1d\n" + "\n" + "field_name\x18\x01 \x01(\tR\tfieldName\x12&\n" + @@ -5656,7 +5577,7 @@ func file_wg_cosmo_node_v1_node_proto_rawDescGZIP() []byte { } var file_wg_cosmo_node_v1_node_proto_enumTypes = make([]protoimpl.EnumInfo, 8) -var file_wg_cosmo_node_v1_node_proto_msgTypes = make([]protoimpl.MessageInfo, 82) +var file_wg_cosmo_node_v1_node_proto_msgTypes = make([]protoimpl.MessageInfo, 81) var file_wg_cosmo_node_v1_node_proto_goTypes = []any{ (ArgumentRenderConfiguration)(0), // 0: wg.cosmo.node.v1.ArgumentRenderConfiguration (ArgumentSource)(0), // 1: wg.cosmo.node.v1.ArgumentSource @@ -5682,192 +5603,190 @@ var file_wg_cosmo_node_v1_node_proto_goTypes = []any{ (*EntityCacheConfiguration)(nil), // 21: wg.cosmo.node.v1.EntityCacheConfiguration (*CacheInvalidateConfiguration)(nil), // 22: wg.cosmo.node.v1.CacheInvalidateConfiguration (*CachePopulateConfiguration)(nil), // 23: wg.cosmo.node.v1.CachePopulateConfiguration - (*RequestScopedConfiguration)(nil), // 24: wg.cosmo.node.v1.RequestScopedConfiguration - (*QueryCacheConfiguration)(nil), // 25: wg.cosmo.node.v1.QueryCacheConfiguration - (*EntityKeyMapping)(nil), // 26: wg.cosmo.node.v1.EntityKeyMapping - (*EntityCacheFieldMapping)(nil), // 27: wg.cosmo.node.v1.EntityCacheFieldMapping - (*CostConfiguration)(nil), // 28: wg.cosmo.node.v1.CostConfiguration - (*FieldWeightConfiguration)(nil), // 29: wg.cosmo.node.v1.FieldWeightConfiguration - (*FieldListSizeConfiguration)(nil), // 30: wg.cosmo.node.v1.FieldListSizeConfiguration - (*ArgumentConfiguration)(nil), // 31: wg.cosmo.node.v1.ArgumentConfiguration - (*Scopes)(nil), // 32: wg.cosmo.node.v1.Scopes - (*AuthorizationConfiguration)(nil), // 33: wg.cosmo.node.v1.AuthorizationConfiguration - (*FieldConfiguration)(nil), // 34: wg.cosmo.node.v1.FieldConfiguration - (*TypeConfiguration)(nil), // 35: wg.cosmo.node.v1.TypeConfiguration - (*TypeField)(nil), // 36: wg.cosmo.node.v1.TypeField - (*FieldCoordinates)(nil), // 37: wg.cosmo.node.v1.FieldCoordinates - (*FieldSetCondition)(nil), // 38: wg.cosmo.node.v1.FieldSetCondition - (*RequiredField)(nil), // 39: wg.cosmo.node.v1.RequiredField - (*EntityInterfaceConfiguration)(nil), // 40: wg.cosmo.node.v1.EntityInterfaceConfiguration - (*FetchConfiguration)(nil), // 41: wg.cosmo.node.v1.FetchConfiguration - (*StatusCodeTypeMapping)(nil), // 42: wg.cosmo.node.v1.StatusCodeTypeMapping - (*DataSourceCustom_GraphQL)(nil), // 43: wg.cosmo.node.v1.DataSourceCustom_GraphQL - (*GRPCConfiguration)(nil), // 44: wg.cosmo.node.v1.GRPCConfiguration - (*ImageReference)(nil), // 45: wg.cosmo.node.v1.ImageReference - (*PluginConfiguration)(nil), // 46: wg.cosmo.node.v1.PluginConfiguration - (*SSLConfiguration)(nil), // 47: wg.cosmo.node.v1.SSLConfiguration - (*GRPCMapping)(nil), // 48: wg.cosmo.node.v1.GRPCMapping - (*LookupMapping)(nil), // 49: wg.cosmo.node.v1.LookupMapping - (*LookupFieldMapping)(nil), // 50: wg.cosmo.node.v1.LookupFieldMapping - (*OperationMapping)(nil), // 51: wg.cosmo.node.v1.OperationMapping - (*EntityMapping)(nil), // 52: wg.cosmo.node.v1.EntityMapping - (*RequiredFieldMapping)(nil), // 53: wg.cosmo.node.v1.RequiredFieldMapping - (*TypeFieldMapping)(nil), // 54: wg.cosmo.node.v1.TypeFieldMapping - (*FieldMapping)(nil), // 55: wg.cosmo.node.v1.FieldMapping - (*ArgumentMapping)(nil), // 56: wg.cosmo.node.v1.ArgumentMapping - (*EnumMapping)(nil), // 57: wg.cosmo.node.v1.EnumMapping - (*EnumValueMapping)(nil), // 58: wg.cosmo.node.v1.EnumValueMapping - (*NatsStreamConfiguration)(nil), // 59: wg.cosmo.node.v1.NatsStreamConfiguration - (*NatsEventConfiguration)(nil), // 60: wg.cosmo.node.v1.NatsEventConfiguration - (*KafkaEventConfiguration)(nil), // 61: wg.cosmo.node.v1.KafkaEventConfiguration - (*RedisEventConfiguration)(nil), // 62: wg.cosmo.node.v1.RedisEventConfiguration - (*EngineEventConfiguration)(nil), // 63: wg.cosmo.node.v1.EngineEventConfiguration - (*DataSourceCustomEvents)(nil), // 64: wg.cosmo.node.v1.DataSourceCustomEvents - (*DataSourceCustom_Static)(nil), // 65: wg.cosmo.node.v1.DataSourceCustom_Static - (*ConfigurationVariable)(nil), // 66: wg.cosmo.node.v1.ConfigurationVariable - (*DirectiveConfiguration)(nil), // 67: wg.cosmo.node.v1.DirectiveConfiguration - (*URLQueryConfiguration)(nil), // 68: wg.cosmo.node.v1.URLQueryConfiguration - (*HTTPHeader)(nil), // 69: wg.cosmo.node.v1.HTTPHeader - (*MTLSConfiguration)(nil), // 70: wg.cosmo.node.v1.MTLSConfiguration - (*GraphQLSubscriptionConfiguration)(nil), // 71: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration - (*GraphQLFederationConfiguration)(nil), // 72: wg.cosmo.node.v1.GraphQLFederationConfiguration - (*InternedString)(nil), // 73: wg.cosmo.node.v1.InternedString - (*SingleTypeField)(nil), // 74: wg.cosmo.node.v1.SingleTypeField - (*SubscriptionFieldCondition)(nil), // 75: wg.cosmo.node.v1.SubscriptionFieldCondition - (*SubscriptionFilterCondition)(nil), // 76: wg.cosmo.node.v1.SubscriptionFilterCondition - (*CacheWarmerOperations)(nil), // 77: wg.cosmo.node.v1.CacheWarmerOperations - (*Operation)(nil), // 78: wg.cosmo.node.v1.Operation - (*OperationRequest)(nil), // 79: wg.cosmo.node.v1.OperationRequest - (*Extension)(nil), // 80: wg.cosmo.node.v1.Extension - (*PersistedQuery)(nil), // 81: wg.cosmo.node.v1.PersistedQuery - (*ClientInfo)(nil), // 82: wg.cosmo.node.v1.ClientInfo - nil, // 83: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry - nil, // 84: wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry - nil, // 85: wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry - nil, // 86: wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry - nil, // 87: wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry - nil, // 88: wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry - nil, // 89: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry - (common.EnumStatusCode)(0), // 90: wg.cosmo.common.EnumStatusCode - (common.GraphQLSubscriptionProtocol)(0), // 91: wg.cosmo.common.GraphQLSubscriptionProtocol - (common.GraphQLWebsocketSubprotocol)(0), // 92: wg.cosmo.common.GraphQLWebsocketSubprotocol + (*QueryCacheConfiguration)(nil), // 24: wg.cosmo.node.v1.QueryCacheConfiguration + (*EntityKeyMapping)(nil), // 25: wg.cosmo.node.v1.EntityKeyMapping + (*EntityCacheFieldMapping)(nil), // 26: wg.cosmo.node.v1.EntityCacheFieldMapping + (*CostConfiguration)(nil), // 27: wg.cosmo.node.v1.CostConfiguration + (*FieldWeightConfiguration)(nil), // 28: wg.cosmo.node.v1.FieldWeightConfiguration + (*FieldListSizeConfiguration)(nil), // 29: wg.cosmo.node.v1.FieldListSizeConfiguration + (*ArgumentConfiguration)(nil), // 30: wg.cosmo.node.v1.ArgumentConfiguration + (*Scopes)(nil), // 31: wg.cosmo.node.v1.Scopes + (*AuthorizationConfiguration)(nil), // 32: wg.cosmo.node.v1.AuthorizationConfiguration + (*FieldConfiguration)(nil), // 33: wg.cosmo.node.v1.FieldConfiguration + (*TypeConfiguration)(nil), // 34: wg.cosmo.node.v1.TypeConfiguration + (*TypeField)(nil), // 35: wg.cosmo.node.v1.TypeField + (*FieldCoordinates)(nil), // 36: wg.cosmo.node.v1.FieldCoordinates + (*FieldSetCondition)(nil), // 37: wg.cosmo.node.v1.FieldSetCondition + (*RequiredField)(nil), // 38: wg.cosmo.node.v1.RequiredField + (*EntityInterfaceConfiguration)(nil), // 39: wg.cosmo.node.v1.EntityInterfaceConfiguration + (*FetchConfiguration)(nil), // 40: wg.cosmo.node.v1.FetchConfiguration + (*StatusCodeTypeMapping)(nil), // 41: wg.cosmo.node.v1.StatusCodeTypeMapping + (*DataSourceCustom_GraphQL)(nil), // 42: wg.cosmo.node.v1.DataSourceCustom_GraphQL + (*GRPCConfiguration)(nil), // 43: wg.cosmo.node.v1.GRPCConfiguration + (*ImageReference)(nil), // 44: wg.cosmo.node.v1.ImageReference + (*PluginConfiguration)(nil), // 45: wg.cosmo.node.v1.PluginConfiguration + (*SSLConfiguration)(nil), // 46: wg.cosmo.node.v1.SSLConfiguration + (*GRPCMapping)(nil), // 47: wg.cosmo.node.v1.GRPCMapping + (*LookupMapping)(nil), // 48: wg.cosmo.node.v1.LookupMapping + (*LookupFieldMapping)(nil), // 49: wg.cosmo.node.v1.LookupFieldMapping + (*OperationMapping)(nil), // 50: wg.cosmo.node.v1.OperationMapping + (*EntityMapping)(nil), // 51: wg.cosmo.node.v1.EntityMapping + (*RequiredFieldMapping)(nil), // 52: wg.cosmo.node.v1.RequiredFieldMapping + (*TypeFieldMapping)(nil), // 53: wg.cosmo.node.v1.TypeFieldMapping + (*FieldMapping)(nil), // 54: wg.cosmo.node.v1.FieldMapping + (*ArgumentMapping)(nil), // 55: wg.cosmo.node.v1.ArgumentMapping + (*EnumMapping)(nil), // 56: wg.cosmo.node.v1.EnumMapping + (*EnumValueMapping)(nil), // 57: wg.cosmo.node.v1.EnumValueMapping + (*NatsStreamConfiguration)(nil), // 58: wg.cosmo.node.v1.NatsStreamConfiguration + (*NatsEventConfiguration)(nil), // 59: wg.cosmo.node.v1.NatsEventConfiguration + (*KafkaEventConfiguration)(nil), // 60: wg.cosmo.node.v1.KafkaEventConfiguration + (*RedisEventConfiguration)(nil), // 61: wg.cosmo.node.v1.RedisEventConfiguration + (*EngineEventConfiguration)(nil), // 62: wg.cosmo.node.v1.EngineEventConfiguration + (*DataSourceCustomEvents)(nil), // 63: wg.cosmo.node.v1.DataSourceCustomEvents + (*DataSourceCustom_Static)(nil), // 64: wg.cosmo.node.v1.DataSourceCustom_Static + (*ConfigurationVariable)(nil), // 65: wg.cosmo.node.v1.ConfigurationVariable + (*DirectiveConfiguration)(nil), // 66: wg.cosmo.node.v1.DirectiveConfiguration + (*URLQueryConfiguration)(nil), // 67: wg.cosmo.node.v1.URLQueryConfiguration + (*HTTPHeader)(nil), // 68: wg.cosmo.node.v1.HTTPHeader + (*MTLSConfiguration)(nil), // 69: wg.cosmo.node.v1.MTLSConfiguration + (*GraphQLSubscriptionConfiguration)(nil), // 70: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration + (*GraphQLFederationConfiguration)(nil), // 71: wg.cosmo.node.v1.GraphQLFederationConfiguration + (*InternedString)(nil), // 72: wg.cosmo.node.v1.InternedString + (*SingleTypeField)(nil), // 73: wg.cosmo.node.v1.SingleTypeField + (*SubscriptionFieldCondition)(nil), // 74: wg.cosmo.node.v1.SubscriptionFieldCondition + (*SubscriptionFilterCondition)(nil), // 75: wg.cosmo.node.v1.SubscriptionFilterCondition + (*CacheWarmerOperations)(nil), // 76: wg.cosmo.node.v1.CacheWarmerOperations + (*Operation)(nil), // 77: wg.cosmo.node.v1.Operation + (*OperationRequest)(nil), // 78: wg.cosmo.node.v1.OperationRequest + (*Extension)(nil), // 79: wg.cosmo.node.v1.Extension + (*PersistedQuery)(nil), // 80: wg.cosmo.node.v1.PersistedQuery + (*ClientInfo)(nil), // 81: wg.cosmo.node.v1.ClientInfo + nil, // 82: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry + nil, // 83: wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry + nil, // 84: wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry + nil, // 85: wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry + nil, // 86: wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry + nil, // 87: wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry + nil, // 88: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry + (common.EnumStatusCode)(0), // 89: wg.cosmo.common.EnumStatusCode + (common.GraphQLSubscriptionProtocol)(0), // 90: wg.cosmo.common.GraphQLSubscriptionProtocol + (common.GraphQLWebsocketSubprotocol)(0), // 91: wg.cosmo.common.GraphQLWebsocketSubprotocol } var file_wg_cosmo_node_v1_node_proto_depIdxs = []int32{ - 83, // 0: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.config_by_feature_flag_name:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry + 82, // 0: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.config_by_feature_flag_name:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry 18, // 1: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig.engine_config:type_name -> wg.cosmo.node.v1.EngineConfiguration 8, // 2: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig.subgraphs:type_name -> wg.cosmo.node.v1.Subgraph 18, // 3: wg.cosmo.node.v1.RouterConfig.engine_config:type_name -> wg.cosmo.node.v1.EngineConfiguration 8, // 4: wg.cosmo.node.v1.RouterConfig.subgraphs:type_name -> wg.cosmo.node.v1.Subgraph 9, // 5: wg.cosmo.node.v1.RouterConfig.feature_flag_configs:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs - 90, // 6: wg.cosmo.node.v1.Response.code:type_name -> wg.cosmo.common.EnumStatusCode + 89, // 6: wg.cosmo.node.v1.Response.code:type_name -> wg.cosmo.common.EnumStatusCode 15, // 7: wg.cosmo.node.v1.RegistrationInfo.account_limits:type_name -> wg.cosmo.node.v1.AccountLimits 12, // 8: wg.cosmo.node.v1.SelfRegisterResponse.response:type_name -> wg.cosmo.node.v1.Response 14, // 9: wg.cosmo.node.v1.SelfRegisterResponse.registrationInfo:type_name -> wg.cosmo.node.v1.RegistrationInfo 19, // 10: wg.cosmo.node.v1.EngineConfiguration.datasource_configurations:type_name -> wg.cosmo.node.v1.DataSourceConfiguration - 34, // 11: wg.cosmo.node.v1.EngineConfiguration.field_configurations:type_name -> wg.cosmo.node.v1.FieldConfiguration - 35, // 12: wg.cosmo.node.v1.EngineConfiguration.type_configurations:type_name -> wg.cosmo.node.v1.TypeConfiguration - 84, // 13: wg.cosmo.node.v1.EngineConfiguration.string_storage:type_name -> wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry + 33, // 11: wg.cosmo.node.v1.EngineConfiguration.field_configurations:type_name -> wg.cosmo.node.v1.FieldConfiguration + 34, // 12: wg.cosmo.node.v1.EngineConfiguration.type_configurations:type_name -> wg.cosmo.node.v1.TypeConfiguration + 83, // 13: wg.cosmo.node.v1.EngineConfiguration.string_storage:type_name -> wg.cosmo.node.v1.EngineConfiguration.StringStorageEntry 2, // 14: wg.cosmo.node.v1.DataSourceConfiguration.kind:type_name -> wg.cosmo.node.v1.DataSourceKind - 36, // 15: wg.cosmo.node.v1.DataSourceConfiguration.root_nodes:type_name -> wg.cosmo.node.v1.TypeField - 36, // 16: wg.cosmo.node.v1.DataSourceConfiguration.child_nodes:type_name -> wg.cosmo.node.v1.TypeField - 43, // 17: wg.cosmo.node.v1.DataSourceConfiguration.custom_graphql:type_name -> wg.cosmo.node.v1.DataSourceCustom_GraphQL - 65, // 18: wg.cosmo.node.v1.DataSourceConfiguration.custom_static:type_name -> wg.cosmo.node.v1.DataSourceCustom_Static - 67, // 19: wg.cosmo.node.v1.DataSourceConfiguration.directives:type_name -> wg.cosmo.node.v1.DirectiveConfiguration - 39, // 20: wg.cosmo.node.v1.DataSourceConfiguration.keys:type_name -> wg.cosmo.node.v1.RequiredField - 39, // 21: wg.cosmo.node.v1.DataSourceConfiguration.provides:type_name -> wg.cosmo.node.v1.RequiredField - 39, // 22: wg.cosmo.node.v1.DataSourceConfiguration.requires:type_name -> wg.cosmo.node.v1.RequiredField - 64, // 23: wg.cosmo.node.v1.DataSourceConfiguration.custom_events:type_name -> wg.cosmo.node.v1.DataSourceCustomEvents - 40, // 24: wg.cosmo.node.v1.DataSourceConfiguration.entity_interfaces:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration - 40, // 25: wg.cosmo.node.v1.DataSourceConfiguration.interface_objects:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration - 28, // 26: wg.cosmo.node.v1.DataSourceConfiguration.cost_configuration:type_name -> wg.cosmo.node.v1.CostConfiguration + 35, // 15: wg.cosmo.node.v1.DataSourceConfiguration.root_nodes:type_name -> wg.cosmo.node.v1.TypeField + 35, // 16: wg.cosmo.node.v1.DataSourceConfiguration.child_nodes:type_name -> wg.cosmo.node.v1.TypeField + 42, // 17: wg.cosmo.node.v1.DataSourceConfiguration.custom_graphql:type_name -> wg.cosmo.node.v1.DataSourceCustom_GraphQL + 64, // 18: wg.cosmo.node.v1.DataSourceConfiguration.custom_static:type_name -> wg.cosmo.node.v1.DataSourceCustom_Static + 66, // 19: wg.cosmo.node.v1.DataSourceConfiguration.directives:type_name -> wg.cosmo.node.v1.DirectiveConfiguration + 38, // 20: wg.cosmo.node.v1.DataSourceConfiguration.keys:type_name -> wg.cosmo.node.v1.RequiredField + 38, // 21: wg.cosmo.node.v1.DataSourceConfiguration.provides:type_name -> wg.cosmo.node.v1.RequiredField + 38, // 22: wg.cosmo.node.v1.DataSourceConfiguration.requires:type_name -> wg.cosmo.node.v1.RequiredField + 63, // 23: wg.cosmo.node.v1.DataSourceConfiguration.custom_events:type_name -> wg.cosmo.node.v1.DataSourceCustomEvents + 39, // 24: wg.cosmo.node.v1.DataSourceConfiguration.entity_interfaces:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration + 39, // 25: wg.cosmo.node.v1.DataSourceConfiguration.interface_objects:type_name -> wg.cosmo.node.v1.EntityInterfaceConfiguration + 27, // 26: wg.cosmo.node.v1.DataSourceConfiguration.cost_configuration:type_name -> wg.cosmo.node.v1.CostConfiguration 20, // 27: wg.cosmo.node.v1.DataSourceConfiguration.entity_caching_configuration:type_name -> wg.cosmo.node.v1.EntityCachingConfiguration 21, // 28: wg.cosmo.node.v1.EntityCachingConfiguration.entity_cache:type_name -> wg.cosmo.node.v1.EntityCacheConfiguration 22, // 29: wg.cosmo.node.v1.EntityCachingConfiguration.cache_invalidate_configurations:type_name -> wg.cosmo.node.v1.CacheInvalidateConfiguration 23, // 30: wg.cosmo.node.v1.EntityCachingConfiguration.cache_populate_configurations:type_name -> wg.cosmo.node.v1.CachePopulateConfiguration - 24, // 31: wg.cosmo.node.v1.EntityCachingConfiguration.request_scoped_configurations:type_name -> wg.cosmo.node.v1.RequestScopedConfiguration - 25, // 32: wg.cosmo.node.v1.EntityCachingConfiguration.query_cache_configurations:type_name -> wg.cosmo.node.v1.QueryCacheConfiguration - 26, // 33: wg.cosmo.node.v1.QueryCacheConfiguration.entity_key_mappings:type_name -> wg.cosmo.node.v1.EntityKeyMapping - 27, // 34: wg.cosmo.node.v1.EntityKeyMapping.field_mappings:type_name -> wg.cosmo.node.v1.EntityCacheFieldMapping - 29, // 35: wg.cosmo.node.v1.CostConfiguration.field_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration - 30, // 36: wg.cosmo.node.v1.CostConfiguration.list_sizes:type_name -> wg.cosmo.node.v1.FieldListSizeConfiguration - 85, // 37: wg.cosmo.node.v1.CostConfiguration.type_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry - 86, // 38: wg.cosmo.node.v1.CostConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry - 87, // 39: wg.cosmo.node.v1.FieldWeightConfiguration.argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry - 88, // 40: wg.cosmo.node.v1.FieldWeightConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry - 1, // 41: wg.cosmo.node.v1.ArgumentConfiguration.source_type:type_name -> wg.cosmo.node.v1.ArgumentSource - 32, // 42: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes:type_name -> wg.cosmo.node.v1.Scopes - 32, // 43: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes_by_or:type_name -> wg.cosmo.node.v1.Scopes - 31, // 44: wg.cosmo.node.v1.FieldConfiguration.arguments_configuration:type_name -> wg.cosmo.node.v1.ArgumentConfiguration - 33, // 45: wg.cosmo.node.v1.FieldConfiguration.authorization_configuration:type_name -> wg.cosmo.node.v1.AuthorizationConfiguration - 76, // 46: wg.cosmo.node.v1.FieldConfiguration.subscription_filter_condition:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 37, // 47: wg.cosmo.node.v1.FieldSetCondition.field_coordinates_path:type_name -> wg.cosmo.node.v1.FieldCoordinates - 38, // 48: wg.cosmo.node.v1.RequiredField.conditions:type_name -> wg.cosmo.node.v1.FieldSetCondition - 66, // 49: wg.cosmo.node.v1.FetchConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 7, // 50: wg.cosmo.node.v1.FetchConfiguration.method:type_name -> wg.cosmo.node.v1.HTTPMethod - 89, // 51: wg.cosmo.node.v1.FetchConfiguration.header:type_name -> wg.cosmo.node.v1.FetchConfiguration.HeaderEntry - 66, // 52: wg.cosmo.node.v1.FetchConfiguration.body:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 68, // 53: wg.cosmo.node.v1.FetchConfiguration.query:type_name -> wg.cosmo.node.v1.URLQueryConfiguration - 70, // 54: wg.cosmo.node.v1.FetchConfiguration.mtls:type_name -> wg.cosmo.node.v1.MTLSConfiguration - 66, // 55: wg.cosmo.node.v1.FetchConfiguration.base_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 66, // 56: wg.cosmo.node.v1.FetchConfiguration.path:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 66, // 57: wg.cosmo.node.v1.FetchConfiguration.http_proxy_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 41, // 58: wg.cosmo.node.v1.DataSourceCustom_GraphQL.fetch:type_name -> wg.cosmo.node.v1.FetchConfiguration - 71, // 59: wg.cosmo.node.v1.DataSourceCustom_GraphQL.subscription:type_name -> wg.cosmo.node.v1.GraphQLSubscriptionConfiguration - 72, // 60: wg.cosmo.node.v1.DataSourceCustom_GraphQL.federation:type_name -> wg.cosmo.node.v1.GraphQLFederationConfiguration - 73, // 61: wg.cosmo.node.v1.DataSourceCustom_GraphQL.upstream_schema:type_name -> wg.cosmo.node.v1.InternedString - 74, // 62: wg.cosmo.node.v1.DataSourceCustom_GraphQL.custom_scalar_type_fields:type_name -> wg.cosmo.node.v1.SingleTypeField - 44, // 63: wg.cosmo.node.v1.DataSourceCustom_GraphQL.grpc:type_name -> wg.cosmo.node.v1.GRPCConfiguration - 48, // 64: wg.cosmo.node.v1.GRPCConfiguration.mapping:type_name -> wg.cosmo.node.v1.GRPCMapping - 46, // 65: wg.cosmo.node.v1.GRPCConfiguration.plugin:type_name -> wg.cosmo.node.v1.PluginConfiguration - 45, // 66: wg.cosmo.node.v1.PluginConfiguration.image_reference:type_name -> wg.cosmo.node.v1.ImageReference - 51, // 67: wg.cosmo.node.v1.GRPCMapping.operation_mappings:type_name -> wg.cosmo.node.v1.OperationMapping - 52, // 68: wg.cosmo.node.v1.GRPCMapping.entity_mappings:type_name -> wg.cosmo.node.v1.EntityMapping - 54, // 69: wg.cosmo.node.v1.GRPCMapping.type_field_mappings:type_name -> wg.cosmo.node.v1.TypeFieldMapping - 57, // 70: wg.cosmo.node.v1.GRPCMapping.enum_mappings:type_name -> wg.cosmo.node.v1.EnumMapping - 49, // 71: wg.cosmo.node.v1.GRPCMapping.resolve_mappings:type_name -> wg.cosmo.node.v1.LookupMapping - 3, // 72: wg.cosmo.node.v1.LookupMapping.type:type_name -> wg.cosmo.node.v1.LookupType - 50, // 73: wg.cosmo.node.v1.LookupMapping.lookup_mapping:type_name -> wg.cosmo.node.v1.LookupFieldMapping - 55, // 74: wg.cosmo.node.v1.LookupFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping - 4, // 75: wg.cosmo.node.v1.OperationMapping.type:type_name -> wg.cosmo.node.v1.OperationType - 53, // 76: wg.cosmo.node.v1.EntityMapping.required_field_mappings:type_name -> wg.cosmo.node.v1.RequiredFieldMapping - 55, // 77: wg.cosmo.node.v1.RequiredFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping - 55, // 78: wg.cosmo.node.v1.TypeFieldMapping.field_mappings:type_name -> wg.cosmo.node.v1.FieldMapping - 56, // 79: wg.cosmo.node.v1.FieldMapping.argument_mappings:type_name -> wg.cosmo.node.v1.ArgumentMapping - 58, // 80: wg.cosmo.node.v1.EnumMapping.values:type_name -> wg.cosmo.node.v1.EnumValueMapping - 63, // 81: wg.cosmo.node.v1.NatsEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 59, // 82: wg.cosmo.node.v1.NatsEventConfiguration.stream_configuration:type_name -> wg.cosmo.node.v1.NatsStreamConfiguration - 63, // 83: wg.cosmo.node.v1.KafkaEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 63, // 84: wg.cosmo.node.v1.RedisEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration - 5, // 85: wg.cosmo.node.v1.EngineEventConfiguration.type:type_name -> wg.cosmo.node.v1.EventType - 60, // 86: wg.cosmo.node.v1.DataSourceCustomEvents.nats:type_name -> wg.cosmo.node.v1.NatsEventConfiguration - 61, // 87: wg.cosmo.node.v1.DataSourceCustomEvents.kafka:type_name -> wg.cosmo.node.v1.KafkaEventConfiguration - 62, // 88: wg.cosmo.node.v1.DataSourceCustomEvents.redis:type_name -> wg.cosmo.node.v1.RedisEventConfiguration - 66, // 89: wg.cosmo.node.v1.DataSourceCustom_Static.data:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 6, // 90: wg.cosmo.node.v1.ConfigurationVariable.kind:type_name -> wg.cosmo.node.v1.ConfigurationVariableKind - 66, // 91: wg.cosmo.node.v1.HTTPHeader.values:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 66, // 92: wg.cosmo.node.v1.MTLSConfiguration.key:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 66, // 93: wg.cosmo.node.v1.MTLSConfiguration.cert:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 66, // 94: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable - 91, // 95: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol - 92, // 96: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.websocketSubprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol - 76, // 97: wg.cosmo.node.v1.SubscriptionFilterCondition.and:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 75, // 98: wg.cosmo.node.v1.SubscriptionFilterCondition.in:type_name -> wg.cosmo.node.v1.SubscriptionFieldCondition - 76, // 99: wg.cosmo.node.v1.SubscriptionFilterCondition.not:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 76, // 100: wg.cosmo.node.v1.SubscriptionFilterCondition.or:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition - 78, // 101: wg.cosmo.node.v1.CacheWarmerOperations.operations:type_name -> wg.cosmo.node.v1.Operation - 79, // 102: wg.cosmo.node.v1.Operation.request:type_name -> wg.cosmo.node.v1.OperationRequest - 82, // 103: wg.cosmo.node.v1.Operation.client:type_name -> wg.cosmo.node.v1.ClientInfo - 80, // 104: wg.cosmo.node.v1.OperationRequest.extensions:type_name -> wg.cosmo.node.v1.Extension - 81, // 105: wg.cosmo.node.v1.Extension.persisted_query:type_name -> wg.cosmo.node.v1.PersistedQuery - 10, // 106: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry.value:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig - 69, // 107: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry.value:type_name -> wg.cosmo.node.v1.HTTPHeader - 16, // 108: wg.cosmo.node.v1.NodeService.SelfRegister:input_type -> wg.cosmo.node.v1.SelfRegisterRequest - 17, // 109: wg.cosmo.node.v1.NodeService.SelfRegister:output_type -> wg.cosmo.node.v1.SelfRegisterResponse - 109, // [109:110] is the sub-list for method output_type - 108, // [108:109] is the sub-list for method input_type - 108, // [108:108] is the sub-list for extension type_name - 108, // [108:108] is the sub-list for extension extendee - 0, // [0:108] is the sub-list for field type_name + 24, // 31: wg.cosmo.node.v1.EntityCachingConfiguration.query_cache_configurations:type_name -> wg.cosmo.node.v1.QueryCacheConfiguration + 25, // 32: wg.cosmo.node.v1.QueryCacheConfiguration.entity_key_mappings:type_name -> wg.cosmo.node.v1.EntityKeyMapping + 26, // 33: wg.cosmo.node.v1.EntityKeyMapping.field_mappings:type_name -> wg.cosmo.node.v1.EntityCacheFieldMapping + 28, // 34: wg.cosmo.node.v1.CostConfiguration.field_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration + 29, // 35: wg.cosmo.node.v1.CostConfiguration.list_sizes:type_name -> wg.cosmo.node.v1.FieldListSizeConfiguration + 84, // 36: wg.cosmo.node.v1.CostConfiguration.type_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.TypeWeightsEntry + 85, // 37: wg.cosmo.node.v1.CostConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.CostConfiguration.DirectiveArgumentWeightsEntry + 86, // 38: wg.cosmo.node.v1.FieldWeightConfiguration.argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.ArgumentWeightsEntry + 87, // 39: wg.cosmo.node.v1.FieldWeightConfiguration.directive_argument_weights:type_name -> wg.cosmo.node.v1.FieldWeightConfiguration.DirectiveArgumentWeightsEntry + 1, // 40: wg.cosmo.node.v1.ArgumentConfiguration.source_type:type_name -> wg.cosmo.node.v1.ArgumentSource + 31, // 41: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes:type_name -> wg.cosmo.node.v1.Scopes + 31, // 42: wg.cosmo.node.v1.AuthorizationConfiguration.required_or_scopes_by_or:type_name -> wg.cosmo.node.v1.Scopes + 30, // 43: wg.cosmo.node.v1.FieldConfiguration.arguments_configuration:type_name -> wg.cosmo.node.v1.ArgumentConfiguration + 32, // 44: wg.cosmo.node.v1.FieldConfiguration.authorization_configuration:type_name -> wg.cosmo.node.v1.AuthorizationConfiguration + 75, // 45: wg.cosmo.node.v1.FieldConfiguration.subscription_filter_condition:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 36, // 46: wg.cosmo.node.v1.FieldSetCondition.field_coordinates_path:type_name -> wg.cosmo.node.v1.FieldCoordinates + 37, // 47: wg.cosmo.node.v1.RequiredField.conditions:type_name -> wg.cosmo.node.v1.FieldSetCondition + 65, // 48: wg.cosmo.node.v1.FetchConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 7, // 49: wg.cosmo.node.v1.FetchConfiguration.method:type_name -> wg.cosmo.node.v1.HTTPMethod + 88, // 50: wg.cosmo.node.v1.FetchConfiguration.header:type_name -> wg.cosmo.node.v1.FetchConfiguration.HeaderEntry + 65, // 51: wg.cosmo.node.v1.FetchConfiguration.body:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 67, // 52: wg.cosmo.node.v1.FetchConfiguration.query:type_name -> wg.cosmo.node.v1.URLQueryConfiguration + 69, // 53: wg.cosmo.node.v1.FetchConfiguration.mtls:type_name -> wg.cosmo.node.v1.MTLSConfiguration + 65, // 54: wg.cosmo.node.v1.FetchConfiguration.base_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 65, // 55: wg.cosmo.node.v1.FetchConfiguration.path:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 65, // 56: wg.cosmo.node.v1.FetchConfiguration.http_proxy_url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 40, // 57: wg.cosmo.node.v1.DataSourceCustom_GraphQL.fetch:type_name -> wg.cosmo.node.v1.FetchConfiguration + 70, // 58: wg.cosmo.node.v1.DataSourceCustom_GraphQL.subscription:type_name -> wg.cosmo.node.v1.GraphQLSubscriptionConfiguration + 71, // 59: wg.cosmo.node.v1.DataSourceCustom_GraphQL.federation:type_name -> wg.cosmo.node.v1.GraphQLFederationConfiguration + 72, // 60: wg.cosmo.node.v1.DataSourceCustom_GraphQL.upstream_schema:type_name -> wg.cosmo.node.v1.InternedString + 73, // 61: wg.cosmo.node.v1.DataSourceCustom_GraphQL.custom_scalar_type_fields:type_name -> wg.cosmo.node.v1.SingleTypeField + 43, // 62: wg.cosmo.node.v1.DataSourceCustom_GraphQL.grpc:type_name -> wg.cosmo.node.v1.GRPCConfiguration + 47, // 63: wg.cosmo.node.v1.GRPCConfiguration.mapping:type_name -> wg.cosmo.node.v1.GRPCMapping + 45, // 64: wg.cosmo.node.v1.GRPCConfiguration.plugin:type_name -> wg.cosmo.node.v1.PluginConfiguration + 44, // 65: wg.cosmo.node.v1.PluginConfiguration.image_reference:type_name -> wg.cosmo.node.v1.ImageReference + 50, // 66: wg.cosmo.node.v1.GRPCMapping.operation_mappings:type_name -> wg.cosmo.node.v1.OperationMapping + 51, // 67: wg.cosmo.node.v1.GRPCMapping.entity_mappings:type_name -> wg.cosmo.node.v1.EntityMapping + 53, // 68: wg.cosmo.node.v1.GRPCMapping.type_field_mappings:type_name -> wg.cosmo.node.v1.TypeFieldMapping + 56, // 69: wg.cosmo.node.v1.GRPCMapping.enum_mappings:type_name -> wg.cosmo.node.v1.EnumMapping + 48, // 70: wg.cosmo.node.v1.GRPCMapping.resolve_mappings:type_name -> wg.cosmo.node.v1.LookupMapping + 3, // 71: wg.cosmo.node.v1.LookupMapping.type:type_name -> wg.cosmo.node.v1.LookupType + 49, // 72: wg.cosmo.node.v1.LookupMapping.lookup_mapping:type_name -> wg.cosmo.node.v1.LookupFieldMapping + 54, // 73: wg.cosmo.node.v1.LookupFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping + 4, // 74: wg.cosmo.node.v1.OperationMapping.type:type_name -> wg.cosmo.node.v1.OperationType + 52, // 75: wg.cosmo.node.v1.EntityMapping.required_field_mappings:type_name -> wg.cosmo.node.v1.RequiredFieldMapping + 54, // 76: wg.cosmo.node.v1.RequiredFieldMapping.field_mapping:type_name -> wg.cosmo.node.v1.FieldMapping + 54, // 77: wg.cosmo.node.v1.TypeFieldMapping.field_mappings:type_name -> wg.cosmo.node.v1.FieldMapping + 55, // 78: wg.cosmo.node.v1.FieldMapping.argument_mappings:type_name -> wg.cosmo.node.v1.ArgumentMapping + 57, // 79: wg.cosmo.node.v1.EnumMapping.values:type_name -> wg.cosmo.node.v1.EnumValueMapping + 62, // 80: wg.cosmo.node.v1.NatsEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 58, // 81: wg.cosmo.node.v1.NatsEventConfiguration.stream_configuration:type_name -> wg.cosmo.node.v1.NatsStreamConfiguration + 62, // 82: wg.cosmo.node.v1.KafkaEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 62, // 83: wg.cosmo.node.v1.RedisEventConfiguration.engine_event_configuration:type_name -> wg.cosmo.node.v1.EngineEventConfiguration + 5, // 84: wg.cosmo.node.v1.EngineEventConfiguration.type:type_name -> wg.cosmo.node.v1.EventType + 59, // 85: wg.cosmo.node.v1.DataSourceCustomEvents.nats:type_name -> wg.cosmo.node.v1.NatsEventConfiguration + 60, // 86: wg.cosmo.node.v1.DataSourceCustomEvents.kafka:type_name -> wg.cosmo.node.v1.KafkaEventConfiguration + 61, // 87: wg.cosmo.node.v1.DataSourceCustomEvents.redis:type_name -> wg.cosmo.node.v1.RedisEventConfiguration + 65, // 88: wg.cosmo.node.v1.DataSourceCustom_Static.data:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 6, // 89: wg.cosmo.node.v1.ConfigurationVariable.kind:type_name -> wg.cosmo.node.v1.ConfigurationVariableKind + 65, // 90: wg.cosmo.node.v1.HTTPHeader.values:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 65, // 91: wg.cosmo.node.v1.MTLSConfiguration.key:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 65, // 92: wg.cosmo.node.v1.MTLSConfiguration.cert:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 65, // 93: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.url:type_name -> wg.cosmo.node.v1.ConfigurationVariable + 90, // 94: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol + 91, // 95: wg.cosmo.node.v1.GraphQLSubscriptionConfiguration.websocketSubprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol + 75, // 96: wg.cosmo.node.v1.SubscriptionFilterCondition.and:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 74, // 97: wg.cosmo.node.v1.SubscriptionFilterCondition.in:type_name -> wg.cosmo.node.v1.SubscriptionFieldCondition + 75, // 98: wg.cosmo.node.v1.SubscriptionFilterCondition.not:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 75, // 99: wg.cosmo.node.v1.SubscriptionFilterCondition.or:type_name -> wg.cosmo.node.v1.SubscriptionFilterCondition + 77, // 100: wg.cosmo.node.v1.CacheWarmerOperations.operations:type_name -> wg.cosmo.node.v1.Operation + 78, // 101: wg.cosmo.node.v1.Operation.request:type_name -> wg.cosmo.node.v1.OperationRequest + 81, // 102: wg.cosmo.node.v1.Operation.client:type_name -> wg.cosmo.node.v1.ClientInfo + 79, // 103: wg.cosmo.node.v1.OperationRequest.extensions:type_name -> wg.cosmo.node.v1.Extension + 80, // 104: wg.cosmo.node.v1.Extension.persisted_query:type_name -> wg.cosmo.node.v1.PersistedQuery + 10, // 105: wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntry.value:type_name -> wg.cosmo.node.v1.FeatureFlagRouterExecutionConfig + 68, // 106: wg.cosmo.node.v1.FetchConfiguration.HeaderEntry.value:type_name -> wg.cosmo.node.v1.HTTPHeader + 16, // 107: wg.cosmo.node.v1.NodeService.SelfRegister:input_type -> wg.cosmo.node.v1.SelfRegisterRequest + 17, // 108: wg.cosmo.node.v1.NodeService.SelfRegister:output_type -> wg.cosmo.node.v1.SelfRegisterResponse + 108, // [108:109] is the sub-list for method output_type + 107, // [107:108] is the sub-list for method input_type + 107, // [107:107] is the sub-list for extension type_name + 107, // [107:107] is the sub-list for extension extendee + 0, // [0:107] is the sub-list for field type_name } func init() { file_wg_cosmo_node_v1_node_proto_init() } @@ -5879,20 +5798,20 @@ func file_wg_cosmo_node_v1_node_proto_init() { file_wg_cosmo_node_v1_node_proto_msgTypes[4].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[9].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[10].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[20].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[21].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[22].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[26].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[33].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[38].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[63].OneofWrappers = []any{} - file_wg_cosmo_node_v1_node_proto_msgTypes[68].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[25].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[32].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[37].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[62].OneofWrappers = []any{} + file_wg_cosmo_node_v1_node_proto_msgTypes[67].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_wg_cosmo_node_v1_node_proto_rawDesc), len(file_wg_cosmo_node_v1_node_proto_rawDesc)), NumEnums: 8, - NumMessages: 82, + NumMessages: 81, NumExtensions: 0, NumServices: 1, }, diff --git a/shared/src/router-config/builder.ts b/shared/src/router-config/builder.ts index 09b2793bcf..c2d0bfb774 100644 --- a/shared/src/router-config/builder.ts +++ b/shared/src/router-config/builder.ts @@ -40,7 +40,6 @@ import { ImageReference, InternedString, PluginConfiguration, - RequestScopedConfiguration, QueryCacheConfiguration, RouterConfig, TypeField, @@ -92,7 +91,6 @@ function extractEntityCachingConfiguration( const entityCache: EntityCacheConfiguration[] = []; const cacheInvalidateConfigurations: CacheInvalidateConfiguration[] = []; const cachePopulateConfigurations: CachePopulateConfiguration[] = []; - const requestScopedConfigurations: RequestScopedConfiguration[] = []; const queryCacheConfigurations: QueryCacheConfiguration[] = []; for (const data of dataByTypeName.values()) { if (!data.entityCaching) { @@ -132,15 +130,6 @@ function extractEntityCachingConfiguration( }), ); } - for (const field of data.entityCaching?.requestScopedConfigurations) { - requestScopedConfigurations.push( - new RequestScopedConfiguration({ - fieldName: field.fieldName, - typeName: field.typeName, - l1Key: field.l1Key, - }), - ); - } for (const rfc of data.entityCaching?.queryCacheConfigurations ?? []) { queryCacheConfigurations.push( new QueryCacheConfiguration({ @@ -171,14 +160,12 @@ function extractEntityCachingConfiguration( entityCache.length > 0 || cacheInvalidateConfigurations.length > 0 || cachePopulateConfigurations.length > 0 || - requestScopedConfigurations.length > 0 || queryCacheConfigurations.length > 0 ) { return new EntityCachingConfiguration({ entityCache, cacheInvalidateConfigurations, cachePopulateConfigurations, - requestScopedConfigurations, queryCacheConfigurations, }); } diff --git a/shared/test/entity-caching.test.ts b/shared/test/entity-caching.test.ts index 6934435301..c465089316 100644 --- a/shared/test/entity-caching.test.ts +++ b/shared/test/entity-caching.test.ts @@ -46,7 +46,6 @@ describe('Entity caching router-config builder (extractEntityCachingConfiguratio const ec = buildEntityCaching(` type Query { product(id: ID! @openfed__is(fields: "id")): Product @openfed__queryCache(maxAge: 30) - me: User @openfed__requestScoped(key: "u") } type Mutation { updateProduct(id: ID!): Product @openfed__cacheInvalidate @@ -56,20 +55,10 @@ describe('Entity caching router-config builder (extractEntityCachingConfiguratio id: ID! name: String! } - type User @key(fields: "id") { - id: ID! - name: String! - } `); expect(ec).toBeDefined(); - // @openfed__requestScoped - expect(ec!.requestScopedConfigurations).toHaveLength(1); - expect(ec!.requestScopedConfigurations[0].fieldName).toBe('me'); - expect(ec!.requestScopedConfigurations[0].typeName).toBe('Query'); - expect(ec!.requestScopedConfigurations[0].l1Key).toBe('test.u'); - // @openfed__entityCache (Int args become BigInt; flag defaults preserved) expect(ec!.entityCache).toHaveLength(1); expect(ec!.entityCache[0].typeName).toBe('Product'); From b4effbd2f0cad27d6c27f03c08c73bf4f4b998f7 Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Tue, 23 Jun 2026 12:47:00 +0530 Subject: [PATCH 63/65] refactor: revert maxAgeNotPositiveIntegerErrorMessage to positional value arg Pass the value directly instead of { directiveName, value }; the error message no longer includes the directive name. Restores the base signature and updates all call sites (entityCache/cachePopulate/queryCache handlers + tests). --- composition/src/errors/errors.ts | 8 ++------ composition/src/errors/types/params.ts | 5 ----- .../src/v1/normalization/normalization-factory.ts | 14 +++++--------- .../tests/v1/directives/cache-populate.test.ts | 6 +++--- .../tests/v1/directives/entity-cache.test.ts | 4 ++-- .../tests/v1/directives/query-cache.test.ts | 2 +- 6 files changed, 13 insertions(+), 26 deletions(-) diff --git a/composition/src/errors/errors.ts b/composition/src/errors/errors.ts index 22f46f7105..2a6055957d 100644 --- a/composition/src/errors/errors.ts +++ b/composition/src/errors/errors.ts @@ -18,7 +18,6 @@ import { type InvalidRepeatedDirectiveErrorParams, type InvalidSubValueFieldLinkDirectiveImportErrorParams, type invalidVersionLinkDirectiveUrlErrorParams, - type MaxAgeNotPositiveIntegerErrorParams, type NonExternalConditionalFieldErrorParams, type OneOfRequiredFieldsErrorParams, type SemanticNonNullLevelsIndexOutOfBoundsErrorParams, @@ -2057,11 +2056,8 @@ export function entityCacheWithoutKeyErrorMessage(typeName: TypeName): string { return `Object "${typeName}" does not define a "@key" directive.`; } -export function maxAgeNotPositiveIntegerErrorMessage({ - directiveName, - value, -}: MaxAgeNotPositiveIntegerErrorParams): string { - return `The directive "@${directiveName}" argument "maxAge" must be provided a positive integer; received "${value}".`; +export function maxAgeNotPositiveIntegerErrorMessage(value: number | string | null): string { + return `The argument "maxAge" must be provided a positive integer; received "${value}".`; } export function negativeCacheTTLNotNonNegativeIntegerErrorMessage(value: number): string { diff --git a/composition/src/errors/types/params.ts b/composition/src/errors/types/params.ts index a4b8833fc7..826aa98382 100644 --- a/composition/src/errors/types/params.ts +++ b/composition/src/errors/types/params.ts @@ -99,8 +99,3 @@ export type InvalidEntityReturnTypeErrorParams = { fieldCoords: string; returnTypeName: string; }; - -export type MaxAgeNotPositiveIntegerErrorParams = { - directiveName: DirectiveName; - value: number | string | null; -}; diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index 664f5272f7..23ee0b65a4 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -498,8 +498,7 @@ export class NormalizationFactory { directiveDefinitionDataByName = initializeDirectiveDefinitionDatas(); doesParentRequireFetchReasons = false; edfsDirectiveReferences = new Set(); - /** - * Cached entity configs keyed by type name, populated by {@link extractEntityCacheDirective} from + /* Cached entity configs keyed by type name, populated by extractEntityCacheDirective() from * `@openfed__entityCache`. Future caching directives (`@openfed__queryCache` etc.) use this as a lookup * to verify a field's return type is a cached entity. */ @@ -4066,7 +4065,7 @@ export class NormalizationFactory { /* validateDirectives() (run earlier in normalize()) has already guaranteed each argument's type — * Int for maxAge/negativeCacheTTL, Boolean for the flags — so the generic ConstDirectiveNode is - * narrowed once to the precise typed node, mirroring ComposeDirectiveNode. + * narrowed once to the precise typed node, mirroring RequestScopedDirectiveNode/ComposeDirectiveNode. * Optional arguments may be absent (definition defaults are not materialized onto the usage AST), * so the config starts at the directive's documented defaults and each present argument overrides it. */ @@ -4131,7 +4130,7 @@ export class NormalizationFactory { if (config.maxAgeSeconds <= 0) { entityCacheErrors.push( invalidDirectiveError(OPENFED_ENTITY_CACHE, typeName, FIRST_ORDINAL, [ - maxAgeNotPositiveIntegerErrorMessage({ directiveName: OPENFED_ENTITY_CACHE, value: config.maxAgeSeconds }), + maxAgeNotPositiveIntegerErrorMessage(config.maxAgeSeconds), ]), ); } @@ -4265,10 +4264,7 @@ export class NormalizationFactory { this.errors.push( invalidDirectiveError(OPENFED_CACHE_POPULATE, fieldCoords, FIRST_ORDINAL, [ // If null is explicitly provided in GraphQL the value in JS is undefined. - maxAgeNotPositiveIntegerErrorMessage({ - directiveName: OPENFED_CACHE_POPULATE, - value: maxAgeArgument.value.value ?? null, - }), + maxAgeNotPositiveIntegerErrorMessage(maxAgeArgument.value.value ?? null), ]), ); return true; @@ -4331,7 +4327,7 @@ export class NormalizationFactory { if (maxAgeSeconds <= 0) { this.errors.push( invalidDirectiveError(OPENFED_QUERY_CACHE, fieldCoords, FIRST_ORDINAL, [ - maxAgeNotPositiveIntegerErrorMessage({ directiveName: OPENFED_QUERY_CACHE, value: maxAgeSeconds }), + maxAgeNotPositiveIntegerErrorMessage(maxAgeSeconds), ]), ); return; diff --git a/composition/tests/v1/directives/cache-populate.test.ts b/composition/tests/v1/directives/cache-populate.test.ts index c22d4e53b1..a51d0b38f8 100644 --- a/composition/tests/v1/directives/cache-populate.test.ts +++ b/composition/tests/v1/directives/cache-populate.test.ts @@ -216,7 +216,7 @@ describe('@openfed__cachePopulate tests', () => { expect(errors).toHaveLength(1); expect(errors[0]).toStrictEqual( invalidDirectiveError(OPENFED_CACHE_POPULATE, 'Mutation.createProduct', FIRST_ORDINAL, [ - maxAgeNotPositiveIntegerErrorMessage({ directiveName: OPENFED_CACHE_POPULATE, value: 0 }), + maxAgeNotPositiveIntegerErrorMessage(0), ]), ); }); @@ -241,7 +241,7 @@ describe('@openfed__cachePopulate tests', () => { expect(errors).toHaveLength(1); expect(errors).toStrictEqual([ invalidDirectiveError(OPENFED_CACHE_POPULATE, 'Mutation.createProduct', FIRST_ORDINAL, [ - maxAgeNotPositiveIntegerErrorMessage({ directiveName: OPENFED_CACHE_POPULATE, value: 0 }), + maxAgeNotPositiveIntegerErrorMessage(0), ]), ]); expect(warnings).toHaveLength(0); @@ -311,7 +311,7 @@ describe('@openfed__cachePopulate tests', () => { expect(errors).toHaveLength(1); expect(errors[0]).toStrictEqual( invalidDirectiveError(OPENFED_CACHE_POPULATE, 'Mutation.updateProduct', FIRST_ORDINAL, [ - maxAgeNotPositiveIntegerErrorMessage({ directiveName: OPENFED_CACHE_POPULATE, value: null }), + maxAgeNotPositiveIntegerErrorMessage(null), ]), ); }); diff --git a/composition/tests/v1/directives/entity-cache.test.ts b/composition/tests/v1/directives/entity-cache.test.ts index e48f97d0e6..84aaea0095 100644 --- a/composition/tests/v1/directives/entity-cache.test.ts +++ b/composition/tests/v1/directives/entity-cache.test.ts @@ -56,7 +56,7 @@ describe('@openfed__entityCache tests', () => { expect(errors).toHaveLength(1); expect(errors[0]).toStrictEqual( invalidDirectiveError(OPENFED_ENTITY_CACHE, 'Product', FIRST_ORDINAL, [ - maxAgeNotPositiveIntegerErrorMessage({ directiveName: OPENFED_ENTITY_CACHE, value: 0 }), + maxAgeNotPositiveIntegerErrorMessage(0), ]), ); }); @@ -75,7 +75,7 @@ describe('@openfed__entityCache tests', () => { expect(errors).toHaveLength(1); expect(errors[0]).toStrictEqual( invalidDirectiveError(OPENFED_ENTITY_CACHE, 'Product', FIRST_ORDINAL, [ - maxAgeNotPositiveIntegerErrorMessage({ directiveName: OPENFED_ENTITY_CACHE, value: -5 }), + maxAgeNotPositiveIntegerErrorMessage(-5), ]), ); }); diff --git a/composition/tests/v1/directives/query-cache.test.ts b/composition/tests/v1/directives/query-cache.test.ts index d457e6c47f..b423da345e 100644 --- a/composition/tests/v1/directives/query-cache.test.ts +++ b/composition/tests/v1/directives/query-cache.test.ts @@ -389,7 +389,7 @@ describe('@openfed__queryCache', () => { ); expect(errors[0]).toStrictEqual( invalidDirectiveError(OPENFED_QUERY_CACHE, 'Query.user', FIRST_ORDINAL, [ - maxAgeNotPositiveIntegerErrorMessage({ directiveName: OPENFED_QUERY_CACHE, value: 0 }), + maxAgeNotPositiveIntegerErrorMessage(0), ]), ); }); From 30c81e0090c0e84772d88460b66463a6d00eac5a Mon Sep 17 00:00:00 2001 From: Milinda Dias Date: Tue, 23 Jun 2026 12:55:27 +0530 Subject: [PATCH 64/65] fix: refactoring --- composition/src/v1/normalization/normalization-factory.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index 23ee0b65a4..073baf0401 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -499,7 +499,7 @@ export class NormalizationFactory { doesParentRequireFetchReasons = false; edfsDirectiveReferences = new Set(); /* Cached entity configs keyed by type name, populated by extractEntityCacheDirective() from - * `@openfed__entityCache`. Future caching directives (`@openfed__queryCache` etc.) use this as a lookup + * @openfed__entityCache. Future caching directives (@openfed__queryCache etc.) use this as a lookup * to verify a field's return type is a cached entity. */ entityCacheConfigByTypeName = new Map(); From 1fbcf23ec1701bd3ea13ad56ece6b3de9331e77b Mon Sep 17 00:00:00 2001 From: Aenimus Date: Thu, 25 Jun 2026 20:24:18 +0100 Subject: [PATCH 65/65] chore: commit progress state --- .../directive-definition-data.ts | 4 +- composition/src/errors/errors.ts | 35 ++- composition/src/errors/types/params.ts | 10 + composition/src/router-configuration/types.ts | 65 ++--- composition/src/router-configuration/utils.ts | 5 +- composition/src/types/types.ts | 2 + .../src/v1/constants/directive-definitions.ts | 4 +- .../v1/normalization/normalization-factory.ts | 262 ++++++++---------- .../src/v1/normalization/types/types.ts | 39 +-- composition/src/v1/warnings/params.ts | 6 - composition/src/v1/warnings/warnings.ts | 18 -- shared/src/router-config/builder.ts | 18 +- 12 files changed, 232 insertions(+), 236 deletions(-) diff --git a/composition/src/directive-definition-data/directive-definition-data.ts b/composition/src/directive-definition-data/directive-definition-data.ts index d320ad5263..6bd21a8d00 100644 --- a/composition/src/directive-definition-data/directive-definition-data.ts +++ b/composition/src/directive-definition-data/directive-definition-data.ts @@ -1065,7 +1065,7 @@ export const QUERY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ INCLUDE_HEADERS, newDirectiveArgumentData({ directive: `@${OPENFED_QUERY_CACHE}`, - defaultValue: { kind: Kind.BOOLEAN, value: false }, + defaultValue: FALSE_BOOLEAN_VALUE_NODE, name: INCLUDE_HEADERS, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, typeNode: stringToNamedTypeNode(BOOLEAN_SCALAR), @@ -1075,7 +1075,7 @@ export const QUERY_CACHE_DEFINITION_DATA = newDirectiveDefinitionData({ SHADOW_MODE, newDirectiveArgumentData({ directive: `@${OPENFED_QUERY_CACHE}`, - defaultValue: { kind: Kind.BOOLEAN, value: false }, + defaultValue: FALSE_BOOLEAN_VALUE_NODE, name: SHADOW_MODE, namedTypeKind: Kind.SCALAR_TYPE_DEFINITION, typeNode: stringToNamedTypeNode(BOOLEAN_SCALAR), diff --git a/composition/src/errors/errors.ts b/composition/src/errors/errors.ts index 2a6055957d..f8338b52b6 100644 --- a/composition/src/errors/errors.ts +++ b/composition/src/errors/errors.ts @@ -22,6 +22,8 @@ import { type OneOfRequiredFieldsErrorParams, type SemanticNonNullLevelsIndexOutOfBoundsErrorParams, type SemanticNonNullLevelsNonNullErrorParams, + QueryCacheMissingEntityCacheErrorParams, + InvalidIsDirectivesErrorParams, } from './types/params'; import { type UnresolvableFieldData } from '../resolvability-graph/utils/utils'; import { @@ -2065,16 +2067,18 @@ export function negativeCacheTTLNotNonNegativeIntegerErrorMessage(value: number) } export function queryCacheOnNonQueryFieldErrorMessage(fieldCoords: string): string { - return ( - `@openfed__queryCache must only be defined on fields of the root query type; found on "${fieldCoords}".` + - ` Use @openfed__cachePopulate or @openfed__cacheInvalidate on mutation or subscription fields.` - ); + return `Field coordinates "${fieldCoords}" are not a Query root field.`; } -export function queryCacheOnNonEntityReturnTypeErrorMessage(fieldCoords: string, returnType: string): string { +export function queryCacheMissingEntityCacheErrorMessage({ + entityTypeName, + fieldCoords, +}: QueryCacheMissingEntityCacheErrorParams): string { return ( - `Field "${fieldCoords}" has @openfed__queryCache but returns non-entity type "${returnType}".` + - ` @openfed__queryCache requires the return type to be an entity with @key.` + `Field coordinates "${fieldCoords}" define the "@openfed__queryCache" directive with return type` + + ` "${entityTypeName}".` + + ` However, the "${entityTypeName}" entity node does not define a "@openfed__entityCache" directive,` + + ` which is required for caching.` ); } @@ -2089,6 +2093,13 @@ export function invalidEntityReturnTypeErrorMessage({ return `Field coordinates "${fieldCoords}" return non-entity type "${returnTypeName}".`; } +export function invalidObjectEntityReturnTypeErrorMessage({ + fieldCoords, + returnTypeName, +}: InvalidEntityReturnTypeErrorParams): string { + return `Field coordinates "${fieldCoords}" return non-Object entity "${returnTypeName}" (not yet supported).`; +} + export function invalidMutuallyExclusiveCacheDirectivesError(fieldCoords: string): Error { return new Error( `Field coordinates "${fieldCoords}" define both mutually exclusive directives "@openfed__cacheInvalidate"` + @@ -2096,8 +2107,14 @@ export function invalidMutuallyExclusiveCacheDirectivesError(fieldCoords: string ); } -export function isWithoutQueryCacheErrorMessage(argumentName: string, fieldCoords: string): string { - return `@openfed__is on argument "${argumentName}" of field "${fieldCoords}" has no effect without @openfed__queryCache.`; +export function invalidIsDirectivesError({ argumentNames, fieldCoords }: InvalidIsDirectivesErrorParams): Error { + const isPlural = argumentNames.length > 1; + return new Error( + `The "@openfed__is" directive is only valid if declared on arguments defined by a Query root field that declares` + + ` an "@openfed__queryCache" directive.` + + ` Consequently, the directive defined by the following "${fieldCoords}" argument${isPlural ? 's' : ''}` + + ` ${isPlural ? 'are' : 'is'} invalid: "${argumentNames.join(QUOTATION_JOIN)}".`, + ); } export function isReferencesUnknownKeyFieldErrorMessage( diff --git a/composition/src/errors/types/params.ts b/composition/src/errors/types/params.ts index 826aa98382..ce90ff0052 100644 --- a/composition/src/errors/types/params.ts +++ b/composition/src/errors/types/params.ts @@ -99,3 +99,13 @@ export type InvalidEntityReturnTypeErrorParams = { fieldCoords: string; returnTypeName: string; }; + +export type QueryCacheMissingEntityCacheErrorParams = { + entityTypeName: TypeName; + fieldCoords: string; +}; + +export type InvalidIsDirectivesErrorParams = { + argumentNames: Array; + fieldCoords: string; +}; diff --git a/composition/src/router-configuration/types.ts b/composition/src/router-configuration/types.ts index f4de342e17..e9c58f381c 100644 --- a/composition/src/router-configuration/types.ts +++ b/composition/src/router-configuration/types.ts @@ -23,7 +23,7 @@ export type KafkaEventConfiguration = { fieldName: string; providerId: string; providerType: 'kafka'; - topics: string[]; + topics: Array; type: KafkaEventType; }; @@ -31,7 +31,7 @@ export type NatsEventConfiguration = { fieldName: string; providerId: string; providerType: 'nats'; - subjects: string[]; + subjects: Array; type: NatsEventType; streamConfiguration?: StreamConfiguration; }; @@ -40,7 +40,7 @@ export type RedisEventConfiguration = { fieldName: string; providerId: string; providerType: 'redis'; - channels: string[]; + channels: Array; type: RedisEventType; }; @@ -49,21 +49,21 @@ export type EventConfiguration = KafkaEventConfiguration | NatsEventConfiguratio export type SubscriptionFilterValue = boolean | null | number | string; export type SubscriptionFieldCondition = { - fieldPath: string[]; - values: SubscriptionFilterValue[]; + fieldPath: Array; + values: Array; }; export type SubscriptionCondition = { - and?: SubscriptionCondition[]; + and?: Array; in?: SubscriptionFieldCondition; not?: SubscriptionCondition; - or?: SubscriptionCondition[]; + or?: Array; }; export type FieldConfiguration = { - argumentNames: string[]; - fieldName: string; - typeName: string; + argumentNames: Array; + fieldName: FieldName; + typeName: TypeName; subscriptionFilterCondition?: SubscriptionCondition; requiresAuthentication?: boolean; requiredScopes?: Array>; @@ -91,15 +91,15 @@ export type ConfigurationData = { fieldNames: Set; isRootNode: boolean; typeName: TypeName; + entityCaching?: EntityCachingConfiguration; entityInterfaceConcreteTypeNames?: Set; - events?: EventConfiguration[]; + events?: Array; externalFieldNames?: Set; isInterfaceObject?: boolean; - provides?: RequiredFieldConfiguration[]; - keys?: RequiredFieldConfiguration[]; + keys?: Array; + provides?: Array; requireFetchReasonsFieldNames?: Array; - requires?: RequiredFieldConfiguration[]; - entityCaching?: EntityCachingConfiguration; + requires?: Array; }; // Extracted from @openfed__entityCache(maxAge: Int!, negativeCacheTTL: Int, includeHeaders: Boolean, @@ -120,13 +120,14 @@ export type EntityCacheConfiguration = { shadowMode: boolean; }; -// Maps a single query argument to an entity's @key field. Every mapping is declared explicitly with -// @openfed__is; an argument is never matched to a @key field by name alone. -// Example: product(productId: ID! @openfed__is(fields: "id")) on a @openfed__queryCache field -// → entityKeyField: "id", argumentPath: ["productId"] +/* Maps a single query argument to an entity's @key field. Every mapping is declared explicitly with + * @openfed__is; an argument is never matched to a @key field by name alone. + * Example: product(productId: ID! @openfed__is(fields: "id")) on a @openfed__queryCache field + * → entityKeyField: "id", argumentPath: ["productId"] + */ export type FieldMappingConfig = { - entityKeyField: FieldName; argumentPath: Array; + entityKeyField: FieldName; isBatch?: boolean; }; @@ -139,28 +140,30 @@ export type EntityKeyMappingConfig = { // Extracted from @openfed__queryCache(maxAge: Int!, includeHeaders: Boolean, shadowMode: Boolean) // on Query fields. Tells the router which query fields can serve entities from cache. export type QueryCacheConfig = { - fieldName: FieldName; - maxAgeSeconds: number; - includeHeaders: boolean; - shadowMode: boolean; // The entity type this query field returns (must have @openfed__entityCache). entityTypeName: TypeName; // Maps query arguments to entity @key fields so the router can construct cache keys from query // arguments. Empty for list-returning fields without batch mappings (cache reads are skipped). entityKeyMappings: Array; + fieldName: FieldName; + includeHeaders: boolean; + maxAgeSeconds: number; + shadowMode: boolean; }; -// Extracted from @openfed__cacheInvalidate on Mutation/Subscription fields. -// Tells the router to evict the returned entity from the cache after the operation completes. +/* Extracted from @openfed__cacheInvalidate on Mutation/Subscription fields. + * Tells the router to evict the returned entity from the cache after the operation completes. + */ export type CacheInvalidateConfiguration = { entityTypeName: TypeName; fieldName: FieldName; operationType: OperationTypeNode; }; -// Extracted from @openfed__cachePopulate on Mutation/Subscription fields. -// Tells the router to populate the entity cache with the operation's return value. -// maxAgeSeconds overrides the entity's default TTL when provided. +/* Extracted from @openfed__cachePopulate on Mutation/Subscription fields. + * Tells the router to populate the entity cache with the operation's return value. + * maxAgeSeconds overrides the entity's default TTL when provided. + */ export type CachePopulateConfiguration = { entityTypeName: TypeName; fieldName: FieldName; @@ -176,7 +179,7 @@ export type EntityCachingConfiguration = { // Attached to an entity type's ConfigurationData (e.g. "Product") from @openfed__entityCache. entityCacheConfigurations: Array; // Attached to the Query type's ConfigurationData from @openfed__queryCache. - queryCacheConfigurations?: Array; + queryCacheConfigurations: Array; }; export type Costs = { @@ -197,8 +200,8 @@ export type FieldWeightConfiguration = { export type FieldListSizeConfiguration = { fieldName: FieldName; requireOneSlicingArgument: boolean; - sizedFields: Array; slicingArguments: Array; + sizedFields: Array; typeName: TypeName; assumedSize?: number; }; diff --git a/composition/src/router-configuration/utils.ts b/composition/src/router-configuration/utils.ts index 54fb3b7bf0..270370adc7 100644 --- a/composition/src/router-configuration/utils.ts +++ b/composition/src/router-configuration/utils.ts @@ -4,7 +4,7 @@ import { type FieldSetConditionData, type FieldSetConditionDataParams, } from './types'; -import { type FieldName } from '../types/types'; +import { type FieldName, TypeName } from '../types/types'; export function newFieldSetConditionData({ fieldCoordinatesPath, @@ -22,13 +22,14 @@ export function getOrInitializeEntityCaching(configurationData: ConfigurationDat cacheInvalidateConfigurations: [], cachePopulateConfigurations: [], entityCacheConfigurations: [], + queryCacheConfigurations: [], }; } return configurationData.entityCaching; } -export function newConfigurationData(isEntity: boolean, renamedTypeName: string): ConfigurationData { +export function newConfigurationData(isEntity: boolean, renamedTypeName: TypeName): ConfigurationData { return { fieldNames: new Set(), isRootNode: isEntity, diff --git a/composition/src/types/types.ts b/composition/src/types/types.ts index 21c3a291cb..ef6ded9249 100644 --- a/composition/src/types/types.ts +++ b/composition/src/types/types.ts @@ -17,6 +17,8 @@ export type FieldName = string; export type FieldCoords = string; +export type FieldSet = string; + export type InterfaceTypeName = string; export type SubgraphName = string; diff --git a/composition/src/v1/constants/directive-definitions.ts b/composition/src/v1/constants/directive-definitions.ts index a2f9f35343..7ccf82a499 100644 --- a/composition/src/v1/constants/directive-definitions.ts +++ b/composition/src/v1/constants/directive-definitions.ts @@ -908,13 +908,13 @@ export const OPENFED_QUERY_CACHE_DEFINITION: DirectiveDefinitionNode = { kind: Kind.INPUT_VALUE_DEFINITION, name: stringToNameNode(INCLUDE_HEADERS), type: stringToNamedTypeNode(BOOLEAN_SCALAR), - defaultValue: { kind: Kind.BOOLEAN, value: false }, + defaultValue: FALSE_BOOLEAN_VALUE_NODE, }, { kind: Kind.INPUT_VALUE_DEFINITION, name: stringToNameNode(SHADOW_MODE), type: stringToNamedTypeNode(BOOLEAN_SCALAR), - defaultValue: { kind: Kind.BOOLEAN, value: false }, + defaultValue: FALSE_BOOLEAN_VALUE_NODE, }, ], kind: Kind.DIRECTIVE_DEFINITION, diff --git a/composition/src/v1/normalization/normalization-factory.ts b/composition/src/v1/normalization/normalization-factory.ts index 073baf0401..dca3c0c007 100644 --- a/composition/src/v1/normalization/normalization-factory.ts +++ b/composition/src/v1/normalization/normalization-factory.ts @@ -184,7 +184,6 @@ import { inputObjectCompositeMissingFieldErrorMessage, inputObjectCompositeTypeMismatchErrorMessage, isReferencesUnknownKeyFieldErrorMessage, - isWithoutQueryCacheErrorMessage, listArgumentToScalarKeySpecErrorMessage, multipleListArgumentsBatchFactoryMessage, nestedInputObjectMissingFieldErrorMessage, @@ -192,9 +191,11 @@ import { nestedKeyRequiresInputObjectErrorMessage, nonInputArgumentCannotTargetCompositeKeyErrorMessage, nonKeyFieldSpecErrorMessage, - queryCacheOnNonEntityReturnTypeErrorMessage, queryCacheOnNonQueryFieldErrorMessage, scalarArgumentToListKeySpecErrorMessage, + invalidObjectEntityReturnTypeErrorMessage, + queryCacheMissingEntityCacheErrorMessage, + invalidIsDirectivesError, } from '../../errors/errors'; import { DEPENDENCIES_BY_DIRECTIVE_NAME, @@ -228,7 +229,6 @@ import { nonExternalConditionalFieldWarning, singleSubgraphInputFieldOneOfWarning, unimplementedInterfaceOutputTypeWarning, - queryCacheReturnEntityMissingEntityCacheWarning, } from '../warnings/warnings'; import { upsertDirectiveSchemaAndEntityDefinitions, upsertParentsAndChildren } from './walkers'; import { @@ -418,6 +418,7 @@ import { type UpsertInputObjectResult, type ValidateDirectiveParams, type QueryCacheDirectiveNode, + ArgumentInfo, } from './types/types'; import { getOrInitializeEntityCaching, @@ -430,6 +431,7 @@ import { type ArgumentName, type DirectiveName, type FieldName, + FieldSet, type InterfaceTypeName, type SubgraphName, type TypeName, @@ -519,12 +521,12 @@ export class NormalizationFactory { isParentObjectShareable = false; isSubgraphEventDrivenGraph = false; isSubgraphVersionTwo = false; - keyFieldSetDatasByTypeName = new Map>(); + keyFieldSetDatasByTypeName = new Map>(); lastParentNodeKind: Kind = Kind.NULL; lastChildNodeKind: Kind = Kind.NULL; options: CompositionOptions; parentTypeNamesWithAuthDirectives = new Set(); - keyFieldSetsByEntityTypeNameByFieldCoords = new Map>>(); + keyFieldSetsByEntityTypeNameByFieldCoords = new Map>>(); keyFieldNamesByParentTypeName = new Map>(); fieldCoordsByNamedTypeName = new Map>(); operationTypeNodeByTypeName = new Map(); @@ -3435,7 +3437,10 @@ export class NormalizationFactory { } } - validateEventDrivenKeyDefinition(typeName: string, invalidKeyFieldSetsByEntityTypeName: Map>) { + validateEventDrivenKeyDefinition( + typeName: TypeName, + invalidKeyFieldSetsByEntityTypeName: Map>, + ) { const keyFieldSetDataByFieldSet = this.keyFieldSetDatasByTypeName.get(typeName); if (!keyFieldSetDataByFieldSet) { return; @@ -4278,15 +4283,16 @@ export class NormalizationFactory { return true; } - extractQueryCacheConfig( - parentTypeName: string, - configurationTypeName: string, - fieldName: string, - fieldData: FieldData, - operationType: OperationTypeNode | undefined, - ) { - const fieldCoords = `${parentTypeName}.${fieldName}`; - if (operationType !== OperationTypeNode.QUERY) { + extractQueryCacheConfig(fieldData: FieldData, operationTypeNode?: OperationTypeNode): void { + const { directivesByName, name: fieldName, namedTypeName, renamedParentTypeName } = fieldData; + const queryCacheDirectives = directivesByName.get(OPENFED_QUERY_CACHE); + if (!queryCacheDirectives?.length) { + this.handleInvalidIsDirectives(fieldData); + return; + } + + const fieldCoords = `${renamedParentTypeName}.${fieldName}`; + if (operationTypeNode !== OperationTypeNode.QUERY) { this.errors.push( invalidDirectiveError(OPENFED_QUERY_CACHE, fieldCoords, FIRST_ORDINAL, [ queryCacheOnNonQueryFieldErrorMessage(fieldCoords), @@ -4294,90 +4300,97 @@ export class NormalizationFactory { ); return; } - const returnTypeName = getTypeNodeNamedTypeName(fieldData.node.type); - if (!this.keyFieldSetDatasByTypeName.has(returnTypeName)) { + + // Entity Interfaces and Interface Objects are currently unsupported + if (this.entityInterfaceDataByTypeName.has(namedTypeName)) { this.errors.push( invalidDirectiveError(OPENFED_QUERY_CACHE, fieldCoords, FIRST_ORDINAL, [ - queryCacheOnNonEntityReturnTypeErrorMessage(fieldCoords, returnTypeName), + invalidObjectEntityReturnTypeErrorMessage({ fieldCoords, returnTypeName: namedTypeName }), ]), ); return; } - // validateDirectives() has already guaranteed the argument types (Int maxAge, Boolean flags), so the - // generic ConstDirectiveNode is narrowed once to the precise typed node — mirroring - // EntityCacheDirectiveNode. Optional args may be absent (definition defaults - // are not materialized onto the usage AST), so each defaults here and present args override. - const queryCacheDirective = fieldData.directivesByName.get(OPENFED_QUERY_CACHE)![0] as QueryCacheDirectiveNode; - let maxAgeSeconds = 0; - let includeHeaders = false; - let shadowModeValue = false; - for (const { name, value } of queryCacheDirective.arguments) { - switch (name.value) { - case MAX_AGE: - if (value.kind === Kind.INT) maxAgeSeconds = parseInt(value.value, 10); - break; - case INCLUDE_HEADERS: - if (value.kind === Kind.BOOLEAN) includeHeaders = value.value; - break; - case SHADOW_MODE: - if (value.kind === Kind.BOOLEAN) shadowModeValue = value.value; - break; - } - } - if (maxAgeSeconds <= 0) { + + // The return type must be an Object entity. + if (!this.keyFieldSetDatasByTypeName.has(namedTypeName)) { this.errors.push( invalidDirectiveError(OPENFED_QUERY_CACHE, fieldCoords, FIRST_ORDINAL, [ - maxAgeNotPositiveIntegerErrorMessage(maxAgeSeconds), + invalidEntityReturnTypeErrorMessage({ fieldCoords, returnTypeName: namedTypeName }), ]), ); return; } - // The return entity must have @openfed__entityCache — otherwise there is no L1/L2 backing store - // for queryCache to read from. Warn and skip extraction. Only actionable when the return type is an - // OBJECT (@openfed__entityCache is OBJECT-only), so skip the prereq check for interface/union returns. - const returnTypeData = this.parentDefinitionDataByTypeName.get(returnTypeName); - const isObjectReturn = returnTypeData?.kind === Kind.OBJECT_TYPE_DEFINITION; - if (isObjectReturn && !this.entityCacheConfigByTypeName.has(returnTypeName)) { - this.warnings.push( - queryCacheReturnEntityMissingEntityCacheWarning({ - subgraphName: this.subgraphName, - fieldCoords, - entityType: returnTypeName, - }), + // The Object entity must define its own @openfed__entityCache directive. + if (!this.entityCacheConfigByTypeName.has(namedTypeName)) { + this.errors.push( + invalidDirectiveError(OPENFED_QUERY_CACHE, fieldCoords, FIRST_ORDINAL, [ + queryCacheMissingEntityCacheErrorMessage({ + fieldCoords, + entityTypeName: namedTypeName, + }), + ]), ); + return; } - const isListReturn = isTypeNodeListType(fieldData.node.type); - const keyFieldSets = this.keyFieldSetDatasByTypeName.get(returnTypeName); - const mappings = this.buildArgumentKeyMappings(fieldData, fieldCoords, returnTypeName, keyFieldSets, isListReturn); - + const directive = queryCacheDirectives[0] as QueryCacheDirectiveNode; const config: QueryCacheConfig = { fieldName, - maxAgeSeconds, - includeHeaders, - shadowMode: shadowModeValue, - entityTypeName: returnTypeName, - entityKeyMappings: mappings, + maxAgeSeconds: NaN, + includeHeaders: false, + shadowMode: false, + entityTypeName: namedTypeName, + entityKeyMappings: [], }; - const configurationData = getValueOrDefault(this.configurationDataByTypeName, configurationTypeName, () => - newConfigurationData(false, configurationTypeName), - ); - const entityCaching = getOrInitializeEntityCaching(configurationData); - entityCaching.queryCacheConfigurations = [...(entityCaching.queryCacheConfigurations ?? []), config]; - } - validateIsDirectivePlacement(fieldCoords: string, fieldData: FieldData) { - for (const [argumentName, argumentData] of fieldData.argumentDataByName) { - if (!argumentData.directivesByName.has(OPENFED_IS)) { - continue; + let maxAgeSecondsRawValue: string | null = null; + for (const { name, value } of directive.arguments) { + switch (value.kind) { + case Kind.INT: { + maxAgeSecondsRawValue = value.value; + config.maxAgeSeconds = parseInt(maxAgeSecondsRawValue, 10); + break; + } + default: { + if (name.value === INCLUDE_HEADERS) { + config.includeHeaders = value.value; + } else { + config.shadowMode = value.value; + } + break; + } } + } + + if (isNaN(config.maxAgeSeconds) || config.maxAgeSeconds <= 0) { this.errors.push( - invalidDirectiveError(OPENFED_IS, `${fieldCoords}(${argumentName}: ...)`, FIRST_ORDINAL, [ - isWithoutQueryCacheErrorMessage(argumentName, fieldCoords), + invalidDirectiveError(OPENFED_QUERY_CACHE, fieldCoords, FIRST_ORDINAL, [ + maxAgeNotPositiveIntegerErrorMessage(maxAgeSecondsRawValue), ]), ); + return; + } + + config.entityKeyMappings = this.buildArgumentKeyMappings(fieldData); + + const configurationData = getValueOrDefault(this.configurationDataByTypeName, renamedParentTypeName, () => + newConfigurationData(false, renamedParentTypeName), + ); + getOrInitializeEntityCaching(configurationData).queryCacheConfigurations.push(config); + } + + handleInvalidIsDirectives({ argumentDataByName, name, renamedParentTypeName }: FieldData) { + const argumentNames: Array = []; + for (const [argumentName, argumentData] of argumentDataByName) { + if (argumentData.directivesByName.has(OPENFED_IS)) { + argumentNames.push(argumentName); + } + } + + if (argumentNames.length > 0) { + this.errors.push(invalidIsDirectivesError({ argumentNames, fieldCoords: `${renamedParentTypeName}.${name}` })); } } @@ -4660,26 +4673,13 @@ export class NormalizationFactory { } // The main mapping builder. Evaluates each @key independently and emits all satisfiable keys. - buildArgumentKeyMappings( - fieldData: FieldData, - fieldCoords: string, - entityTypeName: string, - keyFieldSets: Map | undefined, - isListReturn: boolean, - ): EntityKeyMappingConfig[] { - if (!keyFieldSets || keyFieldSets.size === 0) { + buildArgumentKeyMappings(fieldData: FieldData): Array { + const keyFieldSets = this.keyFieldSetDatasByTypeName.get(fieldData.namedTypeName); + if (!keyFieldSets || keyFieldSets.size < 1) { return []; } - type ArgumentInfo = { - name: string; - data: InputValueData; - isFieldValue: string | undefined; // @openfed__is(fields: "...") value - isList: boolean; - typeNode: TypeNode; - }; - - const argumentInfos: ArgumentInfo[] = []; + const argumentInfos: Array = []; // Mappings are derived exclusively from explicit @openfed__is directives. Argument names are // never matched to @key fields. If no argument carries @openfed__is, the field has no mappings. let hasExplicitIs = false; @@ -4700,21 +4700,13 @@ export class NormalizationFactory { if (!hasExplicitIs) { return []; } - return this.buildExplicitMappings(fieldCoords, entityTypeName, keyFieldSets, isListReturn, argumentInfos); + return this.buildExplicitMappings(fieldData, keyFieldSets, argumentInfos); } buildExplicitMappings( - fieldCoords: string, - entityTypeName: string, + fieldData: FieldData, keyFieldSets: Map, - isListReturn: boolean, - argumentInfos: Array<{ - name: string; - data: InputValueData; - isFieldValue: string | undefined; - isList: boolean; - typeNode: TypeNode; - }>, + argumentInfos: Array, ): EntityKeyMappingConfig[] { // Collect all @openfed__is field values and their infos across ALL keys const allKeyFieldInfosByKey = new Map>(); @@ -4724,7 +4716,7 @@ export class NormalizationFactory { const fieldInfoByPath = new Map(); // Track which fields exist on the entity (not necessarily key fields) const entityFieldNames = new Set(); - const entityParentData = this.parentDefinitionDataByTypeName.get(entityTypeName); + const entityParentData = this.parentDefinitionDataByTypeName.get(fieldData.namedTypeName); if (entityParentData && 'fieldDataByName' in entityParentData) { for (const fname of entityParentData.fieldDataByName.keys()) { entityFieldNames.add(fname); @@ -4732,7 +4724,7 @@ export class NormalizationFactory { } for (const [normalizedFieldSet, keyData] of keyFieldSets) { - const infos = this.extractKeyFieldInfos(keyData.documentNode, entityTypeName); + const infos = this.extractKeyFieldInfos(keyData.documentNode, fieldData.namedTypeName); allKeyFieldInfosByKey.set(normalizedFieldSet, infos); for (const info of infos) { allKeyFieldPaths.add(info.path); @@ -4763,7 +4755,13 @@ export class NormalizationFactory { if (isCompositeIsSpec) { const errorCount = this.errors.length; - const mappings = this.buildCompositeIsMapping(fieldCoords, entityTypeName, keyFieldSets, isListReturn, argInfo); + const mappings = this.buildCompositeIsMapping( + fieldCoords, + fieldData.namedTypeName, + keyFieldSets, + isListReturn, + argInfo, + ); if (this.errors.length > errorCount) { return []; } @@ -4783,13 +4781,13 @@ export class NormalizationFactory { // Field exists but is not a key field this.errors.push( invalidDirectiveError(OPENFED_IS, `${fieldCoords}(${argInfo.name}: ...)`, FIRST_ORDINAL, [ - nonKeyFieldSpecErrorMessage(argInfo.name, fieldCoords, isFieldValue, entityTypeName), + nonKeyFieldSpecErrorMessage(argInfo.name, fieldCoords, isFieldValue, fieldData.namedTypeName), ]), ); } else { this.errors.push( invalidDirectiveError(OPENFED_IS, `${fieldCoords}(${argInfo.name}: ...)`, FIRST_ORDINAL, [ - isReferencesUnknownKeyFieldErrorMessage(isFieldValue, argInfo.name, fieldCoords, entityTypeName), + isReferencesUnknownKeyFieldErrorMessage(isFieldValue, argInfo.name, fieldCoords, fieldData.namedTypeName), ]), ); } @@ -5082,7 +5080,7 @@ export class NormalizationFactory { fieldCoords, explicitForThisKey[0].argumentName, explicitForThisKey[0].isFieldValue, - entityTypeName, + fieldData.namedTypeName, normalizedFieldSet, unmappedFields[0], ), @@ -5111,7 +5109,7 @@ export class NormalizationFactory { } if (fieldMappings.length > 0) { - results.push({ entityTypeName, fieldMappings }); + results.push({ entityTypeName: fieldData.namedTypeName, fieldMappings }); } } @@ -5121,10 +5119,8 @@ export class NormalizationFactory { } buildCompositeIsMapping( - fieldCoords: string, - entityTypeName: string, + { name, namedTypeName, node, renamedParentTypeName }: FieldData, keyFieldSets: Map, - isListReturn: boolean, argInfo: { name: string; data: InputValueData; @@ -5133,6 +5129,7 @@ export class NormalizationFactory { typeNode: TypeNode; }, ): EntityKeyMappingConfig[] { + const isListReturn = isTypeNodeListType(node.type); const isFieldValue = argInfo.isFieldValue!; const { documentNode } = safeParse('{' + isFieldValue + '}'); const normalizedIsFieldValue = documentNode ? getNormalizedFieldSet(documentNode) : isFieldValue; @@ -5143,7 +5140,7 @@ export class NormalizationFactory { continue; } - const keyInfos = this.extractKeyFieldInfos(keyData.documentNode, entityTypeName); + const keyInfos = this.extractKeyFieldInfos(keyData.documentNode, namedTypeName); const argTypeName = getTypeNodeNamedTypeName(argInfo.typeNode); // Check if argument is an input object type @@ -5156,7 +5153,7 @@ export class NormalizationFactory { argInfo.name, fieldCoords, isFieldValue, - entityTypeName, + namedTypeName, printTypeNode(argInfo.typeNode), ), ]), @@ -5170,7 +5167,7 @@ export class NormalizationFactory { const fieldMappings = this.validateNestedInputObjectMapping( argInfo.name, fieldCoords, - entityTypeName, + namedTypeName, keyInfos, normalizedFieldSet, argTypeName, @@ -5183,13 +5180,13 @@ export class NormalizationFactory { return []; } - return [{ entityTypeName, fieldMappings }]; + return [{ entityTypeName: namedTypeName, fieldMappings }]; } // Key not found this.errors.push( invalidDirectiveError(OPENFED_IS, `${fieldCoords}(${argInfo.name}: ...)`, FIRST_ORDINAL, [ - isReferencesUnknownKeyFieldErrorMessage(isFieldValue, argInfo.name, fieldCoords, entityTypeName), + isReferencesUnknownKeyFieldErrorMessage(isFieldValue, argInfo.name, fieldCoords, namedTypeName), ]), ); return []; @@ -5385,32 +5382,15 @@ export class NormalizationFactory { for (const [fieldName, fieldData] of parentData.fieldDataByName) { if (isObject) { this.handleFieldCacheDirectives(fieldData); - - // @openfed__queryCache extraction and @openfed__is placement validation. Key field sets and - // entity-cache configs are already finalized at this point in normalize() (populated by - // upsertParentsAndChildren and extractEntityCacheDirective, invalid keys pruned by - // evaluateExternalKeyFields), so queryCache can read keyFieldSetDatasByTypeName to build - // argument→key mappings. - if (fieldData.directivesByName.has(OPENFED_QUERY_CACHE)) { - // A renamed root type (e.g. `schema { query: MyQuery }`) is keyed in configurationDataByTypeName - // under its federated/canonical name (Query/Mutation/Subscription) by every other config writer. - // Cache configs must use the same key, or the router reads the canonical node and never sees them. - this.extractQueryCacheConfig( - parentTypeName, - getParentTypeName(parentData), - fieldName, - fieldData, - this.getOperationTypeNodeForRootTypeName(parentTypeName), - ); - } else { - // @openfed__is on an argument is only valid alongside @openfed__queryCache on the field, so any - // @openfed__is here (no queryCache) is a misplacement. - this.validateIsDirectivePlacement(`${parentTypeName}.${fieldName}`, fieldData); + this.extractQueryCacheConfig(fieldData, operationTypeNode); + // @openfed__is on an argument is only valid alongside @openfed__queryCache on the field, so any + // @openfed__is here (no queryCache) is a misplacement. + } else { + this.handleInvalidIsDirectives(fieldData); + if (fieldData.externalFieldDataBySubgraphName.get(this.subgraphName)?.isDefinedExternal) { + externalInterfaceFieldNames.push(fieldName); } - } else if (fieldData.externalFieldDataBySubgraphName.get(this.subgraphName)?.isDefinedExternal) { - externalInterfaceFieldNames.push(fieldName); } - // Arguments can only be fully validated once all parents types are known this.validateArguments(fieldData, parentData.kind); // Base Scalars have already been set diff --git a/composition/src/v1/normalization/types/types.ts b/composition/src/v1/normalization/types/types.ts index 77eaf20f4e..8c26f71247 100644 --- a/composition/src/v1/normalization/types/types.ts +++ b/composition/src/v1/normalization/types/types.ts @@ -38,9 +38,12 @@ import { type NEGATIVE_CACHE_TTL, type OPENFED_CACHE_POPULATE, type OPENFED_ENTITY_CACHE, + OPENFED_IS, + OPENFED_QUERY_CACHE, type PARTIAL_CACHE_LOAD, type SHADOW_MODE, } from '../../../utils/string-constants'; +import type { TypeNode } from 'graphql/index'; export type KeyFieldSetData = { documentNode: DocumentNode; @@ -163,12 +166,6 @@ export type EntityCacheDirectiveNode = { readonly loc?: Location; }; -export type EntityCacheOptionalArgumentNodes = - | NegativeCacheTtlArgumentNode - | IncludeHeadersArgumentNode - | PartialCacheLoadArgumentNode - | ShadowModeArgumentNode; - export type MaxAgeArgumentNode = { readonly kind: Kind.ARGUMENT; readonly name: NameNode & { readonly value: typeof MAX_AGE }; @@ -204,24 +201,26 @@ export type ShadowModeArgumentNode = { readonly loc?: Location; }; -export type QueryCacheDirectiveNode = { - readonly arguments: ReadonlyArray; +export type IsDirectiveNode = { + readonly arguments: readonly [string]; readonly kind: Kind.DIRECTIVE; - readonly name: NameNode; + readonly name: NameNode & { readonly value: typeof OPENFED_IS }; readonly loc?: Location; }; -export type QueryCacheArgumentNode = { - readonly kind: Kind.ARGUMENT; - readonly name: NameNode; - // maxAge is Int; includeHeaders/shadowMode are Boolean. - // validateDirectives() guarantees each argument's value matches its declared type. - readonly value: IntValueNode | BooleanValueNode; +export type QueryCacheDirectiveNode = { + readonly arguments: + | readonly [MaxAgeArgumentNode] + | readonly [MaxAgeArgumentNode, IncludeHeadersArgumentNode] + | readonly [MaxAgeArgumentNode, ShadowModeArgumentNode] + | readonly [MaxAgeArgumentNode, IncludeHeadersArgumentNode, ShadowModeArgumentNode]; + readonly kind: Kind.DIRECTIVE; + readonly name: NameNode & { readonly value: typeof OPENFED_QUERY_CACHE }; readonly loc?: Location; }; export type CachePopulateDirectiveNode = { - readonly arguments: ReadonlyArray; + readonly arguments: readonly [CachePopulateArgumentNode]; readonly kind: Kind.DIRECTIVE; readonly name: NameNode & { readonly value: typeof OPENFED_CACHE_POPULATE }; readonly loc?: Location; @@ -242,3 +241,11 @@ export type LinkImportData = { node?: ConstDirectiveNode; rename?: DirectiveName; }; + +export type ArgumentInfo = { + data: InputValueData; + isList: boolean; + name: string; + typeNode: TypeNode; + isFieldValue?: string | undefined; +}; diff --git a/composition/src/v1/warnings/params.ts b/composition/src/v1/warnings/params.ts index 3eaf2d1668..5e5b5ece75 100644 --- a/composition/src/v1/warnings/params.ts +++ b/composition/src/v1/warnings/params.ts @@ -16,9 +16,3 @@ export type InvalidRepeatedComposedDirectiveWarningParams = { directiveName: DirectiveName; printedDirective: string; }; - -export type QueryCacheReturnEntityMissingEntityCacheWarningParams = { - subgraphName: SubgraphName; - fieldCoords: FieldName; - entityType: TypeName; -}; diff --git a/composition/src/v1/warnings/warnings.ts b/composition/src/v1/warnings/warnings.ts index 146403a51e..4089288f94 100644 --- a/composition/src/v1/warnings/warnings.ts +++ b/composition/src/v1/warnings/warnings.ts @@ -2,7 +2,6 @@ import { Warning } from '../../warnings/types'; import { QUOTATION_JOIN } from '../../utils/string-constants'; import { type InvalidRepeatedComposedDirectiveWarningParams, - type QueryCacheReturnEntityMissingEntityCacheWarningParams, type SingleFederatedInputFieldOneOfWarningParams, type SingleSubgraphInputFieldOneOfWarningParams, } from './params'; @@ -237,20 +236,3 @@ export function invalidRepeatedComposedDirectiveWarning({ }, }); } - -export function queryCacheReturnEntityMissingEntityCacheWarning({ - subgraphName, - fieldCoords, - entityType, -}: QueryCacheReturnEntityMissingEntityCacheWarningParams): Warning { - return new Warning({ - message: - `Field "${fieldCoords}" has @openfed__queryCache and returns entity "${entityType}",` + - ` but "${entityType}" has no @openfed__entityCache directive. Add @openfed__entityCache(maxAge: ...)` + - ` to "${entityType}" to enable caching, or remove @openfed__queryCache from "${fieldCoords}".` + - ' The @openfed__queryCache config for this field was not extracted.', - subgraph: { - name: subgraphName, - }, - }); -} diff --git a/shared/src/router-config/builder.ts b/shared/src/router-config/builder.ts index c2d0bfb774..7c53815a3d 100644 --- a/shared/src/router-config/builder.ts +++ b/shared/src/router-config/builder.ts @@ -110,7 +110,7 @@ function extractEntityCachingConfiguration( ); } - for (const config of data.entityCaching?.cacheInvalidateConfigurations) { + for (const config of data.entityCaching.cacheInvalidateConfigurations) { cacheInvalidateConfigurations.push( new CacheInvalidateConfiguration({ entityTypeName: config.entityTypeName, @@ -120,7 +120,7 @@ function extractEntityCachingConfiguration( ); } - for (const config of data.entityCaching?.cachePopulateConfigurations) { + for (const config of data.entityCaching.cachePopulateConfigurations) { cachePopulateConfigurations.push( new CachePopulateConfiguration({ entityTypeName: config.entityTypeName, @@ -130,15 +130,15 @@ function extractEntityCachingConfiguration( }), ); } - for (const rfc of data.entityCaching?.queryCacheConfigurations ?? []) { + for (const config of data.entityCaching.queryCacheConfigurations) { queryCacheConfigurations.push( new QueryCacheConfiguration({ - fieldName: rfc.fieldName, - maxAgeSeconds: BigInt(rfc.maxAgeSeconds), - includeHeaders: rfc.includeHeaders, - shadowMode: rfc.shadowMode, - entityTypeName: rfc.entityTypeName, - entityKeyMappings: rfc.entityKeyMappings.map( + fieldName: config.fieldName, + maxAgeSeconds: BigInt(config.maxAgeSeconds), + includeHeaders: config.includeHeaders, + shadowMode: config.shadowMode, + entityTypeName: config.entityTypeName, + entityKeyMappings: config.entityKeyMappings.map( (m) => new EntityKeyMapping({ entityTypeName: m.entityTypeName,