diff --git a/README.md b/README.md index 18b9b7d4..102e7b24 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,8 @@ [![npm](https://img.shields.io/npm/dm/protoc-gen-ts)](https://www.npmjs.com/package/protoc-gen-ts?activeTab=versions) [![npm](https://opencollective.com/protoc-gen-ts/tiers/backer/badge.svg?label=Backer&color=brightgreen)](https://opencollective.com/protoc-gen-ts) -Aim of this protoc plugin is to make usage of protocol buffers easy in Javascript/Typescript by taking modern approaches. -This plugin generates plain **TypeScript** files that can be used with ESM, AMD, UMD, and CommonJS module systems. +Aim of this protoc plugin is to make usage of protocol buffers easy in Javascript/Typescript by taking a modern approach. +This plugin generates plain **TypeScript** sources that can be used in ESM, AMD, UMD, and CommonJS module system. ## Key Differences @@ -15,12 +15,10 @@ This plugin generates plain **TypeScript** files that can be used with ESM, AMD, - Enums as **enums**. - Messages within a **namespace** if the proto has a **package** directive. (can be controlled via --ts_opt=no_namespace) - **fromObject** and **toObject** methods to work with json data. -- Supports gRPC Node and gRPC Web [#102](https://github.com/thesayyn/protoc-gen-ts/pull/102) +- Support for gRPC Node and gRPC Web (Work-in-progress) [#102](https://github.com/thesayyn/protoc-gen-ts/pull/102) - You get what you define in proto files. No such prefixes as "getField" or "getFieldList". - Generates bindings with either as-is names (`message.field_name`) or JSON-compatible names (`message.fieldName`). -*If you have repeated field named `users`, then you will get a `getter` named `users` not `getUsersList` - ## Example ```proto diff --git a/package.json b/package.json index 79ac801d..eb701a02 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "protoc-gen-ts", "description": "Compile protocol buffers descriptors to Typescript.", - "version": "0.8.4", + "version": "0.8.5", "license": "MIT", "author": { "email": "thesayyn@gmail.com", diff --git a/src/compiler/descriptor.ts b/src/compiler/descriptor.ts index ec9e1cc4..1858562b 100644 --- a/src/compiler/descriptor.ts +++ b/src/compiler/descriptor.ts @@ -22,7 +22,7 @@ export class FileDescriptorSet extends pb_1.Message { pb_1.Message.setRepeatedWrapperField(this, 1, value); } static fromObject(data: { - file: ReturnType[]; + file?: ReturnType[]; }): FileDescriptorSet { const message = new FileDescriptorSet({ file: data.file.map(item => FileDescriptorProto.fromObject(item)) @@ -31,17 +31,18 @@ export class FileDescriptorSet extends pb_1.Message { } toObject() { const data: { - file: ReturnType[]; - } = { - file: this.file.map((item: FileDescriptorProto) => item.toObject()) - }; + file?: ReturnType[]; + } = {}; + if (this.file != null) { + data.file = this.file.map((item: FileDescriptorProto) => item.toObject()); + } return data; } serialize(): Uint8Array; serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.file !== undefined) + if (this.file.length) writer.writeRepeatedMessage(1, this.file, (item: FileDescriptorProto) => item.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -111,31 +112,37 @@ export class FileDescriptorProto extends pb_1.Message { } } get name() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set name(value: string) { pb_1.Message.setField(this, 1, value); } + get has_name() { + return pb_1.Message.getField(this, 1) != null; + } get package() { - return pb_1.Message.getField(this, 2) as string; + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; } set package(value: string) { pb_1.Message.setField(this, 2, value); } + get has_package() { + return pb_1.Message.getField(this, 2) != null; + } get dependency() { - return pb_1.Message.getField(this, 3) as string[]; + return pb_1.Message.getFieldWithDefault(this, 3, []) as string[]; } set dependency(value: string[]) { pb_1.Message.setField(this, 3, value); } get public_dependency() { - return pb_1.Message.getField(this, 10) as number[]; + return pb_1.Message.getFieldWithDefault(this, 10, []) as number[]; } set public_dependency(value: number[]) { pb_1.Message.setField(this, 10, value); } get weak_dependency() { - return pb_1.Message.getField(this, 11) as number[]; + return pb_1.Message.getFieldWithDefault(this, 11, []) as number[]; } set weak_dependency(value: number[]) { pb_1.Message.setField(this, 11, value); @@ -170,28 +177,37 @@ export class FileDescriptorProto extends pb_1.Message { set options(value: FileOptions) { pb_1.Message.setWrapperField(this, 8, value); } + get has_options() { + return pb_1.Message.getField(this, 8) != null; + } get source_code_info() { return pb_1.Message.getWrapperField(this, SourceCodeInfo, 9) as SourceCodeInfo; } set source_code_info(value: SourceCodeInfo) { pb_1.Message.setWrapperField(this, 9, value); } + get has_source_code_info() { + return pb_1.Message.getField(this, 9) != null; + } get syntax() { - return pb_1.Message.getField(this, 12) as string; + return pb_1.Message.getFieldWithDefault(this, 12, "") as string; } set syntax(value: string) { pb_1.Message.setField(this, 12, value); } + get has_syntax() { + return pb_1.Message.getField(this, 12) != null; + } static fromObject(data: { name?: string; package?: string; dependency: string[]; public_dependency: number[]; weak_dependency: number[]; - message_type: ReturnType[]; - enum_type: ReturnType[]; - service: ReturnType[]; - extension: ReturnType[]; + message_type?: ReturnType[]; + enum_type?: ReturnType[]; + service?: ReturnType[]; + extension?: ReturnType[]; options?: ReturnType; source_code_info?: ReturnType; syntax?: string; @@ -229,21 +245,17 @@ export class FileDescriptorProto extends pb_1.Message { dependency: string[]; public_dependency: number[]; weak_dependency: number[]; - message_type: ReturnType[]; - enum_type: ReturnType[]; - service: ReturnType[]; - extension: ReturnType[]; + message_type?: ReturnType[]; + enum_type?: ReturnType[]; + service?: ReturnType[]; + extension?: ReturnType[]; options?: ReturnType; source_code_info?: ReturnType; syntax?: string; } = { dependency: this.dependency, public_dependency: this.public_dependency, - weak_dependency: this.weak_dependency, - message_type: this.message_type.map((item: DescriptorProto) => item.toObject()), - enum_type: this.enum_type.map((item: EnumDescriptorProto) => item.toObject()), - service: this.service.map((item: ServiceDescriptorProto) => item.toObject()), - extension: this.extension.map((item: FieldDescriptorProto) => item.toObject()) + weak_dependency: this.weak_dependency }; if (this.name != null) { data.name = this.name; @@ -251,6 +263,18 @@ export class FileDescriptorProto extends pb_1.Message { if (this.package != null) { data.package = this.package; } + if (this.message_type != null) { + data.message_type = this.message_type.map((item: DescriptorProto) => item.toObject()); + } + if (this.enum_type != null) { + data.enum_type = this.enum_type.map((item: EnumDescriptorProto) => item.toObject()); + } + if (this.service != null) { + data.service = this.service.map((item: ServiceDescriptorProto) => item.toObject()); + } + if (this.extension != null) { + data.extension = this.extension.map((item: FieldDescriptorProto) => item.toObject()); + } if (this.options != null) { data.options = this.options.toObject(); } @@ -266,29 +290,29 @@ export class FileDescriptorProto extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.name === "string" && this.name.length) + if (this.has_name && this.name.length) writer.writeString(1, this.name); - if (typeof this.package === "string" && this.package.length) + if (this.has_package && this.package.length) writer.writeString(2, this.package); - if (this.dependency !== undefined) + if (this.dependency.length) writer.writeRepeatedString(3, this.dependency); - if (this.public_dependency !== undefined) + if (this.public_dependency.length) writer.writeRepeatedInt32(10, this.public_dependency); - if (this.weak_dependency !== undefined) + if (this.weak_dependency.length) writer.writeRepeatedInt32(11, this.weak_dependency); - if (this.message_type !== undefined) + if (this.message_type.length) writer.writeRepeatedMessage(4, this.message_type, (item: DescriptorProto) => item.serialize(writer)); - if (this.enum_type !== undefined) + if (this.enum_type.length) writer.writeRepeatedMessage(5, this.enum_type, (item: EnumDescriptorProto) => item.serialize(writer)); - if (this.service !== undefined) + if (this.service.length) writer.writeRepeatedMessage(6, this.service, (item: ServiceDescriptorProto) => item.serialize(writer)); - if (this.extension !== undefined) + if (this.extension.length) writer.writeRepeatedMessage(7, this.extension, (item: FieldDescriptorProto) => item.serialize(writer)); - if (this.options !== undefined) + if (this.has_options) writer.writeMessage(8, this.options, () => this.options.serialize(writer)); - if (this.source_code_info !== undefined) + if (this.has_source_code_info) writer.writeMessage(9, this.source_code_info, () => this.source_code_info.serialize(writer)); - if (typeof this.syntax === "string" && this.syntax.length) + if (this.has_syntax && this.syntax.length) writer.writeString(12, this.syntax); if (!w) return writer.getResultBuffer(); @@ -381,11 +405,14 @@ export class DescriptorProto extends pb_1.Message { } } get name() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set name(value: string) { pb_1.Message.setField(this, 1, value); } + get has_name() { + return pb_1.Message.getField(this, 1) != null; + } get field() { return pb_1.Message.getRepeatedWrapperField(this, FieldDescriptorProto, 2) as FieldDescriptorProto[]; } @@ -428,6 +455,9 @@ export class DescriptorProto extends pb_1.Message { set options(value: MessageOptions) { pb_1.Message.setWrapperField(this, 7, value); } + get has_options() { + return pb_1.Message.getField(this, 7) != null; + } get reserved_range() { return pb_1.Message.getRepeatedWrapperField(this, DescriptorProto.ReservedRange, 9) as DescriptorProto.ReservedRange[]; } @@ -435,21 +465,21 @@ export class DescriptorProto extends pb_1.Message { pb_1.Message.setRepeatedWrapperField(this, 9, value); } get reserved_name() { - return pb_1.Message.getField(this, 10) as string[]; + return pb_1.Message.getFieldWithDefault(this, 10, []) as string[]; } set reserved_name(value: string[]) { pb_1.Message.setField(this, 10, value); } static fromObject(data: { name?: string; - field: ReturnType[]; - extension: ReturnType[]; - nested_type: ReturnType[]; - enum_type: ReturnType[]; - extension_range: ReturnType[]; - oneof_decl: ReturnType[]; + field?: ReturnType[]; + extension?: ReturnType[]; + nested_type?: ReturnType[]; + enum_type?: ReturnType[]; + extension_range?: ReturnType[]; + oneof_decl?: ReturnType[]; options?: ReturnType; - reserved_range: ReturnType[]; + reserved_range?: ReturnType[]; reserved_name: string[]; }): DescriptorProto { const message = new DescriptorProto({ @@ -473,56 +503,70 @@ export class DescriptorProto extends pb_1.Message { toObject() { const data: { name?: string; - field: ReturnType[]; - extension: ReturnType[]; - nested_type: ReturnType[]; - enum_type: ReturnType[]; - extension_range: ReturnType[]; - oneof_decl: ReturnType[]; + field?: ReturnType[]; + extension?: ReturnType[]; + nested_type?: ReturnType[]; + enum_type?: ReturnType[]; + extension_range?: ReturnType[]; + oneof_decl?: ReturnType[]; options?: ReturnType; - reserved_range: ReturnType[]; + reserved_range?: ReturnType[]; reserved_name: string[]; } = { - field: this.field.map((item: FieldDescriptorProto) => item.toObject()), - extension: this.extension.map((item: FieldDescriptorProto) => item.toObject()), - nested_type: this.nested_type.map((item: DescriptorProto) => item.toObject()), - enum_type: this.enum_type.map((item: EnumDescriptorProto) => item.toObject()), - extension_range: this.extension_range.map((item: DescriptorProto.ExtensionRange) => item.toObject()), - oneof_decl: this.oneof_decl.map((item: OneofDescriptorProto) => item.toObject()), - reserved_range: this.reserved_range.map((item: DescriptorProto.ReservedRange) => item.toObject()), reserved_name: this.reserved_name }; if (this.name != null) { data.name = this.name; } + if (this.field != null) { + data.field = this.field.map((item: FieldDescriptorProto) => item.toObject()); + } + if (this.extension != null) { + data.extension = this.extension.map((item: FieldDescriptorProto) => item.toObject()); + } + if (this.nested_type != null) { + data.nested_type = this.nested_type.map((item: DescriptorProto) => item.toObject()); + } + if (this.enum_type != null) { + data.enum_type = this.enum_type.map((item: EnumDescriptorProto) => item.toObject()); + } + if (this.extension_range != null) { + data.extension_range = this.extension_range.map((item: DescriptorProto.ExtensionRange) => item.toObject()); + } + if (this.oneof_decl != null) { + data.oneof_decl = this.oneof_decl.map((item: OneofDescriptorProto) => item.toObject()); + } if (this.options != null) { data.options = this.options.toObject(); } + if (this.reserved_range != null) { + data.reserved_range = this.reserved_range.map((item: DescriptorProto.ReservedRange) => item.toObject()); + } return data; } serialize(): Uint8Array; serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.name === "string" && this.name.length) + if (this.has_name && this.name.length) writer.writeString(1, this.name); - if (this.field !== undefined) + if (this.field.length) writer.writeRepeatedMessage(2, this.field, (item: FieldDescriptorProto) => item.serialize(writer)); - if (this.extension !== undefined) + if (this.extension.length) writer.writeRepeatedMessage(6, this.extension, (item: FieldDescriptorProto) => item.serialize(writer)); - if (this.nested_type !== undefined) + if (this.nested_type.length) writer.writeRepeatedMessage(3, this.nested_type, (item: DescriptorProto) => item.serialize(writer)); - if (this.enum_type !== undefined) + if (this.enum_type.length) writer.writeRepeatedMessage(4, this.enum_type, (item: EnumDescriptorProto) => item.serialize(writer)); - if (this.extension_range !== undefined) + if (this.extension_range.length) writer.writeRepeatedMessage(5, this.extension_range, (item: DescriptorProto.ExtensionRange) => item.serialize(writer)); - if (this.oneof_decl !== undefined) + if (this.oneof_decl.length) writer.writeRepeatedMessage(8, this.oneof_decl, (item: OneofDescriptorProto) => item.serialize(writer)); - if (this.options !== undefined) + if (this.has_options) writer.writeMessage(7, this.options, () => this.options.serialize(writer)); - if (this.reserved_range !== undefined) + if (this.reserved_range.length) writer.writeRepeatedMessage(9, this.reserved_range, (item: DescriptorProto.ReservedRange) => item.serialize(writer)); - if (this.reserved_name !== undefined) + if (this.reserved_name.length) writer.writeRepeatedString(10, this.reserved_name); if (!w) return writer.getResultBuffer(); @@ -598,23 +642,32 @@ export namespace DescriptorProto { } } get start() { - return pb_1.Message.getField(this, 1) as number; + return pb_1.Message.getFieldWithDefault(this, 1, 0) as number; } set start(value: number) { pb_1.Message.setField(this, 1, value); } + get has_start() { + return pb_1.Message.getField(this, 1) != null; + } get end() { - return pb_1.Message.getField(this, 2) as number; + return pb_1.Message.getFieldWithDefault(this, 2, 0) as number; } set end(value: number) { pb_1.Message.setField(this, 2, value); } + get has_end() { + return pb_1.Message.getField(this, 2) != null; + } get options() { return pb_1.Message.getWrapperField(this, ExtensionRangeOptions, 3) as ExtensionRangeOptions; } set options(value: ExtensionRangeOptions) { pb_1.Message.setWrapperField(this, 3, value); } + get has_options() { + return pb_1.Message.getField(this, 3) != null; + } static fromObject(data: { start?: number; end?: number; @@ -653,11 +706,11 @@ export namespace DescriptorProto { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.start !== undefined) + if (this.has_start) writer.writeInt32(1, this.start); - if (this.end !== undefined) + if (this.has_end) writer.writeInt32(2, this.end); - if (this.options !== undefined) + if (this.has_options) writer.writeMessage(3, this.options, () => this.options.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -707,17 +760,23 @@ export namespace DescriptorProto { } } get start() { - return pb_1.Message.getField(this, 1) as number; + return pb_1.Message.getFieldWithDefault(this, 1, 0) as number; } set start(value: number) { pb_1.Message.setField(this, 1, value); } + get has_start() { + return pb_1.Message.getField(this, 1) != null; + } get end() { - return pb_1.Message.getField(this, 2) as number; + return pb_1.Message.getFieldWithDefault(this, 2, 0) as number; } set end(value: number) { pb_1.Message.setField(this, 2, value); } + get has_end() { + return pb_1.Message.getField(this, 2) != null; + } static fromObject(data: { start?: number; end?: number; @@ -748,9 +807,9 @@ export namespace DescriptorProto { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.start !== undefined) + if (this.has_start) writer.writeInt32(1, this.start); - if (this.end !== undefined) + if (this.has_end) writer.writeInt32(2, this.end); if (!w) return writer.getResultBuffer(); @@ -798,7 +857,7 @@ export class ExtensionRangeOptions extends pb_1.Message { pb_1.Message.setRepeatedWrapperField(this, 999, value); } static fromObject(data: { - uninterpreted_option: ReturnType[]; + uninterpreted_option?: ReturnType[]; }): ExtensionRangeOptions { const message = new ExtensionRangeOptions({ uninterpreted_option: data.uninterpreted_option.map(item => UninterpretedOption.fromObject(item)) @@ -807,17 +866,18 @@ export class ExtensionRangeOptions extends pb_1.Message { } toObject() { const data: { - uninterpreted_option: ReturnType[]; - } = { - uninterpreted_option: this.uninterpreted_option.map((item: UninterpretedOption) => item.toObject()) - }; + uninterpreted_option?: ReturnType[]; + } = {}; + if (this.uninterpreted_option != null) { + data.uninterpreted_option = this.uninterpreted_option.map((item: UninterpretedOption) => item.toObject()); + } return data; } serialize(): Uint8Array; serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.uninterpreted_option !== undefined) + if (this.uninterpreted_option.length) writer.writeRepeatedMessage(999, this.uninterpreted_option, (item: UninterpretedOption) => item.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -897,71 +957,104 @@ export class FieldDescriptorProto extends pb_1.Message { } } get name() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set name(value: string) { pb_1.Message.setField(this, 1, value); } + get has_name() { + return pb_1.Message.getField(this, 1) != null; + } get number() { - return pb_1.Message.getField(this, 3) as number; + return pb_1.Message.getFieldWithDefault(this, 3, 0) as number; } set number(value: number) { pb_1.Message.setField(this, 3, value); } + get has_number() { + return pb_1.Message.getField(this, 3) != null; + } get label() { - return pb_1.Message.getField(this, 4) as FieldDescriptorProto.Label; + return pb_1.Message.getFieldWithDefault(this, 4, FieldDescriptorProto.Label.LABEL_OPTIONAL) as FieldDescriptorProto.Label; } set label(value: FieldDescriptorProto.Label) { pb_1.Message.setField(this, 4, value); } + get has_label() { + return pb_1.Message.getField(this, 4) != null; + } get type() { - return pb_1.Message.getField(this, 5) as FieldDescriptorProto.Type; + return pb_1.Message.getFieldWithDefault(this, 5, FieldDescriptorProto.Type.TYPE_DOUBLE) as FieldDescriptorProto.Type; } set type(value: FieldDescriptorProto.Type) { pb_1.Message.setField(this, 5, value); } + get has_type() { + return pb_1.Message.getField(this, 5) != null; + } get type_name() { - return pb_1.Message.getField(this, 6) as string; + return pb_1.Message.getFieldWithDefault(this, 6, "") as string; } set type_name(value: string) { pb_1.Message.setField(this, 6, value); } + get has_type_name() { + return pb_1.Message.getField(this, 6) != null; + } get extendee() { - return pb_1.Message.getField(this, 2) as string; + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; } set extendee(value: string) { pb_1.Message.setField(this, 2, value); } + get has_extendee() { + return pb_1.Message.getField(this, 2) != null; + } get default_value() { - return pb_1.Message.getField(this, 7) as string; + return pb_1.Message.getFieldWithDefault(this, 7, "") as string; } set default_value(value: string) { pb_1.Message.setField(this, 7, value); } + get has_default_value() { + return pb_1.Message.getField(this, 7) != null; + } get oneof_index() { - return pb_1.Message.getField(this, 9) as number; + return pb_1.Message.getFieldWithDefault(this, 9, 0) as number; } set oneof_index(value: number) { pb_1.Message.setField(this, 9, value); } + get has_oneof_index() { + return pb_1.Message.getField(this, 9) != null; + } get json_name() { - return pb_1.Message.getField(this, 10) as string; + return pb_1.Message.getFieldWithDefault(this, 10, "") as string; } set json_name(value: string) { pb_1.Message.setField(this, 10, value); } + get has_json_name() { + return pb_1.Message.getField(this, 10) != null; + } get options() { return pb_1.Message.getWrapperField(this, FieldOptions, 8) as FieldOptions; } set options(value: FieldOptions) { pb_1.Message.setWrapperField(this, 8, value); } + get has_options() { + return pb_1.Message.getField(this, 8) != null; + } get proto3_optional() { - return pb_1.Message.getField(this, 17) as boolean; + return pb_1.Message.getFieldWithDefault(this, 17, false) as boolean; } set proto3_optional(value: boolean) { pb_1.Message.setField(this, 17, value); } + get has_proto3_optional() { + return pb_1.Message.getField(this, 17) != null; + } static fromObject(data: { name?: string; number?: number; @@ -1064,27 +1157,27 @@ export class FieldDescriptorProto extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.name === "string" && this.name.length) + if (this.has_name && this.name.length) writer.writeString(1, this.name); - if (this.number !== undefined) + if (this.has_number) writer.writeInt32(3, this.number); - if (this.label !== undefined) + if (this.has_label) writer.writeEnum(4, this.label); - if (this.type !== undefined) + if (this.has_type) writer.writeEnum(5, this.type); - if (typeof this.type_name === "string" && this.type_name.length) + if (this.has_type_name && this.type_name.length) writer.writeString(6, this.type_name); - if (typeof this.extendee === "string" && this.extendee.length) + if (this.has_extendee && this.extendee.length) writer.writeString(2, this.extendee); - if (typeof this.default_value === "string" && this.default_value.length) + if (this.has_default_value && this.default_value.length) writer.writeString(7, this.default_value); - if (this.oneof_index !== undefined) + if (this.has_oneof_index) writer.writeInt32(9, this.oneof_index); - if (typeof this.json_name === "string" && this.json_name.length) + if (this.has_json_name && this.json_name.length) writer.writeString(10, this.json_name); - if (this.options !== undefined) + if (this.has_options) writer.writeMessage(8, this.options, () => this.options.serialize(writer)); - if (this.proto3_optional !== undefined) + if (this.has_proto3_optional) writer.writeBool(17, this.proto3_optional); if (!w) return writer.getResultBuffer(); @@ -1185,17 +1278,23 @@ export class OneofDescriptorProto extends pb_1.Message { } } get name() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set name(value: string) { pb_1.Message.setField(this, 1, value); } + get has_name() { + return pb_1.Message.getField(this, 1) != null; + } get options() { return pb_1.Message.getWrapperField(this, OneofOptions, 2) as OneofOptions; } set options(value: OneofOptions) { pb_1.Message.setWrapperField(this, 2, value); } + get has_options() { + return pb_1.Message.getField(this, 2) != null; + } static fromObject(data: { name?: string; options?: ReturnType; @@ -1226,9 +1325,9 @@ export class OneofDescriptorProto extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.name === "string" && this.name.length) + if (this.has_name && this.name.length) writer.writeString(1, this.name); - if (this.options !== undefined) + if (this.has_options) writer.writeMessage(2, this.options, () => this.options.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -1281,11 +1380,14 @@ export class EnumDescriptorProto extends pb_1.Message { } } get name() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set name(value: string) { pb_1.Message.setField(this, 1, value); } + get has_name() { + return pb_1.Message.getField(this, 1) != null; + } get value() { return pb_1.Message.getRepeatedWrapperField(this, EnumValueDescriptorProto, 2) as EnumValueDescriptorProto[]; } @@ -1298,6 +1400,9 @@ export class EnumDescriptorProto extends pb_1.Message { set options(value: EnumOptions) { pb_1.Message.setWrapperField(this, 3, value); } + get has_options() { + return pb_1.Message.getField(this, 3) != null; + } get reserved_range() { return pb_1.Message.getRepeatedWrapperField(this, EnumDescriptorProto.EnumReservedRange, 4) as EnumDescriptorProto.EnumReservedRange[]; } @@ -1305,16 +1410,16 @@ export class EnumDescriptorProto extends pb_1.Message { pb_1.Message.setRepeatedWrapperField(this, 4, value); } get reserved_name() { - return pb_1.Message.getField(this, 5) as string[]; + return pb_1.Message.getFieldWithDefault(this, 5, []) as string[]; } set reserved_name(value: string[]) { pb_1.Message.setField(this, 5, value); } static fromObject(data: { name?: string; - value: ReturnType[]; + value?: ReturnType[]; options?: ReturnType; - reserved_range: ReturnType[]; + reserved_range?: ReturnType[]; reserved_name: string[]; }): EnumDescriptorProto { const message = new EnumDescriptorProto({ @@ -1333,36 +1438,40 @@ export class EnumDescriptorProto extends pb_1.Message { toObject() { const data: { name?: string; - value: ReturnType[]; + value?: ReturnType[]; options?: ReturnType; - reserved_range: ReturnType[]; + reserved_range?: ReturnType[]; reserved_name: string[]; } = { - value: this.value.map((item: EnumValueDescriptorProto) => item.toObject()), - reserved_range: this.reserved_range.map((item: EnumDescriptorProto.EnumReservedRange) => item.toObject()), reserved_name: this.reserved_name }; if (this.name != null) { data.name = this.name; } + if (this.value != null) { + data.value = this.value.map((item: EnumValueDescriptorProto) => item.toObject()); + } if (this.options != null) { data.options = this.options.toObject(); } + if (this.reserved_range != null) { + data.reserved_range = this.reserved_range.map((item: EnumDescriptorProto.EnumReservedRange) => item.toObject()); + } return data; } serialize(): Uint8Array; serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.name === "string" && this.name.length) + if (this.has_name && this.name.length) writer.writeString(1, this.name); - if (this.value !== undefined) + if (this.value.length) writer.writeRepeatedMessage(2, this.value, (item: EnumValueDescriptorProto) => item.serialize(writer)); - if (this.options !== undefined) + if (this.has_options) writer.writeMessage(3, this.options, () => this.options.serialize(writer)); - if (this.reserved_range !== undefined) + if (this.reserved_range.length) writer.writeRepeatedMessage(4, this.reserved_range, (item: EnumDescriptorProto.EnumReservedRange) => item.serialize(writer)); - if (this.reserved_name !== undefined) + if (this.reserved_name.length) writer.writeRepeatedString(5, this.reserved_name); if (!w) return writer.getResultBuffer(); @@ -1419,17 +1528,23 @@ export namespace EnumDescriptorProto { } } get start() { - return pb_1.Message.getField(this, 1) as number; + return pb_1.Message.getFieldWithDefault(this, 1, 0) as number; } set start(value: number) { pb_1.Message.setField(this, 1, value); } + get has_start() { + return pb_1.Message.getField(this, 1) != null; + } get end() { - return pb_1.Message.getField(this, 2) as number; + return pb_1.Message.getFieldWithDefault(this, 2, 0) as number; } set end(value: number) { pb_1.Message.setField(this, 2, value); } + get has_end() { + return pb_1.Message.getField(this, 2) != null; + } static fromObject(data: { start?: number; end?: number; @@ -1460,9 +1575,9 @@ export namespace EnumDescriptorProto { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.start !== undefined) + if (this.has_start) writer.writeInt32(1, this.start); - if (this.end !== undefined) + if (this.has_end) writer.writeInt32(2, this.end); if (!w) return writer.getResultBuffer(); @@ -1514,23 +1629,32 @@ export class EnumValueDescriptorProto extends pb_1.Message { } } get name() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set name(value: string) { pb_1.Message.setField(this, 1, value); } + get has_name() { + return pb_1.Message.getField(this, 1) != null; + } get number() { - return pb_1.Message.getField(this, 2) as number; + return pb_1.Message.getFieldWithDefault(this, 2, 0) as number; } set number(value: number) { pb_1.Message.setField(this, 2, value); } + get has_number() { + return pb_1.Message.getField(this, 2) != null; + } get options() { return pb_1.Message.getWrapperField(this, EnumValueOptions, 3) as EnumValueOptions; } set options(value: EnumValueOptions) { pb_1.Message.setWrapperField(this, 3, value); } + get has_options() { + return pb_1.Message.getField(this, 3) != null; + } static fromObject(data: { name?: string; number?: number; @@ -1569,11 +1693,11 @@ export class EnumValueDescriptorProto extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.name === "string" && this.name.length) + if (this.has_name && this.name.length) writer.writeString(1, this.name); - if (this.number !== undefined) + if (this.has_number) writer.writeInt32(2, this.number); - if (this.options !== undefined) + if (this.has_options) writer.writeMessage(3, this.options, () => this.options.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -1625,11 +1749,14 @@ export class ServiceDescriptorProto extends pb_1.Message { } } get name() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set name(value: string) { pb_1.Message.setField(this, 1, value); } + get has_name() { + return pb_1.Message.getField(this, 1) != null; + } get method() { return pb_1.Message.getRepeatedWrapperField(this, MethodDescriptorProto, 2) as MethodDescriptorProto[]; } @@ -1642,9 +1769,12 @@ export class ServiceDescriptorProto extends pb_1.Message { set options(value: ServiceOptions) { pb_1.Message.setWrapperField(this, 3, value); } + get has_options() { + return pb_1.Message.getField(this, 3) != null; + } static fromObject(data: { name?: string; - method: ReturnType[]; + method?: ReturnType[]; options?: ReturnType; }): ServiceDescriptorProto { const message = new ServiceDescriptorProto({ @@ -1661,14 +1791,15 @@ export class ServiceDescriptorProto extends pb_1.Message { toObject() { const data: { name?: string; - method: ReturnType[]; + method?: ReturnType[]; options?: ReturnType; - } = { - method: this.method.map((item: MethodDescriptorProto) => item.toObject()) - }; + } = {}; if (this.name != null) { data.name = this.name; } + if (this.method != null) { + data.method = this.method.map((item: MethodDescriptorProto) => item.toObject()); + } if (this.options != null) { data.options = this.options.toObject(); } @@ -1678,11 +1809,11 @@ export class ServiceDescriptorProto extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.name === "string" && this.name.length) + if (this.has_name && this.name.length) writer.writeString(1, this.name); - if (this.method !== undefined) + if (this.method.length) writer.writeRepeatedMessage(2, this.method, (item: MethodDescriptorProto) => item.serialize(writer)); - if (this.options !== undefined) + if (this.has_options) writer.writeMessage(3, this.options, () => this.options.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -1748,41 +1879,59 @@ export class MethodDescriptorProto extends pb_1.Message { } } get name() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set name(value: string) { pb_1.Message.setField(this, 1, value); } + get has_name() { + return pb_1.Message.getField(this, 1) != null; + } get input_type() { - return pb_1.Message.getField(this, 2) as string; + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; } set input_type(value: string) { pb_1.Message.setField(this, 2, value); } + get has_input_type() { + return pb_1.Message.getField(this, 2) != null; + } get output_type() { - return pb_1.Message.getField(this, 3) as string; + return pb_1.Message.getFieldWithDefault(this, 3, "") as string; } set output_type(value: string) { pb_1.Message.setField(this, 3, value); } + get has_output_type() { + return pb_1.Message.getField(this, 3) != null; + } get options() { return pb_1.Message.getWrapperField(this, MethodOptions, 4) as MethodOptions; } set options(value: MethodOptions) { pb_1.Message.setWrapperField(this, 4, value); } + get has_options() { + return pb_1.Message.getField(this, 4) != null; + } get client_streaming() { return pb_1.Message.getFieldWithDefault(this, 5, false) as boolean; } set client_streaming(value: boolean) { pb_1.Message.setField(this, 5, value); } + get has_client_streaming() { + return pb_1.Message.getField(this, 5) != null; + } get server_streaming() { return pb_1.Message.getFieldWithDefault(this, 6, false) as boolean; } set server_streaming(value: boolean) { pb_1.Message.setField(this, 6, value); } + get has_server_streaming() { + return pb_1.Message.getField(this, 6) != null; + } static fromObject(data: { name?: string; input_type?: string; @@ -1845,17 +1994,17 @@ export class MethodDescriptorProto extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.name === "string" && this.name.length) + if (this.has_name && this.name.length) writer.writeString(1, this.name); - if (typeof this.input_type === "string" && this.input_type.length) + if (this.has_input_type && this.input_type.length) writer.writeString(2, this.input_type); - if (typeof this.output_type === "string" && this.output_type.length) + if (this.has_output_type && this.output_type.length) writer.writeString(3, this.output_type); - if (this.options !== undefined) + if (this.has_options) writer.writeMessage(4, this.options, () => this.options.serialize(writer)); - if (this.client_streaming !== undefined) + if (this.has_client_streaming) writer.writeBool(5, this.client_streaming); - if (this.server_streaming !== undefined) + if (this.has_server_streaming) writer.writeBool(6, this.server_streaming); if (!w) return writer.getResultBuffer(); @@ -1989,127 +2138,188 @@ export class FileOptions extends pb_1.Message { } } get java_package() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set java_package(value: string) { pb_1.Message.setField(this, 1, value); } + get has_java_package() { + return pb_1.Message.getField(this, 1) != null; + } get java_outer_classname() { - return pb_1.Message.getField(this, 8) as string; + return pb_1.Message.getFieldWithDefault(this, 8, "") as string; } set java_outer_classname(value: string) { pb_1.Message.setField(this, 8, value); } + get has_java_outer_classname() { + return pb_1.Message.getField(this, 8) != null; + } get java_multiple_files() { return pb_1.Message.getFieldWithDefault(this, 10, false) as boolean; } set java_multiple_files(value: boolean) { pb_1.Message.setField(this, 10, value); } + get has_java_multiple_files() { + return pb_1.Message.getField(this, 10) != null; + } /** @deprecated*/ get java_generate_equals_and_hash() { - return pb_1.Message.getField(this, 20) as boolean; + return pb_1.Message.getFieldWithDefault(this, 20, false) as boolean; } /** @deprecated*/ set java_generate_equals_and_hash(value: boolean) { pb_1.Message.setField(this, 20, value); } + /** @deprecated*/ + get has_java_generate_equals_and_hash() { + return pb_1.Message.getField(this, 20) != null; + } get java_string_check_utf8() { return pb_1.Message.getFieldWithDefault(this, 27, false) as boolean; } set java_string_check_utf8(value: boolean) { pb_1.Message.setField(this, 27, value); } + get has_java_string_check_utf8() { + return pb_1.Message.getField(this, 27) != null; + } get optimize_for() { return pb_1.Message.getFieldWithDefault(this, 9, FileOptions.OptimizeMode.SPEED) as FileOptions.OptimizeMode; } set optimize_for(value: FileOptions.OptimizeMode) { pb_1.Message.setField(this, 9, value); } + get has_optimize_for() { + return pb_1.Message.getField(this, 9) != null; + } get go_package() { - return pb_1.Message.getField(this, 11) as string; + return pb_1.Message.getFieldWithDefault(this, 11, "") as string; } set go_package(value: string) { pb_1.Message.setField(this, 11, value); } + get has_go_package() { + return pb_1.Message.getField(this, 11) != null; + } get cc_generic_services() { return pb_1.Message.getFieldWithDefault(this, 16, false) as boolean; } set cc_generic_services(value: boolean) { pb_1.Message.setField(this, 16, value); } + get has_cc_generic_services() { + return pb_1.Message.getField(this, 16) != null; + } get java_generic_services() { return pb_1.Message.getFieldWithDefault(this, 17, false) as boolean; } set java_generic_services(value: boolean) { pb_1.Message.setField(this, 17, value); } + get has_java_generic_services() { + return pb_1.Message.getField(this, 17) != null; + } get py_generic_services() { return pb_1.Message.getFieldWithDefault(this, 18, false) as boolean; } set py_generic_services(value: boolean) { pb_1.Message.setField(this, 18, value); } + get has_py_generic_services() { + return pb_1.Message.getField(this, 18) != null; + } get php_generic_services() { return pb_1.Message.getFieldWithDefault(this, 42, false) as boolean; } set php_generic_services(value: boolean) { pb_1.Message.setField(this, 42, value); } + get has_php_generic_services() { + return pb_1.Message.getField(this, 42) != null; + } get deprecated() { return pb_1.Message.getFieldWithDefault(this, 23, false) as boolean; } set deprecated(value: boolean) { pb_1.Message.setField(this, 23, value); } + get has_deprecated() { + return pb_1.Message.getField(this, 23) != null; + } get cc_enable_arenas() { return pb_1.Message.getFieldWithDefault(this, 31, true) as boolean; } set cc_enable_arenas(value: boolean) { pb_1.Message.setField(this, 31, value); } + get has_cc_enable_arenas() { + return pb_1.Message.getField(this, 31) != null; + } get objc_class_prefix() { - return pb_1.Message.getField(this, 36) as string; + return pb_1.Message.getFieldWithDefault(this, 36, "") as string; } set objc_class_prefix(value: string) { pb_1.Message.setField(this, 36, value); } + get has_objc_class_prefix() { + return pb_1.Message.getField(this, 36) != null; + } get csharp_namespace() { - return pb_1.Message.getField(this, 37) as string; + return pb_1.Message.getFieldWithDefault(this, 37, "") as string; } set csharp_namespace(value: string) { pb_1.Message.setField(this, 37, value); } + get has_csharp_namespace() { + return pb_1.Message.getField(this, 37) != null; + } get swift_prefix() { - return pb_1.Message.getField(this, 39) as string; + return pb_1.Message.getFieldWithDefault(this, 39, "") as string; } set swift_prefix(value: string) { pb_1.Message.setField(this, 39, value); } + get has_swift_prefix() { + return pb_1.Message.getField(this, 39) != null; + } get php_class_prefix() { - return pb_1.Message.getField(this, 40) as string; + return pb_1.Message.getFieldWithDefault(this, 40, "") as string; } set php_class_prefix(value: string) { pb_1.Message.setField(this, 40, value); } + get has_php_class_prefix() { + return pb_1.Message.getField(this, 40) != null; + } get php_namespace() { - return pb_1.Message.getField(this, 41) as string; + return pb_1.Message.getFieldWithDefault(this, 41, "") as string; } set php_namespace(value: string) { pb_1.Message.setField(this, 41, value); } + get has_php_namespace() { + return pb_1.Message.getField(this, 41) != null; + } get php_metadata_namespace() { - return pb_1.Message.getField(this, 44) as string; + return pb_1.Message.getFieldWithDefault(this, 44, "") as string; } set php_metadata_namespace(value: string) { pb_1.Message.setField(this, 44, value); } + get has_php_metadata_namespace() { + return pb_1.Message.getField(this, 44) != null; + } get ruby_package() { - return pb_1.Message.getField(this, 45) as string; + return pb_1.Message.getFieldWithDefault(this, 45, "") as string; } set ruby_package(value: string) { pb_1.Message.setField(this, 45, value); } + get has_ruby_package() { + return pb_1.Message.getField(this, 45) != null; + } get uninterpreted_option() { return pb_1.Message.getRepeatedWrapperField(this, UninterpretedOption, 999) as UninterpretedOption[]; } @@ -2137,7 +2347,7 @@ export class FileOptions extends pb_1.Message { php_namespace?: string; php_metadata_namespace?: string; ruby_package?: string; - uninterpreted_option: ReturnType[]; + uninterpreted_option?: ReturnType[]; }): FileOptions { const message = new FileOptions({ uninterpreted_option: data.uninterpreted_option.map(item => UninterpretedOption.fromObject(item)) @@ -2226,10 +2436,8 @@ export class FileOptions extends pb_1.Message { php_namespace?: string; php_metadata_namespace?: string; ruby_package?: string; - uninterpreted_option: ReturnType[]; - } = { - uninterpreted_option: this.uninterpreted_option.map((item: UninterpretedOption) => item.toObject()) - }; + uninterpreted_option?: ReturnType[]; + } = {}; if (this.java_package != null) { data.java_package = this.java_package; } @@ -2290,53 +2498,56 @@ export class FileOptions extends pb_1.Message { if (this.ruby_package != null) { data.ruby_package = this.ruby_package; } + if (this.uninterpreted_option != null) { + data.uninterpreted_option = this.uninterpreted_option.map((item: UninterpretedOption) => item.toObject()); + } return data; } serialize(): Uint8Array; serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.java_package === "string" && this.java_package.length) + if (this.has_java_package && this.java_package.length) writer.writeString(1, this.java_package); - if (typeof this.java_outer_classname === "string" && this.java_outer_classname.length) + if (this.has_java_outer_classname && this.java_outer_classname.length) writer.writeString(8, this.java_outer_classname); - if (this.java_multiple_files !== undefined) + if (this.has_java_multiple_files) writer.writeBool(10, this.java_multiple_files); - if (this.java_generate_equals_and_hash !== undefined) + if (this.has_java_generate_equals_and_hash) writer.writeBool(20, this.java_generate_equals_and_hash); - if (this.java_string_check_utf8 !== undefined) + if (this.has_java_string_check_utf8) writer.writeBool(27, this.java_string_check_utf8); - if (this.optimize_for !== undefined) + if (this.has_optimize_for) writer.writeEnum(9, this.optimize_for); - if (typeof this.go_package === "string" && this.go_package.length) + if (this.has_go_package && this.go_package.length) writer.writeString(11, this.go_package); - if (this.cc_generic_services !== undefined) + if (this.has_cc_generic_services) writer.writeBool(16, this.cc_generic_services); - if (this.java_generic_services !== undefined) + if (this.has_java_generic_services) writer.writeBool(17, this.java_generic_services); - if (this.py_generic_services !== undefined) + if (this.has_py_generic_services) writer.writeBool(18, this.py_generic_services); - if (this.php_generic_services !== undefined) + if (this.has_php_generic_services) writer.writeBool(42, this.php_generic_services); - if (this.deprecated !== undefined) + if (this.has_deprecated) writer.writeBool(23, this.deprecated); - if (this.cc_enable_arenas !== undefined) + if (this.has_cc_enable_arenas) writer.writeBool(31, this.cc_enable_arenas); - if (typeof this.objc_class_prefix === "string" && this.objc_class_prefix.length) + if (this.has_objc_class_prefix && this.objc_class_prefix.length) writer.writeString(36, this.objc_class_prefix); - if (typeof this.csharp_namespace === "string" && this.csharp_namespace.length) + if (this.has_csharp_namespace && this.csharp_namespace.length) writer.writeString(37, this.csharp_namespace); - if (typeof this.swift_prefix === "string" && this.swift_prefix.length) + if (this.has_swift_prefix && this.swift_prefix.length) writer.writeString(39, this.swift_prefix); - if (typeof this.php_class_prefix === "string" && this.php_class_prefix.length) + if (this.has_php_class_prefix && this.php_class_prefix.length) writer.writeString(40, this.php_class_prefix); - if (typeof this.php_namespace === "string" && this.php_namespace.length) + if (this.has_php_namespace && this.php_namespace.length) writer.writeString(41, this.php_namespace); - if (typeof this.php_metadata_namespace === "string" && this.php_metadata_namespace.length) + if (this.has_php_metadata_namespace && this.php_metadata_namespace.length) writer.writeString(44, this.php_metadata_namespace); - if (typeof this.ruby_package === "string" && this.ruby_package.length) + if (this.has_ruby_package && this.ruby_package.length) writer.writeString(45, this.ruby_package); - if (this.uninterpreted_option !== undefined) + if (this.uninterpreted_option.length) writer.writeRepeatedMessage(999, this.uninterpreted_option, (item: UninterpretedOption) => item.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -2462,24 +2673,36 @@ export class MessageOptions extends pb_1.Message { set message_set_wire_format(value: boolean) { pb_1.Message.setField(this, 1, value); } + get has_message_set_wire_format() { + return pb_1.Message.getField(this, 1) != null; + } get no_standard_descriptor_accessor() { return pb_1.Message.getFieldWithDefault(this, 2, false) as boolean; } set no_standard_descriptor_accessor(value: boolean) { pb_1.Message.setField(this, 2, value); } + get has_no_standard_descriptor_accessor() { + return pb_1.Message.getField(this, 2) != null; + } get deprecated() { return pb_1.Message.getFieldWithDefault(this, 3, false) as boolean; } set deprecated(value: boolean) { pb_1.Message.setField(this, 3, value); } + get has_deprecated() { + return pb_1.Message.getField(this, 3) != null; + } get map_entry() { - return pb_1.Message.getField(this, 7) as boolean; + return pb_1.Message.getFieldWithDefault(this, 7, false) as boolean; } set map_entry(value: boolean) { pb_1.Message.setField(this, 7, value); } + get has_map_entry() { + return pb_1.Message.getField(this, 7) != null; + } get uninterpreted_option() { return pb_1.Message.getRepeatedWrapperField(this, UninterpretedOption, 999) as UninterpretedOption[]; } @@ -2491,7 +2714,7 @@ export class MessageOptions extends pb_1.Message { no_standard_descriptor_accessor?: boolean; deprecated?: boolean; map_entry?: boolean; - uninterpreted_option: ReturnType[]; + uninterpreted_option?: ReturnType[]; }): MessageOptions { const message = new MessageOptions({ uninterpreted_option: data.uninterpreted_option.map(item => UninterpretedOption.fromObject(item)) @@ -2516,10 +2739,8 @@ export class MessageOptions extends pb_1.Message { no_standard_descriptor_accessor?: boolean; deprecated?: boolean; map_entry?: boolean; - uninterpreted_option: ReturnType[]; - } = { - uninterpreted_option: this.uninterpreted_option.map((item: UninterpretedOption) => item.toObject()) - }; + uninterpreted_option?: ReturnType[]; + } = {}; if (this.message_set_wire_format != null) { data.message_set_wire_format = this.message_set_wire_format; } @@ -2532,21 +2753,24 @@ export class MessageOptions extends pb_1.Message { if (this.map_entry != null) { data.map_entry = this.map_entry; } + if (this.uninterpreted_option != null) { + data.uninterpreted_option = this.uninterpreted_option.map((item: UninterpretedOption) => item.toObject()); + } return data; } serialize(): Uint8Array; serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.message_set_wire_format !== undefined) + if (this.has_message_set_wire_format) writer.writeBool(1, this.message_set_wire_format); - if (this.no_standard_descriptor_accessor !== undefined) + if (this.has_no_standard_descriptor_accessor) writer.writeBool(2, this.no_standard_descriptor_accessor); - if (this.deprecated !== undefined) + if (this.has_deprecated) writer.writeBool(3, this.deprecated); - if (this.map_entry !== undefined) + if (this.has_map_entry) writer.writeBool(7, this.map_entry); - if (this.uninterpreted_option !== undefined) + if (this.uninterpreted_option.length) writer.writeRepeatedMessage(999, this.uninterpreted_option, (item: UninterpretedOption) => item.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -2625,36 +2849,54 @@ export class FieldOptions extends pb_1.Message { set ctype(value: FieldOptions.CType) { pb_1.Message.setField(this, 1, value); } + get has_ctype() { + return pb_1.Message.getField(this, 1) != null; + } get packed() { - return pb_1.Message.getField(this, 2) as boolean; + return pb_1.Message.getFieldWithDefault(this, 2, false) as boolean; } set packed(value: boolean) { pb_1.Message.setField(this, 2, value); } + get has_packed() { + return pb_1.Message.getField(this, 2) != null; + } get jstype() { return pb_1.Message.getFieldWithDefault(this, 6, FieldOptions.JSType.JS_NORMAL) as FieldOptions.JSType; } set jstype(value: FieldOptions.JSType) { pb_1.Message.setField(this, 6, value); } + get has_jstype() { + return pb_1.Message.getField(this, 6) != null; + } get lazy() { return pb_1.Message.getFieldWithDefault(this, 5, false) as boolean; } set lazy(value: boolean) { pb_1.Message.setField(this, 5, value); } + get has_lazy() { + return pb_1.Message.getField(this, 5) != null; + } get deprecated() { return pb_1.Message.getFieldWithDefault(this, 3, false) as boolean; } set deprecated(value: boolean) { pb_1.Message.setField(this, 3, value); } + get has_deprecated() { + return pb_1.Message.getField(this, 3) != null; + } get weak() { return pb_1.Message.getFieldWithDefault(this, 10, false) as boolean; } set weak(value: boolean) { pb_1.Message.setField(this, 10, value); } + get has_weak() { + return pb_1.Message.getField(this, 10) != null; + } get uninterpreted_option() { return pb_1.Message.getRepeatedWrapperField(this, UninterpretedOption, 999) as UninterpretedOption[]; } @@ -2668,7 +2910,7 @@ export class FieldOptions extends pb_1.Message { lazy?: boolean; deprecated?: boolean; weak?: boolean; - uninterpreted_option: ReturnType[]; + uninterpreted_option?: ReturnType[]; }): FieldOptions { const message = new FieldOptions({ uninterpreted_option: data.uninterpreted_option.map(item => UninterpretedOption.fromObject(item)) @@ -2701,10 +2943,8 @@ export class FieldOptions extends pb_1.Message { lazy?: boolean; deprecated?: boolean; weak?: boolean; - uninterpreted_option: ReturnType[]; - } = { - uninterpreted_option: this.uninterpreted_option.map((item: UninterpretedOption) => item.toObject()) - }; + uninterpreted_option?: ReturnType[]; + } = {}; if (this.ctype != null) { data.ctype = this.ctype; } @@ -2723,25 +2963,28 @@ export class FieldOptions extends pb_1.Message { if (this.weak != null) { data.weak = this.weak; } + if (this.uninterpreted_option != null) { + data.uninterpreted_option = this.uninterpreted_option.map((item: UninterpretedOption) => item.toObject()); + } return data; } serialize(): Uint8Array; serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.ctype !== undefined) + if (this.has_ctype) writer.writeEnum(1, this.ctype); - if (this.packed !== undefined) + if (this.has_packed) writer.writeBool(2, this.packed); - if (this.jstype !== undefined) + if (this.has_jstype) writer.writeEnum(6, this.jstype); - if (this.lazy !== undefined) + if (this.has_lazy) writer.writeBool(5, this.lazy); - if (this.deprecated !== undefined) + if (this.has_deprecated) writer.writeBool(3, this.deprecated); - if (this.weak !== undefined) + if (this.has_weak) writer.writeBool(10, this.weak); - if (this.uninterpreted_option !== undefined) + if (this.uninterpreted_option.length) writer.writeRepeatedMessage(999, this.uninterpreted_option, (item: UninterpretedOption) => item.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -2815,7 +3058,7 @@ export class OneofOptions extends pb_1.Message { pb_1.Message.setRepeatedWrapperField(this, 999, value); } static fromObject(data: { - uninterpreted_option: ReturnType[]; + uninterpreted_option?: ReturnType[]; }): OneofOptions { const message = new OneofOptions({ uninterpreted_option: data.uninterpreted_option.map(item => UninterpretedOption.fromObject(item)) @@ -2824,17 +3067,18 @@ export class OneofOptions extends pb_1.Message { } toObject() { const data: { - uninterpreted_option: ReturnType[]; - } = { - uninterpreted_option: this.uninterpreted_option.map((item: UninterpretedOption) => item.toObject()) - }; + uninterpreted_option?: ReturnType[]; + } = {}; + if (this.uninterpreted_option != null) { + data.uninterpreted_option = this.uninterpreted_option.map((item: UninterpretedOption) => item.toObject()); + } return data; } serialize(): Uint8Array; serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.uninterpreted_option !== undefined) + if (this.uninterpreted_option.length) writer.writeRepeatedMessage(999, this.uninterpreted_option, (item: UninterpretedOption) => item.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -2880,17 +3124,23 @@ export class EnumOptions extends pb_1.Message { } } get allow_alias() { - return pb_1.Message.getField(this, 2) as boolean; + return pb_1.Message.getFieldWithDefault(this, 2, false) as boolean; } set allow_alias(value: boolean) { pb_1.Message.setField(this, 2, value); } + get has_allow_alias() { + return pb_1.Message.getField(this, 2) != null; + } get deprecated() { return pb_1.Message.getFieldWithDefault(this, 3, false) as boolean; } set deprecated(value: boolean) { pb_1.Message.setField(this, 3, value); } + get has_deprecated() { + return pb_1.Message.getField(this, 3) != null; + } get uninterpreted_option() { return pb_1.Message.getRepeatedWrapperField(this, UninterpretedOption, 999) as UninterpretedOption[]; } @@ -2900,7 +3150,7 @@ export class EnumOptions extends pb_1.Message { static fromObject(data: { allow_alias?: boolean; deprecated?: boolean; - uninterpreted_option: ReturnType[]; + uninterpreted_option?: ReturnType[]; }): EnumOptions { const message = new EnumOptions({ uninterpreted_option: data.uninterpreted_option.map(item => UninterpretedOption.fromObject(item)) @@ -2917,27 +3167,28 @@ export class EnumOptions extends pb_1.Message { const data: { allow_alias?: boolean; deprecated?: boolean; - uninterpreted_option: ReturnType[]; - } = { - uninterpreted_option: this.uninterpreted_option.map((item: UninterpretedOption) => item.toObject()) - }; + uninterpreted_option?: ReturnType[]; + } = {}; if (this.allow_alias != null) { data.allow_alias = this.allow_alias; } if (this.deprecated != null) { data.deprecated = this.deprecated; } + if (this.uninterpreted_option != null) { + data.uninterpreted_option = this.uninterpreted_option.map((item: UninterpretedOption) => item.toObject()); + } return data; } serialize(): Uint8Array; serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.allow_alias !== undefined) + if (this.has_allow_alias) writer.writeBool(2, this.allow_alias); - if (this.deprecated !== undefined) + if (this.has_deprecated) writer.writeBool(3, this.deprecated); - if (this.uninterpreted_option !== undefined) + if (this.uninterpreted_option.length) writer.writeRepeatedMessage(999, this.uninterpreted_option, (item: UninterpretedOption) => item.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -2990,6 +3241,9 @@ export class EnumValueOptions extends pb_1.Message { set deprecated(value: boolean) { pb_1.Message.setField(this, 1, value); } + get has_deprecated() { + return pb_1.Message.getField(this, 1) != null; + } get uninterpreted_option() { return pb_1.Message.getRepeatedWrapperField(this, UninterpretedOption, 999) as UninterpretedOption[]; } @@ -2998,7 +3252,7 @@ export class EnumValueOptions extends pb_1.Message { } static fromObject(data: { deprecated?: boolean; - uninterpreted_option: ReturnType[]; + uninterpreted_option?: ReturnType[]; }): EnumValueOptions { const message = new EnumValueOptions({ uninterpreted_option: data.uninterpreted_option.map(item => UninterpretedOption.fromObject(item)) @@ -3011,22 +3265,23 @@ export class EnumValueOptions extends pb_1.Message { toObject() { const data: { deprecated?: boolean; - uninterpreted_option: ReturnType[]; - } = { - uninterpreted_option: this.uninterpreted_option.map((item: UninterpretedOption) => item.toObject()) - }; + uninterpreted_option?: ReturnType[]; + } = {}; if (this.deprecated != null) { data.deprecated = this.deprecated; } + if (this.uninterpreted_option != null) { + data.uninterpreted_option = this.uninterpreted_option.map((item: UninterpretedOption) => item.toObject()); + } return data; } serialize(): Uint8Array; serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.deprecated !== undefined) + if (this.has_deprecated) writer.writeBool(1, this.deprecated); - if (this.uninterpreted_option !== undefined) + if (this.uninterpreted_option.length) writer.writeRepeatedMessage(999, this.uninterpreted_option, (item: UninterpretedOption) => item.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -3076,6 +3331,9 @@ export class ServiceOptions extends pb_1.Message { set deprecated(value: boolean) { pb_1.Message.setField(this, 33, value); } + get has_deprecated() { + return pb_1.Message.getField(this, 33) != null; + } get uninterpreted_option() { return pb_1.Message.getRepeatedWrapperField(this, UninterpretedOption, 999) as UninterpretedOption[]; } @@ -3084,7 +3342,7 @@ export class ServiceOptions extends pb_1.Message { } static fromObject(data: { deprecated?: boolean; - uninterpreted_option: ReturnType[]; + uninterpreted_option?: ReturnType[]; }): ServiceOptions { const message = new ServiceOptions({ uninterpreted_option: data.uninterpreted_option.map(item => UninterpretedOption.fromObject(item)) @@ -3097,22 +3355,23 @@ export class ServiceOptions extends pb_1.Message { toObject() { const data: { deprecated?: boolean; - uninterpreted_option: ReturnType[]; - } = { - uninterpreted_option: this.uninterpreted_option.map((item: UninterpretedOption) => item.toObject()) - }; + uninterpreted_option?: ReturnType[]; + } = {}; if (this.deprecated != null) { data.deprecated = this.deprecated; } + if (this.uninterpreted_option != null) { + data.uninterpreted_option = this.uninterpreted_option.map((item: UninterpretedOption) => item.toObject()); + } return data; } serialize(): Uint8Array; serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.deprecated !== undefined) + if (this.has_deprecated) writer.writeBool(33, this.deprecated); - if (this.uninterpreted_option !== undefined) + if (this.uninterpreted_option.length) writer.writeRepeatedMessage(999, this.uninterpreted_option, (item: UninterpretedOption) => item.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -3166,12 +3425,18 @@ export class MethodOptions extends pb_1.Message { set deprecated(value: boolean) { pb_1.Message.setField(this, 33, value); } + get has_deprecated() { + return pb_1.Message.getField(this, 33) != null; + } get idempotency_level() { return pb_1.Message.getFieldWithDefault(this, 34, MethodOptions.IdempotencyLevel.IDEMPOTENCY_UNKNOWN) as MethodOptions.IdempotencyLevel; } set idempotency_level(value: MethodOptions.IdempotencyLevel) { pb_1.Message.setField(this, 34, value); } + get has_idempotency_level() { + return pb_1.Message.getField(this, 34) != null; + } get uninterpreted_option() { return pb_1.Message.getRepeatedWrapperField(this, UninterpretedOption, 999) as UninterpretedOption[]; } @@ -3181,7 +3446,7 @@ export class MethodOptions extends pb_1.Message { static fromObject(data: { deprecated?: boolean; idempotency_level?: MethodOptions.IdempotencyLevel; - uninterpreted_option: ReturnType[]; + uninterpreted_option?: ReturnType[]; }): MethodOptions { const message = new MethodOptions({ uninterpreted_option: data.uninterpreted_option.map(item => UninterpretedOption.fromObject(item)) @@ -3198,27 +3463,28 @@ export class MethodOptions extends pb_1.Message { const data: { deprecated?: boolean; idempotency_level?: MethodOptions.IdempotencyLevel; - uninterpreted_option: ReturnType[]; - } = { - uninterpreted_option: this.uninterpreted_option.map((item: UninterpretedOption) => item.toObject()) - }; + uninterpreted_option?: ReturnType[]; + } = {}; if (this.deprecated != null) { data.deprecated = this.deprecated; } if (this.idempotency_level != null) { data.idempotency_level = this.idempotency_level; } + if (this.uninterpreted_option != null) { + data.uninterpreted_option = this.uninterpreted_option.map((item: UninterpretedOption) => item.toObject()); + } return data; } serialize(): Uint8Array; serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.deprecated !== undefined) + if (this.has_deprecated) writer.writeBool(33, this.deprecated); - if (this.idempotency_level !== undefined) + if (this.has_idempotency_level) writer.writeEnum(34, this.idempotency_level); - if (this.uninterpreted_option !== undefined) + if (this.uninterpreted_option.length) writer.writeRepeatedMessage(999, this.uninterpreted_option, (item: UninterpretedOption) => item.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -3299,43 +3565,61 @@ export class UninterpretedOption extends pb_1.Message { pb_1.Message.setRepeatedWrapperField(this, 2, value); } get identifier_value() { - return pb_1.Message.getField(this, 3) as string; + return pb_1.Message.getFieldWithDefault(this, 3, "") as string; } set identifier_value(value: string) { pb_1.Message.setField(this, 3, value); } + get has_identifier_value() { + return pb_1.Message.getField(this, 3) != null; + } get positive_int_value() { - return pb_1.Message.getField(this, 4) as number; + return pb_1.Message.getFieldWithDefault(this, 4, 0) as number; } set positive_int_value(value: number) { pb_1.Message.setField(this, 4, value); } + get has_positive_int_value() { + return pb_1.Message.getField(this, 4) != null; + } get negative_int_value() { - return pb_1.Message.getField(this, 5) as number; + return pb_1.Message.getFieldWithDefault(this, 5, 0) as number; } set negative_int_value(value: number) { pb_1.Message.setField(this, 5, value); } + get has_negative_int_value() { + return pb_1.Message.getField(this, 5) != null; + } get double_value() { - return pb_1.Message.getField(this, 6) as number; + return pb_1.Message.getFieldWithDefault(this, 6, 0) as number; } set double_value(value: number) { pb_1.Message.setField(this, 6, value); } + get has_double_value() { + return pb_1.Message.getField(this, 6) != null; + } get string_value() { - return pb_1.Message.getField(this, 7) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 7, new Uint8Array()) as Uint8Array; } set string_value(value: Uint8Array) { pb_1.Message.setField(this, 7, value); } + get has_string_value() { + return pb_1.Message.getField(this, 7) != null; + } get aggregate_value() { - return pb_1.Message.getField(this, 8) as string; + return pb_1.Message.getFieldWithDefault(this, 8, "") as string; } set aggregate_value(value: string) { pb_1.Message.setField(this, 8, value); } + get has_aggregate_value() { + return pb_1.Message.getField(this, 8) != null; + } static fromObject(data: { - name: ReturnType[]; + name?: ReturnType[]; identifier_value?: string; positive_int_value?: number; negative_int_value?: number; @@ -3368,16 +3652,17 @@ export class UninterpretedOption extends pb_1.Message { } toObject() { const data: { - name: ReturnType[]; + name?: ReturnType[]; identifier_value?: string; positive_int_value?: number; negative_int_value?: number; double_value?: number; string_value?: Uint8Array; aggregate_value?: string; - } = { - name: this.name.map((item: UninterpretedOption.NamePart) => item.toObject()) - }; + } = {}; + if (this.name != null) { + data.name = this.name.map((item: UninterpretedOption.NamePart) => item.toObject()); + } if (this.identifier_value != null) { data.identifier_value = this.identifier_value; } @@ -3402,19 +3687,19 @@ export class UninterpretedOption extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.name !== undefined) + if (this.name.length) writer.writeRepeatedMessage(2, this.name, (item: UninterpretedOption.NamePart) => item.serialize(writer)); - if (typeof this.identifier_value === "string" && this.identifier_value.length) + if (this.has_identifier_value && this.identifier_value.length) writer.writeString(3, this.identifier_value); - if (this.positive_int_value !== undefined) + if (this.has_positive_int_value) writer.writeUint64(4, this.positive_int_value); - if (this.negative_int_value !== undefined) + if (this.has_negative_int_value) writer.writeInt64(5, this.negative_int_value); - if (this.double_value !== undefined) + if (this.has_double_value) writer.writeDouble(6, this.double_value); - if (this.string_value !== undefined) + if (this.has_string_value && this.string_value.length) writer.writeBytes(7, this.string_value); - if (typeof this.aggregate_value === "string" && this.aggregate_value.length) + if (this.has_aggregate_value && this.aggregate_value.length) writer.writeString(8, this.aggregate_value); if (!w) return writer.getResultBuffer(); @@ -3478,15 +3763,21 @@ export namespace UninterpretedOption { set name_part(value: string) { pb_1.Message.setField(this, 1, value); } + get has_name_part() { + return pb_1.Message.getField(this, 1) != null; + } get is_extension() { return pb_1.Message.getField(this, 2) as boolean; } set is_extension(value: boolean) { pb_1.Message.setField(this, 2, value); } + get has_is_extension() { + return pb_1.Message.getField(this, 2) != null; + } static fromObject(data: { - name_part: string; - is_extension: boolean; + name_part?: string; + is_extension?: boolean; }): NamePart { const message = new NamePart({ name_part: data.name_part, @@ -3496,21 +3787,24 @@ export namespace UninterpretedOption { } toObject() { const data: { - name_part: string; - is_extension: boolean; - } = { - name_part: this.name_part, - is_extension: this.is_extension - }; + name_part?: string; + is_extension?: boolean; + } = {}; + if (this.name_part != null) { + data.name_part = this.name_part; + } + if (this.is_extension != null) { + data.is_extension = this.is_extension; + } return data; } serialize(): Uint8Array; serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.name_part === "string" && this.name_part.length) + if (this.has_name_part && this.name_part.length) writer.writeString(1, this.name_part); - if (this.is_extension !== undefined) + if (this.has_is_extension) writer.writeBool(2, this.is_extension); if (!w) return writer.getResultBuffer(); @@ -3558,7 +3852,7 @@ export class SourceCodeInfo extends pb_1.Message { pb_1.Message.setRepeatedWrapperField(this, 1, value); } static fromObject(data: { - location: ReturnType[]; + location?: ReturnType[]; }): SourceCodeInfo { const message = new SourceCodeInfo({ location: data.location.map(item => SourceCodeInfo.Location.fromObject(item)) @@ -3567,17 +3861,18 @@ export class SourceCodeInfo extends pb_1.Message { } toObject() { const data: { - location: ReturnType[]; - } = { - location: this.location.map((item: SourceCodeInfo.Location) => item.toObject()) - }; + location?: ReturnType[]; + } = {}; + if (this.location != null) { + data.location = this.location.map((item: SourceCodeInfo.Location) => item.toObject()); + } return data; } serialize(): Uint8Array; serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.location !== undefined) + if (this.location.length) writer.writeRepeatedMessage(1, this.location, (item: SourceCodeInfo.Location) => item.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -3628,31 +3923,37 @@ export namespace SourceCodeInfo { } } get path() { - return pb_1.Message.getField(this, 1) as number[]; + return pb_1.Message.getFieldWithDefault(this, 1, []) as number[]; } set path(value: number[]) { pb_1.Message.setField(this, 1, value); } get span() { - return pb_1.Message.getField(this, 2) as number[]; + return pb_1.Message.getFieldWithDefault(this, 2, []) as number[]; } set span(value: number[]) { pb_1.Message.setField(this, 2, value); } get leading_comments() { - return pb_1.Message.getField(this, 3) as string; + return pb_1.Message.getFieldWithDefault(this, 3, "") as string; } set leading_comments(value: string) { pb_1.Message.setField(this, 3, value); } + get has_leading_comments() { + return pb_1.Message.getField(this, 3) != null; + } get trailing_comments() { - return pb_1.Message.getField(this, 4) as string; + return pb_1.Message.getFieldWithDefault(this, 4, "") as string; } set trailing_comments(value: string) { pb_1.Message.setField(this, 4, value); } + get has_trailing_comments() { + return pb_1.Message.getField(this, 4) != null; + } get leading_detached_comments() { - return pb_1.Message.getField(this, 6) as string[]; + return pb_1.Message.getFieldWithDefault(this, 6, []) as string[]; } set leading_detached_comments(value: string[]) { pb_1.Message.setField(this, 6, value); @@ -3701,15 +4002,15 @@ export namespace SourceCodeInfo { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.path !== undefined) + if (this.path.length) writer.writePackedInt32(1, this.path); - if (this.span !== undefined) + if (this.span.length) writer.writePackedInt32(2, this.span); - if (typeof this.leading_comments === "string" && this.leading_comments.length) + if (this.has_leading_comments && this.leading_comments.length) writer.writeString(3, this.leading_comments); - if (typeof this.trailing_comments === "string" && this.trailing_comments.length) + if (this.has_trailing_comments && this.trailing_comments.length) writer.writeString(4, this.trailing_comments); - if (this.leading_detached_comments !== undefined) + if (this.leading_detached_comments.length) writer.writeRepeatedString(6, this.leading_detached_comments); if (!w) return writer.getResultBuffer(); @@ -3766,7 +4067,7 @@ export class GeneratedCodeInfo extends pb_1.Message { pb_1.Message.setRepeatedWrapperField(this, 1, value); } static fromObject(data: { - annotation: ReturnType[]; + annotation?: ReturnType[]; }): GeneratedCodeInfo { const message = new GeneratedCodeInfo({ annotation: data.annotation.map(item => GeneratedCodeInfo.Annotation.fromObject(item)) @@ -3775,17 +4076,18 @@ export class GeneratedCodeInfo extends pb_1.Message { } toObject() { const data: { - annotation: ReturnType[]; - } = { - annotation: this.annotation.map((item: GeneratedCodeInfo.Annotation) => item.toObject()) - }; + annotation?: ReturnType[]; + } = {}; + if (this.annotation != null) { + data.annotation = this.annotation.map((item: GeneratedCodeInfo.Annotation) => item.toObject()); + } return data; } serialize(): Uint8Array; serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.annotation !== undefined) + if (this.annotation.length) writer.writeRepeatedMessage(1, this.annotation, (item: GeneratedCodeInfo.Annotation) => item.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -3836,29 +4138,38 @@ export namespace GeneratedCodeInfo { } } get path() { - return pb_1.Message.getField(this, 1) as number[]; + return pb_1.Message.getFieldWithDefault(this, 1, []) as number[]; } set path(value: number[]) { pb_1.Message.setField(this, 1, value); } get source_file() { - return pb_1.Message.getField(this, 2) as string; + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; } set source_file(value: string) { pb_1.Message.setField(this, 2, value); } + get has_source_file() { + return pb_1.Message.getField(this, 2) != null; + } get begin() { - return pb_1.Message.getField(this, 3) as number; + return pb_1.Message.getFieldWithDefault(this, 3, 0) as number; } set begin(value: number) { pb_1.Message.setField(this, 3, value); } + get has_begin() { + return pb_1.Message.getField(this, 3) != null; + } get end() { - return pb_1.Message.getField(this, 4) as number; + return pb_1.Message.getFieldWithDefault(this, 4, 0) as number; } set end(value: number) { pb_1.Message.setField(this, 4, value); } + get has_end() { + return pb_1.Message.getField(this, 4) != null; + } static fromObject(data: { path: number[]; source_file?: string; @@ -3903,13 +4214,13 @@ export namespace GeneratedCodeInfo { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.path !== undefined) + if (this.path.length) writer.writePackedInt32(1, this.path); - if (typeof this.source_file === "string" && this.source_file.length) + if (this.has_source_file && this.source_file.length) writer.writeString(2, this.source_file); - if (this.begin !== undefined) + if (this.has_begin) writer.writeInt32(3, this.begin); - if (this.end !== undefined) + if (this.has_end) writer.writeInt32(4, this.end); if (!w) return writer.getResultBuffer(); diff --git a/src/compiler/plugin.ts b/src/compiler/plugin.ts index fce0a5b1..1337adf4 100644 --- a/src/compiler/plugin.ts +++ b/src/compiler/plugin.ts @@ -31,29 +31,41 @@ export class Version extends pb_1.Message { } } get major() { - return pb_1.Message.getField(this, 1) as number; + return pb_1.Message.getFieldWithDefault(this, 1, 0) as number; } set major(value: number) { pb_1.Message.setField(this, 1, value); } + get has_major() { + return pb_1.Message.getField(this, 1) != null; + } get minor() { - return pb_1.Message.getField(this, 2) as number; + return pb_1.Message.getFieldWithDefault(this, 2, 0) as number; } set minor(value: number) { pb_1.Message.setField(this, 2, value); } + get has_minor() { + return pb_1.Message.getField(this, 2) != null; + } get patch() { - return pb_1.Message.getField(this, 3) as number; + return pb_1.Message.getFieldWithDefault(this, 3, 0) as number; } set patch(value: number) { pb_1.Message.setField(this, 3, value); } + get has_patch() { + return pb_1.Message.getField(this, 3) != null; + } get suffix() { - return pb_1.Message.getField(this, 4) as string; + return pb_1.Message.getFieldWithDefault(this, 4, "") as string; } set suffix(value: string) { pb_1.Message.setField(this, 4, value); } + get has_suffix() { + return pb_1.Message.getField(this, 4) != null; + } static fromObject(data: { major?: number; minor?: number; @@ -100,13 +112,13 @@ export class Version extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.major !== undefined) + if (this.has_major) writer.writeInt32(1, this.major); - if (this.minor !== undefined) + if (this.has_minor) writer.writeInt32(2, this.minor); - if (this.patch !== undefined) + if (this.has_patch) writer.writeInt32(3, this.patch); - if (typeof this.suffix === "string" && this.suffix.length) + if (this.has_suffix && this.suffix.length) writer.writeString(4, this.suffix); if (!w) return writer.getResultBuffer(); @@ -163,17 +175,20 @@ export class CodeGeneratorRequest extends pb_1.Message { } } get file_to_generate() { - return pb_1.Message.getField(this, 1) as string[]; + return pb_1.Message.getFieldWithDefault(this, 1, []) as string[]; } set file_to_generate(value: string[]) { pb_1.Message.setField(this, 1, value); } get parameter() { - return pb_1.Message.getField(this, 2) as string; + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; } set parameter(value: string) { pb_1.Message.setField(this, 2, value); } + get has_parameter() { + return pb_1.Message.getField(this, 2) != null; + } get proto_file() { return pb_1.Message.getRepeatedWrapperField(this, dependency_1.FileDescriptorProto, 15) as dependency_1.FileDescriptorProto[]; } @@ -186,10 +201,13 @@ export class CodeGeneratorRequest extends pb_1.Message { set compiler_version(value: Version) { pb_1.Message.setWrapperField(this, 3, value); } + get has_compiler_version() { + return pb_1.Message.getField(this, 3) != null; + } static fromObject(data: { file_to_generate: string[]; parameter?: string; - proto_file: ReturnType[]; + proto_file?: ReturnType[]; compiler_version?: ReturnType; }): CodeGeneratorRequest { const message = new CodeGeneratorRequest({ @@ -208,15 +226,17 @@ export class CodeGeneratorRequest extends pb_1.Message { const data: { file_to_generate: string[]; parameter?: string; - proto_file: ReturnType[]; + proto_file?: ReturnType[]; compiler_version?: ReturnType; } = { - file_to_generate: this.file_to_generate, - proto_file: this.proto_file.map((item: dependency_1.FileDescriptorProto) => item.toObject()) + file_to_generate: this.file_to_generate }; if (this.parameter != null) { data.parameter = this.parameter; } + if (this.proto_file != null) { + data.proto_file = this.proto_file.map((item: dependency_1.FileDescriptorProto) => item.toObject()); + } if (this.compiler_version != null) { data.compiler_version = this.compiler_version.toObject(); } @@ -226,13 +246,13 @@ export class CodeGeneratorRequest extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.file_to_generate !== undefined) + if (this.file_to_generate.length) writer.writeRepeatedString(1, this.file_to_generate); - if (typeof this.parameter === "string" && this.parameter.length) + if (this.has_parameter && this.parameter.length) writer.writeString(2, this.parameter); - if (this.proto_file !== undefined) + if (this.proto_file.length) writer.writeRepeatedMessage(15, this.proto_file, (item: dependency_1.FileDescriptorProto) => item.serialize(writer)); - if (this.compiler_version !== undefined) + if (this.has_compiler_version) writer.writeMessage(3, this.compiler_version, () => this.compiler_version.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -287,17 +307,23 @@ export class CodeGeneratorResponse extends pb_1.Message { } } get error() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set error(value: string) { pb_1.Message.setField(this, 1, value); } + get has_error() { + return pb_1.Message.getField(this, 1) != null; + } get supported_features() { - return pb_1.Message.getField(this, 2) as number; + return pb_1.Message.getFieldWithDefault(this, 2, 0) as number; } set supported_features(value: number) { pb_1.Message.setField(this, 2, value); } + get has_supported_features() { + return pb_1.Message.getField(this, 2) != null; + } get file() { return pb_1.Message.getRepeatedWrapperField(this, CodeGeneratorResponse.File, 15) as CodeGeneratorResponse.File[]; } @@ -307,7 +333,7 @@ export class CodeGeneratorResponse extends pb_1.Message { static fromObject(data: { error?: string; supported_features?: number; - file: ReturnType[]; + file?: ReturnType[]; }): CodeGeneratorResponse { const message = new CodeGeneratorResponse({ file: data.file.map(item => CodeGeneratorResponse.File.fromObject(item)) @@ -324,27 +350,28 @@ export class CodeGeneratorResponse extends pb_1.Message { const data: { error?: string; supported_features?: number; - file: ReturnType[]; - } = { - file: this.file.map((item: CodeGeneratorResponse.File) => item.toObject()) - }; + file?: ReturnType[]; + } = {}; if (this.error != null) { data.error = this.error; } if (this.supported_features != null) { data.supported_features = this.supported_features; } + if (this.file != null) { + data.file = this.file.map((item: CodeGeneratorResponse.File) => item.toObject()); + } return data; } serialize(): Uint8Array; serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.error === "string" && this.error.length) + if (this.has_error && this.error.length) writer.writeString(1, this.error); - if (this.supported_features !== undefined) + if (this.has_supported_features) writer.writeUint64(2, this.supported_features); - if (this.file !== undefined) + if (this.file.length) writer.writeRepeatedMessage(15, this.file, (item: CodeGeneratorResponse.File) => item.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -407,29 +434,41 @@ export namespace CodeGeneratorResponse { } } get name() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set name(value: string) { pb_1.Message.setField(this, 1, value); } + get has_name() { + return pb_1.Message.getField(this, 1) != null; + } get insertion_point() { - return pb_1.Message.getField(this, 2) as string; + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; } set insertion_point(value: string) { pb_1.Message.setField(this, 2, value); } + get has_insertion_point() { + return pb_1.Message.getField(this, 2) != null; + } get content() { - return pb_1.Message.getField(this, 15) as string; + return pb_1.Message.getFieldWithDefault(this, 15, "") as string; } set content(value: string) { pb_1.Message.setField(this, 15, value); } + get has_content() { + return pb_1.Message.getField(this, 15) != null; + } get generated_code_info() { return pb_1.Message.getWrapperField(this, dependency_1.GeneratedCodeInfo, 16) as dependency_1.GeneratedCodeInfo; } set generated_code_info(value: dependency_1.GeneratedCodeInfo) { pb_1.Message.setWrapperField(this, 16, value); } + get has_generated_code_info() { + return pb_1.Message.getField(this, 16) != null; + } static fromObject(data: { name?: string; insertion_point?: string; @@ -476,13 +515,13 @@ export namespace CodeGeneratorResponse { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.name === "string" && this.name.length) + if (this.has_name && this.name.length) writer.writeString(1, this.name); - if (typeof this.insertion_point === "string" && this.insertion_point.length) + if (this.has_insertion_point && this.insertion_point.length) writer.writeString(2, this.insertion_point); - if (typeof this.content === "string" && this.content.length) + if (this.has_content && this.content.length) writer.writeString(15, this.content); - if (this.generated_code_info !== undefined) + if (this.has_generated_code_info) writer.writeMessage(16, this.generated_code_info, () => this.generated_code_info.serialize(writer)); if (!w) return writer.getResultBuffer(); diff --git a/src/descriptor.ts b/src/descriptor.ts index 9b76fbc2..7060fd9f 100644 --- a/src/descriptor.ts +++ b/src/descriptor.ts @@ -19,6 +19,16 @@ function getFieldName(fieldDescriptor: descriptor.FieldDescriptorProto): string return fieldDescriptor.name; } +function getPrefixedFieldName(prefix: string, fieldDescriptor: descriptor.FieldDescriptorProto): string { + const fieldName = getFieldName(fieldDescriptor); + if (prefix.length == 0 || fieldName.length == 0) { + return fieldName; + } + return config.json_names + ? `${prefix}${fieldName.charAt(0).toUpperCase()}${fieldName.slice(1)}` + : `${prefix}_${fieldName}`; +} + /** * Returns a enum for the enum descriptor */ @@ -428,7 +438,11 @@ function createToObject( } } - if (field.isOptional(rootDescriptor, fieldDescriptor)) { + if ( + field.isOptional(rootDescriptor, fieldDescriptor) || + field.isMessage(fieldDescriptor) || + field.isRequiredWithoutExplicitDefault(rootDescriptor, fieldDescriptor) + ) { const propertyAccessor = ts.factory.createPropertyAccessExpression( ts.factory.createThis(), getFieldName(fieldDescriptor), @@ -539,14 +553,14 @@ function createMessageSignature( const childSignatures = []; for (const currentFieldDescriptor of messageDescriptor.field) { - if (currentFieldDescriptor.oneof_index !== index) { + if (!currentFieldDescriptor.has_oneof_index || currentFieldDescriptor.oneof_index !== index) { continue; } const members = []; for (const fieldDescriptor of messageDescriptor.field) { - if (fieldDescriptor.oneof_index != index) { + if (!fieldDescriptor.has_oneof_index || fieldDescriptor.oneof_index != index) { continue; } @@ -583,7 +597,7 @@ function createMessageSignature( const fieldSignatures = []; for (const fieldDescriptor of messageDescriptor.field) { - if (typeof fieldDescriptor.oneof_index !== "number") { + if (!fieldDescriptor.has_oneof_index) { fieldSignatures.push( comment.addDeprecatedJsDoc( ts.factory.createPropertySignature( @@ -670,7 +684,11 @@ function createPrimitiveMessageSignature( ts.factory.createPropertySignature( undefined, getFieldName(fieldDescriptor), - field.isOptional(rootDescriptor, fieldDescriptor) + ( + field.isOptional(rootDescriptor, fieldDescriptor) || + field.isMessage(fieldDescriptor) || + field.isRequiredWithoutExplicitDefault(rootDescriptor, fieldDescriptor) + ) ? ts.factory.createToken(ts.SyntaxKind.QuestionToken) : undefined, field.wrapRepeatedType(fieldType as ts.TypeNode, fieldDescriptor), @@ -946,33 +964,62 @@ function createGetterCall( type.getTypeReferenceExpr(rootDescriptor, fieldDescriptor.type_name), ts.factory.createNumericLiteral(fieldDescriptor.number), ]; + } else if ( + field.isMap(fieldDescriptor) || + field.isRequiredWithoutExplicitDefault(rootDescriptor, fieldDescriptor) + ) { + getterMethod = "getField"; + + args = [ + ts.factory.createThis(), + ts.factory.createNumericLiteral(fieldDescriptor.number), + ] } else { args = [ ts.factory.createThis(), ts.factory.createNumericLiteral(fieldDescriptor.number), ]; - if (fieldDescriptor.default_value) { - getterMethod = "getFieldWithDefault"; - let _default: ts.Expression; + getterMethod = "getFieldWithDefault"; + let _default: ts.Expression; - if (field.isEnum(fieldDescriptor)) { - _default = ts.factory.createPropertyAccessExpression( - type.getTypeReferenceExpr(rootDescriptor, fieldDescriptor.type_name), - fieldDescriptor.default_value, + if (field.isEnum(fieldDescriptor)) { + _default = ts.factory.createPropertyAccessExpression( + type.getTypeReferenceExpr(rootDescriptor, fieldDescriptor.type_name), + fieldDescriptor.has_default_value + ? fieldDescriptor.default_value + : type.getLeadingEnumMember(fieldDescriptor.type_name), + ); + } else if (field.isRepeated(fieldDescriptor)) { + _default = fieldDescriptor.has_default_value + ? ts.factory.createIdentifier(fieldDescriptor.default_value) + : ts.factory.createArrayLiteralExpression( + [], + false ); - } else if (field.isString(fieldDescriptor)) { - _default = ts.factory.createStringLiteral( - fieldDescriptor.default_value, + } else if (field.isBytes(fieldDescriptor)) { + _default = fieldDescriptor.has_default_value + ? ts.factory.createIdentifier(fieldDescriptor.default_value) + : ts.factory.createNewExpression( + ts.factory.createIdentifier("Uint8Array"), + undefined, + [] ); - } else if (field.isBoolean(fieldDescriptor)) { - _default = ts.factory.createIdentifier(fieldDescriptor.default_value); - } else { - _default = ts.factory.createIdentifier(fieldDescriptor.default_value); - } - - args.push(_default); + } else if (field.isString(fieldDescriptor) || field.hasJsTypeString(fieldDescriptor)) { + _default = fieldDescriptor.has_default_value + ? ts.factory.createStringLiteral(fieldDescriptor.default_value) + : ts.factory.createStringLiteral(field.hasJsTypeString(fieldDescriptor) ? "0" : ""); + } else if (field.isBoolean(fieldDescriptor)) { + _default = fieldDescriptor.has_default_value + ? ts.factory.createIdentifier(fieldDescriptor.default_value) + : ts.factory.createFalse(); + } else { + _default = fieldDescriptor.has_default_value + ? ts.factory.createIdentifier(fieldDescriptor.default_value) + : ts.factory.createNumericLiteral(0); } + + args.push(_default); } return ts.factory.createCallExpression( ts.factory.createPropertyAccessExpression( @@ -1005,7 +1052,7 @@ function createOneOfGetter( ]; for (const field of messageDescriptor.field) { - if (field.oneof_index !== index) { + if (!field.has_oneof_index || field.oneof_index !== index) { continue; } @@ -1099,7 +1146,7 @@ function createSetter( let block: ts.Block; - if (field.isOneOf(fieldDescriptor)) { + if (fieldDescriptor.has_oneof_index) { block = createOneOfSetterBlock( fieldDescriptor, valueParameter, @@ -1156,7 +1203,7 @@ function createOneOfSetterBlock( ts.factory.createThis(), ts.factory.createPrivateIdentifier("#one_of_decls"), ), - fieldDescriptor.oneof_index, + fieldDescriptor.has_oneof_index ? fieldDescriptor.oneof_index : undefined ), valueParameter, ], @@ -1207,6 +1254,55 @@ function createSetterBlock( ); } +/** + * Returns a presence has method for the field + */ +function createPresenceHas( + fieldDescriptor: descriptor.FieldDescriptorProto, + pbIdentifier: ts.Identifier, +) { + return comment.addDeprecatedJsDoc( + ts.factory.createGetAccessorDeclaration( + undefined, + undefined, + getPrefixedFieldName("has", fieldDescriptor), + [], + undefined, + createPresenceHasBlock(fieldDescriptor, pbIdentifier), + ), + fieldDescriptor.options?.deprecated, + ); +} + +function createPresenceHasBlock( + fieldDescriptor: descriptor.FieldDescriptorProto, + pbIdentifier: ts.Identifier, +) { + return ts.factory.createBlock( + [ + ts.factory.createReturnStatement(ts.factory.createBinaryExpression( + ts.factory.createCallExpression( + ts.factory.createPropertyAccessExpression( + ts.factory.createPropertyAccessExpression( + pbIdentifier, + ts.factory.createIdentifier("Message"), + ), + ts.factory.createIdentifier("getField"), + ), + undefined, + [ + ts.factory.createThis(), + ts.factory.createNumericLiteral(fieldDescriptor.number), + ] + ), + ts.factory.createToken(ts.SyntaxKind.ExclamationEqualsToken), + ts.factory.createNull(), + )), + ], + true, + ) +} + /** * Returns the serialize method for the message class */ @@ -1249,6 +1345,13 @@ function createSerialize( getFieldName(fieldDescriptor), ); + const hasFieldCondition = field.hasPresenceGetter(rootDescriptor, fieldDescriptor) + ? ts.factory.createPropertyAccessExpression( + ts.factory.createThis(), + getPrefixedFieldName("has", fieldDescriptor), + ) + : undefined; + if (field.isMap(fieldDescriptor)) { const [keyDescriptor, valueDescriptor] = type.getMapDescriptor( fieldDescriptor.type_name, @@ -1421,12 +1524,44 @@ function createSerialize( } } - // this.prop !== undefined - let condition = ts.factory.createBinaryExpression( - propAccessor, - ts.factory.createToken(ts.SyntaxKind.ExclamationEqualsEqualsToken), - ts.factory.createIdentifier("undefined"), - ); + let condition: ts.Expression | undefined; + if ( + rootDescriptor.syntax == "proto3" && + !fieldDescriptor.proto3_optional && + !field.isMessage(fieldDescriptor) && + !field.isBytes(fieldDescriptor) && + !fieldDescriptor.has_oneof_index + ) { + if (field.hasJsTypeString(fieldDescriptor)) { + condition = ts.factory.createBinaryExpression( + propAccessor, + ts.factory.createToken(ts.SyntaxKind.ExclamationEqualsToken), + ts.factory.createStringLiteral("0"), + ); + } else if (field.isEnum(fieldDescriptor)) { + condition = ts.factory.createBinaryExpression( + propAccessor, + ts.factory.createToken(ts.SyntaxKind.ExclamationEqualsToken), + ts.factory.createPropertyAccessExpression( + type.getTypeReferenceExpr(rootDescriptor, fieldDescriptor.type_name), + type.getLeadingEnumMember(fieldDescriptor.type_name), + )); + } else if (field.isBoolean(fieldDescriptor)) { + condition = ts.factory.createBinaryExpression( + propAccessor, + ts.factory.createToken(ts.SyntaxKind.ExclamationEqualsToken), + ts.factory.createFalse(), + ); + } else { + condition = ts.factory.createBinaryExpression( + propAccessor, + ts.factory.createToken(ts.SyntaxKind.ExclamationEqualsToken), + ts.factory.createNumericLiteral(0), + ); + } + } else { + condition = hasFieldCondition; + } const statement = ts.factory.createExpressionStatement( ts.factory.createCallExpression( @@ -1444,23 +1579,22 @@ function createSerialize( ), ); - if ( - field.isString(fieldDescriptor) && - !field.isRepeated(fieldDescriptor) + if (field.isRepeated(fieldDescriptor)) { + condition = ts.factory.createPropertyAccessExpression(propAccessor, "length"); + } else if ( + (field.isString(fieldDescriptor) || field.isBytes(fieldDescriptor)) && + !fieldDescriptor.has_oneof_index ) { - // typeof this.prop !== "string" && this.prop.length - condition = ts.factory.createBinaryExpression( - ts.factory.createBinaryExpression( - ts.factory.createTypeOfExpression(propAccessor), - ts.factory.createToken(ts.SyntaxKind.EqualsEqualsEqualsToken), - ts.factory.createStringLiteral("string"), - ), - ts.factory.createToken(ts.SyntaxKind.AmpersandAmpersandToken), - ts.factory.createPropertyAccessExpression(propAccessor, "length"), - ); + condition = hasFieldCondition + ? ts.factory.createBinaryExpression( + hasFieldCondition, + ts.factory.createToken(ts.SyntaxKind.AmpersandAmpersandToken), + ts.factory.createPropertyAccessExpression(propAccessor, "length"), + ) + : ts.factory.createPropertyAccessExpression(propAccessor, "length"); } - statements.push(ts.factory.createIfStatement(condition, statement)); + statements.push(condition ? ts.factory.createIfStatement(condition, statement) : statement); } } @@ -2055,7 +2189,7 @@ function createOneOfDecls( ); for (const field of messageDescriptor.field) { - if (field.oneof_index != null) { + if (field.has_oneof_index) { declMap[field.oneof_index] ??= []; declMap[field.oneof_index].push( ts.factory.createNumericLiteral(field.number), @@ -2095,11 +2229,15 @@ function createMessage( createConstructor(rootDescriptor, messageDescriptor, pbIdentifier, parentName), ]; - for (const field of messageDescriptor.field) { - statements.push(createGetter(rootDescriptor, field, pbIdentifier, parentName)); + for (const fieldDescriptor of messageDescriptor.field) { + statements.push(createGetter(rootDescriptor, fieldDescriptor, pbIdentifier)); statements.push( - createSetter(rootDescriptor, messageDescriptor, field, pbIdentifier), + createSetter(rootDescriptor, messageDescriptor, fieldDescriptor, pbIdentifier), ); + + if (field.hasPresenceGetter(rootDescriptor, fieldDescriptor)) { + statements.push(createPresenceHas(fieldDescriptor, pbIdentifier)) + } } for (const [index, oneof] of messageDescriptor.oneof_decl.entries()) { diff --git a/src/field.ts b/src/field.ts index 40d02a52..83e65a5f 100644 --- a/src/field.ts +++ b/src/field.ts @@ -121,13 +121,6 @@ export function isMap(fieldDescriptor: descriptor.FieldDescriptorProto) { return type.getMapDescriptor(fieldDescriptor.type_name) != undefined; } -/** - * @param {descriptor.FieldDescriptorProto} fieldDescriptor - */ -export function isOneOf(fieldDescriptor: descriptor.FieldDescriptorProto) { - return typeof fieldDescriptor.oneof_index == "number"; -} - /** * @param {descriptor.FieldDescriptorProto} fieldDescriptor */ @@ -198,6 +191,20 @@ export function isOptional( descriptor.FieldDescriptorProto.Label.LABEL_OPTIONAL ); } +/** + * @param {descriptor.FileDescriptorProto} rootDescriptor + * @param {descriptor.FieldDescriptorProto} fieldDescriptor + */ +export function isRequiredWithoutExplicitDefault( + rootDescriptor: descriptor.FileDescriptorProto, + fieldDescriptor: descriptor.FieldDescriptorProto, +) { + return ( + rootDescriptor.syntax != "proto3" && + fieldDescriptor.label == descriptor.FieldDescriptorProto.Label.LABEL_REQUIRED && + !fieldDescriptor.has_default_value + ); +} /** * @param {descriptor.FieldDescriptorProto} fieldDescriptor @@ -208,6 +215,15 @@ export function isString(fieldDescriptor: descriptor.FieldDescriptorProto) { ); } +/** + * @param {descriptor.FieldDescriptorProto} fieldDescriptor + */ + export function isBytes(fieldDescriptor: descriptor.FieldDescriptorProto) { + return ( + fieldDescriptor.type == descriptor.FieldDescriptorProto.Type.TYPE_BYTES + ); +} + /** * @param {descriptor.FieldDescriptorProto} fieldDescriptor */ @@ -252,3 +268,23 @@ export function isPacked( return options != null && options.packed; } + +/** + * @param {descriptor.FileDescriptorProto} rootDescriptor + * @param {descriptor.FieldDescriptorProto} fieldDescriptor + */ + export function hasPresenceGetter( + rootDescriptor: descriptor.FileDescriptorProto, + fieldDescriptor: descriptor.FieldDescriptorProto, +) { + return ( + !isRepeated(fieldDescriptor) && + !isMap(fieldDescriptor) && + !( + rootDescriptor.syntax == "proto3" && + !( + fieldDescriptor.proto3_optional || isMessage(fieldDescriptor) || fieldDescriptor.has_oneof_index + ) + ) + ); +} diff --git a/src/type.ts b/src/type.ts index f5f46fc7..97a44ca9 100644 --- a/src/type.ts +++ b/src/type.ts @@ -5,6 +5,7 @@ import * as op from "./option.js"; const symbolMap: Map = new Map(); const dependencyMap: Map = new Map(); const mapMap: Map = new Map(); +const enumLeadingMemberMap: Map = new Map(); const packages: string[] = []; let config: op.Options; @@ -34,6 +35,12 @@ export function getMapDescriptor( return mapMap.get(typeName); } +export function getLeadingEnumMember( + type_name: string, +): string | undefined { + return enumLeadingMemberMap.get(type_name); +} + export function getTypeReferenceExpr( rootDescriptor: descriptor.FileDescriptorProto, typeName: string, @@ -118,7 +125,9 @@ export function preprocess( } for (const enumDescriptor of targetDescriptor.enum_type) { - symbolMap.set(replaceDoubleDots(`${prefix}.${enumDescriptor.name}`), path); + const name = replaceDoubleDots(`${prefix}.${enumDescriptor.name}`) + symbolMap.set(name, path); + enumLeadingMemberMap.set(name, enumDescriptor.value[0].name); } const messages: descriptor.DescriptorProto[] = diff --git a/test/_/default/BUILD.bazel b/test/_/default/BUILD.bazel new file mode 100644 index 00000000..c90594a3 --- /dev/null +++ b/test/_/default/BUILD.bazel @@ -0,0 +1,20 @@ +load("@rules_proto//proto:defs.bzl", "proto_library") +load("//:index.bzl", "ts_proto_library") + + +SRCS = glob(["**/*.proto"]) + +proto_library( + name = "protos", + srcs = SRCS, +) + +ts_proto_library( + name = "default", + outs = [ + src.replace(".proto", ".ts") + for src in SRCS + ], + deps = [":protos"], + visibility = ["//test/default:__pkg__"] +) diff --git a/test/_/default.proto b/test/_/default/default.proto similarity index 59% rename from test/_/default.proto rename to test/_/default/default.proto index 70fe5810..07e31fb7 100644 --- a/test/_/default.proto +++ b/test/_/default/default.proto @@ -5,3 +5,9 @@ message MessageWithDefault { optional string string_field = 2 [default = "default value"]; optional int32 int32_field = 3 [default = 12]; } + +message MessageWithImplicitDefault { + optional bool bool_field = 1; + optional string string_field = 2; + optional int32 int32_field = 3; +} \ No newline at end of file diff --git a/test/_/default/default_common.proto b/test/_/default/default_common.proto new file mode 100644 index 00000000..ced3134a --- /dev/null +++ b/test/_/default/default_common.proto @@ -0,0 +1,19 @@ +syntax = "proto3"; + +message DefaultCommonMessage { + string message = 1; +} + +message DefaultCommonMessageOneOf { + oneof oneof { + int32 int32 = 1; + DefaultCommonMessage message = 2; + string string = 3; + } +} + +enum DefaultCommonEnum { + ZERO = 0; + ONE = 1; + TWO = 2; +} diff --git a/test/_/default/default_proto2.proto b/test/_/default/default_proto2.proto new file mode 100644 index 00000000..5a2db862 --- /dev/null +++ b/test/_/default/default_proto2.proto @@ -0,0 +1,67 @@ +syntax = "proto2"; + +import "test/_/default/default_common.proto"; + +message DefaultMessageV2WithoutDefault { + required DefaultCommonMessage message = 1; + required DefaultCommonEnum enum = 2; + + required bool bool = 3; + required string string = 4; + + required int32 int32 = 5; + required fixed32 fixed32 = 6; + required sfixed32 sfixed32 = 7; + required uint32 uint32 = 8; + required sint32 sint32 = 9; + required int64 int64 = 10; + required fixed64 fixed64 = 11; + required sfixed64 sfixed64 = 12; + required uint64 uint64 = 13; + required sint64 sint64 = 14; + required float float = 15; + required double double = 16; + + required int64 int_but_string = 17 [jstype = JS_STRING]; + + map map_string_string = 18; + map map_string_message = 19; + + repeated int32 array_int32 = 20; + repeated DefaultCommonMessage array_message = 21; + + oneof one_of { + int32 one_of_int32 = 22; + DefaultCommonMessage one_of_message = 23; + } + + required bytes bytes = 24; +} + +message DefaultMessageV2WithDefault { + required DefaultCommonMessage message = 1; + required DefaultCommonEnum enum = 2[default = TWO]; + + required bool bool = 3[default = true]; + required string string = 4[default = "default string"]; + + required int32 int32 = 5[default = 5]; + required fixed32 fixed32 = 6[default = 6]; + required sfixed32 sfixed32 = 7[default = 7]; + required uint32 uint32 = 8[default = 8]; + required sint32 sint32 = 9[default = 9]; + required int64 int64 = 10[default = 10]; + required fixed64 fixed64 = 11[default = 11]; + required sfixed64 sfixed64 = 12[default = 12]; + required uint64 uint64 = 13[default = 13]; + required sint64 sint64 = 14[default = 14]; + required float float = 15[default = 15.0]; + required double double = 16[default = 16.0]; + + required int64 int_but_string = 17 [jstype = JS_STRING, default = 17]; + + oneof one_of { + int32 one_of_int32 = 18 [default = 18]; + DefaultCommonMessage one_of_message = 19; + }; +} diff --git a/test/_/default/default_proto3.proto b/test/_/default/default_proto3.proto new file mode 100644 index 00000000..6ebc62df --- /dev/null +++ b/test/_/default/default_proto3.proto @@ -0,0 +1,63 @@ +syntax = "proto3"; + +import "test/_/default/default_common.proto"; + +message DefaultMessageV3 { + DefaultCommonMessage message = 1; + DefaultCommonEnum enum = 2; + + bool bool = 3; + string string = 4; + + int32 int32 = 5; + fixed32 fixed32 = 6; + sfixed32 sfixed32 = 7; + uint32 uint32 = 8; + sint32 sint32 = 9; + int64 int64 = 10; + fixed64 fixed64 = 11; + sfixed64 sfixed64 = 12; + uint64 uint64 = 13; + sint64 sint64 = 14; + float float = 15; + double double = 16; + + int64 int_but_string = 17 [jstype = JS_STRING]; + + map map_string_string = 18; + map map_string_message = 19; + + repeated int32 array_int32 = 20; + repeated DefaultCommonMessage array_message = 21; + + oneof one_of { + int32 one_of_int32 = 22; + DefaultCommonMessage one_of_message = 23; + } + + bytes bytes = 24; +} + +message DefaultMessageOptionalV3 { + optional DefaultCommonEnum enum = 2; + + optional bool bool = 3; + optional string string = 4; + + optional int32 int32 = 5; + optional fixed32 fixed32 = 6; + optional sfixed32 sfixed32 = 7; + optional uint32 uint32 = 8; + optional sint32 sint32 = 9; + optional int64 int64 = 10; + optional fixed64 fixed64 = 11; + optional sfixed64 sfixed64 = 12; + optional uint64 uint64 = 13; + optional sint64 sint64 = 14; + optional float float = 15; + optional double double = 16; + + optional int64 int_but_string = 17 [jstype = JS_STRING]; + + optional bytes bytes = 24; +} diff --git a/test/_/presence/BUILD.bazel b/test/_/presence/BUILD.bazel new file mode 100644 index 00000000..6d90ca50 --- /dev/null +++ b/test/_/presence/BUILD.bazel @@ -0,0 +1,20 @@ +load("@rules_proto//proto:defs.bzl", "proto_library") +load("//:index.bzl", "ts_proto_library") + + +SRCS = glob(["**/*.proto"]) + +proto_library( + name = "protos", + srcs = SRCS, +) + +ts_proto_library( + name = "presence", + outs = [ + src.replace(".proto", ".ts") + for src in SRCS + ], + deps = [":protos"], + visibility = ["//test/presence:__pkg__"] +) diff --git a/test/_/presence/presence_common.proto b/test/_/presence/presence_common.proto new file mode 100644 index 00000000..648ba17b --- /dev/null +++ b/test/_/presence/presence_common.proto @@ -0,0 +1,18 @@ +syntax = "proto3"; + +message PresenceCommonMessage { + string message = 1; +} + +message PresenceCommonMessageOneOf { + oneof oneof { + int32 int32 = 1; + PresenceCommonMessage message = 2; + } +} + +enum PresenceCommonEnum { + ZERO = 0; + ONE = 1; + TWO = 2; +} diff --git a/test/_/presence/presence_proto2.proto b/test/_/presence/presence_proto2.proto new file mode 100644 index 00000000..d2e2bf0c --- /dev/null +++ b/test/_/presence/presence_proto2.proto @@ -0,0 +1,20 @@ +syntax = "proto2"; + +import "test/_/presence/presence_common.proto"; + +message PresenceMessageV2 { + required int32 int32 = 1; //should have + required PresenceCommonEnum enum = 2; //should have + required string string = 3; //should have + required PresenceCommonMessage message = 4; //should have + required PresenceCommonMessageOneOf oneof = 5; //should have + + optional int32 opt_int32 = 6; //should have + optional PresenceCommonEnum opt_enum = 7; //should have + optional string opt_string = 8; //should have + optional PresenceCommonMessage opt_message = 9; //should have + optional PresenceCommonMessageOneOf opt_oneof = 10; //should have + + repeated int32 repeated = 11; //shouldn't have + map map = 12; //shouldn't have +} diff --git a/test/_/presence/presence_proto3.proto b/test/_/presence/presence_proto3.proto new file mode 100644 index 00000000..50c9ce3a --- /dev/null +++ b/test/_/presence/presence_proto3.proto @@ -0,0 +1,20 @@ +syntax = "proto3"; + +import "test/_/presence/presence_common.proto"; + +message PresenceMessageV3 { + int32 int32 = 1; //shouldn't have + PresenceCommonEnum enum = 2; //shouldn't have + string string = 3; //shouldn't have + PresenceCommonMessage message = 4; //should have + PresenceCommonMessageOneOf oneof = 5; //should have + + optional int32 opt_int32 = 6; //should have + optional PresenceCommonEnum opt_enum = 7; //should have + optional string opt_string = 8; //should have + optional PresenceCommonMessage opt_message = 9; //should have + optional PresenceCommonMessageOneOf opt_oneof = 10; //should have + + repeated int32 repeated = 11; //shouldn't have + map map = 12; //shouldn't have +} diff --git a/test/_/sources.bzl b/test/_/sources.bzl index 521eb28c..b2dd72c0 100644 --- a/test/_/sources.bzl +++ b/test/_/sources.bzl @@ -3,7 +3,6 @@ A list of proto files maintained by a write_file """ PROT_SOURCES = [ "conformance.ts", - "default.ts", "deprecated.ts", "dot.in.filenames.ts", "enum_within_message.ts", diff --git a/test/conformance/map/proto/map_checked.ts b/test/conformance/map/proto/map_checked.ts index 14477723..5cbdbcc8 100644 --- a/test/conformance/map/proto/map_checked.ts +++ b/test/conformance/map/proto/map_checked.ts @@ -19,7 +19,7 @@ export namespace maps { } } get link() { - return pb_1.Message.getField(this, 2) as string; + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; } set link(value: string) { pb_1.Message.setField(this, 2, value); @@ -46,7 +46,7 @@ export namespace maps { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.link === "string" && this.link.length) + if (this.link.length) writer.writeString(2, this.link); if (!w) return writer.getResultBuffer(); @@ -104,7 +104,7 @@ export namespace maps { this.topics_with_intkeys = new Map(); } get key() { - return pb_1.Message.getField(this, 2) as string; + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; } set key(value: string) { pb_1.Message.setField(this, 2, value); @@ -185,7 +185,7 @@ export namespace maps { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.key === "string" && this.key.length) + if (this.key.length) writer.writeString(2, this.key); for (const [key, value] of this.keys) { writer.writeMessage(1, this.keys, () => { diff --git a/test/conformance/packedproto2/packed_proto2.ts b/test/conformance/packedproto2/packed_proto2.ts index e74e602b..de2ce6b7 100644 --- a/test/conformance/packedproto2/packed_proto2.ts +++ b/test/conformance/packedproto2/packed_proto2.ts @@ -22,17 +22,23 @@ export class HydratedQuickReplyButton extends pb_1.Message { } } get displayText() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set displayText(value: string) { pb_1.Message.setField(this, 1, value); } + get has_displayText() { + return pb_1.Message.getField(this, 1) != null; + } get id() { - return pb_1.Message.getField(this, 2) as string; + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; } set id(value: string) { pb_1.Message.setField(this, 2, value); } + get has_id() { + return pb_1.Message.getField(this, 2) != null; + } static fromObject(data: { displayText?: string; id?: string; @@ -63,9 +69,9 @@ export class HydratedQuickReplyButton extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.displayText === "string" && this.displayText.length) + if (this.has_displayText && this.displayText.length) writer.writeString(1, this.displayText); - if (typeof this.id === "string" && this.id.length) + if (this.has_id && this.id.length) writer.writeString(2, this.id); if (!w) return writer.getResultBuffer(); @@ -112,17 +118,23 @@ export class HydratedURLButton extends pb_1.Message { } } get displayText() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set displayText(value: string) { pb_1.Message.setField(this, 1, value); } + get has_displayText() { + return pb_1.Message.getField(this, 1) != null; + } get url() { - return pb_1.Message.getField(this, 2) as string; + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; } set url(value: string) { pb_1.Message.setField(this, 2, value); } + get has_url() { + return pb_1.Message.getField(this, 2) != null; + } static fromObject(data: { displayText?: string; url?: string; @@ -153,9 +165,9 @@ export class HydratedURLButton extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.displayText === "string" && this.displayText.length) + if (this.has_displayText && this.displayText.length) writer.writeString(1, this.displayText); - if (typeof this.url === "string" && this.url.length) + if (this.has_url && this.url.length) writer.writeString(2, this.url); if (!w) return writer.getResultBuffer(); @@ -202,17 +214,23 @@ export class HydratedCallButton extends pb_1.Message { } } get displayText() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set displayText(value: string) { pb_1.Message.setField(this, 1, value); } + get has_displayText() { + return pb_1.Message.getField(this, 1) != null; + } get phoneNumber() { - return pb_1.Message.getField(this, 2) as string; + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; } set phoneNumber(value: string) { pb_1.Message.setField(this, 2, value); } + get has_phoneNumber() { + return pb_1.Message.getField(this, 2) != null; + } static fromObject(data: { displayText?: string; phoneNumber?: string; @@ -243,9 +261,9 @@ export class HydratedCallButton extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.displayText === "string" && this.displayText.length) + if (this.has_displayText && this.displayText.length) writer.writeString(1, this.displayText); - if (typeof this.phoneNumber === "string" && this.phoneNumber.length) + if (this.has_phoneNumber && this.phoneNumber.length) writer.writeString(2, this.phoneNumber); if (!w) return writer.getResultBuffer(); @@ -309,29 +327,41 @@ export class HydratedTemplateButton extends pb_1.Message { } } get index() { - return pb_1.Message.getField(this, 4) as number; + return pb_1.Message.getFieldWithDefault(this, 4, 0) as number; } set index(value: number) { pb_1.Message.setField(this, 4, value); } + get has_index() { + return pb_1.Message.getField(this, 4) != null; + } get quickReplyButton() { return pb_1.Message.getWrapperField(this, HydratedQuickReplyButton, 1) as HydratedQuickReplyButton; } set quickReplyButton(value: HydratedQuickReplyButton) { pb_1.Message.setOneofWrapperField(this, 1, this.#one_of_decls[0], value); } + get has_quickReplyButton() { + return pb_1.Message.getField(this, 1) != null; + } get urlButton() { return pb_1.Message.getWrapperField(this, HydratedURLButton, 2) as HydratedURLButton; } set urlButton(value: HydratedURLButton) { pb_1.Message.setOneofWrapperField(this, 2, this.#one_of_decls[0], value); } + get has_urlButton() { + return pb_1.Message.getField(this, 2) != null; + } get callButton() { return pb_1.Message.getWrapperField(this, HydratedCallButton, 3) as HydratedCallButton; } set callButton(value: HydratedCallButton) { pb_1.Message.setOneofWrapperField(this, 3, this.#one_of_decls[0], value); } + get has_callButton() { + return pb_1.Message.getField(this, 3) != null; + } get hydratedButton() { const cases: { [index: number]: "none" | "quickReplyButton" | "urlButton" | "callButton"; @@ -389,13 +419,13 @@ export class HydratedTemplateButton extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.index !== undefined) + if (this.has_index) writer.writeUint32(4, this.index); - if (this.quickReplyButton !== undefined) + if (this.has_quickReplyButton) writer.writeMessage(1, this.quickReplyButton, () => this.quickReplyButton.serialize(writer)); - if (this.urlButton !== undefined) + if (this.has_urlButton) writer.writeMessage(2, this.urlButton, () => this.urlButton.serialize(writer)); - if (this.callButton !== undefined) + if (this.has_callButton) writer.writeMessage(3, this.callButton, () => this.callButton.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -453,12 +483,18 @@ export class QuickReplyButton extends pb_1.Message { set displayText(value: HighlyStructuredMessage) { pb_1.Message.setWrapperField(this, 1, value); } + get has_displayText() { + return pb_1.Message.getField(this, 1) != null; + } get id() { - return pb_1.Message.getField(this, 2) as string; + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; } set id(value: string) { pb_1.Message.setField(this, 2, value); } + get has_id() { + return pb_1.Message.getField(this, 2) != null; + } static fromObject(data: { displayText?: ReturnType; id?: string; @@ -489,9 +525,9 @@ export class QuickReplyButton extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.displayText !== undefined) + if (this.has_displayText) writer.writeMessage(1, this.displayText, () => this.displayText.serialize(writer)); - if (typeof this.id === "string" && this.id.length) + if (this.has_id && this.id.length) writer.writeString(2, this.id); if (!w) return writer.getResultBuffer(); @@ -543,12 +579,18 @@ export class URLButton extends pb_1.Message { set displayText(value: HighlyStructuredMessage) { pb_1.Message.setWrapperField(this, 1, value); } + get has_displayText() { + return pb_1.Message.getField(this, 1) != null; + } get url() { return pb_1.Message.getWrapperField(this, HighlyStructuredMessage, 2) as HighlyStructuredMessage; } set url(value: HighlyStructuredMessage) { pb_1.Message.setWrapperField(this, 2, value); } + get has_url() { + return pb_1.Message.getField(this, 2) != null; + } static fromObject(data: { displayText?: ReturnType; url?: ReturnType; @@ -579,9 +621,9 @@ export class URLButton extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.displayText !== undefined) + if (this.has_displayText) writer.writeMessage(1, this.displayText, () => this.displayText.serialize(writer)); - if (this.url !== undefined) + if (this.has_url) writer.writeMessage(2, this.url, () => this.url.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -633,12 +675,18 @@ export class CallButton extends pb_1.Message { set displayText(value: HighlyStructuredMessage) { pb_1.Message.setWrapperField(this, 1, value); } + get has_displayText() { + return pb_1.Message.getField(this, 1) != null; + } get phoneNumber() { return pb_1.Message.getWrapperField(this, HighlyStructuredMessage, 2) as HighlyStructuredMessage; } set phoneNumber(value: HighlyStructuredMessage) { pb_1.Message.setWrapperField(this, 2, value); } + get has_phoneNumber() { + return pb_1.Message.getField(this, 2) != null; + } static fromObject(data: { displayText?: ReturnType; phoneNumber?: ReturnType; @@ -669,9 +717,9 @@ export class CallButton extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.displayText !== undefined) + if (this.has_displayText) writer.writeMessage(1, this.displayText, () => this.displayText.serialize(writer)); - if (this.phoneNumber !== undefined) + if (this.has_phoneNumber) writer.writeMessage(2, this.phoneNumber, () => this.phoneNumber.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -735,29 +783,41 @@ export class TemplateButton extends pb_1.Message { } } get index() { - return pb_1.Message.getField(this, 4) as number; + return pb_1.Message.getFieldWithDefault(this, 4, 0) as number; } set index(value: number) { pb_1.Message.setField(this, 4, value); } + get has_index() { + return pb_1.Message.getField(this, 4) != null; + } get quickReplyButton() { return pb_1.Message.getWrapperField(this, QuickReplyButton, 1) as QuickReplyButton; } set quickReplyButton(value: QuickReplyButton) { pb_1.Message.setOneofWrapperField(this, 1, this.#one_of_decls[0], value); } + get has_quickReplyButton() { + return pb_1.Message.getField(this, 1) != null; + } get urlButton() { return pb_1.Message.getWrapperField(this, URLButton, 2) as URLButton; } set urlButton(value: URLButton) { pb_1.Message.setOneofWrapperField(this, 2, this.#one_of_decls[0], value); } + get has_urlButton() { + return pb_1.Message.getField(this, 2) != null; + } get callButton() { return pb_1.Message.getWrapperField(this, CallButton, 3) as CallButton; } set callButton(value: CallButton) { pb_1.Message.setOneofWrapperField(this, 3, this.#one_of_decls[0], value); } + get has_callButton() { + return pb_1.Message.getField(this, 3) != null; + } get button() { const cases: { [index: number]: "none" | "quickReplyButton" | "urlButton" | "callButton"; @@ -815,13 +875,13 @@ export class TemplateButton extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.index !== undefined) + if (this.has_index) writer.writeUint32(4, this.index); - if (this.quickReplyButton !== undefined) + if (this.has_quickReplyButton) writer.writeMessage(1, this.quickReplyButton, () => this.quickReplyButton.serialize(writer)); - if (this.urlButton !== undefined) + if (this.has_urlButton) writer.writeMessage(2, this.urlButton, () => this.urlButton.serialize(writer)); - if (this.callButton !== undefined) + if (this.has_callButton) writer.writeMessage(3, this.callButton, () => this.callButton.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -878,23 +938,32 @@ export class Location extends pb_1.Message { } } get degreesLatitude() { - return pb_1.Message.getField(this, 1) as number; + return pb_1.Message.getFieldWithDefault(this, 1, 0) as number; } set degreesLatitude(value: number) { pb_1.Message.setField(this, 1, value); } + get has_degreesLatitude() { + return pb_1.Message.getField(this, 1) != null; + } get degreesLongitude() { - return pb_1.Message.getField(this, 2) as number; + return pb_1.Message.getFieldWithDefault(this, 2, 0) as number; } set degreesLongitude(value: number) { pb_1.Message.setField(this, 2, value); } + get has_degreesLongitude() { + return pb_1.Message.getField(this, 2) != null; + } get name() { - return pb_1.Message.getField(this, 3) as string; + return pb_1.Message.getFieldWithDefault(this, 3, "") as string; } set name(value: string) { pb_1.Message.setField(this, 3, value); } + get has_name() { + return pb_1.Message.getField(this, 3) != null; + } static fromObject(data: { degreesLatitude?: number; degreesLongitude?: number; @@ -933,11 +1002,11 @@ export class Location extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.degreesLatitude !== undefined) + if (this.has_degreesLatitude) writer.writeDouble(1, this.degreesLatitude); - if (this.degreesLongitude !== undefined) + if (this.has_degreesLongitude) writer.writeDouble(2, this.degreesLongitude); - if (typeof this.name === "string" && this.name.length) + if (this.has_name && this.name.length) writer.writeString(3, this.name); if (!w) return writer.getResultBuffer(); @@ -995,29 +1064,41 @@ export class Point extends pb_1.Message { } } get xDeprecated() { - return pb_1.Message.getField(this, 1) as number; + return pb_1.Message.getFieldWithDefault(this, 1, 0) as number; } set xDeprecated(value: number) { pb_1.Message.setField(this, 1, value); } + get has_xDeprecated() { + return pb_1.Message.getField(this, 1) != null; + } get yDeprecated() { - return pb_1.Message.getField(this, 2) as number; + return pb_1.Message.getFieldWithDefault(this, 2, 0) as number; } set yDeprecated(value: number) { pb_1.Message.setField(this, 2, value); } + get has_yDeprecated() { + return pb_1.Message.getField(this, 2) != null; + } get x() { - return pb_1.Message.getField(this, 3) as number; + return pb_1.Message.getFieldWithDefault(this, 3, 0) as number; } set x(value: number) { pb_1.Message.setField(this, 3, value); } + get has_x() { + return pb_1.Message.getField(this, 3) != null; + } get y() { - return pb_1.Message.getField(this, 4) as number; + return pb_1.Message.getFieldWithDefault(this, 4, 0) as number; } set y(value: number) { pb_1.Message.setField(this, 4, value); } + get has_y() { + return pb_1.Message.getField(this, 4) != null; + } static fromObject(data: { xDeprecated?: number; yDeprecated?: number; @@ -1064,13 +1145,13 @@ export class Point extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.xDeprecated !== undefined) + if (this.has_xDeprecated) writer.writeInt32(1, this.xDeprecated); - if (this.yDeprecated !== undefined) + if (this.has_yDeprecated) writer.writeInt32(2, this.yDeprecated); - if (this.x !== undefined) + if (this.has_x) writer.writeDouble(3, this.x); - if (this.y !== undefined) + if (this.has_y) writer.writeDouble(4, this.y); if (!w) return writer.getResultBuffer(); @@ -1133,6 +1214,9 @@ export class InteractiveAnnotation extends pb_1.Message { set location(value: Location) { pb_1.Message.setOneofWrapperField(this, 2, this.#one_of_decls[0], value); } + get has_location() { + return pb_1.Message.getField(this, 2) != null; + } get action() { const cases: { [index: number]: "none" | "location"; @@ -1143,7 +1227,7 @@ export class InteractiveAnnotation extends pb_1.Message { return cases[pb_1.Message.computeOneofCase(this, [2])]; } static fromObject(data: { - polygonVertices: ReturnType[]; + polygonVertices?: ReturnType[]; location?: ReturnType; }): InteractiveAnnotation { const message = new InteractiveAnnotation({ @@ -1156,11 +1240,12 @@ export class InteractiveAnnotation extends pb_1.Message { } toObject() { const data: { - polygonVertices: ReturnType[]; + polygonVertices?: ReturnType[]; location?: ReturnType; - } = { - polygonVertices: this.polygonVertices.map((item: Point) => item.toObject()) - }; + } = {}; + if (this.polygonVertices != null) { + data.polygonVertices = this.polygonVertices.map((item: Point) => item.toObject()); + } if (this.location != null) { data.location = this.location.toObject(); } @@ -1170,9 +1255,9 @@ export class InteractiveAnnotation extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.polygonVertices !== undefined) + if (this.polygonVertices.length) writer.writeRepeatedMessage(1, this.polygonVertices, (item: Point) => item.serialize(writer)); - if (this.location !== undefined) + if (this.has_location) writer.writeMessage(2, this.location, () => this.location.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -1227,29 +1312,41 @@ export class AdReplyInfo extends pb_1.Message { } } get advertiserName() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set advertiserName(value: string) { pb_1.Message.setField(this, 1, value); } + get has_advertiserName() { + return pb_1.Message.getField(this, 1) != null; + } get mediaType() { - return pb_1.Message.getField(this, 2) as AdReplyInfo.AD_REPLY_INFO_MEDIATYPE; + return pb_1.Message.getFieldWithDefault(this, 2, AdReplyInfo.AD_REPLY_INFO_MEDIATYPE.NONE) as AdReplyInfo.AD_REPLY_INFO_MEDIATYPE; } set mediaType(value: AdReplyInfo.AD_REPLY_INFO_MEDIATYPE) { pb_1.Message.setField(this, 2, value); } + get has_mediaType() { + return pb_1.Message.getField(this, 2) != null; + } get jpegThumbnail() { - return pb_1.Message.getField(this, 16) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 16, new Uint8Array()) as Uint8Array; } set jpegThumbnail(value: Uint8Array) { pb_1.Message.setField(this, 16, value); } + get has_jpegThumbnail() { + return pb_1.Message.getField(this, 16) != null; + } get caption() { - return pb_1.Message.getField(this, 17) as string; + return pb_1.Message.getFieldWithDefault(this, 17, "") as string; } set caption(value: string) { pb_1.Message.setField(this, 17, value); } + get has_caption() { + return pb_1.Message.getField(this, 17) != null; + } static fromObject(data: { advertiserName?: string; mediaType?: AdReplyInfo.AD_REPLY_INFO_MEDIATYPE; @@ -1296,13 +1393,13 @@ export class AdReplyInfo extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.advertiserName === "string" && this.advertiserName.length) + if (this.has_advertiserName && this.advertiserName.length) writer.writeString(1, this.advertiserName); - if (this.mediaType !== undefined) + if (this.has_mediaType) writer.writeEnum(2, this.mediaType); - if (this.jpegThumbnail !== undefined) + if (this.has_jpegThumbnail && this.jpegThumbnail.length) writer.writeBytes(16, this.jpegThumbnail); - if (typeof this.caption === "string" && this.caption.length) + if (this.has_caption && this.caption.length) writer.writeString(17, this.caption); if (!w) return writer.getResultBuffer(); @@ -1412,95 +1509,137 @@ export class ContextInfo extends pb_1.Message { } } get stanzaId() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set stanzaId(value: string) { pb_1.Message.setField(this, 1, value); } + get has_stanzaId() { + return pb_1.Message.getField(this, 1) != null; + } get participant() { - return pb_1.Message.getField(this, 2) as string; + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; } set participant(value: string) { pb_1.Message.setField(this, 2, value); } + get has_participant() { + return pb_1.Message.getField(this, 2) != null; + } get quotedMessage() { return pb_1.Message.getWrapperField(this, Message, 3) as Message; } set quotedMessage(value: Message) { pb_1.Message.setWrapperField(this, 3, value); } + get has_quotedMessage() { + return pb_1.Message.getField(this, 3) != null; + } get remoteJid() { - return pb_1.Message.getField(this, 4) as string; + return pb_1.Message.getFieldWithDefault(this, 4, "") as string; } set remoteJid(value: string) { pb_1.Message.setField(this, 4, value); } + get has_remoteJid() { + return pb_1.Message.getField(this, 4) != null; + } get mentionedJid() { - return pb_1.Message.getField(this, 15) as string[]; + return pb_1.Message.getFieldWithDefault(this, 15, []) as string[]; } set mentionedJid(value: string[]) { pb_1.Message.setField(this, 15, value); } get conversionSource() { - return pb_1.Message.getField(this, 18) as string; + return pb_1.Message.getFieldWithDefault(this, 18, "") as string; } set conversionSource(value: string) { pb_1.Message.setField(this, 18, value); } + get has_conversionSource() { + return pb_1.Message.getField(this, 18) != null; + } get conversionData() { - return pb_1.Message.getField(this, 19) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 19, new Uint8Array()) as Uint8Array; } set conversionData(value: Uint8Array) { pb_1.Message.setField(this, 19, value); } + get has_conversionData() { + return pb_1.Message.getField(this, 19) != null; + } get conversionDelaySeconds() { - return pb_1.Message.getField(this, 20) as number; + return pb_1.Message.getFieldWithDefault(this, 20, 0) as number; } set conversionDelaySeconds(value: number) { pb_1.Message.setField(this, 20, value); } + get has_conversionDelaySeconds() { + return pb_1.Message.getField(this, 20) != null; + } get forwardingScore() { - return pb_1.Message.getField(this, 21) as number; + return pb_1.Message.getFieldWithDefault(this, 21, 0) as number; } set forwardingScore(value: number) { pb_1.Message.setField(this, 21, value); } + get has_forwardingScore() { + return pb_1.Message.getField(this, 21) != null; + } get isForwarded() { - return pb_1.Message.getField(this, 22) as boolean; + return pb_1.Message.getFieldWithDefault(this, 22, false) as boolean; } set isForwarded(value: boolean) { pb_1.Message.setField(this, 22, value); } + get has_isForwarded() { + return pb_1.Message.getField(this, 22) != null; + } get quotedAd() { return pb_1.Message.getWrapperField(this, AdReplyInfo, 23) as AdReplyInfo; } set quotedAd(value: AdReplyInfo) { pb_1.Message.setWrapperField(this, 23, value); } + get has_quotedAd() { + return pb_1.Message.getField(this, 23) != null; + } get placeholderKey() { return pb_1.Message.getWrapperField(this, MessageKey, 24) as MessageKey; } set placeholderKey(value: MessageKey) { pb_1.Message.setWrapperField(this, 24, value); } + get has_placeholderKey() { + return pb_1.Message.getField(this, 24) != null; + } get expiration() { - return pb_1.Message.getField(this, 25) as number; + return pb_1.Message.getFieldWithDefault(this, 25, 0) as number; } set expiration(value: number) { pb_1.Message.setField(this, 25, value); } + get has_expiration() { + return pb_1.Message.getField(this, 25) != null; + } get ephemeralSettingTimestamp() { - return pb_1.Message.getField(this, 26) as number; + return pb_1.Message.getFieldWithDefault(this, 26, 0) as number; } set ephemeralSettingTimestamp(value: number) { pb_1.Message.setField(this, 26, value); } + get has_ephemeralSettingTimestamp() { + return pb_1.Message.getField(this, 26) != null; + } get ephemeralSharedSecret() { - return pb_1.Message.getField(this, 27) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 27, new Uint8Array()) as Uint8Array; } set ephemeralSharedSecret(value: Uint8Array) { pb_1.Message.setField(this, 27, value); } + get has_ephemeralSharedSecret() { + return pb_1.Message.getField(this, 27) != null; + } static fromObject(data: { stanzaId?: string; participant?: string; @@ -1633,35 +1772,35 @@ export class ContextInfo extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.stanzaId === "string" && this.stanzaId.length) + if (this.has_stanzaId && this.stanzaId.length) writer.writeString(1, this.stanzaId); - if (typeof this.participant === "string" && this.participant.length) + if (this.has_participant && this.participant.length) writer.writeString(2, this.participant); - if (this.quotedMessage !== undefined) + if (this.has_quotedMessage) writer.writeMessage(3, this.quotedMessage, () => this.quotedMessage.serialize(writer)); - if (typeof this.remoteJid === "string" && this.remoteJid.length) + if (this.has_remoteJid && this.remoteJid.length) writer.writeString(4, this.remoteJid); - if (this.mentionedJid !== undefined) + if (this.mentionedJid.length) writer.writeRepeatedString(15, this.mentionedJid); - if (typeof this.conversionSource === "string" && this.conversionSource.length) + if (this.has_conversionSource && this.conversionSource.length) writer.writeString(18, this.conversionSource); - if (this.conversionData !== undefined) + if (this.has_conversionData && this.conversionData.length) writer.writeBytes(19, this.conversionData); - if (this.conversionDelaySeconds !== undefined) + if (this.has_conversionDelaySeconds) writer.writeUint32(20, this.conversionDelaySeconds); - if (this.forwardingScore !== undefined) + if (this.has_forwardingScore) writer.writeUint32(21, this.forwardingScore); - if (this.isForwarded !== undefined) + if (this.has_isForwarded) writer.writeBool(22, this.isForwarded); - if (this.quotedAd !== undefined) + if (this.has_quotedAd) writer.writeMessage(23, this.quotedAd, () => this.quotedAd.serialize(writer)); - if (this.placeholderKey !== undefined) + if (this.has_placeholderKey) writer.writeMessage(24, this.placeholderKey, () => this.placeholderKey.serialize(writer)); - if (this.expiration !== undefined) + if (this.has_expiration) writer.writeUint32(25, this.expiration); - if (this.ephemeralSettingTimestamp !== undefined) + if (this.has_ephemeralSettingTimestamp) writer.writeInt64(26, this.ephemeralSettingTimestamp); - if (this.ephemeralSharedSecret !== undefined) + if (this.has_ephemeralSharedSecret && this.ephemeralSharedSecret.length) writer.writeBytes(27, this.ephemeralSharedSecret); if (!w) return writer.getResultBuffer(); @@ -1747,17 +1886,23 @@ export class SenderKeyDistributionMessage extends pb_1.Message { } } get groupId() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set groupId(value: string) { pb_1.Message.setField(this, 1, value); } + get has_groupId() { + return pb_1.Message.getField(this, 1) != null; + } get axolotlSenderKeyDistributionMessage() { - return pb_1.Message.getField(this, 2) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 2, new Uint8Array()) as Uint8Array; } set axolotlSenderKeyDistributionMessage(value: Uint8Array) { pb_1.Message.setField(this, 2, value); } + get has_axolotlSenderKeyDistributionMessage() { + return pb_1.Message.getField(this, 2) != null; + } static fromObject(data: { groupId?: string; axolotlSenderKeyDistributionMessage?: Uint8Array; @@ -1788,9 +1933,9 @@ export class SenderKeyDistributionMessage extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.groupId === "string" && this.groupId.length) + if (this.has_groupId && this.groupId.length) writer.writeString(1, this.groupId); - if (this.axolotlSenderKeyDistributionMessage !== undefined) + if (this.has_axolotlSenderKeyDistributionMessage && this.axolotlSenderKeyDistributionMessage.length) writer.writeBytes(2, this.axolotlSenderKeyDistributionMessage); if (!w) return writer.getResultBuffer(); @@ -1909,59 +2054,86 @@ export class ImageMessage extends pb_1.Message { } } get url() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set url(value: string) { pb_1.Message.setField(this, 1, value); } + get has_url() { + return pb_1.Message.getField(this, 1) != null; + } get mimetype() { - return pb_1.Message.getField(this, 2) as string; + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; } set mimetype(value: string) { pb_1.Message.setField(this, 2, value); } + get has_mimetype() { + return pb_1.Message.getField(this, 2) != null; + } get caption() { - return pb_1.Message.getField(this, 3) as string; + return pb_1.Message.getFieldWithDefault(this, 3, "") as string; } set caption(value: string) { pb_1.Message.setField(this, 3, value); } + get has_caption() { + return pb_1.Message.getField(this, 3) != null; + } get fileSha256() { - return pb_1.Message.getField(this, 4) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 4, new Uint8Array()) as Uint8Array; } set fileSha256(value: Uint8Array) { pb_1.Message.setField(this, 4, value); } + get has_fileSha256() { + return pb_1.Message.getField(this, 4) != null; + } get fileLength() { - return pb_1.Message.getField(this, 5) as number; + return pb_1.Message.getFieldWithDefault(this, 5, 0) as number; } set fileLength(value: number) { pb_1.Message.setField(this, 5, value); } + get has_fileLength() { + return pb_1.Message.getField(this, 5) != null; + } get height() { - return pb_1.Message.getField(this, 6) as number; + return pb_1.Message.getFieldWithDefault(this, 6, 0) as number; } set height(value: number) { pb_1.Message.setField(this, 6, value); } + get has_height() { + return pb_1.Message.getField(this, 6) != null; + } get width() { - return pb_1.Message.getField(this, 7) as number; + return pb_1.Message.getFieldWithDefault(this, 7, 0) as number; } set width(value: number) { pb_1.Message.setField(this, 7, value); } + get has_width() { + return pb_1.Message.getField(this, 7) != null; + } get mediaKey() { - return pb_1.Message.getField(this, 8) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 8, new Uint8Array()) as Uint8Array; } set mediaKey(value: Uint8Array) { pb_1.Message.setField(this, 8, value); } + get has_mediaKey() { + return pb_1.Message.getField(this, 8) != null; + } get fileEncSha256() { - return pb_1.Message.getField(this, 9) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 9, new Uint8Array()) as Uint8Array; } set fileEncSha256(value: Uint8Array) { pb_1.Message.setField(this, 9, value); } + get has_fileEncSha256() { + return pb_1.Message.getField(this, 9) != null; + } get interactiveAnnotations() { return pb_1.Message.getRepeatedWrapperField(this, InteractiveAnnotation, 10) as InteractiveAnnotation[]; } @@ -1969,71 +2141,101 @@ export class ImageMessage extends pb_1.Message { pb_1.Message.setRepeatedWrapperField(this, 10, value); } get directPath() { - return pb_1.Message.getField(this, 11) as string; + return pb_1.Message.getFieldWithDefault(this, 11, "") as string; } set directPath(value: string) { pb_1.Message.setField(this, 11, value); } + get has_directPath() { + return pb_1.Message.getField(this, 11) != null; + } get mediaKeyTimestamp() { - return pb_1.Message.getField(this, 12) as number; + return pb_1.Message.getFieldWithDefault(this, 12, 0) as number; } set mediaKeyTimestamp(value: number) { pb_1.Message.setField(this, 12, value); } + get has_mediaKeyTimestamp() { + return pb_1.Message.getField(this, 12) != null; + } get jpegThumbnail() { - return pb_1.Message.getField(this, 16) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 16, new Uint8Array()) as Uint8Array; } set jpegThumbnail(value: Uint8Array) { pb_1.Message.setField(this, 16, value); } + get has_jpegThumbnail() { + return pb_1.Message.getField(this, 16) != null; + } get contextInfo() { return pb_1.Message.getWrapperField(this, ContextInfo, 17) as ContextInfo; } set contextInfo(value: ContextInfo) { pb_1.Message.setWrapperField(this, 17, value); } + get has_contextInfo() { + return pb_1.Message.getField(this, 17) != null; + } get firstScanSidecar() { - return pb_1.Message.getField(this, 18) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 18, new Uint8Array()) as Uint8Array; } set firstScanSidecar(value: Uint8Array) { pb_1.Message.setField(this, 18, value); } + get has_firstScanSidecar() { + return pb_1.Message.getField(this, 18) != null; + } get firstScanLength() { - return pb_1.Message.getField(this, 19) as number; + return pb_1.Message.getFieldWithDefault(this, 19, 0) as number; } set firstScanLength(value: number) { pb_1.Message.setField(this, 19, value); } + get has_firstScanLength() { + return pb_1.Message.getField(this, 19) != null; + } get experimentGroupId() { - return pb_1.Message.getField(this, 20) as number; + return pb_1.Message.getFieldWithDefault(this, 20, 0) as number; } set experimentGroupId(value: number) { pb_1.Message.setField(this, 20, value); } + get has_experimentGroupId() { + return pb_1.Message.getField(this, 20) != null; + } get scansSidecar() { - return pb_1.Message.getField(this, 21) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 21, new Uint8Array()) as Uint8Array; } set scansSidecar(value: Uint8Array) { pb_1.Message.setField(this, 21, value); } + get has_scansSidecar() { + return pb_1.Message.getField(this, 21) != null; + } get scanLengths() { - return pb_1.Message.getField(this, 22) as number[]; + return pb_1.Message.getFieldWithDefault(this, 22, []) as number[]; } set scanLengths(value: number[]) { pb_1.Message.setField(this, 22, value); } get midQualityFileSha256() { - return pb_1.Message.getField(this, 23) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 23, new Uint8Array()) as Uint8Array; } set midQualityFileSha256(value: Uint8Array) { pb_1.Message.setField(this, 23, value); } + get has_midQualityFileSha256() { + return pb_1.Message.getField(this, 23) != null; + } get midQualityFileEncSha256() { - return pb_1.Message.getField(this, 24) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 24, new Uint8Array()) as Uint8Array; } set midQualityFileEncSha256(value: Uint8Array) { pb_1.Message.setField(this, 24, value); } + get has_midQualityFileEncSha256() { + return pb_1.Message.getField(this, 24) != null; + } static fromObject(data: { url?: string; mimetype?: string; @@ -2044,7 +2246,7 @@ export class ImageMessage extends pb_1.Message { width?: number; mediaKey?: Uint8Array; fileEncSha256?: Uint8Array; - interactiveAnnotations: ReturnType[]; + interactiveAnnotations?: ReturnType[]; directPath?: string; mediaKeyTimestamp?: number; jpegThumbnail?: Uint8Array; @@ -2131,7 +2333,7 @@ export class ImageMessage extends pb_1.Message { width?: number; mediaKey?: Uint8Array; fileEncSha256?: Uint8Array; - interactiveAnnotations: ReturnType[]; + interactiveAnnotations?: ReturnType[]; directPath?: string; mediaKeyTimestamp?: number; jpegThumbnail?: Uint8Array; @@ -2144,7 +2346,6 @@ export class ImageMessage extends pb_1.Message { midQualityFileSha256?: Uint8Array; midQualityFileEncSha256?: Uint8Array; } = { - interactiveAnnotations: this.interactiveAnnotations.map((item: InteractiveAnnotation) => item.toObject()), scanLengths: this.scanLengths }; if (this.url != null) { @@ -2174,6 +2375,9 @@ export class ImageMessage extends pb_1.Message { if (this.fileEncSha256 != null) { data.fileEncSha256 = this.fileEncSha256; } + if (this.interactiveAnnotations != null) { + data.interactiveAnnotations = this.interactiveAnnotations.map((item: InteractiveAnnotation) => item.toObject()); + } if (this.directPath != null) { data.directPath = this.directPath; } @@ -2210,47 +2414,47 @@ export class ImageMessage extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.url === "string" && this.url.length) + if (this.has_url && this.url.length) writer.writeString(1, this.url); - if (typeof this.mimetype === "string" && this.mimetype.length) + if (this.has_mimetype && this.mimetype.length) writer.writeString(2, this.mimetype); - if (typeof this.caption === "string" && this.caption.length) + if (this.has_caption && this.caption.length) writer.writeString(3, this.caption); - if (this.fileSha256 !== undefined) + if (this.has_fileSha256 && this.fileSha256.length) writer.writeBytes(4, this.fileSha256); - if (this.fileLength !== undefined) + if (this.has_fileLength) writer.writeUint64(5, this.fileLength); - if (this.height !== undefined) + if (this.has_height) writer.writeUint32(6, this.height); - if (this.width !== undefined) + if (this.has_width) writer.writeUint32(7, this.width); - if (this.mediaKey !== undefined) + if (this.has_mediaKey && this.mediaKey.length) writer.writeBytes(8, this.mediaKey); - if (this.fileEncSha256 !== undefined) + if (this.has_fileEncSha256 && this.fileEncSha256.length) writer.writeBytes(9, this.fileEncSha256); - if (this.interactiveAnnotations !== undefined) + if (this.interactiveAnnotations.length) writer.writeRepeatedMessage(10, this.interactiveAnnotations, (item: InteractiveAnnotation) => item.serialize(writer)); - if (typeof this.directPath === "string" && this.directPath.length) + if (this.has_directPath && this.directPath.length) writer.writeString(11, this.directPath); - if (this.mediaKeyTimestamp !== undefined) + if (this.has_mediaKeyTimestamp) writer.writeInt64(12, this.mediaKeyTimestamp); - if (this.jpegThumbnail !== undefined) + if (this.has_jpegThumbnail && this.jpegThumbnail.length) writer.writeBytes(16, this.jpegThumbnail); - if (this.contextInfo !== undefined) + if (this.has_contextInfo) writer.writeMessage(17, this.contextInfo, () => this.contextInfo.serialize(writer)); - if (this.firstScanSidecar !== undefined) + if (this.has_firstScanSidecar && this.firstScanSidecar.length) writer.writeBytes(18, this.firstScanSidecar); - if (this.firstScanLength !== undefined) + if (this.has_firstScanLength) writer.writeUint32(19, this.firstScanLength); - if (this.experimentGroupId !== undefined) + if (this.has_experimentGroupId) writer.writeUint32(20, this.experimentGroupId); - if (this.scansSidecar !== undefined) + if (this.has_scansSidecar && this.scansSidecar.length) writer.writeBytes(21, this.scansSidecar); - if (this.scanLengths !== undefined) + if (this.scanLengths.length) writer.writeRepeatedUint32(22, this.scanLengths); - if (this.midQualityFileSha256 !== undefined) + if (this.has_midQualityFileSha256 && this.midQualityFileSha256.length) writer.writeBytes(23, this.midQualityFileSha256); - if (this.midQualityFileEncSha256 !== undefined) + if (this.has_midQualityFileEncSha256 && this.midQualityFileEncSha256.length) writer.writeBytes(24, this.midQualityFileEncSha256); if (!w) return writer.getResultBuffer(); @@ -2358,23 +2562,32 @@ export class ContactMessage extends pb_1.Message { } } get displayName() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set displayName(value: string) { pb_1.Message.setField(this, 1, value); } + get has_displayName() { + return pb_1.Message.getField(this, 1) != null; + } get vcard() { - return pb_1.Message.getField(this, 16) as string; + return pb_1.Message.getFieldWithDefault(this, 16, "") as string; } set vcard(value: string) { pb_1.Message.setField(this, 16, value); } + get has_vcard() { + return pb_1.Message.getField(this, 16) != null; + } get contextInfo() { return pb_1.Message.getWrapperField(this, ContextInfo, 17) as ContextInfo; } set contextInfo(value: ContextInfo) { pb_1.Message.setWrapperField(this, 17, value); } + get has_contextInfo() { + return pb_1.Message.getField(this, 17) != null; + } static fromObject(data: { displayName?: string; vcard?: string; @@ -2413,11 +2626,11 @@ export class ContactMessage extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.displayName === "string" && this.displayName.length) + if (this.has_displayName && this.displayName.length) writer.writeString(1, this.displayName); - if (typeof this.vcard === "string" && this.vcard.length) + if (this.has_vcard && this.vcard.length) writer.writeString(16, this.vcard); - if (this.contextInfo !== undefined) + if (this.has_contextInfo) writer.writeMessage(17, this.contextInfo, () => this.contextInfo.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -2507,77 +2720,113 @@ export class LocationMessage extends pb_1.Message { } } get degreesLatitude() { - return pb_1.Message.getField(this, 1) as number; + return pb_1.Message.getFieldWithDefault(this, 1, 0) as number; } set degreesLatitude(value: number) { pb_1.Message.setField(this, 1, value); } + get has_degreesLatitude() { + return pb_1.Message.getField(this, 1) != null; + } get degreesLongitude() { - return pb_1.Message.getField(this, 2) as number; + return pb_1.Message.getFieldWithDefault(this, 2, 0) as number; } set degreesLongitude(value: number) { pb_1.Message.setField(this, 2, value); } + get has_degreesLongitude() { + return pb_1.Message.getField(this, 2) != null; + } get name() { - return pb_1.Message.getField(this, 3) as string; + return pb_1.Message.getFieldWithDefault(this, 3, "") as string; } set name(value: string) { pb_1.Message.setField(this, 3, value); } + get has_name() { + return pb_1.Message.getField(this, 3) != null; + } get address() { - return pb_1.Message.getField(this, 4) as string; + return pb_1.Message.getFieldWithDefault(this, 4, "") as string; } set address(value: string) { pb_1.Message.setField(this, 4, value); } + get has_address() { + return pb_1.Message.getField(this, 4) != null; + } get url() { - return pb_1.Message.getField(this, 5) as string; + return pb_1.Message.getFieldWithDefault(this, 5, "") as string; } set url(value: string) { pb_1.Message.setField(this, 5, value); } + get has_url() { + return pb_1.Message.getField(this, 5) != null; + } get isLive() { - return pb_1.Message.getField(this, 6) as boolean; + return pb_1.Message.getFieldWithDefault(this, 6, false) as boolean; } set isLive(value: boolean) { pb_1.Message.setField(this, 6, value); } + get has_isLive() { + return pb_1.Message.getField(this, 6) != null; + } get accuracyInMeters() { - return pb_1.Message.getField(this, 7) as number; + return pb_1.Message.getFieldWithDefault(this, 7, 0) as number; } set accuracyInMeters(value: number) { pb_1.Message.setField(this, 7, value); } + get has_accuracyInMeters() { + return pb_1.Message.getField(this, 7) != null; + } get speedInMps() { - return pb_1.Message.getField(this, 8) as number; + return pb_1.Message.getFieldWithDefault(this, 8, 0) as number; } set speedInMps(value: number) { pb_1.Message.setField(this, 8, value); } + get has_speedInMps() { + return pb_1.Message.getField(this, 8) != null; + } get degreesClockwiseFromMagneticNorth() { - return pb_1.Message.getField(this, 9) as number; + return pb_1.Message.getFieldWithDefault(this, 9, 0) as number; } set degreesClockwiseFromMagneticNorth(value: number) { pb_1.Message.setField(this, 9, value); } + get has_degreesClockwiseFromMagneticNorth() { + return pb_1.Message.getField(this, 9) != null; + } get comment() { - return pb_1.Message.getField(this, 11) as string; + return pb_1.Message.getFieldWithDefault(this, 11, "") as string; } set comment(value: string) { pb_1.Message.setField(this, 11, value); } + get has_comment() { + return pb_1.Message.getField(this, 11) != null; + } get jpegThumbnail() { - return pb_1.Message.getField(this, 16) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 16, new Uint8Array()) as Uint8Array; } set jpegThumbnail(value: Uint8Array) { pb_1.Message.setField(this, 16, value); } + get has_jpegThumbnail() { + return pb_1.Message.getField(this, 16) != null; + } get contextInfo() { return pb_1.Message.getWrapperField(this, ContextInfo, 17) as ContextInfo; } set contextInfo(value: ContextInfo) { pb_1.Message.setWrapperField(this, 17, value); } + get has_contextInfo() { + return pb_1.Message.getField(this, 17) != null; + } static fromObject(data: { degreesLatitude?: number; degreesLongitude?: number; @@ -2688,29 +2937,29 @@ export class LocationMessage extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.degreesLatitude !== undefined) + if (this.has_degreesLatitude) writer.writeDouble(1, this.degreesLatitude); - if (this.degreesLongitude !== undefined) + if (this.has_degreesLongitude) writer.writeDouble(2, this.degreesLongitude); - if (typeof this.name === "string" && this.name.length) + if (this.has_name && this.name.length) writer.writeString(3, this.name); - if (typeof this.address === "string" && this.address.length) + if (this.has_address && this.address.length) writer.writeString(4, this.address); - if (typeof this.url === "string" && this.url.length) + if (this.has_url && this.url.length) writer.writeString(5, this.url); - if (this.isLive !== undefined) + if (this.has_isLive) writer.writeBool(6, this.isLive); - if (this.accuracyInMeters !== undefined) + if (this.has_accuracyInMeters) writer.writeUint32(7, this.accuracyInMeters); - if (this.speedInMps !== undefined) + if (this.has_speedInMps) writer.writeFloat(8, this.speedInMps); - if (this.degreesClockwiseFromMagneticNorth !== undefined) + if (this.has_degreesClockwiseFromMagneticNorth) writer.writeUint32(9, this.degreesClockwiseFromMagneticNorth); - if (typeof this.comment === "string" && this.comment.length) + if (this.has_comment && this.comment.length) writer.writeString(11, this.comment); - if (this.jpegThumbnail !== undefined) + if (this.has_jpegThumbnail && this.jpegThumbnail.length) writer.writeBytes(16, this.jpegThumbnail); - if (this.contextInfo !== undefined) + if (this.has_contextInfo) writer.writeMessage(17, this.contextInfo, () => this.contextInfo.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -2827,77 +3076,113 @@ export class ExtendedTextMessage extends pb_1.Message { } } get text() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set text(value: string) { pb_1.Message.setField(this, 1, value); } + get has_text() { + return pb_1.Message.getField(this, 1) != null; + } get matchedText() { - return pb_1.Message.getField(this, 2) as string; + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; } set matchedText(value: string) { pb_1.Message.setField(this, 2, value); } + get has_matchedText() { + return pb_1.Message.getField(this, 2) != null; + } get canonicalUrl() { - return pb_1.Message.getField(this, 4) as string; + return pb_1.Message.getFieldWithDefault(this, 4, "") as string; } set canonicalUrl(value: string) { pb_1.Message.setField(this, 4, value); } + get has_canonicalUrl() { + return pb_1.Message.getField(this, 4) != null; + } get description() { - return pb_1.Message.getField(this, 5) as string; + return pb_1.Message.getFieldWithDefault(this, 5, "") as string; } set description(value: string) { pb_1.Message.setField(this, 5, value); } + get has_description() { + return pb_1.Message.getField(this, 5) != null; + } get title() { - return pb_1.Message.getField(this, 6) as string; + return pb_1.Message.getFieldWithDefault(this, 6, "") as string; } set title(value: string) { pb_1.Message.setField(this, 6, value); } + get has_title() { + return pb_1.Message.getField(this, 6) != null; + } get textArgb() { - return pb_1.Message.getField(this, 7) as number; + return pb_1.Message.getFieldWithDefault(this, 7, 0) as number; } set textArgb(value: number) { pb_1.Message.setField(this, 7, value); } + get has_textArgb() { + return pb_1.Message.getField(this, 7) != null; + } get backgroundArgb() { - return pb_1.Message.getField(this, 8) as number; + return pb_1.Message.getFieldWithDefault(this, 8, 0) as number; } set backgroundArgb(value: number) { pb_1.Message.setField(this, 8, value); } + get has_backgroundArgb() { + return pb_1.Message.getField(this, 8) != null; + } get font() { - return pb_1.Message.getField(this, 9) as ExtendedTextMessage.EXTENDED_TEXT_MESSAGE_FONTTYPE; + return pb_1.Message.getFieldWithDefault(this, 9, ExtendedTextMessage.EXTENDED_TEXT_MESSAGE_FONTTYPE.SANS_SERIF) as ExtendedTextMessage.EXTENDED_TEXT_MESSAGE_FONTTYPE; } set font(value: ExtendedTextMessage.EXTENDED_TEXT_MESSAGE_FONTTYPE) { pb_1.Message.setField(this, 9, value); } + get has_font() { + return pb_1.Message.getField(this, 9) != null; + } get previewType() { - return pb_1.Message.getField(this, 10) as ExtendedTextMessage.EXTENDED_TEXT_MESSAGE_PREVIEWTYPE; + return pb_1.Message.getFieldWithDefault(this, 10, ExtendedTextMessage.EXTENDED_TEXT_MESSAGE_PREVIEWTYPE.NONE) as ExtendedTextMessage.EXTENDED_TEXT_MESSAGE_PREVIEWTYPE; } set previewType(value: ExtendedTextMessage.EXTENDED_TEXT_MESSAGE_PREVIEWTYPE) { pb_1.Message.setField(this, 10, value); } + get has_previewType() { + return pb_1.Message.getField(this, 10) != null; + } get jpegThumbnail() { - return pb_1.Message.getField(this, 16) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 16, new Uint8Array()) as Uint8Array; } set jpegThumbnail(value: Uint8Array) { pb_1.Message.setField(this, 16, value); } + get has_jpegThumbnail() { + return pb_1.Message.getField(this, 16) != null; + } get contextInfo() { return pb_1.Message.getWrapperField(this, ContextInfo, 17) as ContextInfo; } set contextInfo(value: ContextInfo) { pb_1.Message.setWrapperField(this, 17, value); } + get has_contextInfo() { + return pb_1.Message.getField(this, 17) != null; + } get doNotPlayInline() { - return pb_1.Message.getField(this, 18) as boolean; + return pb_1.Message.getFieldWithDefault(this, 18, false) as boolean; } set doNotPlayInline(value: boolean) { pb_1.Message.setField(this, 18, value); } + get has_doNotPlayInline() { + return pb_1.Message.getField(this, 18) != null; + } static fromObject(data: { text?: string; matchedText?: string; @@ -3008,29 +3293,29 @@ export class ExtendedTextMessage extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.text === "string" && this.text.length) + if (this.has_text && this.text.length) writer.writeString(1, this.text); - if (typeof this.matchedText === "string" && this.matchedText.length) + if (this.has_matchedText && this.matchedText.length) writer.writeString(2, this.matchedText); - if (typeof this.canonicalUrl === "string" && this.canonicalUrl.length) + if (this.has_canonicalUrl && this.canonicalUrl.length) writer.writeString(4, this.canonicalUrl); - if (typeof this.description === "string" && this.description.length) + if (this.has_description && this.description.length) writer.writeString(5, this.description); - if (typeof this.title === "string" && this.title.length) + if (this.has_title && this.title.length) writer.writeString(6, this.title); - if (this.textArgb !== undefined) + if (this.has_textArgb) writer.writeFixed32(7, this.textArgb); - if (this.backgroundArgb !== undefined) + if (this.has_backgroundArgb) writer.writeFixed32(8, this.backgroundArgb); - if (this.font !== undefined) + if (this.has_font) writer.writeEnum(9, this.font); - if (this.previewType !== undefined) + if (this.has_previewType) writer.writeEnum(10, this.previewType); - if (this.jpegThumbnail !== undefined) + if (this.has_jpegThumbnail && this.jpegThumbnail.length) writer.writeBytes(16, this.jpegThumbnail); - if (this.contextInfo !== undefined) + if (this.has_contextInfo) writer.writeMessage(17, this.contextInfo, () => this.contextInfo.serialize(writer)); - if (this.doNotPlayInline !== undefined) + if (this.has_doNotPlayInline) writer.writeBool(18, this.doNotPlayInline); if (!w) return writer.getResultBuffer(); @@ -3165,83 +3450,122 @@ export class DocumentMessage extends pb_1.Message { } } get url() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set url(value: string) { pb_1.Message.setField(this, 1, value); } + get has_url() { + return pb_1.Message.getField(this, 1) != null; + } get mimetype() { - return pb_1.Message.getField(this, 2) as string; + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; } set mimetype(value: string) { pb_1.Message.setField(this, 2, value); } + get has_mimetype() { + return pb_1.Message.getField(this, 2) != null; + } get title() { - return pb_1.Message.getField(this, 3) as string; + return pb_1.Message.getFieldWithDefault(this, 3, "") as string; } set title(value: string) { pb_1.Message.setField(this, 3, value); } + get has_title() { + return pb_1.Message.getField(this, 3) != null; + } get fileSha256() { - return pb_1.Message.getField(this, 4) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 4, new Uint8Array()) as Uint8Array; } set fileSha256(value: Uint8Array) { pb_1.Message.setField(this, 4, value); } + get has_fileSha256() { + return pb_1.Message.getField(this, 4) != null; + } get fileLength() { - return pb_1.Message.getField(this, 5) as number; + return pb_1.Message.getFieldWithDefault(this, 5, 0) as number; } set fileLength(value: number) { pb_1.Message.setField(this, 5, value); } + get has_fileLength() { + return pb_1.Message.getField(this, 5) != null; + } get pageCount() { - return pb_1.Message.getField(this, 6) as number; + return pb_1.Message.getFieldWithDefault(this, 6, 0) as number; } set pageCount(value: number) { pb_1.Message.setField(this, 6, value); } + get has_pageCount() { + return pb_1.Message.getField(this, 6) != null; + } get mediaKey() { - return pb_1.Message.getField(this, 7) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 7, new Uint8Array()) as Uint8Array; } set mediaKey(value: Uint8Array) { pb_1.Message.setField(this, 7, value); } + get has_mediaKey() { + return pb_1.Message.getField(this, 7) != null; + } get fileName() { - return pb_1.Message.getField(this, 8) as string; + return pb_1.Message.getFieldWithDefault(this, 8, "") as string; } set fileName(value: string) { pb_1.Message.setField(this, 8, value); } + get has_fileName() { + return pb_1.Message.getField(this, 8) != null; + } get fileEncSha256() { - return pb_1.Message.getField(this, 9) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 9, new Uint8Array()) as Uint8Array; } set fileEncSha256(value: Uint8Array) { pb_1.Message.setField(this, 9, value); } + get has_fileEncSha256() { + return pb_1.Message.getField(this, 9) != null; + } get directPath() { - return pb_1.Message.getField(this, 10) as string; + return pb_1.Message.getFieldWithDefault(this, 10, "") as string; } set directPath(value: string) { pb_1.Message.setField(this, 10, value); } + get has_directPath() { + return pb_1.Message.getField(this, 10) != null; + } get mediaKeyTimestamp() { - return pb_1.Message.getField(this, 11) as number; + return pb_1.Message.getFieldWithDefault(this, 11, 0) as number; } set mediaKeyTimestamp(value: number) { pb_1.Message.setField(this, 11, value); } + get has_mediaKeyTimestamp() { + return pb_1.Message.getField(this, 11) != null; + } get jpegThumbnail() { - return pb_1.Message.getField(this, 16) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 16, new Uint8Array()) as Uint8Array; } set jpegThumbnail(value: Uint8Array) { pb_1.Message.setField(this, 16, value); } + get has_jpegThumbnail() { + return pb_1.Message.getField(this, 16) != null; + } get contextInfo() { return pb_1.Message.getWrapperField(this, ContextInfo, 17) as ContextInfo; } set contextInfo(value: ContextInfo) { pb_1.Message.setWrapperField(this, 17, value); } + get has_contextInfo() { + return pb_1.Message.getField(this, 17) != null; + } static fromObject(data: { url?: string; mimetype?: string; @@ -3360,31 +3684,31 @@ export class DocumentMessage extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.url === "string" && this.url.length) + if (this.has_url && this.url.length) writer.writeString(1, this.url); - if (typeof this.mimetype === "string" && this.mimetype.length) + if (this.has_mimetype && this.mimetype.length) writer.writeString(2, this.mimetype); - if (typeof this.title === "string" && this.title.length) + if (this.has_title && this.title.length) writer.writeString(3, this.title); - if (this.fileSha256 !== undefined) + if (this.has_fileSha256 && this.fileSha256.length) writer.writeBytes(4, this.fileSha256); - if (this.fileLength !== undefined) + if (this.has_fileLength) writer.writeUint64(5, this.fileLength); - if (this.pageCount !== undefined) + if (this.has_pageCount) writer.writeUint32(6, this.pageCount); - if (this.mediaKey !== undefined) + if (this.has_mediaKey && this.mediaKey.length) writer.writeBytes(7, this.mediaKey); - if (typeof this.fileName === "string" && this.fileName.length) + if (this.has_fileName && this.fileName.length) writer.writeString(8, this.fileName); - if (this.fileEncSha256 !== undefined) + if (this.has_fileEncSha256 && this.fileEncSha256.length) writer.writeBytes(9, this.fileEncSha256); - if (typeof this.directPath === "string" && this.directPath.length) + if (this.has_directPath && this.directPath.length) writer.writeString(10, this.directPath); - if (this.mediaKeyTimestamp !== undefined) + if (this.has_mediaKeyTimestamp) writer.writeInt64(11, this.mediaKeyTimestamp); - if (this.jpegThumbnail !== undefined) + if (this.has_jpegThumbnail && this.jpegThumbnail.length) writer.writeBytes(16, this.jpegThumbnail); - if (this.contextInfo !== undefined) + if (this.has_contextInfo) writer.writeMessage(17, this.contextInfo, () => this.contextInfo.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -3504,77 +3828,113 @@ export class AudioMessage extends pb_1.Message { } } get url() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set url(value: string) { pb_1.Message.setField(this, 1, value); } + get has_url() { + return pb_1.Message.getField(this, 1) != null; + } get mimetype() { - return pb_1.Message.getField(this, 2) as string; + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; } set mimetype(value: string) { pb_1.Message.setField(this, 2, value); } + get has_mimetype() { + return pb_1.Message.getField(this, 2) != null; + } get fileSha256() { - return pb_1.Message.getField(this, 3) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 3, new Uint8Array()) as Uint8Array; } set fileSha256(value: Uint8Array) { pb_1.Message.setField(this, 3, value); } + get has_fileSha256() { + return pb_1.Message.getField(this, 3) != null; + } get fileLength() { - return pb_1.Message.getField(this, 4) as number; + return pb_1.Message.getFieldWithDefault(this, 4, 0) as number; } set fileLength(value: number) { pb_1.Message.setField(this, 4, value); } + get has_fileLength() { + return pb_1.Message.getField(this, 4) != null; + } get seconds() { - return pb_1.Message.getField(this, 5) as number; + return pb_1.Message.getFieldWithDefault(this, 5, 0) as number; } set seconds(value: number) { pb_1.Message.setField(this, 5, value); } + get has_seconds() { + return pb_1.Message.getField(this, 5) != null; + } get ptt() { - return pb_1.Message.getField(this, 6) as boolean; + return pb_1.Message.getFieldWithDefault(this, 6, false) as boolean; } set ptt(value: boolean) { pb_1.Message.setField(this, 6, value); } + get has_ptt() { + return pb_1.Message.getField(this, 6) != null; + } get mediaKey() { - return pb_1.Message.getField(this, 7) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 7, new Uint8Array()) as Uint8Array; } set mediaKey(value: Uint8Array) { pb_1.Message.setField(this, 7, value); } + get has_mediaKey() { + return pb_1.Message.getField(this, 7) != null; + } get fileEncSha256() { - return pb_1.Message.getField(this, 8) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 8, new Uint8Array()) as Uint8Array; } set fileEncSha256(value: Uint8Array) { pb_1.Message.setField(this, 8, value); } + get has_fileEncSha256() { + return pb_1.Message.getField(this, 8) != null; + } get directPath() { - return pb_1.Message.getField(this, 9) as string; + return pb_1.Message.getFieldWithDefault(this, 9, "") as string; } set directPath(value: string) { pb_1.Message.setField(this, 9, value); } + get has_directPath() { + return pb_1.Message.getField(this, 9) != null; + } get mediaKeyTimestamp() { - return pb_1.Message.getField(this, 10) as number; + return pb_1.Message.getFieldWithDefault(this, 10, 0) as number; } set mediaKeyTimestamp(value: number) { pb_1.Message.setField(this, 10, value); } + get has_mediaKeyTimestamp() { + return pb_1.Message.getField(this, 10) != null; + } get contextInfo() { return pb_1.Message.getWrapperField(this, ContextInfo, 17) as ContextInfo; } set contextInfo(value: ContextInfo) { pb_1.Message.setWrapperField(this, 17, value); } + get has_contextInfo() { + return pb_1.Message.getField(this, 17) != null; + } get streamingSidecar() { - return pb_1.Message.getField(this, 18) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 18, new Uint8Array()) as Uint8Array; } set streamingSidecar(value: Uint8Array) { pb_1.Message.setField(this, 18, value); } + get has_streamingSidecar() { + return pb_1.Message.getField(this, 18) != null; + } static fromObject(data: { url?: string; mimetype?: string; @@ -3685,29 +4045,29 @@ export class AudioMessage extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.url === "string" && this.url.length) + if (this.has_url && this.url.length) writer.writeString(1, this.url); - if (typeof this.mimetype === "string" && this.mimetype.length) + if (this.has_mimetype && this.mimetype.length) writer.writeString(2, this.mimetype); - if (this.fileSha256 !== undefined) + if (this.has_fileSha256 && this.fileSha256.length) writer.writeBytes(3, this.fileSha256); - if (this.fileLength !== undefined) + if (this.has_fileLength) writer.writeUint64(4, this.fileLength); - if (this.seconds !== undefined) + if (this.has_seconds) writer.writeUint32(5, this.seconds); - if (this.ptt !== undefined) + if (this.has_ptt) writer.writeBool(6, this.ptt); - if (this.mediaKey !== undefined) + if (this.has_mediaKey && this.mediaKey.length) writer.writeBytes(7, this.mediaKey); - if (this.fileEncSha256 !== undefined) + if (this.has_fileEncSha256 && this.fileEncSha256.length) writer.writeBytes(8, this.fileEncSha256); - if (typeof this.directPath === "string" && this.directPath.length) + if (this.has_directPath && this.directPath.length) writer.writeString(9, this.directPath); - if (this.mediaKeyTimestamp !== undefined) + if (this.has_mediaKeyTimestamp) writer.writeInt64(10, this.mediaKeyTimestamp); - if (this.contextInfo !== undefined) + if (this.has_contextInfo) writer.writeMessage(17, this.contextInfo, () => this.contextInfo.serialize(writer)); - if (this.streamingSidecar !== undefined) + if (this.has_streamingSidecar && this.streamingSidecar.length) writer.writeBytes(18, this.streamingSidecar); if (!w) return writer.getResultBuffer(); @@ -3846,71 +4206,104 @@ export class VideoMessage extends pb_1.Message { } } get url() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set url(value: string) { pb_1.Message.setField(this, 1, value); } + get has_url() { + return pb_1.Message.getField(this, 1) != null; + } get mimetype() { - return pb_1.Message.getField(this, 2) as string; + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; } set mimetype(value: string) { pb_1.Message.setField(this, 2, value); } + get has_mimetype() { + return pb_1.Message.getField(this, 2) != null; + } get fileSha256() { - return pb_1.Message.getField(this, 3) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 3, new Uint8Array()) as Uint8Array; } set fileSha256(value: Uint8Array) { pb_1.Message.setField(this, 3, value); } + get has_fileSha256() { + return pb_1.Message.getField(this, 3) != null; + } get fileLength() { - return pb_1.Message.getField(this, 4) as number; + return pb_1.Message.getFieldWithDefault(this, 4, 0) as number; } set fileLength(value: number) { pb_1.Message.setField(this, 4, value); } + get has_fileLength() { + return pb_1.Message.getField(this, 4) != null; + } get seconds() { - return pb_1.Message.getField(this, 5) as number; + return pb_1.Message.getFieldWithDefault(this, 5, 0) as number; } set seconds(value: number) { pb_1.Message.setField(this, 5, value); } + get has_seconds() { + return pb_1.Message.getField(this, 5) != null; + } get mediaKey() { - return pb_1.Message.getField(this, 6) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 6, new Uint8Array()) as Uint8Array; } set mediaKey(value: Uint8Array) { pb_1.Message.setField(this, 6, value); } + get has_mediaKey() { + return pb_1.Message.getField(this, 6) != null; + } get caption() { - return pb_1.Message.getField(this, 7) as string; + return pb_1.Message.getFieldWithDefault(this, 7, "") as string; } set caption(value: string) { pb_1.Message.setField(this, 7, value); } + get has_caption() { + return pb_1.Message.getField(this, 7) != null; + } get gifPlayback() { - return pb_1.Message.getField(this, 8) as boolean; + return pb_1.Message.getFieldWithDefault(this, 8, false) as boolean; } set gifPlayback(value: boolean) { pb_1.Message.setField(this, 8, value); } + get has_gifPlayback() { + return pb_1.Message.getField(this, 8) != null; + } get height() { - return pb_1.Message.getField(this, 9) as number; + return pb_1.Message.getFieldWithDefault(this, 9, 0) as number; } set height(value: number) { pb_1.Message.setField(this, 9, value); } + get has_height() { + return pb_1.Message.getField(this, 9) != null; + } get width() { - return pb_1.Message.getField(this, 10) as number; + return pb_1.Message.getFieldWithDefault(this, 10, 0) as number; } set width(value: number) { pb_1.Message.setField(this, 10, value); } + get has_width() { + return pb_1.Message.getField(this, 10) != null; + } get fileEncSha256() { - return pb_1.Message.getField(this, 11) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 11, new Uint8Array()) as Uint8Array; } set fileEncSha256(value: Uint8Array) { pb_1.Message.setField(this, 11, value); } + get has_fileEncSha256() { + return pb_1.Message.getField(this, 11) != null; + } get interactiveAnnotations() { return pb_1.Message.getRepeatedWrapperField(this, InteractiveAnnotation, 12) as InteractiveAnnotation[]; } @@ -3918,41 +4311,59 @@ export class VideoMessage extends pb_1.Message { pb_1.Message.setRepeatedWrapperField(this, 12, value); } get directPath() { - return pb_1.Message.getField(this, 13) as string; + return pb_1.Message.getFieldWithDefault(this, 13, "") as string; } set directPath(value: string) { pb_1.Message.setField(this, 13, value); } + get has_directPath() { + return pb_1.Message.getField(this, 13) != null; + } get mediaKeyTimestamp() { - return pb_1.Message.getField(this, 14) as number; + return pb_1.Message.getFieldWithDefault(this, 14, 0) as number; } set mediaKeyTimestamp(value: number) { pb_1.Message.setField(this, 14, value); } + get has_mediaKeyTimestamp() { + return pb_1.Message.getField(this, 14) != null; + } get jpegThumbnail() { - return pb_1.Message.getField(this, 16) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 16, new Uint8Array()) as Uint8Array; } set jpegThumbnail(value: Uint8Array) { pb_1.Message.setField(this, 16, value); } + get has_jpegThumbnail() { + return pb_1.Message.getField(this, 16) != null; + } get contextInfo() { return pb_1.Message.getWrapperField(this, ContextInfo, 17) as ContextInfo; } set contextInfo(value: ContextInfo) { pb_1.Message.setWrapperField(this, 17, value); } + get has_contextInfo() { + return pb_1.Message.getField(this, 17) != null; + } get streamingSidecar() { - return pb_1.Message.getField(this, 18) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 18, new Uint8Array()) as Uint8Array; } set streamingSidecar(value: Uint8Array) { pb_1.Message.setField(this, 18, value); } + get has_streamingSidecar() { + return pb_1.Message.getField(this, 18) != null; + } get gifAttribution() { - return pb_1.Message.getField(this, 19) as VideoMessage.VIDEO_MESSAGE_ATTRIBUTION; + return pb_1.Message.getFieldWithDefault(this, 19, VideoMessage.VIDEO_MESSAGE_ATTRIBUTION.NONE) as VideoMessage.VIDEO_MESSAGE_ATTRIBUTION; } set gifAttribution(value: VideoMessage.VIDEO_MESSAGE_ATTRIBUTION) { pb_1.Message.setField(this, 19, value); } + get has_gifAttribution() { + return pb_1.Message.getField(this, 19) != null; + } static fromObject(data: { url?: string; mimetype?: string; @@ -3965,7 +4376,7 @@ export class VideoMessage extends pb_1.Message { height?: number; width?: number; fileEncSha256?: Uint8Array; - interactiveAnnotations: ReturnType[]; + interactiveAnnotations?: ReturnType[]; directPath?: string; mediaKeyTimestamp?: number; jpegThumbnail?: Uint8Array; @@ -4042,16 +4453,14 @@ export class VideoMessage extends pb_1.Message { height?: number; width?: number; fileEncSha256?: Uint8Array; - interactiveAnnotations: ReturnType[]; + interactiveAnnotations?: ReturnType[]; directPath?: string; mediaKeyTimestamp?: number; jpegThumbnail?: Uint8Array; contextInfo?: ReturnType; streamingSidecar?: Uint8Array; gifAttribution?: VideoMessage.VIDEO_MESSAGE_ATTRIBUTION; - } = { - interactiveAnnotations: this.interactiveAnnotations.map((item: InteractiveAnnotation) => item.toObject()) - }; + } = {}; if (this.url != null) { data.url = this.url; } @@ -4085,6 +4494,9 @@ export class VideoMessage extends pb_1.Message { if (this.fileEncSha256 != null) { data.fileEncSha256 = this.fileEncSha256; } + if (this.interactiveAnnotations != null) { + data.interactiveAnnotations = this.interactiveAnnotations.map((item: InteractiveAnnotation) => item.toObject()); + } if (this.directPath != null) { data.directPath = this.directPath; } @@ -4109,41 +4521,41 @@ export class VideoMessage extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.url === "string" && this.url.length) + if (this.has_url && this.url.length) writer.writeString(1, this.url); - if (typeof this.mimetype === "string" && this.mimetype.length) + if (this.has_mimetype && this.mimetype.length) writer.writeString(2, this.mimetype); - if (this.fileSha256 !== undefined) + if (this.has_fileSha256 && this.fileSha256.length) writer.writeBytes(3, this.fileSha256); - if (this.fileLength !== undefined) + if (this.has_fileLength) writer.writeUint64(4, this.fileLength); - if (this.seconds !== undefined) + if (this.has_seconds) writer.writeUint32(5, this.seconds); - if (this.mediaKey !== undefined) + if (this.has_mediaKey && this.mediaKey.length) writer.writeBytes(6, this.mediaKey); - if (typeof this.caption === "string" && this.caption.length) + if (this.has_caption && this.caption.length) writer.writeString(7, this.caption); - if (this.gifPlayback !== undefined) + if (this.has_gifPlayback) writer.writeBool(8, this.gifPlayback); - if (this.height !== undefined) + if (this.has_height) writer.writeUint32(9, this.height); - if (this.width !== undefined) + if (this.has_width) writer.writeUint32(10, this.width); - if (this.fileEncSha256 !== undefined) + if (this.has_fileEncSha256 && this.fileEncSha256.length) writer.writeBytes(11, this.fileEncSha256); - if (this.interactiveAnnotations !== undefined) + if (this.interactiveAnnotations.length) writer.writeRepeatedMessage(12, this.interactiveAnnotations, (item: InteractiveAnnotation) => item.serialize(writer)); - if (typeof this.directPath === "string" && this.directPath.length) + if (this.has_directPath && this.directPath.length) writer.writeString(13, this.directPath); - if (this.mediaKeyTimestamp !== undefined) + if (this.has_mediaKeyTimestamp) writer.writeInt64(14, this.mediaKeyTimestamp); - if (this.jpegThumbnail !== undefined) + if (this.has_jpegThumbnail && this.jpegThumbnail.length) writer.writeBytes(16, this.jpegThumbnail); - if (this.contextInfo !== undefined) + if (this.has_contextInfo) writer.writeMessage(17, this.contextInfo, () => this.contextInfo.serialize(writer)); - if (this.streamingSidecar !== undefined) + if (this.has_streamingSidecar && this.streamingSidecar.length) writer.writeBytes(18, this.streamingSidecar); - if (this.gifAttribution !== undefined) + if (this.has_gifAttribution) writer.writeEnum(19, this.gifAttribution); if (!w) return writer.getResultBuffer(); @@ -4241,11 +4653,14 @@ export class Call extends pb_1.Message { } } get callKey() { - return pb_1.Message.getField(this, 1) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 1, new Uint8Array()) as Uint8Array; } set callKey(value: Uint8Array) { pb_1.Message.setField(this, 1, value); } + get has_callKey() { + return pb_1.Message.getField(this, 1) != null; + } static fromObject(data: { callKey?: Uint8Array; }): Call { @@ -4268,7 +4683,7 @@ export class Call extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.callKey !== undefined) + if (this.has_callKey && this.callKey.length) writer.writeBytes(1, this.callKey); if (!w) return writer.getResultBuffer(); @@ -4312,17 +4727,23 @@ export class Chat extends pb_1.Message { } } get displayName() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set displayName(value: string) { pb_1.Message.setField(this, 1, value); } + get has_displayName() { + return pb_1.Message.getField(this, 1) != null; + } get id() { - return pb_1.Message.getField(this, 2) as string; + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; } set id(value: string) { pb_1.Message.setField(this, 2, value); } + get has_id() { + return pb_1.Message.getField(this, 2) != null; + } static fromObject(data: { displayName?: string; id?: string; @@ -4353,9 +4774,9 @@ export class Chat extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.displayName === "string" && this.displayName.length) + if (this.has_displayName && this.displayName.length) writer.writeString(1, this.displayName); - if (typeof this.id === "string" && this.id.length) + if (this.has_id && this.id.length) writer.writeString(2, this.id); if (!w) return writer.getResultBuffer(); @@ -4419,30 +4840,45 @@ export class ProtocolMessage extends pb_1.Message { set key(value: MessageKey) { pb_1.Message.setWrapperField(this, 1, value); } + get has_key() { + return pb_1.Message.getField(this, 1) != null; + } get type() { - return pb_1.Message.getField(this, 2) as ProtocolMessage.PROTOCOL_MESSAGE_TYPE; + return pb_1.Message.getFieldWithDefault(this, 2, ProtocolMessage.PROTOCOL_MESSAGE_TYPE.REVOKE) as ProtocolMessage.PROTOCOL_MESSAGE_TYPE; } set type(value: ProtocolMessage.PROTOCOL_MESSAGE_TYPE) { pb_1.Message.setField(this, 2, value); } + get has_type() { + return pb_1.Message.getField(this, 2) != null; + } get ephemeralExpiration() { - return pb_1.Message.getField(this, 4) as number; + return pb_1.Message.getFieldWithDefault(this, 4, 0) as number; } set ephemeralExpiration(value: number) { pb_1.Message.setField(this, 4, value); } + get has_ephemeralExpiration() { + return pb_1.Message.getField(this, 4) != null; + } get ephemeralSettingTimestamp() { - return pb_1.Message.getField(this, 5) as number; + return pb_1.Message.getFieldWithDefault(this, 5, 0) as number; } set ephemeralSettingTimestamp(value: number) { pb_1.Message.setField(this, 5, value); } + get has_ephemeralSettingTimestamp() { + return pb_1.Message.getField(this, 5) != null; + } get historySyncNotification() { return pb_1.Message.getWrapperField(this, HistorySyncNotification, 6) as HistorySyncNotification; } set historySyncNotification(value: HistorySyncNotification) { pb_1.Message.setWrapperField(this, 6, value); } + get has_historySyncNotification() { + return pb_1.Message.getField(this, 6) != null; + } static fromObject(data: { key?: ReturnType; type?: ProtocolMessage.PROTOCOL_MESSAGE_TYPE; @@ -4497,15 +4933,15 @@ export class ProtocolMessage extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.key !== undefined) + if (this.has_key) writer.writeMessage(1, this.key, () => this.key.serialize(writer)); - if (this.type !== undefined) + if (this.has_type) writer.writeEnum(2, this.type); - if (this.ephemeralExpiration !== undefined) + if (this.has_ephemeralExpiration) writer.writeUint32(4, this.ephemeralExpiration); - if (this.ephemeralSettingTimestamp !== undefined) + if (this.has_ephemeralSettingTimestamp) writer.writeInt64(5, this.ephemeralSettingTimestamp); - if (this.historySyncNotification !== undefined) + if (this.has_historySyncNotification) writer.writeMessage(6, this.historySyncNotification, () => this.historySyncNotification.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -4593,53 +5029,77 @@ export class HistorySyncNotification extends pb_1.Message { } } get fileSha256() { - return pb_1.Message.getField(this, 1) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 1, new Uint8Array()) as Uint8Array; } set fileSha256(value: Uint8Array) { pb_1.Message.setField(this, 1, value); } + get has_fileSha256() { + return pb_1.Message.getField(this, 1) != null; + } get fileLength() { - return pb_1.Message.getField(this, 2) as number; + return pb_1.Message.getFieldWithDefault(this, 2, 0) as number; } set fileLength(value: number) { pb_1.Message.setField(this, 2, value); } + get has_fileLength() { + return pb_1.Message.getField(this, 2) != null; + } get mediaKey() { - return pb_1.Message.getField(this, 3) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 3, new Uint8Array()) as Uint8Array; } set mediaKey(value: Uint8Array) { pb_1.Message.setField(this, 3, value); } + get has_mediaKey() { + return pb_1.Message.getField(this, 3) != null; + } get fileEncSha256() { - return pb_1.Message.getField(this, 4) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 4, new Uint8Array()) as Uint8Array; } set fileEncSha256(value: Uint8Array) { pb_1.Message.setField(this, 4, value); } + get has_fileEncSha256() { + return pb_1.Message.getField(this, 4) != null; + } get directPath() { - return pb_1.Message.getField(this, 5) as string; + return pb_1.Message.getFieldWithDefault(this, 5, "") as string; } set directPath(value: string) { pb_1.Message.setField(this, 5, value); } + get has_directPath() { + return pb_1.Message.getField(this, 5) != null; + } get syncType() { - return pb_1.Message.getField(this, 6) as HistorySyncNotification.HISTORY_SYNC_NOTIFICATION_HISTORYSYNCTYPE; + return pb_1.Message.getFieldWithDefault(this, 6, HistorySyncNotification.HISTORY_SYNC_NOTIFICATION_HISTORYSYNCTYPE.INITIAL_BOOTSTRAP) as HistorySyncNotification.HISTORY_SYNC_NOTIFICATION_HISTORYSYNCTYPE; } set syncType(value: HistorySyncNotification.HISTORY_SYNC_NOTIFICATION_HISTORYSYNCTYPE) { pb_1.Message.setField(this, 6, value); } + get has_syncType() { + return pb_1.Message.getField(this, 6) != null; + } get chunkOrder() { - return pb_1.Message.getField(this, 7) as number; + return pb_1.Message.getFieldWithDefault(this, 7, 0) as number; } set chunkOrder(value: number) { pb_1.Message.setField(this, 7, value); } + get has_chunkOrder() { + return pb_1.Message.getField(this, 7) != null; + } get originalMessageId() { - return pb_1.Message.getField(this, 8) as string; + return pb_1.Message.getFieldWithDefault(this, 8, "") as string; } set originalMessageId(value: string) { pb_1.Message.setField(this, 8, value); } + get has_originalMessageId() { + return pb_1.Message.getField(this, 8) != null; + } static fromObject(data: { fileSha256?: Uint8Array; fileLength?: number; @@ -4718,21 +5178,21 @@ export class HistorySyncNotification extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.fileSha256 !== undefined) + if (this.has_fileSha256 && this.fileSha256.length) writer.writeBytes(1, this.fileSha256); - if (this.fileLength !== undefined) + if (this.has_fileLength) writer.writeUint64(2, this.fileLength); - if (this.mediaKey !== undefined) + if (this.has_mediaKey && this.mediaKey.length) writer.writeBytes(3, this.mediaKey); - if (this.fileEncSha256 !== undefined) + if (this.has_fileEncSha256 && this.fileEncSha256.length) writer.writeBytes(4, this.fileEncSha256); - if (typeof this.directPath === "string" && this.directPath.length) + if (this.has_directPath && this.directPath.length) writer.writeString(5, this.directPath); - if (this.syncType !== undefined) + if (this.has_syncType) writer.writeEnum(6, this.syncType); - if (this.chunkOrder !== undefined) + if (this.has_chunkOrder) writer.writeUint32(7, this.chunkOrder); - if (typeof this.originalMessageId === "string" && this.originalMessageId.length) + if (this.has_originalMessageId && this.originalMessageId.length) writer.writeString(8, this.originalMessageId); if (!w) return writer.getResultBuffer(); @@ -4808,11 +5268,14 @@ export class ContactsArrayMessage extends pb_1.Message { } } get displayName() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set displayName(value: string) { pb_1.Message.setField(this, 1, value); } + get has_displayName() { + return pb_1.Message.getField(this, 1) != null; + } get contacts() { return pb_1.Message.getRepeatedWrapperField(this, ContactMessage, 2) as ContactMessage[]; } @@ -4825,9 +5288,12 @@ export class ContactsArrayMessage extends pb_1.Message { set contextInfo(value: ContextInfo) { pb_1.Message.setWrapperField(this, 17, value); } + get has_contextInfo() { + return pb_1.Message.getField(this, 17) != null; + } static fromObject(data: { displayName?: string; - contacts: ReturnType[]; + contacts?: ReturnType[]; contextInfo?: ReturnType; }): ContactsArrayMessage { const message = new ContactsArrayMessage({ @@ -4844,14 +5310,15 @@ export class ContactsArrayMessage extends pb_1.Message { toObject() { const data: { displayName?: string; - contacts: ReturnType[]; + contacts?: ReturnType[]; contextInfo?: ReturnType; - } = { - contacts: this.contacts.map((item: ContactMessage) => item.toObject()) - }; + } = {}; if (this.displayName != null) { data.displayName = this.displayName; } + if (this.contacts != null) { + data.contacts = this.contacts.map((item: ContactMessage) => item.toObject()); + } if (this.contextInfo != null) { data.contextInfo = this.contextInfo.toObject(); } @@ -4861,11 +5328,11 @@ export class ContactsArrayMessage extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.displayName === "string" && this.displayName.length) + if (this.has_displayName && this.displayName.length) writer.writeString(1, this.displayName); - if (this.contacts !== undefined) + if (this.contacts.length) writer.writeRepeatedMessage(2, this.contacts, (item: ContactMessage) => item.serialize(writer)); - if (this.contextInfo !== undefined) + if (this.has_contextInfo) writer.writeMessage(17, this.contextInfo, () => this.contextInfo.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -4915,17 +5382,23 @@ export class HSMCurrency extends pb_1.Message { } } get currencyCode() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set currencyCode(value: string) { pb_1.Message.setField(this, 1, value); } + get has_currencyCode() { + return pb_1.Message.getField(this, 1) != null; + } get amount1000() { - return pb_1.Message.getField(this, 2) as number; + return pb_1.Message.getFieldWithDefault(this, 2, 0) as number; } set amount1000(value: number) { pb_1.Message.setField(this, 2, value); } + get has_amount1000() { + return pb_1.Message.getField(this, 2) != null; + } static fromObject(data: { currencyCode?: string; amount1000?: number; @@ -4956,9 +5429,9 @@ export class HSMCurrency extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.currencyCode === "string" && this.currencyCode.length) + if (this.has_currencyCode && this.currencyCode.length) writer.writeString(1, this.currencyCode); - if (this.amount1000 !== undefined) + if (this.has_amount1000) writer.writeInt64(2, this.amount1000); if (!w) return writer.getResultBuffer(); @@ -5025,47 +5498,68 @@ export class HSMDateTimeComponent extends pb_1.Message { } } get dayOfWeek() { - return pb_1.Message.getField(this, 1) as HSMDateTimeComponent.HSM_DATE_TIME_COMPONENT_DAYOFWEEKTYPE; + return pb_1.Message.getFieldWithDefault(this, 1, HSMDateTimeComponent.HSM_DATE_TIME_COMPONENT_DAYOFWEEKTYPE.MONDAY) as HSMDateTimeComponent.HSM_DATE_TIME_COMPONENT_DAYOFWEEKTYPE; } set dayOfWeek(value: HSMDateTimeComponent.HSM_DATE_TIME_COMPONENT_DAYOFWEEKTYPE) { pb_1.Message.setField(this, 1, value); } + get has_dayOfWeek() { + return pb_1.Message.getField(this, 1) != null; + } get year() { - return pb_1.Message.getField(this, 2) as number; + return pb_1.Message.getFieldWithDefault(this, 2, 0) as number; } set year(value: number) { pb_1.Message.setField(this, 2, value); } + get has_year() { + return pb_1.Message.getField(this, 2) != null; + } get month() { - return pb_1.Message.getField(this, 3) as number; + return pb_1.Message.getFieldWithDefault(this, 3, 0) as number; } set month(value: number) { pb_1.Message.setField(this, 3, value); } + get has_month() { + return pb_1.Message.getField(this, 3) != null; + } get dayOfMonth() { - return pb_1.Message.getField(this, 4) as number; + return pb_1.Message.getFieldWithDefault(this, 4, 0) as number; } set dayOfMonth(value: number) { pb_1.Message.setField(this, 4, value); } + get has_dayOfMonth() { + return pb_1.Message.getField(this, 4) != null; + } get hour() { - return pb_1.Message.getField(this, 5) as number; + return pb_1.Message.getFieldWithDefault(this, 5, 0) as number; } set hour(value: number) { pb_1.Message.setField(this, 5, value); } + get has_hour() { + return pb_1.Message.getField(this, 5) != null; + } get minute() { - return pb_1.Message.getField(this, 6) as number; + return pb_1.Message.getFieldWithDefault(this, 6, 0) as number; } set minute(value: number) { pb_1.Message.setField(this, 6, value); } + get has_minute() { + return pb_1.Message.getField(this, 6) != null; + } get calendar() { - return pb_1.Message.getField(this, 7) as HSMDateTimeComponent.HSM_DATE_TIME_COMPONENT_CALENDARTYPE; + return pb_1.Message.getFieldWithDefault(this, 7, HSMDateTimeComponent.HSM_DATE_TIME_COMPONENT_CALENDARTYPE.GREGORIAN) as HSMDateTimeComponent.HSM_DATE_TIME_COMPONENT_CALENDARTYPE; } set calendar(value: HSMDateTimeComponent.HSM_DATE_TIME_COMPONENT_CALENDARTYPE) { pb_1.Message.setField(this, 7, value); } + get has_calendar() { + return pb_1.Message.getField(this, 7) != null; + } static fromObject(data: { dayOfWeek?: HSMDateTimeComponent.HSM_DATE_TIME_COMPONENT_DAYOFWEEKTYPE; year?: number; @@ -5136,19 +5630,19 @@ export class HSMDateTimeComponent extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.dayOfWeek !== undefined) + if (this.has_dayOfWeek) writer.writeEnum(1, this.dayOfWeek); - if (this.year !== undefined) + if (this.has_year) writer.writeUint32(2, this.year); - if (this.month !== undefined) + if (this.has_month) writer.writeUint32(3, this.month); - if (this.dayOfMonth !== undefined) + if (this.has_dayOfMonth) writer.writeUint32(4, this.dayOfMonth); - if (this.hour !== undefined) + if (this.has_hour) writer.writeUint32(5, this.hour); - if (this.minute !== undefined) + if (this.has_minute) writer.writeUint32(6, this.minute); - if (this.calendar !== undefined) + if (this.has_calendar) writer.writeEnum(7, this.calendar); if (!w) return writer.getResultBuffer(); @@ -5221,11 +5715,14 @@ export class HSMDateTimeUnixEpoch extends pb_1.Message { } } get timestamp() { - return pb_1.Message.getField(this, 1) as number; + return pb_1.Message.getFieldWithDefault(this, 1, 0) as number; } set timestamp(value: number) { pb_1.Message.setField(this, 1, value); } + get has_timestamp() { + return pb_1.Message.getField(this, 1) != null; + } static fromObject(data: { timestamp?: number; }): HSMDateTimeUnixEpoch { @@ -5248,7 +5745,7 @@ export class HSMDateTimeUnixEpoch extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.timestamp !== undefined) + if (this.has_timestamp) writer.writeInt64(1, this.timestamp); if (!w) return writer.getResultBuffer(); @@ -5300,12 +5797,18 @@ export class HSMDateTime extends pb_1.Message { set component(value: HSMDateTimeComponent) { pb_1.Message.setOneofWrapperField(this, 1, this.#one_of_decls[0], value); } + get has_component() { + return pb_1.Message.getField(this, 1) != null; + } get unixEpoch() { return pb_1.Message.getWrapperField(this, HSMDateTimeUnixEpoch, 2) as HSMDateTimeUnixEpoch; } set unixEpoch(value: HSMDateTimeUnixEpoch) { pb_1.Message.setOneofWrapperField(this, 2, this.#one_of_decls[0], value); } + get has_unixEpoch() { + return pb_1.Message.getField(this, 2) != null; + } get datetimeOneof() { const cases: { [index: number]: "none" | "component" | "unixEpoch"; @@ -5346,9 +5849,9 @@ export class HSMDateTime extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.component !== undefined) + if (this.has_component) writer.writeMessage(1, this.component, () => this.component.serialize(writer)); - if (this.unixEpoch !== undefined) + if (this.has_unixEpoch) writer.writeMessage(2, this.unixEpoch, () => this.unixEpoch.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -5403,23 +5906,32 @@ export class HSMLocalizableParameter extends pb_1.Message { } } get default() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set default(value: string) { pb_1.Message.setField(this, 1, value); } + get has_default() { + return pb_1.Message.getField(this, 1) != null; + } get currency() { return pb_1.Message.getWrapperField(this, HSMCurrency, 2) as HSMCurrency; } set currency(value: HSMCurrency) { pb_1.Message.setOneofWrapperField(this, 2, this.#one_of_decls[0], value); } + get has_currency() { + return pb_1.Message.getField(this, 2) != null; + } get dateTime() { return pb_1.Message.getWrapperField(this, HSMDateTime, 3) as HSMDateTime; } set dateTime(value: HSMDateTime) { pb_1.Message.setOneofWrapperField(this, 3, this.#one_of_decls[0], value); } + get has_dateTime() { + return pb_1.Message.getField(this, 3) != null; + } get paramOneof() { const cases: { [index: number]: "none" | "currency" | "dateTime"; @@ -5468,11 +5980,11 @@ export class HSMLocalizableParameter extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.default === "string" && this.default.length) + if (this.has_default && this.default.length) writer.writeString(1, this.default); - if (this.currency !== undefined) + if (this.has_currency) writer.writeMessage(2, this.currency, () => this.currency.serialize(writer)); - if (this.dateTime !== undefined) + if (this.has_dateTime) writer.writeMessage(3, this.dateTime, () => this.dateTime.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -5546,35 +6058,47 @@ export class HighlyStructuredMessage extends pb_1.Message { } } get namespace() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set namespace(value: string) { pb_1.Message.setField(this, 1, value); } + get has_namespace() { + return pb_1.Message.getField(this, 1) != null; + } get elementName() { - return pb_1.Message.getField(this, 2) as string; + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; } set elementName(value: string) { pb_1.Message.setField(this, 2, value); } + get has_elementName() { + return pb_1.Message.getField(this, 2) != null; + } get params() { - return pb_1.Message.getField(this, 3) as string[]; + return pb_1.Message.getFieldWithDefault(this, 3, []) as string[]; } set params(value: string[]) { pb_1.Message.setField(this, 3, value); } get fallbackLg() { - return pb_1.Message.getField(this, 4) as string; + return pb_1.Message.getFieldWithDefault(this, 4, "") as string; } set fallbackLg(value: string) { pb_1.Message.setField(this, 4, value); } + get has_fallbackLg() { + return pb_1.Message.getField(this, 4) != null; + } get fallbackLc() { - return pb_1.Message.getField(this, 5) as string; + return pb_1.Message.getFieldWithDefault(this, 5, "") as string; } set fallbackLc(value: string) { pb_1.Message.setField(this, 5, value); } + get has_fallbackLc() { + return pb_1.Message.getField(this, 5) != null; + } get localizableParams() { return pb_1.Message.getRepeatedWrapperField(this, HSMLocalizableParameter, 6) as HSMLocalizableParameter[]; } @@ -5582,30 +6106,39 @@ export class HighlyStructuredMessage extends pb_1.Message { pb_1.Message.setRepeatedWrapperField(this, 6, value); } get deterministicLg() { - return pb_1.Message.getField(this, 7) as string; + return pb_1.Message.getFieldWithDefault(this, 7, "") as string; } set deterministicLg(value: string) { pb_1.Message.setField(this, 7, value); } + get has_deterministicLg() { + return pb_1.Message.getField(this, 7) != null; + } get deterministicLc() { - return pb_1.Message.getField(this, 8) as string; + return pb_1.Message.getFieldWithDefault(this, 8, "") as string; } set deterministicLc(value: string) { pb_1.Message.setField(this, 8, value); } + get has_deterministicLc() { + return pb_1.Message.getField(this, 8) != null; + } get hydratedHsm() { return pb_1.Message.getWrapperField(this, TemplateMessage, 9) as TemplateMessage; } set hydratedHsm(value: TemplateMessage) { pb_1.Message.setWrapperField(this, 9, value); } + get has_hydratedHsm() { + return pb_1.Message.getField(this, 9) != null; + } static fromObject(data: { namespace?: string; elementName?: string; params: string[]; fallbackLg?: string; fallbackLc?: string; - localizableParams: ReturnType[]; + localizableParams?: ReturnType[]; deterministicLg?: string; deterministicLc?: string; hydratedHsm?: ReturnType; @@ -5644,13 +6177,12 @@ export class HighlyStructuredMessage extends pb_1.Message { params: string[]; fallbackLg?: string; fallbackLc?: string; - localizableParams: ReturnType[]; + localizableParams?: ReturnType[]; deterministicLg?: string; deterministicLc?: string; hydratedHsm?: ReturnType; } = { - params: this.params, - localizableParams: this.localizableParams.map((item: HSMLocalizableParameter) => item.toObject()) + params: this.params }; if (this.namespace != null) { data.namespace = this.namespace; @@ -5664,6 +6196,9 @@ export class HighlyStructuredMessage extends pb_1.Message { if (this.fallbackLc != null) { data.fallbackLc = this.fallbackLc; } + if (this.localizableParams != null) { + data.localizableParams = this.localizableParams.map((item: HSMLocalizableParameter) => item.toObject()); + } if (this.deterministicLg != null) { data.deterministicLg = this.deterministicLg; } @@ -5679,23 +6214,23 @@ export class HighlyStructuredMessage extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.namespace === "string" && this.namespace.length) + if (this.has_namespace && this.namespace.length) writer.writeString(1, this.namespace); - if (typeof this.elementName === "string" && this.elementName.length) + if (this.has_elementName && this.elementName.length) writer.writeString(2, this.elementName); - if (this.params !== undefined) + if (this.params.length) writer.writeRepeatedString(3, this.params); - if (typeof this.fallbackLg === "string" && this.fallbackLg.length) + if (this.has_fallbackLg && this.fallbackLg.length) writer.writeString(4, this.fallbackLg); - if (typeof this.fallbackLc === "string" && this.fallbackLc.length) + if (this.has_fallbackLc && this.fallbackLc.length) writer.writeString(5, this.fallbackLc); - if (this.localizableParams !== undefined) + if (this.localizableParams.length) writer.writeRepeatedMessage(6, this.localizableParams, (item: HSMLocalizableParameter) => item.serialize(writer)); - if (typeof this.deterministicLg === "string" && this.deterministicLg.length) + if (this.has_deterministicLg && this.deterministicLg.length) writer.writeString(7, this.deterministicLg); - if (typeof this.deterministicLc === "string" && this.deterministicLc.length) + if (this.has_deterministicLc && this.deterministicLc.length) writer.writeString(8, this.deterministicLc); - if (this.hydratedHsm !== undefined) + if (this.has_hydratedHsm) writer.writeMessage(9, this.hydratedHsm, () => this.hydratedHsm.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -5768,12 +6303,18 @@ export class SendPaymentMessage extends pb_1.Message { set noteMessage(value: Message) { pb_1.Message.setWrapperField(this, 2, value); } + get has_noteMessage() { + return pb_1.Message.getField(this, 2) != null; + } get requestMessageKey() { return pb_1.Message.getWrapperField(this, MessageKey, 3) as MessageKey; } set requestMessageKey(value: MessageKey) { pb_1.Message.setWrapperField(this, 3, value); } + get has_requestMessageKey() { + return pb_1.Message.getField(this, 3) != null; + } static fromObject(data: { noteMessage?: ReturnType; requestMessageKey?: ReturnType; @@ -5804,9 +6345,9 @@ export class SendPaymentMessage extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.noteMessage !== undefined) + if (this.has_noteMessage) writer.writeMessage(2, this.noteMessage, () => this.noteMessage.serialize(writer)); - if (this.requestMessageKey !== undefined) + if (this.has_requestMessageKey) writer.writeMessage(3, this.requestMessageKey, () => this.requestMessageKey.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -5870,30 +6411,45 @@ export class RequestPaymentMessage extends pb_1.Message { set noteMessage(value: Message) { pb_1.Message.setWrapperField(this, 4, value); } + get has_noteMessage() { + return pb_1.Message.getField(this, 4) != null; + } get currencyCodeIso4217() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set currencyCodeIso4217(value: string) { pb_1.Message.setField(this, 1, value); } + get has_currencyCodeIso4217() { + return pb_1.Message.getField(this, 1) != null; + } get amount1000() { - return pb_1.Message.getField(this, 2) as number; + return pb_1.Message.getFieldWithDefault(this, 2, 0) as number; } set amount1000(value: number) { pb_1.Message.setField(this, 2, value); } + get has_amount1000() { + return pb_1.Message.getField(this, 2) != null; + } get requestFrom() { - return pb_1.Message.getField(this, 3) as string; + return pb_1.Message.getFieldWithDefault(this, 3, "") as string; } set requestFrom(value: string) { pb_1.Message.setField(this, 3, value); } + get has_requestFrom() { + return pb_1.Message.getField(this, 3) != null; + } get expiryTimestamp() { - return pb_1.Message.getField(this, 5) as number; + return pb_1.Message.getFieldWithDefault(this, 5, 0) as number; } set expiryTimestamp(value: number) { pb_1.Message.setField(this, 5, value); } + get has_expiryTimestamp() { + return pb_1.Message.getField(this, 5) != null; + } static fromObject(data: { noteMessage?: ReturnType; currencyCodeIso4217?: string; @@ -5948,15 +6504,15 @@ export class RequestPaymentMessage extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.noteMessage !== undefined) + if (this.has_noteMessage) writer.writeMessage(4, this.noteMessage, () => this.noteMessage.serialize(writer)); - if (typeof this.currencyCodeIso4217 === "string" && this.currencyCodeIso4217.length) + if (this.has_currencyCodeIso4217 && this.currencyCodeIso4217.length) writer.writeString(1, this.currencyCodeIso4217); - if (this.amount1000 !== undefined) + if (this.has_amount1000) writer.writeUint64(2, this.amount1000); - if (typeof this.requestFrom === "string" && this.requestFrom.length) + if (this.has_requestFrom && this.requestFrom.length) writer.writeString(3, this.requestFrom); - if (this.expiryTimestamp !== undefined) + if (this.has_expiryTimestamp) writer.writeInt64(5, this.expiryTimestamp); if (!w) return writer.getResultBuffer(); @@ -6013,6 +6569,9 @@ export class DeclinePaymentRequestMessage extends pb_1.Message { set key(value: MessageKey) { pb_1.Message.setWrapperField(this, 1, value); } + get has_key() { + return pb_1.Message.getField(this, 1) != null; + } static fromObject(data: { key?: ReturnType; }): DeclinePaymentRequestMessage { @@ -6035,7 +6594,7 @@ export class DeclinePaymentRequestMessage extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.key !== undefined) + if (this.has_key) writer.writeMessage(1, this.key, () => this.key.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -6080,6 +6639,9 @@ export class CancelPaymentRequestMessage extends pb_1.Message { set key(value: MessageKey) { pb_1.Message.setWrapperField(this, 1, value); } + get has_key() { + return pb_1.Message.getField(this, 1) != null; + } static fromObject(data: { key?: ReturnType; }): CancelPaymentRequestMessage { @@ -6102,7 +6664,7 @@ export class CancelPaymentRequestMessage extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.key !== undefined) + if (this.has_key) writer.writeMessage(1, this.key, () => this.key.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -6178,65 +6740,95 @@ export class LiveLocationMessage extends pb_1.Message { } } get degreesLatitude() { - return pb_1.Message.getField(this, 1) as number; + return pb_1.Message.getFieldWithDefault(this, 1, 0) as number; } set degreesLatitude(value: number) { pb_1.Message.setField(this, 1, value); } + get has_degreesLatitude() { + return pb_1.Message.getField(this, 1) != null; + } get degreesLongitude() { - return pb_1.Message.getField(this, 2) as number; + return pb_1.Message.getFieldWithDefault(this, 2, 0) as number; } set degreesLongitude(value: number) { pb_1.Message.setField(this, 2, value); } + get has_degreesLongitude() { + return pb_1.Message.getField(this, 2) != null; + } get accuracyInMeters() { - return pb_1.Message.getField(this, 3) as number; + return pb_1.Message.getFieldWithDefault(this, 3, 0) as number; } set accuracyInMeters(value: number) { pb_1.Message.setField(this, 3, value); } + get has_accuracyInMeters() { + return pb_1.Message.getField(this, 3) != null; + } get speedInMps() { - return pb_1.Message.getField(this, 4) as number; + return pb_1.Message.getFieldWithDefault(this, 4, 0) as number; } set speedInMps(value: number) { pb_1.Message.setField(this, 4, value); } + get has_speedInMps() { + return pb_1.Message.getField(this, 4) != null; + } get degreesClockwiseFromMagneticNorth() { - return pb_1.Message.getField(this, 5) as number; + return pb_1.Message.getFieldWithDefault(this, 5, 0) as number; } set degreesClockwiseFromMagneticNorth(value: number) { pb_1.Message.setField(this, 5, value); } + get has_degreesClockwiseFromMagneticNorth() { + return pb_1.Message.getField(this, 5) != null; + } get caption() { - return pb_1.Message.getField(this, 6) as string; + return pb_1.Message.getFieldWithDefault(this, 6, "") as string; } set caption(value: string) { pb_1.Message.setField(this, 6, value); } + get has_caption() { + return pb_1.Message.getField(this, 6) != null; + } get sequenceNumber() { - return pb_1.Message.getField(this, 7) as number; + return pb_1.Message.getFieldWithDefault(this, 7, 0) as number; } set sequenceNumber(value: number) { pb_1.Message.setField(this, 7, value); } + get has_sequenceNumber() { + return pb_1.Message.getField(this, 7) != null; + } get timeOffset() { - return pb_1.Message.getField(this, 8) as number; + return pb_1.Message.getFieldWithDefault(this, 8, 0) as number; } set timeOffset(value: number) { pb_1.Message.setField(this, 8, value); } + get has_timeOffset() { + return pb_1.Message.getField(this, 8) != null; + } get jpegThumbnail() { - return pb_1.Message.getField(this, 16) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 16, new Uint8Array()) as Uint8Array; } set jpegThumbnail(value: Uint8Array) { pb_1.Message.setField(this, 16, value); } + get has_jpegThumbnail() { + return pb_1.Message.getField(this, 16) != null; + } get contextInfo() { return pb_1.Message.getWrapperField(this, ContextInfo, 17) as ContextInfo; } set contextInfo(value: ContextInfo) { pb_1.Message.setWrapperField(this, 17, value); } + get has_contextInfo() { + return pb_1.Message.getField(this, 17) != null; + } static fromObject(data: { degreesLatitude?: number; degreesLongitude?: number; @@ -6331,25 +6923,25 @@ export class LiveLocationMessage extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.degreesLatitude !== undefined) + if (this.has_degreesLatitude) writer.writeDouble(1, this.degreesLatitude); - if (this.degreesLongitude !== undefined) + if (this.has_degreesLongitude) writer.writeDouble(2, this.degreesLongitude); - if (this.accuracyInMeters !== undefined) + if (this.has_accuracyInMeters) writer.writeUint32(3, this.accuracyInMeters); - if (this.speedInMps !== undefined) + if (this.has_speedInMps) writer.writeFloat(4, this.speedInMps); - if (this.degreesClockwiseFromMagneticNorth !== undefined) + if (this.has_degreesClockwiseFromMagneticNorth) writer.writeUint32(5, this.degreesClockwiseFromMagneticNorth); - if (typeof this.caption === "string" && this.caption.length) + if (this.has_caption && this.caption.length) writer.writeString(6, this.caption); - if (this.sequenceNumber !== undefined) + if (this.has_sequenceNumber) writer.writeInt64(7, this.sequenceNumber); - if (this.timeOffset !== undefined) + if (this.has_timeOffset) writer.writeUint32(8, this.timeOffset); - if (this.jpegThumbnail !== undefined) + if (this.has_jpegThumbnail && this.jpegThumbnail.length) writer.writeBytes(16, this.jpegThumbnail); - if (this.contextInfo !== undefined) + if (this.has_contextInfo) writer.writeMessage(17, this.contextInfo, () => this.contextInfo.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -6472,95 +7064,140 @@ export class StickerMessage extends pb_1.Message { } } get url() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set url(value: string) { pb_1.Message.setField(this, 1, value); } + get has_url() { + return pb_1.Message.getField(this, 1) != null; + } get fileSha256() { - return pb_1.Message.getField(this, 2) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 2, new Uint8Array()) as Uint8Array; } set fileSha256(value: Uint8Array) { pb_1.Message.setField(this, 2, value); } + get has_fileSha256() { + return pb_1.Message.getField(this, 2) != null; + } get fileEncSha256() { - return pb_1.Message.getField(this, 3) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 3, new Uint8Array()) as Uint8Array; } set fileEncSha256(value: Uint8Array) { pb_1.Message.setField(this, 3, value); } + get has_fileEncSha256() { + return pb_1.Message.getField(this, 3) != null; + } get mediaKey() { - return pb_1.Message.getField(this, 4) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 4, new Uint8Array()) as Uint8Array; } set mediaKey(value: Uint8Array) { pb_1.Message.setField(this, 4, value); } + get has_mediaKey() { + return pb_1.Message.getField(this, 4) != null; + } get mimetype() { - return pb_1.Message.getField(this, 5) as string; + return pb_1.Message.getFieldWithDefault(this, 5, "") as string; } set mimetype(value: string) { pb_1.Message.setField(this, 5, value); } + get has_mimetype() { + return pb_1.Message.getField(this, 5) != null; + } get height() { - return pb_1.Message.getField(this, 6) as number; + return pb_1.Message.getFieldWithDefault(this, 6, 0) as number; } set height(value: number) { pb_1.Message.setField(this, 6, value); } + get has_height() { + return pb_1.Message.getField(this, 6) != null; + } get width() { - return pb_1.Message.getField(this, 7) as number; + return pb_1.Message.getFieldWithDefault(this, 7, 0) as number; } set width(value: number) { pb_1.Message.setField(this, 7, value); } + get has_width() { + return pb_1.Message.getField(this, 7) != null; + } get directPath() { - return pb_1.Message.getField(this, 8) as string; + return pb_1.Message.getFieldWithDefault(this, 8, "") as string; } set directPath(value: string) { pb_1.Message.setField(this, 8, value); } + get has_directPath() { + return pb_1.Message.getField(this, 8) != null; + } get fileLength() { - return pb_1.Message.getField(this, 9) as number; + return pb_1.Message.getFieldWithDefault(this, 9, 0) as number; } set fileLength(value: number) { pb_1.Message.setField(this, 9, value); } + get has_fileLength() { + return pb_1.Message.getField(this, 9) != null; + } get mediaKeyTimestamp() { - return pb_1.Message.getField(this, 10) as number; + return pb_1.Message.getFieldWithDefault(this, 10, 0) as number; } set mediaKeyTimestamp(value: number) { pb_1.Message.setField(this, 10, value); } + get has_mediaKeyTimestamp() { + return pb_1.Message.getField(this, 10) != null; + } get firstFrameLength() { - return pb_1.Message.getField(this, 11) as number; + return pb_1.Message.getFieldWithDefault(this, 11, 0) as number; } set firstFrameLength(value: number) { pb_1.Message.setField(this, 11, value); } + get has_firstFrameLength() { + return pb_1.Message.getField(this, 11) != null; + } get firstFrameSidecar() { - return pb_1.Message.getField(this, 12) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 12, new Uint8Array()) as Uint8Array; } set firstFrameSidecar(value: Uint8Array) { pb_1.Message.setField(this, 12, value); } + get has_firstFrameSidecar() { + return pb_1.Message.getField(this, 12) != null; + } get isAnimated() { - return pb_1.Message.getField(this, 13) as boolean; + return pb_1.Message.getFieldWithDefault(this, 13, false) as boolean; } set isAnimated(value: boolean) { pb_1.Message.setField(this, 13, value); } + get has_isAnimated() { + return pb_1.Message.getField(this, 13) != null; + } get pngThumbnail() { - return pb_1.Message.getField(this, 16) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 16, new Uint8Array()) as Uint8Array; } set pngThumbnail(value: Uint8Array) { pb_1.Message.setField(this, 16, value); } + get has_pngThumbnail() { + return pb_1.Message.getField(this, 16) != null; + } get contextInfo() { return pb_1.Message.getWrapperField(this, ContextInfo, 17) as ContextInfo; } set contextInfo(value: ContextInfo) { pb_1.Message.setWrapperField(this, 17, value); } + get has_contextInfo() { + return pb_1.Message.getField(this, 17) != null; + } static fromObject(data: { url?: string; fileSha256?: Uint8Array; @@ -6695,35 +7332,35 @@ export class StickerMessage extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.url === "string" && this.url.length) + if (this.has_url && this.url.length) writer.writeString(1, this.url); - if (this.fileSha256 !== undefined) + if (this.has_fileSha256 && this.fileSha256.length) writer.writeBytes(2, this.fileSha256); - if (this.fileEncSha256 !== undefined) + if (this.has_fileEncSha256 && this.fileEncSha256.length) writer.writeBytes(3, this.fileEncSha256); - if (this.mediaKey !== undefined) + if (this.has_mediaKey && this.mediaKey.length) writer.writeBytes(4, this.mediaKey); - if (typeof this.mimetype === "string" && this.mimetype.length) + if (this.has_mimetype && this.mimetype.length) writer.writeString(5, this.mimetype); - if (this.height !== undefined) + if (this.has_height) writer.writeUint32(6, this.height); - if (this.width !== undefined) + if (this.has_width) writer.writeUint32(7, this.width); - if (typeof this.directPath === "string" && this.directPath.length) + if (this.has_directPath && this.directPath.length) writer.writeString(8, this.directPath); - if (this.fileLength !== undefined) + if (this.has_fileLength) writer.writeUint64(9, this.fileLength); - if (this.mediaKeyTimestamp !== undefined) + if (this.has_mediaKeyTimestamp) writer.writeInt64(10, this.mediaKeyTimestamp); - if (this.firstFrameLength !== undefined) + if (this.has_firstFrameLength) writer.writeUint32(11, this.firstFrameLength); - if (this.firstFrameSidecar !== undefined) + if (this.has_firstFrameSidecar && this.firstFrameSidecar.length) writer.writeBytes(12, this.firstFrameSidecar); - if (this.isAnimated !== undefined) + if (this.has_isAnimated) writer.writeBool(13, this.isAnimated); - if (this.pngThumbnail !== undefined) + if (this.has_pngThumbnail && this.pngThumbnail.length) writer.writeBytes(16, this.pngThumbnail); - if (this.contextInfo !== undefined) + if (this.has_contextInfo) writer.writeMessage(17, this.contextInfo, () => this.contextInfo.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -6861,12 +7498,18 @@ export class FourRowTemplate extends pb_1.Message { set content(value: HighlyStructuredMessage) { pb_1.Message.setWrapperField(this, 6, value); } + get has_content() { + return pb_1.Message.getField(this, 6) != null; + } get footer() { return pb_1.Message.getWrapperField(this, HighlyStructuredMessage, 7) as HighlyStructuredMessage; } set footer(value: HighlyStructuredMessage) { pb_1.Message.setWrapperField(this, 7, value); } + get has_footer() { + return pb_1.Message.getField(this, 7) != null; + } get buttons() { return pb_1.Message.getRepeatedWrapperField(this, TemplateButton, 8) as TemplateButton[]; } @@ -6879,30 +7522,45 @@ export class FourRowTemplate extends pb_1.Message { set documentMessage(value: DocumentMessage) { pb_1.Message.setOneofWrapperField(this, 1, this.#one_of_decls[0], value); } + get has_documentMessage() { + return pb_1.Message.getField(this, 1) != null; + } get highlyStructuredMessage() { return pb_1.Message.getWrapperField(this, HighlyStructuredMessage, 2) as HighlyStructuredMessage; } set highlyStructuredMessage(value: HighlyStructuredMessage) { pb_1.Message.setOneofWrapperField(this, 2, this.#one_of_decls[0], value); } + get has_highlyStructuredMessage() { + return pb_1.Message.getField(this, 2) != null; + } get imageMessage() { return pb_1.Message.getWrapperField(this, ImageMessage, 3) as ImageMessage; } set imageMessage(value: ImageMessage) { pb_1.Message.setOneofWrapperField(this, 3, this.#one_of_decls[0], value); } + get has_imageMessage() { + return pb_1.Message.getField(this, 3) != null; + } get videoMessage() { return pb_1.Message.getWrapperField(this, VideoMessage, 4) as VideoMessage; } set videoMessage(value: VideoMessage) { pb_1.Message.setOneofWrapperField(this, 4, this.#one_of_decls[0], value); } + get has_videoMessage() { + return pb_1.Message.getField(this, 4) != null; + } get locationMessage() { return pb_1.Message.getWrapperField(this, LocationMessage, 5) as LocationMessage; } set locationMessage(value: LocationMessage) { pb_1.Message.setOneofWrapperField(this, 5, this.#one_of_decls[0], value); } + get has_locationMessage() { + return pb_1.Message.getField(this, 5) != null; + } get title() { const cases: { [index: number]: "none" | "documentMessage" | "highlyStructuredMessage" | "imageMessage" | "videoMessage" | "locationMessage"; @@ -6919,7 +7577,7 @@ export class FourRowTemplate extends pb_1.Message { static fromObject(data: { content?: ReturnType; footer?: ReturnType; - buttons: ReturnType[]; + buttons?: ReturnType[]; documentMessage?: ReturnType; highlyStructuredMessage?: ReturnType; imageMessage?: ReturnType; @@ -6956,21 +7614,22 @@ export class FourRowTemplate extends pb_1.Message { const data: { content?: ReturnType; footer?: ReturnType; - buttons: ReturnType[]; + buttons?: ReturnType[]; documentMessage?: ReturnType; highlyStructuredMessage?: ReturnType; imageMessage?: ReturnType; videoMessage?: ReturnType; locationMessage?: ReturnType; - } = { - buttons: this.buttons.map((item: TemplateButton) => item.toObject()) - }; + } = {}; if (this.content != null) { data.content = this.content.toObject(); } if (this.footer != null) { data.footer = this.footer.toObject(); } + if (this.buttons != null) { + data.buttons = this.buttons.map((item: TemplateButton) => item.toObject()); + } if (this.documentMessage != null) { data.documentMessage = this.documentMessage.toObject(); } @@ -6992,21 +7651,21 @@ export class FourRowTemplate extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.content !== undefined) + if (this.has_content) writer.writeMessage(6, this.content, () => this.content.serialize(writer)); - if (this.footer !== undefined) + if (this.has_footer) writer.writeMessage(7, this.footer, () => this.footer.serialize(writer)); - if (this.buttons !== undefined) + if (this.buttons.length) writer.writeRepeatedMessage(8, this.buttons, (item: TemplateButton) => item.serialize(writer)); - if (this.documentMessage !== undefined) + if (this.has_documentMessage) writer.writeMessage(1, this.documentMessage, () => this.documentMessage.serialize(writer)); - if (this.highlyStructuredMessage !== undefined) + if (this.has_highlyStructuredMessage) writer.writeMessage(2, this.highlyStructuredMessage, () => this.highlyStructuredMessage.serialize(writer)); - if (this.imageMessage !== undefined) + if (this.has_imageMessage) writer.writeMessage(3, this.imageMessage, () => this.imageMessage.serialize(writer)); - if (this.videoMessage !== undefined) + if (this.has_videoMessage) writer.writeMessage(4, this.videoMessage, () => this.videoMessage.serialize(writer)); - if (this.locationMessage !== undefined) + if (this.has_locationMessage) writer.writeMessage(5, this.locationMessage, () => this.locationMessage.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -7122,17 +7781,23 @@ export class HydratedFourRowTemplate extends pb_1.Message { } } get hydratedContentText() { - return pb_1.Message.getField(this, 6) as string; + return pb_1.Message.getFieldWithDefault(this, 6, "") as string; } set hydratedContentText(value: string) { pb_1.Message.setField(this, 6, value); } + get has_hydratedContentText() { + return pb_1.Message.getField(this, 6) != null; + } get hydratedFooterText() { - return pb_1.Message.getField(this, 7) as string; + return pb_1.Message.getFieldWithDefault(this, 7, "") as string; } set hydratedFooterText(value: string) { pb_1.Message.setField(this, 7, value); } + get has_hydratedFooterText() { + return pb_1.Message.getField(this, 7) != null; + } get hydratedButtons() { return pb_1.Message.getRepeatedWrapperField(this, HydratedTemplateButton, 8) as HydratedTemplateButton[]; } @@ -7140,41 +7805,59 @@ export class HydratedFourRowTemplate extends pb_1.Message { pb_1.Message.setRepeatedWrapperField(this, 8, value); } get templateId() { - return pb_1.Message.getField(this, 9) as string; + return pb_1.Message.getFieldWithDefault(this, 9, "") as string; } set templateId(value: string) { pb_1.Message.setField(this, 9, value); } + get has_templateId() { + return pb_1.Message.getField(this, 9) != null; + } get documentMessage() { return pb_1.Message.getWrapperField(this, DocumentMessage, 1) as DocumentMessage; } set documentMessage(value: DocumentMessage) { pb_1.Message.setOneofWrapperField(this, 1, this.#one_of_decls[0], value); } + get has_documentMessage() { + return pb_1.Message.getField(this, 1) != null; + } get hydratedTitleText() { - return pb_1.Message.getField(this, 2) as string; + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; } set hydratedTitleText(value: string) { pb_1.Message.setOneofField(this, 2, this.#one_of_decls[0], value); } + get has_hydratedTitleText() { + return pb_1.Message.getField(this, 2) != null; + } get imageMessage() { return pb_1.Message.getWrapperField(this, ImageMessage, 3) as ImageMessage; } set imageMessage(value: ImageMessage) { pb_1.Message.setOneofWrapperField(this, 3, this.#one_of_decls[0], value); } + get has_imageMessage() { + return pb_1.Message.getField(this, 3) != null; + } get videoMessage() { return pb_1.Message.getWrapperField(this, VideoMessage, 4) as VideoMessage; } set videoMessage(value: VideoMessage) { pb_1.Message.setOneofWrapperField(this, 4, this.#one_of_decls[0], value); } + get has_videoMessage() { + return pb_1.Message.getField(this, 4) != null; + } get locationMessage() { return pb_1.Message.getWrapperField(this, LocationMessage, 5) as LocationMessage; } set locationMessage(value: LocationMessage) { pb_1.Message.setOneofWrapperField(this, 5, this.#one_of_decls[0], value); } + get has_locationMessage() { + return pb_1.Message.getField(this, 5) != null; + } get title() { const cases: { [index: number]: "none" | "documentMessage" | "hydratedTitleText" | "imageMessage" | "videoMessage" | "locationMessage"; @@ -7191,7 +7874,7 @@ export class HydratedFourRowTemplate extends pb_1.Message { static fromObject(data: { hydratedContentText?: string; hydratedFooterText?: string; - hydratedButtons: ReturnType[]; + hydratedButtons?: ReturnType[]; templateId?: string; documentMessage?: ReturnType; hydratedTitleText?: string; @@ -7232,22 +7915,23 @@ export class HydratedFourRowTemplate extends pb_1.Message { const data: { hydratedContentText?: string; hydratedFooterText?: string; - hydratedButtons: ReturnType[]; + hydratedButtons?: ReturnType[]; templateId?: string; documentMessage?: ReturnType; hydratedTitleText?: string; imageMessage?: ReturnType; videoMessage?: ReturnType; locationMessage?: ReturnType; - } = { - hydratedButtons: this.hydratedButtons.map((item: HydratedTemplateButton) => item.toObject()) - }; + } = {}; if (this.hydratedContentText != null) { data.hydratedContentText = this.hydratedContentText; } if (this.hydratedFooterText != null) { data.hydratedFooterText = this.hydratedFooterText; } + if (this.hydratedButtons != null) { + data.hydratedButtons = this.hydratedButtons.map((item: HydratedTemplateButton) => item.toObject()); + } if (this.templateId != null) { data.templateId = this.templateId; } @@ -7272,23 +7956,23 @@ export class HydratedFourRowTemplate extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.hydratedContentText === "string" && this.hydratedContentText.length) + if (this.has_hydratedContentText && this.hydratedContentText.length) writer.writeString(6, this.hydratedContentText); - if (typeof this.hydratedFooterText === "string" && this.hydratedFooterText.length) + if (this.has_hydratedFooterText && this.hydratedFooterText.length) writer.writeString(7, this.hydratedFooterText); - if (this.hydratedButtons !== undefined) + if (this.hydratedButtons.length) writer.writeRepeatedMessage(8, this.hydratedButtons, (item: HydratedTemplateButton) => item.serialize(writer)); - if (typeof this.templateId === "string" && this.templateId.length) + if (this.has_templateId && this.templateId.length) writer.writeString(9, this.templateId); - if (this.documentMessage !== undefined) + if (this.has_documentMessage) writer.writeMessage(1, this.documentMessage, () => this.documentMessage.serialize(writer)); - if (typeof this.hydratedTitleText === "string" && this.hydratedTitleText.length) + if (this.has_hydratedTitleText) writer.writeString(2, this.hydratedTitleText); - if (this.imageMessage !== undefined) + if (this.has_imageMessage) writer.writeMessage(3, this.imageMessage, () => this.imageMessage.serialize(writer)); - if (this.videoMessage !== undefined) + if (this.has_videoMessage) writer.writeMessage(4, this.videoMessage, () => this.videoMessage.serialize(writer)); - if (this.locationMessage !== undefined) + if (this.has_locationMessage) writer.writeMessage(5, this.locationMessage, () => this.locationMessage.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -7373,24 +8057,36 @@ export class TemplateMessage extends pb_1.Message { set contextInfo(value: ContextInfo) { pb_1.Message.setWrapperField(this, 3, value); } + get has_contextInfo() { + return pb_1.Message.getField(this, 3) != null; + } get hydratedTemplate() { return pb_1.Message.getWrapperField(this, HydratedFourRowTemplate, 4) as HydratedFourRowTemplate; } set hydratedTemplate(value: HydratedFourRowTemplate) { pb_1.Message.setWrapperField(this, 4, value); } + get has_hydratedTemplate() { + return pb_1.Message.getField(this, 4) != null; + } get fourRowTemplate() { return pb_1.Message.getWrapperField(this, FourRowTemplate, 1) as FourRowTemplate; } set fourRowTemplate(value: FourRowTemplate) { pb_1.Message.setOneofWrapperField(this, 1, this.#one_of_decls[0], value); } + get has_fourRowTemplate() { + return pb_1.Message.getField(this, 1) != null; + } get hydratedFourRowTemplate() { return pb_1.Message.getWrapperField(this, HydratedFourRowTemplate, 2) as HydratedFourRowTemplate; } set hydratedFourRowTemplate(value: HydratedFourRowTemplate) { pb_1.Message.setOneofWrapperField(this, 2, this.#one_of_decls[0], value); } + get has_hydratedFourRowTemplate() { + return pb_1.Message.getField(this, 2) != null; + } get format() { const cases: { [index: number]: "none" | "fourRowTemplate" | "hydratedFourRowTemplate"; @@ -7447,13 +8143,13 @@ export class TemplateMessage extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.contextInfo !== undefined) + if (this.has_contextInfo) writer.writeMessage(3, this.contextInfo, () => this.contextInfo.serialize(writer)); - if (this.hydratedTemplate !== undefined) + if (this.has_hydratedTemplate) writer.writeMessage(4, this.hydratedTemplate, () => this.hydratedTemplate.serialize(writer)); - if (this.fourRowTemplate !== undefined) + if (this.has_fourRowTemplate) writer.writeMessage(1, this.fourRowTemplate, () => this.fourRowTemplate.serialize(writer)); - if (this.hydratedFourRowTemplate !== undefined) + if (this.has_hydratedFourRowTemplate) writer.writeMessage(2, this.hydratedFourRowTemplate, () => this.hydratedFourRowTemplate.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -7514,29 +8210,41 @@ export class TemplateButtonReplyMessage extends pb_1.Message { } } get selectedId() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set selectedId(value: string) { pb_1.Message.setField(this, 1, value); } + get has_selectedId() { + return pb_1.Message.getField(this, 1) != null; + } get selectedDisplayText() { - return pb_1.Message.getField(this, 2) as string; + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; } set selectedDisplayText(value: string) { pb_1.Message.setField(this, 2, value); } + get has_selectedDisplayText() { + return pb_1.Message.getField(this, 2) != null; + } get contextInfo() { return pb_1.Message.getWrapperField(this, ContextInfo, 3) as ContextInfo; } set contextInfo(value: ContextInfo) { pb_1.Message.setWrapperField(this, 3, value); } + get has_contextInfo() { + return pb_1.Message.getField(this, 3) != null; + } get selectedIndex() { - return pb_1.Message.getField(this, 4) as number; + return pb_1.Message.getFieldWithDefault(this, 4, 0) as number; } set selectedIndex(value: number) { pb_1.Message.setField(this, 4, value); } + get has_selectedIndex() { + return pb_1.Message.getField(this, 4) != null; + } static fromObject(data: { selectedId?: string; selectedDisplayText?: string; @@ -7583,13 +8291,13 @@ export class TemplateButtonReplyMessage extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.selectedId === "string" && this.selectedId.length) + if (this.has_selectedId && this.selectedId.length) writer.writeString(1, this.selectedId); - if (typeof this.selectedDisplayText === "string" && this.selectedDisplayText.length) + if (this.has_selectedDisplayText && this.selectedDisplayText.length) writer.writeString(2, this.selectedDisplayText); - if (this.contextInfo !== undefined) + if (this.has_contextInfo) writer.writeMessage(3, this.contextInfo, () => this.contextInfo.serialize(writer)); - if (this.selectedIndex !== undefined) + if (this.has_selectedIndex) writer.writeUint32(4, this.selectedIndex); if (!w) return writer.getResultBuffer(); @@ -7651,18 +8359,27 @@ export class CatalogSnapshot extends pb_1.Message { set catalogImage(value: ImageMessage) { pb_1.Message.setWrapperField(this, 1, value); } + get has_catalogImage() { + return pb_1.Message.getField(this, 1) != null; + } get title() { - return pb_1.Message.getField(this, 2) as string; + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; } set title(value: string) { pb_1.Message.setField(this, 2, value); } + get has_title() { + return pb_1.Message.getField(this, 2) != null; + } get description() { - return pb_1.Message.getField(this, 3) as string; + return pb_1.Message.getFieldWithDefault(this, 3, "") as string; } set description(value: string) { pb_1.Message.setField(this, 3, value); } + get has_description() { + return pb_1.Message.getField(this, 3) != null; + } static fromObject(data: { catalogImage?: ReturnType; title?: string; @@ -7701,11 +8418,11 @@ export class CatalogSnapshot extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.catalogImage !== undefined) + if (this.has_catalogImage) writer.writeMessage(1, this.catalogImage, () => this.catalogImage.serialize(writer)); - if (typeof this.title === "string" && this.title.length) + if (this.has_title && this.title.length) writer.writeString(2, this.title); - if (typeof this.description === "string" && this.description.length) + if (this.has_description && this.description.length) writer.writeString(3, this.description); if (!w) return writer.getResultBuffer(); @@ -7792,60 +8509,90 @@ export class ProductSnapshot extends pb_1.Message { set productImage(value: ImageMessage) { pb_1.Message.setWrapperField(this, 1, value); } + get has_productImage() { + return pb_1.Message.getField(this, 1) != null; + } get productId() { - return pb_1.Message.getField(this, 2) as string; + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; } set productId(value: string) { pb_1.Message.setField(this, 2, value); } + get has_productId() { + return pb_1.Message.getField(this, 2) != null; + } get title() { - return pb_1.Message.getField(this, 3) as string; + return pb_1.Message.getFieldWithDefault(this, 3, "") as string; } set title(value: string) { pb_1.Message.setField(this, 3, value); } + get has_title() { + return pb_1.Message.getField(this, 3) != null; + } get description() { - return pb_1.Message.getField(this, 4) as string; + return pb_1.Message.getFieldWithDefault(this, 4, "") as string; } set description(value: string) { pb_1.Message.setField(this, 4, value); } + get has_description() { + return pb_1.Message.getField(this, 4) != null; + } get currencyCode() { - return pb_1.Message.getField(this, 5) as string; + return pb_1.Message.getFieldWithDefault(this, 5, "") as string; } set currencyCode(value: string) { pb_1.Message.setField(this, 5, value); } + get has_currencyCode() { + return pb_1.Message.getField(this, 5) != null; + } get priceAmount1000() { - return pb_1.Message.getField(this, 6) as number; + return pb_1.Message.getFieldWithDefault(this, 6, 0) as number; } set priceAmount1000(value: number) { pb_1.Message.setField(this, 6, value); } + get has_priceAmount1000() { + return pb_1.Message.getField(this, 6) != null; + } get retailerId() { - return pb_1.Message.getField(this, 7) as string; + return pb_1.Message.getFieldWithDefault(this, 7, "") as string; } set retailerId(value: string) { pb_1.Message.setField(this, 7, value); } + get has_retailerId() { + return pb_1.Message.getField(this, 7) != null; + } get url() { - return pb_1.Message.getField(this, 8) as string; + return pb_1.Message.getFieldWithDefault(this, 8, "") as string; } set url(value: string) { pb_1.Message.setField(this, 8, value); } + get has_url() { + return pb_1.Message.getField(this, 8) != null; + } get productImageCount() { - return pb_1.Message.getField(this, 9) as number; + return pb_1.Message.getFieldWithDefault(this, 9, 0) as number; } set productImageCount(value: number) { pb_1.Message.setField(this, 9, value); } + get has_productImageCount() { + return pb_1.Message.getField(this, 9) != null; + } get firstImageId() { - return pb_1.Message.getField(this, 11) as string; + return pb_1.Message.getFieldWithDefault(this, 11, "") as string; } set firstImageId(value: string) { pb_1.Message.setField(this, 11, value); } + get has_firstImageId() { + return pb_1.Message.getField(this, 11) != null; + } static fromObject(data: { productImage?: ReturnType; productId?: string; @@ -7940,25 +8687,25 @@ export class ProductSnapshot extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.productImage !== undefined) + if (this.has_productImage) writer.writeMessage(1, this.productImage, () => this.productImage.serialize(writer)); - if (typeof this.productId === "string" && this.productId.length) + if (this.has_productId && this.productId.length) writer.writeString(2, this.productId); - if (typeof this.title === "string" && this.title.length) + if (this.has_title && this.title.length) writer.writeString(3, this.title); - if (typeof this.description === "string" && this.description.length) + if (this.has_description && this.description.length) writer.writeString(4, this.description); - if (typeof this.currencyCode === "string" && this.currencyCode.length) + if (this.has_currencyCode && this.currencyCode.length) writer.writeString(5, this.currencyCode); - if (this.priceAmount1000 !== undefined) + if (this.has_priceAmount1000) writer.writeInt64(6, this.priceAmount1000); - if (typeof this.retailerId === "string" && this.retailerId.length) + if (this.has_retailerId && this.retailerId.length) writer.writeString(7, this.retailerId); - if (typeof this.url === "string" && this.url.length) + if (this.has_url && this.url.length) writer.writeString(8, this.url); - if (this.productImageCount !== undefined) + if (this.has_productImageCount) writer.writeUint32(9, this.productImageCount); - if (typeof this.firstImageId === "string" && this.firstImageId.length) + if (this.has_firstImageId && this.firstImageId.length) writer.writeString(11, this.firstImageId); if (!w) return writer.getResultBuffer(); @@ -8042,24 +8789,36 @@ export class ProductMessage extends pb_1.Message { set product(value: ProductSnapshot) { pb_1.Message.setWrapperField(this, 1, value); } + get has_product() { + return pb_1.Message.getField(this, 1) != null; + } get businessOwnerJid() { - return pb_1.Message.getField(this, 2) as string; + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; } set businessOwnerJid(value: string) { pb_1.Message.setField(this, 2, value); } + get has_businessOwnerJid() { + return pb_1.Message.getField(this, 2) != null; + } get catalog() { return pb_1.Message.getWrapperField(this, CatalogSnapshot, 4) as CatalogSnapshot; } set catalog(value: CatalogSnapshot) { pb_1.Message.setWrapperField(this, 4, value); } + get has_catalog() { + return pb_1.Message.getField(this, 4) != null; + } get contextInfo() { return pb_1.Message.getWrapperField(this, ContextInfo, 17) as ContextInfo; } set contextInfo(value: ContextInfo) { pb_1.Message.setWrapperField(this, 17, value); } + get has_contextInfo() { + return pb_1.Message.getField(this, 17) != null; + } static fromObject(data: { product?: ReturnType; businessOwnerJid?: string; @@ -8106,13 +8865,13 @@ export class ProductMessage extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.product !== undefined) + if (this.has_product) writer.writeMessage(1, this.product, () => this.product.serialize(writer)); - if (typeof this.businessOwnerJid === "string" && this.businessOwnerJid.length) + if (this.has_businessOwnerJid && this.businessOwnerJid.length) writer.writeString(2, this.businessOwnerJid); - if (this.catalog !== undefined) + if (this.has_catalog) writer.writeMessage(4, this.catalog, () => this.catalog.serialize(writer)); - if (this.contextInfo !== undefined) + if (this.has_contextInfo) writer.writeMessage(17, this.contextInfo, () => this.contextInfo.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -8185,47 +8944,68 @@ export class GroupInviteMessage extends pb_1.Message { } } get groupJid() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set groupJid(value: string) { pb_1.Message.setField(this, 1, value); } + get has_groupJid() { + return pb_1.Message.getField(this, 1) != null; + } get inviteCode() { - return pb_1.Message.getField(this, 2) as string; + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; } set inviteCode(value: string) { pb_1.Message.setField(this, 2, value); } + get has_inviteCode() { + return pb_1.Message.getField(this, 2) != null; + } get inviteExpiration() { - return pb_1.Message.getField(this, 3) as number; + return pb_1.Message.getFieldWithDefault(this, 3, 0) as number; } set inviteExpiration(value: number) { pb_1.Message.setField(this, 3, value); } + get has_inviteExpiration() { + return pb_1.Message.getField(this, 3) != null; + } get groupName() { - return pb_1.Message.getField(this, 4) as string; + return pb_1.Message.getFieldWithDefault(this, 4, "") as string; } set groupName(value: string) { pb_1.Message.setField(this, 4, value); } + get has_groupName() { + return pb_1.Message.getField(this, 4) != null; + } get jpegThumbnail() { - return pb_1.Message.getField(this, 5) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 5, new Uint8Array()) as Uint8Array; } set jpegThumbnail(value: Uint8Array) { pb_1.Message.setField(this, 5, value); } + get has_jpegThumbnail() { + return pb_1.Message.getField(this, 5) != null; + } get caption() { - return pb_1.Message.getField(this, 6) as string; + return pb_1.Message.getFieldWithDefault(this, 6, "") as string; } set caption(value: string) { pb_1.Message.setField(this, 6, value); } + get has_caption() { + return pb_1.Message.getField(this, 6) != null; + } get contextInfo() { return pb_1.Message.getWrapperField(this, ContextInfo, 7) as ContextInfo; } set contextInfo(value: ContextInfo) { pb_1.Message.setWrapperField(this, 7, value); } + get has_contextInfo() { + return pb_1.Message.getField(this, 7) != null; + } static fromObject(data: { groupJid?: string; inviteCode?: string; @@ -8296,19 +9076,19 @@ export class GroupInviteMessage extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.groupJid === "string" && this.groupJid.length) + if (this.has_groupJid && this.groupJid.length) writer.writeString(1, this.groupJid); - if (typeof this.inviteCode === "string" && this.inviteCode.length) + if (this.has_inviteCode && this.inviteCode.length) writer.writeString(2, this.inviteCode); - if (this.inviteExpiration !== undefined) + if (this.has_inviteExpiration) writer.writeInt64(3, this.inviteExpiration); - if (typeof this.groupName === "string" && this.groupName.length) + if (this.has_groupName && this.groupName.length) writer.writeString(4, this.groupName); - if (this.jpegThumbnail !== undefined) + if (this.has_jpegThumbnail && this.jpegThumbnail.length) writer.writeBytes(5, this.jpegThumbnail); - if (typeof this.caption === "string" && this.caption.length) + if (this.has_caption && this.caption.length) writer.writeString(6, this.caption); - if (this.contextInfo !== undefined) + if (this.has_contextInfo) writer.writeMessage(7, this.contextInfo, () => this.contextInfo.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -8374,23 +9154,32 @@ export class DeviceSentMessage extends pb_1.Message { } } get destinationJid() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set destinationJid(value: string) { pb_1.Message.setField(this, 1, value); } + get has_destinationJid() { + return pb_1.Message.getField(this, 1) != null; + } get message() { return pb_1.Message.getWrapperField(this, Message, 2) as Message; } set message(value: Message) { pb_1.Message.setWrapperField(this, 2, value); } + get has_message() { + return pb_1.Message.getField(this, 2) != null; + } get phash() { - return pb_1.Message.getField(this, 3) as string; + return pb_1.Message.getFieldWithDefault(this, 3, "") as string; } set phash(value: string) { pb_1.Message.setField(this, 3, value); } + get has_phash() { + return pb_1.Message.getField(this, 3) != null; + } static fromObject(data: { destinationJid?: string; message?: ReturnType; @@ -8429,11 +9218,11 @@ export class DeviceSentMessage extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.destinationJid === "string" && this.destinationJid.length) + if (this.has_destinationJid && this.destinationJid.length) writer.writeString(1, this.destinationJid); - if (this.message !== undefined) + if (this.has_message) writer.writeMessage(2, this.message, () => this.message.serialize(writer)); - if (typeof this.phash === "string" && this.phash.length) + if (this.has_phash && this.phash.length) writer.writeString(3, this.phash); if (!w) return writer.getResultBuffer(); @@ -8579,161 +9368,239 @@ export class Message extends pb_1.Message { } } get conversation() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set conversation(value: string) { pb_1.Message.setField(this, 1, value); } + get has_conversation() { + return pb_1.Message.getField(this, 1) != null; + } get senderKeyDistributionMessage() { return pb_1.Message.getWrapperField(this, SenderKeyDistributionMessage, 2) as SenderKeyDistributionMessage; } set senderKeyDistributionMessage(value: SenderKeyDistributionMessage) { pb_1.Message.setWrapperField(this, 2, value); } + get has_senderKeyDistributionMessage() { + return pb_1.Message.getField(this, 2) != null; + } get imageMessage() { return pb_1.Message.getWrapperField(this, ImageMessage, 3) as ImageMessage; } set imageMessage(value: ImageMessage) { pb_1.Message.setWrapperField(this, 3, value); } + get has_imageMessage() { + return pb_1.Message.getField(this, 3) != null; + } get contactMessage() { return pb_1.Message.getWrapperField(this, ContactMessage, 4) as ContactMessage; } set contactMessage(value: ContactMessage) { pb_1.Message.setWrapperField(this, 4, value); } + get has_contactMessage() { + return pb_1.Message.getField(this, 4) != null; + } get locationMessage() { return pb_1.Message.getWrapperField(this, LocationMessage, 5) as LocationMessage; } set locationMessage(value: LocationMessage) { pb_1.Message.setWrapperField(this, 5, value); } + get has_locationMessage() { + return pb_1.Message.getField(this, 5) != null; + } get extendedTextMessage() { return pb_1.Message.getWrapperField(this, ExtendedTextMessage, 6) as ExtendedTextMessage; } set extendedTextMessage(value: ExtendedTextMessage) { pb_1.Message.setWrapperField(this, 6, value); } + get has_extendedTextMessage() { + return pb_1.Message.getField(this, 6) != null; + } get documentMessage() { return pb_1.Message.getWrapperField(this, DocumentMessage, 7) as DocumentMessage; } set documentMessage(value: DocumentMessage) { pb_1.Message.setWrapperField(this, 7, value); } + get has_documentMessage() { + return pb_1.Message.getField(this, 7) != null; + } get audioMessage() { return pb_1.Message.getWrapperField(this, AudioMessage, 8) as AudioMessage; } set audioMessage(value: AudioMessage) { pb_1.Message.setWrapperField(this, 8, value); } + get has_audioMessage() { + return pb_1.Message.getField(this, 8) != null; + } get videoMessage() { return pb_1.Message.getWrapperField(this, VideoMessage, 9) as VideoMessage; } set videoMessage(value: VideoMessage) { pb_1.Message.setWrapperField(this, 9, value); } + get has_videoMessage() { + return pb_1.Message.getField(this, 9) != null; + } get call() { return pb_1.Message.getWrapperField(this, Call, 10) as Call; } set call(value: Call) { pb_1.Message.setWrapperField(this, 10, value); } + get has_call() { + return pb_1.Message.getField(this, 10) != null; + } get chat() { return pb_1.Message.getWrapperField(this, Chat, 11) as Chat; } set chat(value: Chat) { pb_1.Message.setWrapperField(this, 11, value); } + get has_chat() { + return pb_1.Message.getField(this, 11) != null; + } get protocolMessage() { return pb_1.Message.getWrapperField(this, ProtocolMessage, 12) as ProtocolMessage; } set protocolMessage(value: ProtocolMessage) { pb_1.Message.setWrapperField(this, 12, value); } + get has_protocolMessage() { + return pb_1.Message.getField(this, 12) != null; + } get contactsArrayMessage() { return pb_1.Message.getWrapperField(this, ContactsArrayMessage, 13) as ContactsArrayMessage; } set contactsArrayMessage(value: ContactsArrayMessage) { pb_1.Message.setWrapperField(this, 13, value); } + get has_contactsArrayMessage() { + return pb_1.Message.getField(this, 13) != null; + } get highlyStructuredMessage() { return pb_1.Message.getWrapperField(this, HighlyStructuredMessage, 14) as HighlyStructuredMessage; } set highlyStructuredMessage(value: HighlyStructuredMessage) { pb_1.Message.setWrapperField(this, 14, value); } + get has_highlyStructuredMessage() { + return pb_1.Message.getField(this, 14) != null; + } get fastRatchetKeySenderKeyDistributionMessage() { return pb_1.Message.getWrapperField(this, SenderKeyDistributionMessage, 15) as SenderKeyDistributionMessage; } set fastRatchetKeySenderKeyDistributionMessage(value: SenderKeyDistributionMessage) { pb_1.Message.setWrapperField(this, 15, value); } + get has_fastRatchetKeySenderKeyDistributionMessage() { + return pb_1.Message.getField(this, 15) != null; + } get sendPaymentMessage() { return pb_1.Message.getWrapperField(this, SendPaymentMessage, 16) as SendPaymentMessage; } set sendPaymentMessage(value: SendPaymentMessage) { pb_1.Message.setWrapperField(this, 16, value); } + get has_sendPaymentMessage() { + return pb_1.Message.getField(this, 16) != null; + } get liveLocationMessage() { return pb_1.Message.getWrapperField(this, LiveLocationMessage, 18) as LiveLocationMessage; } set liveLocationMessage(value: LiveLocationMessage) { pb_1.Message.setWrapperField(this, 18, value); } + get has_liveLocationMessage() { + return pb_1.Message.getField(this, 18) != null; + } get requestPaymentMessage() { return pb_1.Message.getWrapperField(this, RequestPaymentMessage, 22) as RequestPaymentMessage; } set requestPaymentMessage(value: RequestPaymentMessage) { pb_1.Message.setWrapperField(this, 22, value); } + get has_requestPaymentMessage() { + return pb_1.Message.getField(this, 22) != null; + } get declinePaymentRequestMessage() { return pb_1.Message.getWrapperField(this, DeclinePaymentRequestMessage, 23) as DeclinePaymentRequestMessage; } set declinePaymentRequestMessage(value: DeclinePaymentRequestMessage) { pb_1.Message.setWrapperField(this, 23, value); } + get has_declinePaymentRequestMessage() { + return pb_1.Message.getField(this, 23) != null; + } get cancelPaymentRequestMessage() { return pb_1.Message.getWrapperField(this, CancelPaymentRequestMessage, 24) as CancelPaymentRequestMessage; } set cancelPaymentRequestMessage(value: CancelPaymentRequestMessage) { pb_1.Message.setWrapperField(this, 24, value); } + get has_cancelPaymentRequestMessage() { + return pb_1.Message.getField(this, 24) != null; + } get templateMessage() { return pb_1.Message.getWrapperField(this, TemplateMessage, 25) as TemplateMessage; } set templateMessage(value: TemplateMessage) { pb_1.Message.setWrapperField(this, 25, value); } + get has_templateMessage() { + return pb_1.Message.getField(this, 25) != null; + } get stickerMessage() { return pb_1.Message.getWrapperField(this, StickerMessage, 26) as StickerMessage; } set stickerMessage(value: StickerMessage) { pb_1.Message.setWrapperField(this, 26, value); } + get has_stickerMessage() { + return pb_1.Message.getField(this, 26) != null; + } get groupInviteMessage() { return pb_1.Message.getWrapperField(this, GroupInviteMessage, 28) as GroupInviteMessage; } set groupInviteMessage(value: GroupInviteMessage) { pb_1.Message.setWrapperField(this, 28, value); } + get has_groupInviteMessage() { + return pb_1.Message.getField(this, 28) != null; + } get templateButtonReplyMessage() { return pb_1.Message.getWrapperField(this, TemplateButtonReplyMessage, 29) as TemplateButtonReplyMessage; } set templateButtonReplyMessage(value: TemplateButtonReplyMessage) { pb_1.Message.setWrapperField(this, 29, value); } + get has_templateButtonReplyMessage() { + return pb_1.Message.getField(this, 29) != null; + } get productMessage() { return pb_1.Message.getWrapperField(this, ProductMessage, 30) as ProductMessage; } set productMessage(value: ProductMessage) { pb_1.Message.setWrapperField(this, 30, value); } + get has_productMessage() { + return pb_1.Message.getField(this, 30) != null; + } get deviceSentMessage() { return pb_1.Message.getWrapperField(this, DeviceSentMessage, 31) as DeviceSentMessage; } set deviceSentMessage(value: DeviceSentMessage) { pb_1.Message.setWrapperField(this, 31, value); } + get has_deviceSentMessage() { + return pb_1.Message.getField(this, 31) != null; + } static fromObject(data: { conversation?: string; senderKeyDistributionMessage?: ReturnType; @@ -8956,57 +9823,57 @@ export class Message extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.conversation === "string" && this.conversation.length) + if (this.has_conversation && this.conversation.length) writer.writeString(1, this.conversation); - if (this.senderKeyDistributionMessage !== undefined) + if (this.has_senderKeyDistributionMessage) writer.writeMessage(2, this.senderKeyDistributionMessage, () => this.senderKeyDistributionMessage.serialize(writer)); - if (this.imageMessage !== undefined) + if (this.has_imageMessage) writer.writeMessage(3, this.imageMessage, () => this.imageMessage.serialize(writer)); - if (this.contactMessage !== undefined) + if (this.has_contactMessage) writer.writeMessage(4, this.contactMessage, () => this.contactMessage.serialize(writer)); - if (this.locationMessage !== undefined) + if (this.has_locationMessage) writer.writeMessage(5, this.locationMessage, () => this.locationMessage.serialize(writer)); - if (this.extendedTextMessage !== undefined) + if (this.has_extendedTextMessage) writer.writeMessage(6, this.extendedTextMessage, () => this.extendedTextMessage.serialize(writer)); - if (this.documentMessage !== undefined) + if (this.has_documentMessage) writer.writeMessage(7, this.documentMessage, () => this.documentMessage.serialize(writer)); - if (this.audioMessage !== undefined) + if (this.has_audioMessage) writer.writeMessage(8, this.audioMessage, () => this.audioMessage.serialize(writer)); - if (this.videoMessage !== undefined) + if (this.has_videoMessage) writer.writeMessage(9, this.videoMessage, () => this.videoMessage.serialize(writer)); - if (this.call !== undefined) + if (this.has_call) writer.writeMessage(10, this.call, () => this.call.serialize(writer)); - if (this.chat !== undefined) + if (this.has_chat) writer.writeMessage(11, this.chat, () => this.chat.serialize(writer)); - if (this.protocolMessage !== undefined) + if (this.has_protocolMessage) writer.writeMessage(12, this.protocolMessage, () => this.protocolMessage.serialize(writer)); - if (this.contactsArrayMessage !== undefined) + if (this.has_contactsArrayMessage) writer.writeMessage(13, this.contactsArrayMessage, () => this.contactsArrayMessage.serialize(writer)); - if (this.highlyStructuredMessage !== undefined) + if (this.has_highlyStructuredMessage) writer.writeMessage(14, this.highlyStructuredMessage, () => this.highlyStructuredMessage.serialize(writer)); - if (this.fastRatchetKeySenderKeyDistributionMessage !== undefined) + if (this.has_fastRatchetKeySenderKeyDistributionMessage) writer.writeMessage(15, this.fastRatchetKeySenderKeyDistributionMessage, () => this.fastRatchetKeySenderKeyDistributionMessage.serialize(writer)); - if (this.sendPaymentMessage !== undefined) + if (this.has_sendPaymentMessage) writer.writeMessage(16, this.sendPaymentMessage, () => this.sendPaymentMessage.serialize(writer)); - if (this.liveLocationMessage !== undefined) + if (this.has_liveLocationMessage) writer.writeMessage(18, this.liveLocationMessage, () => this.liveLocationMessage.serialize(writer)); - if (this.requestPaymentMessage !== undefined) + if (this.has_requestPaymentMessage) writer.writeMessage(22, this.requestPaymentMessage, () => this.requestPaymentMessage.serialize(writer)); - if (this.declinePaymentRequestMessage !== undefined) + if (this.has_declinePaymentRequestMessage) writer.writeMessage(23, this.declinePaymentRequestMessage, () => this.declinePaymentRequestMessage.serialize(writer)); - if (this.cancelPaymentRequestMessage !== undefined) + if (this.has_cancelPaymentRequestMessage) writer.writeMessage(24, this.cancelPaymentRequestMessage, () => this.cancelPaymentRequestMessage.serialize(writer)); - if (this.templateMessage !== undefined) + if (this.has_templateMessage) writer.writeMessage(25, this.templateMessage, () => this.templateMessage.serialize(writer)); - if (this.stickerMessage !== undefined) + if (this.has_stickerMessage) writer.writeMessage(26, this.stickerMessage, () => this.stickerMessage.serialize(writer)); - if (this.groupInviteMessage !== undefined) + if (this.has_groupInviteMessage) writer.writeMessage(28, this.groupInviteMessage, () => this.groupInviteMessage.serialize(writer)); - if (this.templateButtonReplyMessage !== undefined) + if (this.has_templateButtonReplyMessage) writer.writeMessage(29, this.templateButtonReplyMessage, () => this.templateButtonReplyMessage.serialize(writer)); - if (this.productMessage !== undefined) + if (this.has_productMessage) writer.writeMessage(30, this.productMessage, () => this.productMessage.serialize(writer)); - if (this.deviceSentMessage !== undefined) + if (this.has_deviceSentMessage) writer.writeMessage(31, this.deviceSentMessage, () => this.deviceSentMessage.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -9133,29 +10000,41 @@ export class MessageKey extends pb_1.Message { } } get remoteJid() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set remoteJid(value: string) { pb_1.Message.setField(this, 1, value); } + get has_remoteJid() { + return pb_1.Message.getField(this, 1) != null; + } get fromMe() { - return pb_1.Message.getField(this, 2) as boolean; + return pb_1.Message.getFieldWithDefault(this, 2, false) as boolean; } set fromMe(value: boolean) { pb_1.Message.setField(this, 2, value); } + get has_fromMe() { + return pb_1.Message.getField(this, 2) != null; + } get id() { - return pb_1.Message.getField(this, 3) as string; + return pb_1.Message.getFieldWithDefault(this, 3, "") as string; } set id(value: string) { pb_1.Message.setField(this, 3, value); } + get has_id() { + return pb_1.Message.getField(this, 3) != null; + } get participant() { - return pb_1.Message.getField(this, 4) as string; + return pb_1.Message.getFieldWithDefault(this, 4, "") as string; } set participant(value: string) { pb_1.Message.setField(this, 4, value); } + get has_participant() { + return pb_1.Message.getField(this, 4) != null; + } static fromObject(data: { remoteJid?: string; fromMe?: boolean; @@ -9202,13 +10081,13 @@ export class MessageKey extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.remoteJid === "string" && this.remoteJid.length) + if (this.has_remoteJid && this.remoteJid.length) writer.writeString(1, this.remoteJid); - if (this.fromMe !== undefined) + if (this.has_fromMe) writer.writeBool(2, this.fromMe); - if (typeof this.id === "string" && this.id.length) + if (this.has_id && this.id.length) writer.writeString(3, this.id); - if (typeof this.participant === "string" && this.participant.length) + if (this.has_participant && this.participant.length) writer.writeString(4, this.participant); if (!w) return writer.getResultBuffer(); @@ -9385,203 +10264,302 @@ export class WebFeatures extends pb_1.Message { } } get labelsDisplay() { - return pb_1.Message.getField(this, 1) as WebFeatures.WEB_FEATURES_FLAG; + return pb_1.Message.getFieldWithDefault(this, 1, WebFeatures.WEB_FEATURES_FLAG.NOT_STARTED) as WebFeatures.WEB_FEATURES_FLAG; } set labelsDisplay(value: WebFeatures.WEB_FEATURES_FLAG) { pb_1.Message.setField(this, 1, value); } + get has_labelsDisplay() { + return pb_1.Message.getField(this, 1) != null; + } get voipIndividualOutgoing() { - return pb_1.Message.getField(this, 2) as WebFeatures.WEB_FEATURES_FLAG; + return pb_1.Message.getFieldWithDefault(this, 2, WebFeatures.WEB_FEATURES_FLAG.NOT_STARTED) as WebFeatures.WEB_FEATURES_FLAG; } set voipIndividualOutgoing(value: WebFeatures.WEB_FEATURES_FLAG) { pb_1.Message.setField(this, 2, value); } + get has_voipIndividualOutgoing() { + return pb_1.Message.getField(this, 2) != null; + } get groupsV3() { - return pb_1.Message.getField(this, 3) as WebFeatures.WEB_FEATURES_FLAG; + return pb_1.Message.getFieldWithDefault(this, 3, WebFeatures.WEB_FEATURES_FLAG.NOT_STARTED) as WebFeatures.WEB_FEATURES_FLAG; } set groupsV3(value: WebFeatures.WEB_FEATURES_FLAG) { pb_1.Message.setField(this, 3, value); } + get has_groupsV3() { + return pb_1.Message.getField(this, 3) != null; + } get groupsV3Create() { - return pb_1.Message.getField(this, 4) as WebFeatures.WEB_FEATURES_FLAG; + return pb_1.Message.getFieldWithDefault(this, 4, WebFeatures.WEB_FEATURES_FLAG.NOT_STARTED) as WebFeatures.WEB_FEATURES_FLAG; } set groupsV3Create(value: WebFeatures.WEB_FEATURES_FLAG) { pb_1.Message.setField(this, 4, value); } + get has_groupsV3Create() { + return pb_1.Message.getField(this, 4) != null; + } get changeNumberV2() { - return pb_1.Message.getField(this, 5) as WebFeatures.WEB_FEATURES_FLAG; + return pb_1.Message.getFieldWithDefault(this, 5, WebFeatures.WEB_FEATURES_FLAG.NOT_STARTED) as WebFeatures.WEB_FEATURES_FLAG; } set changeNumberV2(value: WebFeatures.WEB_FEATURES_FLAG) { pb_1.Message.setField(this, 5, value); } + get has_changeNumberV2() { + return pb_1.Message.getField(this, 5) != null; + } get queryStatusV3Thumbnail() { - return pb_1.Message.getField(this, 6) as WebFeatures.WEB_FEATURES_FLAG; + return pb_1.Message.getFieldWithDefault(this, 6, WebFeatures.WEB_FEATURES_FLAG.NOT_STARTED) as WebFeatures.WEB_FEATURES_FLAG; } set queryStatusV3Thumbnail(value: WebFeatures.WEB_FEATURES_FLAG) { pb_1.Message.setField(this, 6, value); } + get has_queryStatusV3Thumbnail() { + return pb_1.Message.getField(this, 6) != null; + } get liveLocations() { - return pb_1.Message.getField(this, 7) as WebFeatures.WEB_FEATURES_FLAG; + return pb_1.Message.getFieldWithDefault(this, 7, WebFeatures.WEB_FEATURES_FLAG.NOT_STARTED) as WebFeatures.WEB_FEATURES_FLAG; } set liveLocations(value: WebFeatures.WEB_FEATURES_FLAG) { pb_1.Message.setField(this, 7, value); } + get has_liveLocations() { + return pb_1.Message.getField(this, 7) != null; + } get queryVname() { - return pb_1.Message.getField(this, 8) as WebFeatures.WEB_FEATURES_FLAG; + return pb_1.Message.getFieldWithDefault(this, 8, WebFeatures.WEB_FEATURES_FLAG.NOT_STARTED) as WebFeatures.WEB_FEATURES_FLAG; } set queryVname(value: WebFeatures.WEB_FEATURES_FLAG) { pb_1.Message.setField(this, 8, value); } + get has_queryVname() { + return pb_1.Message.getField(this, 8) != null; + } get voipIndividualIncoming() { - return pb_1.Message.getField(this, 9) as WebFeatures.WEB_FEATURES_FLAG; + return pb_1.Message.getFieldWithDefault(this, 9, WebFeatures.WEB_FEATURES_FLAG.NOT_STARTED) as WebFeatures.WEB_FEATURES_FLAG; } set voipIndividualIncoming(value: WebFeatures.WEB_FEATURES_FLAG) { pb_1.Message.setField(this, 9, value); } + get has_voipIndividualIncoming() { + return pb_1.Message.getField(this, 9) != null; + } get quickRepliesQuery() { - return pb_1.Message.getField(this, 10) as WebFeatures.WEB_FEATURES_FLAG; + return pb_1.Message.getFieldWithDefault(this, 10, WebFeatures.WEB_FEATURES_FLAG.NOT_STARTED) as WebFeatures.WEB_FEATURES_FLAG; } set quickRepliesQuery(value: WebFeatures.WEB_FEATURES_FLAG) { pb_1.Message.setField(this, 10, value); } + get has_quickRepliesQuery() { + return pb_1.Message.getField(this, 10) != null; + } get payments() { - return pb_1.Message.getField(this, 11) as WebFeatures.WEB_FEATURES_FLAG; + return pb_1.Message.getFieldWithDefault(this, 11, WebFeatures.WEB_FEATURES_FLAG.NOT_STARTED) as WebFeatures.WEB_FEATURES_FLAG; } set payments(value: WebFeatures.WEB_FEATURES_FLAG) { pb_1.Message.setField(this, 11, value); } + get has_payments() { + return pb_1.Message.getField(this, 11) != null; + } get stickerPackQuery() { - return pb_1.Message.getField(this, 12) as WebFeatures.WEB_FEATURES_FLAG; + return pb_1.Message.getFieldWithDefault(this, 12, WebFeatures.WEB_FEATURES_FLAG.NOT_STARTED) as WebFeatures.WEB_FEATURES_FLAG; } set stickerPackQuery(value: WebFeatures.WEB_FEATURES_FLAG) { pb_1.Message.setField(this, 12, value); } + get has_stickerPackQuery() { + return pb_1.Message.getField(this, 12) != null; + } get liveLocationsFinal() { - return pb_1.Message.getField(this, 13) as WebFeatures.WEB_FEATURES_FLAG; + return pb_1.Message.getFieldWithDefault(this, 13, WebFeatures.WEB_FEATURES_FLAG.NOT_STARTED) as WebFeatures.WEB_FEATURES_FLAG; } set liveLocationsFinal(value: WebFeatures.WEB_FEATURES_FLAG) { pb_1.Message.setField(this, 13, value); } + get has_liveLocationsFinal() { + return pb_1.Message.getField(this, 13) != null; + } get labelsEdit() { - return pb_1.Message.getField(this, 14) as WebFeatures.WEB_FEATURES_FLAG; + return pb_1.Message.getFieldWithDefault(this, 14, WebFeatures.WEB_FEATURES_FLAG.NOT_STARTED) as WebFeatures.WEB_FEATURES_FLAG; } set labelsEdit(value: WebFeatures.WEB_FEATURES_FLAG) { pb_1.Message.setField(this, 14, value); } + get has_labelsEdit() { + return pb_1.Message.getField(this, 14) != null; + } get mediaUpload() { - return pb_1.Message.getField(this, 15) as WebFeatures.WEB_FEATURES_FLAG; + return pb_1.Message.getFieldWithDefault(this, 15, WebFeatures.WEB_FEATURES_FLAG.NOT_STARTED) as WebFeatures.WEB_FEATURES_FLAG; } set mediaUpload(value: WebFeatures.WEB_FEATURES_FLAG) { pb_1.Message.setField(this, 15, value); } + get has_mediaUpload() { + return pb_1.Message.getField(this, 15) != null; + } get mediaUploadRichQuickReplies() { - return pb_1.Message.getField(this, 18) as WebFeatures.WEB_FEATURES_FLAG; + return pb_1.Message.getFieldWithDefault(this, 18, WebFeatures.WEB_FEATURES_FLAG.NOT_STARTED) as WebFeatures.WEB_FEATURES_FLAG; } set mediaUploadRichQuickReplies(value: WebFeatures.WEB_FEATURES_FLAG) { pb_1.Message.setField(this, 18, value); } + get has_mediaUploadRichQuickReplies() { + return pb_1.Message.getField(this, 18) != null; + } get vnameV2() { - return pb_1.Message.getField(this, 19) as WebFeatures.WEB_FEATURES_FLAG; + return pb_1.Message.getFieldWithDefault(this, 19, WebFeatures.WEB_FEATURES_FLAG.NOT_STARTED) as WebFeatures.WEB_FEATURES_FLAG; } set vnameV2(value: WebFeatures.WEB_FEATURES_FLAG) { pb_1.Message.setField(this, 19, value); } + get has_vnameV2() { + return pb_1.Message.getField(this, 19) != null; + } get videoPlaybackUrl() { - return pb_1.Message.getField(this, 20) as WebFeatures.WEB_FEATURES_FLAG; + return pb_1.Message.getFieldWithDefault(this, 20, WebFeatures.WEB_FEATURES_FLAG.NOT_STARTED) as WebFeatures.WEB_FEATURES_FLAG; } set videoPlaybackUrl(value: WebFeatures.WEB_FEATURES_FLAG) { pb_1.Message.setField(this, 20, value); } + get has_videoPlaybackUrl() { + return pb_1.Message.getField(this, 20) != null; + } get statusRanking() { - return pb_1.Message.getField(this, 21) as WebFeatures.WEB_FEATURES_FLAG; + return pb_1.Message.getFieldWithDefault(this, 21, WebFeatures.WEB_FEATURES_FLAG.NOT_STARTED) as WebFeatures.WEB_FEATURES_FLAG; } set statusRanking(value: WebFeatures.WEB_FEATURES_FLAG) { pb_1.Message.setField(this, 21, value); } + get has_statusRanking() { + return pb_1.Message.getField(this, 21) != null; + } get voipIndividualVideo() { - return pb_1.Message.getField(this, 22) as WebFeatures.WEB_FEATURES_FLAG; + return pb_1.Message.getFieldWithDefault(this, 22, WebFeatures.WEB_FEATURES_FLAG.NOT_STARTED) as WebFeatures.WEB_FEATURES_FLAG; } set voipIndividualVideo(value: WebFeatures.WEB_FEATURES_FLAG) { pb_1.Message.setField(this, 22, value); } + get has_voipIndividualVideo() { + return pb_1.Message.getField(this, 22) != null; + } get thirdPartyStickers() { - return pb_1.Message.getField(this, 23) as WebFeatures.WEB_FEATURES_FLAG; + return pb_1.Message.getFieldWithDefault(this, 23, WebFeatures.WEB_FEATURES_FLAG.NOT_STARTED) as WebFeatures.WEB_FEATURES_FLAG; } set thirdPartyStickers(value: WebFeatures.WEB_FEATURES_FLAG) { pb_1.Message.setField(this, 23, value); } + get has_thirdPartyStickers() { + return pb_1.Message.getField(this, 23) != null; + } get frequentlyForwardedSetting() { - return pb_1.Message.getField(this, 24) as WebFeatures.WEB_FEATURES_FLAG; + return pb_1.Message.getFieldWithDefault(this, 24, WebFeatures.WEB_FEATURES_FLAG.NOT_STARTED) as WebFeatures.WEB_FEATURES_FLAG; } set frequentlyForwardedSetting(value: WebFeatures.WEB_FEATURES_FLAG) { pb_1.Message.setField(this, 24, value); } + get has_frequentlyForwardedSetting() { + return pb_1.Message.getField(this, 24) != null; + } get groupsV4JoinPermission() { - return pb_1.Message.getField(this, 25) as WebFeatures.WEB_FEATURES_FLAG; + return pb_1.Message.getFieldWithDefault(this, 25, WebFeatures.WEB_FEATURES_FLAG.NOT_STARTED) as WebFeatures.WEB_FEATURES_FLAG; } set groupsV4JoinPermission(value: WebFeatures.WEB_FEATURES_FLAG) { pb_1.Message.setField(this, 25, value); } + get has_groupsV4JoinPermission() { + return pb_1.Message.getField(this, 25) != null; + } get recentStickers() { - return pb_1.Message.getField(this, 26) as WebFeatures.WEB_FEATURES_FLAG; + return pb_1.Message.getFieldWithDefault(this, 26, WebFeatures.WEB_FEATURES_FLAG.NOT_STARTED) as WebFeatures.WEB_FEATURES_FLAG; } set recentStickers(value: WebFeatures.WEB_FEATURES_FLAG) { pb_1.Message.setField(this, 26, value); } + get has_recentStickers() { + return pb_1.Message.getField(this, 26) != null; + } get catalog() { - return pb_1.Message.getField(this, 27) as WebFeatures.WEB_FEATURES_FLAG; + return pb_1.Message.getFieldWithDefault(this, 27, WebFeatures.WEB_FEATURES_FLAG.NOT_STARTED) as WebFeatures.WEB_FEATURES_FLAG; } set catalog(value: WebFeatures.WEB_FEATURES_FLAG) { pb_1.Message.setField(this, 27, value); } + get has_catalog() { + return pb_1.Message.getField(this, 27) != null; + } get starredStickers() { - return pb_1.Message.getField(this, 28) as WebFeatures.WEB_FEATURES_FLAG; + return pb_1.Message.getFieldWithDefault(this, 28, WebFeatures.WEB_FEATURES_FLAG.NOT_STARTED) as WebFeatures.WEB_FEATURES_FLAG; } set starredStickers(value: WebFeatures.WEB_FEATURES_FLAG) { pb_1.Message.setField(this, 28, value); } + get has_starredStickers() { + return pb_1.Message.getField(this, 28) != null; + } get voipGroupCall() { - return pb_1.Message.getField(this, 29) as WebFeatures.WEB_FEATURES_FLAG; + return pb_1.Message.getFieldWithDefault(this, 29, WebFeatures.WEB_FEATURES_FLAG.NOT_STARTED) as WebFeatures.WEB_FEATURES_FLAG; } set voipGroupCall(value: WebFeatures.WEB_FEATURES_FLAG) { pb_1.Message.setField(this, 29, value); } + get has_voipGroupCall() { + return pb_1.Message.getField(this, 29) != null; + } get templateMessage() { - return pb_1.Message.getField(this, 30) as WebFeatures.WEB_FEATURES_FLAG; + return pb_1.Message.getFieldWithDefault(this, 30, WebFeatures.WEB_FEATURES_FLAG.NOT_STARTED) as WebFeatures.WEB_FEATURES_FLAG; } set templateMessage(value: WebFeatures.WEB_FEATURES_FLAG) { pb_1.Message.setField(this, 30, value); } + get has_templateMessage() { + return pb_1.Message.getField(this, 30) != null; + } get templateMessageInteractivity() { - return pb_1.Message.getField(this, 31) as WebFeatures.WEB_FEATURES_FLAG; + return pb_1.Message.getFieldWithDefault(this, 31, WebFeatures.WEB_FEATURES_FLAG.NOT_STARTED) as WebFeatures.WEB_FEATURES_FLAG; } set templateMessageInteractivity(value: WebFeatures.WEB_FEATURES_FLAG) { pb_1.Message.setField(this, 31, value); } + get has_templateMessageInteractivity() { + return pb_1.Message.getField(this, 31) != null; + } get ephemeralMessages() { - return pb_1.Message.getField(this, 32) as WebFeatures.WEB_FEATURES_FLAG; + return pb_1.Message.getFieldWithDefault(this, 32, WebFeatures.WEB_FEATURES_FLAG.NOT_STARTED) as WebFeatures.WEB_FEATURES_FLAG; } set ephemeralMessages(value: WebFeatures.WEB_FEATURES_FLAG) { pb_1.Message.setField(this, 32, value); } + get has_ephemeralMessages() { + return pb_1.Message.getField(this, 32) != null; + } get e2ENotificationSync() { - return pb_1.Message.getField(this, 33) as WebFeatures.WEB_FEATURES_FLAG; + return pb_1.Message.getFieldWithDefault(this, 33, WebFeatures.WEB_FEATURES_FLAG.NOT_STARTED) as WebFeatures.WEB_FEATURES_FLAG; } set e2ENotificationSync(value: WebFeatures.WEB_FEATURES_FLAG) { pb_1.Message.setField(this, 33, value); } + get has_e2ENotificationSync() { + return pb_1.Message.getField(this, 33) != null; + } get recentStickersV2() { - return pb_1.Message.getField(this, 34) as WebFeatures.WEB_FEATURES_FLAG; + return pb_1.Message.getFieldWithDefault(this, 34, WebFeatures.WEB_FEATURES_FLAG.NOT_STARTED) as WebFeatures.WEB_FEATURES_FLAG; } set recentStickersV2(value: WebFeatures.WEB_FEATURES_FLAG) { pb_1.Message.setField(this, 34, value); } + get has_recentStickersV2() { + return pb_1.Message.getField(this, 34) != null; + } get syncdRelease1() { - return pb_1.Message.getField(this, 35) as WebFeatures.WEB_FEATURES_FLAG; + return pb_1.Message.getFieldWithDefault(this, 35, WebFeatures.WEB_FEATURES_FLAG.NOT_STARTED) as WebFeatures.WEB_FEATURES_FLAG; } set syncdRelease1(value: WebFeatures.WEB_FEATURES_FLAG) { pb_1.Message.setField(this, 35, value); } + get has_syncdRelease1() { + return pb_1.Message.getField(this, 35) != null; + } static fromObject(data: { labelsDisplay?: WebFeatures.WEB_FEATURES_FLAG; voipIndividualOutgoing?: WebFeatures.WEB_FEATURES_FLAG; @@ -9860,71 +10838,71 @@ export class WebFeatures extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.labelsDisplay !== undefined) + if (this.has_labelsDisplay) writer.writeEnum(1, this.labelsDisplay); - if (this.voipIndividualOutgoing !== undefined) + if (this.has_voipIndividualOutgoing) writer.writeEnum(2, this.voipIndividualOutgoing); - if (this.groupsV3 !== undefined) + if (this.has_groupsV3) writer.writeEnum(3, this.groupsV3); - if (this.groupsV3Create !== undefined) + if (this.has_groupsV3Create) writer.writeEnum(4, this.groupsV3Create); - if (this.changeNumberV2 !== undefined) + if (this.has_changeNumberV2) writer.writeEnum(5, this.changeNumberV2); - if (this.queryStatusV3Thumbnail !== undefined) + if (this.has_queryStatusV3Thumbnail) writer.writeEnum(6, this.queryStatusV3Thumbnail); - if (this.liveLocations !== undefined) + if (this.has_liveLocations) writer.writeEnum(7, this.liveLocations); - if (this.queryVname !== undefined) + if (this.has_queryVname) writer.writeEnum(8, this.queryVname); - if (this.voipIndividualIncoming !== undefined) + if (this.has_voipIndividualIncoming) writer.writeEnum(9, this.voipIndividualIncoming); - if (this.quickRepliesQuery !== undefined) + if (this.has_quickRepliesQuery) writer.writeEnum(10, this.quickRepliesQuery); - if (this.payments !== undefined) + if (this.has_payments) writer.writeEnum(11, this.payments); - if (this.stickerPackQuery !== undefined) + if (this.has_stickerPackQuery) writer.writeEnum(12, this.stickerPackQuery); - if (this.liveLocationsFinal !== undefined) + if (this.has_liveLocationsFinal) writer.writeEnum(13, this.liveLocationsFinal); - if (this.labelsEdit !== undefined) + if (this.has_labelsEdit) writer.writeEnum(14, this.labelsEdit); - if (this.mediaUpload !== undefined) + if (this.has_mediaUpload) writer.writeEnum(15, this.mediaUpload); - if (this.mediaUploadRichQuickReplies !== undefined) + if (this.has_mediaUploadRichQuickReplies) writer.writeEnum(18, this.mediaUploadRichQuickReplies); - if (this.vnameV2 !== undefined) + if (this.has_vnameV2) writer.writeEnum(19, this.vnameV2); - if (this.videoPlaybackUrl !== undefined) + if (this.has_videoPlaybackUrl) writer.writeEnum(20, this.videoPlaybackUrl); - if (this.statusRanking !== undefined) + if (this.has_statusRanking) writer.writeEnum(21, this.statusRanking); - if (this.voipIndividualVideo !== undefined) + if (this.has_voipIndividualVideo) writer.writeEnum(22, this.voipIndividualVideo); - if (this.thirdPartyStickers !== undefined) + if (this.has_thirdPartyStickers) writer.writeEnum(23, this.thirdPartyStickers); - if (this.frequentlyForwardedSetting !== undefined) + if (this.has_frequentlyForwardedSetting) writer.writeEnum(24, this.frequentlyForwardedSetting); - if (this.groupsV4JoinPermission !== undefined) + if (this.has_groupsV4JoinPermission) writer.writeEnum(25, this.groupsV4JoinPermission); - if (this.recentStickers !== undefined) + if (this.has_recentStickers) writer.writeEnum(26, this.recentStickers); - if (this.catalog !== undefined) + if (this.has_catalog) writer.writeEnum(27, this.catalog); - if (this.starredStickers !== undefined) + if (this.has_starredStickers) writer.writeEnum(28, this.starredStickers); - if (this.voipGroupCall !== undefined) + if (this.has_voipGroupCall) writer.writeEnum(29, this.voipGroupCall); - if (this.templateMessage !== undefined) + if (this.has_templateMessage) writer.writeEnum(30, this.templateMessage); - if (this.templateMessageInteractivity !== undefined) + if (this.has_templateMessageInteractivity) writer.writeEnum(31, this.templateMessageInteractivity); - if (this.ephemeralMessages !== undefined) + if (this.has_ephemeralMessages) writer.writeEnum(32, this.ephemeralMessages); - if (this.e2ENotificationSync !== undefined) + if (this.has_e2ENotificationSync) writer.writeEnum(33, this.e2ENotificationSync); - if (this.recentStickersV2 !== undefined) + if (this.has_recentStickersV2) writer.writeEnum(34, this.recentStickersV2); - if (this.syncdRelease1 !== undefined) + if (this.has_syncdRelease1) writer.writeEnum(35, this.syncdRelease1); if (!w) return writer.getResultBuffer(); @@ -10078,23 +11056,32 @@ export class TabletNotificationsInfo extends pb_1.Message { } } get timestamp() { - return pb_1.Message.getField(this, 2) as number; + return pb_1.Message.getFieldWithDefault(this, 2, 0) as number; } set timestamp(value: number) { pb_1.Message.setField(this, 2, value); } + get has_timestamp() { + return pb_1.Message.getField(this, 2) != null; + } get unreadChats() { - return pb_1.Message.getField(this, 3) as number; + return pb_1.Message.getFieldWithDefault(this, 3, 0) as number; } set unreadChats(value: number) { pb_1.Message.setField(this, 3, value); } + get has_unreadChats() { + return pb_1.Message.getField(this, 3) != null; + } get notifyMessageCount() { - return pb_1.Message.getField(this, 4) as number; + return pb_1.Message.getFieldWithDefault(this, 4, 0) as number; } set notifyMessageCount(value: number) { pb_1.Message.setField(this, 4, value); } + get has_notifyMessageCount() { + return pb_1.Message.getField(this, 4) != null; + } get notifyMessage() { return pb_1.Message.getRepeatedWrapperField(this, NotificationMessageInfo, 5) as NotificationMessageInfo[]; } @@ -10105,7 +11092,7 @@ export class TabletNotificationsInfo extends pb_1.Message { timestamp?: number; unreadChats?: number; notifyMessageCount?: number; - notifyMessage: ReturnType[]; + notifyMessage?: ReturnType[]; }): TabletNotificationsInfo { const message = new TabletNotificationsInfo({ notifyMessage: data.notifyMessage.map(item => NotificationMessageInfo.fromObject(item)) @@ -10126,10 +11113,8 @@ export class TabletNotificationsInfo extends pb_1.Message { timestamp?: number; unreadChats?: number; notifyMessageCount?: number; - notifyMessage: ReturnType[]; - } = { - notifyMessage: this.notifyMessage.map((item: NotificationMessageInfo) => item.toObject()) - }; + notifyMessage?: ReturnType[]; + } = {}; if (this.timestamp != null) { data.timestamp = this.timestamp; } @@ -10139,19 +11124,22 @@ export class TabletNotificationsInfo extends pb_1.Message { if (this.notifyMessageCount != null) { data.notifyMessageCount = this.notifyMessageCount; } + if (this.notifyMessage != null) { + data.notifyMessage = this.notifyMessage.map((item: NotificationMessageInfo) => item.toObject()); + } return data; } serialize(): Uint8Array; serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.timestamp !== undefined) + if (this.has_timestamp) writer.writeUint64(2, this.timestamp); - if (this.unreadChats !== undefined) + if (this.has_unreadChats) writer.writeUint32(3, this.unreadChats); - if (this.notifyMessageCount !== undefined) + if (this.has_notifyMessageCount) writer.writeUint32(4, this.notifyMessageCount); - if (this.notifyMessage !== undefined) + if (this.notifyMessage.length) writer.writeRepeatedMessage(5, this.notifyMessage, (item: NotificationMessageInfo) => item.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -10217,24 +11205,36 @@ export class NotificationMessageInfo extends pb_1.Message { set key(value: MessageKey) { pb_1.Message.setWrapperField(this, 1, value); } + get has_key() { + return pb_1.Message.getField(this, 1) != null; + } get message() { return pb_1.Message.getWrapperField(this, Message, 2) as Message; } set message(value: Message) { pb_1.Message.setWrapperField(this, 2, value); } + get has_message() { + return pb_1.Message.getField(this, 2) != null; + } get messageTimestamp() { - return pb_1.Message.getField(this, 3) as number; + return pb_1.Message.getFieldWithDefault(this, 3, 0) as number; } set messageTimestamp(value: number) { pb_1.Message.setField(this, 3, value); } + get has_messageTimestamp() { + return pb_1.Message.getField(this, 3) != null; + } get participant() { - return pb_1.Message.getField(this, 4) as string; + return pb_1.Message.getFieldWithDefault(this, 4, "") as string; } set participant(value: string) { pb_1.Message.setField(this, 4, value); } + get has_participant() { + return pb_1.Message.getField(this, 4) != null; + } static fromObject(data: { key?: ReturnType; message?: ReturnType; @@ -10281,13 +11281,13 @@ export class NotificationMessageInfo extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.key !== undefined) + if (this.has_key) writer.writeMessage(1, this.key, () => this.key.serialize(writer)); - if (this.message !== undefined) + if (this.has_message) writer.writeMessage(2, this.message, () => this.message.serialize(writer)); - if (this.messageTimestamp !== undefined) + if (this.has_messageTimestamp) writer.writeUint64(3, this.messageTimestamp); - if (typeof this.participant === "string" && this.participant.length) + if (this.has_participant && this.participant.length) writer.writeString(4, this.participant); if (!w) return writer.getResultBuffer(); @@ -10346,23 +11346,32 @@ export class WebNotificationsInfo extends pb_1.Message { } } get timestamp() { - return pb_1.Message.getField(this, 2) as number; + return pb_1.Message.getFieldWithDefault(this, 2, 0) as number; } set timestamp(value: number) { pb_1.Message.setField(this, 2, value); } + get has_timestamp() { + return pb_1.Message.getField(this, 2) != null; + } get unreadChats() { - return pb_1.Message.getField(this, 3) as number; + return pb_1.Message.getFieldWithDefault(this, 3, 0) as number; } set unreadChats(value: number) { pb_1.Message.setField(this, 3, value); } + get has_unreadChats() { + return pb_1.Message.getField(this, 3) != null; + } get notifyMessageCount() { - return pb_1.Message.getField(this, 4) as number; + return pb_1.Message.getFieldWithDefault(this, 4, 0) as number; } set notifyMessageCount(value: number) { pb_1.Message.setField(this, 4, value); } + get has_notifyMessageCount() { + return pb_1.Message.getField(this, 4) != null; + } get notifyMessages() { return pb_1.Message.getRepeatedWrapperField(this, WebMessageInfo, 5) as WebMessageInfo[]; } @@ -10373,7 +11382,7 @@ export class WebNotificationsInfo extends pb_1.Message { timestamp?: number; unreadChats?: number; notifyMessageCount?: number; - notifyMessages: ReturnType[]; + notifyMessages?: ReturnType[]; }): WebNotificationsInfo { const message = new WebNotificationsInfo({ notifyMessages: data.notifyMessages.map(item => WebMessageInfo.fromObject(item)) @@ -10394,10 +11403,8 @@ export class WebNotificationsInfo extends pb_1.Message { timestamp?: number; unreadChats?: number; notifyMessageCount?: number; - notifyMessages: ReturnType[]; - } = { - notifyMessages: this.notifyMessages.map((item: WebMessageInfo) => item.toObject()) - }; + notifyMessages?: ReturnType[]; + } = {}; if (this.timestamp != null) { data.timestamp = this.timestamp; } @@ -10407,19 +11414,22 @@ export class WebNotificationsInfo extends pb_1.Message { if (this.notifyMessageCount != null) { data.notifyMessageCount = this.notifyMessageCount; } + if (this.notifyMessages != null) { + data.notifyMessages = this.notifyMessages.map((item: WebMessageInfo) => item.toObject()); + } return data; } serialize(): Uint8Array; serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.timestamp !== undefined) + if (this.has_timestamp) writer.writeUint64(2, this.timestamp); - if (this.unreadChats !== undefined) + if (this.has_unreadChats) writer.writeUint32(3, this.unreadChats); - if (this.notifyMessageCount !== undefined) + if (this.has_notifyMessageCount) writer.writeUint32(4, this.notifyMessageCount); - if (this.notifyMessages !== undefined) + if (this.notifyMessages.length) writer.writeRepeatedMessage(5, this.notifyMessages, (item: WebMessageInfo) => item.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -10504,65 +11514,95 @@ export class PaymentInfo extends pb_1.Message { } } get currencyDeprecated() { - return pb_1.Message.getField(this, 1) as PaymentInfo.PAYMENT_INFO_CURRENCY; + return pb_1.Message.getFieldWithDefault(this, 1, PaymentInfo.PAYMENT_INFO_CURRENCY.UNKNOWN_CURRENCY) as PaymentInfo.PAYMENT_INFO_CURRENCY; } set currencyDeprecated(value: PaymentInfo.PAYMENT_INFO_CURRENCY) { pb_1.Message.setField(this, 1, value); } + get has_currencyDeprecated() { + return pb_1.Message.getField(this, 1) != null; + } get amount1000() { - return pb_1.Message.getField(this, 2) as number; + return pb_1.Message.getFieldWithDefault(this, 2, 0) as number; } set amount1000(value: number) { pb_1.Message.setField(this, 2, value); } + get has_amount1000() { + return pb_1.Message.getField(this, 2) != null; + } get receiverJid() { - return pb_1.Message.getField(this, 3) as string; + return pb_1.Message.getFieldWithDefault(this, 3, "") as string; } set receiverJid(value: string) { pb_1.Message.setField(this, 3, value); } + get has_receiverJid() { + return pb_1.Message.getField(this, 3) != null; + } get status() { - return pb_1.Message.getField(this, 4) as PaymentInfo.PAYMENT_INFO_STATUS; + return pb_1.Message.getFieldWithDefault(this, 4, PaymentInfo.PAYMENT_INFO_STATUS.UNKNOWN_STATUS) as PaymentInfo.PAYMENT_INFO_STATUS; } set status(value: PaymentInfo.PAYMENT_INFO_STATUS) { pb_1.Message.setField(this, 4, value); } + get has_status() { + return pb_1.Message.getField(this, 4) != null; + } get transactionTimestamp() { - return pb_1.Message.getField(this, 5) as number; + return pb_1.Message.getFieldWithDefault(this, 5, 0) as number; } set transactionTimestamp(value: number) { pb_1.Message.setField(this, 5, value); } + get has_transactionTimestamp() { + return pb_1.Message.getField(this, 5) != null; + } get requestMessageKey() { return pb_1.Message.getWrapperField(this, MessageKey, 6) as MessageKey; } set requestMessageKey(value: MessageKey) { pb_1.Message.setWrapperField(this, 6, value); } + get has_requestMessageKey() { + return pb_1.Message.getField(this, 6) != null; + } get expiryTimestamp() { - return pb_1.Message.getField(this, 7) as number; + return pb_1.Message.getFieldWithDefault(this, 7, 0) as number; } set expiryTimestamp(value: number) { pb_1.Message.setField(this, 7, value); } + get has_expiryTimestamp() { + return pb_1.Message.getField(this, 7) != null; + } get futureproofed() { - return pb_1.Message.getField(this, 8) as boolean; + return pb_1.Message.getFieldWithDefault(this, 8, false) as boolean; } set futureproofed(value: boolean) { pb_1.Message.setField(this, 8, value); } + get has_futureproofed() { + return pb_1.Message.getField(this, 8) != null; + } get currency() { - return pb_1.Message.getField(this, 9) as string; + return pb_1.Message.getFieldWithDefault(this, 9, "") as string; } set currency(value: string) { pb_1.Message.setField(this, 9, value); } + get has_currency() { + return pb_1.Message.getField(this, 9) != null; + } get txnStatus() { - return pb_1.Message.getField(this, 10) as PaymentInfo.PAYMENT_INFO_TXNSTATUS; + return pb_1.Message.getFieldWithDefault(this, 10, PaymentInfo.PAYMENT_INFO_TXNSTATUS.UNKNOWN) as PaymentInfo.PAYMENT_INFO_TXNSTATUS; } set txnStatus(value: PaymentInfo.PAYMENT_INFO_TXNSTATUS) { pb_1.Message.setField(this, 10, value); } + get has_txnStatus() { + return pb_1.Message.getField(this, 10) != null; + } static fromObject(data: { currencyDeprecated?: PaymentInfo.PAYMENT_INFO_CURRENCY; amount1000?: number; @@ -10657,25 +11697,25 @@ export class PaymentInfo extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.currencyDeprecated !== undefined) + if (this.has_currencyDeprecated) writer.writeEnum(1, this.currencyDeprecated); - if (this.amount1000 !== undefined) + if (this.has_amount1000) writer.writeUint64(2, this.amount1000); - if (typeof this.receiverJid === "string" && this.receiverJid.length) + if (this.has_receiverJid && this.receiverJid.length) writer.writeString(3, this.receiverJid); - if (this.status !== undefined) + if (this.has_status) writer.writeEnum(4, this.status); - if (this.transactionTimestamp !== undefined) + if (this.has_transactionTimestamp) writer.writeUint64(5, this.transactionTimestamp); - if (this.requestMessageKey !== undefined) + if (this.has_requestMessageKey) writer.writeMessage(6, this.requestMessageKey, () => this.requestMessageKey.serialize(writer)); - if (this.expiryTimestamp !== undefined) + if (this.has_expiryTimestamp) writer.writeUint64(7, this.expiryTimestamp); - if (this.futureproofed !== undefined) + if (this.has_futureproofed) writer.writeBool(8, this.futureproofed); - if (typeof this.currency === "string" && this.currency.length) + if (this.has_currency && this.currency.length) writer.writeString(9, this.currency); - if (this.txnStatus !== undefined) + if (this.has_txnStatus) writer.writeEnum(10, this.txnStatus); if (!w) return writer.getResultBuffer(); @@ -10883,104 +11923,152 @@ export class WebMessageInfo extends pb_1.Message { set key(value: MessageKey) { pb_1.Message.setWrapperField(this, 1, value); } + get has_key() { + return pb_1.Message.getField(this, 1) != null; + } get message() { return pb_1.Message.getWrapperField(this, Message, 2) as Message; } set message(value: Message) { pb_1.Message.setWrapperField(this, 2, value); } + get has_message() { + return pb_1.Message.getField(this, 2) != null; + } get messageTimestamp() { - return pb_1.Message.getField(this, 3) as number; + return pb_1.Message.getFieldWithDefault(this, 3, 0) as number; } set messageTimestamp(value: number) { pb_1.Message.setField(this, 3, value); } + get has_messageTimestamp() { + return pb_1.Message.getField(this, 3) != null; + } get status() { - return pb_1.Message.getField(this, 4) as WebMessageInfo.WEB_MESSAGE_INFO_STATUS; + return pb_1.Message.getFieldWithDefault(this, 4, WebMessageInfo.WEB_MESSAGE_INFO_STATUS.ERROR) as WebMessageInfo.WEB_MESSAGE_INFO_STATUS; } set status(value: WebMessageInfo.WEB_MESSAGE_INFO_STATUS) { pb_1.Message.setField(this, 4, value); } + get has_status() { + return pb_1.Message.getField(this, 4) != null; + } get participant() { - return pb_1.Message.getField(this, 5) as string; + return pb_1.Message.getFieldWithDefault(this, 5, "") as string; } set participant(value: string) { pb_1.Message.setField(this, 5, value); } + get has_participant() { + return pb_1.Message.getField(this, 5) != null; + } get ignore() { - return pb_1.Message.getField(this, 16) as boolean; + return pb_1.Message.getFieldWithDefault(this, 16, false) as boolean; } set ignore(value: boolean) { pb_1.Message.setField(this, 16, value); } + get has_ignore() { + return pb_1.Message.getField(this, 16) != null; + } get starred() { - return pb_1.Message.getField(this, 17) as boolean; + return pb_1.Message.getFieldWithDefault(this, 17, false) as boolean; } set starred(value: boolean) { pb_1.Message.setField(this, 17, value); } + get has_starred() { + return pb_1.Message.getField(this, 17) != null; + } get broadcast() { - return pb_1.Message.getField(this, 18) as boolean; + return pb_1.Message.getFieldWithDefault(this, 18, false) as boolean; } set broadcast(value: boolean) { pb_1.Message.setField(this, 18, value); } + get has_broadcast() { + return pb_1.Message.getField(this, 18) != null; + } get pushName() { - return pb_1.Message.getField(this, 19) as string; + return pb_1.Message.getFieldWithDefault(this, 19, "") as string; } set pushName(value: string) { pb_1.Message.setField(this, 19, value); } + get has_pushName() { + return pb_1.Message.getField(this, 19) != null; + } get mediaCiphertextSha256() { - return pb_1.Message.getField(this, 20) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 20, new Uint8Array()) as Uint8Array; } set mediaCiphertextSha256(value: Uint8Array) { pb_1.Message.setField(this, 20, value); } + get has_mediaCiphertextSha256() { + return pb_1.Message.getField(this, 20) != null; + } get multicast() { - return pb_1.Message.getField(this, 21) as boolean; + return pb_1.Message.getFieldWithDefault(this, 21, false) as boolean; } set multicast(value: boolean) { pb_1.Message.setField(this, 21, value); } + get has_multicast() { + return pb_1.Message.getField(this, 21) != null; + } get urlText() { - return pb_1.Message.getField(this, 22) as boolean; + return pb_1.Message.getFieldWithDefault(this, 22, false) as boolean; } set urlText(value: boolean) { pb_1.Message.setField(this, 22, value); } + get has_urlText() { + return pb_1.Message.getField(this, 22) != null; + } get urlNumber() { - return pb_1.Message.getField(this, 23) as boolean; + return pb_1.Message.getFieldWithDefault(this, 23, false) as boolean; } set urlNumber(value: boolean) { pb_1.Message.setField(this, 23, value); } + get has_urlNumber() { + return pb_1.Message.getField(this, 23) != null; + } get messageStubType() { - return pb_1.Message.getField(this, 24) as WebMessageInfo.WEB_MESSAGE_INFO_STUBTYPE; + return pb_1.Message.getFieldWithDefault(this, 24, WebMessageInfo.WEB_MESSAGE_INFO_STUBTYPE.UNKNOWN) as WebMessageInfo.WEB_MESSAGE_INFO_STUBTYPE; } set messageStubType(value: WebMessageInfo.WEB_MESSAGE_INFO_STUBTYPE) { pb_1.Message.setField(this, 24, value); } + get has_messageStubType() { + return pb_1.Message.getField(this, 24) != null; + } get clearMedia() { - return pb_1.Message.getField(this, 25) as boolean; + return pb_1.Message.getFieldWithDefault(this, 25, false) as boolean; } set clearMedia(value: boolean) { pb_1.Message.setField(this, 25, value); } + get has_clearMedia() { + return pb_1.Message.getField(this, 25) != null; + } get messageStubParameters() { - return pb_1.Message.getField(this, 26) as string[]; + return pb_1.Message.getFieldWithDefault(this, 26, []) as string[]; } set messageStubParameters(value: string[]) { pb_1.Message.setField(this, 26, value); } get duration() { - return pb_1.Message.getField(this, 27) as number; + return pb_1.Message.getFieldWithDefault(this, 27, 0) as number; } set duration(value: number) { pb_1.Message.setField(this, 27, value); } + get has_duration() { + return pb_1.Message.getField(this, 27) != null; + } get labels() { - return pb_1.Message.getField(this, 28) as string[]; + return pb_1.Message.getFieldWithDefault(this, 28, []) as string[]; } set labels(value: string[]) { pb_1.Message.setField(this, 28, value); @@ -10991,38 +12079,56 @@ export class WebMessageInfo extends pb_1.Message { set paymentInfo(value: PaymentInfo) { pb_1.Message.setWrapperField(this, 29, value); } + get has_paymentInfo() { + return pb_1.Message.getField(this, 29) != null; + } get finalLiveLocation() { return pb_1.Message.getWrapperField(this, LiveLocationMessage, 30) as LiveLocationMessage; } set finalLiveLocation(value: LiveLocationMessage) { pb_1.Message.setWrapperField(this, 30, value); } + get has_finalLiveLocation() { + return pb_1.Message.getField(this, 30) != null; + } get quotedPaymentInfo() { return pb_1.Message.getWrapperField(this, PaymentInfo, 31) as PaymentInfo; } set quotedPaymentInfo(value: PaymentInfo) { pb_1.Message.setWrapperField(this, 31, value); } + get has_quotedPaymentInfo() { + return pb_1.Message.getField(this, 31) != null; + } get ephemeralStartTimestamp() { - return pb_1.Message.getField(this, 32) as number; + return pb_1.Message.getFieldWithDefault(this, 32, 0) as number; } set ephemeralStartTimestamp(value: number) { pb_1.Message.setField(this, 32, value); } + get has_ephemeralStartTimestamp() { + return pb_1.Message.getField(this, 32) != null; + } get ephemeralDuration() { - return pb_1.Message.getField(this, 33) as number; + return pb_1.Message.getFieldWithDefault(this, 33, 0) as number; } set ephemeralDuration(value: number) { pb_1.Message.setField(this, 33, value); } + get has_ephemeralDuration() { + return pb_1.Message.getField(this, 33) != null; + } get ephemeralOffToOn() { - return pb_1.Message.getField(this, 34) as boolean; + return pb_1.Message.getFieldWithDefault(this, 34, false) as boolean; } set ephemeralOffToOn(value: boolean) { pb_1.Message.setField(this, 34, value); } + get has_ephemeralOffToOn() { + return pb_1.Message.getField(this, 34) != null; + } static fromObject(data: { - key: ReturnType; + key?: ReturnType; message?: ReturnType; messageTimestamp?: number; status?: WebMessageInfo.WEB_MESSAGE_INFO_STATUS; @@ -11119,7 +12225,7 @@ export class WebMessageInfo extends pb_1.Message { } toObject() { const data: { - key: ReturnType; + key?: ReturnType; message?: ReturnType; messageTimestamp?: number; status?: WebMessageInfo.WEB_MESSAGE_INFO_STATUS; @@ -11144,10 +12250,12 @@ export class WebMessageInfo extends pb_1.Message { ephemeralDuration?: number; ephemeralOffToOn?: boolean; } = { - key: this.key.toObject(), messageStubParameters: this.messageStubParameters, labels: this.labels }; + if (this.key != null) { + data.key = this.key.toObject(); + } if (this.message != null) { data.message = this.message.toObject(); } @@ -11217,53 +12325,53 @@ export class WebMessageInfo extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.key !== undefined) + if (this.has_key) writer.writeMessage(1, this.key, () => this.key.serialize(writer)); - if (this.message !== undefined) + if (this.has_message) writer.writeMessage(2, this.message, () => this.message.serialize(writer)); - if (this.messageTimestamp !== undefined) + if (this.has_messageTimestamp) writer.writeUint64(3, this.messageTimestamp); - if (this.status !== undefined) + if (this.has_status) writer.writeEnum(4, this.status); - if (typeof this.participant === "string" && this.participant.length) + if (this.has_participant && this.participant.length) writer.writeString(5, this.participant); - if (this.ignore !== undefined) + if (this.has_ignore) writer.writeBool(16, this.ignore); - if (this.starred !== undefined) + if (this.has_starred) writer.writeBool(17, this.starred); - if (this.broadcast !== undefined) + if (this.has_broadcast) writer.writeBool(18, this.broadcast); - if (typeof this.pushName === "string" && this.pushName.length) + if (this.has_pushName && this.pushName.length) writer.writeString(19, this.pushName); - if (this.mediaCiphertextSha256 !== undefined) + if (this.has_mediaCiphertextSha256 && this.mediaCiphertextSha256.length) writer.writeBytes(20, this.mediaCiphertextSha256); - if (this.multicast !== undefined) + if (this.has_multicast) writer.writeBool(21, this.multicast); - if (this.urlText !== undefined) + if (this.has_urlText) writer.writeBool(22, this.urlText); - if (this.urlNumber !== undefined) + if (this.has_urlNumber) writer.writeBool(23, this.urlNumber); - if (this.messageStubType !== undefined) + if (this.has_messageStubType) writer.writeEnum(24, this.messageStubType); - if (this.clearMedia !== undefined) + if (this.has_clearMedia) writer.writeBool(25, this.clearMedia); - if (this.messageStubParameters !== undefined) + if (this.messageStubParameters.length) writer.writeRepeatedString(26, this.messageStubParameters); - if (this.duration !== undefined) + if (this.has_duration) writer.writeUint32(27, this.duration); - if (this.labels !== undefined) + if (this.labels.length) writer.writeRepeatedString(28, this.labels); - if (this.paymentInfo !== undefined) + if (this.has_paymentInfo) writer.writeMessage(29, this.paymentInfo, () => this.paymentInfo.serialize(writer)); - if (this.finalLiveLocation !== undefined) + if (this.has_finalLiveLocation) writer.writeMessage(30, this.finalLiveLocation, () => this.finalLiveLocation.serialize(writer)); - if (this.quotedPaymentInfo !== undefined) + if (this.has_quotedPaymentInfo) writer.writeMessage(31, this.quotedPaymentInfo, () => this.quotedPaymentInfo.serialize(writer)); - if (this.ephemeralStartTimestamp !== undefined) + if (this.has_ephemeralStartTimestamp) writer.writeUint64(32, this.ephemeralStartTimestamp); - if (this.ephemeralDuration !== undefined) + if (this.has_ephemeralDuration) writer.writeUint32(33, this.ephemeralDuration); - if (this.ephemeralOffToOn !== undefined) + if (this.has_ephemeralOffToOn) writer.writeBool(34, this.ephemeralOffToOn); if (!w) return writer.getResultBuffer(); diff --git a/test/default.spec.ts b/test/default.spec.ts deleted file mode 100644 index 5e0dbcf2..00000000 --- a/test/default.spec.ts +++ /dev/null @@ -1,12 +0,0 @@ -import {MessageWithDefault} from "./default"; - -describe("defaults", () => { - - it("should return defaults", () => { - expect(new MessageWithDefault().toObject()).toEqual({ - bool_field: true, - int32_field: 12, - string_field: "default value" - }) - }) -}) \ No newline at end of file diff --git a/test/default/BUILD.bazel b/test/default/BUILD.bazel new file mode 100644 index 00000000..f0d9b503 --- /dev/null +++ b/test/default/BUILD.bazel @@ -0,0 +1,40 @@ +load("//tools:diff_and_update.bzl", "diff_and_update") +load("@npm//@bazel/jasmine:index.bzl", "jasmine_node_test") +load("@npm//@bazel/typescript:index.bzl", "ts_project") + + +diff_and_update( + name = "diff_default", + srcs = [ + "//test/_/default:default.ts", + "//test/_/default:default_proto2.ts", + "//test/_/default:default_proto3.ts", + "//test/_/default:default_common.ts", + ], + checked = ["default.ts", "default_proto2.ts", "default_proto3.ts", "default_common.ts"] +) + +ts_project( + name = "default", + srcs = glob(["*.ts"]), + tsconfig = { + "compilerOptions": { + "target": "ES2020", + "module": "CommonJS" + }, + }, + deps = [ + "@npm//@types/jasmine", + "@npm//@types/node", + "@npm//@types/google-protobuf", + "@npm//google-protobuf", + "@npm//@grpc/grpc-js", + ], +) + +jasmine_node_test( + name = "test", + deps = [ + ":default", + ], +) \ No newline at end of file diff --git a/test/default/default.spec.ts b/test/default/default.spec.ts new file mode 100644 index 00000000..8dd97482 --- /dev/null +++ b/test/default/default.spec.ts @@ -0,0 +1,429 @@ +import { MessageWithDefault, MessageWithImplicitDefault } from "./default"; +import { DefaultMessageV2WithoutDefault, DefaultMessageV2WithDefault } from "./default_proto2"; +import { DefaultMessageOptionalV3, DefaultMessageV3 } from "./default_proto3"; +import { DefaultCommonEnum, DefaultCommonMessage, DefaultCommonMessageOneOf } from "./default_common"; + +function toObjectPreservingUndefined(message: Object): Object { + function correctFieldValue(fieldValue: unknown): unknown { + return fieldValue instanceof Map ? { ...fieldValue } : fieldValue; + } + const classPropertyDescriptors = Object.getOwnPropertyDescriptors(message.constructor.prototype); + const getters = Object.keys(classPropertyDescriptors) + .filter((k) => classPropertyDescriptors[k].get != null && classPropertyDescriptors[k].set != null); + return Object.fromEntries(getters.map((g) => [g, correctFieldValue(message[g])])); +} + +describe("defaults", () => { + + it("should return defaults", () => { + const message = new MessageWithDefault(); + + expect(message.bool_field).toBe(true); + expect(message.int32_field).toBe(12); + expect(message.string_field).toBe("default value"); + }); + + it("should return defaults in the output of toObject()", () => { + const message = new MessageWithDefault(); + + expect(message.toObject()).toEqual({ + bool_field: true, + int32_field: 12, + string_field: "default value", + }); + }); + + it("should return implicit defaults for optional fields (v2)", () => { + const message = new MessageWithImplicitDefault(); + + expect(message.bool_field).toBe(false); + expect(message.int32_field).toBe(0); + expect(message.string_field).toBe(""); + }); + + it("should return implicit defaults in the output of toObject() (v2)", () => { + const message = new MessageWithImplicitDefault(); + + expect(message.toObject()).toEqual({ + bool_field: false, + int32_field: 0, + string_field: "", + }); + }); + + it("should not serialize optional fields that were not assigned a value (v2)", () => { + const message1 = new MessageWithDefault(); + const message2 = new MessageWithImplicitDefault(); + + const serializedMessage1 = message1.serialize(); + const serializedMessage2 = message2.serialize(); + + expect(serializedMessage1.length).toBe(0); + expect(serializedMessage2.length).toBe(0); + }); + + it("should serialize optional fields explicitly set to their default value (v2)", () => { + const message1 = new MessageWithDefault(); + message1.int32_field = 12; // 12 is the default field value give in proto file + const message2 = new MessageWithImplicitDefault(); + message2.int32_field = 0; // 0 is the implicit default for optional int32 field + + const serializedMessage1 = message1.serialize(); + const serializedMessage2 = message2.serialize(); + + expect(serializedMessage1.length).toBeGreaterThan(0); + expect(serializedMessage2.length).toBeGreaterThan(0); + }); + + it("should not return defaults for required fields without [default=] (v2)", () => { + expect(toObjectPreservingUndefined(new DefaultMessageV2WithoutDefault())).toEqual({ + message: undefined, + enum: undefined, + + bool: undefined, + string: undefined, + + int32: undefined, + fixed32: undefined, + sfixed32: undefined, + uint32: undefined, + sint32: undefined, + int64: undefined, + fixed64: undefined, + sfixed64: undefined, + uint64: undefined, + sint64: undefined, + float: undefined, + double: undefined, + + int_but_string: undefined, + + map_string_string: {}, + map_string_message: {}, + + array_int32: [], + array_message: [], + + one_of_int32: 0, // scalar oneof fields have implicit defaults + one_of_message: undefined, + + bytes: undefined + }); + + expect(new DefaultMessageV2WithoutDefault().toObject()).toEqual({ + array_int32: [], + array_message: [], + one_of_int32: 0, // scalar oneof fields have implicit defaults + }); + }); + + it("should return explicitly specified defaults (v2)", () => { + expect(new DefaultMessageV2WithDefault().toObject()).toEqual({ + enum: DefaultCommonEnum.TWO, + + bool: true, + string: "default string", + + int32: 5, + fixed32: 6, + sfixed32: 7, + uint32: 8, + sint32: 9, + int64: 10, + fixed64: 11, + sfixed64: 12, + uint64: 13, + sint64: 14, + float: 15.0, + double: 16.0, + + int_but_string: "17", + + one_of_int32: 18 + }); + }); + + it("should not serialize required fields that have not been set (v2)", () => { + const defaults = new DefaultMessageV2WithoutDefault(); + const serializedDefaults = defaults.serialize(); + const transferredDefaults = DefaultMessageV2WithoutDefault.deserialize(serializedDefaults); + + expect(serializedDefaults.length).toBe(0); + + expect(transferredDefaults.message).toBe(undefined); + expect(transferredDefaults.enum).toBe(undefined); + + expect(transferredDefaults.bool).toBe(undefined); + expect(transferredDefaults.string).toBe(undefined); + + expect(transferredDefaults.int32).toBe(undefined); + expect(transferredDefaults.fixed32).toBe(undefined); + expect(transferredDefaults.sfixed32).toBe(undefined); + expect(transferredDefaults.uint32).toBe(undefined); + expect(transferredDefaults.sint32).toBe(undefined); + expect(transferredDefaults.int64).toBe(undefined); + expect(transferredDefaults.fixed64).toBe(undefined); + expect(transferredDefaults.sfixed64).toBe(undefined); + expect(transferredDefaults.uint64).toBe(undefined); + expect(transferredDefaults.sint64).toBe(undefined); + expect(transferredDefaults.float).toBe(undefined); + expect(transferredDefaults.double).toBe(undefined); + + expect(transferredDefaults.int_but_string).toBe(undefined); + + expect(transferredDefaults.map_string_string.values.length).toBe(0); + expect(transferredDefaults.map_string_message.values.length).toBe(0); + + expect(transferredDefaults.array_int32).toEqual([]); + expect(transferredDefaults.array_message).toEqual([]); + + expect(transferredDefaults.one_of_int32).toBe(0); // scalar oneof fields have implicit defaults + expect(transferredDefaults.one_of_message).toBe(undefined); + + expect(transferredDefaults.bytes).toEqual(undefined); + }); + + it("should not serialize required fields that have not been set, even when they have explicit default values (v2)", () => { + const defaults = new DefaultMessageV2WithDefault(); + const serializedDefaults = defaults.serialize(); + const transferredDefaults = DefaultMessageV2WithDefault.deserialize(serializedDefaults); + + expect(serializedDefaults.length).toBe(0); + + // below values are just defaults of DefaultMessageV2WithDefault message, not something that arrived over the wire + expect(transferredDefaults.message).toBe(undefined); + expect(transferredDefaults.enum).toBe(DefaultCommonEnum.TWO); + + expect(transferredDefaults.bool).toBe(true); + expect(transferredDefaults.string).toBe("default string"); + + expect(transferredDefaults.int32).toBe(5); + expect(transferredDefaults.fixed32).toBe(6); + expect(transferredDefaults.sfixed32).toBe(7); + expect(transferredDefaults.uint32).toBe(8); + expect(transferredDefaults.sint32).toBe(9); + expect(transferredDefaults.int64).toBe(10); + expect(transferredDefaults.fixed64).toBe(11); + expect(transferredDefaults.sfixed64).toBe(12); + expect(transferredDefaults.uint64).toBe(13); + expect(transferredDefaults.sint64).toBe(14); + expect(transferredDefaults.float).toBe(15); + expect(transferredDefaults.double).toBe(16); + + expect(transferredDefaults.int_but_string).toBe("17"); + + expect(transferredDefaults.one_of_int32).toBe(18); + expect(transferredDefaults.one_of_message).toBe(undefined); + }); + + it("should return defaults (v3)", () => { + expect(toObjectPreservingUndefined(new DefaultMessageV3())).toEqual({ + message: undefined, + enum: DefaultCommonEnum.ZERO, + + bool: false, + string: "", + + int32: 0, + fixed32: 0, + sfixed32: 0, + uint32: 0, + sint32: 0, + int64: 0, + fixed64: 0, + sfixed64: 0, + uint64: 0, + sint64: 0, + float: 0, + double: 0, + + int_but_string: "0", + + map_string_string: {}, + map_string_message: {}, + + array_int32: [], + array_message: [], + + one_of_int32: 0, + one_of_message: undefined, + + bytes: new Uint8Array() + }) + + expect(new DefaultMessageV3().toObject()).toEqual({ + enum: DefaultCommonEnum.ZERO, + + bool: false, + string: "", + + int32: 0, + fixed32: 0, + sfixed32: 0, + uint32: 0, + sint32: 0, + int64: 0, + fixed64: 0, + sfixed64: 0, + uint64: 0, + sint64: 0, + float: 0, + double: 0, + + int_but_string: "0", + + array_int32: [], + array_message: [], + + one_of_int32: 0, + + bytes: new Uint8Array() + }); + }); + + it("should omit default values during serialization (v3)", () => { + const defaults = new DefaultMessageV3(); + const serializedDefaults = defaults.serialize(); + const transferredDefaults = DefaultMessageV3.deserialize(serializedDefaults); + + expect(serializedDefaults.length).toBe(0); + + // below values are just the defaults in transferredDefaults message, not something that arrived over the wire + expect(transferredDefaults.message).toBe(undefined); + expect(transferredDefaults.enum).toBe(DefaultCommonEnum.ZERO); + + expect(transferredDefaults.bool).toBe(false); + expect(transferredDefaults.string).toBe(""); + + expect(transferredDefaults.int32).toBe(0); + expect(transferredDefaults.fixed32).toBe(0); + expect(transferredDefaults.sfixed32).toBe(0); + expect(transferredDefaults.uint32).toBe(0); + expect(transferredDefaults.sint32).toBe(0); + expect(transferredDefaults.int64).toBe(0); + expect(transferredDefaults.fixed64).toBe(0); + expect(transferredDefaults.sfixed64).toBe(0); + expect(transferredDefaults.uint64).toBe(0); + expect(transferredDefaults.sint64).toBe(0); + expect(transferredDefaults.float).toBe(0); + expect(transferredDefaults.double).toBe(0); + + expect(transferredDefaults.int_but_string).toBe("0"); + + expect(transferredDefaults.map_string_string.values.length).toBe(0); + expect(transferredDefaults.map_string_message.values.length).toBe(0); + + expect(transferredDefaults.array_int32).toEqual([]); + expect(transferredDefaults.array_message).toEqual([]); + + expect(transferredDefaults.one_of_int32).toBe(0); + expect(transferredDefaults.one_of_message).toBe(undefined); + + expect(transferredDefaults.bytes).toEqual(new Uint8Array()); + }); + + it("should omit fields that were explicitly assigned their default values during serialization (v3)", () => { + const explicitlyProvidedDefaults = new DefaultMessageV3(); + explicitlyProvidedDefaults.enum = DefaultCommonEnum.ZERO; + explicitlyProvidedDefaults.bool = false; + explicitlyProvidedDefaults.string = ''; + explicitlyProvidedDefaults.int32 = 0; + explicitlyProvidedDefaults.fixed32 = 0; + explicitlyProvidedDefaults.sfixed32 = 0; + explicitlyProvidedDefaults.uint32 = 0; + explicitlyProvidedDefaults.sint32 = 0; + explicitlyProvidedDefaults.int64 = 0; + explicitlyProvidedDefaults.fixed64 = 0; + explicitlyProvidedDefaults.sfixed64 = 0; + explicitlyProvidedDefaults.uint64 = 0; + explicitlyProvidedDefaults.sint64 = 0; + explicitlyProvidedDefaults.float = 0; + explicitlyProvidedDefaults.double = 0; + explicitlyProvidedDefaults.int_but_string = "0"; + explicitlyProvidedDefaults.bytes = new Uint8Array(); + + const serializedExplicitlyProvidedDefaults = explicitlyProvidedDefaults.serialize(); + + expect(serializedExplicitlyProvidedDefaults.length).toBe(0); + }); + + it("should serialize oneof fields if explicitly assigned, even when they were assigned their default value (v3)", () => { + const messageHavingInt32 = new DefaultCommonMessageOneOf(); + messageHavingInt32.int32 = 0; + const messageHavingString = new DefaultCommonMessageOneOf(); + messageHavingString.string = ""; + const messageHavingSubmessage = new DefaultCommonMessageOneOf(); + messageHavingSubmessage.message = new DefaultCommonMessage(); + + const serializedMessageHavingInt32 = messageHavingInt32.serialize(); + const transferredMessageHavingInt32 = DefaultCommonMessageOneOf.deserialize(serializedMessageHavingInt32); + const serializedMessageHavingString = messageHavingString.serialize(); + const transferredMessageHavingString = DefaultCommonMessageOneOf.deserialize(serializedMessageHavingString); + const serializedMessageHavingSubmessage = messageHavingSubmessage.serialize(); + const transferredMessageHavingSubmessage = DefaultCommonMessageOneOf.deserialize(serializedMessageHavingSubmessage); + + expect(serializedMessageHavingInt32.length).toBeGreaterThan(0); + expect(transferredMessageHavingInt32.has_int32).toBe(true); + expect(transferredMessageHavingInt32.oneof).toBe("int32"); + + expect(serializedMessageHavingString.length).toBeGreaterThan(0); + expect(transferredMessageHavingString.has_string).toBe(true); + expect(transferredMessageHavingString.oneof).toBe("string"); + + expect(serializedMessageHavingSubmessage.length).toBeGreaterThan(0); + expect(transferredMessageHavingSubmessage.has_message).toBe(true); + expect(transferredMessageHavingSubmessage.oneof).toBe("message"); + }); + + it ("should serialize repeated properties when they occur at least once (v3)", () => { + const defaultsHavingRepeatedProp = new DefaultMessageV3(); + defaultsHavingRepeatedProp.array_int32.push(0); + + const serializedDefaultsHavingRepeatedProp = defaultsHavingRepeatedProp.serialize(); + const transferredDefaultsHavingRepeatedProp = DefaultMessageV3.deserialize(serializedDefaultsHavingRepeatedProp); + + expect(serializedDefaultsHavingRepeatedProp.length).toBeGreaterThan(0); + expect(transferredDefaultsHavingRepeatedProp.array_int32.length).toBe(1); + expect(transferredDefaultsHavingRepeatedProp.array_int32[0]).toBe(0); + }); + + it("should serialize proto3 optional fields if explicitly assigned, even when they were assigned their default value (v3)", () => { + const implicitDefaults = new DefaultMessageOptionalV3(); + const explicitlyProvidedDefaults1 = new DefaultMessageOptionalV3({ enum: DefaultCommonEnum.ZERO }); + const explicitlyProvidedDefaults2 = new DefaultMessageOptionalV3({ bool: false }); + const explicitlyProvidedDefaults3 = new DefaultMessageOptionalV3({ string: '' }); + const explicitlyProvidedDefaults4 = new DefaultMessageOptionalV3({ int32: 0 }); + const explicitlyProvidedDefaults5 = new DefaultMessageOptionalV3({ fixed32: 0 }); + const explicitlyProvidedDefaults6 = new DefaultMessageOptionalV3({ sfixed32: 0 }); + const explicitlyProvidedDefaults7 = new DefaultMessageOptionalV3({ uint32: 0 }); + const explicitlyProvidedDefaults8 = new DefaultMessageOptionalV3({ sint32: 0 }); + const explicitlyProvidedDefaults9 = new DefaultMessageOptionalV3({ int64: 0 }); + const explicitlyProvidedDefaults10 = new DefaultMessageOptionalV3({ fixed64: 0 }); + const explicitlyProvidedDefaults11 = new DefaultMessageOptionalV3({ sfixed64: 0 }); + const explicitlyProvidedDefaults12 = new DefaultMessageOptionalV3({ uint64: 0 }); + const explicitlyProvidedDefaults13 = new DefaultMessageOptionalV3({ sint64: 0 }); + const explicitlyProvidedDefaults14 = new DefaultMessageOptionalV3({ float: 0 }); + const explicitlyProvidedDefaults15 = new DefaultMessageOptionalV3({ double: 0 }); + const explicitlyProvidedDefaults16 = new DefaultMessageOptionalV3({ int_but_string: "0" }); + const explicitlyProvidedDefaults17 = new DefaultMessageOptionalV3({ bytes: new Uint8Array() }); + + expect(implicitDefaults.serialize().length).toBe(0); + expect(explicitlyProvidedDefaults1.serialize().length).toBeGreaterThan(0); + expect(explicitlyProvidedDefaults2.serialize().length).toBeGreaterThan(0); + expect(explicitlyProvidedDefaults3.serialize().length).toBeGreaterThan(0); + expect(explicitlyProvidedDefaults4.serialize().length).toBeGreaterThan(0); + expect(explicitlyProvidedDefaults5.serialize().length).toBeGreaterThan(0); + expect(explicitlyProvidedDefaults6.serialize().length).toBeGreaterThan(0); + expect(explicitlyProvidedDefaults7.serialize().length).toBeGreaterThan(0); + expect(explicitlyProvidedDefaults8.serialize().length).toBeGreaterThan(0); + expect(explicitlyProvidedDefaults9.serialize().length).toBeGreaterThan(0); + expect(explicitlyProvidedDefaults10.serialize().length).toBeGreaterThan(0); + expect(explicitlyProvidedDefaults11.serialize().length).toBeGreaterThan(0); + expect(explicitlyProvidedDefaults12.serialize().length).toBeGreaterThan(0); + expect(explicitlyProvidedDefaults13.serialize().length).toBeGreaterThan(0); + expect(explicitlyProvidedDefaults14.serialize().length).toBeGreaterThan(0); + expect(explicitlyProvidedDefaults15.serialize().length).toBeGreaterThan(0); + expect(explicitlyProvidedDefaults16.serialize().length).toBeGreaterThan(0); + expect(explicitlyProvidedDefaults17.serialize().length).toBeGreaterThan(0); + }); +}); diff --git a/test/default/default.ts b/test/default/default.ts new file mode 100755 index 00000000..67294e18 --- /dev/null +++ b/test/default/default.ts @@ -0,0 +1,250 @@ +/** + * Generated by the protoc-gen-ts. DO NOT EDIT! + * compiler version: 3.19.1 + * source: test/_/default/default.proto + * git: https://github.com/thesayyn/protoc-gen-ts */ +import * as pb_1 from "google-protobuf"; +export class MessageWithDefault extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + bool_field?: boolean; + string_field?: string; + int32_field?: number; + }) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + if ("bool_field" in data && data.bool_field != undefined) { + this.bool_field = data.bool_field; + } + if ("string_field" in data && data.string_field != undefined) { + this.string_field = data.string_field; + } + if ("int32_field" in data && data.int32_field != undefined) { + this.int32_field = data.int32_field; + } + } + } + get bool_field() { + return pb_1.Message.getFieldWithDefault(this, 1, true) as boolean; + } + set bool_field(value: boolean) { + pb_1.Message.setField(this, 1, value); + } + get has_bool_field() { + return pb_1.Message.getField(this, 1) != null; + } + get string_field() { + return pb_1.Message.getFieldWithDefault(this, 2, "default value") as string; + } + set string_field(value: string) { + pb_1.Message.setField(this, 2, value); + } + get has_string_field() { + return pb_1.Message.getField(this, 2) != null; + } + get int32_field() { + return pb_1.Message.getFieldWithDefault(this, 3, 12) as number; + } + set int32_field(value: number) { + pb_1.Message.setField(this, 3, value); + } + get has_int32_field() { + return pb_1.Message.getField(this, 3) != null; + } + static fromObject(data: { + bool_field?: boolean; + string_field?: string; + int32_field?: number; + }): MessageWithDefault { + const message = new MessageWithDefault({}); + if (data.bool_field != null) { + message.bool_field = data.bool_field; + } + if (data.string_field != null) { + message.string_field = data.string_field; + } + if (data.int32_field != null) { + message.int32_field = data.int32_field; + } + return message; + } + toObject() { + const data: { + bool_field?: boolean; + string_field?: string; + int32_field?: number; + } = {}; + if (this.bool_field != null) { + data.bool_field = this.bool_field; + } + if (this.string_field != null) { + data.string_field = this.string_field; + } + if (this.int32_field != null) { + data.int32_field = this.int32_field; + } + return data; + } + serialize(): Uint8Array; + serialize(w: pb_1.BinaryWriter): void; + serialize(w?: pb_1.BinaryWriter): Uint8Array | void { + const writer = w || new pb_1.BinaryWriter(); + if (this.has_bool_field) + writer.writeBool(1, this.bool_field); + if (this.has_string_field && this.string_field.length) + writer.writeString(2, this.string_field); + if (this.has_int32_field) + writer.writeInt32(3, this.int32_field); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): MessageWithDefault { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new MessageWithDefault(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + message.bool_field = reader.readBool(); + break; + case 2: + message.string_field = reader.readString(); + break; + case 3: + message.int32_field = reader.readInt32(); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): MessageWithDefault { + return MessageWithDefault.deserialize(bytes); + } +} +export class MessageWithImplicitDefault extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + bool_field?: boolean; + string_field?: string; + int32_field?: number; + }) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + if ("bool_field" in data && data.bool_field != undefined) { + this.bool_field = data.bool_field; + } + if ("string_field" in data && data.string_field != undefined) { + this.string_field = data.string_field; + } + if ("int32_field" in data && data.int32_field != undefined) { + this.int32_field = data.int32_field; + } + } + } + get bool_field() { + return pb_1.Message.getFieldWithDefault(this, 1, false) as boolean; + } + set bool_field(value: boolean) { + pb_1.Message.setField(this, 1, value); + } + get has_bool_field() { + return pb_1.Message.getField(this, 1) != null; + } + get string_field() { + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; + } + set string_field(value: string) { + pb_1.Message.setField(this, 2, value); + } + get has_string_field() { + return pb_1.Message.getField(this, 2) != null; + } + get int32_field() { + return pb_1.Message.getFieldWithDefault(this, 3, 0) as number; + } + set int32_field(value: number) { + pb_1.Message.setField(this, 3, value); + } + get has_int32_field() { + return pb_1.Message.getField(this, 3) != null; + } + static fromObject(data: { + bool_field?: boolean; + string_field?: string; + int32_field?: number; + }): MessageWithImplicitDefault { + const message = new MessageWithImplicitDefault({}); + if (data.bool_field != null) { + message.bool_field = data.bool_field; + } + if (data.string_field != null) { + message.string_field = data.string_field; + } + if (data.int32_field != null) { + message.int32_field = data.int32_field; + } + return message; + } + toObject() { + const data: { + bool_field?: boolean; + string_field?: string; + int32_field?: number; + } = {}; + if (this.bool_field != null) { + data.bool_field = this.bool_field; + } + if (this.string_field != null) { + data.string_field = this.string_field; + } + if (this.int32_field != null) { + data.int32_field = this.int32_field; + } + return data; + } + serialize(): Uint8Array; + serialize(w: pb_1.BinaryWriter): void; + serialize(w?: pb_1.BinaryWriter): Uint8Array | void { + const writer = w || new pb_1.BinaryWriter(); + if (this.has_bool_field) + writer.writeBool(1, this.bool_field); + if (this.has_string_field && this.string_field.length) + writer.writeString(2, this.string_field); + if (this.has_int32_field) + writer.writeInt32(3, this.int32_field); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): MessageWithImplicitDefault { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new MessageWithImplicitDefault(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + message.bool_field = reader.readBool(); + break; + case 2: + message.string_field = reader.readString(); + break; + case 3: + message.int32_field = reader.readInt32(); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): MessageWithImplicitDefault { + return MessageWithImplicitDefault.deserialize(bytes); + } +} diff --git a/test/default/default_common.ts b/test/default/default_common.ts new file mode 100755 index 00000000..2634a3be --- /dev/null +++ b/test/default/default_common.ts @@ -0,0 +1,219 @@ +/** + * Generated by the protoc-gen-ts. DO NOT EDIT! + * compiler version: 3.19.1 + * source: test/_/default/default_common.proto + * git: https://github.com/thesayyn/protoc-gen-ts */ +import * as pb_1 from "google-protobuf"; +export enum DefaultCommonEnum { + ZERO = 0, + ONE = 1, + TWO = 2 +} +export class DefaultCommonMessage extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + message?: string; + }) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + if ("message" in data && data.message != undefined) { + this.message = data.message; + } + } + } + get message() { + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; + } + set message(value: string) { + pb_1.Message.setField(this, 1, value); + } + static fromObject(data: { + message?: string; + }): DefaultCommonMessage { + const message = new DefaultCommonMessage({}); + if (data.message != null) { + message.message = data.message; + } + return message; + } + toObject() { + const data: { + message?: string; + } = {}; + if (this.message != null) { + data.message = this.message; + } + return data; + } + serialize(): Uint8Array; + serialize(w: pb_1.BinaryWriter): void; + serialize(w?: pb_1.BinaryWriter): Uint8Array | void { + const writer = w || new pb_1.BinaryWriter(); + if (this.message.length) + writer.writeString(1, this.message); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): DefaultCommonMessage { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new DefaultCommonMessage(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + message.message = reader.readString(); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): DefaultCommonMessage { + return DefaultCommonMessage.deserialize(bytes); + } +} +export class DefaultCommonMessageOneOf extends pb_1.Message { + #one_of_decls: number[][] = [[1, 2, 3]]; + constructor(data?: any[] | ({} & (({ + int32?: number; + message?: never; + string?: never; + } | { + int32?: never; + message?: DefaultCommonMessage; + string?: never; + } | { + int32?: never; + message?: never; + string?: string; + })))) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + if ("int32" in data && data.int32 != undefined) { + this.int32 = data.int32; + } + if ("message" in data && data.message != undefined) { + this.message = data.message; + } + if ("string" in data && data.string != undefined) { + this.string = data.string; + } + } + } + get int32() { + return pb_1.Message.getFieldWithDefault(this, 1, 0) as number; + } + set int32(value: number) { + pb_1.Message.setOneofField(this, 1, this.#one_of_decls[0], value); + } + get has_int32() { + return pb_1.Message.getField(this, 1) != null; + } + get message() { + return pb_1.Message.getWrapperField(this, DefaultCommonMessage, 2) as DefaultCommonMessage; + } + set message(value: DefaultCommonMessage) { + pb_1.Message.setOneofWrapperField(this, 2, this.#one_of_decls[0], value); + } + get has_message() { + return pb_1.Message.getField(this, 2) != null; + } + get string() { + return pb_1.Message.getFieldWithDefault(this, 3, "") as string; + } + set string(value: string) { + pb_1.Message.setOneofField(this, 3, this.#one_of_decls[0], value); + } + get has_string() { + return pb_1.Message.getField(this, 3) != null; + } + get oneof() { + const cases: { + [index: number]: "none" | "int32" | "message" | "string"; + } = { + 0: "none", + 1: "int32", + 2: "message", + 3: "string" + }; + return cases[pb_1.Message.computeOneofCase(this, [1, 2, 3])]; + } + static fromObject(data: { + int32?: number; + message?: ReturnType; + string?: string; + }): DefaultCommonMessageOneOf { + const message = new DefaultCommonMessageOneOf({}); + if (data.int32 != null) { + message.int32 = data.int32; + } + if (data.message != null) { + message.message = DefaultCommonMessage.fromObject(data.message); + } + if (data.string != null) { + message.string = data.string; + } + return message; + } + toObject() { + const data: { + int32?: number; + message?: ReturnType; + string?: string; + } = {}; + if (this.int32 != null) { + data.int32 = this.int32; + } + if (this.message != null) { + data.message = this.message.toObject(); + } + if (this.string != null) { + data.string = this.string; + } + return data; + } + serialize(): Uint8Array; + serialize(w: pb_1.BinaryWriter): void; + serialize(w?: pb_1.BinaryWriter): Uint8Array | void { + const writer = w || new pb_1.BinaryWriter(); + if (this.has_int32) + writer.writeInt32(1, this.int32); + if (this.has_message) + writer.writeMessage(2, this.message, () => this.message.serialize(writer)); + if (this.has_string) + writer.writeString(3, this.string); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): DefaultCommonMessageOneOf { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new DefaultCommonMessageOneOf(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + message.int32 = reader.readInt32(); + break; + case 2: + reader.readMessage(message.message, () => message.message = DefaultCommonMessage.deserialize(reader)); + break; + case 3: + message.string = reader.readString(); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): DefaultCommonMessageOneOf { + return DefaultCommonMessageOneOf.deserialize(bytes); + } +} diff --git a/test/default/default_proto2.ts b/test/default/default_proto2.ts new file mode 100755 index 00000000..e622043f --- /dev/null +++ b/test/default/default_proto2.ts @@ -0,0 +1,1067 @@ +/** + * Generated by the protoc-gen-ts. DO NOT EDIT! + * compiler version: 3.19.1 + * source: test/_/default/default_proto2.proto + * git: https://github.com/thesayyn/protoc-gen-ts */ +import * as dependency_1 from "./default_common"; +import * as pb_1 from "google-protobuf"; +export class DefaultMessageV2WithoutDefault extends pb_1.Message { + #one_of_decls: number[][] = [[22, 23]]; + constructor(data?: any[] | ({ + message: dependency_1.DefaultCommonMessage; + enum: dependency_1.DefaultCommonEnum; + bool: boolean; + string: string; + int32: number; + fixed32: number; + sfixed32: number; + uint32: number; + sint32: number; + int64: number; + fixed64: number; + sfixed64: number; + uint64: number; + sint64: number; + float: number; + double: number; + int_but_string: string; + map_string_string: Map; + map_string_message: Map; + array_int32: number[]; + array_message: dependency_1.DefaultCommonMessage[]; + bytes: Uint8Array; + } & (({ + one_of_int32?: number; + one_of_message?: never; + } | { + one_of_int32?: never; + one_of_message?: dependency_1.DefaultCommonMessage; + })))) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [20, 21], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + this.message = data.message; + this.enum = data.enum; + this.bool = data.bool; + this.string = data.string; + this.int32 = data.int32; + this.fixed32 = data.fixed32; + this.sfixed32 = data.sfixed32; + this.uint32 = data.uint32; + this.sint32 = data.sint32; + this.int64 = data.int64; + this.fixed64 = data.fixed64; + this.sfixed64 = data.sfixed64; + this.uint64 = data.uint64; + this.sint64 = data.sint64; + this.float = data.float; + this.double = data.double; + this.int_but_string = data.int_but_string; + this.map_string_string = data.map_string_string; + this.map_string_message = data.map_string_message; + this.array_int32 = data.array_int32; + this.array_message = data.array_message; + if ("one_of_int32" in data && data.one_of_int32 != undefined) { + this.one_of_int32 = data.one_of_int32; + } + if ("one_of_message" in data && data.one_of_message != undefined) { + this.one_of_message = data.one_of_message; + } + this.bytes = data.bytes; + } + if (!this.map_string_string) + this.map_string_string = new Map(); + if (!this.map_string_message) + this.map_string_message = new Map(); + } + get message() { + return pb_1.Message.getWrapperField(this, dependency_1.DefaultCommonMessage, 1) as dependency_1.DefaultCommonMessage; + } + set message(value: dependency_1.DefaultCommonMessage) { + pb_1.Message.setWrapperField(this, 1, value); + } + get has_message() { + return pb_1.Message.getField(this, 1) != null; + } + get enum() { + return pb_1.Message.getField(this, 2) as dependency_1.DefaultCommonEnum; + } + set enum(value: dependency_1.DefaultCommonEnum) { + pb_1.Message.setField(this, 2, value); + } + get has_enum() { + return pb_1.Message.getField(this, 2) != null; + } + get bool() { + return pb_1.Message.getField(this, 3) as boolean; + } + set bool(value: boolean) { + pb_1.Message.setField(this, 3, value); + } + get has_bool() { + return pb_1.Message.getField(this, 3) != null; + } + get string() { + return pb_1.Message.getField(this, 4) as string; + } + set string(value: string) { + pb_1.Message.setField(this, 4, value); + } + get has_string() { + return pb_1.Message.getField(this, 4) != null; + } + get int32() { + return pb_1.Message.getField(this, 5) as number; + } + set int32(value: number) { + pb_1.Message.setField(this, 5, value); + } + get has_int32() { + return pb_1.Message.getField(this, 5) != null; + } + get fixed32() { + return pb_1.Message.getField(this, 6) as number; + } + set fixed32(value: number) { + pb_1.Message.setField(this, 6, value); + } + get has_fixed32() { + return pb_1.Message.getField(this, 6) != null; + } + get sfixed32() { + return pb_1.Message.getField(this, 7) as number; + } + set sfixed32(value: number) { + pb_1.Message.setField(this, 7, value); + } + get has_sfixed32() { + return pb_1.Message.getField(this, 7) != null; + } + get uint32() { + return pb_1.Message.getField(this, 8) as number; + } + set uint32(value: number) { + pb_1.Message.setField(this, 8, value); + } + get has_uint32() { + return pb_1.Message.getField(this, 8) != null; + } + get sint32() { + return pb_1.Message.getField(this, 9) as number; + } + set sint32(value: number) { + pb_1.Message.setField(this, 9, value); + } + get has_sint32() { + return pb_1.Message.getField(this, 9) != null; + } + get int64() { + return pb_1.Message.getField(this, 10) as number; + } + set int64(value: number) { + pb_1.Message.setField(this, 10, value); + } + get has_int64() { + return pb_1.Message.getField(this, 10) != null; + } + get fixed64() { + return pb_1.Message.getField(this, 11) as number; + } + set fixed64(value: number) { + pb_1.Message.setField(this, 11, value); + } + get has_fixed64() { + return pb_1.Message.getField(this, 11) != null; + } + get sfixed64() { + return pb_1.Message.getField(this, 12) as number; + } + set sfixed64(value: number) { + pb_1.Message.setField(this, 12, value); + } + get has_sfixed64() { + return pb_1.Message.getField(this, 12) != null; + } + get uint64() { + return pb_1.Message.getField(this, 13) as number; + } + set uint64(value: number) { + pb_1.Message.setField(this, 13, value); + } + get has_uint64() { + return pb_1.Message.getField(this, 13) != null; + } + get sint64() { + return pb_1.Message.getField(this, 14) as number; + } + set sint64(value: number) { + pb_1.Message.setField(this, 14, value); + } + get has_sint64() { + return pb_1.Message.getField(this, 14) != null; + } + get float() { + return pb_1.Message.getField(this, 15) as number; + } + set float(value: number) { + pb_1.Message.setField(this, 15, value); + } + get has_float() { + return pb_1.Message.getField(this, 15) != null; + } + get double() { + return pb_1.Message.getField(this, 16) as number; + } + set double(value: number) { + pb_1.Message.setField(this, 16, value); + } + get has_double() { + return pb_1.Message.getField(this, 16) != null; + } + get int_but_string() { + return pb_1.Message.getField(this, 17) as string; + } + set int_but_string(value: string) { + pb_1.Message.setField(this, 17, value); + } + get has_int_but_string() { + return pb_1.Message.getField(this, 17) != null; + } + get map_string_string() { + return pb_1.Message.getField(this, 18) as any as Map; + } + set map_string_string(value: Map) { + pb_1.Message.setField(this, 18, value as any); + } + get map_string_message() { + return pb_1.Message.getField(this, 19) as any as Map; + } + set map_string_message(value: Map) { + pb_1.Message.setField(this, 19, value as any); + } + get array_int32() { + return pb_1.Message.getFieldWithDefault(this, 20, []) as number[]; + } + set array_int32(value: number[]) { + pb_1.Message.setField(this, 20, value); + } + get array_message() { + return pb_1.Message.getRepeatedWrapperField(this, dependency_1.DefaultCommonMessage, 21) as dependency_1.DefaultCommonMessage[]; + } + set array_message(value: dependency_1.DefaultCommonMessage[]) { + pb_1.Message.setRepeatedWrapperField(this, 21, value); + } + get one_of_int32() { + return pb_1.Message.getFieldWithDefault(this, 22, 0) as number; + } + set one_of_int32(value: number) { + pb_1.Message.setOneofField(this, 22, this.#one_of_decls[0], value); + } + get has_one_of_int32() { + return pb_1.Message.getField(this, 22) != null; + } + get one_of_message() { + return pb_1.Message.getWrapperField(this, dependency_1.DefaultCommonMessage, 23) as dependency_1.DefaultCommonMessage; + } + set one_of_message(value: dependency_1.DefaultCommonMessage) { + pb_1.Message.setOneofWrapperField(this, 23, this.#one_of_decls[0], value); + } + get has_one_of_message() { + return pb_1.Message.getField(this, 23) != null; + } + get bytes() { + return pb_1.Message.getField(this, 24) as Uint8Array; + } + set bytes(value: Uint8Array) { + pb_1.Message.setField(this, 24, value); + } + get has_bytes() { + return pb_1.Message.getField(this, 24) != null; + } + get one_of() { + const cases: { + [index: number]: "none" | "one_of_int32" | "one_of_message"; + } = { + 0: "none", + 22: "one_of_int32", + 23: "one_of_message" + }; + return cases[pb_1.Message.computeOneofCase(this, [22, 23])]; + } + static fromObject(data: { + message?: ReturnType; + enum?: dependency_1.DefaultCommonEnum; + bool?: boolean; + string?: string; + int32?: number; + fixed32?: number; + sfixed32?: number; + uint32?: number; + sint32?: number; + int64?: number; + fixed64?: number; + sfixed64?: number; + uint64?: number; + sint64?: number; + float?: number; + double?: number; + int_but_string?: string; + map_string_string?: { + [key: string]: string; + }; + map_string_message?: { + [key: string]: ReturnType; + }; + array_int32: number[]; + array_message?: ReturnType[]; + one_of_int32?: number; + one_of_message?: ReturnType; + bytes?: Uint8Array; + }): DefaultMessageV2WithoutDefault { + const message = new DefaultMessageV2WithoutDefault({ + message: dependency_1.DefaultCommonMessage.fromObject(data.message), + enum: data.enum, + bool: data.bool, + string: data.string, + int32: data.int32, + fixed32: data.fixed32, + sfixed32: data.sfixed32, + uint32: data.uint32, + sint32: data.sint32, + int64: data.int64, + fixed64: data.fixed64, + sfixed64: data.sfixed64, + uint64: data.uint64, + sint64: data.sint64, + float: data.float, + double: data.double, + int_but_string: data.int_but_string, + map_string_string: new Map(Object.entries(data.map_string_string)), + map_string_message: new Map(Object.entries(data.map_string_message).map(([key, value]) => [key, dependency_1.DefaultCommonMessage.fromObject(value)])), + array_int32: data.array_int32, + array_message: data.array_message.map(item => dependency_1.DefaultCommonMessage.fromObject(item)), + bytes: data.bytes + }); + if (data.one_of_int32 != null) { + message.one_of_int32 = data.one_of_int32; + } + if (data.one_of_message != null) { + message.one_of_message = dependency_1.DefaultCommonMessage.fromObject(data.one_of_message); + } + return message; + } + toObject() { + const data: { + message?: ReturnType; + enum?: dependency_1.DefaultCommonEnum; + bool?: boolean; + string?: string; + int32?: number; + fixed32?: number; + sfixed32?: number; + uint32?: number; + sint32?: number; + int64?: number; + fixed64?: number; + sfixed64?: number; + uint64?: number; + sint64?: number; + float?: number; + double?: number; + int_but_string?: string; + map_string_string?: { + [key: string]: string; + }; + map_string_message?: { + [key: string]: ReturnType; + }; + array_int32: number[]; + array_message?: ReturnType[]; + one_of_int32?: number; + one_of_message?: ReturnType; + bytes?: Uint8Array; + } = { + array_int32: this.array_int32 + }; + if (this.message != null) { + data.message = this.message.toObject(); + } + if (this.enum != null) { + data.enum = this.enum; + } + if (this.bool != null) { + data.bool = this.bool; + } + if (this.string != null) { + data.string = this.string; + } + if (this.int32 != null) { + data.int32 = this.int32; + } + if (this.fixed32 != null) { + data.fixed32 = this.fixed32; + } + if (this.sfixed32 != null) { + data.sfixed32 = this.sfixed32; + } + if (this.uint32 != null) { + data.uint32 = this.uint32; + } + if (this.sint32 != null) { + data.sint32 = this.sint32; + } + if (this.int64 != null) { + data.int64 = this.int64; + } + if (this.fixed64 != null) { + data.fixed64 = this.fixed64; + } + if (this.sfixed64 != null) { + data.sfixed64 = this.sfixed64; + } + if (this.uint64 != null) { + data.uint64 = this.uint64; + } + if (this.sint64 != null) { + data.sint64 = this.sint64; + } + if (this.float != null) { + data.float = this.float; + } + if (this.double != null) { + data.double = this.double; + } + if (this.int_but_string != null) { + data.int_but_string = this.int_but_string; + } + if (this.map_string_string.size > 0) { + data.map_string_string = Object.fromEntries(this.map_string_string); + } + if (this.map_string_message.size > 0) { + data.map_string_message = Object.fromEntries(Array.from(this.map_string_message).map(([key, value]) => [key, value.toObject()])); + } + if (this.array_message != null) { + data.array_message = this.array_message.map((item: dependency_1.DefaultCommonMessage) => item.toObject()); + } + if (this.one_of_int32 != null) { + data.one_of_int32 = this.one_of_int32; + } + if (this.one_of_message != null) { + data.one_of_message = this.one_of_message.toObject(); + } + if (this.bytes != null) { + data.bytes = this.bytes; + } + return data; + } + serialize(): Uint8Array; + serialize(w: pb_1.BinaryWriter): void; + serialize(w?: pb_1.BinaryWriter): Uint8Array | void { + const writer = w || new pb_1.BinaryWriter(); + if (this.has_message) + writer.writeMessage(1, this.message, () => this.message.serialize(writer)); + if (this.has_enum) + writer.writeEnum(2, this.enum); + if (this.has_bool) + writer.writeBool(3, this.bool); + if (this.has_string && this.string.length) + writer.writeString(4, this.string); + if (this.has_int32) + writer.writeInt32(5, this.int32); + if (this.has_fixed32) + writer.writeFixed32(6, this.fixed32); + if (this.has_sfixed32) + writer.writeSfixed32(7, this.sfixed32); + if (this.has_uint32) + writer.writeUint32(8, this.uint32); + if (this.has_sint32) + writer.writeSint32(9, this.sint32); + if (this.has_int64) + writer.writeInt64(10, this.int64); + if (this.has_fixed64) + writer.writeFixed64(11, this.fixed64); + if (this.has_sfixed64) + writer.writeSfixed64(12, this.sfixed64); + if (this.has_uint64) + writer.writeUint64(13, this.uint64); + if (this.has_sint64) + writer.writeSint64(14, this.sint64); + if (this.has_float) + writer.writeFloat(15, this.float); + if (this.has_double) + writer.writeDouble(16, this.double); + if (this.has_int_but_string) + writer.writeInt64String(17, this.int_but_string); + for (const [key, value] of this.map_string_string) { + writer.writeMessage(18, this.map_string_string, () => { + writer.writeString(1, key); + writer.writeString(2, value); + }); + } + for (const [key, value] of this.map_string_message) { + writer.writeMessage(19, this.map_string_message, () => { + writer.writeString(1, key); + writer.writeMessage(2, value, () => value.serialize(writer)); + }); + } + if (this.array_int32.length) + writer.writeRepeatedInt32(20, this.array_int32); + if (this.array_message.length) + writer.writeRepeatedMessage(21, this.array_message, (item: dependency_1.DefaultCommonMessage) => item.serialize(writer)); + if (this.has_one_of_int32) + writer.writeInt32(22, this.one_of_int32); + if (this.has_one_of_message) + writer.writeMessage(23, this.one_of_message, () => this.one_of_message.serialize(writer)); + if (this.has_bytes && this.bytes.length) + writer.writeBytes(24, this.bytes); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): DefaultMessageV2WithoutDefault { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new DefaultMessageV2WithoutDefault(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + reader.readMessage(message.message, () => message.message = dependency_1.DefaultCommonMessage.deserialize(reader)); + break; + case 2: + message.enum = reader.readEnum(); + break; + case 3: + message.bool = reader.readBool(); + break; + case 4: + message.string = reader.readString(); + break; + case 5: + message.int32 = reader.readInt32(); + break; + case 6: + message.fixed32 = reader.readFixed32(); + break; + case 7: + message.sfixed32 = reader.readSfixed32(); + break; + case 8: + message.uint32 = reader.readUint32(); + break; + case 9: + message.sint32 = reader.readSint32(); + break; + case 10: + message.int64 = reader.readInt64(); + break; + case 11: + message.fixed64 = reader.readFixed64(); + break; + case 12: + message.sfixed64 = reader.readSfixed64(); + break; + case 13: + message.uint64 = reader.readUint64(); + break; + case 14: + message.sint64 = reader.readSint64(); + break; + case 15: + message.float = reader.readFloat(); + break; + case 16: + message.double = reader.readDouble(); + break; + case 17: + message.int_but_string = reader.readInt64String(); + break; + case 18: + reader.readMessage(message, () => pb_1.Map.deserializeBinary(message.map_string_string as any, reader, reader.readString, reader.readString)); + break; + case 19: + reader.readMessage(message, () => pb_1.Map.deserializeBinary(message.map_string_message as any, reader, reader.readString, () => { + let value; + reader.readMessage(message, () => value = dependency_1.DefaultCommonMessage.deserialize(reader)); + return value; + })); + break; + case 20: + pb_1.Message.addToRepeatedField(message, 20, reader.readInt32()); + break; + case 21: + reader.readMessage(message.array_message, () => pb_1.Message.addToRepeatedWrapperField(message, 21, dependency_1.DefaultCommonMessage.deserialize(reader), dependency_1.DefaultCommonMessage)); + break; + case 22: + message.one_of_int32 = reader.readInt32(); + break; + case 23: + reader.readMessage(message.one_of_message, () => message.one_of_message = dependency_1.DefaultCommonMessage.deserialize(reader)); + break; + case 24: + message.bytes = reader.readBytes(); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): DefaultMessageV2WithoutDefault { + return DefaultMessageV2WithoutDefault.deserialize(bytes); + } +} +export class DefaultMessageV2WithDefault extends pb_1.Message { + #one_of_decls: number[][] = [[18, 19]]; + constructor(data?: any[] | ({ + message: dependency_1.DefaultCommonMessage; + enum: dependency_1.DefaultCommonEnum; + bool: boolean; + string: string; + int32: number; + fixed32: number; + sfixed32: number; + uint32: number; + sint32: number; + int64: number; + fixed64: number; + sfixed64: number; + uint64: number; + sint64: number; + float: number; + double: number; + int_but_string: string; + } & (({ + one_of_int32?: number; + one_of_message?: never; + } | { + one_of_int32?: never; + one_of_message?: dependency_1.DefaultCommonMessage; + })))) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + this.message = data.message; + this.enum = data.enum; + this.bool = data.bool; + this.string = data.string; + this.int32 = data.int32; + this.fixed32 = data.fixed32; + this.sfixed32 = data.sfixed32; + this.uint32 = data.uint32; + this.sint32 = data.sint32; + this.int64 = data.int64; + this.fixed64 = data.fixed64; + this.sfixed64 = data.sfixed64; + this.uint64 = data.uint64; + this.sint64 = data.sint64; + this.float = data.float; + this.double = data.double; + this.int_but_string = data.int_but_string; + if ("one_of_int32" in data && data.one_of_int32 != undefined) { + this.one_of_int32 = data.one_of_int32; + } + if ("one_of_message" in data && data.one_of_message != undefined) { + this.one_of_message = data.one_of_message; + } + } + } + get message() { + return pb_1.Message.getWrapperField(this, dependency_1.DefaultCommonMessage, 1) as dependency_1.DefaultCommonMessage; + } + set message(value: dependency_1.DefaultCommonMessage) { + pb_1.Message.setWrapperField(this, 1, value); + } + get has_message() { + return pb_1.Message.getField(this, 1) != null; + } + get enum() { + return pb_1.Message.getFieldWithDefault(this, 2, dependency_1.DefaultCommonEnum.TWO) as dependency_1.DefaultCommonEnum; + } + set enum(value: dependency_1.DefaultCommonEnum) { + pb_1.Message.setField(this, 2, value); + } + get has_enum() { + return pb_1.Message.getField(this, 2) != null; + } + get bool() { + return pb_1.Message.getFieldWithDefault(this, 3, true) as boolean; + } + set bool(value: boolean) { + pb_1.Message.setField(this, 3, value); + } + get has_bool() { + return pb_1.Message.getField(this, 3) != null; + } + get string() { + return pb_1.Message.getFieldWithDefault(this, 4, "default string") as string; + } + set string(value: string) { + pb_1.Message.setField(this, 4, value); + } + get has_string() { + return pb_1.Message.getField(this, 4) != null; + } + get int32() { + return pb_1.Message.getFieldWithDefault(this, 5, 5) as number; + } + set int32(value: number) { + pb_1.Message.setField(this, 5, value); + } + get has_int32() { + return pb_1.Message.getField(this, 5) != null; + } + get fixed32() { + return pb_1.Message.getFieldWithDefault(this, 6, 6) as number; + } + set fixed32(value: number) { + pb_1.Message.setField(this, 6, value); + } + get has_fixed32() { + return pb_1.Message.getField(this, 6) != null; + } + get sfixed32() { + return pb_1.Message.getFieldWithDefault(this, 7, 7) as number; + } + set sfixed32(value: number) { + pb_1.Message.setField(this, 7, value); + } + get has_sfixed32() { + return pb_1.Message.getField(this, 7) != null; + } + get uint32() { + return pb_1.Message.getFieldWithDefault(this, 8, 8) as number; + } + set uint32(value: number) { + pb_1.Message.setField(this, 8, value); + } + get has_uint32() { + return pb_1.Message.getField(this, 8) != null; + } + get sint32() { + return pb_1.Message.getFieldWithDefault(this, 9, 9) as number; + } + set sint32(value: number) { + pb_1.Message.setField(this, 9, value); + } + get has_sint32() { + return pb_1.Message.getField(this, 9) != null; + } + get int64() { + return pb_1.Message.getFieldWithDefault(this, 10, 10) as number; + } + set int64(value: number) { + pb_1.Message.setField(this, 10, value); + } + get has_int64() { + return pb_1.Message.getField(this, 10) != null; + } + get fixed64() { + return pb_1.Message.getFieldWithDefault(this, 11, 11) as number; + } + set fixed64(value: number) { + pb_1.Message.setField(this, 11, value); + } + get has_fixed64() { + return pb_1.Message.getField(this, 11) != null; + } + get sfixed64() { + return pb_1.Message.getFieldWithDefault(this, 12, 12) as number; + } + set sfixed64(value: number) { + pb_1.Message.setField(this, 12, value); + } + get has_sfixed64() { + return pb_1.Message.getField(this, 12) != null; + } + get uint64() { + return pb_1.Message.getFieldWithDefault(this, 13, 13) as number; + } + set uint64(value: number) { + pb_1.Message.setField(this, 13, value); + } + get has_uint64() { + return pb_1.Message.getField(this, 13) != null; + } + get sint64() { + return pb_1.Message.getFieldWithDefault(this, 14, 14) as number; + } + set sint64(value: number) { + pb_1.Message.setField(this, 14, value); + } + get has_sint64() { + return pb_1.Message.getField(this, 14) != null; + } + get float() { + return pb_1.Message.getFieldWithDefault(this, 15, 15) as number; + } + set float(value: number) { + pb_1.Message.setField(this, 15, value); + } + get has_float() { + return pb_1.Message.getField(this, 15) != null; + } + get double() { + return pb_1.Message.getFieldWithDefault(this, 16, 16) as number; + } + set double(value: number) { + pb_1.Message.setField(this, 16, value); + } + get has_double() { + return pb_1.Message.getField(this, 16) != null; + } + get int_but_string() { + return pb_1.Message.getFieldWithDefault(this, 17, "17") as string; + } + set int_but_string(value: string) { + pb_1.Message.setField(this, 17, value); + } + get has_int_but_string() { + return pb_1.Message.getField(this, 17) != null; + } + get one_of_int32() { + return pb_1.Message.getFieldWithDefault(this, 18, 18) as number; + } + set one_of_int32(value: number) { + pb_1.Message.setOneofField(this, 18, this.#one_of_decls[0], value); + } + get has_one_of_int32() { + return pb_1.Message.getField(this, 18) != null; + } + get one_of_message() { + return pb_1.Message.getWrapperField(this, dependency_1.DefaultCommonMessage, 19) as dependency_1.DefaultCommonMessage; + } + set one_of_message(value: dependency_1.DefaultCommonMessage) { + pb_1.Message.setOneofWrapperField(this, 19, this.#one_of_decls[0], value); + } + get has_one_of_message() { + return pb_1.Message.getField(this, 19) != null; + } + get one_of() { + const cases: { + [index: number]: "none" | "one_of_int32" | "one_of_message"; + } = { + 0: "none", + 18: "one_of_int32", + 19: "one_of_message" + }; + return cases[pb_1.Message.computeOneofCase(this, [18, 19])]; + } + static fromObject(data: { + message?: ReturnType; + enum: dependency_1.DefaultCommonEnum; + bool: boolean; + string: string; + int32: number; + fixed32: number; + sfixed32: number; + uint32: number; + sint32: number; + int64: number; + fixed64: number; + sfixed64: number; + uint64: number; + sint64: number; + float: number; + double: number; + int_but_string: string; + one_of_int32?: number; + one_of_message?: ReturnType; + }): DefaultMessageV2WithDefault { + const message = new DefaultMessageV2WithDefault({ + message: dependency_1.DefaultCommonMessage.fromObject(data.message), + enum: data.enum, + bool: data.bool, + string: data.string, + int32: data.int32, + fixed32: data.fixed32, + sfixed32: data.sfixed32, + uint32: data.uint32, + sint32: data.sint32, + int64: data.int64, + fixed64: data.fixed64, + sfixed64: data.sfixed64, + uint64: data.uint64, + sint64: data.sint64, + float: data.float, + double: data.double, + int_but_string: data.int_but_string + }); + if (data.one_of_int32 != null) { + message.one_of_int32 = data.one_of_int32; + } + if (data.one_of_message != null) { + message.one_of_message = dependency_1.DefaultCommonMessage.fromObject(data.one_of_message); + } + return message; + } + toObject() { + const data: { + message?: ReturnType; + enum: dependency_1.DefaultCommonEnum; + bool: boolean; + string: string; + int32: number; + fixed32: number; + sfixed32: number; + uint32: number; + sint32: number; + int64: number; + fixed64: number; + sfixed64: number; + uint64: number; + sint64: number; + float: number; + double: number; + int_but_string: string; + one_of_int32?: number; + one_of_message?: ReturnType; + } = { + enum: this.enum, + bool: this.bool, + string: this.string, + int32: this.int32, + fixed32: this.fixed32, + sfixed32: this.sfixed32, + uint32: this.uint32, + sint32: this.sint32, + int64: this.int64, + fixed64: this.fixed64, + sfixed64: this.sfixed64, + uint64: this.uint64, + sint64: this.sint64, + float: this.float, + double: this.double, + int_but_string: this.int_but_string + }; + if (this.message != null) { + data.message = this.message.toObject(); + } + if (this.one_of_int32 != null) { + data.one_of_int32 = this.one_of_int32; + } + if (this.one_of_message != null) { + data.one_of_message = this.one_of_message.toObject(); + } + return data; + } + serialize(): Uint8Array; + serialize(w: pb_1.BinaryWriter): void; + serialize(w?: pb_1.BinaryWriter): Uint8Array | void { + const writer = w || new pb_1.BinaryWriter(); + if (this.has_message) + writer.writeMessage(1, this.message, () => this.message.serialize(writer)); + if (this.has_enum) + writer.writeEnum(2, this.enum); + if (this.has_bool) + writer.writeBool(3, this.bool); + if (this.has_string && this.string.length) + writer.writeString(4, this.string); + if (this.has_int32) + writer.writeInt32(5, this.int32); + if (this.has_fixed32) + writer.writeFixed32(6, this.fixed32); + if (this.has_sfixed32) + writer.writeSfixed32(7, this.sfixed32); + if (this.has_uint32) + writer.writeUint32(8, this.uint32); + if (this.has_sint32) + writer.writeSint32(9, this.sint32); + if (this.has_int64) + writer.writeInt64(10, this.int64); + if (this.has_fixed64) + writer.writeFixed64(11, this.fixed64); + if (this.has_sfixed64) + writer.writeSfixed64(12, this.sfixed64); + if (this.has_uint64) + writer.writeUint64(13, this.uint64); + if (this.has_sint64) + writer.writeSint64(14, this.sint64); + if (this.has_float) + writer.writeFloat(15, this.float); + if (this.has_double) + writer.writeDouble(16, this.double); + if (this.has_int_but_string) + writer.writeInt64String(17, this.int_but_string); + if (this.has_one_of_int32) + writer.writeInt32(18, this.one_of_int32); + if (this.has_one_of_message) + writer.writeMessage(19, this.one_of_message, () => this.one_of_message.serialize(writer)); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): DefaultMessageV2WithDefault { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new DefaultMessageV2WithDefault(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + reader.readMessage(message.message, () => message.message = dependency_1.DefaultCommonMessage.deserialize(reader)); + break; + case 2: + message.enum = reader.readEnum(); + break; + case 3: + message.bool = reader.readBool(); + break; + case 4: + message.string = reader.readString(); + break; + case 5: + message.int32 = reader.readInt32(); + break; + case 6: + message.fixed32 = reader.readFixed32(); + break; + case 7: + message.sfixed32 = reader.readSfixed32(); + break; + case 8: + message.uint32 = reader.readUint32(); + break; + case 9: + message.sint32 = reader.readSint32(); + break; + case 10: + message.int64 = reader.readInt64(); + break; + case 11: + message.fixed64 = reader.readFixed64(); + break; + case 12: + message.sfixed64 = reader.readSfixed64(); + break; + case 13: + message.uint64 = reader.readUint64(); + break; + case 14: + message.sint64 = reader.readSint64(); + break; + case 15: + message.float = reader.readFloat(); + break; + case 16: + message.double = reader.readDouble(); + break; + case 17: + message.int_but_string = reader.readInt64String(); + break; + case 18: + message.one_of_int32 = reader.readInt32(); + break; + case 19: + reader.readMessage(message.one_of_message, () => message.one_of_message = dependency_1.DefaultCommonMessage.deserialize(reader)); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): DefaultMessageV2WithDefault { + return DefaultMessageV2WithDefault.deserialize(bytes); + } +} diff --git a/test/default/default_proto3.ts b/test/default/default_proto3.ts new file mode 100755 index 00000000..3a4cdae5 --- /dev/null +++ b/test/default/default_proto3.ts @@ -0,0 +1,1305 @@ +/** + * Generated by the protoc-gen-ts. DO NOT EDIT! + * compiler version: 3.19.1 + * source: test/_/default/default_proto3.proto + * git: https://github.com/thesayyn/protoc-gen-ts */ +import * as dependency_1 from "./default_common"; +import * as pb_1 from "google-protobuf"; +export class DefaultMessageV3 extends pb_1.Message { + #one_of_decls: number[][] = [[22, 23]]; + constructor(data?: any[] | ({ + message?: dependency_1.DefaultCommonMessage; + enum?: dependency_1.DefaultCommonEnum; + bool?: boolean; + string?: string; + int32?: number; + fixed32?: number; + sfixed32?: number; + uint32?: number; + sint32?: number; + int64?: number; + fixed64?: number; + sfixed64?: number; + uint64?: number; + sint64?: number; + float?: number; + double?: number; + int_but_string?: string; + map_string_string?: Map; + map_string_message?: Map; + array_int32?: number[]; + array_message?: dependency_1.DefaultCommonMessage[]; + bytes?: Uint8Array; + } & (({ + one_of_int32?: number; + one_of_message?: never; + } | { + one_of_int32?: never; + one_of_message?: dependency_1.DefaultCommonMessage; + })))) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [20, 21], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + if ("message" in data && data.message != undefined) { + this.message = data.message; + } + if ("enum" in data && data.enum != undefined) { + this.enum = data.enum; + } + if ("bool" in data && data.bool != undefined) { + this.bool = data.bool; + } + if ("string" in data && data.string != undefined) { + this.string = data.string; + } + if ("int32" in data && data.int32 != undefined) { + this.int32 = data.int32; + } + if ("fixed32" in data && data.fixed32 != undefined) { + this.fixed32 = data.fixed32; + } + if ("sfixed32" in data && data.sfixed32 != undefined) { + this.sfixed32 = data.sfixed32; + } + if ("uint32" in data && data.uint32 != undefined) { + this.uint32 = data.uint32; + } + if ("sint32" in data && data.sint32 != undefined) { + this.sint32 = data.sint32; + } + if ("int64" in data && data.int64 != undefined) { + this.int64 = data.int64; + } + if ("fixed64" in data && data.fixed64 != undefined) { + this.fixed64 = data.fixed64; + } + if ("sfixed64" in data && data.sfixed64 != undefined) { + this.sfixed64 = data.sfixed64; + } + if ("uint64" in data && data.uint64 != undefined) { + this.uint64 = data.uint64; + } + if ("sint64" in data && data.sint64 != undefined) { + this.sint64 = data.sint64; + } + if ("float" in data && data.float != undefined) { + this.float = data.float; + } + if ("double" in data && data.double != undefined) { + this.double = data.double; + } + if ("int_but_string" in data && data.int_but_string != undefined) { + this.int_but_string = data.int_but_string; + } + if ("map_string_string" in data && data.map_string_string != undefined) { + this.map_string_string = data.map_string_string; + } + if ("map_string_message" in data && data.map_string_message != undefined) { + this.map_string_message = data.map_string_message; + } + if ("array_int32" in data && data.array_int32 != undefined) { + this.array_int32 = data.array_int32; + } + if ("array_message" in data && data.array_message != undefined) { + this.array_message = data.array_message; + } + if ("one_of_int32" in data && data.one_of_int32 != undefined) { + this.one_of_int32 = data.one_of_int32; + } + if ("one_of_message" in data && data.one_of_message != undefined) { + this.one_of_message = data.one_of_message; + } + if ("bytes" in data && data.bytes != undefined) { + this.bytes = data.bytes; + } + } + if (!this.map_string_string) + this.map_string_string = new Map(); + if (!this.map_string_message) + this.map_string_message = new Map(); + } + get message() { + return pb_1.Message.getWrapperField(this, dependency_1.DefaultCommonMessage, 1) as dependency_1.DefaultCommonMessage; + } + set message(value: dependency_1.DefaultCommonMessage) { + pb_1.Message.setWrapperField(this, 1, value); + } + get has_message() { + return pb_1.Message.getField(this, 1) != null; + } + get enum() { + return pb_1.Message.getFieldWithDefault(this, 2, dependency_1.DefaultCommonEnum.ZERO) as dependency_1.DefaultCommonEnum; + } + set enum(value: dependency_1.DefaultCommonEnum) { + pb_1.Message.setField(this, 2, value); + } + get bool() { + return pb_1.Message.getFieldWithDefault(this, 3, false) as boolean; + } + set bool(value: boolean) { + pb_1.Message.setField(this, 3, value); + } + get string() { + return pb_1.Message.getFieldWithDefault(this, 4, "") as string; + } + set string(value: string) { + pb_1.Message.setField(this, 4, value); + } + get int32() { + return pb_1.Message.getFieldWithDefault(this, 5, 0) as number; + } + set int32(value: number) { + pb_1.Message.setField(this, 5, value); + } + get fixed32() { + return pb_1.Message.getFieldWithDefault(this, 6, 0) as number; + } + set fixed32(value: number) { + pb_1.Message.setField(this, 6, value); + } + get sfixed32() { + return pb_1.Message.getFieldWithDefault(this, 7, 0) as number; + } + set sfixed32(value: number) { + pb_1.Message.setField(this, 7, value); + } + get uint32() { + return pb_1.Message.getFieldWithDefault(this, 8, 0) as number; + } + set uint32(value: number) { + pb_1.Message.setField(this, 8, value); + } + get sint32() { + return pb_1.Message.getFieldWithDefault(this, 9, 0) as number; + } + set sint32(value: number) { + pb_1.Message.setField(this, 9, value); + } + get int64() { + return pb_1.Message.getFieldWithDefault(this, 10, 0) as number; + } + set int64(value: number) { + pb_1.Message.setField(this, 10, value); + } + get fixed64() { + return pb_1.Message.getFieldWithDefault(this, 11, 0) as number; + } + set fixed64(value: number) { + pb_1.Message.setField(this, 11, value); + } + get sfixed64() { + return pb_1.Message.getFieldWithDefault(this, 12, 0) as number; + } + set sfixed64(value: number) { + pb_1.Message.setField(this, 12, value); + } + get uint64() { + return pb_1.Message.getFieldWithDefault(this, 13, 0) as number; + } + set uint64(value: number) { + pb_1.Message.setField(this, 13, value); + } + get sint64() { + return pb_1.Message.getFieldWithDefault(this, 14, 0) as number; + } + set sint64(value: number) { + pb_1.Message.setField(this, 14, value); + } + get float() { + return pb_1.Message.getFieldWithDefault(this, 15, 0) as number; + } + set float(value: number) { + pb_1.Message.setField(this, 15, value); + } + get double() { + return pb_1.Message.getFieldWithDefault(this, 16, 0) as number; + } + set double(value: number) { + pb_1.Message.setField(this, 16, value); + } + get int_but_string() { + return pb_1.Message.getFieldWithDefault(this, 17, "0") as string; + } + set int_but_string(value: string) { + pb_1.Message.setField(this, 17, value); + } + get map_string_string() { + return pb_1.Message.getField(this, 18) as any as Map; + } + set map_string_string(value: Map) { + pb_1.Message.setField(this, 18, value as any); + } + get map_string_message() { + return pb_1.Message.getField(this, 19) as any as Map; + } + set map_string_message(value: Map) { + pb_1.Message.setField(this, 19, value as any); + } + get array_int32() { + return pb_1.Message.getFieldWithDefault(this, 20, []) as number[]; + } + set array_int32(value: number[]) { + pb_1.Message.setField(this, 20, value); + } + get array_message() { + return pb_1.Message.getRepeatedWrapperField(this, dependency_1.DefaultCommonMessage, 21) as dependency_1.DefaultCommonMessage[]; + } + set array_message(value: dependency_1.DefaultCommonMessage[]) { + pb_1.Message.setRepeatedWrapperField(this, 21, value); + } + get one_of_int32() { + return pb_1.Message.getFieldWithDefault(this, 22, 0) as number; + } + set one_of_int32(value: number) { + pb_1.Message.setOneofField(this, 22, this.#one_of_decls[0], value); + } + get has_one_of_int32() { + return pb_1.Message.getField(this, 22) != null; + } + get one_of_message() { + return pb_1.Message.getWrapperField(this, dependency_1.DefaultCommonMessage, 23) as dependency_1.DefaultCommonMessage; + } + set one_of_message(value: dependency_1.DefaultCommonMessage) { + pb_1.Message.setOneofWrapperField(this, 23, this.#one_of_decls[0], value); + } + get has_one_of_message() { + return pb_1.Message.getField(this, 23) != null; + } + get bytes() { + return pb_1.Message.getFieldWithDefault(this, 24, new Uint8Array()) as Uint8Array; + } + set bytes(value: Uint8Array) { + pb_1.Message.setField(this, 24, value); + } + get one_of() { + const cases: { + [index: number]: "none" | "one_of_int32" | "one_of_message"; + } = { + 0: "none", + 22: "one_of_int32", + 23: "one_of_message" + }; + return cases[pb_1.Message.computeOneofCase(this, [22, 23])]; + } + static fromObject(data: { + message?: ReturnType; + enum?: dependency_1.DefaultCommonEnum; + bool?: boolean; + string?: string; + int32?: number; + fixed32?: number; + sfixed32?: number; + uint32?: number; + sint32?: number; + int64?: number; + fixed64?: number; + sfixed64?: number; + uint64?: number; + sint64?: number; + float?: number; + double?: number; + int_but_string?: string; + map_string_string?: { + [key: string]: string; + }; + map_string_message?: { + [key: string]: ReturnType; + }; + array_int32?: number[]; + array_message?: ReturnType[]; + one_of_int32?: number; + one_of_message?: ReturnType; + bytes?: Uint8Array; + }): DefaultMessageV3 { + const message = new DefaultMessageV3({}); + if (data.message != null) { + message.message = dependency_1.DefaultCommonMessage.fromObject(data.message); + } + if (data.enum != null) { + message.enum = data.enum; + } + if (data.bool != null) { + message.bool = data.bool; + } + if (data.string != null) { + message.string = data.string; + } + if (data.int32 != null) { + message.int32 = data.int32; + } + if (data.fixed32 != null) { + message.fixed32 = data.fixed32; + } + if (data.sfixed32 != null) { + message.sfixed32 = data.sfixed32; + } + if (data.uint32 != null) { + message.uint32 = data.uint32; + } + if (data.sint32 != null) { + message.sint32 = data.sint32; + } + if (data.int64 != null) { + message.int64 = data.int64; + } + if (data.fixed64 != null) { + message.fixed64 = data.fixed64; + } + if (data.sfixed64 != null) { + message.sfixed64 = data.sfixed64; + } + if (data.uint64 != null) { + message.uint64 = data.uint64; + } + if (data.sint64 != null) { + message.sint64 = data.sint64; + } + if (data.float != null) { + message.float = data.float; + } + if (data.double != null) { + message.double = data.double; + } + if (data.int_but_string != null) { + message.int_but_string = data.int_but_string; + } + if (typeof data.map_string_string == "object") { + message.map_string_string = new Map(Object.entries(data.map_string_string)); + } + if (typeof data.map_string_message == "object") { + message.map_string_message = new Map(Object.entries(data.map_string_message).map(([key, value]) => [key, dependency_1.DefaultCommonMessage.fromObject(value)])); + } + if (data.array_int32 != null) { + message.array_int32 = data.array_int32; + } + if (data.array_message != null) { + message.array_message = data.array_message.map(item => dependency_1.DefaultCommonMessage.fromObject(item)); + } + if (data.one_of_int32 != null) { + message.one_of_int32 = data.one_of_int32; + } + if (data.one_of_message != null) { + message.one_of_message = dependency_1.DefaultCommonMessage.fromObject(data.one_of_message); + } + if (data.bytes != null) { + message.bytes = data.bytes; + } + return message; + } + toObject() { + const data: { + message?: ReturnType; + enum?: dependency_1.DefaultCommonEnum; + bool?: boolean; + string?: string; + int32?: number; + fixed32?: number; + sfixed32?: number; + uint32?: number; + sint32?: number; + int64?: number; + fixed64?: number; + sfixed64?: number; + uint64?: number; + sint64?: number; + float?: number; + double?: number; + int_but_string?: string; + map_string_string?: { + [key: string]: string; + }; + map_string_message?: { + [key: string]: ReturnType; + }; + array_int32?: number[]; + array_message?: ReturnType[]; + one_of_int32?: number; + one_of_message?: ReturnType; + bytes?: Uint8Array; + } = {}; + if (this.message != null) { + data.message = this.message.toObject(); + } + if (this.enum != null) { + data.enum = this.enum; + } + if (this.bool != null) { + data.bool = this.bool; + } + if (this.string != null) { + data.string = this.string; + } + if (this.int32 != null) { + data.int32 = this.int32; + } + if (this.fixed32 != null) { + data.fixed32 = this.fixed32; + } + if (this.sfixed32 != null) { + data.sfixed32 = this.sfixed32; + } + if (this.uint32 != null) { + data.uint32 = this.uint32; + } + if (this.sint32 != null) { + data.sint32 = this.sint32; + } + if (this.int64 != null) { + data.int64 = this.int64; + } + if (this.fixed64 != null) { + data.fixed64 = this.fixed64; + } + if (this.sfixed64 != null) { + data.sfixed64 = this.sfixed64; + } + if (this.uint64 != null) { + data.uint64 = this.uint64; + } + if (this.sint64 != null) { + data.sint64 = this.sint64; + } + if (this.float != null) { + data.float = this.float; + } + if (this.double != null) { + data.double = this.double; + } + if (this.int_but_string != null) { + data.int_but_string = this.int_but_string; + } + if (this.map_string_string.size > 0) { + data.map_string_string = Object.fromEntries(this.map_string_string); + } + if (this.map_string_message.size > 0) { + data.map_string_message = Object.fromEntries(Array.from(this.map_string_message).map(([key, value]) => [key, value.toObject()])); + } + if (this.array_int32 != null) { + data.array_int32 = this.array_int32; + } + if (this.array_message != null) { + data.array_message = this.array_message.map((item: dependency_1.DefaultCommonMessage) => item.toObject()); + } + if (this.one_of_int32 != null) { + data.one_of_int32 = this.one_of_int32; + } + if (this.one_of_message != null) { + data.one_of_message = this.one_of_message.toObject(); + } + if (this.bytes != null) { + data.bytes = this.bytes; + } + return data; + } + serialize(): Uint8Array; + serialize(w: pb_1.BinaryWriter): void; + serialize(w?: pb_1.BinaryWriter): Uint8Array | void { + const writer = w || new pb_1.BinaryWriter(); + if (this.has_message) + writer.writeMessage(1, this.message, () => this.message.serialize(writer)); + if (this.enum != dependency_1.DefaultCommonEnum.ZERO) + writer.writeEnum(2, this.enum); + if (this.bool != false) + writer.writeBool(3, this.bool); + if (this.string.length) + writer.writeString(4, this.string); + if (this.int32 != 0) + writer.writeInt32(5, this.int32); + if (this.fixed32 != 0) + writer.writeFixed32(6, this.fixed32); + if (this.sfixed32 != 0) + writer.writeSfixed32(7, this.sfixed32); + if (this.uint32 != 0) + writer.writeUint32(8, this.uint32); + if (this.sint32 != 0) + writer.writeSint32(9, this.sint32); + if (this.int64 != 0) + writer.writeInt64(10, this.int64); + if (this.fixed64 != 0) + writer.writeFixed64(11, this.fixed64); + if (this.sfixed64 != 0) + writer.writeSfixed64(12, this.sfixed64); + if (this.uint64 != 0) + writer.writeUint64(13, this.uint64); + if (this.sint64 != 0) + writer.writeSint64(14, this.sint64); + if (this.float != 0) + writer.writeFloat(15, this.float); + if (this.double != 0) + writer.writeDouble(16, this.double); + if (this.int_but_string != "0") + writer.writeInt64String(17, this.int_but_string); + for (const [key, value] of this.map_string_string) { + writer.writeMessage(18, this.map_string_string, () => { + writer.writeString(1, key); + writer.writeString(2, value); + }); + } + for (const [key, value] of this.map_string_message) { + writer.writeMessage(19, this.map_string_message, () => { + writer.writeString(1, key); + writer.writeMessage(2, value, () => value.serialize(writer)); + }); + } + if (this.array_int32.length) + writer.writePackedInt32(20, this.array_int32); + if (this.array_message.length) + writer.writeRepeatedMessage(21, this.array_message, (item: dependency_1.DefaultCommonMessage) => item.serialize(writer)); + if (this.has_one_of_int32) + writer.writeInt32(22, this.one_of_int32); + if (this.has_one_of_message) + writer.writeMessage(23, this.one_of_message, () => this.one_of_message.serialize(writer)); + if (this.bytes.length) + writer.writeBytes(24, this.bytes); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): DefaultMessageV3 { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new DefaultMessageV3(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + reader.readMessage(message.message, () => message.message = dependency_1.DefaultCommonMessage.deserialize(reader)); + break; + case 2: + message.enum = reader.readEnum(); + break; + case 3: + message.bool = reader.readBool(); + break; + case 4: + message.string = reader.readString(); + break; + case 5: + message.int32 = reader.readInt32(); + break; + case 6: + message.fixed32 = reader.readFixed32(); + break; + case 7: + message.sfixed32 = reader.readSfixed32(); + break; + case 8: + message.uint32 = reader.readUint32(); + break; + case 9: + message.sint32 = reader.readSint32(); + break; + case 10: + message.int64 = reader.readInt64(); + break; + case 11: + message.fixed64 = reader.readFixed64(); + break; + case 12: + message.sfixed64 = reader.readSfixed64(); + break; + case 13: + message.uint64 = reader.readUint64(); + break; + case 14: + message.sint64 = reader.readSint64(); + break; + case 15: + message.float = reader.readFloat(); + break; + case 16: + message.double = reader.readDouble(); + break; + case 17: + message.int_but_string = reader.readInt64String(); + break; + case 18: + reader.readMessage(message, () => pb_1.Map.deserializeBinary(message.map_string_string as any, reader, reader.readString, reader.readString)); + break; + case 19: + reader.readMessage(message, () => pb_1.Map.deserializeBinary(message.map_string_message as any, reader, reader.readString, () => { + let value; + reader.readMessage(message, () => value = dependency_1.DefaultCommonMessage.deserialize(reader)); + return value; + })); + break; + case 20: + message.array_int32 = reader.readPackedInt32(); + break; + case 21: + reader.readMessage(message.array_message, () => pb_1.Message.addToRepeatedWrapperField(message, 21, dependency_1.DefaultCommonMessage.deserialize(reader), dependency_1.DefaultCommonMessage)); + break; + case 22: + message.one_of_int32 = reader.readInt32(); + break; + case 23: + reader.readMessage(message.one_of_message, () => message.one_of_message = dependency_1.DefaultCommonMessage.deserialize(reader)); + break; + case 24: + message.bytes = reader.readBytes(); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): DefaultMessageV3 { + return DefaultMessageV3.deserialize(bytes); + } +} +export class DefaultMessageOptionalV3 extends pb_1.Message { + #one_of_decls: number[][] = [[2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [24]]; + constructor(data?: any[] | ({} & (({ + enum?: dependency_1.DefaultCommonEnum; + }) | ({ + bool?: boolean; + }) | ({ + string?: string; + }) | ({ + int32?: number; + }) | ({ + fixed32?: number; + }) | ({ + sfixed32?: number; + }) | ({ + uint32?: number; + }) | ({ + sint32?: number; + }) | ({ + int64?: number; + }) | ({ + fixed64?: number; + }) | ({ + sfixed64?: number; + }) | ({ + uint64?: number; + }) | ({ + sint64?: number; + }) | ({ + float?: number; + }) | ({ + double?: number; + }) | ({ + int_but_string?: string; + }) | ({ + bytes?: Uint8Array; + })))) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + if ("enum" in data && data.enum != undefined) { + this.enum = data.enum; + } + if ("bool" in data && data.bool != undefined) { + this.bool = data.bool; + } + if ("string" in data && data.string != undefined) { + this.string = data.string; + } + if ("int32" in data && data.int32 != undefined) { + this.int32 = data.int32; + } + if ("fixed32" in data && data.fixed32 != undefined) { + this.fixed32 = data.fixed32; + } + if ("sfixed32" in data && data.sfixed32 != undefined) { + this.sfixed32 = data.sfixed32; + } + if ("uint32" in data && data.uint32 != undefined) { + this.uint32 = data.uint32; + } + if ("sint32" in data && data.sint32 != undefined) { + this.sint32 = data.sint32; + } + if ("int64" in data && data.int64 != undefined) { + this.int64 = data.int64; + } + if ("fixed64" in data && data.fixed64 != undefined) { + this.fixed64 = data.fixed64; + } + if ("sfixed64" in data && data.sfixed64 != undefined) { + this.sfixed64 = data.sfixed64; + } + if ("uint64" in data && data.uint64 != undefined) { + this.uint64 = data.uint64; + } + if ("sint64" in data && data.sint64 != undefined) { + this.sint64 = data.sint64; + } + if ("float" in data && data.float != undefined) { + this.float = data.float; + } + if ("double" in data && data.double != undefined) { + this.double = data.double; + } + if ("int_but_string" in data && data.int_but_string != undefined) { + this.int_but_string = data.int_but_string; + } + if ("bytes" in data && data.bytes != undefined) { + this.bytes = data.bytes; + } + } + } + get enum() { + return pb_1.Message.getFieldWithDefault(this, 2, dependency_1.DefaultCommonEnum.ZERO) as dependency_1.DefaultCommonEnum; + } + set enum(value: dependency_1.DefaultCommonEnum) { + pb_1.Message.setOneofField(this, 2, this.#one_of_decls[0], value); + } + get has_enum() { + return pb_1.Message.getField(this, 2) != null; + } + get bool() { + return pb_1.Message.getFieldWithDefault(this, 3, false) as boolean; + } + set bool(value: boolean) { + pb_1.Message.setOneofField(this, 3, this.#one_of_decls[1], value); + } + get has_bool() { + return pb_1.Message.getField(this, 3) != null; + } + get string() { + return pb_1.Message.getFieldWithDefault(this, 4, "") as string; + } + set string(value: string) { + pb_1.Message.setOneofField(this, 4, this.#one_of_decls[2], value); + } + get has_string() { + return pb_1.Message.getField(this, 4) != null; + } + get int32() { + return pb_1.Message.getFieldWithDefault(this, 5, 0) as number; + } + set int32(value: number) { + pb_1.Message.setOneofField(this, 5, this.#one_of_decls[3], value); + } + get has_int32() { + return pb_1.Message.getField(this, 5) != null; + } + get fixed32() { + return pb_1.Message.getFieldWithDefault(this, 6, 0) as number; + } + set fixed32(value: number) { + pb_1.Message.setOneofField(this, 6, this.#one_of_decls[4], value); + } + get has_fixed32() { + return pb_1.Message.getField(this, 6) != null; + } + get sfixed32() { + return pb_1.Message.getFieldWithDefault(this, 7, 0) as number; + } + set sfixed32(value: number) { + pb_1.Message.setOneofField(this, 7, this.#one_of_decls[5], value); + } + get has_sfixed32() { + return pb_1.Message.getField(this, 7) != null; + } + get uint32() { + return pb_1.Message.getFieldWithDefault(this, 8, 0) as number; + } + set uint32(value: number) { + pb_1.Message.setOneofField(this, 8, this.#one_of_decls[6], value); + } + get has_uint32() { + return pb_1.Message.getField(this, 8) != null; + } + get sint32() { + return pb_1.Message.getFieldWithDefault(this, 9, 0) as number; + } + set sint32(value: number) { + pb_1.Message.setOneofField(this, 9, this.#one_of_decls[7], value); + } + get has_sint32() { + return pb_1.Message.getField(this, 9) != null; + } + get int64() { + return pb_1.Message.getFieldWithDefault(this, 10, 0) as number; + } + set int64(value: number) { + pb_1.Message.setOneofField(this, 10, this.#one_of_decls[8], value); + } + get has_int64() { + return pb_1.Message.getField(this, 10) != null; + } + get fixed64() { + return pb_1.Message.getFieldWithDefault(this, 11, 0) as number; + } + set fixed64(value: number) { + pb_1.Message.setOneofField(this, 11, this.#one_of_decls[9], value); + } + get has_fixed64() { + return pb_1.Message.getField(this, 11) != null; + } + get sfixed64() { + return pb_1.Message.getFieldWithDefault(this, 12, 0) as number; + } + set sfixed64(value: number) { + pb_1.Message.setOneofField(this, 12, this.#one_of_decls[10], value); + } + get has_sfixed64() { + return pb_1.Message.getField(this, 12) != null; + } + get uint64() { + return pb_1.Message.getFieldWithDefault(this, 13, 0) as number; + } + set uint64(value: number) { + pb_1.Message.setOneofField(this, 13, this.#one_of_decls[11], value); + } + get has_uint64() { + return pb_1.Message.getField(this, 13) != null; + } + get sint64() { + return pb_1.Message.getFieldWithDefault(this, 14, 0) as number; + } + set sint64(value: number) { + pb_1.Message.setOneofField(this, 14, this.#one_of_decls[12], value); + } + get has_sint64() { + return pb_1.Message.getField(this, 14) != null; + } + get float() { + return pb_1.Message.getFieldWithDefault(this, 15, 0) as number; + } + set float(value: number) { + pb_1.Message.setOneofField(this, 15, this.#one_of_decls[13], value); + } + get has_float() { + return pb_1.Message.getField(this, 15) != null; + } + get double() { + return pb_1.Message.getFieldWithDefault(this, 16, 0) as number; + } + set double(value: number) { + pb_1.Message.setOneofField(this, 16, this.#one_of_decls[14], value); + } + get has_double() { + return pb_1.Message.getField(this, 16) != null; + } + get int_but_string() { + return pb_1.Message.getFieldWithDefault(this, 17, "0") as string; + } + set int_but_string(value: string) { + pb_1.Message.setOneofField(this, 17, this.#one_of_decls[15], value); + } + get has_int_but_string() { + return pb_1.Message.getField(this, 17) != null; + } + get bytes() { + return pb_1.Message.getFieldWithDefault(this, 24, new Uint8Array()) as Uint8Array; + } + set bytes(value: Uint8Array) { + pb_1.Message.setOneofField(this, 24, this.#one_of_decls[16], value); + } + get has_bytes() { + return pb_1.Message.getField(this, 24) != null; + } + get _enum() { + const cases: { + [index: number]: "none" | "enum"; + } = { + 0: "none", + 2: "enum" + }; + return cases[pb_1.Message.computeOneofCase(this, [2])]; + } + get _bool() { + const cases: { + [index: number]: "none" | "bool"; + } = { + 0: "none", + 3: "bool" + }; + return cases[pb_1.Message.computeOneofCase(this, [3])]; + } + get _string() { + const cases: { + [index: number]: "none" | "string"; + } = { + 0: "none", + 4: "string" + }; + return cases[pb_1.Message.computeOneofCase(this, [4])]; + } + get _int32() { + const cases: { + [index: number]: "none" | "int32"; + } = { + 0: "none", + 5: "int32" + }; + return cases[pb_1.Message.computeOneofCase(this, [5])]; + } + get _fixed32() { + const cases: { + [index: number]: "none" | "fixed32"; + } = { + 0: "none", + 6: "fixed32" + }; + return cases[pb_1.Message.computeOneofCase(this, [6])]; + } + get _sfixed32() { + const cases: { + [index: number]: "none" | "sfixed32"; + } = { + 0: "none", + 7: "sfixed32" + }; + return cases[pb_1.Message.computeOneofCase(this, [7])]; + } + get _uint32() { + const cases: { + [index: number]: "none" | "uint32"; + } = { + 0: "none", + 8: "uint32" + }; + return cases[pb_1.Message.computeOneofCase(this, [8])]; + } + get _sint32() { + const cases: { + [index: number]: "none" | "sint32"; + } = { + 0: "none", + 9: "sint32" + }; + return cases[pb_1.Message.computeOneofCase(this, [9])]; + } + get _int64() { + const cases: { + [index: number]: "none" | "int64"; + } = { + 0: "none", + 10: "int64" + }; + return cases[pb_1.Message.computeOneofCase(this, [10])]; + } + get _fixed64() { + const cases: { + [index: number]: "none" | "fixed64"; + } = { + 0: "none", + 11: "fixed64" + }; + return cases[pb_1.Message.computeOneofCase(this, [11])]; + } + get _sfixed64() { + const cases: { + [index: number]: "none" | "sfixed64"; + } = { + 0: "none", + 12: "sfixed64" + }; + return cases[pb_1.Message.computeOneofCase(this, [12])]; + } + get _uint64() { + const cases: { + [index: number]: "none" | "uint64"; + } = { + 0: "none", + 13: "uint64" + }; + return cases[pb_1.Message.computeOneofCase(this, [13])]; + } + get _sint64() { + const cases: { + [index: number]: "none" | "sint64"; + } = { + 0: "none", + 14: "sint64" + }; + return cases[pb_1.Message.computeOneofCase(this, [14])]; + } + get _float() { + const cases: { + [index: number]: "none" | "float"; + } = { + 0: "none", + 15: "float" + }; + return cases[pb_1.Message.computeOneofCase(this, [15])]; + } + get _double() { + const cases: { + [index: number]: "none" | "double"; + } = { + 0: "none", + 16: "double" + }; + return cases[pb_1.Message.computeOneofCase(this, [16])]; + } + get _int_but_string() { + const cases: { + [index: number]: "none" | "int_but_string"; + } = { + 0: "none", + 17: "int_but_string" + }; + return cases[pb_1.Message.computeOneofCase(this, [17])]; + } + get _bytes() { + const cases: { + [index: number]: "none" | "bytes"; + } = { + 0: "none", + 24: "bytes" + }; + return cases[pb_1.Message.computeOneofCase(this, [24])]; + } + static fromObject(data: { + enum?: dependency_1.DefaultCommonEnum; + bool?: boolean; + string?: string; + int32?: number; + fixed32?: number; + sfixed32?: number; + uint32?: number; + sint32?: number; + int64?: number; + fixed64?: number; + sfixed64?: number; + uint64?: number; + sint64?: number; + float?: number; + double?: number; + int_but_string?: string; + bytes?: Uint8Array; + }): DefaultMessageOptionalV3 { + const message = new DefaultMessageOptionalV3({}); + if (data.enum != null) { + message.enum = data.enum; + } + if (data.bool != null) { + message.bool = data.bool; + } + if (data.string != null) { + message.string = data.string; + } + if (data.int32 != null) { + message.int32 = data.int32; + } + if (data.fixed32 != null) { + message.fixed32 = data.fixed32; + } + if (data.sfixed32 != null) { + message.sfixed32 = data.sfixed32; + } + if (data.uint32 != null) { + message.uint32 = data.uint32; + } + if (data.sint32 != null) { + message.sint32 = data.sint32; + } + if (data.int64 != null) { + message.int64 = data.int64; + } + if (data.fixed64 != null) { + message.fixed64 = data.fixed64; + } + if (data.sfixed64 != null) { + message.sfixed64 = data.sfixed64; + } + if (data.uint64 != null) { + message.uint64 = data.uint64; + } + if (data.sint64 != null) { + message.sint64 = data.sint64; + } + if (data.float != null) { + message.float = data.float; + } + if (data.double != null) { + message.double = data.double; + } + if (data.int_but_string != null) { + message.int_but_string = data.int_but_string; + } + if (data.bytes != null) { + message.bytes = data.bytes; + } + return message; + } + toObject() { + const data: { + enum?: dependency_1.DefaultCommonEnum; + bool?: boolean; + string?: string; + int32?: number; + fixed32?: number; + sfixed32?: number; + uint32?: number; + sint32?: number; + int64?: number; + fixed64?: number; + sfixed64?: number; + uint64?: number; + sint64?: number; + float?: number; + double?: number; + int_but_string?: string; + bytes?: Uint8Array; + } = {}; + if (this.enum != null) { + data.enum = this.enum; + } + if (this.bool != null) { + data.bool = this.bool; + } + if (this.string != null) { + data.string = this.string; + } + if (this.int32 != null) { + data.int32 = this.int32; + } + if (this.fixed32 != null) { + data.fixed32 = this.fixed32; + } + if (this.sfixed32 != null) { + data.sfixed32 = this.sfixed32; + } + if (this.uint32 != null) { + data.uint32 = this.uint32; + } + if (this.sint32 != null) { + data.sint32 = this.sint32; + } + if (this.int64 != null) { + data.int64 = this.int64; + } + if (this.fixed64 != null) { + data.fixed64 = this.fixed64; + } + if (this.sfixed64 != null) { + data.sfixed64 = this.sfixed64; + } + if (this.uint64 != null) { + data.uint64 = this.uint64; + } + if (this.sint64 != null) { + data.sint64 = this.sint64; + } + if (this.float != null) { + data.float = this.float; + } + if (this.double != null) { + data.double = this.double; + } + if (this.int_but_string != null) { + data.int_but_string = this.int_but_string; + } + if (this.bytes != null) { + data.bytes = this.bytes; + } + return data; + } + serialize(): Uint8Array; + serialize(w: pb_1.BinaryWriter): void; + serialize(w?: pb_1.BinaryWriter): Uint8Array | void { + const writer = w || new pb_1.BinaryWriter(); + if (this.has_enum) + writer.writeEnum(2, this.enum); + if (this.has_bool) + writer.writeBool(3, this.bool); + if (this.has_string) + writer.writeString(4, this.string); + if (this.has_int32) + writer.writeInt32(5, this.int32); + if (this.has_fixed32) + writer.writeFixed32(6, this.fixed32); + if (this.has_sfixed32) + writer.writeSfixed32(7, this.sfixed32); + if (this.has_uint32) + writer.writeUint32(8, this.uint32); + if (this.has_sint32) + writer.writeSint32(9, this.sint32); + if (this.has_int64) + writer.writeInt64(10, this.int64); + if (this.has_fixed64) + writer.writeFixed64(11, this.fixed64); + if (this.has_sfixed64) + writer.writeSfixed64(12, this.sfixed64); + if (this.has_uint64) + writer.writeUint64(13, this.uint64); + if (this.has_sint64) + writer.writeSint64(14, this.sint64); + if (this.has_float) + writer.writeFloat(15, this.float); + if (this.has_double) + writer.writeDouble(16, this.double); + if (this.has_int_but_string) + writer.writeInt64String(17, this.int_but_string); + if (this.has_bytes) + writer.writeBytes(24, this.bytes); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): DefaultMessageOptionalV3 { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new DefaultMessageOptionalV3(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 2: + message.enum = reader.readEnum(); + break; + case 3: + message.bool = reader.readBool(); + break; + case 4: + message.string = reader.readString(); + break; + case 5: + message.int32 = reader.readInt32(); + break; + case 6: + message.fixed32 = reader.readFixed32(); + break; + case 7: + message.sfixed32 = reader.readSfixed32(); + break; + case 8: + message.uint32 = reader.readUint32(); + break; + case 9: + message.sint32 = reader.readSint32(); + break; + case 10: + message.int64 = reader.readInt64(); + break; + case 11: + message.fixed64 = reader.readFixed64(); + break; + case 12: + message.sfixed64 = reader.readSfixed64(); + break; + case 13: + message.uint64 = reader.readUint64(); + break; + case 14: + message.sint64 = reader.readSint64(); + break; + case 15: + message.float = reader.readFloat(); + break; + case 16: + message.double = reader.readDouble(); + break; + case 17: + message.int_but_string = reader.readInt64String(); + break; + case 24: + message.bytes = reader.readBytes(); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): DefaultMessageOptionalV3 { + return DefaultMessageOptionalV3.deserialize(bytes); + } +} diff --git a/test/deprecated.ts b/test/deprecated.ts index 6d2081c1..b78bf6a0 100644 --- a/test/deprecated.ts +++ b/test/deprecated.ts @@ -44,26 +44,33 @@ export class MessageName extends pb_1.Message { } /** @deprecated*/ get deprecated_field() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } /** @deprecated*/ set deprecated_field(value: string) { pb_1.Message.setField(this, 1, value); } get me() { - return pb_1.Message.getField(this, 2) as string; + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; } set me(value: string) { pb_1.Message.setOneofField(this, 2, this.#one_of_decls[0], value); } + get has_me() { + return pb_1.Message.getField(this, 2) != null; + } /** @deprecated*/ get me_deprecated() { - return pb_1.Message.getField(this, 3) as string; + return pb_1.Message.getFieldWithDefault(this, 3, "") as string; } /** @deprecated*/ set me_deprecated(value: string) { pb_1.Message.setOneofField(this, 3, this.#one_of_decls[0], value); } + /** @deprecated*/ + get has_me_deprecated() { + return pb_1.Message.getField(this, 3) != null; + } get test() { const cases: { [index: number]: "none" | "me" | "me_deprecated"; @@ -112,11 +119,11 @@ export class MessageName extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.deprecated_field === "string" && this.deprecated_field.length) + if (this.deprecated_field.length) writer.writeString(1, this.deprecated_field); - if (typeof this.me === "string" && this.me.length) + if (this.has_me) writer.writeString(2, this.me); - if (typeof this.me_deprecated === "string" && this.me_deprecated.length) + if (this.has_me_deprecated) writer.writeString(3, this.me_deprecated); if (!w) return writer.getResultBuffer(); diff --git a/test/dot.in.filenames.ts b/test/dot.in.filenames.ts index be2ec4c5..3cec04dd 100644 --- a/test/dot.in.filenames.ts +++ b/test/dot.in.filenames.ts @@ -19,7 +19,7 @@ export namespace dot { } } get name() { - return pb_1.Message.getField(this, 1) as string[]; + return pb_1.Message.getFieldWithDefault(this, 1, []) as string[]; } set name(value: string[]) { pb_1.Message.setField(this, 1, value); @@ -46,7 +46,7 @@ export namespace dot { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.name !== undefined) + if (this.name.length) writer.writeRepeatedString(1, this.name); if (!w) return writer.getResultBuffer(); diff --git a/test/enum_within_message.ts b/test/enum_within_message.ts index e156ec5d..e78bc297 100644 --- a/test/enum_within_message.ts +++ b/test/enum_within_message.ts @@ -23,13 +23,13 @@ export namespace main { } } get language() { - return pb_1.Message.getField(this, 1) as Code.Language; + return pb_1.Message.getFieldWithDefault(this, 1, Code.Language.UNKNOWN) as Code.Language; } set language(value: Code.Language) { pb_1.Message.setField(this, 1, value); } get lines() { - return pb_1.Message.getField(this, 2) as number; + return pb_1.Message.getFieldWithDefault(this, 2, 0) as number; } set lines(value: number) { pb_1.Message.setField(this, 2, value); @@ -64,9 +64,9 @@ export namespace main { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.language !== undefined) + if (this.language != Code.Language.UNKNOWN) writer.writeEnum(1, this.language); - if (this.lines !== undefined) + if (this.lines != 0) writer.writeInt32(2, this.lines); if (!w) return writer.getResultBuffer(); diff --git a/test/experimental/rpc.ts b/test/experimental/rpc.ts index 5c079b84..5fc1b51e 100644 --- a/test/experimental/rpc.ts +++ b/test/experimental/rpc.ts @@ -19,7 +19,7 @@ export class Chunk extends pb_1.Message { } } get data() { - return pb_1.Message.getField(this, 1) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 1, new Uint8Array()) as Uint8Array; } set data(value: Uint8Array) { pb_1.Message.setField(this, 1, value); @@ -46,7 +46,7 @@ export class Chunk extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.data !== undefined) + if (this.data.length) writer.writeBytes(1, this.data); if (!w) return writer.getResultBuffer(); @@ -86,7 +86,7 @@ export class Result extends pb_1.Message { } } get id() { - return pb_1.Message.getField(this, 1) as number; + return pb_1.Message.getFieldWithDefault(this, 1, 0) as number; } set id(value: number) { pb_1.Message.setField(this, 1, value); @@ -113,7 +113,7 @@ export class Result extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.id !== undefined) + if (this.id != 0) writer.writeInt32(1, this.id); if (!w) return writer.getResultBuffer(); diff --git a/test/explicit_override/explicit_override.ts b/test/explicit_override/explicit_override.ts index d7b17320..62146166 100644 --- a/test/explicit_override/explicit_override.ts +++ b/test/explicit_override/explicit_override.ts @@ -18,7 +18,7 @@ export class ExplicitOverrideMessage extends pb_1.Message { } } get example() { - return pb_1.Message.getField(this, 1) as number; + return pb_1.Message.getFieldWithDefault(this, 1, 0) as number; } set example(value: number) { pb_1.Message.setField(this, 1, value); @@ -45,7 +45,7 @@ export class ExplicitOverrideMessage extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.example !== undefined) + if (this.example != 0) writer.writeUint32(1, this.example); if (!w) return writer.getResultBuffer(); diff --git a/test/importdirective.ts b/test/importdirective.ts index c898aae8..83c8e5d8 100644 --- a/test/importdirective.ts +++ b/test/importdirective.ts @@ -34,14 +34,20 @@ export namespace importdirective { set importedField(value: dependency_1.importdirective.Imported) { pb_1.Message.setWrapperField(this, 1, value); } + get has_importedField() { + return pb_1.Message.getField(this, 1) != null; + } get submessageField() { return pb_1.Message.getWrapperField(this, dependency_1.importdirective.Imported.SubMessage, 2) as dependency_1.importdirective.Imported.SubMessage; } set submessageField(value: dependency_1.importdirective.Imported.SubMessage) { pb_1.Message.setWrapperField(this, 2, value); } + get has_submessageField() { + return pb_1.Message.getField(this, 2) != null; + } get enumField() { - return pb_1.Message.getField(this, 3) as dependency_1.importdirective.Imported.SubMessage.MyEnum; + return pb_1.Message.getFieldWithDefault(this, 3, dependency_1.importdirective.Imported.SubMessage.MyEnum.VALUE) as dependency_1.importdirective.Imported.SubMessage.MyEnum; } set enumField(value: dependency_1.importdirective.Imported.SubMessage.MyEnum) { pb_1.Message.setField(this, 3, value); @@ -84,11 +90,11 @@ export namespace importdirective { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.importedField !== undefined) + if (this.has_importedField) writer.writeMessage(1, this.importedField, () => this.importedField.serialize(writer)); - if (this.submessageField !== undefined) + if (this.has_submessageField) writer.writeMessage(2, this.submessageField, () => this.submessageField.serialize(writer)); - if (this.enumField !== undefined) + if (this.enumField != dependency_1.importdirective.Imported.SubMessage.MyEnum.VALUE) writer.writeEnum(3, this.enumField); if (!w) return writer.getResultBuffer(); diff --git a/test/imported.ts b/test/imported.ts index 5df185f3..7953a613 100644 --- a/test/imported.ts +++ b/test/imported.ts @@ -60,7 +60,7 @@ export namespace importdirective { } } get key() { - return pb_1.Message.getField(this, 1) as Imported.SubMessage.MyEnum; + return pb_1.Message.getFieldWithDefault(this, 1, Imported.SubMessage.MyEnum.VALUE) as Imported.SubMessage.MyEnum; } set key(value: Imported.SubMessage.MyEnum) { pb_1.Message.setField(this, 1, value); @@ -87,7 +87,7 @@ export namespace importdirective { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.key !== undefined) + if (this.key != Imported.SubMessage.MyEnum.VALUE) writer.writeEnum(1, this.key); if (!w) return writer.getResultBuffer(); diff --git a/test/integers.ts b/test/integers.ts index f135a331..fef19ffa 100644 --- a/test/integers.ts +++ b/test/integers.ts @@ -46,49 +46,49 @@ export class Integers extends pb_1.Message { } } get int32() { - return pb_1.Message.getField(this, 2) as number; + return pb_1.Message.getFieldWithDefault(this, 2, 0) as number; } set int32(value: number) { pb_1.Message.setField(this, 2, value); } get int64() { - return pb_1.Message.getField(this, 3) as number; + return pb_1.Message.getFieldWithDefault(this, 3, 0) as number; } set int64(value: number) { pb_1.Message.setField(this, 3, value); } get sint32() { - return pb_1.Message.getField(this, 4) as number; + return pb_1.Message.getFieldWithDefault(this, 4, 0) as number; } set sint32(value: number) { pb_1.Message.setField(this, 4, value); } get sint64() { - return pb_1.Message.getField(this, 5) as number; + return pb_1.Message.getFieldWithDefault(this, 5, 0) as number; } set sint64(value: number) { pb_1.Message.setField(this, 5, value); } get sfixed32() { - return pb_1.Message.getField(this, 6) as number; + return pb_1.Message.getFieldWithDefault(this, 6, 0) as number; } set sfixed32(value: number) { pb_1.Message.setField(this, 6, value); } get sfixed64() { - return pb_1.Message.getField(this, 7) as number; + return pb_1.Message.getFieldWithDefault(this, 7, 0) as number; } set sfixed64(value: number) { pb_1.Message.setField(this, 7, value); } get fixed32() { - return pb_1.Message.getField(this, 8) as number; + return pb_1.Message.getFieldWithDefault(this, 8, 0) as number; } set fixed32(value: number) { pb_1.Message.setField(this, 8, value); } get fixed64() { - return pb_1.Message.getField(this, 9) as number; + return pb_1.Message.getFieldWithDefault(this, 9, 0) as number; } set fixed64(value: number) { pb_1.Message.setField(this, 9, value); @@ -171,21 +171,21 @@ export class Integers extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.int32 !== undefined) + if (this.int32 != 0) writer.writeInt32(2, this.int32); - if (this.int64 !== undefined) + if (this.int64 != 0) writer.writeInt64(3, this.int64); - if (this.sint32 !== undefined) + if (this.sint32 != 0) writer.writeSint32(4, this.sint32); - if (this.sint64 !== undefined) + if (this.sint64 != 0) writer.writeSint64(5, this.sint64); - if (this.sfixed32 !== undefined) + if (this.sfixed32 != 0) writer.writeSfixed32(6, this.sfixed32); - if (this.sfixed64 !== undefined) + if (this.sfixed64 != 0) writer.writeSfixed64(7, this.sfixed64); - if (this.fixed32 !== undefined) + if (this.fixed32 != 0) writer.writeFixed32(8, this.fixed32); - if (this.fixed64 !== undefined) + if (this.fixed64 != 0) writer.writeFixed64(9, this.fixed64); if (!w) return writer.getResultBuffer(); diff --git a/test/json_names/json_names.spec.ts b/test/json_names/json_names.spec.ts index 13c848ba..9f3cdefd 100644 --- a/test/json_names/json_names.spec.ts +++ b/test/json_names/json_names.spec.ts @@ -57,7 +57,9 @@ describe('JSON Names', () => { aNestedInteger: 456, }, colorSpace: ColorSpace.RED_GREEN_BLUE, + anOptionalString: '', aSingleString: 'spam', + aSingleNumber: 0, }); }); @@ -77,6 +79,8 @@ describe('JSON Names', () => { aNestedInteger: 102, }, colorSpace: ColorSpace.CYAN_YELLOW_MAGENTA_BLACK, + anOptionalString: '', + aSingleString: '', aSingleNumber: 456, }); }); @@ -89,4 +93,13 @@ describe('JSON Names', () => { message.aSingleString = 'abcdef'; expect(message.mut_ex_field).toBe('aSingleString'); }); + + it('should expose presence fields in camel case', () => { + const message = new JsonNamesMessage(); + expect(message.hasASingleString).toBe(false); + message.aSingleString = 'abcdef'; + expect(message.hasASingleString).toBe(true); + message.aSingleString = undefined; + expect(message.hasASingleString).toBe(false); + }); }); diff --git a/test/json_names/json_names.ts b/test/json_names/json_names.ts index 5c666119..daab261a 100755 --- a/test/json_names/json_names.ts +++ b/test/json_names/json_names.ts @@ -51,13 +51,13 @@ export class JsonNamesMessage extends pb_1.Message { } } get someStrings() { - return pb_1.Message.getField(this, 1) as string[]; + return pb_1.Message.getFieldWithDefault(this, 1, []) as string[]; } set someStrings(value: string[]) { pb_1.Message.setField(this, 1, value); } get anInteger() { - return pb_1.Message.getField(this, 2) as number; + return pb_1.Message.getFieldWithDefault(this, 2, 0) as number; } set anInteger(value: number) { pb_1.Message.setField(this, 2, value); @@ -68,30 +68,42 @@ export class JsonNamesMessage extends pb_1.Message { set aNestedMessage(value: JsonNamesMessage.NestedMessage) { pb_1.Message.setWrapperField(this, 3, value); } + get hasANestedMessage() { + return pb_1.Message.getField(this, 3) != null; + } get colorSpace() { - return pb_1.Message.getField(this, 4) as ColorSpace; + return pb_1.Message.getFieldWithDefault(this, 4, ColorSpace.RED_GREEN_BLUE) as ColorSpace; } set colorSpace(value: ColorSpace) { pb_1.Message.setField(this, 4, value); } get anOptionalString() { - return pb_1.Message.getField(this, 5) as string; + return pb_1.Message.getFieldWithDefault(this, 5, "") as string; } set anOptionalString(value: string) { pb_1.Message.setOneofField(this, 5, this.#one_of_decls[1], value); } + get hasAnOptionalString() { + return pb_1.Message.getField(this, 5) != null; + } get aSingleString() { - return pb_1.Message.getField(this, 6) as string; + return pb_1.Message.getFieldWithDefault(this, 6, "") as string; } set aSingleString(value: string) { pb_1.Message.setOneofField(this, 6, this.#one_of_decls[0], value); } + get hasASingleString() { + return pb_1.Message.getField(this, 6) != null; + } get aSingleNumber() { - return pb_1.Message.getField(this, 7) as number; + return pb_1.Message.getFieldWithDefault(this, 7, 0) as number; } set aSingleNumber(value: number) { pb_1.Message.setOneofField(this, 7, this.#one_of_decls[0], value); } + get hasASingleNumber() { + return pb_1.Message.getField(this, 7) != null; + } get mut_ex_field() { const cases: { [index: number]: "none" | "aSingleString" | "aSingleNumber"; @@ -181,19 +193,19 @@ export class JsonNamesMessage extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.someStrings !== undefined) + if (this.someStrings.length) writer.writeRepeatedString(1, this.someStrings); - if (this.anInteger !== undefined) + if (this.anInteger != 0) writer.writeInt32(2, this.anInteger); - if (this.aNestedMessage !== undefined) + if (this.hasANestedMessage) writer.writeMessage(3, this.aNestedMessage, () => this.aNestedMessage.serialize(writer)); - if (this.colorSpace !== undefined) + if (this.colorSpace != ColorSpace.RED_GREEN_BLUE) writer.writeEnum(4, this.colorSpace); - if (typeof this.anOptionalString === "string" && this.anOptionalString.length) + if (this.hasAnOptionalString) writer.writeString(5, this.anOptionalString); - if (typeof this.aSingleString === "string" && this.aSingleString.length) + if (this.hasASingleString) writer.writeString(6, this.aSingleString); - if (this.aSingleNumber !== undefined) + if (this.hasASingleNumber) writer.writeInt32(7, this.aSingleNumber); if (!w) return writer.getResultBuffer(); @@ -252,7 +264,7 @@ export namespace JsonNamesMessage { } } get aNestedInteger() { - return pb_1.Message.getField(this, 1) as number; + return pb_1.Message.getFieldWithDefault(this, 1, 0) as number; } set aNestedInteger(value: number) { pb_1.Message.setField(this, 1, value); @@ -279,7 +291,7 @@ export namespace JsonNamesMessage { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.aNestedInteger !== undefined) + if (this.aNestedInteger != 0) writer.writeUint32(1, this.aNestedInteger); if (!w) return writer.getResultBuffer(); diff --git a/test/jstype.ts b/test/jstype.ts index d81ed315..8e419859 100644 --- a/test/jstype.ts +++ b/test/jstype.ts @@ -26,19 +26,19 @@ export class JSType extends pb_1.Message { } } get int_but_string() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "0") as string; } set int_but_string(value: string) { pb_1.Message.setField(this, 1, value); } get int_and_normal() { - return pb_1.Message.getField(this, 2) as number; + return pb_1.Message.getFieldWithDefault(this, 2, 0) as number; } set int_and_normal(value: number) { pb_1.Message.setField(this, 2, value); } get int_and_number() { - return pb_1.Message.getField(this, 3) as number; + return pb_1.Message.getFieldWithDefault(this, 3, 0) as number; } set int_and_number(value: number) { pb_1.Message.setField(this, 3, value); @@ -81,11 +81,11 @@ export class JSType extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.int_but_string !== undefined) + if (this.int_but_string != "0") writer.writeInt64String(1, this.int_but_string); - if (this.int_and_normal !== undefined) + if (this.int_and_normal != 0) writer.writeInt64(2, this.int_and_normal); - if (this.int_and_number !== undefined) + if (this.int_and_number != 0) writer.writeInt64(3, this.int_and_number); if (!w) return writer.getResultBuffer(); diff --git a/test/map.spec.ts b/test/map.spec.ts index af981ca5..7c3ce2f1 100644 --- a/test/map.spec.ts +++ b/test/map.spec.ts @@ -12,7 +12,7 @@ describe("maps", () => { const gotTags = Tags.deserialize(bytes); expect(tags.keys).toBeInstanceOf(Map); - expect(gotTags.toObject()).toEqual({ keys: { see: 'working' } }) + expect(gotTags.toObject()).toEqual({ key: "", keys: { see: 'working' } }) }); it("should take the last seen", () => { @@ -20,7 +20,7 @@ describe("maps", () => { tags.keys.set("see", "not_working"); tags.keys.set("see", "working"); - expect(Tags.deserialize(tags.serialize()).toObject()).toEqual({ keys: { see: 'working' } }) + expect(Tags.deserialize(tags.serialize()).toObject()).toEqual({ key: "", keys: { see: 'working' } }) }); @@ -31,7 +31,7 @@ describe("maps", () => { ["see", "working"], ]) }); - expect(Tags.deserialize(tags.serialize()).toObject()).toEqual({ keys: { see: 'working' } }) + expect(Tags.deserialize(tags.serialize()).toObject()).toEqual({ key: "", keys: { see: 'working' } }) }); @@ -44,6 +44,7 @@ describe("maps", () => { }); const transferredTags = Tags.deserialize(tags.serialize()); expect(transferredTags.toObject()).toEqual({ + key: "", topics: { first: { link: "example1" }, second: { link: "example2" } @@ -64,6 +65,7 @@ describe("maps", () => { }); const transferredTags = Tags.deserialize(tags.serialize()); expect(transferredTags.toObject()).toEqual({ + key: "", imported: { 1: { key: importdirective.Imported.SubMessage.MyEnum.VALUE }, 2: { key: importdirective.Imported.SubMessage.MyEnum.VALUE2 } @@ -89,6 +91,7 @@ describe("maps", () => { }); const transferredTags = Tags.deserialize(tags.serialize()); expect(transferredTags.toObject()).toEqual({ + key: "", imported: { 1: { key: importdirective.Imported.SubMessage.MyEnum.VALUE }, 2: { key: importdirective.Imported.SubMessage.MyEnum.VALUE2 } diff --git a/test/map.ts b/test/map.ts index 8a693f2c..70510c8f 100644 --- a/test/map.ts +++ b/test/map.ts @@ -19,7 +19,7 @@ export class Topic extends pb_1.Message { } } get link() { - return pb_1.Message.getField(this, 2) as string; + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; } set link(value: string) { pb_1.Message.setField(this, 2, value); @@ -46,7 +46,7 @@ export class Topic extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.link === "string" && this.link.length) + if (this.link.length) writer.writeString(2, this.link); if (!w) return writer.getResultBuffer(); @@ -110,7 +110,7 @@ export class Tags extends pb_1.Message { this.imported2 = new Map(); } get key() { - return pb_1.Message.getField(this, 2) as string; + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; } set key(value: string) { pb_1.Message.setField(this, 2, value); @@ -209,7 +209,7 @@ export class Tags extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.key === "string" && this.key.length) + if (this.key.length) writer.writeString(2, this.key); for (const [key, value] of this.keys) { writer.writeMessage(1, this.keys, () => { diff --git a/test/messagefields.spec.ts b/test/messagefields.spec.ts index 469a0071..2e7967ce 100644 --- a/test/messagefields.spec.ts +++ b/test/messagefields.spec.ts @@ -33,7 +33,12 @@ describe("SubMessages", () => { field_1: "field_1_value", field_2: "field_2_value" }, - array_prop: [{}] + array_prop: [ + { + field_1: "", + field_2: "", + }, + ] }) }) @@ -81,10 +86,14 @@ describe("SubMessages", () => { field_2: "test" }, { + field_1: "", field_2: "test" } ], - sub_message: {} + sub_message: { + field_1: "", + field_2: "", + } }); }) diff --git a/test/messagefields.ts b/test/messagefields.ts index fba8c031..1dc67530 100644 --- a/test/messagefields.ts +++ b/test/messagefields.ts @@ -27,6 +27,9 @@ export class MessageFields extends pb_1.Message { set sub_message(value: SubMessage) { pb_1.Message.setWrapperField(this, 1, value); } + get has_sub_message() { + return pb_1.Message.getField(this, 1) != null; + } get array_prop() { return pb_1.Message.getRepeatedWrapperField(this, SubMessage, 2) as SubMessage[]; } @@ -63,9 +66,9 @@ export class MessageFields extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.sub_message !== undefined) + if (this.has_sub_message) writer.writeMessage(1, this.sub_message, () => this.sub_message.serialize(writer)); - if (this.array_prop !== undefined) + if (this.array_prop.length) writer.writeRepeatedMessage(2, this.array_prop, (item: SubMessage) => item.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -112,13 +115,13 @@ export class SubMessage extends pb_1.Message { } } get field_1() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set field_1(value: string) { pb_1.Message.setField(this, 1, value); } get field_2() { - return pb_1.Message.getField(this, 2) as string; + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; } set field_2(value: string) { pb_1.Message.setField(this, 2, value); @@ -153,9 +156,9 @@ export class SubMessage extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.field_1 === "string" && this.field_1.length) + if (this.field_1.length) writer.writeString(1, this.field_1); - if (typeof this.field_2 === "string" && this.field_2.length) + if (this.field_2.length) writer.writeString(2, this.field_2); if (!w) return writer.getResultBuffer(); diff --git a/test/no_namespace/double_nested.ts b/test/no_namespace/double_nested.ts index 143b3faf..9348184c 100755 --- a/test/no_namespace/double_nested.ts +++ b/test/no_namespace/double_nested.ts @@ -18,7 +18,7 @@ export class MessageFields extends pb_1.Message { } } get field() { - return pb_1.Message.getField(this, 1) as string[]; + return pb_1.Message.getFieldWithDefault(this, 1, []) as string[]; } set field(value: string[]) { pb_1.Message.setField(this, 1, value); @@ -45,7 +45,7 @@ export class MessageFields extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.field !== undefined) + if (this.field.length) writer.writeRepeatedString(1, this.field); if (!w) return writer.getResultBuffer(); diff --git a/test/no_namespace/nested.ts b/test/no_namespace/nested.ts index 90e0ee30..df3a134e 100755 --- a/test/no_namespace/nested.ts +++ b/test/no_namespace/nested.ts @@ -41,7 +41,7 @@ export class SchedulingContext extends pb_1.Message { pb_1.Message.setRepeatedWrapperField(this, 2, value); } get timeout() { - return pb_1.Message.getField(this, 3) as number; + return pb_1.Message.getFieldWithDefault(this, 3, 0) as number; } set timeout(value: number) { pb_1.Message.setField(this, 3, value); @@ -52,6 +52,9 @@ export class SchedulingContext extends pb_1.Message { set batch(value: SchedulingContextBatch) { pb_1.Message.setWrapperField(this, 4, value); } + get has_batch() { + return pb_1.Message.getField(this, 4) != null; + } static fromObject(data: { env?: ReturnType[]; timeout?: number; @@ -90,11 +93,11 @@ export class SchedulingContext extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.env !== undefined) + if (this.env.length) writer.writeRepeatedMessage(2, this.env, (item: SchedulingContextEnv) => item.serialize(writer)); - if (this.timeout !== undefined) + if (this.timeout != 0) writer.writeInt32(3, this.timeout); - if (this.batch !== undefined) + if (this.has_batch) writer.writeMessage(4, this.batch, () => this.batch.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -144,13 +147,13 @@ export class SchedulingContextEnv extends pb_1.Message { } } get key() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set key(value: string) { pb_1.Message.setField(this, 1, value); } get value() { - return pb_1.Message.getField(this, 2) as string; + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; } set value(value: string) { pb_1.Message.setField(this, 2, value); @@ -185,9 +188,9 @@ export class SchedulingContextEnv extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.key === "string" && this.key.length) + if (this.key.length) writer.writeString(1, this.key); - if (typeof this.value === "string" && this.value.length) + if (this.value.length) writer.writeString(2, this.value); if (!w) return writer.getResultBuffer(); @@ -238,13 +241,13 @@ export class SchedulingContextBatch extends pb_1.Message { } } get limit() { - return pb_1.Message.getField(this, 1) as number; + return pb_1.Message.getFieldWithDefault(this, 1, 0) as number; } set limit(value: number) { pb_1.Message.setField(this, 1, value); } get deadline() { - return pb_1.Message.getField(this, 2) as number; + return pb_1.Message.getFieldWithDefault(this, 2, 0) as number; } set deadline(value: number) { pb_1.Message.setField(this, 2, value); @@ -255,6 +258,9 @@ export class SchedulingContextBatch extends pb_1.Message { set process(value: SchedulingContextBatchProcess) { pb_1.Message.setWrapperField(this, 3, value); } + get has_process() { + return pb_1.Message.getField(this, 3) != null; + } static fromObject(data: { limit?: number; deadline?: number; @@ -293,11 +299,11 @@ export class SchedulingContextBatch extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.limit !== undefined) + if (this.limit != 0) writer.writeUint64(1, this.limit); - if (this.deadline !== undefined) + if (this.deadline != 0) writer.writeUint64(2, this.deadline); - if (this.process !== undefined) + if (this.has_process) writer.writeMessage(3, this.process, () => this.process.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -343,7 +349,7 @@ export class SchedulingContextBatchProcess extends pb_1.Message { } } get id() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set id(value: string) { pb_1.Message.setField(this, 1, value); @@ -370,7 +376,7 @@ export class SchedulingContextBatchProcess extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.id === "string" && this.id.length) + if (this.id.length) writer.writeString(1, this.id); if (!w) return writer.getResultBuffer(); @@ -422,19 +428,19 @@ export class Target extends pb_1.Message { } } get id() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set id(value: string) { pb_1.Message.setField(this, 1, value); } get cwd() { - return pb_1.Message.getField(this, 2) as string; + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; } set cwd(value: string) { pb_1.Message.setField(this, 2, value); } get handler() { - return pb_1.Message.getField(this, 3) as string; + return pb_1.Message.getFieldWithDefault(this, 3, "") as string; } set handler(value: string) { pb_1.Message.setField(this, 3, value); @@ -445,6 +451,9 @@ export class Target extends pb_1.Message { set context(value: SchedulingContext) { pb_1.Message.setWrapperField(this, 4, value); } + get has_context() { + return pb_1.Message.getField(this, 4) != null; + } static fromObject(data: { id?: string; cwd?: string; @@ -491,13 +500,13 @@ export class Target extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.id === "string" && this.id.length) + if (this.id.length) writer.writeString(1, this.id); - if (typeof this.cwd === "string" && this.cwd.length) + if (this.cwd.length) writer.writeString(2, this.cwd); - if (typeof this.handler === "string" && this.handler.length) + if (this.handler.length) writer.writeString(3, this.handler); - if (this.context !== undefined) + if (this.has_context) writer.writeMessage(4, this.context, () => this.context.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -554,13 +563,13 @@ export class Event extends pb_1.Message { } } get id() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set id(value: string) { pb_1.Message.setField(this, 1, value); } get type() { - return pb_1.Message.getField(this, 2) as Type; + return pb_1.Message.getFieldWithDefault(this, 2, Type.HTTP) as Type; } set type(value: Type) { pb_1.Message.setField(this, 2, value); @@ -571,6 +580,9 @@ export class Event extends pb_1.Message { set target(value: Target) { pb_1.Message.setWrapperField(this, 3, value); } + get has_target() { + return pb_1.Message.getField(this, 3) != null; + } static fromObject(data: { id?: string; type?: Type; @@ -609,11 +621,11 @@ export class Event extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.id === "string" && this.id.length) + if (this.id.length) writer.writeString(1, this.id); - if (this.type !== undefined) + if (this.type != Type.HTTP) writer.writeEnum(2, this.type); - if (this.target !== undefined) + if (this.has_target) writer.writeMessage(3, this.target, () => this.target.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -659,7 +671,7 @@ export class Pop extends pb_1.Message { } } get id() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set id(value: string) { pb_1.Message.setField(this, 1, value); @@ -686,7 +698,7 @@ export class Pop extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.id === "string" && this.id.length) + if (this.id.length) writer.writeString(1, this.id); if (!w) return writer.getResultBuffer(); @@ -726,7 +738,7 @@ export class Complete extends pb_1.Message { } } get id() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set id(value: string) { pb_1.Message.setField(this, 1, value); @@ -753,7 +765,7 @@ export class Complete extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.id === "string" && this.id.length) + if (this.id.length) writer.writeString(1, this.id); if (!w) return writer.getResultBuffer(); diff --git a/test/no_namespace/no_namespace.ts b/test/no_namespace/no_namespace.ts index 7c891988..a16177b5 100644 --- a/test/no_namespace/no_namespace.ts +++ b/test/no_namespace/no_namespace.ts @@ -9,9 +9,9 @@ import * as pb_1 from "google-protobuf"; export class NoNamespace extends pb_1.Message { #one_of_decls: number[][] = []; constructor(data?: any[] | { - label?: dependency_1.Target; + label?: dependency_1.eventTarget; other_fields?: dependency_2.MessageFields; - batch_fields?: dependency_1.SchedulingContextBatch; + batch_fields?: dependency_1.eventSchedulingContextBatch; }) { super(); pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls); @@ -28,45 +28,54 @@ export class NoNamespace extends pb_1.Message { } } get label() { - return pb_1.Message.getWrapperField(this, dependency_1.Target, 1) as dependency_1.Target; + return pb_1.Message.getWrapperField(this, dependency_1.eventTarget, 1) as dependency_1.eventTarget; } - set label(value: dependency_1.Target) { + set label(value: dependency_1.eventTarget) { pb_1.Message.setWrapperField(this, 1, value); } + get has_label() { + return pb_1.Message.getField(this, 1) != null; + } get other_fields() { return pb_1.Message.getWrapperField(this, dependency_2.MessageFields, 2) as dependency_2.MessageFields; } set other_fields(value: dependency_2.MessageFields) { pb_1.Message.setWrapperField(this, 2, value); } + get has_other_fields() { + return pb_1.Message.getField(this, 2) != null; + } get batch_fields() { - return pb_1.Message.getWrapperField(this, dependency_1.SchedulingContextBatch, 3) as dependency_1.SchedulingContextBatch; + return pb_1.Message.getWrapperField(this, dependency_1.eventSchedulingContextBatch, 3) as dependency_1.eventSchedulingContextBatch; } - set batch_fields(value: dependency_1.SchedulingContextBatch) { + set batch_fields(value: dependency_1.eventSchedulingContextBatch) { pb_1.Message.setWrapperField(this, 3, value); } + get has_batch_fields() { + return pb_1.Message.getField(this, 3) != null; + } static fromObject(data: { - label?: ReturnType; + label?: ReturnType; other_fields?: ReturnType; - batch_fields?: ReturnType; + batch_fields?: ReturnType; }): NoNamespace { const message = new NoNamespace({}); if (data.label != null) { - message.label = dependency_1.Target.fromObject(data.label); + message.label = dependency_1.eventTarget.fromObject(data.label); } if (data.other_fields != null) { message.other_fields = dependency_2.MessageFields.fromObject(data.other_fields); } if (data.batch_fields != null) { - message.batch_fields = dependency_1.SchedulingContextBatch.fromObject(data.batch_fields); + message.batch_fields = dependency_1.eventSchedulingContextBatch.fromObject(data.batch_fields); } return message; } toObject() { const data: { - label?: ReturnType; + label?: ReturnType; other_fields?: ReturnType; - batch_fields?: ReturnType; + batch_fields?: ReturnType; } = {}; if (this.label != null) { data.label = this.label.toObject(); @@ -83,11 +92,11 @@ export class NoNamespace extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.label !== undefined) + if (this.has_label) writer.writeMessage(1, this.label, () => this.label.serialize(writer)); - if (this.other_fields !== undefined) + if (this.has_other_fields) writer.writeMessage(2, this.other_fields, () => this.other_fields.serialize(writer)); - if (this.batch_fields !== undefined) + if (this.has_batch_fields) writer.writeMessage(3, this.batch_fields, () => this.batch_fields.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -99,13 +108,13 @@ export class NoNamespace extends pb_1.Message { break; switch (reader.getFieldNumber()) { case 1: - reader.readMessage(message.label, () => message.label = dependency_1.Target.deserialize(reader)); + reader.readMessage(message.label, () => message.label = dependency_1.eventTarget.deserialize(reader)); break; case 2: reader.readMessage(message.other_fields, () => message.other_fields = dependency_2.MessageFields.deserialize(reader)); break; case 3: - reader.readMessage(message.batch_fields, () => message.batch_fields = dependency_1.SchedulingContextBatch.deserialize(reader)); + reader.readMessage(message.batch_fields, () => message.batch_fields = dependency_1.eventSchedulingContextBatch.deserialize(reader)); break; default: reader.skipField(); } diff --git a/test/oneof.spec.ts b/test/oneof.spec.ts index 9cf3260c..46ea997e 100644 --- a/test/oneof.spec.ts +++ b/test/oneof.spec.ts @@ -9,7 +9,9 @@ describe("oneof", () => { ) expect(oneOf.toObject()).toEqual({ + age: "", date_of_birth: "21.01.1999", + nickname: "", realname: "Walter White" }); expect(oneOf.age_or_dateofbirth).toBe("date_of_birth"); @@ -22,6 +24,7 @@ describe("oneof", () => { oneOf.age = "22"; expect(oneOf.toObject()).toEqual({ age: "22", + date_of_birth: "", nickname: "thesayyn" }); expect(oneOf.age_or_dateofbirth).toBe("age"); diff --git a/test/oneof.ts b/test/oneof.ts index d59e9e8e..5a19b6d0 100644 --- a/test/oneof.ts +++ b/test/oneof.ts @@ -37,29 +37,41 @@ export class OneOfWithoutAnyOtherFields extends pb_1.Message { } } get nickname() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set nickname(value: string) { pb_1.Message.setOneofField(this, 1, this.#one_of_decls[0], value); } + get has_nickname() { + return pb_1.Message.getField(this, 1) != null; + } get realname() { - return pb_1.Message.getField(this, 2) as string; + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; } set realname(value: string) { pb_1.Message.setOneofField(this, 2, this.#one_of_decls[0], value); } + get has_realname() { + return pb_1.Message.getField(this, 2) != null; + } get age() { - return pb_1.Message.getField(this, 4) as string; + return pb_1.Message.getFieldWithDefault(this, 4, "") as string; } set age(value: string) { pb_1.Message.setOneofField(this, 4, this.#one_of_decls[1], value); } + get has_age() { + return pb_1.Message.getField(this, 4) != null; + } get date_of_birth() { - return pb_1.Message.getField(this, 3) as string; + return pb_1.Message.getFieldWithDefault(this, 3, "") as string; } set date_of_birth(value: string) { pb_1.Message.setOneofField(this, 3, this.#one_of_decls[1], value); } + get has_date_of_birth() { + return pb_1.Message.getField(this, 3) != null; + } get nickname_or_realname() { const cases: { [index: number]: "none" | "nickname" | "realname"; @@ -126,13 +138,13 @@ export class OneOfWithoutAnyOtherFields extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.nickname === "string" && this.nickname.length) + if (this.has_nickname) writer.writeString(1, this.nickname); - if (typeof this.realname === "string" && this.realname.length) + if (this.has_realname) writer.writeString(2, this.realname); - if (typeof this.age === "string" && this.age.length) + if (this.has_age) writer.writeString(4, this.age); - if (typeof this.date_of_birth === "string" && this.date_of_birth.length) + if (this.has_date_of_birth) writer.writeString(3, this.date_of_birth); if (!w) return writer.getResultBuffer(); @@ -193,23 +205,29 @@ export class OneOf extends pb_1.Message { } } get nickname() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set nickname(value: string) { pb_1.Message.setField(this, 1, value); } get date_of_birth() { - return pb_1.Message.getField(this, 3) as string; + return pb_1.Message.getFieldWithDefault(this, 3, "") as string; } set date_of_birth(value: string) { pb_1.Message.setOneofField(this, 3, this.#one_of_decls[0], value); } + get has_date_of_birth() { + return pb_1.Message.getField(this, 3) != null; + } get age() { - return pb_1.Message.getField(this, 4) as string; + return pb_1.Message.getFieldWithDefault(this, 4, "") as string; } set age(value: string) { pb_1.Message.setOneofField(this, 4, this.#one_of_decls[0], value); } + get has_age() { + return pb_1.Message.getField(this, 4) != null; + } get age_or_dateofbirth() { const cases: { [index: number]: "none" | "date_of_birth" | "age"; @@ -258,11 +276,11 @@ export class OneOf extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.nickname === "string" && this.nickname.length) + if (this.nickname.length) writer.writeString(1, this.nickname); - if (typeof this.date_of_birth === "string" && this.date_of_birth.length) + if (this.has_date_of_birth) writer.writeString(3, this.date_of_birth); - if (typeof this.age === "string" && this.age.length) + if (this.has_age) writer.writeString(4, this.age); if (!w) return writer.getResultBuffer(); diff --git a/test/optional/optional_proto2.ts b/test/optional/optional_proto2.ts index df6e28aa..69d5895c 100644 --- a/test/optional/optional_proto2.ts +++ b/test/optional/optional_proto2.ts @@ -20,17 +20,20 @@ export class NotOptional extends pb_1.Message { } } get should_be_required() { - return pb_1.Message.getField(this, 1) as string[]; + return pb_1.Message.getFieldWithDefault(this, 1, []) as string[]; } set should_be_required(value: string[]) { pb_1.Message.setField(this, 1, value); } get should_be_optional() { - return pb_1.Message.getField(this, 2) as string; + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; } set should_be_optional(value: string) { pb_1.Message.setField(this, 2, value); } + get has_should_be_optional() { + return pb_1.Message.getField(this, 2) != null; + } static fromObject(data: { should_be_required: string[]; should_be_optional?: string; @@ -59,9 +62,9 @@ export class NotOptional extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.should_be_required !== undefined) + if (this.should_be_required.length) writer.writeRepeatedString(1, this.should_be_required); - if (typeof this.should_be_optional === "string" && this.should_be_optional.length) + if (this.has_should_be_optional && this.should_be_optional.length) writer.writeString(2, this.should_be_optional); if (!w) return writer.getResultBuffer(); diff --git a/test/optional/optional_proto3.ts b/test/optional/optional_proto3.ts index dd707a4d..559607d4 100644 --- a/test/optional/optional_proto3.ts +++ b/test/optional/optional_proto3.ts @@ -23,17 +23,20 @@ export class Optional extends pb_1.Message { } } get should_not_be_required() { - return pb_1.Message.getField(this, 1) as string[]; + return pb_1.Message.getFieldWithDefault(this, 1, []) as string[]; } set should_not_be_required(value: string[]) { pb_1.Message.setField(this, 1, value); } get proto3_optional() { - return pb_1.Message.getField(this, 2) as string; + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; } set proto3_optional(value: string) { pb_1.Message.setOneofField(this, 2, this.#one_of_decls[0], value); } + get has_proto3_optional() { + return pb_1.Message.getField(this, 2) != null; + } get _proto3_optional() { const cases: { [index: number]: "none" | "proto3_optional"; @@ -73,9 +76,9 @@ export class Optional extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.should_not_be_required !== undefined) + if (this.should_not_be_required.length) writer.writeRepeatedString(1, this.should_not_be_required); - if (typeof this.proto3_optional === "string" && this.proto3_optional.length) + if (this.has_proto3_optional) writer.writeString(2, this.proto3_optional); if (!w) return writer.getResultBuffer(); diff --git a/test/packagedirective.ts b/test/packagedirective.ts index 80b86035..97c2fdd3 100644 --- a/test/packagedirective.ts +++ b/test/packagedirective.ts @@ -19,7 +19,7 @@ export namespace pkg.mycompany { } } get field() { - return pb_1.Message.getField(this, 1) as string[]; + return pb_1.Message.getFieldWithDefault(this, 1, []) as string[]; } set field(value: string[]) { pb_1.Message.setField(this, 1, value); @@ -46,7 +46,7 @@ export namespace pkg.mycompany { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.field !== undefined) + if (this.field.length) writer.writeRepeatedString(1, this.field); if (!w) return writer.getResultBuffer(); diff --git a/test/presence/BUILD.bazel b/test/presence/BUILD.bazel new file mode 100644 index 00000000..e5cc34c8 --- /dev/null +++ b/test/presence/BUILD.bazel @@ -0,0 +1,39 @@ +load("//tools:diff_and_update.bzl", "diff_and_update") +load("@npm//@bazel/jasmine:index.bzl", "jasmine_node_test") +load("@npm//@bazel/typescript:index.bzl", "ts_project") + + +diff_and_update( + name = "diff_presence", + srcs = [ + "//test/_/presence:presence_proto2.ts", + "//test/_/presence:presence_proto3.ts", + "//test/_/presence:presence_common.ts", + ], + checked = ["presence_proto2.ts", "presence_proto3.ts", "presence_common.ts"] +) + +ts_project( + name = "presence", + srcs = glob(["*.ts"]), + tsconfig = { + "compilerOptions": { + "target": "ES2020", + "module": "CommonJS" + }, + }, + deps = [ + "@npm//@types/jasmine", + "@npm//@types/node", + "@npm//@types/google-protobuf", + "@npm//google-protobuf", + "@npm//@grpc/grpc-js", + ], +) + +jasmine_node_test( + name = "test", + deps = [ + ":presence", + ], +) \ No newline at end of file diff --git a/test/presence/presence.spec.ts b/test/presence/presence.spec.ts new file mode 100644 index 00000000..6a7125b1 --- /dev/null +++ b/test/presence/presence.spec.ts @@ -0,0 +1,80 @@ +import { PresenceMessageV2 } from "./presence_proto2"; +import { PresenceMessageV3 } from "./presence_proto3"; + +describe("defaults", () => { + + it("should have has_ fields (v2)", () => { + const presence = new PresenceMessageV2(); + + expect(typeof presence["has_enum"]).toBe("boolean") + expect(typeof presence["has_int32"]).toBe("boolean") + expect(typeof presence["has_message"]).toBe("boolean") + expect(typeof presence["has_oneof"]).toBe("boolean") + expect(typeof presence["has_string"]).toBe("boolean") + + expect(typeof presence["has_opt_enum"]).toBe("boolean") + expect(typeof presence["has_opt_int32"]).toBe("boolean") + expect(typeof presence["has_opt_message"]).toBe("boolean") + expect(typeof presence["has_opt_oneof"]).toBe("boolean") + expect(typeof presence["has_opt_string"]).toBe("boolean") + + expect(typeof presence["has_repeated"]).toBe("undefined") + expect(typeof presence["has_map"]).toBe("undefined") + }); + + it("should have has_ fields (v3)", () => { + const presence = new PresenceMessageV3(); + + expect(typeof presence["has_enum"]).toBe("undefined") + expect(typeof presence["has_int32"]).toBe("undefined") + expect(typeof presence["has_message"]).toBe("boolean") + expect(typeof presence["has_oneof"]).toBe("boolean") + expect(typeof presence["has_string"]).toBe("undefined") + + expect(typeof presence["has_opt_enum"]).toBe("boolean") + expect(typeof presence["has_opt_int32"]).toBe("boolean") + expect(typeof presence["has_opt_message"]).toBe("boolean") + expect(typeof presence["has_opt_oneof"]).toBe("boolean") + expect(typeof presence["has_opt_string"]).toBe("boolean") + + expect(typeof presence["has_repeated"]).toBe("undefined") + expect(typeof presence["has_map"]).toBe("undefined") + }); + + it("should have presence", () => { + const presence = new PresenceMessageV3(); + presence.opt_int32 = 10; + + expect(presence.opt_int32).toBe(10); + expect(presence.has_opt_int32).toBeTrue(); + expect(presence.has_opt_message).toBeFalse(); + }); + + it("should make presence field false on assignment of undefined", () => { + const presence = new PresenceMessageV3(); + presence.opt_int32 = 10; + presence.opt_int32 = undefined; + + expect(presence.opt_int32).toBe(0); + expect(presence.has_opt_int32).toBeFalse(); + expect(presence.has_opt_message).toBeFalse(); + }); + + it("should serialize optional default without presence", () => { + const presence = new PresenceMessageV3(); + const transferredPresence = PresenceMessageV3.deserialize(presence.serialize()); + + expect(transferredPresence.opt_int32).toBe(0); + expect(transferredPresence.has_opt_int32).toBeFalse(); + }); + + it("should serialize optional default with presence", () => { + const presence = new PresenceMessageV3(); + presence.opt_int32 = 0 + + const transferredPresence = PresenceMessageV3.deserialize(presence.serialize()); + + expect(transferredPresence.opt_int32).toBe(0); + expect(transferredPresence.has_opt_int32).toBeTrue(); + }); +}) diff --git a/test/presence/presence_common.ts b/test/presence/presence_common.ts new file mode 100755 index 00000000..ffa09c4f --- /dev/null +++ b/test/presence/presence_common.ts @@ -0,0 +1,187 @@ +/** + * Generated by the protoc-gen-ts. DO NOT EDIT! + * compiler version: 3.19.1 + * source: test/_/presence/presence_common.proto + * git: https://github.com/thesayyn/protoc-gen-ts */ +import * as pb_1 from "google-protobuf"; +export enum PresenceCommonEnum { + ZERO = 0, + ONE = 1, + TWO = 2 +} +export class PresenceCommonMessage extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + message?: string; + }) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + if ("message" in data && data.message != undefined) { + this.message = data.message; + } + } + } + get message() { + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; + } + set message(value: string) { + pb_1.Message.setField(this, 1, value); + } + static fromObject(data: { + message?: string; + }): PresenceCommonMessage { + const message = new PresenceCommonMessage({}); + if (data.message != null) { + message.message = data.message; + } + return message; + } + toObject() { + const data: { + message?: string; + } = {}; + if (this.message != null) { + data.message = this.message; + } + return data; + } + serialize(): Uint8Array; + serialize(w: pb_1.BinaryWriter): void; + serialize(w?: pb_1.BinaryWriter): Uint8Array | void { + const writer = w || new pb_1.BinaryWriter(); + if (this.message.length) + writer.writeString(1, this.message); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): PresenceCommonMessage { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new PresenceCommonMessage(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + message.message = reader.readString(); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): PresenceCommonMessage { + return PresenceCommonMessage.deserialize(bytes); + } +} +export class PresenceCommonMessageOneOf extends pb_1.Message { + #one_of_decls: number[][] = [[1, 2]]; + constructor(data?: any[] | ({} & (({ + int32?: number; + message?: never; + } | { + int32?: never; + message?: PresenceCommonMessage; + })))) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + if ("int32" in data && data.int32 != undefined) { + this.int32 = data.int32; + } + if ("message" in data && data.message != undefined) { + this.message = data.message; + } + } + } + get int32() { + return pb_1.Message.getFieldWithDefault(this, 1, 0) as number; + } + set int32(value: number) { + pb_1.Message.setOneofField(this, 1, this.#one_of_decls[0], value); + } + get has_int32() { + return pb_1.Message.getField(this, 1) != null; + } + get message() { + return pb_1.Message.getWrapperField(this, PresenceCommonMessage, 2) as PresenceCommonMessage; + } + set message(value: PresenceCommonMessage) { + pb_1.Message.setOneofWrapperField(this, 2, this.#one_of_decls[0], value); + } + get has_message() { + return pb_1.Message.getField(this, 2) != null; + } + get oneof() { + const cases: { + [index: number]: "none" | "int32" | "message"; + } = { + 0: "none", + 1: "int32", + 2: "message" + }; + return cases[pb_1.Message.computeOneofCase(this, [1, 2])]; + } + static fromObject(data: { + int32?: number; + message?: ReturnType; + }): PresenceCommonMessageOneOf { + const message = new PresenceCommonMessageOneOf({}); + if (data.int32 != null) { + message.int32 = data.int32; + } + if (data.message != null) { + message.message = PresenceCommonMessage.fromObject(data.message); + } + return message; + } + toObject() { + const data: { + int32?: number; + message?: ReturnType; + } = {}; + if (this.int32 != null) { + data.int32 = this.int32; + } + if (this.message != null) { + data.message = this.message.toObject(); + } + return data; + } + serialize(): Uint8Array; + serialize(w: pb_1.BinaryWriter): void; + serialize(w?: pb_1.BinaryWriter): Uint8Array | void { + const writer = w || new pb_1.BinaryWriter(); + if (this.has_int32) + writer.writeInt32(1, this.int32); + if (this.has_message) + writer.writeMessage(2, this.message, () => this.message.serialize(writer)); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): PresenceCommonMessageOneOf { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new PresenceCommonMessageOneOf(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + message.int32 = reader.readInt32(); + break; + case 2: + reader.readMessage(message.message, () => message.message = PresenceCommonMessage.deserialize(reader)); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): PresenceCommonMessageOneOf { + return PresenceCommonMessageOneOf.deserialize(bytes); + } +} diff --git a/test/presence/presence_proto2.ts b/test/presence/presence_proto2.ts new file mode 100755 index 00000000..b2c8aef8 --- /dev/null +++ b/test/presence/presence_proto2.ts @@ -0,0 +1,339 @@ +/** + * Generated by the protoc-gen-ts. DO NOT EDIT! + * compiler version: 3.19.1 + * source: test/_/presence/presence_proto2.proto + * git: https://github.com/thesayyn/protoc-gen-ts */ +import * as dependency_1 from "./presence_common"; +import * as pb_1 from "google-protobuf"; +export class PresenceMessageV2 extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + int32: number; + enum: dependency_1.PresenceCommonEnum; + string: string; + message: dependency_1.PresenceCommonMessage; + oneof: dependency_1.PresenceCommonMessageOneOf; + opt_int32?: number; + opt_enum?: dependency_1.PresenceCommonEnum; + opt_string?: string; + opt_message?: dependency_1.PresenceCommonMessage; + opt_oneof?: dependency_1.PresenceCommonMessageOneOf; + repeated: number[]; + map: Map; + }) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [11], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + this.int32 = data.int32; + this.enum = data.enum; + this.string = data.string; + this.message = data.message; + this.oneof = data.oneof; + if ("opt_int32" in data && data.opt_int32 != undefined) { + this.opt_int32 = data.opt_int32; + } + if ("opt_enum" in data && data.opt_enum != undefined) { + this.opt_enum = data.opt_enum; + } + if ("opt_string" in data && data.opt_string != undefined) { + this.opt_string = data.opt_string; + } + if ("opt_message" in data && data.opt_message != undefined) { + this.opt_message = data.opt_message; + } + if ("opt_oneof" in data && data.opt_oneof != undefined) { + this.opt_oneof = data.opt_oneof; + } + this.repeated = data.repeated; + this.map = data.map; + } + if (!this.map) + this.map = new Map(); + } + get int32() { + return pb_1.Message.getField(this, 1) as number; + } + set int32(value: number) { + pb_1.Message.setField(this, 1, value); + } + get has_int32() { + return pb_1.Message.getField(this, 1) != null; + } + get enum() { + return pb_1.Message.getField(this, 2) as dependency_1.PresenceCommonEnum; + } + set enum(value: dependency_1.PresenceCommonEnum) { + pb_1.Message.setField(this, 2, value); + } + get has_enum() { + return pb_1.Message.getField(this, 2) != null; + } + get string() { + return pb_1.Message.getField(this, 3) as string; + } + set string(value: string) { + pb_1.Message.setField(this, 3, value); + } + get has_string() { + return pb_1.Message.getField(this, 3) != null; + } + get message() { + return pb_1.Message.getWrapperField(this, dependency_1.PresenceCommonMessage, 4) as dependency_1.PresenceCommonMessage; + } + set message(value: dependency_1.PresenceCommonMessage) { + pb_1.Message.setWrapperField(this, 4, value); + } + get has_message() { + return pb_1.Message.getField(this, 4) != null; + } + get oneof() { + return pb_1.Message.getWrapperField(this, dependency_1.PresenceCommonMessageOneOf, 5) as dependency_1.PresenceCommonMessageOneOf; + } + set oneof(value: dependency_1.PresenceCommonMessageOneOf) { + pb_1.Message.setWrapperField(this, 5, value); + } + get has_oneof() { + return pb_1.Message.getField(this, 5) != null; + } + get opt_int32() { + return pb_1.Message.getFieldWithDefault(this, 6, 0) as number; + } + set opt_int32(value: number) { + pb_1.Message.setField(this, 6, value); + } + get has_opt_int32() { + return pb_1.Message.getField(this, 6) != null; + } + get opt_enum() { + return pb_1.Message.getFieldWithDefault(this, 7, dependency_1.PresenceCommonEnum.ZERO) as dependency_1.PresenceCommonEnum; + } + set opt_enum(value: dependency_1.PresenceCommonEnum) { + pb_1.Message.setField(this, 7, value); + } + get has_opt_enum() { + return pb_1.Message.getField(this, 7) != null; + } + get opt_string() { + return pb_1.Message.getFieldWithDefault(this, 8, "") as string; + } + set opt_string(value: string) { + pb_1.Message.setField(this, 8, value); + } + get has_opt_string() { + return pb_1.Message.getField(this, 8) != null; + } + get opt_message() { + return pb_1.Message.getWrapperField(this, dependency_1.PresenceCommonMessage, 9) as dependency_1.PresenceCommonMessage; + } + set opt_message(value: dependency_1.PresenceCommonMessage) { + pb_1.Message.setWrapperField(this, 9, value); + } + get has_opt_message() { + return pb_1.Message.getField(this, 9) != null; + } + get opt_oneof() { + return pb_1.Message.getWrapperField(this, dependency_1.PresenceCommonMessageOneOf, 10) as dependency_1.PresenceCommonMessageOneOf; + } + set opt_oneof(value: dependency_1.PresenceCommonMessageOneOf) { + pb_1.Message.setWrapperField(this, 10, value); + } + get has_opt_oneof() { + return pb_1.Message.getField(this, 10) != null; + } + get repeated() { + return pb_1.Message.getFieldWithDefault(this, 11, []) as number[]; + } + set repeated(value: number[]) { + pb_1.Message.setField(this, 11, value); + } + get map() { + return pb_1.Message.getField(this, 12) as any as Map; + } + set map(value: Map) { + pb_1.Message.setField(this, 12, value as any); + } + static fromObject(data: { + int32?: number; + enum?: dependency_1.PresenceCommonEnum; + string?: string; + message?: ReturnType; + oneof?: ReturnType; + opt_int32?: number; + opt_enum?: dependency_1.PresenceCommonEnum; + opt_string?: string; + opt_message?: ReturnType; + opt_oneof?: ReturnType; + repeated: number[]; + map?: { + [key: string]: string; + }; + }): PresenceMessageV2 { + const message = new PresenceMessageV2({ + int32: data.int32, + enum: data.enum, + string: data.string, + message: dependency_1.PresenceCommonMessage.fromObject(data.message), + oneof: dependency_1.PresenceCommonMessageOneOf.fromObject(data.oneof), + repeated: data.repeated, + map: new Map(Object.entries(data.map)) + }); + if (data.opt_int32 != null) { + message.opt_int32 = data.opt_int32; + } + if (data.opt_enum != null) { + message.opt_enum = data.opt_enum; + } + if (data.opt_string != null) { + message.opt_string = data.opt_string; + } + if (data.opt_message != null) { + message.opt_message = dependency_1.PresenceCommonMessage.fromObject(data.opt_message); + } + if (data.opt_oneof != null) { + message.opt_oneof = dependency_1.PresenceCommonMessageOneOf.fromObject(data.opt_oneof); + } + return message; + } + toObject() { + const data: { + int32?: number; + enum?: dependency_1.PresenceCommonEnum; + string?: string; + message?: ReturnType; + oneof?: ReturnType; + opt_int32?: number; + opt_enum?: dependency_1.PresenceCommonEnum; + opt_string?: string; + opt_message?: ReturnType; + opt_oneof?: ReturnType; + repeated: number[]; + map?: { + [key: string]: string; + }; + } = { + repeated: this.repeated + }; + if (this.int32 != null) { + data.int32 = this.int32; + } + if (this.enum != null) { + data.enum = this.enum; + } + if (this.string != null) { + data.string = this.string; + } + if (this.message != null) { + data.message = this.message.toObject(); + } + if (this.oneof != null) { + data.oneof = this.oneof.toObject(); + } + if (this.opt_int32 != null) { + data.opt_int32 = this.opt_int32; + } + if (this.opt_enum != null) { + data.opt_enum = this.opt_enum; + } + if (this.opt_string != null) { + data.opt_string = this.opt_string; + } + if (this.opt_message != null) { + data.opt_message = this.opt_message.toObject(); + } + if (this.opt_oneof != null) { + data.opt_oneof = this.opt_oneof.toObject(); + } + if (this.map.size > 0) { + data.map = Object.fromEntries(this.map); + } + return data; + } + serialize(): Uint8Array; + serialize(w: pb_1.BinaryWriter): void; + serialize(w?: pb_1.BinaryWriter): Uint8Array | void { + const writer = w || new pb_1.BinaryWriter(); + if (this.has_int32) + writer.writeInt32(1, this.int32); + if (this.has_enum) + writer.writeEnum(2, this.enum); + if (this.has_string && this.string.length) + writer.writeString(3, this.string); + if (this.has_message) + writer.writeMessage(4, this.message, () => this.message.serialize(writer)); + if (this.has_oneof) + writer.writeMessage(5, this.oneof, () => this.oneof.serialize(writer)); + if (this.has_opt_int32) + writer.writeInt32(6, this.opt_int32); + if (this.has_opt_enum) + writer.writeEnum(7, this.opt_enum); + if (this.has_opt_string && this.opt_string.length) + writer.writeString(8, this.opt_string); + if (this.has_opt_message) + writer.writeMessage(9, this.opt_message, () => this.opt_message.serialize(writer)); + if (this.has_opt_oneof) + writer.writeMessage(10, this.opt_oneof, () => this.opt_oneof.serialize(writer)); + if (this.repeated.length) + writer.writeRepeatedInt32(11, this.repeated); + for (const [key, value] of this.map) { + writer.writeMessage(12, this.map, () => { + writer.writeString(1, key); + writer.writeString(2, value); + }); + } + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): PresenceMessageV2 { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new PresenceMessageV2(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + message.int32 = reader.readInt32(); + break; + case 2: + message.enum = reader.readEnum(); + break; + case 3: + message.string = reader.readString(); + break; + case 4: + reader.readMessage(message.message, () => message.message = dependency_1.PresenceCommonMessage.deserialize(reader)); + break; + case 5: + reader.readMessage(message.oneof, () => message.oneof = dependency_1.PresenceCommonMessageOneOf.deserialize(reader)); + break; + case 6: + message.opt_int32 = reader.readInt32(); + break; + case 7: + message.opt_enum = reader.readEnum(); + break; + case 8: + message.opt_string = reader.readString(); + break; + case 9: + reader.readMessage(message.opt_message, () => message.opt_message = dependency_1.PresenceCommonMessage.deserialize(reader)); + break; + case 10: + reader.readMessage(message.opt_oneof, () => message.opt_oneof = dependency_1.PresenceCommonMessageOneOf.deserialize(reader)); + break; + case 11: + pb_1.Message.addToRepeatedField(message, 11, reader.readInt32()); + break; + case 12: + reader.readMessage(message, () => pb_1.Map.deserializeBinary(message.map as any, reader, reader.readString, reader.readString)); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): PresenceMessageV2 { + return PresenceMessageV2.deserialize(bytes); + } +} diff --git a/test/presence/presence_proto3.ts b/test/presence/presence_proto3.ts new file mode 100755 index 00000000..f9794463 --- /dev/null +++ b/test/presence/presence_proto3.ts @@ -0,0 +1,408 @@ +/** + * Generated by the protoc-gen-ts. DO NOT EDIT! + * compiler version: 3.19.1 + * source: test/_/presence/presence_proto3.proto + * git: https://github.com/thesayyn/protoc-gen-ts */ +import * as dependency_1 from "./presence_common"; +import * as pb_1 from "google-protobuf"; +export class PresenceMessageV3 extends pb_1.Message { + #one_of_decls: number[][] = [[6], [7], [8], [9], [10]]; + constructor(data?: any[] | ({ + int32?: number; + enum?: dependency_1.PresenceCommonEnum; + string?: string; + message?: dependency_1.PresenceCommonMessage; + oneof?: dependency_1.PresenceCommonMessageOneOf; + repeated?: number[]; + map?: Map; + } & (({ + opt_int32?: number; + }) | ({ + opt_enum?: dependency_1.PresenceCommonEnum; + }) | ({ + opt_string?: string; + }) | ({ + opt_message?: dependency_1.PresenceCommonMessage; + }) | ({ + opt_oneof?: dependency_1.PresenceCommonMessageOneOf; + })))) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [11], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + if ("int32" in data && data.int32 != undefined) { + this.int32 = data.int32; + } + if ("enum" in data && data.enum != undefined) { + this.enum = data.enum; + } + if ("string" in data && data.string != undefined) { + this.string = data.string; + } + if ("message" in data && data.message != undefined) { + this.message = data.message; + } + if ("oneof" in data && data.oneof != undefined) { + this.oneof = data.oneof; + } + if ("opt_int32" in data && data.opt_int32 != undefined) { + this.opt_int32 = data.opt_int32; + } + if ("opt_enum" in data && data.opt_enum != undefined) { + this.opt_enum = data.opt_enum; + } + if ("opt_string" in data && data.opt_string != undefined) { + this.opt_string = data.opt_string; + } + if ("opt_message" in data && data.opt_message != undefined) { + this.opt_message = data.opt_message; + } + if ("opt_oneof" in data && data.opt_oneof != undefined) { + this.opt_oneof = data.opt_oneof; + } + if ("repeated" in data && data.repeated != undefined) { + this.repeated = data.repeated; + } + if ("map" in data && data.map != undefined) { + this.map = data.map; + } + } + if (!this.map) + this.map = new Map(); + } + get int32() { + return pb_1.Message.getFieldWithDefault(this, 1, 0) as number; + } + set int32(value: number) { + pb_1.Message.setField(this, 1, value); + } + get enum() { + return pb_1.Message.getFieldWithDefault(this, 2, dependency_1.PresenceCommonEnum.ZERO) as dependency_1.PresenceCommonEnum; + } + set enum(value: dependency_1.PresenceCommonEnum) { + pb_1.Message.setField(this, 2, value); + } + get string() { + return pb_1.Message.getFieldWithDefault(this, 3, "") as string; + } + set string(value: string) { + pb_1.Message.setField(this, 3, value); + } + get message() { + return pb_1.Message.getWrapperField(this, dependency_1.PresenceCommonMessage, 4) as dependency_1.PresenceCommonMessage; + } + set message(value: dependency_1.PresenceCommonMessage) { + pb_1.Message.setWrapperField(this, 4, value); + } + get has_message() { + return pb_1.Message.getField(this, 4) != null; + } + get oneof() { + return pb_1.Message.getWrapperField(this, dependency_1.PresenceCommonMessageOneOf, 5) as dependency_1.PresenceCommonMessageOneOf; + } + set oneof(value: dependency_1.PresenceCommonMessageOneOf) { + pb_1.Message.setWrapperField(this, 5, value); + } + get has_oneof() { + return pb_1.Message.getField(this, 5) != null; + } + get opt_int32() { + return pb_1.Message.getFieldWithDefault(this, 6, 0) as number; + } + set opt_int32(value: number) { + pb_1.Message.setOneofField(this, 6, this.#one_of_decls[0], value); + } + get has_opt_int32() { + return pb_1.Message.getField(this, 6) != null; + } + get opt_enum() { + return pb_1.Message.getFieldWithDefault(this, 7, dependency_1.PresenceCommonEnum.ZERO) as dependency_1.PresenceCommonEnum; + } + set opt_enum(value: dependency_1.PresenceCommonEnum) { + pb_1.Message.setOneofField(this, 7, this.#one_of_decls[1], value); + } + get has_opt_enum() { + return pb_1.Message.getField(this, 7) != null; + } + get opt_string() { + return pb_1.Message.getFieldWithDefault(this, 8, "") as string; + } + set opt_string(value: string) { + pb_1.Message.setOneofField(this, 8, this.#one_of_decls[2], value); + } + get has_opt_string() { + return pb_1.Message.getField(this, 8) != null; + } + get opt_message() { + return pb_1.Message.getWrapperField(this, dependency_1.PresenceCommonMessage, 9) as dependency_1.PresenceCommonMessage; + } + set opt_message(value: dependency_1.PresenceCommonMessage) { + pb_1.Message.setOneofWrapperField(this, 9, this.#one_of_decls[3], value); + } + get has_opt_message() { + return pb_1.Message.getField(this, 9) != null; + } + get opt_oneof() { + return pb_1.Message.getWrapperField(this, dependency_1.PresenceCommonMessageOneOf, 10) as dependency_1.PresenceCommonMessageOneOf; + } + set opt_oneof(value: dependency_1.PresenceCommonMessageOneOf) { + pb_1.Message.setOneofWrapperField(this, 10, this.#one_of_decls[4], value); + } + get has_opt_oneof() { + return pb_1.Message.getField(this, 10) != null; + } + get repeated() { + return pb_1.Message.getFieldWithDefault(this, 11, []) as number[]; + } + set repeated(value: number[]) { + pb_1.Message.setField(this, 11, value); + } + get map() { + return pb_1.Message.getField(this, 12) as any as Map; + } + set map(value: Map) { + pb_1.Message.setField(this, 12, value as any); + } + get _opt_int32() { + const cases: { + [index: number]: "none" | "opt_int32"; + } = { + 0: "none", + 6: "opt_int32" + }; + return cases[pb_1.Message.computeOneofCase(this, [6])]; + } + get _opt_enum() { + const cases: { + [index: number]: "none" | "opt_enum"; + } = { + 0: "none", + 7: "opt_enum" + }; + return cases[pb_1.Message.computeOneofCase(this, [7])]; + } + get _opt_string() { + const cases: { + [index: number]: "none" | "opt_string"; + } = { + 0: "none", + 8: "opt_string" + }; + return cases[pb_1.Message.computeOneofCase(this, [8])]; + } + get _opt_message() { + const cases: { + [index: number]: "none" | "opt_message"; + } = { + 0: "none", + 9: "opt_message" + }; + return cases[pb_1.Message.computeOneofCase(this, [9])]; + } + get _opt_oneof() { + const cases: { + [index: number]: "none" | "opt_oneof"; + } = { + 0: "none", + 10: "opt_oneof" + }; + return cases[pb_1.Message.computeOneofCase(this, [10])]; + } + static fromObject(data: { + int32?: number; + enum?: dependency_1.PresenceCommonEnum; + string?: string; + message?: ReturnType; + oneof?: ReturnType; + opt_int32?: number; + opt_enum?: dependency_1.PresenceCommonEnum; + opt_string?: string; + opt_message?: ReturnType; + opt_oneof?: ReturnType; + repeated?: number[]; + map?: { + [key: string]: string; + }; + }): PresenceMessageV3 { + const message = new PresenceMessageV3({}); + if (data.int32 != null) { + message.int32 = data.int32; + } + if (data.enum != null) { + message.enum = data.enum; + } + if (data.string != null) { + message.string = data.string; + } + if (data.message != null) { + message.message = dependency_1.PresenceCommonMessage.fromObject(data.message); + } + if (data.oneof != null) { + message.oneof = dependency_1.PresenceCommonMessageOneOf.fromObject(data.oneof); + } + if (data.opt_int32 != null) { + message.opt_int32 = data.opt_int32; + } + if (data.opt_enum != null) { + message.opt_enum = data.opt_enum; + } + if (data.opt_string != null) { + message.opt_string = data.opt_string; + } + if (data.opt_message != null) { + message.opt_message = dependency_1.PresenceCommonMessage.fromObject(data.opt_message); + } + if (data.opt_oneof != null) { + message.opt_oneof = dependency_1.PresenceCommonMessageOneOf.fromObject(data.opt_oneof); + } + if (data.repeated != null) { + message.repeated = data.repeated; + } + if (typeof data.map == "object") { + message.map = new Map(Object.entries(data.map)); + } + return message; + } + toObject() { + const data: { + int32?: number; + enum?: dependency_1.PresenceCommonEnum; + string?: string; + message?: ReturnType; + oneof?: ReturnType; + opt_int32?: number; + opt_enum?: dependency_1.PresenceCommonEnum; + opt_string?: string; + opt_message?: ReturnType; + opt_oneof?: ReturnType; + repeated?: number[]; + map?: { + [key: string]: string; + }; + } = {}; + if (this.int32 != null) { + data.int32 = this.int32; + } + if (this.enum != null) { + data.enum = this.enum; + } + if (this.string != null) { + data.string = this.string; + } + if (this.message != null) { + data.message = this.message.toObject(); + } + if (this.oneof != null) { + data.oneof = this.oneof.toObject(); + } + if (this.opt_int32 != null) { + data.opt_int32 = this.opt_int32; + } + if (this.opt_enum != null) { + data.opt_enum = this.opt_enum; + } + if (this.opt_string != null) { + data.opt_string = this.opt_string; + } + if (this.opt_message != null) { + data.opt_message = this.opt_message.toObject(); + } + if (this.opt_oneof != null) { + data.opt_oneof = this.opt_oneof.toObject(); + } + if (this.repeated != null) { + data.repeated = this.repeated; + } + if (this.map.size > 0) { + data.map = Object.fromEntries(this.map); + } + return data; + } + serialize(): Uint8Array; + serialize(w: pb_1.BinaryWriter): void; + serialize(w?: pb_1.BinaryWriter): Uint8Array | void { + const writer = w || new pb_1.BinaryWriter(); + if (this.int32 != 0) + writer.writeInt32(1, this.int32); + if (this.enum != dependency_1.PresenceCommonEnum.ZERO) + writer.writeEnum(2, this.enum); + if (this.string.length) + writer.writeString(3, this.string); + if (this.has_message) + writer.writeMessage(4, this.message, () => this.message.serialize(writer)); + if (this.has_oneof) + writer.writeMessage(5, this.oneof, () => this.oneof.serialize(writer)); + if (this.has_opt_int32) + writer.writeInt32(6, this.opt_int32); + if (this.has_opt_enum) + writer.writeEnum(7, this.opt_enum); + if (this.has_opt_string) + writer.writeString(8, this.opt_string); + if (this.has_opt_message) + writer.writeMessage(9, this.opt_message, () => this.opt_message.serialize(writer)); + if (this.has_opt_oneof) + writer.writeMessage(10, this.opt_oneof, () => this.opt_oneof.serialize(writer)); + if (this.repeated.length) + writer.writePackedInt32(11, this.repeated); + for (const [key, value] of this.map) { + writer.writeMessage(12, this.map, () => { + writer.writeString(1, key); + writer.writeString(2, value); + }); + } + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): PresenceMessageV3 { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new PresenceMessageV3(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + message.int32 = reader.readInt32(); + break; + case 2: + message.enum = reader.readEnum(); + break; + case 3: + message.string = reader.readString(); + break; + case 4: + reader.readMessage(message.message, () => message.message = dependency_1.PresenceCommonMessage.deserialize(reader)); + break; + case 5: + reader.readMessage(message.oneof, () => message.oneof = dependency_1.PresenceCommonMessageOneOf.deserialize(reader)); + break; + case 6: + message.opt_int32 = reader.readInt32(); + break; + case 7: + message.opt_enum = reader.readEnum(); + break; + case 8: + message.opt_string = reader.readString(); + break; + case 9: + reader.readMessage(message.opt_message, () => message.opt_message = dependency_1.PresenceCommonMessage.deserialize(reader)); + break; + case 10: + reader.readMessage(message.opt_oneof, () => message.opt_oneof = dependency_1.PresenceCommonMessageOneOf.deserialize(reader)); + break; + case 11: + message.repeated = reader.readPackedInt32(); + break; + case 12: + reader.readMessage(message, () => pb_1.Map.deserializeBinary(message.map as any, reader, reader.readString, reader.readString)); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): PresenceMessageV3 { + return PresenceMessageV3.deserialize(bytes); + } +} diff --git a/test/repeated.ts b/test/repeated.ts index 36f2804b..73f4e5ca 100644 --- a/test/repeated.ts +++ b/test/repeated.ts @@ -18,7 +18,7 @@ export class Repeated extends pb_1.Message { } } get indx() { - return pb_1.Message.getField(this, 4) as number[]; + return pb_1.Message.getFieldWithDefault(this, 4, []) as number[]; } set indx(value: number[]) { pb_1.Message.setField(this, 4, value); @@ -45,7 +45,7 @@ export class Repeated extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.indx !== undefined) + if (this.indx.length) writer.writePackedInt32(4, this.indx); if (!w) return writer.getResultBuffer(); diff --git a/test/required.ts b/test/required.ts index 9b152476..9d4557fc 100644 --- a/test/required.ts +++ b/test/required.ts @@ -23,15 +23,21 @@ export class NoOptionalValues extends pb_1.Message { set test(value: string) { pb_1.Message.setField(this, 1, value); } + get has_test() { + return pb_1.Message.getField(this, 1) != null; + } get test2() { return pb_1.Message.getField(this, 2) as string; } set test2(value: string) { pb_1.Message.setField(this, 2, value); } + get has_test2() { + return pb_1.Message.getField(this, 2) != null; + } static fromObject(data: { - test: string; - test2: string; + test?: string; + test2?: string; }): NoOptionalValues { const message = new NoOptionalValues({ test: data.test, @@ -41,21 +47,24 @@ export class NoOptionalValues extends pb_1.Message { } toObject() { const data: { - test: string; - test2: string; - } = { - test: this.test, - test2: this.test2 - }; + test?: string; + test2?: string; + } = {}; + if (this.test != null) { + data.test = this.test; + } + if (this.test2 != null) { + data.test2 = this.test2; + } return data; } serialize(): Uint8Array; serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.test === "string" && this.test.length) + if (this.has_test && this.test.length) writer.writeString(1, this.test); - if (typeof this.test2 === "string" && this.test2.length) + if (this.has_test2 && this.test2.length) writer.writeString(2, this.test2); if (!w) return writer.getResultBuffer(); diff --git a/test/rpcs.spec.ts b/test/rpcs.spec.ts index 889e5557..01b998b8 100644 --- a/test/rpcs.spec.ts +++ b/test/rpcs.spec.ts @@ -50,7 +50,7 @@ describe("RPCs", () => { client.get(new Query(), metadata, (err, value) => { expect(err).toBeNull(); - expect(value?.toObject()).toEqual({ id: "1", size: 1000 }); + expect(value?.toObject()).toEqual({ id: "1", size: 1000, mimeType: "" }); expect(storageServer.get).toHaveBeenCalledTimes(1); @@ -67,7 +67,7 @@ describe("RPCs", () => { }) client.get(new Query(), (err, response) => { expect(err).toBeNull(); - expect(response?.toObject()).toEqual({ id: "1", size: 1000 }); + expect(response?.toObject()).toEqual({ id: "1", size: 1000, mimeType: "" }); expect(storageServer.get).toHaveBeenCalledTimes(1); done(); }); diff --git a/test/rpcs.ts b/test/rpcs.ts index d5d7ade5..6bb4ccfc 100644 --- a/test/rpcs.ts +++ b/test/rpcs.ts @@ -67,19 +67,19 @@ export class _Object extends pb_1.Message { } } get id() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set id(value: string) { pb_1.Message.setField(this, 1, value); } get size() { - return pb_1.Message.getField(this, 3) as number; + return pb_1.Message.getFieldWithDefault(this, 3, 0) as number; } set size(value: number) { pb_1.Message.setField(this, 3, value); } get mimeType() { - return pb_1.Message.getField(this, 4) as string; + return pb_1.Message.getFieldWithDefault(this, 4, "") as string; } set mimeType(value: string) { pb_1.Message.setField(this, 4, value); @@ -122,11 +122,11 @@ export class _Object extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.id === "string" && this.id.length) + if (this.id.length) writer.writeString(1, this.id); - if (this.size !== undefined) + if (this.size != 0) writer.writeUint64(3, this.size); - if (typeof this.mimeType === "string" && this.mimeType.length) + if (this.mimeType.length) writer.writeString(4, this.mimeType); if (!w) return writer.getResultBuffer(); @@ -176,7 +176,7 @@ export class Chunk extends pb_1.Message { } } get data() { - return pb_1.Message.getField(this, 1) as Uint8Array; + return pb_1.Message.getFieldWithDefault(this, 1, new Uint8Array()) as Uint8Array; } set data(value: Uint8Array) { pb_1.Message.setField(this, 1, value); @@ -187,6 +187,9 @@ export class Chunk extends pb_1.Message { set range(value: Chunk.Range) { pb_1.Message.setWrapperField(this, 2, value); } + get has_range() { + return pb_1.Message.getField(this, 2) != null; + } static fromObject(data: { data?: Uint8Array; range?: ReturnType; @@ -217,9 +220,9 @@ export class Chunk extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.data !== undefined) + if (this.data.length) writer.writeBytes(1, this.data); - if (this.range !== undefined) + if (this.has_range) writer.writeMessage(2, this.range, () => this.range.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -267,13 +270,13 @@ export namespace Chunk { } } get start() { - return pb_1.Message.getField(this, 1) as number; + return pb_1.Message.getFieldWithDefault(this, 1, 0) as number; } set start(value: number) { pb_1.Message.setField(this, 1, value); } get end() { - return pb_1.Message.getField(this, 2) as number; + return pb_1.Message.getFieldWithDefault(this, 2, 0) as number; } set end(value: number) { pb_1.Message.setField(this, 2, value); @@ -308,9 +311,9 @@ export namespace Chunk { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.start !== undefined) + if (this.start != 0) writer.writeInt64(1, this.start); - if (this.end !== undefined) + if (this.end != 0) writer.writeInt64(2, this.end); if (!w) return writer.getResultBuffer(); @@ -357,7 +360,7 @@ export namespace Chunk { } } get id() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set id(value: string) { pb_1.Message.setField(this, 1, value); @@ -368,6 +371,9 @@ export namespace Chunk { set range(value: Chunk.Range) { pb_1.Message.setWrapperField(this, 2, value); } + get has_range() { + return pb_1.Message.getField(this, 2) != null; + } static fromObject(data: { id?: string; range?: ReturnType; @@ -398,9 +404,9 @@ export namespace Chunk { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.id === "string" && this.id.length) + if (this.id.length) writer.writeString(1, this.id); - if (this.range !== undefined) + if (this.has_range) writer.writeMessage(2, this.range, () => this.range.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -444,7 +450,7 @@ export class Query extends pb_1.Message { } } get id() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set id(value: string) { pb_1.Message.setField(this, 1, value); @@ -471,7 +477,7 @@ export class Query extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.id === "string" && this.id.length) + if (this.id.length) writer.writeString(1, this.id); if (!w) return writer.getResultBuffer(); @@ -539,7 +545,7 @@ export namespace Query { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (this.objects !== undefined) + if (this.objects.length) writer.writeRepeatedMessage(1, this.objects, (item: _Object) => item.serialize(writer)); if (!w) return writer.getResultBuffer(); @@ -584,7 +590,7 @@ export class Put extends pb_1.Message { } } get id() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set id(value: string) { pb_1.Message.setField(this, 1, value); @@ -595,6 +601,9 @@ export class Put extends pb_1.Message { set chunk(value: Chunk) { pb_1.Message.setWrapperField(this, 3, value); } + get has_chunk() { + return pb_1.Message.getField(this, 3) != null; + } static fromObject(data: { id?: string; chunk?: ReturnType; @@ -625,9 +634,9 @@ export class Put extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.id === "string" && this.id.length) + if (this.id.length) writer.writeString(1, this.id); - if (this.chunk !== undefined) + if (this.has_chunk) writer.writeMessage(3, this.chunk, () => this.chunk.serialize(writer)); if (!w) return writer.getResultBuffer(); diff --git a/test/serialization.ts b/test/serialization.ts index fc7e6096..efe7b153 100644 --- a/test/serialization.ts +++ b/test/serialization.ts @@ -18,7 +18,7 @@ export class Serialization extends pb_1.Message { } } get test() { - return pb_1.Message.getField(this, 1) as string; + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; } set test(value: string) { pb_1.Message.setField(this, 1, value); @@ -45,7 +45,7 @@ export class Serialization extends pb_1.Message { serialize(w: pb_1.BinaryWriter): void; serialize(w?: pb_1.BinaryWriter): Uint8Array | void { const writer = w || new pb_1.BinaryWriter(); - if (typeof this.test === "string" && this.test.length) + if (this.test.length) writer.writeString(1, this.test); if (!w) return writer.getResultBuffer();