| // DO NOT EDIT! This is a generated file. Edit the JSDoc in src/*.js instead and run 'npm run build:types'. |
| |
| export as namespace protobuf; |
| |
| /** |
| * Provides common type definitions. |
| * Can also be used to provide additional google types or your own custom types. |
| * @param name Short name as in `google/protobuf/[name].proto` or full file name |
| * @param json JSON definition within `google.protobuf` if a short name, otherwise the file's root definition |
| */ |
| export function common(name: string, json: { [k: string]: any }): void; |
| |
| export namespace common { |
| |
| /** Properties of a google.protobuf.Any message. */ |
| interface IAny { |
| typeUrl?: string; |
| bytes?: Uint8Array; |
| } |
| |
| /** Properties of a google.protobuf.Duration message. */ |
| interface IDuration { |
| seconds?: (number|Long); |
| nanos?: number; |
| } |
| |
| /** Properties of a google.protobuf.Timestamp message. */ |
| interface ITimestamp { |
| seconds?: (number|Long); |
| nanos?: number; |
| } |
| |
| /** Properties of a google.protobuf.Empty message. */ |
| interface IEmpty { |
| } |
| |
| /** Properties of a google.protobuf.Struct message. */ |
| interface IStruct { |
| fields?: { [k: string]: IValue }; |
| } |
| |
| /** Properties of a google.protobuf.Value message. */ |
| interface IValue { |
| kind?: string; |
| nullValue?: 0; |
| numberValue?: number; |
| stringValue?: string; |
| boolValue?: boolean; |
| structValue?: IStruct; |
| listValue?: IListValue; |
| } |
| |
| /** Properties of a google.protobuf.ListValue message. */ |
| interface IListValue { |
| values?: IValue[]; |
| } |
| |
| /** Properties of a google.protobuf.DoubleValue message. */ |
| interface IDoubleValue { |
| value?: number; |
| } |
| |
| /** Properties of a google.protobuf.FloatValue message. */ |
| interface IFloatValue { |
| value?: number; |
| } |
| |
| /** Properties of a google.protobuf.Int64Value message. */ |
| interface IInt64Value { |
| value?: (number|Long); |
| } |
| |
| /** Properties of a google.protobuf.UInt64Value message. */ |
| interface IUInt64Value { |
| value?: (number|Long); |
| } |
| |
| /** Properties of a google.protobuf.Int32Value message. */ |
| interface IInt32Value { |
| value?: number; |
| } |
| |
| /** Properties of a google.protobuf.UInt32Value message. */ |
| interface IUInt32Value { |
| value?: number; |
| } |
| |
| /** Properties of a google.protobuf.BoolValue message. */ |
| interface IBoolValue { |
| value?: boolean; |
| } |
| |
| /** Properties of a google.protobuf.StringValue message. */ |
| interface IStringValue { |
| value?: string; |
| } |
| |
| /** Properties of a google.protobuf.BytesValue message. */ |
| interface IBytesValue { |
| value?: Uint8Array; |
| } |
| |
| /** |
| * Gets the root definition of the specified common proto file. |
| * |
| * Bundled definitions are: |
| * - google/protobuf/any.proto |
| * - google/protobuf/duration.proto |
| * - google/protobuf/empty.proto |
| * - google/protobuf/field_mask.proto |
| * - google/protobuf/struct.proto |
| * - google/protobuf/timestamp.proto |
| * - google/protobuf/wrappers.proto |
| * |
| * @param file Proto file name |
| * @returns Root definition or `null` if not defined |
| */ |
| function get(file: string): (INamespace|null); |
| } |
| |
| /** Runtime message from/to plain object converters. */ |
| export namespace converter { |
| |
| /** |
| * Generates a plain object to runtime message converter specific to the specified message type. |
| * @param mtype Message type |
| * @returns Codegen instance |
| */ |
| function fromObject(mtype: Type): Codegen; |
| |
| /** |
| * Generates a runtime message to plain object converter specific to the specified message type. |
| * @param mtype Message type |
| * @returns Codegen instance |
| */ |
| function toObject(mtype: Type): Codegen; |
| } |
| |
| /** |
| * Generates a decoder specific to the specified message type. |
| * @param mtype Message type |
| * @returns Codegen instance |
| */ |
| export function decoder(mtype: Type): Codegen; |
| |
| /** |
| * Generates an encoder specific to the specified message type. |
| * @param mtype Message type |
| * @returns Codegen instance |
| */ |
| export function encoder(mtype: Type): Codegen; |
| |
| /** Reflected enum. */ |
| export class Enum extends ReflectionObject { |
| |
| /** |
| * Constructs a new enum instance. |
| * @param name Unique name within its namespace |
| * @param [values] Enum values as an object, by name |
| * @param [options] Declared options |
| * @param [comment] The comment for this enum |
| * @param [comments] The value comments for this enum |
| * @param [valuesOptions] The value options for this enum |
| */ |
| constructor(name: string, values?: { [k: string]: number }, options?: { [k: string]: any }, comment?: string, comments?: { [k: string]: string }, valuesOptions?: ({ [k: string]: { [k: string]: any } }|undefined)); |
| |
| /** Enum values by id. */ |
| public valuesById: { [k: number]: string }; |
| |
| /** Enum values by name. */ |
| public values: { [k: string]: number }; |
| |
| /** Enum comment text. */ |
| public comment: (string|null); |
| |
| /** Value comment texts, if any. */ |
| public comments: { [k: string]: string }; |
| |
| /** Values options, if any */ |
| public valuesOptions?: { [k: string]: { [k: string]: any } }; |
| |
| /** Reserved ranges, if any. */ |
| public reserved: (number[]|string)[]; |
| |
| /** |
| * Constructs an enum from an enum descriptor. |
| * @param name Enum name |
| * @param json Enum descriptor |
| * @returns Created enum |
| * @throws {TypeError} If arguments are invalid |
| */ |
| public static fromJSON(name: string, json: IEnum): Enum; |
| |
| /** |
| * Converts this enum to an enum descriptor. |
| * @param [toJSONOptions] JSON conversion options |
| * @returns Enum descriptor |
| */ |
| public toJSON(toJSONOptions?: IToJSONOptions): IEnum; |
| |
| /** |
| * Adds a value to this enum. |
| * @param name Value name |
| * @param id Value id |
| * @param [comment] Comment, if any |
| * @param {Object.<string, *>|undefined} [options] Options, if any |
| * @returns `this` |
| * @throws {TypeError} If arguments are invalid |
| * @throws {Error} If there is already a value with this name or id |
| */ |
| public add(name: string, id: number, comment?: string, options?: ({ [k: string]: any }|undefined)): Enum; |
| |
| /** |
| * Removes a value from this enum |
| * @param name Value name |
| * @returns `this` |
| * @throws {TypeError} If arguments are invalid |
| * @throws {Error} If `name` is not a name of this enum |
| */ |
| public remove(name: string): Enum; |
| |
| /** |
| * Tests if the specified id is reserved. |
| * @param id Id to test |
| * @returns `true` if reserved, otherwise `false` |
| */ |
| public isReservedId(id: number): boolean; |
| |
| /** |
| * Tests if the specified name is reserved. |
| * @param name Name to test |
| * @returns `true` if reserved, otherwise `false` |
| */ |
| public isReservedName(name: string): boolean; |
| } |
| |
| /** Enum descriptor. */ |
| export interface IEnum { |
| |
| /** Enum values */ |
| values: { [k: string]: number }; |
| |
| /** Enum options */ |
| options?: { [k: string]: any }; |
| } |
| |
| /** Reflected message field. */ |
| export class Field extends FieldBase { |
| |
| /** |
| * Constructs a new message field instance. Note that {@link MapField|map fields} have their own class. |
| * @param name Unique name within its namespace |
| * @param id Unique id within its namespace |
| * @param type Value type |
| * @param [rule="optional"] Field rule |
| * @param [extend] Extended type if different from parent |
| * @param [options] Declared options |
| */ |
| constructor(name: string, id: number, type: string, rule?: (string|{ [k: string]: any }), extend?: (string|{ [k: string]: any }), options?: { [k: string]: any }); |
| |
| /** |
| * Constructs a field from a field descriptor. |
| * @param name Field name |
| * @param json Field descriptor |
| * @returns Created field |
| * @throws {TypeError} If arguments are invalid |
| */ |
| public static fromJSON(name: string, json: IField): Field; |
| |
| /** Determines whether this field is packed. Only relevant when repeated and working with proto2. */ |
| public readonly packed: boolean; |
| |
| /** |
| * Field decorator (TypeScript). |
| * @param fieldId Field id |
| * @param fieldType Field type |
| * @param [fieldRule="optional"] Field rule |
| * @param [defaultValue] Default value |
| * @returns Decorator function |
| */ |
| public static d<T extends number | number[] | Long | Long[] | string | string[] | boolean | boolean[] | Uint8Array | Uint8Array[] | Buffer | Buffer[]>(fieldId: number, fieldType: ("double"|"float"|"int32"|"uint32"|"sint32"|"fixed32"|"sfixed32"|"int64"|"uint64"|"sint64"|"fixed64"|"sfixed64"|"string"|"bool"|"bytes"|object), fieldRule?: ("optional"|"required"|"repeated"), defaultValue?: T): FieldDecorator; |
| |
| /** |
| * Field decorator (TypeScript). |
| * @param fieldId Field id |
| * @param fieldType Field type |
| * @param [fieldRule="optional"] Field rule |
| * @returns Decorator function |
| */ |
| public static d<T extends Message<T>>(fieldId: number, fieldType: (Constructor<T>|string), fieldRule?: ("optional"|"required"|"repeated")): FieldDecorator; |
| } |
| |
| /** Base class of all reflected message fields. This is not an actual class but here for the sake of having consistent type definitions. */ |
| export class FieldBase extends ReflectionObject { |
| |
| /** |
| * Not an actual constructor. Use {@link Field} instead. |
| * @param name Unique name within its namespace |
| * @param id Unique id within its namespace |
| * @param type Value type |
| * @param [rule="optional"] Field rule |
| * @param [extend] Extended type if different from parent |
| * @param [options] Declared options |
| * @param [comment] Comment associated with this field |
| */ |
| constructor(name: string, id: number, type: string, rule?: (string|{ [k: string]: any }), extend?: (string|{ [k: string]: any }), options?: { [k: string]: any }, comment?: string); |
| |
| /** Field type. */ |
| public type: string; |
| |
| /** Unique field id. */ |
| public id: number; |
| |
| /** Extended type if different from parent. */ |
| public extend?: string; |
| |
| /** Whether this field is required. */ |
| public required: boolean; |
| |
| /** Whether this field is optional. */ |
| public optional: boolean; |
| |
| /** Whether this field is repeated. */ |
| public repeated: boolean; |
| |
| /** Whether this field is a map or not. */ |
| public map: boolean; |
| |
| /** Message this field belongs to. */ |
| public message: (Type|null); |
| |
| /** OneOf this field belongs to, if any, */ |
| public partOf: (OneOf|null); |
| |
| /** The field type's default value. */ |
| public typeDefault: any; |
| |
| /** The field's default value on prototypes. */ |
| public defaultValue: any; |
| |
| /** Whether this field's value should be treated as a long. */ |
| public long: boolean; |
| |
| /** Whether this field's value is a buffer. */ |
| public bytes: boolean; |
| |
| /** Resolved type if not a basic type. */ |
| public resolvedType: (Type|Enum|null); |
| |
| /** Sister-field within the extended type if a declaring extension field. */ |
| public extensionField: (Field|null); |
| |
| /** Sister-field within the declaring namespace if an extended field. */ |
| public declaringField: (Field|null); |
| |
| /** Comment for this field. */ |
| public comment: (string|null); |
| |
| /** |
| * Converts this field to a field descriptor. |
| * @param [toJSONOptions] JSON conversion options |
| * @returns Field descriptor |
| */ |
| public toJSON(toJSONOptions?: IToJSONOptions): IField; |
| |
| /** |
| * Resolves this field's type references. |
| * @returns `this` |
| * @throws {Error} If any reference cannot be resolved |
| */ |
| public resolve(): Field; |
| } |
| |
| /** Field descriptor. */ |
| export interface IField { |
| |
| /** Field rule */ |
| rule?: string; |
| |
| /** Field type */ |
| type: string; |
| |
| /** Field id */ |
| id: number; |
| |
| /** Field options */ |
| options?: { [k: string]: any }; |
| } |
| |
| /** Extension field descriptor. */ |
| export interface IExtensionField extends IField { |
| |
| /** Extended type */ |
| extend: string; |
| } |
| |
| /** |
| * Decorator function as returned by {@link Field.d} and {@link MapField.d} (TypeScript). |
| * @param prototype Target prototype |
| * @param fieldName Field name |
| */ |
| type FieldDecorator = (prototype: object, fieldName: string) => void; |
| |
| /** |
| * A node-style callback as used by {@link load} and {@link Root#load}. |
| * @param error Error, if any, otherwise `null` |
| * @param [root] Root, if there hasn't been an error |
| */ |
| type LoadCallback = (error: (Error|null), root?: Root) => void; |
| |
| /** |
| * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback. |
| * @param filename One or multiple files to load |
| * @param root Root namespace, defaults to create a new one if omitted. |
| * @param callback Callback function |
| * @see {@link Root#load} |
| */ |
| export function load(filename: (string|string[]), root: Root, callback: LoadCallback): void; |
| |
| /** |
| * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback. |
| * @param filename One or multiple files to load |
| * @param callback Callback function |
| * @see {@link Root#load} |
| */ |
| export function load(filename: (string|string[]), callback: LoadCallback): void; |
| |
| /** |
| * Loads one or multiple .proto or preprocessed .json files into a common root namespace and returns a promise. |
| * @param filename One or multiple files to load |
| * @param [root] Root namespace, defaults to create a new one if omitted. |
| * @returns Promise |
| * @see {@link Root#load} |
| */ |
| export function load(filename: (string|string[]), root?: Root): Promise<Root>; |
| |
| /** |
| * Synchronously loads one or multiple .proto or preprocessed .json files into a common root namespace (node only). |
| * @param filename One or multiple files to load |
| * @param [root] Root namespace, defaults to create a new one if omitted. |
| * @returns Root namespace |
| * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid |
| * @see {@link Root#loadSync} |
| */ |
| export function loadSync(filename: (string|string[]), root?: Root): Root; |
| |
| /** Build type, one of `"full"`, `"light"` or `"minimal"`. */ |
| export const build: string; |
| |
| /** Reconfigures the library according to the environment. */ |
| export function configure(): void; |
| |
| /** Reflected map field. */ |
| export class MapField extends FieldBase { |
| |
| /** |
| * Constructs a new map field instance. |
| * @param name Unique name within its namespace |
| * @param id Unique id within its namespace |
| * @param keyType Key type |
| * @param type Value type |
| * @param [options] Declared options |
| * @param [comment] Comment associated with this field |
| */ |
| constructor(name: string, id: number, keyType: string, type: string, options?: { [k: string]: any }, comment?: string); |
| |
| /** Key type. */ |
| public keyType: string; |
| |
| /** Resolved key type if not a basic type. */ |
| public resolvedKeyType: (ReflectionObject|null); |
| |
| /** |
| * Constructs a map field from a map field descriptor. |
| * @param name Field name |
| * @param json Map field descriptor |
| * @returns Created map field |
| * @throws {TypeError} If arguments are invalid |
| */ |
| public static fromJSON(name: string, json: IMapField): MapField; |
| |
| /** |
| * Converts this map field to a map field descriptor. |
| * @param [toJSONOptions] JSON conversion options |
| * @returns Map field descriptor |
| */ |
| public toJSON(toJSONOptions?: IToJSONOptions): IMapField; |
| |
| /** |
| * Map field decorator (TypeScript). |
| * @param fieldId Field id |
| * @param fieldKeyType Field key type |
| * @param fieldValueType Field value type |
| * @returns Decorator function |
| */ |
| public static d<T extends { [key: string]: number | Long | string | boolean | Uint8Array | Buffer | number[] | Message<{}> }>(fieldId: number, fieldKeyType: ("int32"|"uint32"|"sint32"|"fixed32"|"sfixed32"|"int64"|"uint64"|"sint64"|"fixed64"|"sfixed64"|"bool"|"string"), fieldValueType: ("double"|"float"|"int32"|"uint32"|"sint32"|"fixed32"|"sfixed32"|"int64"|"uint64"|"sint64"|"fixed64"|"sfixed64"|"bool"|"string"|"bytes"|object|Constructor<{}>)): FieldDecorator; |
| } |
| |
| /** Map field descriptor. */ |
| export interface IMapField extends IField { |
| |
| /** Key type */ |
| keyType: string; |
| } |
| |
| /** Extension map field descriptor. */ |
| export interface IExtensionMapField extends IMapField { |
| |
| /** Extended type */ |
| extend: string; |
| } |
| |
| /** Abstract runtime message. */ |
| export class Message<T extends object = object> { |
| |
| /** |
| * Constructs a new message instance. |
| * @param [properties] Properties to set |
| */ |
| constructor(properties?: Properties<T>); |
| |
| /** Reference to the reflected type. */ |
| public static readonly $type: Type; |
| |
| /** Reference to the reflected type. */ |
| public readonly $type: Type; |
| |
| /** |
| * Creates a new message of this type using the specified properties. |
| * @param [properties] Properties to set |
| * @returns Message instance |
| */ |
| public static create<T extends Message<T>>(this: Constructor<T>, properties?: { [k: string]: any }): Message<T>; |
| |
| /** |
| * Encodes a message of this type. |
| * @param message Message to encode |
| * @param [writer] Writer to use |
| * @returns Writer |
| */ |
| public static encode<T extends Message<T>>(this: Constructor<T>, message: (T|{ [k: string]: any }), writer?: Writer): Writer; |
| |
| /** |
| * Encodes a message of this type preceeded by its length as a varint. |
| * @param message Message to encode |
| * @param [writer] Writer to use |
| * @returns Writer |
| */ |
| public static encodeDelimited<T extends Message<T>>(this: Constructor<T>, message: (T|{ [k: string]: any }), writer?: Writer): Writer; |
| |
| /** |
| * Decodes a message of this type. |
| * @param reader Reader or buffer to decode |
| * @returns Decoded message |
| */ |
| public static decode<T extends Message<T>>(this: Constructor<T>, reader: (Reader|Uint8Array)): T; |
| |
| /** |
| * Decodes a message of this type preceeded by its length as a varint. |
| * @param reader Reader or buffer to decode |
| * @returns Decoded message |
| */ |
| public static decodeDelimited<T extends Message<T>>(this: Constructor<T>, reader: (Reader|Uint8Array)): T; |
| |
| /** |
| * Verifies a message of this type. |
| * @param message Plain object to verify |
| * @returns `null` if valid, otherwise the reason why it is not |
| */ |
| public static verify(message: { [k: string]: any }): (string|null); |
| |
| /** |
| * Creates a new message of this type from a plain object. Also converts values to their respective internal types. |
| * @param object Plain object |
| * @returns Message instance |
| */ |
| public static fromObject<T extends Message<T>>(this: Constructor<T>, object: { [k: string]: any }): T; |
| |
| /** |
| * Creates a plain object from a message of this type. Also converts values to other types if specified. |
| * @param message Message instance |
| * @param [options] Conversion options |
| * @returns Plain object |
| */ |
| public static toObject<T extends Message<T>>(this: Constructor<T>, message: T, options?: IConversionOptions): { [k: string]: any }; |
| |
| /** |
| * Converts this message to JSON. |
| * @returns JSON object |
| */ |
| public toJSON(): { [k: string]: any }; |
| } |
| |
| /** Reflected service method. */ |
| export class Method extends ReflectionObject { |
| |
| /** |
| * Constructs a new service method instance. |
| * @param name Method name |
| * @param type Method type, usually `"rpc"` |
| * @param requestType Request message type |
| * @param responseType Response message type |
| * @param [requestStream] Whether the request is streamed |
| * @param [responseStream] Whether the response is streamed |
| * @param [options] Declared options |
| * @param [comment] The comment for this method |
| * @param [parsedOptions] Declared options, properly parsed into an object |
| */ |
| constructor(name: string, type: (string|undefined), requestType: string, responseType: string, requestStream?: (boolean|{ [k: string]: any }), responseStream?: (boolean|{ [k: string]: any }), options?: { [k: string]: any }, comment?: string, parsedOptions?: { [k: string]: any }); |
| |
| /** Method type. */ |
| public type: string; |
| |
| /** Request type. */ |
| public requestType: string; |
| |
| /** Whether requests are streamed or not. */ |
| public requestStream?: boolean; |
| |
| /** Response type. */ |
| public responseType: string; |
| |
| /** Whether responses are streamed or not. */ |
| public responseStream?: boolean; |
| |
| /** Resolved request type. */ |
| public resolvedRequestType: (Type|null); |
| |
| /** Resolved response type. */ |
| public resolvedResponseType: (Type|null); |
| |
| /** Comment for this method */ |
| public comment: (string|null); |
| |
| /** Options properly parsed into an object */ |
| public parsedOptions: any; |
| |
| /** |
| * Constructs a method from a method descriptor. |
| * @param name Method name |
| * @param json Method descriptor |
| * @returns Created method |
| * @throws {TypeError} If arguments are invalid |
| */ |
| public static fromJSON(name: string, json: IMethod): Method; |
| |
| /** |
| * Converts this method to a method descriptor. |
| * @param [toJSONOptions] JSON conversion options |
| * @returns Method descriptor |
| */ |
| public toJSON(toJSONOptions?: IToJSONOptions): IMethod; |
| } |
| |
| /** Method descriptor. */ |
| export interface IMethod { |
| |
| /** Method type */ |
| type?: string; |
| |
| /** Request type */ |
| requestType: string; |
| |
| /** Response type */ |
| responseType: string; |
| |
| /** Whether requests are streamed */ |
| requestStream?: boolean; |
| |
| /** Whether responses are streamed */ |
| responseStream?: boolean; |
| |
| /** Method options */ |
| options?: { [k: string]: any }; |
| |
| /** Method comments */ |
| comment: string; |
| |
| /** Method options properly parsed into an object */ |
| parsedOptions?: { [k: string]: any }; |
| } |
| |
| /** Reflected namespace. */ |
| export class Namespace extends NamespaceBase { |
| |
| /** |
| * Constructs a new namespace instance. |
| * @param name Namespace name |
| * @param [options] Declared options |
| */ |
| constructor(name: string, options?: { [k: string]: any }); |
| |
| /** |
| * Constructs a namespace from JSON. |
| * @param name Namespace name |
| * @param json JSON object |
| * @returns Created namespace |
| * @throws {TypeError} If arguments are invalid |
| */ |
| public static fromJSON(name: string, json: { [k: string]: any }): Namespace; |
| |
| /** |
| * Converts an array of reflection objects to JSON. |
| * @param array Object array |
| * @param [toJSONOptions] JSON conversion options |
| * @returns JSON object or `undefined` when array is empty |
| */ |
| public static arrayToJSON(array: ReflectionObject[], toJSONOptions?: IToJSONOptions): ({ [k: string]: any }|undefined); |
| |
| /** |
| * Tests if the specified id is reserved. |
| * @param reserved Array of reserved ranges and names |
| * @param id Id to test |
| * @returns `true` if reserved, otherwise `false` |
| */ |
| public static isReservedId(reserved: ((number[]|string)[]|undefined), id: number): boolean; |
| |
| /** |
| * Tests if the specified name is reserved. |
| * @param reserved Array of reserved ranges and names |
| * @param name Name to test |
| * @returns `true` if reserved, otherwise `false` |
| */ |
| public static isReservedName(reserved: ((number[]|string)[]|undefined), name: string): boolean; |
| } |
| |
| /** Base class of all reflection objects containing nested objects. This is not an actual class but here for the sake of having consistent type definitions. */ |
| export abstract class NamespaceBase extends ReflectionObject { |
| |
| /** Nested objects by name. */ |
| public nested?: { [k: string]: ReflectionObject }; |
| |
| /** Nested objects of this namespace as an array for iteration. */ |
| public readonly nestedArray: ReflectionObject[]; |
| |
| /** |
| * Converts this namespace to a namespace descriptor. |
| * @param [toJSONOptions] JSON conversion options |
| * @returns Namespace descriptor |
| */ |
| public toJSON(toJSONOptions?: IToJSONOptions): INamespace; |
| |
| /** |
| * Adds nested objects to this namespace from nested object descriptors. |
| * @param nestedJson Any nested object descriptors |
| * @returns `this` |
| */ |
| public addJSON(nestedJson: { [k: string]: AnyNestedObject }): Namespace; |
| |
| /** |
| * Gets the nested object of the specified name. |
| * @param name Nested object name |
| * @returns The reflection object or `null` if it doesn't exist |
| */ |
| public get(name: string): (ReflectionObject|null); |
| |
| /** |
| * Gets the values of the nested {@link Enum|enum} of the specified name. |
| * This methods differs from {@link Namespace#get|get} in that it returns an enum's values directly and throws instead of returning `null`. |
| * @param name Nested enum name |
| * @returns Enum values |
| * @throws {Error} If there is no such enum |
| */ |
| public getEnum(name: string): { [k: string]: number }; |
| |
| /** |
| * Adds a nested object to this namespace. |
| * @param object Nested object to add |
| * @returns `this` |
| * @throws {TypeError} If arguments are invalid |
| * @throws {Error} If there is already a nested object with this name |
| */ |
| public add(object: ReflectionObject): Namespace; |
| |
| /** |
| * Removes a nested object from this namespace. |
| * @param object Nested object to remove |
| * @returns `this` |
| * @throws {TypeError} If arguments are invalid |
| * @throws {Error} If `object` is not a member of this namespace |
| */ |
| public remove(object: ReflectionObject): Namespace; |
| |
| /** |
| * Defines additial namespaces within this one if not yet existing. |
| * @param path Path to create |
| * @param [json] Nested types to create from JSON |
| * @returns Pointer to the last namespace created or `this` if path is empty |
| */ |
| public define(path: (string|string[]), json?: any): Namespace; |
| |
| /** |
| * Resolves this namespace's and all its nested objects' type references. Useful to validate a reflection tree, but comes at a cost. |
| * @returns `this` |
| */ |
| public resolveAll(): Namespace; |
| |
| /** |
| * Recursively looks up the reflection object matching the specified path in the scope of this namespace. |
| * @param path Path to look up |
| * @param filterTypes Filter types, any combination of the constructors of `protobuf.Type`, `protobuf.Enum`, `protobuf.Service` etc. |
| * @param [parentAlreadyChecked=false] If known, whether the parent has already been checked |
| * @returns Looked up object or `null` if none could be found |
| */ |
| public lookup(path: (string|string[]), filterTypes: (any|any[]), parentAlreadyChecked?: boolean): (ReflectionObject|null); |
| |
| /** |
| * Looks up the reflection object at the specified path, relative to this namespace. |
| * @param path Path to look up |
| * @param [parentAlreadyChecked=false] Whether the parent has already been checked |
| * @returns Looked up object or `null` if none could be found |
| */ |
| public lookup(path: (string|string[]), parentAlreadyChecked?: boolean): (ReflectionObject|null); |
| |
| /** |
| * Looks up the {@link Type|type} at the specified path, relative to this namespace. |
| * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`. |
| * @param path Path to look up |
| * @returns Looked up type |
| * @throws {Error} If `path` does not point to a type |
| */ |
| public lookupType(path: (string|string[])): Type; |
| |
| /** |
| * Looks up the values of the {@link Enum|enum} at the specified path, relative to this namespace. |
| * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`. |
| * @param path Path to look up |
| * @returns Looked up enum |
| * @throws {Error} If `path` does not point to an enum |
| */ |
| public lookupEnum(path: (string|string[])): Enum; |
| |
| /** |
| * Looks up the {@link Type|type} or {@link Enum|enum} at the specified path, relative to this namespace. |
| * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`. |
| * @param path Path to look up |
| * @returns Looked up type or enum |
| * @throws {Error} If `path` does not point to a type or enum |
| */ |
| public lookupTypeOrEnum(path: (string|string[])): Type; |
| |
| /** |
| * Looks up the {@link Service|service} at the specified path, relative to this namespace. |
| * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`. |
| * @param path Path to look up |
| * @returns Looked up service |
| * @throws {Error} If `path` does not point to a service |
| */ |
| public lookupService(path: (string|string[])): Service; |
| } |
| |
| /** Namespace descriptor. */ |
| export interface INamespace { |
| |
| /** Namespace options */ |
| options?: { [k: string]: any }; |
| |
| /** Nested object descriptors */ |
| nested?: { [k: string]: AnyNestedObject }; |
| } |
| |
| /** Any extension field descriptor. */ |
| type AnyExtensionField = (IExtensionField|IExtensionMapField); |
| |
| /** Any nested object descriptor. */ |
| type AnyNestedObject = (IEnum|IType|IService|AnyExtensionField|INamespace|IOneOf); |
| |
| /** Base class of all reflection objects. */ |
| export abstract class ReflectionObject { |
| |
| /** Options. */ |
| public options?: { [k: string]: any }; |
| |
| /** Parsed Options. */ |
| public parsedOptions?: { [k: string]: any[] }; |
| |
| /** Unique name within its namespace. */ |
| public name: string; |
| |
| /** Parent namespace. */ |
| public parent: (Namespace|null); |
| |
| /** Whether already resolved or not. */ |
| public resolved: boolean; |
| |
| /** Comment text, if any. */ |
| public comment: (string|null); |
| |
| /** Defining file name. */ |
| public filename: (string|null); |
| |
| /** Reference to the root namespace. */ |
| public readonly root: Root; |
| |
| /** Full name including leading dot. */ |
| public readonly fullName: string; |
| |
| /** |
| * Converts this reflection object to its descriptor representation. |
| * @returns Descriptor |
| */ |
| public toJSON(): { [k: string]: any }; |
| |
| /** |
| * Called when this object is added to a parent. |
| * @param parent Parent added to |
| */ |
| public onAdd(parent: ReflectionObject): void; |
| |
| /** |
| * Called when this object is removed from a parent. |
| * @param parent Parent removed from |
| */ |
| public onRemove(parent: ReflectionObject): void; |
| |
| /** |
| * Resolves this objects type references. |
| * @returns `this` |
| */ |
| public resolve(): ReflectionObject; |
| |
| /** |
| * Gets an option value. |
| * @param name Option name |
| * @returns Option value or `undefined` if not set |
| */ |
| public getOption(name: string): any; |
| |
| /** |
| * Sets an option. |
| * @param name Option name |
| * @param value Option value |
| * @param [ifNotSet] Sets the option only if it isn't currently set |
| * @returns `this` |
| */ |
| public setOption(name: string, value: any, ifNotSet?: boolean): ReflectionObject; |
| |
| /** |
| * Sets a parsed option. |
| * @param name parsed Option name |
| * @param value Option value |
| * @param propName dot '.' delimited full path of property within the option to set. if undefined\empty, will add a new option with that value |
| * @returns `this` |
| */ |
| public setParsedOption(name: string, value: any, propName: string): ReflectionObject; |
| |
| /** |
| * Sets multiple options. |
| * @param options Options to set |
| * @param [ifNotSet] Sets an option only if it isn't currently set |
| * @returns `this` |
| */ |
| public setOptions(options: { [k: string]: any }, ifNotSet?: boolean): ReflectionObject; |
| |
| /** |
| * Converts this instance to its string representation. |
| * @returns Class name[, space, full name] |
| */ |
| public toString(): string; |
| } |
| |
| /** Reflected oneof. */ |
| export class OneOf extends ReflectionObject { |
| |
| /** |
| * Constructs a new oneof instance. |
| * @param name Oneof name |
| * @param [fieldNames] Field names |
| * @param [options] Declared options |
| * @param [comment] Comment associated with this field |
| */ |
| constructor(name: string, fieldNames?: (string[]|{ [k: string]: any }), options?: { [k: string]: any }, comment?: string); |
| |
| /** Field names that belong to this oneof. */ |
| public oneof: string[]; |
| |
| /** Fields that belong to this oneof as an array for iteration. */ |
| public readonly fieldsArray: Field[]; |
| |
| /** Comment for this field. */ |
| public comment: (string|null); |
| |
| /** |
| * Constructs a oneof from a oneof descriptor. |
| * @param name Oneof name |
| * @param json Oneof descriptor |
| * @returns Created oneof |
| * @throws {TypeError} If arguments are invalid |
| */ |
| public static fromJSON(name: string, json: IOneOf): OneOf; |
| |
| /** |
| * Converts this oneof to a oneof descriptor. |
| * @param [toJSONOptions] JSON conversion options |
| * @returns Oneof descriptor |
| */ |
| public toJSON(toJSONOptions?: IToJSONOptions): IOneOf; |
| |
| /** |
| * Adds a field to this oneof and removes it from its current parent, if any. |
| * @param field Field to add |
| * @returns `this` |
| */ |
| public add(field: Field): OneOf; |
| |
| /** |
| * Removes a field from this oneof and puts it back to the oneof's parent. |
| * @param field Field to remove |
| * @returns `this` |
| */ |
| public remove(field: Field): OneOf; |
| |
| /** |
| * OneOf decorator (TypeScript). |
| * @param fieldNames Field names |
| * @returns Decorator function |
| */ |
| public static d<T extends string>(...fieldNames: string[]): OneOfDecorator; |
| } |
| |
| /** Oneof descriptor. */ |
| export interface IOneOf { |
| |
| /** Oneof field names */ |
| oneof: string[]; |
| |
| /** Oneof options */ |
| options?: { [k: string]: any }; |
| } |
| |
| /** |
| * Decorator function as returned by {@link OneOf.d} (TypeScript). |
| * @param prototype Target prototype |
| * @param oneofName OneOf name |
| */ |
| type OneOfDecorator = (prototype: object, oneofName: string) => void; |
| |
| /** |
| * Parses the given .proto source and returns an object with the parsed contents. |
| * @param source Source contents |
| * @param [options] Parse options. Defaults to {@link parse.defaults} when omitted. |
| * @returns Parser result |
| */ |
| export function parse(source: string, options?: IParseOptions): IParserResult; |
| |
| /** Result object returned from {@link parse}. */ |
| export interface IParserResult { |
| |
| /** Package name, if declared */ |
| package: (string|undefined); |
| |
| /** Imports, if any */ |
| imports: (string[]|undefined); |
| |
| /** Weak imports, if any */ |
| weakImports: (string[]|undefined); |
| |
| /** Syntax, if specified (either `"proto2"` or `"proto3"`) */ |
| syntax: (string|undefined); |
| |
| /** Populated root instance */ |
| root: Root; |
| } |
| |
| /** Options modifying the behavior of {@link parse}. */ |
| export interface IParseOptions { |
| |
| /** Keeps field casing instead of converting to camel case */ |
| keepCase?: boolean; |
| |
| /** Recognize double-slash comments in addition to doc-block comments. */ |
| alternateCommentMode?: boolean; |
| |
| /** Use trailing comment when both leading comment and trailing comment exist. */ |
| preferTrailingComment?: boolean; |
| } |
| |
| /** Options modifying the behavior of JSON serialization. */ |
| export interface IToJSONOptions { |
| |
| /** Serializes comments. */ |
| keepComments?: boolean; |
| } |
| |
| /** |
| * Parses the given .proto source and returns an object with the parsed contents. |
| * @param source Source contents |
| * @param root Root to populate |
| * @param [options] Parse options. Defaults to {@link parse.defaults} when omitted. |
| * @returns Parser result |
| */ |
| export function parse(source: string, root: Root, options?: IParseOptions): IParserResult; |
| |
| /** Wire format reader using `Uint8Array` if available, otherwise `Array`. */ |
| export class Reader { |
| |
| /** |
| * Constructs a new reader instance using the specified buffer. |
| * @param buffer Buffer to read from |
| */ |
| constructor(buffer: Uint8Array); |
| |
| /** Read buffer. */ |
| public buf: Uint8Array; |
| |
| /** Read buffer position. */ |
| public pos: number; |
| |
| /** Read buffer length. */ |
| public len: number; |
| |
| /** |
| * Creates a new reader using the specified buffer. |
| * @param buffer Buffer to read from |
| * @returns A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader} |
| * @throws {Error} If `buffer` is not a valid buffer |
| */ |
| public static create(buffer: (Uint8Array|Buffer)): (Reader|BufferReader); |
| |
| /** |
| * Reads a varint as an unsigned 32 bit value. |
| * @returns Value read |
| */ |
| public uint32(): number; |
| |
| /** |
| * Reads a varint as a signed 32 bit value. |
| * @returns Value read |
| */ |
| public int32(): number; |
| |
| /** |
| * Reads a zig-zag encoded varint as a signed 32 bit value. |
| * @returns Value read |
| */ |
| public sint32(): number; |
| |
| /** |
| * Reads a varint as a signed 64 bit value. |
| * @returns Value read |
| */ |
| public int64(): Long; |
| |
| /** |
| * Reads a varint as an unsigned 64 bit value. |
| * @returns Value read |
| */ |
| public uint64(): Long; |
| |
| /** |
| * Reads a zig-zag encoded varint as a signed 64 bit value. |
| * @returns Value read |
| */ |
| public sint64(): Long; |
| |
| /** |
| * Reads a varint as a boolean. |
| * @returns Value read |
| */ |
| public bool(): boolean; |
| |
| /** |
| * Reads fixed 32 bits as an unsigned 32 bit integer. |
| * @returns Value read |
| */ |
| public fixed32(): number; |
| |
| /** |
| * Reads fixed 32 bits as a signed 32 bit integer. |
| * @returns Value read |
| */ |
| public sfixed32(): number; |
| |
| /** |
| * Reads fixed 64 bits. |
| * @returns Value read |
| */ |
| public fixed64(): Long; |
| |
| /** |
| * Reads zig-zag encoded fixed 64 bits. |
| * @returns Value read |
| */ |
| public sfixed64(): Long; |
| |
| /** |
| * Reads a float (32 bit) as a number. |
| * @returns Value read |
| */ |
| public float(): number; |
| |
| /** |
| * Reads a double (64 bit float) as a number. |
| * @returns Value read |
| */ |
| public double(): number; |
| |
| /** |
| * Reads a sequence of bytes preceeded by its length as a varint. |
| * @returns Value read |
| */ |
| public bytes(): Uint8Array; |
| |
| /** |
| * Reads a string preceeded by its byte length as a varint. |
| * @returns Value read |
| */ |
| public string(): string; |
| |
| /** |
| * Skips the specified number of bytes if specified, otherwise skips a varint. |
| * @param [length] Length if known, otherwise a varint is assumed |
| * @returns `this` |
| */ |
| public skip(length?: number): Reader; |
| |
| /** |
| * Skips the next element of the specified wire type. |
| * @param wireType Wire type received |
| * @returns `this` |
| */ |
| public skipType(wireType: number): Reader; |
| } |
| |
| /** Wire format reader using node buffers. */ |
| export class BufferReader extends Reader { |
| |
| /** |
| * Constructs a new buffer reader instance. |
| * @param buffer Buffer to read from |
| */ |
| constructor(buffer: Buffer); |
| |
| /** |
| * Reads a sequence of bytes preceeded by its length as a varint. |
| * @returns Value read |
| */ |
| public bytes(): Buffer; |
| } |
| |
| /** Root namespace wrapping all types, enums, services, sub-namespaces etc. that belong together. */ |
| export class Root extends NamespaceBase { |
| |
| /** |
| * Constructs a new root namespace instance. |
| * @param [options] Top level options |
| */ |
| constructor(options?: { [k: string]: any }); |
| |
| /** Deferred extension fields. */ |
| public deferred: Field[]; |
| |
| /** Resolved file names of loaded files. */ |
| public files: string[]; |
| |
| /** |
| * Loads a namespace descriptor into a root namespace. |
| * @param json Nameespace descriptor |
| * @param [root] Root namespace, defaults to create a new one if omitted |
| * @returns Root namespace |
| */ |
| public static fromJSON(json: INamespace, root?: Root): Root; |
| |
| /** |
| * Resolves the path of an imported file, relative to the importing origin. |
| * This method exists so you can override it with your own logic in case your imports are scattered over multiple directories. |
| * @param origin The file name of the importing file |
| * @param target The file name being imported |
| * @returns Resolved path to `target` or `null` to skip the file |
| */ |
| public resolvePath(origin: string, target: string): (string|null); |
| |
| /** |
| * Fetch content from file path or url |
| * This method exists so you can override it with your own logic. |
| * @param path File path or url |
| * @param callback Callback function |
| */ |
| public fetch(path: string, callback: FetchCallback): void; |
| |
| /** |
| * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback. |
| * @param filename Names of one or multiple files to load |
| * @param options Parse options |
| * @param callback Callback function |
| */ |
| public load(filename: (string|string[]), options: IParseOptions, callback: LoadCallback): void; |
| |
| /** |
| * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback. |
| * @param filename Names of one or multiple files to load |
| * @param callback Callback function |
| */ |
| public load(filename: (string|string[]), callback: LoadCallback): void; |
| |
| /** |
| * Loads one or multiple .proto or preprocessed .json files into this root namespace and returns a promise. |
| * @param filename Names of one or multiple files to load |
| * @param [options] Parse options. Defaults to {@link parse.defaults} when omitted. |
| * @returns Promise |
| */ |
| public load(filename: (string|string[]), options?: IParseOptions): Promise<Root>; |
| |
| /** |
| * Synchronously loads one or multiple .proto or preprocessed .json files into this root namespace (node only). |
| * @param filename Names of one or multiple files to load |
| * @param [options] Parse options. Defaults to {@link parse.defaults} when omitted. |
| * @returns Root namespace |
| * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid |
| */ |
| public loadSync(filename: (string|string[]), options?: IParseOptions): Root; |
| } |
| |
| /** |
| * Named roots. |
| * This is where pbjs stores generated structures (the option `-r, --root` specifies a name). |
| * Can also be used manually to make roots available across modules. |
| */ |
| export let roots: { [k: string]: Root }; |
| |
| /** Streaming RPC helpers. */ |
| export namespace rpc { |
| |
| /** |
| * A service method callback as used by {@link rpc.ServiceMethod|ServiceMethod}. |
| * |
| * Differs from {@link RPCImplCallback} in that it is an actual callback of a service method which may not return `response = null`. |
| * @param error Error, if any |
| * @param [response] Response message |
| */ |
| type ServiceMethodCallback<TRes extends Message<TRes>> = (error: (Error|null), response?: TRes) => void; |
| |
| /** |
| * A service method part of a {@link rpc.Service} as created by {@link Service.create}. |
| * @param request Request message or plain object |
| * @param [callback] Node-style callback called with the error, if any, and the response message |
| * @returns Promise if `callback` has been omitted, otherwise `undefined` |
| */ |
| type ServiceMethod<TReq extends Message<TReq>, TRes extends Message<TRes>> = (request: (TReq|Properties<TReq>), callback?: rpc.ServiceMethodCallback<TRes>) => Promise<Message<TRes>>; |
| |
| /** An RPC service as returned by {@link Service#create}. */ |
| class Service extends util.EventEmitter { |
| |
| /** |
| * Constructs a new RPC service instance. |
| * @param rpcImpl RPC implementation |
| * @param [requestDelimited=false] Whether requests are length-delimited |
| * @param [responseDelimited=false] Whether responses are length-delimited |
| */ |
| constructor(rpcImpl: RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean); |
| |
| /** RPC implementation. Becomes `null` once the service is ended. */ |
| public rpcImpl: (RPCImpl|null); |
| |
| /** Whether requests are length-delimited. */ |
| public requestDelimited: boolean; |
| |
| /** Whether responses are length-delimited. */ |
| public responseDelimited: boolean; |
| |
| /** |
| * Calls a service method through {@link rpc.Service#rpcImpl|rpcImpl}. |
| * @param method Reflected or static method |
| * @param requestCtor Request constructor |
| * @param responseCtor Response constructor |
| * @param request Request message or plain object |
| * @param callback Service callback |
| */ |
| public rpcCall<TReq extends Message<TReq>, TRes extends Message<TRes>>(method: (Method|rpc.ServiceMethod<TReq, TRes>), requestCtor: Constructor<TReq>, responseCtor: Constructor<TRes>, request: (TReq|Properties<TReq>), callback: rpc.ServiceMethodCallback<TRes>): void; |
| |
| /** |
| * Ends this service and emits the `end` event. |
| * @param [endedByRPC=false] Whether the service has been ended by the RPC implementation. |
| * @returns `this` |
| */ |
| public end(endedByRPC?: boolean): rpc.Service; |
| } |
| } |
| |
| /** |
| * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets. |
| * @param method Reflected or static method being called |
| * @param requestData Request data |
| * @param callback Callback function |
| */ |
| type RPCImpl = (method: (Method|rpc.ServiceMethod<Message<{}>, Message<{}>>), requestData: Uint8Array, callback: RPCImplCallback) => void; |
| |
| /** |
| * Node-style callback as used by {@link RPCImpl}. |
| * @param error Error, if any, otherwise `null` |
| * @param [response] Response data or `null` to signal end of stream, if there hasn't been an error |
| */ |
| type RPCImplCallback = (error: (Error|null), response?: (Uint8Array|null)) => void; |
| |
| /** Reflected service. */ |
| export class Service extends NamespaceBase { |
| |
| /** |
| * Constructs a new service instance. |
| * @param name Service name |
| * @param [options] Service options |
| * @throws {TypeError} If arguments are invalid |
| */ |
| constructor(name: string, options?: { [k: string]: any }); |
| |
| /** Service methods. */ |
| public methods: { [k: string]: Method }; |
| |
| /** |
| * Constructs a service from a service descriptor. |
| * @param name Service name |
| * @param json Service descriptor |
| * @returns Created service |
| * @throws {TypeError} If arguments are invalid |
| */ |
| public static fromJSON(name: string, json: IService): Service; |
| |
| /** |
| * Converts this service to a service descriptor. |
| * @param [toJSONOptions] JSON conversion options |
| * @returns Service descriptor |
| */ |
| public toJSON(toJSONOptions?: IToJSONOptions): IService; |
| |
| /** Methods of this service as an array for iteration. */ |
| public readonly methodsArray: Method[]; |
| |
| /** |
| * Creates a runtime service using the specified rpc implementation. |
| * @param rpcImpl RPC implementation |
| * @param [requestDelimited=false] Whether requests are length-delimited |
| * @param [responseDelimited=false] Whether responses are length-delimited |
| * @returns RPC service. Useful where requests and/or responses are streamed. |
| */ |
| public create(rpcImpl: RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean): rpc.Service; |
| } |
| |
| /** Service descriptor. */ |
| export interface IService extends INamespace { |
| |
| /** Method descriptors */ |
| methods: { [k: string]: IMethod }; |
| } |
| |
| /** |
| * Gets the next token and advances. |
| * @returns Next token or `null` on eof |
| */ |
| type TokenizerHandleNext = () => (string|null); |
| |
| /** |
| * Peeks for the next token. |
| * @returns Next token or `null` on eof |
| */ |
| type TokenizerHandlePeek = () => (string|null); |
| |
| /** |
| * Pushes a token back to the stack. |
| * @param token Token |
| */ |
| type TokenizerHandlePush = (token: string) => void; |
| |
| /** |
| * Skips the next token. |
| * @param expected Expected token |
| * @param [optional=false] If optional |
| * @returns Whether the token matched |
| * @throws {Error} If the token didn't match and is not optional |
| */ |
| type TokenizerHandleSkip = (expected: string, optional?: boolean) => boolean; |
| |
| /** |
| * Gets the comment on the previous line or, alternatively, the line comment on the specified line. |
| * @param [line] Line number |
| * @returns Comment text or `null` if none |
| */ |
| type TokenizerHandleCmnt = (line?: number) => (string|null); |
| |
| /** Handle object returned from {@link tokenize}. */ |
| export interface ITokenizerHandle { |
| |
| /** Gets the next token and advances (`null` on eof) */ |
| next: TokenizerHandleNext; |
| |
| /** Peeks for the next token (`null` on eof) */ |
| peek: TokenizerHandlePeek; |
| |
| /** Pushes a token back to the stack */ |
| push: TokenizerHandlePush; |
| |
| /** Skips a token, returns its presence and advances or, if non-optional and not present, throws */ |
| skip: TokenizerHandleSkip; |
| |
| /** Gets the comment on the previous line or the line comment on the specified line, if any */ |
| cmnt: TokenizerHandleCmnt; |
| |
| /** Current line number */ |
| line: number; |
| } |
| |
| /** |
| * Tokenizes the given .proto source and returns an object with useful utility functions. |
| * @param source Source contents |
| * @param alternateCommentMode Whether we should activate alternate comment parsing mode. |
| * @returns Tokenizer handle |
| */ |
| export function tokenize(source: string, alternateCommentMode: boolean): ITokenizerHandle; |
| |
| export namespace tokenize { |
| |
| /** |
| * Unescapes a string. |
| * @param str String to unescape |
| * @returns Unescaped string |
| */ |
| function unescape(str: string): string; |
| } |
| |
| /** Reflected message type. */ |
| export class Type extends NamespaceBase { |
| |
| /** |
| * Constructs a new reflected message type instance. |
| * @param name Message name |
| * @param [options] Declared options |
| */ |
| constructor(name: string, options?: { [k: string]: any }); |
| |
| /** Message fields. */ |
| public fields: { [k: string]: Field }; |
| |
| /** Oneofs declared within this namespace, if any. */ |
| public oneofs: { [k: string]: OneOf }; |
| |
| /** Extension ranges, if any. */ |
| public extensions: number[][]; |
| |
| /** Reserved ranges, if any. */ |
| public reserved: (number[]|string)[]; |
| |
| /** Message fields by id. */ |
| public readonly fieldsById: { [k: number]: Field }; |
| |
| /** Fields of this message as an array for iteration. */ |
| public readonly fieldsArray: Field[]; |
| |
| /** Oneofs of this message as an array for iteration. */ |
| public readonly oneofsArray: OneOf[]; |
| |
| /** |
| * The registered constructor, if any registered, otherwise a generic constructor. |
| * Assigning a function replaces the internal constructor. If the function does not extend {@link Message} yet, its prototype will be setup accordingly and static methods will be populated. If it already extends {@link Message}, it will just replace the internal constructor. |
| */ |
| public ctor: Constructor<{}>; |
| |
| /** |
| * Generates a constructor function for the specified type. |
| * @param mtype Message type |
| * @returns Codegen instance |
| */ |
| public static generateConstructor(mtype: Type): Codegen; |
| |
| /** |
| * Creates a message type from a message type descriptor. |
| * @param name Message name |
| * @param json Message type descriptor |
| * @returns Created message type |
| */ |
| public static fromJSON(name: string, json: IType): Type; |
| |
| /** |
| * Converts this message type to a message type descriptor. |
| * @param [toJSONOptions] JSON conversion options |
| * @returns Message type descriptor |
| */ |
| public toJSON(toJSONOptions?: IToJSONOptions): IType; |
| |
| /** |
| * Adds a nested object to this type. |
| * @param object Nested object to add |
| * @returns `this` |
| * @throws {TypeError} If arguments are invalid |
| * @throws {Error} If there is already a nested object with this name or, if a field, when there is already a field with this id |
| */ |
| public add(object: ReflectionObject): Type; |
| |
| /** |
| * Removes a nested object from this type. |
| * @param object Nested object to remove |
| * @returns `this` |
| * @throws {TypeError} If arguments are invalid |
| * @throws {Error} If `object` is not a member of this type |
| */ |
| public remove(object: ReflectionObject): Type; |
| |
| /** |
| * Tests if the specified id is reserved. |
| * @param id Id to test |
| * @returns `true` if reserved, otherwise `false` |
| */ |
| public isReservedId(id: number): boolean; |
| |
| /** |
| * Tests if the specified name is reserved. |
| * @param name Name to test |
| * @returns `true` if reserved, otherwise `false` |
| */ |
| public isReservedName(name: string): boolean; |
| |
| /** |
| * Creates a new message of this type using the specified properties. |
| * @param [properties] Properties to set |
| * @returns Message instance |
| */ |
| public create(properties?: { [k: string]: any }): Message<{}>; |
| |
| /** |
| * Sets up {@link Type#encode|encode}, {@link Type#decode|decode} and {@link Type#verify|verify}. |
| * @returns `this` |
| */ |
| public setup(): Type; |
| |
| /** |
| * Encodes a message of this type. Does not implicitly {@link Type#verify|verify} messages. |
| * @param message Message instance or plain object |
| * @param [writer] Writer to encode to |
| * @returns writer |
| */ |
| public encode(message: (Message<{}>|{ [k: string]: any }), writer?: Writer): Writer; |
| |
| /** |
| * Encodes a message of this type preceeded by its byte length as a varint. Does not implicitly {@link Type#verify|verify} messages. |
| * @param message Message instance or plain object |
| * @param [writer] Writer to encode to |
| * @returns writer |
| */ |
| public encodeDelimited(message: (Message<{}>|{ [k: string]: any }), writer?: Writer): Writer; |
| |
| /** |
| * Decodes a message of this type. |
| * @param reader Reader or buffer to decode from |
| * @param [length] Length of the message, if known beforehand |
| * @returns Decoded message |
| * @throws {Error} If the payload is not a reader or valid buffer |
| * @throws {util.ProtocolError<{}>} If required fields are missing |
| */ |
| public decode(reader: (Reader|Uint8Array), length?: number): Message<{}>; |
| |
| /** |
| * Decodes a message of this type preceeded by its byte length as a varint. |
| * @param reader Reader or buffer to decode from |
| * @returns Decoded message |
| * @throws {Error} If the payload is not a reader or valid buffer |
| * @throws {util.ProtocolError} If required fields are missing |
| */ |
| public decodeDelimited(reader: (Reader|Uint8Array)): Message<{}>; |
| |
| /** |
| * Verifies that field values are valid and that required fields are present. |
| * @param message Plain object to verify |
| * @returns `null` if valid, otherwise the reason why it is not |
| */ |
| public verify(message: { [k: string]: any }): (null|string); |
| |
| /** |
| * Creates a new message of this type from a plain object. Also converts values to their respective internal types. |
| * @param object Plain object to convert |
| * @returns Message instance |
| */ |
| public fromObject(object: { [k: string]: any }): Message<{}>; |
| |
| /** |
| * Creates a plain object from a message of this type. Also converts values to other types if specified. |
| * @param message Message instance |
| * @param [options] Conversion options |
| * @returns Plain object |
| */ |
| public toObject(message: Message<{}>, options?: IConversionOptions): { [k: string]: any }; |
| |
| /** |
| * Type decorator (TypeScript). |
| * @param [typeName] Type name, defaults to the constructor's name |
| * @returns Decorator function |
| */ |
| public static d<T extends Message<T>>(typeName?: string): TypeDecorator<T>; |
| } |
| |
| /** Message type descriptor. */ |
| export interface IType extends INamespace { |
| |
| /** Oneof descriptors */ |
| oneofs?: { [k: string]: IOneOf }; |
| |
| /** Field descriptors */ |
| fields: { [k: string]: IField }; |
| |
| /** Extension ranges */ |
| extensions?: number[][]; |
| |
| /** Reserved ranges */ |
| reserved?: number[][]; |
| |
| /** Whether a legacy group or not */ |
| group?: boolean; |
| } |
| |
| /** Conversion options as used by {@link Type#toObject} and {@link Message.toObject}. */ |
| export interface IConversionOptions { |
| |
| /** |
| * Long conversion type. |
| * Valid values are `String` and `Number` (the global types). |
| * Defaults to copy the present value, which is a possibly unsafe number without and a {@link Long} with a long library. |
| */ |
| longs?: Function; |
| |
| /** |
| * Enum value conversion type. |
| * Only valid value is `String` (the global type). |
| * Defaults to copy the present value, which is the numeric id. |
| */ |
| enums?: Function; |
| |
| /** |
| * Bytes value conversion type. |
| * Valid values are `Array` and (a base64 encoded) `String` (the global types). |
| * Defaults to copy the present value, which usually is a Buffer under node and an Uint8Array in the browser. |
| */ |
| bytes?: Function; |
| |
| /** Also sets default values on the resulting object */ |
| defaults?: boolean; |
| |
| /** Sets empty arrays for missing repeated fields even if `defaults=false` */ |
| arrays?: boolean; |
| |
| /** Sets empty objects for missing map fields even if `defaults=false` */ |
| objects?: boolean; |
| |
| /** Includes virtual oneof properties set to the present field's name, if any */ |
| oneofs?: boolean; |
| |
| /** Performs additional JSON compatibility conversions, i.e. NaN and Infinity to strings */ |
| json?: boolean; |
| } |
| |
| /** |
| * Decorator function as returned by {@link Type.d} (TypeScript). |
| * @param target Target constructor |
| */ |
| type TypeDecorator<T extends Message<T>> = (target: Constructor<T>) => void; |
| |
| /** Common type constants. */ |
| export namespace types { |
| |
| /** Basic type wire types. */ |
| const basic: { |
| "double": number, |
| "float": number, |
| "int32": number, |
| "uint32": number, |
| "sint32": number, |
| "fixed32": number, |
| "sfixed32": number, |
| "int64": number, |
| "uint64": number, |
| "sint64": number, |
| "fixed64": number, |
| "sfixed64": number, |
| "bool": number, |
| "string": number, |
| "bytes": number |
| }; |
| |
| /** Basic type defaults. */ |
| const defaults: { |
| "double": number, |
| "float": number, |
| "int32": number, |
| "uint32": number, |
| "sint32": number, |
| "fixed32": number, |
| "sfixed32": number, |
| "int64": number, |
| "uint64": number, |
| "sint64": number, |
| "fixed64": number, |
| "sfixed64": number, |
| "bool": boolean, |
| "string": string, |
| "bytes": number[], |
| "message": null |
| }; |
| |
| /** Basic long type wire types. */ |
| const long: { |
| "int64": number, |
| "uint64": number, |
| "sint64": number, |
| "fixed64": number, |
| "sfixed64": number |
| }; |
| |
| /** Allowed types for map keys with their associated wire type. */ |
| const mapKey: { |
| "int32": number, |
| "uint32": number, |
| "sint32": number, |
| "fixed32": number, |
| "sfixed32": number, |
| "int64": number, |
| "uint64": number, |
| "sint64": number, |
| "fixed64": number, |
| "sfixed64": number, |
| "bool": number, |
| "string": number |
| }; |
| |
| /** Allowed types for packed repeated fields with their associated wire type. */ |
| const packed: { |
| "double": number, |
| "float": number, |
| "int32": number, |
| "uint32": number, |
| "sint32": number, |
| "fixed32": number, |
| "sfixed32": number, |
| "int64": number, |
| "uint64": number, |
| "sint64": number, |
| "fixed64": number, |
| "sfixed64": number, |
| "bool": number |
| }; |
| } |
| |
| /** Constructor type. */ |
| export interface Constructor<T> extends Function { |
| new(...params: any[]): T; prototype: T; |
| } |
| |
| /** Properties type. */ |
| type Properties<T> = { [P in keyof T]?: T[P] }; |
| |
| /** |
| * Any compatible Buffer instance. |
| * This is a minimal stand-alone definition of a Buffer instance. The actual type is that exported by node's typings. |
| */ |
| export interface Buffer extends Uint8Array { |
| } |
| |
| /** |
| * Any compatible Long instance. |
| * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js. |
| */ |
| export interface Long { |
| |
| /** Low bits */ |
| low: number; |
| |
| /** High bits */ |
| high: number; |
| |
| /** Whether unsigned or not */ |
| unsigned: boolean; |
| } |
| |
| /** |
| * A OneOf getter as returned by {@link util.oneOfGetter}. |
| * @returns Set field name, if any |
| */ |
| type OneOfGetter = () => (string|undefined); |
| |
| /** |
| * A OneOf setter as returned by {@link util.oneOfSetter}. |
| * @param value Field name |
| */ |
| type OneOfSetter = (value: (string|undefined)) => void; |
| |
| /** Various utility functions. */ |
| export namespace util { |
| |
| /** Helper class for working with the low and high bits of a 64 bit value. */ |
| class LongBits { |
| |
| /** |
| * Constructs new long bits. |
| * @param lo Low 32 bits, unsigned |
| * @param hi High 32 bits, unsigned |
| */ |
| constructor(lo: number, hi: number); |
| |
| /** Low bits. */ |
| public lo: number; |
| |
| /** High bits. */ |
| public hi: number; |
| |
| /** Zero bits. */ |
| public static zero: util.LongBits; |
| |
| /** Zero hash. */ |
| public static zeroHash: string; |
| |
| /** |
| * Constructs new long bits from the specified number. |
| * @param value Value |
| * @returns Instance |
| */ |
| public static fromNumber(value: number): util.LongBits; |
| |
| /** |
| * Constructs new long bits from a number, long or string. |
| * @param value Value |
| * @returns Instance |
| */ |
| public static from(value: (Long|number|string)): util.LongBits; |
| |
| /** |
| * Converts this long bits to a possibly unsafe JavaScript number. |
| * @param [unsigned=false] Whether unsigned or not |
| * @returns Possibly unsafe number |
| */ |
| public toNumber(unsigned?: boolean): number; |
| |
| /** |
| * Converts this long bits to a long. |
| * @param [unsigned=false] Whether unsigned or not |
| * @returns Long |
| */ |
| public toLong(unsigned?: boolean): Long; |
| |
| /** |
| * Constructs new long bits from the specified 8 characters long hash. |
| * @param hash Hash |
| * @returns Bits |
| */ |
| public static fromHash(hash: string): util.LongBits; |
| |
| /** |
| * Converts this long bits to a 8 characters long hash. |
| * @returns Hash |
| */ |
| public toHash(): string; |
| |
| /** |
| * Zig-zag encodes this long bits. |
| * @returns `this` |
| */ |
| public zzEncode(): util.LongBits; |
| |
| /** |
| * Zig-zag decodes this long bits. |
| * @returns `this` |
| */ |
| public zzDecode(): util.LongBits; |
| |
| /** |
| * Calculates the length of this longbits when encoded as a varint. |
| * @returns Length |
| */ |
| public length(): number; |
| } |
| |
| /** Whether running within node or not. */ |
| let isNode: boolean; |
| |
| /** Global object reference. */ |
| let global: object; |
| |
| /** An immuable empty array. */ |
| const emptyArray: any[]; |
| |
| /** An immutable empty object. */ |
| const emptyObject: object; |
| |
| /** |
| * Tests if the specified value is an integer. |
| * @param value Value to test |
| * @returns `true` if the value is an integer |
| */ |
| function isInteger(value: any): boolean; |
| |
| /** |
| * Tests if the specified value is a string. |
| * @param value Value to test |
| * @returns `true` if the value is a string |
| */ |
| function isString(value: any): boolean; |
| |
| /** |
| * Tests if the specified value is a non-null object. |
| * @param value Value to test |
| * @returns `true` if the value is a non-null object |
| */ |
| function isObject(value: any): boolean; |
| |
| /** |
| * Checks if a property on a message is considered to be present. |
| * This is an alias of {@link util.isSet}. |
| * @param obj Plain object or message instance |
| * @param prop Property name |
| * @returns `true` if considered to be present, otherwise `false` |
| */ |
| function isset(obj: object, prop: string): boolean; |
| |
| /** |
| * Checks if a property on a message is considered to be present. |
| * @param obj Plain object or message instance |
| * @param prop Property name |
| * @returns `true` if considered to be present, otherwise `false` |
| */ |
| function isSet(obj: object, prop: string): boolean; |
| |
| /** Node's Buffer class if available. */ |
| let Buffer: Constructor<Buffer>; |
| |
| /** |
| * Creates a new buffer of whatever type supported by the environment. |
| * @param [sizeOrArray=0] Buffer size or number array |
| * @returns Buffer |
| */ |
| function newBuffer(sizeOrArray?: (number|number[])): (Uint8Array|Buffer); |
| |
| /** Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`. */ |
| let Array: Constructor<Uint8Array>; |
| |
| /** Long.js's Long class if available. */ |
| let Long: Constructor<Long>; |
| |
| /** Regular expression used to verify 2 bit (`bool`) map keys. */ |
| const key2Re: RegExp; |
| |
| /** Regular expression used to verify 32 bit (`int32` etc.) map keys. */ |
| const key32Re: RegExp; |
| |
| /** Regular expression used to verify 64 bit (`int64` etc.) map keys. */ |
| const key64Re: RegExp; |
| |
| /** |
| * Converts a number or long to an 8 characters long hash string. |
| * @param value Value to convert |
| * @returns Hash |
| */ |
| function longToHash(value: (Long|number)): string; |
| |
| /** |
| * Converts an 8 characters long hash string to a long or number. |
| * @param hash Hash |
| * @param [unsigned=false] Whether unsigned or not |
| * @returns Original value |
| */ |
| function longFromHash(hash: string, unsigned?: boolean): (Long|number); |
| |
| /** |
| * Merges the properties of the source object into the destination object. |
| * @param dst Destination object |
| * @param src Source object |
| * @param [ifNotSet=false] Merges only if the key is not already set |
| * @returns Destination object |
| */ |
| function merge(dst: { [k: string]: any }, src: { [k: string]: any }, ifNotSet?: boolean): { [k: string]: any }; |
| |
| /** |
| * Converts the first character of a string to lower case. |
| * @param str String to convert |
| * @returns Converted string |
| */ |
| function lcFirst(str: string): string; |
| |
| /** |
| * Creates a custom error constructor. |
| * @param name Error name |
| * @returns Custom error constructor |
| */ |
| function newError(name: string): Constructor<Error>; |
| |
| /** Error subclass indicating a protocol specifc error. */ |
| class ProtocolError<T extends Message<T>> extends Error { |
| |
| /** |
| * Constructs a new protocol error. |
| * @param message Error message |
| * @param [properties] Additional properties |
| */ |
| constructor(message: string, properties?: { [k: string]: any }); |
| |
| /** So far decoded message instance. */ |
| public instance: Message<T>; |
| } |
| |
| /** |
| * Builds a getter for a oneof's present field name. |
| * @param fieldNames Field names |
| * @returns Unbound getter |
| */ |
| function oneOfGetter(fieldNames: string[]): OneOfGetter; |
| |
| /** |
| * Builds a setter for a oneof's present field name. |
| * @param fieldNames Field names |
| * @returns Unbound setter |
| */ |
| function oneOfSetter(fieldNames: string[]): OneOfSetter; |
| |
| /** |
| * Default conversion options used for {@link Message#toJSON} implementations. |
| * |
| * These options are close to proto3's JSON mapping with the exception that internal types like Any are handled just like messages. More precisely: |
| * |
| * - Longs become strings |
| * - Enums become string keys |
| * - Bytes become base64 encoded strings |
| * - (Sub-)Messages become plain objects |
| * - Maps become plain objects with all string keys |
| * - Repeated fields become arrays |
| * - NaN and Infinity for float and double fields become strings |
| * |
| * @see https://developers.google.com/protocol-buffers/docs/proto3?hl=en#json |
| */ |
| let toJSONOptions: IConversionOptions; |
| |
| /** Node's fs module if available. */ |
| let fs: { [k: string]: any }; |
| |
| /** |
| * Converts an object's values to an array. |
| * @param object Object to convert |
| * @returns Converted array |
| */ |
| function toArray(object: { [k: string]: any }): any[]; |
| |
| /** |
| * Converts an array of keys immediately followed by their respective value to an object, omitting undefined values. |
| * @param array Array to convert |
| * @returns Converted object |
| */ |
| function toObject(array: any[]): { [k: string]: any }; |
| |
| /** |
| * Tests whether the specified name is a reserved word in JS. |
| * @param name Name to test |
| * @returns `true` if reserved, otherwise `false` |
| */ |
| function isReserved(name: string): boolean; |
| |
| /** |
| * Returns a safe property accessor for the specified property name. |
| * @param prop Property name |
| * @returns Safe accessor |
| */ |
| function safeProp(prop: string): string; |
| |
| /** |
| * Converts the first character of a string to upper case. |
| * @param str String to convert |
| * @returns Converted string |
| */ |
| function ucFirst(str: string): string; |
| |
| /** |
| * Converts a string to camel case. |
| * @param str String to convert |
| * @returns Converted string |
| */ |
| function camelCase(str: string): string; |
| |
| /** |
| * Compares reflected fields by id. |
| * @param a First field |
| * @param b Second field |
| * @returns Comparison value |
| */ |
| function compareFieldsById(a: Field, b: Field): number; |
| |
| /** |
| * Decorator helper for types (TypeScript). |
| * @param ctor Constructor function |
| * @param [typeName] Type name, defaults to the constructor's name |
| * @returns Reflected type |
| */ |
| function decorateType<T extends Message<T>>(ctor: Constructor<T>, typeName?: string): Type; |
| |
| /** |
| * Decorator helper for enums (TypeScript). |
| * @param object Enum object |
| * @returns Reflected enum |
| */ |
| function decorateEnum(object: object): Enum; |
| |
| /** |
| * Sets the value of a property by property path. If a value already exists, it is turned to an array |
| * @param dst Destination object |
| * @param path dot '.' delimited path of the property to set |
| * @param value the value to set |
| * @returns Destination object |
| */ |
| function setProperty(dst: { [k: string]: any }, path: string, value: object): { [k: string]: any }; |
| |
| /** Decorator root (TypeScript). */ |
| let decorateRoot: Root; |
| |
| /** |
| * Returns a promise from a node-style callback function. |
| * @param fn Function to call |
| * @param ctx Function context |
| * @param params Function arguments |
| * @returns Promisified function |
| */ |
| function asPromise(fn: asPromiseCallback, ctx: any, ...params: any[]): Promise<any>; |
| |
| /** A minimal base64 implementation for number arrays. */ |
| namespace base64 { |
| |
| /** |
| * Calculates the byte length of a base64 encoded string. |
| * @param string Base64 encoded string |
| * @returns Byte length |
| */ |
| function length(string: string): number; |
| |
| /** |
| * Encodes a buffer to a base64 encoded string. |
| * @param buffer Source buffer |
| * @param start Source start |
| * @param end Source end |
| * @returns Base64 encoded string |
| */ |
| function encode(buffer: Uint8Array, start: number, end: number): string; |
| |
| /** |
| * Decodes a base64 encoded string to a buffer. |
| * @param string Source string |
| * @param buffer Destination buffer |
| * @param offset Destination offset |
| * @returns Number of bytes written |
| * @throws {Error} If encoding is invalid |
| */ |
| function decode(string: string, buffer: Uint8Array, offset: number): number; |
| |
| /** |
| * Tests if the specified string appears to be base64 encoded. |
| * @param string String to test |
| * @returns `true` if probably base64 encoded, otherwise false |
| */ |
| function test(string: string): boolean; |
| } |
| |
| /** |
| * Begins generating a function. |
| * @param functionParams Function parameter names |
| * @param [functionName] Function name if not anonymous |
| * @returns Appender that appends code to the function's body |
| */ |
| function codegen(functionParams: string[], functionName?: string): Codegen; |
| |
| namespace codegen { |
| |
| /** When set to `true`, codegen will log generated code to console. Useful for debugging. */ |
| let verbose: boolean; |
| } |
| |
| /** |
| * Begins generating a function. |
| * @param [functionName] Function name if not anonymous |
| * @returns Appender that appends code to the function's body |
| */ |
| function codegen(functionName?: string): Codegen; |
| |
| /** A minimal event emitter. */ |
| class EventEmitter { |
| |
| /** Constructs a new event emitter instance. */ |
| constructor(); |
| |
| /** |
| * Registers an event listener. |
| * @param evt Event name |
| * @param fn Listener |
| * @param [ctx] Listener context |
| * @returns `this` |
| */ |
| public on(evt: string, fn: EventEmitterListener, ctx?: any): this; |
| |
| /** |
| * Removes an event listener or any matching listeners if arguments are omitted. |
| * @param [evt] Event name. Removes all listeners if omitted. |
| * @param [fn] Listener to remove. Removes all listeners of `evt` if omitted. |
| * @returns `this` |
| */ |
| public off(evt?: string, fn?: EventEmitterListener): this; |
| |
| /** |
| * Emits an event by calling its listeners with the specified arguments. |
| * @param evt Event name |
| * @param args Arguments |
| * @returns `this` |
| */ |
| public emit(evt: string, ...args: any[]): this; |
| } |
| |
| /** Reads / writes floats / doubles from / to buffers. */ |
| namespace float { |
| |
| /** |
| * Writes a 32 bit float to a buffer using little endian byte order. |
| * @param val Value to write |
| * @param buf Target buffer |
| * @param pos Target buffer offset |
| */ |
| function writeFloatLE(val: number, buf: Uint8Array, pos: number): void; |
| |
| /** |
| * Writes a 32 bit float to a buffer using big endian byte order. |
| * @param val Value to write |
| * @param buf Target buffer |
| * @param pos Target buffer offset |
| */ |
| function writeFloatBE(val: number, buf: Uint8Array, pos: number): void; |
| |
| /** |
| * Reads a 32 bit float from a buffer using little endian byte order. |
| * @param buf Source buffer |
| * @param pos Source buffer offset |
| * @returns Value read |
| */ |
| function readFloatLE(buf: Uint8Array, pos: number): number; |
| |
| /** |
| * Reads a 32 bit float from a buffer using big endian byte order. |
| * @param buf Source buffer |
| * @param pos Source buffer offset |
| * @returns Value read |
| */ |
| function readFloatBE(buf: Uint8Array, pos: number): number; |
| |
| /** |
| * Writes a 64 bit double to a buffer using little endian byte order. |
| * @param val Value to write |
| * @param buf Target buffer |
| * @param pos Target buffer offset |
| */ |
| function writeDoubleLE(val: number, buf: Uint8Array, pos: number): void; |
| |
| /** |
| * Writes a 64 bit double to a buffer using big endian byte order. |
| * @param val Value to write |
| * @param buf Target buffer |
| * @param pos Target buffer offset |
| */ |
| function writeDoubleBE(val: number, buf: Uint8Array, pos: number): void; |
| |
| /** |
| * Reads a 64 bit double from a buffer using little endian byte order. |
| * @param buf Source buffer |
| * @param pos Source buffer offset |
| * @returns Value read |
| */ |
| function readDoubleLE(buf: Uint8Array, pos: number): number; |
| |
| /** |
| * Reads a 64 bit double from a buffer using big endian byte order. |
| * @param buf Source buffer |
| * @param pos Source buffer offset |
| * @returns Value read |
| */ |
| function readDoubleBE(buf: Uint8Array, pos: number): number; |
| } |
| |
| /** |
| * Fetches the contents of a file. |
| * @param filename File path or url |
| * @param options Fetch options |
| * @param callback Callback function |
| */ |
| function fetch(filename: string, options: IFetchOptions, callback: FetchCallback): void; |
| |
| /** |
| * Fetches the contents of a file. |
| * @param path File path or url |
| * @param callback Callback function |
| */ |
| function fetch(path: string, callback: FetchCallback): void; |
| |
| /** |
| * Fetches the contents of a file. |
| * @param path File path or url |
| * @param [options] Fetch options |
| * @returns Promise |
| */ |
| function fetch(path: string, options?: IFetchOptions): Promise<(string|Uint8Array)>; |
| |
| /** |
| * Requires a module only if available. |
| * @param moduleName Module to require |
| * @returns Required module if available and not empty, otherwise `null` |
| */ |
| function inquire(moduleName: string): object; |
| |
| /** A minimal path module to resolve Unix, Windows and URL paths alike. */ |
| namespace path { |
| |
| /** |
| * Tests if the specified path is absolute. |
| * @param path Path to test |
| * @returns `true` if path is absolute |
| */ |
| function isAbsolute(path: string): boolean; |
| |
| /** |
| * Normalizes the specified path. |
| * @param path Path to normalize |
| * @returns Normalized path |
| */ |
| function normalize(path: string): string; |
| |
| /** |
| * Resolves the specified include path against the specified origin path. |
| * @param originPath Path to the origin file |
| * @param includePath Include path relative to origin path |
| * @param [alreadyNormalized=false] `true` if both paths are already known to be normalized |
| * @returns Path to the include file |
| */ |
| function resolve(originPath: string, includePath: string, alreadyNormalized?: boolean): string; |
| } |
| |
| /** |
| * A general purpose buffer pool. |
| * @param alloc Allocator |
| * @param slice Slicer |
| * @param [size=8192] Slab size |
| * @returns Pooled allocator |
| */ |
| function pool(alloc: PoolAllocator, slice: PoolSlicer, size?: number): PoolAllocator; |
| |
| /** A minimal UTF8 implementation for number arrays. */ |
| namespace utf8 { |
| |
| /** |
| * Calculates the UTF8 byte length of a string. |
| * @param string String |
| * @returns Byte length |
| */ |
| function length(string: string): number; |
| |
| /** |
| * Reads UTF8 bytes as a string. |
| * @param buffer Source buffer |
| * @param start Source start |
| * @param end Source end |
| * @returns String read |
| */ |
| function read(buffer: Uint8Array, start: number, end: number): string; |
| |
| /** |
| * Writes a string as UTF8 bytes. |
| * @param string Source string |
| * @param buffer Destination buffer |
| * @param offset Destination offset |
| * @returns Bytes written |
| */ |
| function write(string: string, buffer: Uint8Array, offset: number): number; |
| } |
| } |
| |
| /** |
| * Generates a verifier specific to the specified message type. |
| * @param mtype Message type |
| * @returns Codegen instance |
| */ |
| export function verifier(mtype: Type): Codegen; |
| |
| /** Wrappers for common types. */ |
| export const wrappers: { [k: string]: IWrapper }; |
| |
| /** |
| * From object converter part of an {@link IWrapper}. |
| * @param object Plain object |
| * @returns Message instance |
| */ |
| type WrapperFromObjectConverter = (this: Type, object: { [k: string]: any }) => Message<{}>; |
| |
| /** |
| * To object converter part of an {@link IWrapper}. |
| * @param message Message instance |
| * @param [options] Conversion options |
| * @returns Plain object |
| */ |
| type WrapperToObjectConverter = (this: Type, message: Message<{}>, options?: IConversionOptions) => { [k: string]: any }; |
| |
| /** Common type wrapper part of {@link wrappers}. */ |
| export interface IWrapper { |
| |
| /** From object converter */ |
| fromObject?: WrapperFromObjectConverter; |
| |
| /** To object converter */ |
| toObject?: WrapperToObjectConverter; |
| } |
| |
| /** Wire format writer using `Uint8Array` if available, otherwise `Array`. */ |
| export class Writer { |
| |
| /** Constructs a new writer instance. */ |
| constructor(); |
| |
| /** Current length. */ |
| public len: number; |
| |
| /** Operations head. */ |
| public head: object; |
| |
| /** Operations tail */ |
| public tail: object; |
| |
| /** Linked forked states. */ |
| public states: (object|null); |
| |
| /** |
| * Creates a new writer. |
| * @returns A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer} |
| */ |
| public static create(): (BufferWriter|Writer); |
| |
| /** |
| * Allocates a buffer of the specified size. |
| * @param size Buffer size |
| * @returns Buffer |
| */ |
| public static alloc(size: number): Uint8Array; |
| |
| /** |
| * Writes an unsigned 32 bit value as a varint. |
| * @param value Value to write |
| * @returns `this` |
| */ |
| public uint32(value: number): Writer; |
| |
| /** |
| * Writes a signed 32 bit value as a varint. |
| * @param value Value to write |
| * @returns `this` |
| */ |
| public int32(value: number): Writer; |
| |
| /** |
| * Writes a 32 bit value as a varint, zig-zag encoded. |
| * @param value Value to write |
| * @returns `this` |
| */ |
| public sint32(value: number): Writer; |
| |
| /** |
| * Writes an unsigned 64 bit value as a varint. |
| * @param value Value to write |
| * @returns `this` |
| * @throws {TypeError} If `value` is a string and no long library is present. |
| */ |
| public uint64(value: (Long|number|string)): Writer; |
| |
| /** |
| * Writes a signed 64 bit value as a varint. |
| * @param value Value to write |
| * @returns `this` |
| * @throws {TypeError} If `value` is a string and no long library is present. |
| */ |
| public int64(value: (Long|number|string)): Writer; |
| |
| /** |
| * Writes a signed 64 bit value as a varint, zig-zag encoded. |
| * @param value Value to write |
| * @returns `this` |
| * @throws {TypeError} If `value` is a string and no long library is present. |
| */ |
| public sint64(value: (Long|number|string)): Writer; |
| |
| /** |
| * Writes a boolish value as a varint. |
| * @param value Value to write |
| * @returns `this` |
| */ |
| public bool(value: boolean): Writer; |
| |
| /** |
| * Writes an unsigned 32 bit value as fixed 32 bits. |
| * @param value Value to write |
| * @returns `this` |
| */ |
| public fixed32(value: number): Writer; |
| |
| /** |
| * Writes a signed 32 bit value as fixed 32 bits. |
| * @param value Value to write |
| * @returns `this` |
| */ |
| public sfixed32(value: number): Writer; |
| |
| /** |
| * Writes an unsigned 64 bit value as fixed 64 bits. |
| * @param value Value to write |
| * @returns `this` |
| * @throws {TypeError} If `value` is a string and no long library is present. |
| */ |
| public fixed64(value: (Long|number|string)): Writer; |
| |
| /** |
| * Writes a signed 64 bit value as fixed 64 bits. |
| * @param value Value to write |
| * @returns `this` |
| * @throws {TypeError} If `value` is a string and no long library is present. |
| */ |
| public sfixed64(value: (Long|number|string)): Writer; |
| |
| /** |
| * Writes a float (32 bit). |
| * @param value Value to write |
| * @returns `this` |
| */ |
| public float(value: number): Writer; |
| |
| /** |
| * Writes a double (64 bit float). |
| * @param value Value to write |
| * @returns `this` |
| */ |
| public double(value: number): Writer; |
| |
| /** |
| * Writes a sequence of bytes. |
| * @param value Buffer or base64 encoded string to write |
| * @returns `this` |
| */ |
| public bytes(value: (Uint8Array|string)): Writer; |
| |
| /** |
| * Writes a string. |
| * @param value Value to write |
| * @returns `this` |
| */ |
| public string(value: string): Writer; |
| |
| /** |
| * Forks this writer's state by pushing it to a stack. |
| * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state. |
| * @returns `this` |
| */ |
| public fork(): Writer; |
| |
| /** |
| * Resets this instance to the last state. |
| * @returns `this` |
| */ |
| public reset(): Writer; |
| |
| /** |
| * Resets to the last state and appends the fork state's current write length as a varint followed by its operations. |
| * @returns `this` |
| */ |
| public ldelim(): Writer; |
| |
| /** |
| * Finishes the write operation. |
| * @returns Finished buffer |
| */ |
| public finish(): Uint8Array; |
| } |
| |
| /** Wire format writer using node buffers. */ |
| export class BufferWriter extends Writer { |
| |
| /** Constructs a new buffer writer instance. */ |
| constructor(); |
| |
| /** |
| * Allocates a buffer of the specified size. |
| * @param size Buffer size |
| * @returns Buffer |
| */ |
| public static alloc(size: number): Buffer; |
| |
| /** |
| * Finishes the write operation. |
| * @returns Finished buffer |
| */ |
| public finish(): Buffer; |
| } |
| |
| /** |
| * Callback as used by {@link util.asPromise}. |
| * @param error Error, if any |
| * @param params Additional arguments |
| */ |
| type asPromiseCallback = (error: (Error|null), ...params: any[]) => void; |
| |
| /** |
| * Appends code to the function's body or finishes generation. |
| * @param [formatStringOrScope] Format string or, to finish the function, an object of additional scope variables, if any |
| * @param [formatParams] Format parameters |
| * @returns Itself or the generated function if finished |
| * @throws {Error} If format parameter counts do not match |
| */ |
| type Codegen = (formatStringOrScope?: (string|{ [k: string]: any }), ...formatParams: any[]) => (Codegen|Function); |
| |
| /** |
| * Event listener as used by {@link util.EventEmitter}. |
| * @param args Arguments |
| */ |
| type EventEmitterListener = (...args: any[]) => void; |
| |
| /** |
| * Node-style callback as used by {@link util.fetch}. |
| * @param error Error, if any, otherwise `null` |
| * @param [contents] File contents, if there hasn't been an error |
| */ |
| type FetchCallback = (error: Error, contents?: string) => void; |
| |
| /** Options as used by {@link util.fetch}. */ |
| export interface IFetchOptions { |
| |
| /** Whether expecting a binary response */ |
| binary?: boolean; |
| |
| /** If `true`, forces the use of XMLHttpRequest */ |
| xhr?: boolean; |
| } |
| |
| /** |
| * An allocator as used by {@link util.pool}. |
| * @param size Buffer size |
| * @returns Buffer |
| */ |
| type PoolAllocator = (size: number) => Uint8Array; |
| |
| /** |
| * A slicer as used by {@link util.pool}. |
| * @param start Start offset |
| * @param end End offset |
| * @returns Buffer slice |
| */ |
| type PoolSlicer = (this: Uint8Array, start: number, end: number) => Uint8Array; |