UNPKG

ts-proto

Version:

[![npm](https://img.shields.io/npm/v/ts-proto)](https://www.npmjs.com/package/ts-proto) [![build](https://github.com/stephenh/ts-proto/workflows/Build/badge.svg)](https://github.com/stephenh/ts-proto/actions)

107 lines (106 loc) 7.4 kB
import { Code, Import } from "ts-poet"; import { CodeGeneratorRequest, DescriptorProto, EnumDescriptorProto, FieldDescriptorProto, FieldDescriptorProto_Type, FileDescriptorProto, MessageOptions, MethodDescriptorProto, ServiceDescriptorProto } from "ts-proto-descriptors"; import { Context } from "./context"; import { Options } from "./options"; /** Based on https://github.com/dcodeIO/protobuf.js/blob/master/src/types.js#L37. */ export declare function basicWireType(type: FieldDescriptorProto_Type): number; export declare function basicLongWireType(type: FieldDescriptorProto_Type): number | undefined; /** Returns the type name without any repeated/required/etc. labels. */ export declare function basicTypeName(ctx: Context, field: FieldDescriptorProto, typeOptions?: { keepValueType?: boolean; }): Code; /** Returns the Reader method for the primitive's read/write call. */ export declare function toReaderCall(field: FieldDescriptorProto): string; export declare function packedField(field: FieldDescriptorProto, isProto3Syntax: boolean): number | undefined; export declare function packedType(type: FieldDescriptorProto_Type): number | undefined; export declare function getFieldOptionsJsType(field: FieldDescriptorProto, options: Options): FieldDescriptorProto_Type | undefined; export declare function defaultValue(ctx: Context, field: FieldDescriptorProto): any; /** Creates code that checks that the field is not the default value. Supports scalars and enums. */ export declare function notDefaultCheck(ctx: Context, field: FieldDescriptorProto, messageOptions: MessageOptions | undefined, place: string): Code; /** A map of proto type name, e.g. `foo.Message.Inner`, to module/class name, e.g. `foo`, `Message_Inner`. */ export type TypeMap = Map<string, [string, string, DescriptorProto | EnumDescriptorProto]>; /** Scans all of the proto files in `request` and builds a map of proto typeName -> TS module/name. */ export declare function createTypeMap(request: CodeGeneratorRequest, options: Options): TypeMap; /** A "Scalar Value Type" as defined in https://developers.google.com/protocol-buffers/docs/proto3#scalar */ export declare function isScalar(field: FieldDescriptorProto): boolean; export declare function isOptionalProperty(field: FieldDescriptorProto, messageOptions: MessageOptions | undefined, options: Options, isProto3Syntax: boolean): boolean; /** This includes all scalars, enums and the [groups type](https://developers.google.com/protocol-buffers/docs/reference/java/com/google/protobuf/DescriptorProtos.FieldDescriptorProto.Type.html#TYPE_GROUP) */ export declare function isPrimitive(field: FieldDescriptorProto): boolean; export declare function isBytes(field: FieldDescriptorProto): boolean; export declare function isMessage(field: FieldDescriptorProto): boolean; export declare function isEnum(field: FieldDescriptorProto): boolean; export declare function isWithinOneOf(field: FieldDescriptorProto): boolean; export declare function isWithinOneOfThatShouldBeUnion(options: Options, field: FieldDescriptorProto): boolean; export declare function isRepeated(field: FieldDescriptorProto): boolean; export declare function isLong(field: FieldDescriptorProto): boolean; export declare function isWholeNumber(field: FieldDescriptorProto): boolean; export declare function isMapType(ctx: Context, messageDesc: DescriptorProto, field: FieldDescriptorProto): boolean; export declare function isObjectId(field: FieldDescriptorProto): boolean; export declare function isTimestamp(field: FieldDescriptorProto): boolean; export declare function isValueType(ctx: Context, field: FieldDescriptorProto): boolean; export declare function isAnyValueType(field: FieldDescriptorProto): boolean; export declare function isAnyValueTypeName(typeName: string): boolean; export declare function isBytesValueType(field: FieldDescriptorProto): boolean; export declare function isFieldMaskType(field: FieldDescriptorProto): boolean; export declare function isFieldMaskTypeName(typeName: string): boolean; export declare function isListValueType(field: FieldDescriptorProto): boolean; export declare function isListValueTypeName(typeName: string): boolean; export declare function isStructType(field: FieldDescriptorProto): boolean; export declare function isStructTypeName(typeName: string): boolean; export declare function isLongValueType(field: FieldDescriptorProto): boolean; export declare function isEmptyType(typeName: string): boolean; export declare function valueTypeName(ctx: Context, typeName: string): Code | undefined; export declare function wrapperTypeName(typeName: string): string | undefined; /** Maps `.some_proto_namespace.Message` to a TypeName. */ export declare function messageToTypeName(ctx: Context, protoType: string, typeOptions?: { keepValueType?: boolean; repeated?: boolean; }): Code; export declare function getEnumMethod(ctx: Context, enumProtoType: string, methodSuffix: string): Import; /** Return the TypeName for any field (primitive/message/etc.) as exposed in the interface. */ export declare function toTypeName(ctx: Context, messageDesc: DescriptorProto | undefined, field: FieldDescriptorProto, ensureOptional?: boolean): Code; /** * For a protobuf map field, if the generated code should use the javascript Map type. * * If the type of a protobuf map key corresponds to the Long type, we always use the Map type. This avoids generating * invalid code such as below (using Long as key of a javascript object): * * export interface Foo { * bar: { [key: Long]: Long } * } * * See https://github.com/stephenh/ts-proto/issues/708 for more details. */ export declare function shouldGenerateJSMapType(ctx: Context, message: DescriptorProto, field: FieldDescriptorProto): boolean; export declare function detectMapType(ctx: Context, messageDesc: DescriptorProto, fieldDesc: FieldDescriptorProto): { messageDesc: DescriptorProto; keyField: FieldDescriptorProto; keyType: Code; valueField: FieldDescriptorProto; valueType: Code; } | undefined; export declare function rawRequestType(ctx: Context, methodDesc: MethodDescriptorProto, typeOptions?: { keepValueType?: boolean; repeated?: boolean; }): Code; export declare function observableType(ctx: Context, asType?: boolean): Code; export declare function requestType(ctx: Context, methodDesc: MethodDescriptorProto, partial?: boolean): Code; export declare function responseType(ctx: Context, methodDesc: MethodDescriptorProto, typeOptions?: { keepValueType?: boolean; repeated?: boolean; }): Code; export declare function responsePromise(ctx: Context, methodDesc: MethodDescriptorProto): Code; export declare function responseObservable(ctx: Context, methodDesc: MethodDescriptorProto): Code; export declare function responsePromiseOrObservable(ctx: Context, methodDesc: MethodDescriptorProto): Code; export interface BatchMethod { methodDesc: MethodDescriptorProto; uniqueIdentifier: string; singleMethodName: string; inputFieldName: string; inputType: Code; outputFieldName: string; outputType: Code; mapType: boolean; } export declare function detectBatchMethod(ctx: Context, fileDesc: FileDescriptorProto, serviceDesc: ServiceDescriptorProto, methodDesc: MethodDescriptorProto): BatchMethod | undefined; export declare function isJsTypeFieldOption(options: Options, field: FieldDescriptorProto): boolean;