UNPKG

@confluentinc/schemaregistry

Version:
84 lines (83 loc) 4.01 kB
import { Deserializer, DeserializerConfig, FieldTransform, RuleContext, SerdeType, Serializer, SerializerConfig } from "./serde"; import { Client, SchemaInfo, SchemaMetadata } from "../schemaregistry-client"; import { DescFile, DescMessage, FileRegistry, MutableRegistry } from "@bufbuild/protobuf"; import { LRUCache } from "lru-cache"; import { RuleRegistry } from "./rule-registry"; import { IHeaders } from "../../types/kafkajs"; export declare const PROTOBUF_TYPE = "PROTOBUF"; export interface ProtobufSerde { schemaToDescCache: LRUCache<string, DescFile>; } /** * ProtobufSerializerConfig is the configuration for ProtobufSerializer. */ export type ProtobufSerializerConfig = SerializerConfig & { registry?: MutableRegistry; }; /** * ProtobufSerializer is a serializer for Protobuf messages. */ export declare class ProtobufSerializer extends Serializer implements ProtobufSerde { registry: MutableRegistry; fileRegistry: FileRegistry; schemaToDescCache: LRUCache<string, DescFile>; descToSchemaCache: LRUCache<string, SchemaInfo>; /** * Creates a new ProtobufSerializer. * @param client - the schema registry client * @param serdeType - the serializer type * @param conf - the serializer configuration * @param ruleRegistry - the rule registry */ constructor(client: Client, serdeType: SerdeType, conf: ProtobufSerializerConfig, ruleRegistry?: RuleRegistry); /** * Serializes a message. * @param topic - the topic * @param msg - the message * @param headers - optional headers */ serialize(topic: string, msg: any, headers?: IHeaders): Promise<Buffer>; getSchemaInfo(fileDesc: DescFile): Promise<SchemaInfo>; toProtobufSchema(fileDesc: DescFile): Map<string, string>; toDependencies(fileDesc: DescFile, deps: Map<string, string>): void; resolveDependencies(fileDesc: DescFile, deps: Map<string, string>, subject: string, autoRegister: boolean, normalize: boolean): Promise<SchemaMetadata>; toMessageIndexArray(messageDesc: DescMessage): number[]; toMessageIndexes(messageDesc: DescMessage, count: number): number[]; toIndex(messageDesc: DescMessage): number; fieldTransform(ctx: RuleContext, fieldTransform: FieldTransform, msg: any): Promise<any>; toFileDesc(client: Client, info: SchemaInfo): Promise<DescFile>; parseFileDesc(client: Client, info: SchemaInfo): Promise<DescFile | undefined>; toMessageDescFromName(fd: DescFile, msgName: string): DescMessage; } /** * ProtobufDeserializerConfig is the configuration for ProtobufDeserializer. */ export type ProtobufDeserializerConfig = DeserializerConfig; /** * ProtobufDeserializer is a deserializer for Protobuf messages. */ export declare class ProtobufDeserializer extends Deserializer implements ProtobufSerde { fileRegistry: FileRegistry; schemaToDescCache: LRUCache<string, DescFile>; /** * Creates a new ProtobufDeserializer. * @param client - the schema registry client * @param serdeType - the deserializer type * @param conf - the deserializer configuration * @param ruleRegistry - the rule registry */ constructor(client: Client, serdeType: SerdeType, conf: ProtobufDeserializerConfig, ruleRegistry?: RuleRegistry); /** * Deserializes a message. * @param topic - the topic * @param payload - the message payload * @param headers - optional headers */ deserialize(topic: string, payload: Buffer, headers?: IHeaders): Promise<any>; fieldTransform(ctx: RuleContext, fieldTransform: FieldTransform, msg: any): Promise<any>; toFileDesc(client: Client, info: SchemaInfo): Promise<DescFile>; parseFileDesc(client: Client, info: SchemaInfo): Promise<DescFile | undefined>; toMessageDescFromName(fd: DescFile, msgName: string): DescMessage; toMessageDescFromIndexes(fd: DescFile, msgIndexes: number[]): DescMessage; toNestedMessageDesc(parent: DescMessage, msgIndexes: number[]): DescMessage; }