@confluentinc/schemaregistry
Version:
Node.js client for Confluent Schema Registry
84 lines (83 loc) • 4.01 kB
TypeScript
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;
}