@confluentinc/schemaregistry
Version:
Node.js client for Confluent Schema Registry
81 lines (80 loc) • 3.85 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";
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
*/
serialize(topic: string, msg: any): 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>;
toMessageIndexBytes(messageDesc: DescMessage): Buffer;
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
*/
deserialize(topic: string, payload: Buffer): 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;
readMessageIndexes(payload: Buffer): [number, number[]];
toMessageDescFromIndexes(fd: DescFile, msgIndexes: number[]): DescMessage;
toNestedMessageDesc(parent: DescMessage, msgIndexes: number[]): DescMessage;
}