UNPKG

owltech

Version:
97 lines (96 loc) 4.01 kB
/// <reference types="node" /> /** * @license * Copyright 2018 gRPC authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ import * as Protobuf from 'protobufjs'; import * as descriptor from 'protobufjs/ext/descriptor'; declare module 'protobufjs' { interface Type { toDescriptor(protoVersion: string): Protobuf.Message<descriptor.IDescriptorProto> & descriptor.IDescriptorProto; } interface Root { toDescriptor(protoVersion: string): Protobuf.Message<descriptor.IFileDescriptorSet> & descriptor.IFileDescriptorSet; } interface Enum { toDescriptor(protoVersion: string): Protobuf.Message<descriptor.IEnumDescriptorProto> & descriptor.IEnumDescriptorProto; } } export interface Serialize<T> { (value: T): Buffer; } export interface Deserialize<T> { (bytes: Buffer): T; } export interface ProtobufTypeDefinition { format: string; type: object; fileDescriptorProtos: Buffer[]; } export interface MessageTypeDefinition extends ProtobufTypeDefinition { format: 'Protocol Buffer 3 DescriptorProto'; } export interface EnumTypeDefinition extends ProtobufTypeDefinition { format: 'Protocol Buffer 3 EnumDescriptorProto'; } export interface MethodDefinition<RequestType, ResponseType> { path: string; requestStream: boolean; responseStream: boolean; requestSerialize: Serialize<RequestType>; responseSerialize: Serialize<ResponseType>; requestDeserialize: Deserialize<RequestType>; responseDeserialize: Deserialize<ResponseType>; originalName?: string; requestType: MessageTypeDefinition; responseType: MessageTypeDefinition; } export interface ServiceDefinition { [index: string]: MethodDefinition<object, object>; } export declare type AnyDefinition = ServiceDefinition | MessageTypeDefinition | EnumTypeDefinition; export interface PackageDefinition { [index: string]: AnyDefinition; } export declare type Options = Protobuf.IParseOptions & Protobuf.IConversionOptions & { includeDirs?: string[]; }; /** * Load a .proto file with the specified options. * @param filename The file path to load. Can be an absolute path or relative to * an include path. * @param options.keepCase Preserve field names. The default is to change them * to camel case. * @param options.longs The type that should be used to represent `long` values. * Valid options are `Number` and `String`. Defaults to a `Long` object type * from a library. * @param options.enums The type that should be used to represent `enum` values. * The only valid option is `String`. Defaults to the numeric value. * @param options.bytes The type that should be used to represent `bytes` * values. Valid options are `Array` and `String`. The default is to use * `Buffer`. * @param options.defaults Set default values on output objects. Defaults to * `false`. * @param options.arrays Set empty arrays for missing array values even if * `defaults` is `false`. Defaults to `false`. * @param options.objects Set empty objects for missing object values even if * `defaults` is `false`. Defaults to `false`. * @param options.oneofs Set virtual oneof properties to the present field's * name * @param options.includeDirs Paths to search for imported `.proto` files. */ export declare function load(filename: string, options?: Options): Promise<PackageDefinition>; export declare function loadSync(filename: string, options?: Options): PackageDefinition;