From 67c6bd9856e9e9118981c9e903a2da2cd7822d52 Mon Sep 17 00:00:00 2001 From: Egor Aristov Date: Fri, 28 Feb 2025 14:02:58 +0300 Subject: [PATCH] protobuf --- Makefile | 13 + cmd/webserver/webserver.go | 4 +- frontend/wizard-vue/package-lock.json | 15 + frontend/wizard-vue/package.json | 2 + .../urlmaker/google/protobuf/descriptor.ts | 5754 +++++++++++++++++ frontend/wizard-vue/src/urlmaker/index.ts | 63 +- .../wizard-vue/src/urlmaker/proto/specs.ts | 283 + .../wizard-vue/src/urlmaker/tagger/tagger.ts | 7 + frontend/wizard-vue/src/urlmaker/utils.ts | 41 + go.mod | 3 +- go.sum | 12 + internal/api/http/handler.go | 48 +- internal/api/http/pb/specs.pb.go | 253 + proto/specs.proto | 20 + 14 files changed, 6446 insertions(+), 72 deletions(-) create mode 100644 Makefile create mode 100644 frontend/wizard-vue/src/urlmaker/google/protobuf/descriptor.ts create mode 100644 frontend/wizard-vue/src/urlmaker/proto/specs.ts create mode 100644 frontend/wizard-vue/src/urlmaker/tagger/tagger.ts create mode 100644 frontend/wizard-vue/src/urlmaker/utils.ts create mode 100644 internal/api/http/pb/specs.pb.go create mode 100644 proto/specs.proto diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..8061fd1 --- /dev/null +++ b/Makefile @@ -0,0 +1,13 @@ +PROTOBUF_TAGGER_PATH := ${GOPATH}/pkg/mod/github.com/srikrsna/protoc-gen-gotag@v1.0.2 + +all: + +js_proto: + protoc -I=. -I=${PROTOBUF_TAGGER_PATH} --ts_out=./frontend/wizard-vue/src/urlmaker ./proto/specs.proto + sed -i '1 i //@ts-nocheck' ./frontend/wizard-vue/src/urlmaker/google/protobuf/descriptor.ts + +go_proto: + protoc -I=. -I=${PROTOBUF_TAGGER_PATH} --go_out=. ./proto/specs.proto + protoc -I=. -I=${PROTOBUF_TAGGER_PATH} --gotag_out=. ./proto/specs.proto + +proto: js_proto go_proto diff --git a/cmd/webserver/webserver.go b/cmd/webserver/webserver.go index cd6d9d7..822ab73 100644 --- a/cmd/webserver/webserver.go +++ b/cmd/webserver/webserver.go @@ -50,7 +50,9 @@ func main() { e := echo.New() e.Use(middleware.Logger()) - e.Use(middleware.Recover()) + if !cfg.Debug { + e.Use(middleware.Recover()) + } setIPExtractor(e, cfg) diff --git a/frontend/wizard-vue/package-lock.json b/frontend/wizard-vue/package-lock.json index 4e033b5..751e7c6 100644 --- a/frontend/wizard-vue/package-lock.json +++ b/frontend/wizard-vue/package-lock.json @@ -10,12 +10,14 @@ "dependencies": { "@kalimahapps/vue-icons": "^1.7.1", "es-toolkit": "^1.32.0", + "google-protobuf": "^3.21.4", "pinia": "^2.3.1", "vue": "^3.5.13", "vue-router": "^4.5.0" }, "devDependencies": { "@tsconfig/node22": "^22.0.0", + "@types/google-protobuf": "^3.15.12", "@types/node": "^22.10.7", "@vitejs/plugin-vue": "^5.2.1", "@vue/eslint-config-prettier": "^10.1.0", @@ -1664,6 +1666,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/google-protobuf": { + "version": "3.15.12", + "resolved": "https://registry.npmjs.org/@types/google-protobuf/-/google-protobuf-3.15.12.tgz", + "integrity": "sha512-40um9QqwHjRS92qnOaDpL7RmDK15NuZYo9HihiJRbYkMQZlWnuH8AdvbMy8/o6lgLmKbDUKa+OALCltHdbOTpQ==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -3274,6 +3283,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/google-protobuf": { + "version": "3.21.4", + "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.4.tgz", + "integrity": "sha512-MnG7N936zcKTco4Jd2PX2U96Kf9PxygAPKBug+74LHzmHXmceN16MmRcdgZv+DGef/S9YvQAfRsNCn4cjf9yyQ==", + "license": "(BSD-3-Clause AND Apache-2.0)" + }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", diff --git a/frontend/wizard-vue/package.json b/frontend/wizard-vue/package.json index abd8168..18bef1e 100644 --- a/frontend/wizard-vue/package.json +++ b/frontend/wizard-vue/package.json @@ -15,12 +15,14 @@ "dependencies": { "@kalimahapps/vue-icons": "^1.7.1", "es-toolkit": "^1.32.0", + "google-protobuf": "^3.21.4", "pinia": "^2.3.1", "vue": "^3.5.13", "vue-router": "^4.5.0" }, "devDependencies": { "@tsconfig/node22": "^22.0.0", + "@types/google-protobuf": "^3.15.12", "@types/node": "^22.10.7", "@vitejs/plugin-vue": "^5.2.1", "@vue/eslint-config-prettier": "^10.1.0", diff --git a/frontend/wizard-vue/src/urlmaker/google/protobuf/descriptor.ts b/frontend/wizard-vue/src/urlmaker/google/protobuf/descriptor.ts new file mode 100644 index 0000000..eb6dfe1 --- /dev/null +++ b/frontend/wizard-vue/src/urlmaker/google/protobuf/descriptor.ts @@ -0,0 +1,5754 @@ +//@ts-nocheck +/** + * Generated by the protoc-gen-ts. DO NOT EDIT! + * compiler version: 5.29.3 + * source: google/protobuf/descriptor.proto + * git: https://github.com/thesayyn/protoc-gen-ts */ +import * as pb_1 from "google-protobuf"; +export namespace google.protobuf { + export enum Edition { + EDITION_UNKNOWN = 0, + EDITION_LEGACY = 900, + EDITION_PROTO2 = 998, + EDITION_PROTO3 = 999, + EDITION_2023 = 1000, + EDITION_2024 = 1001, + EDITION_1_TEST_ONLY = 1, + EDITION_2_TEST_ONLY = 2, + EDITION_99997_TEST_ONLY = 99997, + EDITION_99998_TEST_ONLY = 99998, + EDITION_99999_TEST_ONLY = 99999, + EDITION_MAX = 2147483647 + } + export class FileDescriptorSet extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + file: FileDescriptorProto[]; + }) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [1], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + this.file = data.file; + } + } + get file() { + return pb_1.Message.getRepeatedWrapperField(this, FileDescriptorProto, 1) as FileDescriptorProto[]; + } + set file(value: FileDescriptorProto[]) { + pb_1.Message.setRepeatedWrapperField(this, 1, value); + } + static fromObject(data: { + file?: ReturnType[]; + }): FileDescriptorSet { + const message = new FileDescriptorSet({ + file: data.file.map(item => FileDescriptorProto.fromObject(item)) + }); + return message; + } + toObject() { + const data: { + 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.length) + writer.writeRepeatedMessage(1, this.file, (item: FileDescriptorProto) => item.serialize(writer)); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): FileDescriptorSet { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new FileDescriptorSet(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + reader.readMessage(message.file, () => pb_1.Message.addToRepeatedWrapperField(message, 1, FileDescriptorProto.deserialize(reader), FileDescriptorProto)); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): FileDescriptorSet { + return FileDescriptorSet.deserialize(bytes); + } + } + export class FileDescriptorProto extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + name?: string; + package?: string; + dependency: string[]; + public_dependency: number[]; + weak_dependency: number[]; + message_type: DescriptorProto[]; + enum_type: EnumDescriptorProto[]; + service: ServiceDescriptorProto[]; + extension: FieldDescriptorProto[]; + options?: FileOptions; + source_code_info?: SourceCodeInfo; + syntax?: string; + edition?: Edition; + }) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [3, 10, 11, 4, 5, 6, 7], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + if ("name" in data && data.name != undefined) { + this.name = data.name; + } + if ("package" in data && data.package != undefined) { + this.package = data.package; + } + this.dependency = data.dependency; + this.public_dependency = data.public_dependency; + this.weak_dependency = data.weak_dependency; + this.message_type = data.message_type; + this.enum_type = data.enum_type; + this.service = data.service; + this.extension = data.extension; + if ("options" in data && data.options != undefined) { + this.options = data.options; + } + if ("source_code_info" in data && data.source_code_info != undefined) { + this.source_code_info = data.source_code_info; + } + if ("syntax" in data && data.syntax != undefined) { + this.syntax = data.syntax; + } + if ("edition" in data && data.edition != undefined) { + this.edition = data.edition; + } + } + } + get name() { + 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.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.getFieldWithDefault(this, 3, []) as string[]; + } + set dependency(value: string[]) { + pb_1.Message.setField(this, 3, value); + } + get public_dependency() { + 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.getFieldWithDefault(this, 11, []) as number[]; + } + set weak_dependency(value: number[]) { + pb_1.Message.setField(this, 11, value); + } + get message_type() { + return pb_1.Message.getRepeatedWrapperField(this, DescriptorProto, 4) as DescriptorProto[]; + } + set message_type(value: DescriptorProto[]) { + pb_1.Message.setRepeatedWrapperField(this, 4, value); + } + get enum_type() { + return pb_1.Message.getRepeatedWrapperField(this, EnumDescriptorProto, 5) as EnumDescriptorProto[]; + } + set enum_type(value: EnumDescriptorProto[]) { + pb_1.Message.setRepeatedWrapperField(this, 5, value); + } + get service() { + return pb_1.Message.getRepeatedWrapperField(this, ServiceDescriptorProto, 6) as ServiceDescriptorProto[]; + } + set service(value: ServiceDescriptorProto[]) { + pb_1.Message.setRepeatedWrapperField(this, 6, value); + } + get extension() { + return pb_1.Message.getRepeatedWrapperField(this, FieldDescriptorProto, 7) as FieldDescriptorProto[]; + } + set extension(value: FieldDescriptorProto[]) { + pb_1.Message.setRepeatedWrapperField(this, 7, value); + } + get options() { + return pb_1.Message.getWrapperField(this, FileOptions, 8) as FileOptions; + } + 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.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; + } + get edition() { + return pb_1.Message.getFieldWithDefault(this, 14, Edition.EDITION_UNKNOWN) as Edition; + } + set edition(value: Edition) { + pb_1.Message.setField(this, 14, value); + } + get has_edition() { + return pb_1.Message.getField(this, 14) != 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[]; + options?: ReturnType; + source_code_info?: ReturnType; + syntax?: string; + edition?: Edition; + }): FileDescriptorProto { + const message = new FileDescriptorProto({ + dependency: data.dependency, + public_dependency: data.public_dependency, + weak_dependency: data.weak_dependency, + message_type: data.message_type.map(item => DescriptorProto.fromObject(item)), + enum_type: data.enum_type.map(item => EnumDescriptorProto.fromObject(item)), + service: data.service.map(item => ServiceDescriptorProto.fromObject(item)), + extension: data.extension.map(item => FieldDescriptorProto.fromObject(item)) + }); + if (data.name != null) { + message.name = data.name; + } + if (data.package != null) { + message.package = data.package; + } + if (data.options != null) { + message.options = FileOptions.fromObject(data.options); + } + if (data.source_code_info != null) { + message.source_code_info = SourceCodeInfo.fromObject(data.source_code_info); + } + if (data.syntax != null) { + message.syntax = data.syntax; + } + if (data.edition != null) { + message.edition = data.edition; + } + return message; + } + toObject() { + const data: { + name?: string; + package?: string; + dependency: string[]; + public_dependency: number[]; + weak_dependency: number[]; + message_type?: ReturnType[]; + enum_type?: ReturnType[]; + service?: ReturnType[]; + extension?: ReturnType[]; + options?: ReturnType; + source_code_info?: ReturnType; + syntax?: string; + edition?: Edition; + } = { + dependency: this.dependency, + public_dependency: this.public_dependency, + weak_dependency: this.weak_dependency + }; + if (this.name != null) { + data.name = this.name; + } + 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(); + } + if (this.source_code_info != null) { + data.source_code_info = this.source_code_info.toObject(); + } + if (this.syntax != null) { + data.syntax = this.syntax; + } + if (this.edition != null) { + data.edition = this.edition; + } + 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_name && this.name.length) + writer.writeString(1, this.name); + if (this.has_package && this.package.length) + writer.writeString(2, this.package); + if (this.dependency.length) + writer.writeRepeatedString(3, this.dependency); + if (this.public_dependency.length) + writer.writeRepeatedInt32(10, this.public_dependency); + if (this.weak_dependency.length) + writer.writeRepeatedInt32(11, this.weak_dependency); + if (this.message_type.length) + writer.writeRepeatedMessage(4, this.message_type, (item: DescriptorProto) => item.serialize(writer)); + if (this.enum_type.length) + writer.writeRepeatedMessage(5, this.enum_type, (item: EnumDescriptorProto) => item.serialize(writer)); + if (this.service.length) + writer.writeRepeatedMessage(6, this.service, (item: ServiceDescriptorProto) => item.serialize(writer)); + if (this.extension.length) + writer.writeRepeatedMessage(7, this.extension, (item: FieldDescriptorProto) => item.serialize(writer)); + if (this.has_options) + writer.writeMessage(8, this.options, () => this.options.serialize(writer)); + if (this.has_source_code_info) + writer.writeMessage(9, this.source_code_info, () => this.source_code_info.serialize(writer)); + if (this.has_syntax && this.syntax.length) + writer.writeString(12, this.syntax); + if (this.has_edition) + writer.writeEnum(14, this.edition); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): FileDescriptorProto { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new FileDescriptorProto(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + message.name = reader.readString(); + break; + case 2: + message.package = reader.readString(); + break; + case 3: + pb_1.Message.addToRepeatedField(message, 3, reader.readString()); + break; + case 10: + pb_1.Message.addToRepeatedField(message, 10, reader.readInt32()); + break; + case 11: + pb_1.Message.addToRepeatedField(message, 11, reader.readInt32()); + break; + case 4: + reader.readMessage(message.message_type, () => pb_1.Message.addToRepeatedWrapperField(message, 4, DescriptorProto.deserialize(reader), DescriptorProto)); + break; + case 5: + reader.readMessage(message.enum_type, () => pb_1.Message.addToRepeatedWrapperField(message, 5, EnumDescriptorProto.deserialize(reader), EnumDescriptorProto)); + break; + case 6: + reader.readMessage(message.service, () => pb_1.Message.addToRepeatedWrapperField(message, 6, ServiceDescriptorProto.deserialize(reader), ServiceDescriptorProto)); + break; + case 7: + reader.readMessage(message.extension, () => pb_1.Message.addToRepeatedWrapperField(message, 7, FieldDescriptorProto.deserialize(reader), FieldDescriptorProto)); + break; + case 8: + reader.readMessage(message.options, () => message.options = FileOptions.deserialize(reader)); + break; + case 9: + reader.readMessage(message.source_code_info, () => message.source_code_info = SourceCodeInfo.deserialize(reader)); + break; + case 12: + message.syntax = reader.readString(); + break; + case 14: + message.edition = reader.readEnum(); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): FileDescriptorProto { + return FileDescriptorProto.deserialize(bytes); + } + } + export class DescriptorProto extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + name?: string; + field: FieldDescriptorProto[]; + extension: FieldDescriptorProto[]; + nested_type: DescriptorProto[]; + enum_type: EnumDescriptorProto[]; + extension_range: DescriptorProto.ExtensionRange[]; + oneof_decl: OneofDescriptorProto[]; + options?: MessageOptions; + reserved_range: DescriptorProto.ReservedRange[]; + reserved_name: string[]; + }) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [2, 6, 3, 4, 5, 8, 9, 10], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + if ("name" in data && data.name != undefined) { + this.name = data.name; + } + this.field = data.field; + this.extension = data.extension; + this.nested_type = data.nested_type; + this.enum_type = data.enum_type; + this.extension_range = data.extension_range; + this.oneof_decl = data.oneof_decl; + if ("options" in data && data.options != undefined) { + this.options = data.options; + } + this.reserved_range = data.reserved_range; + this.reserved_name = data.reserved_name; + } + } + get name() { + 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[]; + } + set field(value: FieldDescriptorProto[]) { + pb_1.Message.setRepeatedWrapperField(this, 2, value); + } + get extension() { + return pb_1.Message.getRepeatedWrapperField(this, FieldDescriptorProto, 6) as FieldDescriptorProto[]; + } + set extension(value: FieldDescriptorProto[]) { + pb_1.Message.setRepeatedWrapperField(this, 6, value); + } + get nested_type() { + return pb_1.Message.getRepeatedWrapperField(this, DescriptorProto, 3) as DescriptorProto[]; + } + set nested_type(value: DescriptorProto[]) { + pb_1.Message.setRepeatedWrapperField(this, 3, value); + } + get enum_type() { + return pb_1.Message.getRepeatedWrapperField(this, EnumDescriptorProto, 4) as EnumDescriptorProto[]; + } + set enum_type(value: EnumDescriptorProto[]) { + pb_1.Message.setRepeatedWrapperField(this, 4, value); + } + get extension_range() { + return pb_1.Message.getRepeatedWrapperField(this, DescriptorProto.ExtensionRange, 5) as DescriptorProto.ExtensionRange[]; + } + set extension_range(value: DescriptorProto.ExtensionRange[]) { + pb_1.Message.setRepeatedWrapperField(this, 5, value); + } + get oneof_decl() { + return pb_1.Message.getRepeatedWrapperField(this, OneofDescriptorProto, 8) as OneofDescriptorProto[]; + } + set oneof_decl(value: OneofDescriptorProto[]) { + pb_1.Message.setRepeatedWrapperField(this, 8, value); + } + get options() { + return pb_1.Message.getWrapperField(this, MessageOptions, 7) as MessageOptions; + } + 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[]; + } + set reserved_range(value: DescriptorProto.ReservedRange[]) { + pb_1.Message.setRepeatedWrapperField(this, 9, value); + } + get reserved_name() { + 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[]; + options?: ReturnType; + reserved_range?: ReturnType[]; + reserved_name: string[]; + }): DescriptorProto { + const message = new DescriptorProto({ + field: data.field.map(item => FieldDescriptorProto.fromObject(item)), + extension: data.extension.map(item => FieldDescriptorProto.fromObject(item)), + nested_type: data.nested_type.map(item => DescriptorProto.fromObject(item)), + enum_type: data.enum_type.map(item => EnumDescriptorProto.fromObject(item)), + extension_range: data.extension_range.map(item => DescriptorProto.ExtensionRange.fromObject(item)), + oneof_decl: data.oneof_decl.map(item => OneofDescriptorProto.fromObject(item)), + reserved_range: data.reserved_range.map(item => DescriptorProto.ReservedRange.fromObject(item)), + reserved_name: data.reserved_name + }); + if (data.name != null) { + message.name = data.name; + } + if (data.options != null) { + message.options = MessageOptions.fromObject(data.options); + } + return message; + } + toObject() { + const data: { + name?: string; + field?: ReturnType[]; + extension?: ReturnType[]; + nested_type?: ReturnType[]; + enum_type?: ReturnType[]; + extension_range?: ReturnType[]; + oneof_decl?: ReturnType[]; + options?: ReturnType; + reserved_range?: ReturnType[]; + reserved_name: string[]; + } = { + 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 (this.has_name && this.name.length) + writer.writeString(1, this.name); + if (this.field.length) + writer.writeRepeatedMessage(2, this.field, (item: FieldDescriptorProto) => item.serialize(writer)); + if (this.extension.length) + writer.writeRepeatedMessage(6, this.extension, (item: FieldDescriptorProto) => item.serialize(writer)); + if (this.nested_type.length) + writer.writeRepeatedMessage(3, this.nested_type, (item: DescriptorProto) => item.serialize(writer)); + if (this.enum_type.length) + writer.writeRepeatedMessage(4, this.enum_type, (item: EnumDescriptorProto) => item.serialize(writer)); + if (this.extension_range.length) + writer.writeRepeatedMessage(5, this.extension_range, (item: DescriptorProto.ExtensionRange) => item.serialize(writer)); + if (this.oneof_decl.length) + writer.writeRepeatedMessage(8, this.oneof_decl, (item: OneofDescriptorProto) => item.serialize(writer)); + if (this.has_options) + writer.writeMessage(7, this.options, () => this.options.serialize(writer)); + if (this.reserved_range.length) + writer.writeRepeatedMessage(9, this.reserved_range, (item: DescriptorProto.ReservedRange) => item.serialize(writer)); + if (this.reserved_name.length) + writer.writeRepeatedString(10, this.reserved_name); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): DescriptorProto { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new DescriptorProto(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + message.name = reader.readString(); + break; + case 2: + reader.readMessage(message.field, () => pb_1.Message.addToRepeatedWrapperField(message, 2, FieldDescriptorProto.deserialize(reader), FieldDescriptorProto)); + break; + case 6: + reader.readMessage(message.extension, () => pb_1.Message.addToRepeatedWrapperField(message, 6, FieldDescriptorProto.deserialize(reader), FieldDescriptorProto)); + break; + case 3: + reader.readMessage(message.nested_type, () => pb_1.Message.addToRepeatedWrapperField(message, 3, DescriptorProto.deserialize(reader), DescriptorProto)); + break; + case 4: + reader.readMessage(message.enum_type, () => pb_1.Message.addToRepeatedWrapperField(message, 4, EnumDescriptorProto.deserialize(reader), EnumDescriptorProto)); + break; + case 5: + reader.readMessage(message.extension_range, () => pb_1.Message.addToRepeatedWrapperField(message, 5, DescriptorProto.ExtensionRange.deserialize(reader), DescriptorProto.ExtensionRange)); + break; + case 8: + reader.readMessage(message.oneof_decl, () => pb_1.Message.addToRepeatedWrapperField(message, 8, OneofDescriptorProto.deserialize(reader), OneofDescriptorProto)); + break; + case 7: + reader.readMessage(message.options, () => message.options = MessageOptions.deserialize(reader)); + break; + case 9: + reader.readMessage(message.reserved_range, () => pb_1.Message.addToRepeatedWrapperField(message, 9, DescriptorProto.ReservedRange.deserialize(reader), DescriptorProto.ReservedRange)); + break; + case 10: + pb_1.Message.addToRepeatedField(message, 10, reader.readString()); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): DescriptorProto { + return DescriptorProto.deserialize(bytes); + } + } + export namespace DescriptorProto { + export class ExtensionRange extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + start?: number; + end?: number; + options?: ExtensionRangeOptions; + }) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + if ("start" in data && data.start != undefined) { + this.start = data.start; + } + if ("end" in data && data.end != undefined) { + this.end = data.end; + } + if ("options" in data && data.options != undefined) { + this.options = data.options; + } + } + } + get start() { + 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.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; + options?: ReturnType; + }): ExtensionRange { + const message = new ExtensionRange({}); + if (data.start != null) { + message.start = data.start; + } + if (data.end != null) { + message.end = data.end; + } + if (data.options != null) { + message.options = ExtensionRangeOptions.fromObject(data.options); + } + return message; + } + toObject() { + const data: { + start?: number; + end?: number; + options?: ReturnType; + } = {}; + if (this.start != null) { + data.start = this.start; + } + if (this.end != null) { + data.end = this.end; + } + if (this.options != null) { + data.options = this.options.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_start) + writer.writeInt32(1, this.start); + if (this.has_end) + writer.writeInt32(2, this.end); + if (this.has_options) + writer.writeMessage(3, this.options, () => this.options.serialize(writer)); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ExtensionRange { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ExtensionRange(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + message.start = reader.readInt32(); + break; + case 2: + message.end = reader.readInt32(); + break; + case 3: + reader.readMessage(message.options, () => message.options = ExtensionRangeOptions.deserialize(reader)); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): ExtensionRange { + return ExtensionRange.deserialize(bytes); + } + } + export class ReservedRange extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + start?: number; + end?: 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 ("start" in data && data.start != undefined) { + this.start = data.start; + } + if ("end" in data && data.end != undefined) { + this.end = data.end; + } + } + } + get start() { + 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.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; + }): ReservedRange { + const message = new ReservedRange({}); + if (data.start != null) { + message.start = data.start; + } + if (data.end != null) { + message.end = data.end; + } + return message; + } + toObject() { + const data: { + start?: number; + end?: number; + } = {}; + if (this.start != null) { + data.start = this.start; + } + if (this.end != null) { + data.end = this.end; + } + 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_start) + writer.writeInt32(1, this.start); + if (this.has_end) + writer.writeInt32(2, this.end); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ReservedRange { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ReservedRange(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + message.start = reader.readInt32(); + break; + case 2: + message.end = reader.readInt32(); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): ReservedRange { + return ReservedRange.deserialize(bytes); + } + } + } + export class ExtensionRangeOptions extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + uninterpreted_option: UninterpretedOption[]; + declaration: ExtensionRangeOptions.Declaration[]; + features?: FeatureSet; + verification?: ExtensionRangeOptions.VerificationState; + }) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [999, 2], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + this.uninterpreted_option = data.uninterpreted_option; + this.declaration = data.declaration; + if ("features" in data && data.features != undefined) { + this.features = data.features; + } + if ("verification" in data && data.verification != undefined) { + this.verification = data.verification; + } + } + } + get uninterpreted_option() { + return pb_1.Message.getRepeatedWrapperField(this, UninterpretedOption, 999) as UninterpretedOption[]; + } + set uninterpreted_option(value: UninterpretedOption[]) { + pb_1.Message.setRepeatedWrapperField(this, 999, value); + } + get declaration() { + return pb_1.Message.getRepeatedWrapperField(this, ExtensionRangeOptions.Declaration, 2) as ExtensionRangeOptions.Declaration[]; + } + set declaration(value: ExtensionRangeOptions.Declaration[]) { + pb_1.Message.setRepeatedWrapperField(this, 2, value); + } + get features() { + return pb_1.Message.getWrapperField(this, FeatureSet, 50) as FeatureSet; + } + set features(value: FeatureSet) { + pb_1.Message.setWrapperField(this, 50, value); + } + get has_features() { + return pb_1.Message.getField(this, 50) != null; + } + get verification() { + return pb_1.Message.getFieldWithDefault(this, 3, ExtensionRangeOptions.VerificationState.UNVERIFIED) as ExtensionRangeOptions.VerificationState; + } + set verification(value: ExtensionRangeOptions.VerificationState) { + pb_1.Message.setField(this, 3, value); + } + get has_verification() { + return pb_1.Message.getField(this, 3) != null; + } + static fromObject(data: { + uninterpreted_option?: ReturnType[]; + declaration?: ReturnType[]; + features?: ReturnType; + verification?: ExtensionRangeOptions.VerificationState; + }): ExtensionRangeOptions { + const message = new ExtensionRangeOptions({ + uninterpreted_option: data.uninterpreted_option.map(item => UninterpretedOption.fromObject(item)), + declaration: data.declaration.map(item => ExtensionRangeOptions.Declaration.fromObject(item)) + }); + if (data.features != null) { + message.features = FeatureSet.fromObject(data.features); + } + if (data.verification != null) { + message.verification = data.verification; + } + return message; + } + toObject() { + const data: { + uninterpreted_option?: ReturnType[]; + declaration?: ReturnType[]; + features?: ReturnType; + verification?: ExtensionRangeOptions.VerificationState; + } = {}; + if (this.uninterpreted_option != null) { + data.uninterpreted_option = this.uninterpreted_option.map((item: UninterpretedOption) => item.toObject()); + } + if (this.declaration != null) { + data.declaration = this.declaration.map((item: ExtensionRangeOptions.Declaration) => item.toObject()); + } + if (this.features != null) { + data.features = this.features.toObject(); + } + if (this.verification != null) { + data.verification = this.verification; + } + 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.length) + writer.writeRepeatedMessage(999, this.uninterpreted_option, (item: UninterpretedOption) => item.serialize(writer)); + if (this.declaration.length) + writer.writeRepeatedMessage(2, this.declaration, (item: ExtensionRangeOptions.Declaration) => item.serialize(writer)); + if (this.has_features) + writer.writeMessage(50, this.features, () => this.features.serialize(writer)); + if (this.has_verification) + writer.writeEnum(3, this.verification); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ExtensionRangeOptions { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ExtensionRangeOptions(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 999: + reader.readMessage(message.uninterpreted_option, () => pb_1.Message.addToRepeatedWrapperField(message, 999, UninterpretedOption.deserialize(reader), UninterpretedOption)); + break; + case 2: + reader.readMessage(message.declaration, () => pb_1.Message.addToRepeatedWrapperField(message, 2, ExtensionRangeOptions.Declaration.deserialize(reader), ExtensionRangeOptions.Declaration)); + break; + case 50: + reader.readMessage(message.features, () => message.features = FeatureSet.deserialize(reader)); + break; + case 3: + message.verification = reader.readEnum(); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): ExtensionRangeOptions { + return ExtensionRangeOptions.deserialize(bytes); + } + } + export namespace ExtensionRangeOptions { + export enum VerificationState { + DECLARATION = 0, + UNVERIFIED = 1 + } + export class Declaration extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + number?: number; + full_name?: string; + type?: string; + reserved?: boolean; + repeated?: boolean; + }) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + if ("number" in data && data.number != undefined) { + this.number = data.number; + } + if ("full_name" in data && data.full_name != undefined) { + this.full_name = data.full_name; + } + if ("type" in data && data.type != undefined) { + this.type = data.type; + } + if ("reserved" in data && data.reserved != undefined) { + this.reserved = data.reserved; + } + if ("repeated" in data && data.repeated != undefined) { + this.repeated = data.repeated; + } + } + } + get number() { + return pb_1.Message.getFieldWithDefault(this, 1, 0) as number; + } + set number(value: number) { + pb_1.Message.setField(this, 1, value); + } + get has_number() { + return pb_1.Message.getField(this, 1) != null; + } + get full_name() { + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; + } + set full_name(value: string) { + pb_1.Message.setField(this, 2, value); + } + get has_full_name() { + return pb_1.Message.getField(this, 2) != null; + } + get type() { + return pb_1.Message.getFieldWithDefault(this, 3, "") as string; + } + set type(value: string) { + pb_1.Message.setField(this, 3, value); + } + get has_type() { + return pb_1.Message.getField(this, 3) != null; + } + get reserved() { + return pb_1.Message.getFieldWithDefault(this, 5, false) as boolean; + } + set reserved(value: boolean) { + pb_1.Message.setField(this, 5, value); + } + get has_reserved() { + return pb_1.Message.getField(this, 5) != null; + } + get repeated() { + return pb_1.Message.getFieldWithDefault(this, 6, false) as boolean; + } + set repeated(value: boolean) { + pb_1.Message.setField(this, 6, value); + } + get has_repeated() { + return pb_1.Message.getField(this, 6) != null; + } + static fromObject(data: { + number?: number; + full_name?: string; + type?: string; + reserved?: boolean; + repeated?: boolean; + }): Declaration { + const message = new Declaration({}); + if (data.number != null) { + message.number = data.number; + } + if (data.full_name != null) { + message.full_name = data.full_name; + } + if (data.type != null) { + message.type = data.type; + } + if (data.reserved != null) { + message.reserved = data.reserved; + } + if (data.repeated != null) { + message.repeated = data.repeated; + } + return message; + } + toObject() { + const data: { + number?: number; + full_name?: string; + type?: string; + reserved?: boolean; + repeated?: boolean; + } = {}; + if (this.number != null) { + data.number = this.number; + } + if (this.full_name != null) { + data.full_name = this.full_name; + } + if (this.type != null) { + data.type = this.type; + } + if (this.reserved != null) { + data.reserved = this.reserved; + } + if (this.repeated != null) { + data.repeated = this.repeated; + } + 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_number) + writer.writeInt32(1, this.number); + if (this.has_full_name && this.full_name.length) + writer.writeString(2, this.full_name); + if (this.has_type && this.type.length) + writer.writeString(3, this.type); + if (this.has_reserved) + writer.writeBool(5, this.reserved); + if (this.has_repeated) + writer.writeBool(6, this.repeated); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Declaration { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Declaration(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + message.number = reader.readInt32(); + break; + case 2: + message.full_name = reader.readString(); + break; + case 3: + message.type = reader.readString(); + break; + case 5: + message.reserved = reader.readBool(); + break; + case 6: + message.repeated = reader.readBool(); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): Declaration { + return Declaration.deserialize(bytes); + } + } + } + export class FieldDescriptorProto extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + name?: string; + number?: number; + label?: FieldDescriptorProto.Label; + type?: FieldDescriptorProto.Type; + type_name?: string; + extendee?: string; + default_value?: string; + oneof_index?: number; + json_name?: string; + options?: FieldOptions; + proto3_optional?: boolean; + }) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + if ("name" in data && data.name != undefined) { + this.name = data.name; + } + if ("number" in data && data.number != undefined) { + this.number = data.number; + } + if ("label" in data && data.label != undefined) { + this.label = data.label; + } + if ("type" in data && data.type != undefined) { + this.type = data.type; + } + if ("type_name" in data && data.type_name != undefined) { + this.type_name = data.type_name; + } + if ("extendee" in data && data.extendee != undefined) { + this.extendee = data.extendee; + } + if ("default_value" in data && data.default_value != undefined) { + this.default_value = data.default_value; + } + if ("oneof_index" in data && data.oneof_index != undefined) { + this.oneof_index = data.oneof_index; + } + if ("json_name" in data && data.json_name != undefined) { + this.json_name = data.json_name; + } + if ("options" in data && data.options != undefined) { + this.options = data.options; + } + if ("proto3_optional" in data && data.proto3_optional != undefined) { + this.proto3_optional = data.proto3_optional; + } + } + } + get name() { + 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.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.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.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.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.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.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.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.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.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; + label?: FieldDescriptorProto.Label; + type?: FieldDescriptorProto.Type; + type_name?: string; + extendee?: string; + default_value?: string; + oneof_index?: number; + json_name?: string; + options?: ReturnType; + proto3_optional?: boolean; + }): FieldDescriptorProto { + const message = new FieldDescriptorProto({}); + if (data.name != null) { + message.name = data.name; + } + if (data.number != null) { + message.number = data.number; + } + if (data.label != null) { + message.label = data.label; + } + if (data.type != null) { + message.type = data.type; + } + if (data.type_name != null) { + message.type_name = data.type_name; + } + if (data.extendee != null) { + message.extendee = data.extendee; + } + if (data.default_value != null) { + message.default_value = data.default_value; + } + if (data.oneof_index != null) { + message.oneof_index = data.oneof_index; + } + if (data.json_name != null) { + message.json_name = data.json_name; + } + if (data.options != null) { + message.options = FieldOptions.fromObject(data.options); + } + if (data.proto3_optional != null) { + message.proto3_optional = data.proto3_optional; + } + return message; + } + toObject() { + const data: { + name?: string; + number?: number; + label?: FieldDescriptorProto.Label; + type?: FieldDescriptorProto.Type; + type_name?: string; + extendee?: string; + default_value?: string; + oneof_index?: number; + json_name?: string; + options?: ReturnType; + proto3_optional?: boolean; + } = {}; + if (this.name != null) { + data.name = this.name; + } + if (this.number != null) { + data.number = this.number; + } + if (this.label != null) { + data.label = this.label; + } + if (this.type != null) { + data.type = this.type; + } + if (this.type_name != null) { + data.type_name = this.type_name; + } + if (this.extendee != null) { + data.extendee = this.extendee; + } + if (this.default_value != null) { + data.default_value = this.default_value; + } + if (this.oneof_index != null) { + data.oneof_index = this.oneof_index; + } + if (this.json_name != null) { + data.json_name = this.json_name; + } + if (this.options != null) { + data.options = this.options.toObject(); + } + if (this.proto3_optional != null) { + data.proto3_optional = this.proto3_optional; + } + 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_name && this.name.length) + writer.writeString(1, this.name); + if (this.has_number) + writer.writeInt32(3, this.number); + if (this.has_label) + writer.writeEnum(4, this.label); + if (this.has_type) + writer.writeEnum(5, this.type); + if (this.has_type_name && this.type_name.length) + writer.writeString(6, this.type_name); + if (this.has_extendee && this.extendee.length) + writer.writeString(2, this.extendee); + if (this.has_default_value && this.default_value.length) + writer.writeString(7, this.default_value); + if (this.has_oneof_index) + writer.writeInt32(9, this.oneof_index); + if (this.has_json_name && this.json_name.length) + writer.writeString(10, this.json_name); + if (this.has_options) + writer.writeMessage(8, this.options, () => this.options.serialize(writer)); + if (this.has_proto3_optional) + writer.writeBool(17, this.proto3_optional); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): FieldDescriptorProto { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new FieldDescriptorProto(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + message.name = reader.readString(); + break; + case 3: + message.number = reader.readInt32(); + break; + case 4: + message.label = reader.readEnum(); + break; + case 5: + message.type = reader.readEnum(); + break; + case 6: + message.type_name = reader.readString(); + break; + case 2: + message.extendee = reader.readString(); + break; + case 7: + message.default_value = reader.readString(); + break; + case 9: + message.oneof_index = reader.readInt32(); + break; + case 10: + message.json_name = reader.readString(); + break; + case 8: + reader.readMessage(message.options, () => message.options = FieldOptions.deserialize(reader)); + break; + case 17: + message.proto3_optional = reader.readBool(); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): FieldDescriptorProto { + return FieldDescriptorProto.deserialize(bytes); + } + } + export namespace FieldDescriptorProto { + export enum Type { + TYPE_DOUBLE = 1, + TYPE_FLOAT = 2, + TYPE_INT64 = 3, + TYPE_UINT64 = 4, + TYPE_INT32 = 5, + TYPE_FIXED64 = 6, + TYPE_FIXED32 = 7, + TYPE_BOOL = 8, + TYPE_STRING = 9, + TYPE_GROUP = 10, + TYPE_MESSAGE = 11, + TYPE_BYTES = 12, + TYPE_UINT32 = 13, + TYPE_ENUM = 14, + TYPE_SFIXED32 = 15, + TYPE_SFIXED64 = 16, + TYPE_SINT32 = 17, + TYPE_SINT64 = 18 + } + export enum Label { + LABEL_OPTIONAL = 1, + LABEL_REPEATED = 3, + LABEL_REQUIRED = 2 + } + } + export class OneofDescriptorProto extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + name?: string; + options?: OneofOptions; + }) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + if ("name" in data && data.name != undefined) { + this.name = data.name; + } + if ("options" in data && data.options != undefined) { + this.options = data.options; + } + } + } + get name() { + 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; + }): OneofDescriptorProto { + const message = new OneofDescriptorProto({}); + if (data.name != null) { + message.name = data.name; + } + if (data.options != null) { + message.options = OneofOptions.fromObject(data.options); + } + return message; + } + toObject() { + const data: { + name?: string; + options?: ReturnType; + } = {}; + if (this.name != null) { + data.name = this.name; + } + if (this.options != null) { + data.options = this.options.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_name && this.name.length) + writer.writeString(1, this.name); + if (this.has_options) + writer.writeMessage(2, this.options, () => this.options.serialize(writer)); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): OneofDescriptorProto { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new OneofDescriptorProto(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + message.name = reader.readString(); + break; + case 2: + reader.readMessage(message.options, () => message.options = OneofOptions.deserialize(reader)); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): OneofDescriptorProto { + return OneofDescriptorProto.deserialize(bytes); + } + } + export class EnumDescriptorProto extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + name?: string; + value: EnumValueDescriptorProto[]; + options?: EnumOptions; + reserved_range: EnumDescriptorProto.EnumReservedRange[]; + reserved_name: string[]; + }) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [2, 4, 5], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + if ("name" in data && data.name != undefined) { + this.name = data.name; + } + this.value = data.value; + if ("options" in data && data.options != undefined) { + this.options = data.options; + } + this.reserved_range = data.reserved_range; + this.reserved_name = data.reserved_name; + } + } + get name() { + 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[]; + } + set value(value: EnumValueDescriptorProto[]) { + pb_1.Message.setRepeatedWrapperField(this, 2, value); + } + get options() { + return pb_1.Message.getWrapperField(this, EnumOptions, 3) as EnumOptions; + } + 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[]; + } + set reserved_range(value: EnumDescriptorProto.EnumReservedRange[]) { + pb_1.Message.setRepeatedWrapperField(this, 4, value); + } + get reserved_name() { + 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[]; + options?: ReturnType; + reserved_range?: ReturnType[]; + reserved_name: string[]; + }): EnumDescriptorProto { + const message = new EnumDescriptorProto({ + value: data.value.map(item => EnumValueDescriptorProto.fromObject(item)), + reserved_range: data.reserved_range.map(item => EnumDescriptorProto.EnumReservedRange.fromObject(item)), + reserved_name: data.reserved_name + }); + if (data.name != null) { + message.name = data.name; + } + if (data.options != null) { + message.options = EnumOptions.fromObject(data.options); + } + return message; + } + toObject() { + const data: { + name?: string; + value?: ReturnType[]; + options?: ReturnType; + reserved_range?: ReturnType[]; + reserved_name: string[]; + } = { + 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 (this.has_name && this.name.length) + writer.writeString(1, this.name); + if (this.value.length) + writer.writeRepeatedMessage(2, this.value, (item: EnumValueDescriptorProto) => item.serialize(writer)); + if (this.has_options) + writer.writeMessage(3, this.options, () => this.options.serialize(writer)); + if (this.reserved_range.length) + writer.writeRepeatedMessage(4, this.reserved_range, (item: EnumDescriptorProto.EnumReservedRange) => item.serialize(writer)); + if (this.reserved_name.length) + writer.writeRepeatedString(5, this.reserved_name); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): EnumDescriptorProto { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new EnumDescriptorProto(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + message.name = reader.readString(); + break; + case 2: + reader.readMessage(message.value, () => pb_1.Message.addToRepeatedWrapperField(message, 2, EnumValueDescriptorProto.deserialize(reader), EnumValueDescriptorProto)); + break; + case 3: + reader.readMessage(message.options, () => message.options = EnumOptions.deserialize(reader)); + break; + case 4: + reader.readMessage(message.reserved_range, () => pb_1.Message.addToRepeatedWrapperField(message, 4, EnumDescriptorProto.EnumReservedRange.deserialize(reader), EnumDescriptorProto.EnumReservedRange)); + break; + case 5: + pb_1.Message.addToRepeatedField(message, 5, reader.readString()); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): EnumDescriptorProto { + return EnumDescriptorProto.deserialize(bytes); + } + } + export namespace EnumDescriptorProto { + export class EnumReservedRange extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + start?: number; + end?: 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 ("start" in data && data.start != undefined) { + this.start = data.start; + } + if ("end" in data && data.end != undefined) { + this.end = data.end; + } + } + } + get start() { + 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.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; + }): EnumReservedRange { + const message = new EnumReservedRange({}); + if (data.start != null) { + message.start = data.start; + } + if (data.end != null) { + message.end = data.end; + } + return message; + } + toObject() { + const data: { + start?: number; + end?: number; + } = {}; + if (this.start != null) { + data.start = this.start; + } + if (this.end != null) { + data.end = this.end; + } + 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_start) + writer.writeInt32(1, this.start); + if (this.has_end) + writer.writeInt32(2, this.end); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): EnumReservedRange { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new EnumReservedRange(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + message.start = reader.readInt32(); + break; + case 2: + message.end = reader.readInt32(); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): EnumReservedRange { + return EnumReservedRange.deserialize(bytes); + } + } + } + export class EnumValueDescriptorProto extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + name?: string; + number?: number; + options?: EnumValueOptions; + }) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + if ("name" in data && data.name != undefined) { + this.name = data.name; + } + if ("number" in data && data.number != undefined) { + this.number = data.number; + } + if ("options" in data && data.options != undefined) { + this.options = data.options; + } + } + } + get name() { + 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.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; + options?: ReturnType; + }): EnumValueDescriptorProto { + const message = new EnumValueDescriptorProto({}); + if (data.name != null) { + message.name = data.name; + } + if (data.number != null) { + message.number = data.number; + } + if (data.options != null) { + message.options = EnumValueOptions.fromObject(data.options); + } + return message; + } + toObject() { + const data: { + name?: string; + number?: number; + options?: ReturnType; + } = {}; + if (this.name != null) { + data.name = this.name; + } + if (this.number != null) { + data.number = this.number; + } + if (this.options != null) { + data.options = this.options.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_name && this.name.length) + writer.writeString(1, this.name); + if (this.has_number) + writer.writeInt32(2, this.number); + if (this.has_options) + writer.writeMessage(3, this.options, () => this.options.serialize(writer)); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): EnumValueDescriptorProto { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new EnumValueDescriptorProto(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + message.name = reader.readString(); + break; + case 2: + message.number = reader.readInt32(); + break; + case 3: + reader.readMessage(message.options, () => message.options = EnumValueOptions.deserialize(reader)); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): EnumValueDescriptorProto { + return EnumValueDescriptorProto.deserialize(bytes); + } + } + export class ServiceDescriptorProto extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + name?: string; + method: MethodDescriptorProto[]; + options?: ServiceOptions; + }) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [2], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + if ("name" in data && data.name != undefined) { + this.name = data.name; + } + this.method = data.method; + if ("options" in data && data.options != undefined) { + this.options = data.options; + } + } + } + get name() { + 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[]; + } + set method(value: MethodDescriptorProto[]) { + pb_1.Message.setRepeatedWrapperField(this, 2, value); + } + get options() { + return pb_1.Message.getWrapperField(this, ServiceOptions, 3) as ServiceOptions; + } + 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[]; + options?: ReturnType; + }): ServiceDescriptorProto { + const message = new ServiceDescriptorProto({ + method: data.method.map(item => MethodDescriptorProto.fromObject(item)) + }); + if (data.name != null) { + message.name = data.name; + } + if (data.options != null) { + message.options = ServiceOptions.fromObject(data.options); + } + return message; + } + toObject() { + const data: { + name?: string; + method?: ReturnType[]; + options?: ReturnType; + } = {}; + 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(); + } + 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_name && this.name.length) + writer.writeString(1, this.name); + if (this.method.length) + writer.writeRepeatedMessage(2, this.method, (item: MethodDescriptorProto) => item.serialize(writer)); + if (this.has_options) + writer.writeMessage(3, this.options, () => this.options.serialize(writer)); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ServiceDescriptorProto { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ServiceDescriptorProto(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + message.name = reader.readString(); + break; + case 2: + reader.readMessage(message.method, () => pb_1.Message.addToRepeatedWrapperField(message, 2, MethodDescriptorProto.deserialize(reader), MethodDescriptorProto)); + break; + case 3: + reader.readMessage(message.options, () => message.options = ServiceOptions.deserialize(reader)); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): ServiceDescriptorProto { + return ServiceDescriptorProto.deserialize(bytes); + } + } + export class MethodDescriptorProto extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + name?: string; + input_type?: string; + output_type?: string; + options?: MethodOptions; + client_streaming?: boolean; + server_streaming?: boolean; + }) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + if ("name" in data && data.name != undefined) { + this.name = data.name; + } + if ("input_type" in data && data.input_type != undefined) { + this.input_type = data.input_type; + } + if ("output_type" in data && data.output_type != undefined) { + this.output_type = data.output_type; + } + if ("options" in data && data.options != undefined) { + this.options = data.options; + } + if ("client_streaming" in data && data.client_streaming != undefined) { + this.client_streaming = data.client_streaming; + } + if ("server_streaming" in data && data.server_streaming != undefined) { + this.server_streaming = data.server_streaming; + } + } + } + get name() { + 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.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.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; + output_type?: string; + options?: ReturnType; + client_streaming?: boolean; + server_streaming?: boolean; + }): MethodDescriptorProto { + const message = new MethodDescriptorProto({}); + if (data.name != null) { + message.name = data.name; + } + if (data.input_type != null) { + message.input_type = data.input_type; + } + if (data.output_type != null) { + message.output_type = data.output_type; + } + if (data.options != null) { + message.options = MethodOptions.fromObject(data.options); + } + if (data.client_streaming != null) { + message.client_streaming = data.client_streaming; + } + if (data.server_streaming != null) { + message.server_streaming = data.server_streaming; + } + return message; + } + toObject() { + const data: { + name?: string; + input_type?: string; + output_type?: string; + options?: ReturnType; + client_streaming?: boolean; + server_streaming?: boolean; + } = {}; + if (this.name != null) { + data.name = this.name; + } + if (this.input_type != null) { + data.input_type = this.input_type; + } + if (this.output_type != null) { + data.output_type = this.output_type; + } + if (this.options != null) { + data.options = this.options.toObject(); + } + if (this.client_streaming != null) { + data.client_streaming = this.client_streaming; + } + if (this.server_streaming != null) { + data.server_streaming = this.server_streaming; + } + 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_name && this.name.length) + writer.writeString(1, this.name); + if (this.has_input_type && this.input_type.length) + writer.writeString(2, this.input_type); + if (this.has_output_type && this.output_type.length) + writer.writeString(3, this.output_type); + if (this.has_options) + writer.writeMessage(4, this.options, () => this.options.serialize(writer)); + if (this.has_client_streaming) + writer.writeBool(5, this.client_streaming); + if (this.has_server_streaming) + writer.writeBool(6, this.server_streaming); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): MethodDescriptorProto { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new MethodDescriptorProto(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + message.name = reader.readString(); + break; + case 2: + message.input_type = reader.readString(); + break; + case 3: + message.output_type = reader.readString(); + break; + case 4: + reader.readMessage(message.options, () => message.options = MethodOptions.deserialize(reader)); + break; + case 5: + message.client_streaming = reader.readBool(); + break; + case 6: + message.server_streaming = reader.readBool(); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): MethodDescriptorProto { + return MethodDescriptorProto.deserialize(bytes); + } + } + export class FileOptions extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + java_package?: string; + java_outer_classname?: string; + java_multiple_files?: boolean; + /** @deprecated*/ + java_generate_equals_and_hash?: boolean; + java_string_check_utf8?: boolean; + optimize_for?: FileOptions.OptimizeMode; + go_package?: string; + cc_generic_services?: boolean; + java_generic_services?: boolean; + py_generic_services?: boolean; + deprecated?: boolean; + cc_enable_arenas?: boolean; + objc_class_prefix?: string; + csharp_namespace?: string; + swift_prefix?: string; + php_class_prefix?: string; + php_namespace?: string; + php_metadata_namespace?: string; + ruby_package?: string; + features?: FeatureSet; + uninterpreted_option: UninterpretedOption[]; + }) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [999], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + if ("java_package" in data && data.java_package != undefined) { + this.java_package = data.java_package; + } + if ("java_outer_classname" in data && data.java_outer_classname != undefined) { + this.java_outer_classname = data.java_outer_classname; + } + if ("java_multiple_files" in data && data.java_multiple_files != undefined) { + this.java_multiple_files = data.java_multiple_files; + } + if ("java_generate_equals_and_hash" in data && data.java_generate_equals_and_hash != undefined) { + this.java_generate_equals_and_hash = data.java_generate_equals_and_hash; + } + if ("java_string_check_utf8" in data && data.java_string_check_utf8 != undefined) { + this.java_string_check_utf8 = data.java_string_check_utf8; + } + if ("optimize_for" in data && data.optimize_for != undefined) { + this.optimize_for = data.optimize_for; + } + if ("go_package" in data && data.go_package != undefined) { + this.go_package = data.go_package; + } + if ("cc_generic_services" in data && data.cc_generic_services != undefined) { + this.cc_generic_services = data.cc_generic_services; + } + if ("java_generic_services" in data && data.java_generic_services != undefined) { + this.java_generic_services = data.java_generic_services; + } + if ("py_generic_services" in data && data.py_generic_services != undefined) { + this.py_generic_services = data.py_generic_services; + } + if ("deprecated" in data && data.deprecated != undefined) { + this.deprecated = data.deprecated; + } + if ("cc_enable_arenas" in data && data.cc_enable_arenas != undefined) { + this.cc_enable_arenas = data.cc_enable_arenas; + } + if ("objc_class_prefix" in data && data.objc_class_prefix != undefined) { + this.objc_class_prefix = data.objc_class_prefix; + } + if ("csharp_namespace" in data && data.csharp_namespace != undefined) { + this.csharp_namespace = data.csharp_namespace; + } + if ("swift_prefix" in data && data.swift_prefix != undefined) { + this.swift_prefix = data.swift_prefix; + } + if ("php_class_prefix" in data && data.php_class_prefix != undefined) { + this.php_class_prefix = data.php_class_prefix; + } + if ("php_namespace" in data && data.php_namespace != undefined) { + this.php_namespace = data.php_namespace; + } + if ("php_metadata_namespace" in data && data.php_metadata_namespace != undefined) { + this.php_metadata_namespace = data.php_metadata_namespace; + } + if ("ruby_package" in data && data.ruby_package != undefined) { + this.ruby_package = data.ruby_package; + } + if ("features" in data && data.features != undefined) { + this.features = data.features; + } + this.uninterpreted_option = data.uninterpreted_option; + } + } + get java_package() { + 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.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.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.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 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.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.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.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.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.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.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.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 features() { + return pb_1.Message.getWrapperField(this, FeatureSet, 50) as FeatureSet; + } + set features(value: FeatureSet) { + pb_1.Message.setWrapperField(this, 50, value); + } + get has_features() { + return pb_1.Message.getField(this, 50) != null; + } + get uninterpreted_option() { + return pb_1.Message.getRepeatedWrapperField(this, UninterpretedOption, 999) as UninterpretedOption[]; + } + set uninterpreted_option(value: UninterpretedOption[]) { + pb_1.Message.setRepeatedWrapperField(this, 999, value); + } + static fromObject(data: { + java_package?: string; + java_outer_classname?: string; + java_multiple_files?: boolean; + java_generate_equals_and_hash?: boolean; + java_string_check_utf8?: boolean; + optimize_for?: FileOptions.OptimizeMode; + go_package?: string; + cc_generic_services?: boolean; + java_generic_services?: boolean; + py_generic_services?: boolean; + deprecated?: boolean; + cc_enable_arenas?: boolean; + objc_class_prefix?: string; + csharp_namespace?: string; + swift_prefix?: string; + php_class_prefix?: string; + php_namespace?: string; + php_metadata_namespace?: string; + ruby_package?: string; + features?: ReturnType; + uninterpreted_option?: ReturnType[]; + }): FileOptions { + const message = new FileOptions({ + uninterpreted_option: data.uninterpreted_option.map(item => UninterpretedOption.fromObject(item)) + }); + if (data.java_package != null) { + message.java_package = data.java_package; + } + if (data.java_outer_classname != null) { + message.java_outer_classname = data.java_outer_classname; + } + if (data.java_multiple_files != null) { + message.java_multiple_files = data.java_multiple_files; + } + if (data.java_generate_equals_and_hash != null) { + message.java_generate_equals_and_hash = data.java_generate_equals_and_hash; + } + if (data.java_string_check_utf8 != null) { + message.java_string_check_utf8 = data.java_string_check_utf8; + } + if (data.optimize_for != null) { + message.optimize_for = data.optimize_for; + } + if (data.go_package != null) { + message.go_package = data.go_package; + } + if (data.cc_generic_services != null) { + message.cc_generic_services = data.cc_generic_services; + } + if (data.java_generic_services != null) { + message.java_generic_services = data.java_generic_services; + } + if (data.py_generic_services != null) { + message.py_generic_services = data.py_generic_services; + } + if (data.deprecated != null) { + message.deprecated = data.deprecated; + } + if (data.cc_enable_arenas != null) { + message.cc_enable_arenas = data.cc_enable_arenas; + } + if (data.objc_class_prefix != null) { + message.objc_class_prefix = data.objc_class_prefix; + } + if (data.csharp_namespace != null) { + message.csharp_namespace = data.csharp_namespace; + } + if (data.swift_prefix != null) { + message.swift_prefix = data.swift_prefix; + } + if (data.php_class_prefix != null) { + message.php_class_prefix = data.php_class_prefix; + } + if (data.php_namespace != null) { + message.php_namespace = data.php_namespace; + } + if (data.php_metadata_namespace != null) { + message.php_metadata_namespace = data.php_metadata_namespace; + } + if (data.ruby_package != null) { + message.ruby_package = data.ruby_package; + } + if (data.features != null) { + message.features = FeatureSet.fromObject(data.features); + } + return message; + } + toObject() { + const data: { + java_package?: string; + java_outer_classname?: string; + java_multiple_files?: boolean; + java_generate_equals_and_hash?: boolean; + java_string_check_utf8?: boolean; + optimize_for?: FileOptions.OptimizeMode; + go_package?: string; + cc_generic_services?: boolean; + java_generic_services?: boolean; + py_generic_services?: boolean; + deprecated?: boolean; + cc_enable_arenas?: boolean; + objc_class_prefix?: string; + csharp_namespace?: string; + swift_prefix?: string; + php_class_prefix?: string; + php_namespace?: string; + php_metadata_namespace?: string; + ruby_package?: string; + features?: ReturnType; + uninterpreted_option?: ReturnType[]; + } = {}; + if (this.java_package != null) { + data.java_package = this.java_package; + } + if (this.java_outer_classname != null) { + data.java_outer_classname = this.java_outer_classname; + } + if (this.java_multiple_files != null) { + data.java_multiple_files = this.java_multiple_files; + } + if (this.java_generate_equals_and_hash != null) { + data.java_generate_equals_and_hash = this.java_generate_equals_and_hash; + } + if (this.java_string_check_utf8 != null) { + data.java_string_check_utf8 = this.java_string_check_utf8; + } + if (this.optimize_for != null) { + data.optimize_for = this.optimize_for; + } + if (this.go_package != null) { + data.go_package = this.go_package; + } + if (this.cc_generic_services != null) { + data.cc_generic_services = this.cc_generic_services; + } + if (this.java_generic_services != null) { + data.java_generic_services = this.java_generic_services; + } + if (this.py_generic_services != null) { + data.py_generic_services = this.py_generic_services; + } + if (this.deprecated != null) { + data.deprecated = this.deprecated; + } + if (this.cc_enable_arenas != null) { + data.cc_enable_arenas = this.cc_enable_arenas; + } + if (this.objc_class_prefix != null) { + data.objc_class_prefix = this.objc_class_prefix; + } + if (this.csharp_namespace != null) { + data.csharp_namespace = this.csharp_namespace; + } + if (this.swift_prefix != null) { + data.swift_prefix = this.swift_prefix; + } + if (this.php_class_prefix != null) { + data.php_class_prefix = this.php_class_prefix; + } + if (this.php_namespace != null) { + data.php_namespace = this.php_namespace; + } + if (this.php_metadata_namespace != null) { + data.php_metadata_namespace = this.php_metadata_namespace; + } + if (this.ruby_package != null) { + data.ruby_package = this.ruby_package; + } + if (this.features != null) { + data.features = this.features.toObject(); + } + 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.has_java_package && this.java_package.length) + writer.writeString(1, this.java_package); + if (this.has_java_outer_classname && this.java_outer_classname.length) + writer.writeString(8, this.java_outer_classname); + if (this.has_java_multiple_files) + writer.writeBool(10, this.java_multiple_files); + if (this.has_java_generate_equals_and_hash) + writer.writeBool(20, this.java_generate_equals_and_hash); + if (this.has_java_string_check_utf8) + writer.writeBool(27, this.java_string_check_utf8); + if (this.has_optimize_for) + writer.writeEnum(9, this.optimize_for); + if (this.has_go_package && this.go_package.length) + writer.writeString(11, this.go_package); + if (this.has_cc_generic_services) + writer.writeBool(16, this.cc_generic_services); + if (this.has_java_generic_services) + writer.writeBool(17, this.java_generic_services); + if (this.has_py_generic_services) + writer.writeBool(18, this.py_generic_services); + if (this.has_deprecated) + writer.writeBool(23, this.deprecated); + if (this.has_cc_enable_arenas) + writer.writeBool(31, this.cc_enable_arenas); + if (this.has_objc_class_prefix && this.objc_class_prefix.length) + writer.writeString(36, this.objc_class_prefix); + if (this.has_csharp_namespace && this.csharp_namespace.length) + writer.writeString(37, this.csharp_namespace); + if (this.has_swift_prefix && this.swift_prefix.length) + writer.writeString(39, this.swift_prefix); + if (this.has_php_class_prefix && this.php_class_prefix.length) + writer.writeString(40, this.php_class_prefix); + if (this.has_php_namespace && this.php_namespace.length) + writer.writeString(41, this.php_namespace); + if (this.has_php_metadata_namespace && this.php_metadata_namespace.length) + writer.writeString(44, this.php_metadata_namespace); + if (this.has_ruby_package && this.ruby_package.length) + writer.writeString(45, this.ruby_package); + if (this.has_features) + writer.writeMessage(50, this.features, () => this.features.serialize(writer)); + if (this.uninterpreted_option.length) + writer.writeRepeatedMessage(999, this.uninterpreted_option, (item: UninterpretedOption) => item.serialize(writer)); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): FileOptions { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new FileOptions(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + message.java_package = reader.readString(); + break; + case 8: + message.java_outer_classname = reader.readString(); + break; + case 10: + message.java_multiple_files = reader.readBool(); + break; + case 20: + message.java_generate_equals_and_hash = reader.readBool(); + break; + case 27: + message.java_string_check_utf8 = reader.readBool(); + break; + case 9: + message.optimize_for = reader.readEnum(); + break; + case 11: + message.go_package = reader.readString(); + break; + case 16: + message.cc_generic_services = reader.readBool(); + break; + case 17: + message.java_generic_services = reader.readBool(); + break; + case 18: + message.py_generic_services = reader.readBool(); + break; + case 23: + message.deprecated = reader.readBool(); + break; + case 31: + message.cc_enable_arenas = reader.readBool(); + break; + case 36: + message.objc_class_prefix = reader.readString(); + break; + case 37: + message.csharp_namespace = reader.readString(); + break; + case 39: + message.swift_prefix = reader.readString(); + break; + case 40: + message.php_class_prefix = reader.readString(); + break; + case 41: + message.php_namespace = reader.readString(); + break; + case 44: + message.php_metadata_namespace = reader.readString(); + break; + case 45: + message.ruby_package = reader.readString(); + break; + case 50: + reader.readMessage(message.features, () => message.features = FeatureSet.deserialize(reader)); + break; + case 999: + reader.readMessage(message.uninterpreted_option, () => pb_1.Message.addToRepeatedWrapperField(message, 999, UninterpretedOption.deserialize(reader), UninterpretedOption)); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): FileOptions { + return FileOptions.deserialize(bytes); + } + } + export namespace FileOptions { + export enum OptimizeMode { + SPEED = 1, + CODE_SIZE = 2, + LITE_RUNTIME = 3 + } + } + export class MessageOptions extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + message_set_wire_format?: boolean; + no_standard_descriptor_accessor?: boolean; + deprecated?: boolean; + map_entry?: boolean; + /** @deprecated*/ + deprecated_legacy_json_field_conflicts?: boolean; + features?: FeatureSet; + uninterpreted_option: UninterpretedOption[]; + }) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [999], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + if ("message_set_wire_format" in data && data.message_set_wire_format != undefined) { + this.message_set_wire_format = data.message_set_wire_format; + } + if ("no_standard_descriptor_accessor" in data && data.no_standard_descriptor_accessor != undefined) { + this.no_standard_descriptor_accessor = data.no_standard_descriptor_accessor; + } + if ("deprecated" in data && data.deprecated != undefined) { + this.deprecated = data.deprecated; + } + if ("map_entry" in data && data.map_entry != undefined) { + this.map_entry = data.map_entry; + } + if ("deprecated_legacy_json_field_conflicts" in data && data.deprecated_legacy_json_field_conflicts != undefined) { + this.deprecated_legacy_json_field_conflicts = data.deprecated_legacy_json_field_conflicts; + } + if ("features" in data && data.features != undefined) { + this.features = data.features; + } + this.uninterpreted_option = data.uninterpreted_option; + } + } + get message_set_wire_format() { + return pb_1.Message.getFieldWithDefault(this, 1, false) as boolean; + } + 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.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; + } + /** @deprecated*/ + get deprecated_legacy_json_field_conflicts() { + return pb_1.Message.getFieldWithDefault(this, 11, false) as boolean; + } + /** @deprecated*/ + set deprecated_legacy_json_field_conflicts(value: boolean) { + pb_1.Message.setField(this, 11, value); + } + /** @deprecated*/ + get has_deprecated_legacy_json_field_conflicts() { + return pb_1.Message.getField(this, 11) != null; + } + get features() { + return pb_1.Message.getWrapperField(this, FeatureSet, 12) as FeatureSet; + } + set features(value: FeatureSet) { + pb_1.Message.setWrapperField(this, 12, value); + } + get has_features() { + return pb_1.Message.getField(this, 12) != null; + } + get uninterpreted_option() { + return pb_1.Message.getRepeatedWrapperField(this, UninterpretedOption, 999) as UninterpretedOption[]; + } + set uninterpreted_option(value: UninterpretedOption[]) { + pb_1.Message.setRepeatedWrapperField(this, 999, value); + } + static fromObject(data: { + message_set_wire_format?: boolean; + no_standard_descriptor_accessor?: boolean; + deprecated?: boolean; + map_entry?: boolean; + deprecated_legacy_json_field_conflicts?: boolean; + features?: ReturnType; + uninterpreted_option?: ReturnType[]; + }): MessageOptions { + const message = new MessageOptions({ + uninterpreted_option: data.uninterpreted_option.map(item => UninterpretedOption.fromObject(item)) + }); + if (data.message_set_wire_format != null) { + message.message_set_wire_format = data.message_set_wire_format; + } + if (data.no_standard_descriptor_accessor != null) { + message.no_standard_descriptor_accessor = data.no_standard_descriptor_accessor; + } + if (data.deprecated != null) { + message.deprecated = data.deprecated; + } + if (data.map_entry != null) { + message.map_entry = data.map_entry; + } + if (data.deprecated_legacy_json_field_conflicts != null) { + message.deprecated_legacy_json_field_conflicts = data.deprecated_legacy_json_field_conflicts; + } + if (data.features != null) { + message.features = FeatureSet.fromObject(data.features); + } + return message; + } + toObject() { + const data: { + message_set_wire_format?: boolean; + no_standard_descriptor_accessor?: boolean; + deprecated?: boolean; + map_entry?: boolean; + deprecated_legacy_json_field_conflicts?: boolean; + features?: ReturnType; + uninterpreted_option?: ReturnType[]; + } = {}; + if (this.message_set_wire_format != null) { + data.message_set_wire_format = this.message_set_wire_format; + } + if (this.no_standard_descriptor_accessor != null) { + data.no_standard_descriptor_accessor = this.no_standard_descriptor_accessor; + } + if (this.deprecated != null) { + data.deprecated = this.deprecated; + } + if (this.map_entry != null) { + data.map_entry = this.map_entry; + } + if (this.deprecated_legacy_json_field_conflicts != null) { + data.deprecated_legacy_json_field_conflicts = this.deprecated_legacy_json_field_conflicts; + } + if (this.features != null) { + data.features = this.features.toObject(); + } + 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.has_message_set_wire_format) + writer.writeBool(1, this.message_set_wire_format); + if (this.has_no_standard_descriptor_accessor) + writer.writeBool(2, this.no_standard_descriptor_accessor); + if (this.has_deprecated) + writer.writeBool(3, this.deprecated); + if (this.has_map_entry) + writer.writeBool(7, this.map_entry); + if (this.has_deprecated_legacy_json_field_conflicts) + writer.writeBool(11, this.deprecated_legacy_json_field_conflicts); + if (this.has_features) + writer.writeMessage(12, this.features, () => this.features.serialize(writer)); + if (this.uninterpreted_option.length) + writer.writeRepeatedMessage(999, this.uninterpreted_option, (item: UninterpretedOption) => item.serialize(writer)); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): MessageOptions { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new MessageOptions(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + message.message_set_wire_format = reader.readBool(); + break; + case 2: + message.no_standard_descriptor_accessor = reader.readBool(); + break; + case 3: + message.deprecated = reader.readBool(); + break; + case 7: + message.map_entry = reader.readBool(); + break; + case 11: + message.deprecated_legacy_json_field_conflicts = reader.readBool(); + break; + case 12: + reader.readMessage(message.features, () => message.features = FeatureSet.deserialize(reader)); + break; + case 999: + reader.readMessage(message.uninterpreted_option, () => pb_1.Message.addToRepeatedWrapperField(message, 999, UninterpretedOption.deserialize(reader), UninterpretedOption)); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): MessageOptions { + return MessageOptions.deserialize(bytes); + } + } + export class FieldOptions extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + ctype?: FieldOptions.CType; + packed?: boolean; + jstype?: FieldOptions.JSType; + lazy?: boolean; + unverified_lazy?: boolean; + deprecated?: boolean; + weak?: boolean; + debug_redact?: boolean; + retention?: FieldOptions.OptionRetention; + targets: FieldOptions.OptionTargetType[]; + edition_defaults: FieldOptions.EditionDefault[]; + features?: FeatureSet; + feature_support?: FieldOptions.FeatureSupport; + uninterpreted_option: UninterpretedOption[]; + }) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [19, 20, 999], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + if ("ctype" in data && data.ctype != undefined) { + this.ctype = data.ctype; + } + if ("packed" in data && data.packed != undefined) { + this.packed = data.packed; + } + if ("jstype" in data && data.jstype != undefined) { + this.jstype = data.jstype; + } + if ("lazy" in data && data.lazy != undefined) { + this.lazy = data.lazy; + } + if ("unverified_lazy" in data && data.unverified_lazy != undefined) { + this.unverified_lazy = data.unverified_lazy; + } + if ("deprecated" in data && data.deprecated != undefined) { + this.deprecated = data.deprecated; + } + if ("weak" in data && data.weak != undefined) { + this.weak = data.weak; + } + if ("debug_redact" in data && data.debug_redact != undefined) { + this.debug_redact = data.debug_redact; + } + if ("retention" in data && data.retention != undefined) { + this.retention = data.retention; + } + this.targets = data.targets; + this.edition_defaults = data.edition_defaults; + if ("features" in data && data.features != undefined) { + this.features = data.features; + } + if ("feature_support" in data && data.feature_support != undefined) { + this.feature_support = data.feature_support; + } + this.uninterpreted_option = data.uninterpreted_option; + } + } + get ctype() { + return pb_1.Message.getFieldWithDefault(this, 1, FieldOptions.CType.STRING) as FieldOptions.CType; + } + 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.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 unverified_lazy() { + return pb_1.Message.getFieldWithDefault(this, 15, false) as boolean; + } + set unverified_lazy(value: boolean) { + pb_1.Message.setField(this, 15, value); + } + get has_unverified_lazy() { + return pb_1.Message.getField(this, 15) != 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 debug_redact() { + return pb_1.Message.getFieldWithDefault(this, 16, false) as boolean; + } + set debug_redact(value: boolean) { + pb_1.Message.setField(this, 16, value); + } + get has_debug_redact() { + return pb_1.Message.getField(this, 16) != null; + } + get retention() { + return pb_1.Message.getFieldWithDefault(this, 17, FieldOptions.OptionRetention.RETENTION_UNKNOWN) as FieldOptions.OptionRetention; + } + set retention(value: FieldOptions.OptionRetention) { + pb_1.Message.setField(this, 17, value); + } + get has_retention() { + return pb_1.Message.getField(this, 17) != null; + } + get targets() { + return pb_1.Message.getFieldWithDefault(this, 19, []) as FieldOptions.OptionTargetType[]; + } + set targets(value: FieldOptions.OptionTargetType[]) { + pb_1.Message.setField(this, 19, value); + } + get edition_defaults() { + return pb_1.Message.getRepeatedWrapperField(this, FieldOptions.EditionDefault, 20) as FieldOptions.EditionDefault[]; + } + set edition_defaults(value: FieldOptions.EditionDefault[]) { + pb_1.Message.setRepeatedWrapperField(this, 20, value); + } + get features() { + return pb_1.Message.getWrapperField(this, FeatureSet, 21) as FeatureSet; + } + set features(value: FeatureSet) { + pb_1.Message.setWrapperField(this, 21, value); + } + get has_features() { + return pb_1.Message.getField(this, 21) != null; + } + get feature_support() { + return pb_1.Message.getWrapperField(this, FieldOptions.FeatureSupport, 22) as FieldOptions.FeatureSupport; + } + set feature_support(value: FieldOptions.FeatureSupport) { + pb_1.Message.setWrapperField(this, 22, value); + } + get has_feature_support() { + return pb_1.Message.getField(this, 22) != null; + } + get uninterpreted_option() { + return pb_1.Message.getRepeatedWrapperField(this, UninterpretedOption, 999) as UninterpretedOption[]; + } + set uninterpreted_option(value: UninterpretedOption[]) { + pb_1.Message.setRepeatedWrapperField(this, 999, value); + } + static fromObject(data: { + ctype?: FieldOptions.CType; + packed?: boolean; + jstype?: FieldOptions.JSType; + lazy?: boolean; + unverified_lazy?: boolean; + deprecated?: boolean; + weak?: boolean; + debug_redact?: boolean; + retention?: FieldOptions.OptionRetention; + targets: FieldOptions.OptionTargetType[]; + edition_defaults?: ReturnType[]; + features?: ReturnType; + feature_support?: ReturnType; + uninterpreted_option?: ReturnType[]; + }): FieldOptions { + const message = new FieldOptions({ + targets: data.targets, + edition_defaults: data.edition_defaults.map(item => FieldOptions.EditionDefault.fromObject(item)), + uninterpreted_option: data.uninterpreted_option.map(item => UninterpretedOption.fromObject(item)) + }); + if (data.ctype != null) { + message.ctype = data.ctype; + } + if (data.packed != null) { + message.packed = data.packed; + } + if (data.jstype != null) { + message.jstype = data.jstype; + } + if (data.lazy != null) { + message.lazy = data.lazy; + } + if (data.unverified_lazy != null) { + message.unverified_lazy = data.unverified_lazy; + } + if (data.deprecated != null) { + message.deprecated = data.deprecated; + } + if (data.weak != null) { + message.weak = data.weak; + } + if (data.debug_redact != null) { + message.debug_redact = data.debug_redact; + } + if (data.retention != null) { + message.retention = data.retention; + } + if (data.features != null) { + message.features = FeatureSet.fromObject(data.features); + } + if (data.feature_support != null) { + message.feature_support = FieldOptions.FeatureSupport.fromObject(data.feature_support); + } + return message; + } + toObject() { + const data: { + ctype?: FieldOptions.CType; + packed?: boolean; + jstype?: FieldOptions.JSType; + lazy?: boolean; + unverified_lazy?: boolean; + deprecated?: boolean; + weak?: boolean; + debug_redact?: boolean; + retention?: FieldOptions.OptionRetention; + targets: FieldOptions.OptionTargetType[]; + edition_defaults?: ReturnType[]; + features?: ReturnType; + feature_support?: ReturnType; + uninterpreted_option?: ReturnType[]; + } = { + targets: this.targets + }; + if (this.ctype != null) { + data.ctype = this.ctype; + } + if (this.packed != null) { + data.packed = this.packed; + } + if (this.jstype != null) { + data.jstype = this.jstype; + } + if (this.lazy != null) { + data.lazy = this.lazy; + } + if (this.unverified_lazy != null) { + data.unverified_lazy = this.unverified_lazy; + } + if (this.deprecated != null) { + data.deprecated = this.deprecated; + } + if (this.weak != null) { + data.weak = this.weak; + } + if (this.debug_redact != null) { + data.debug_redact = this.debug_redact; + } + if (this.retention != null) { + data.retention = this.retention; + } + if (this.edition_defaults != null) { + data.edition_defaults = this.edition_defaults.map((item: FieldOptions.EditionDefault) => item.toObject()); + } + if (this.features != null) { + data.features = this.features.toObject(); + } + if (this.feature_support != null) { + data.feature_support = this.feature_support.toObject(); + } + 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.has_ctype) + writer.writeEnum(1, this.ctype); + if (this.has_packed) + writer.writeBool(2, this.packed); + if (this.has_jstype) + writer.writeEnum(6, this.jstype); + if (this.has_lazy) + writer.writeBool(5, this.lazy); + if (this.has_unverified_lazy) + writer.writeBool(15, this.unverified_lazy); + if (this.has_deprecated) + writer.writeBool(3, this.deprecated); + if (this.has_weak) + writer.writeBool(10, this.weak); + if (this.has_debug_redact) + writer.writeBool(16, this.debug_redact); + if (this.has_retention) + writer.writeEnum(17, this.retention); + if (this.targets.length) + writer.writeRepeatedEnum(19, this.targets); + if (this.edition_defaults.length) + writer.writeRepeatedMessage(20, this.edition_defaults, (item: FieldOptions.EditionDefault) => item.serialize(writer)); + if (this.has_features) + writer.writeMessage(21, this.features, () => this.features.serialize(writer)); + if (this.has_feature_support) + writer.writeMessage(22, this.feature_support, () => this.feature_support.serialize(writer)); + if (this.uninterpreted_option.length) + writer.writeRepeatedMessage(999, this.uninterpreted_option, (item: UninterpretedOption) => item.serialize(writer)); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): FieldOptions { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new FieldOptions(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + message.ctype = reader.readEnum(); + break; + case 2: + message.packed = reader.readBool(); + break; + case 6: + message.jstype = reader.readEnum(); + break; + case 5: + message.lazy = reader.readBool(); + break; + case 15: + message.unverified_lazy = reader.readBool(); + break; + case 3: + message.deprecated = reader.readBool(); + break; + case 10: + message.weak = reader.readBool(); + break; + case 16: + message.debug_redact = reader.readBool(); + break; + case 17: + message.retention = reader.readEnum(); + break; + case 19: + pb_1.Message.addToRepeatedField(message, 19, reader.readEnum()); + break; + case 20: + reader.readMessage(message.edition_defaults, () => pb_1.Message.addToRepeatedWrapperField(message, 20, FieldOptions.EditionDefault.deserialize(reader), FieldOptions.EditionDefault)); + break; + case 21: + reader.readMessage(message.features, () => message.features = FeatureSet.deserialize(reader)); + break; + case 22: + reader.readMessage(message.feature_support, () => message.feature_support = FieldOptions.FeatureSupport.deserialize(reader)); + break; + case 999: + reader.readMessage(message.uninterpreted_option, () => pb_1.Message.addToRepeatedWrapperField(message, 999, UninterpretedOption.deserialize(reader), UninterpretedOption)); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): FieldOptions { + return FieldOptions.deserialize(bytes); + } + } + export namespace FieldOptions { + export enum CType { + STRING = 0, + CORD = 1, + STRING_PIECE = 2 + } + export enum JSType { + JS_NORMAL = 0, + JS_STRING = 1, + JS_NUMBER = 2 + } + export enum OptionRetention { + RETENTION_UNKNOWN = 0, + RETENTION_RUNTIME = 1, + RETENTION_SOURCE = 2 + } + export enum OptionTargetType { + TARGET_TYPE_UNKNOWN = 0, + TARGET_TYPE_FILE = 1, + TARGET_TYPE_EXTENSION_RANGE = 2, + TARGET_TYPE_MESSAGE = 3, + TARGET_TYPE_FIELD = 4, + TARGET_TYPE_ONEOF = 5, + TARGET_TYPE_ENUM = 6, + TARGET_TYPE_ENUM_ENTRY = 7, + TARGET_TYPE_SERVICE = 8, + TARGET_TYPE_METHOD = 9 + } + export class EditionDefault extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + edition?: Edition; + value?: 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 ("edition" in data && data.edition != undefined) { + this.edition = data.edition; + } + if ("value" in data && data.value != undefined) { + this.value = data.value; + } + } + } + get edition() { + return pb_1.Message.getFieldWithDefault(this, 3, Edition.EDITION_UNKNOWN) as Edition; + } + set edition(value: Edition) { + pb_1.Message.setField(this, 3, value); + } + get has_edition() { + return pb_1.Message.getField(this, 3) != null; + } + get value() { + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; + } + set value(value: string) { + pb_1.Message.setField(this, 2, value); + } + get has_value() { + return pb_1.Message.getField(this, 2) != null; + } + static fromObject(data: { + edition?: Edition; + value?: string; + }): EditionDefault { + const message = new EditionDefault({}); + if (data.edition != null) { + message.edition = data.edition; + } + if (data.value != null) { + message.value = data.value; + } + return message; + } + toObject() { + const data: { + edition?: Edition; + value?: string; + } = {}; + if (this.edition != null) { + data.edition = this.edition; + } + if (this.value != null) { + data.value = this.value; + } + 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_edition) + writer.writeEnum(3, this.edition); + if (this.has_value && this.value.length) + writer.writeString(2, this.value); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): EditionDefault { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new EditionDefault(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 3: + message.edition = reader.readEnum(); + break; + case 2: + message.value = reader.readString(); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): EditionDefault { + return EditionDefault.deserialize(bytes); + } + } + export class FeatureSupport extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + edition_introduced?: Edition; + edition_deprecated?: Edition; + deprecation_warning?: string; + edition_removed?: Edition; + }) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + if ("edition_introduced" in data && data.edition_introduced != undefined) { + this.edition_introduced = data.edition_introduced; + } + if ("edition_deprecated" in data && data.edition_deprecated != undefined) { + this.edition_deprecated = data.edition_deprecated; + } + if ("deprecation_warning" in data && data.deprecation_warning != undefined) { + this.deprecation_warning = data.deprecation_warning; + } + if ("edition_removed" in data && data.edition_removed != undefined) { + this.edition_removed = data.edition_removed; + } + } + } + get edition_introduced() { + return pb_1.Message.getFieldWithDefault(this, 1, Edition.EDITION_UNKNOWN) as Edition; + } + set edition_introduced(value: Edition) { + pb_1.Message.setField(this, 1, value); + } + get has_edition_introduced() { + return pb_1.Message.getField(this, 1) != null; + } + get edition_deprecated() { + return pb_1.Message.getFieldWithDefault(this, 2, Edition.EDITION_UNKNOWN) as Edition; + } + set edition_deprecated(value: Edition) { + pb_1.Message.setField(this, 2, value); + } + get has_edition_deprecated() { + return pb_1.Message.getField(this, 2) != null; + } + get deprecation_warning() { + return pb_1.Message.getFieldWithDefault(this, 3, "") as string; + } + set deprecation_warning(value: string) { + pb_1.Message.setField(this, 3, value); + } + get has_deprecation_warning() { + return pb_1.Message.getField(this, 3) != null; + } + get edition_removed() { + return pb_1.Message.getFieldWithDefault(this, 4, Edition.EDITION_UNKNOWN) as Edition; + } + set edition_removed(value: Edition) { + pb_1.Message.setField(this, 4, value); + } + get has_edition_removed() { + return pb_1.Message.getField(this, 4) != null; + } + static fromObject(data: { + edition_introduced?: Edition; + edition_deprecated?: Edition; + deprecation_warning?: string; + edition_removed?: Edition; + }): FeatureSupport { + const message = new FeatureSupport({}); + if (data.edition_introduced != null) { + message.edition_introduced = data.edition_introduced; + } + if (data.edition_deprecated != null) { + message.edition_deprecated = data.edition_deprecated; + } + if (data.deprecation_warning != null) { + message.deprecation_warning = data.deprecation_warning; + } + if (data.edition_removed != null) { + message.edition_removed = data.edition_removed; + } + return message; + } + toObject() { + const data: { + edition_introduced?: Edition; + edition_deprecated?: Edition; + deprecation_warning?: string; + edition_removed?: Edition; + } = {}; + if (this.edition_introduced != null) { + data.edition_introduced = this.edition_introduced; + } + if (this.edition_deprecated != null) { + data.edition_deprecated = this.edition_deprecated; + } + if (this.deprecation_warning != null) { + data.deprecation_warning = this.deprecation_warning; + } + if (this.edition_removed != null) { + data.edition_removed = this.edition_removed; + } + 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_edition_introduced) + writer.writeEnum(1, this.edition_introduced); + if (this.has_edition_deprecated) + writer.writeEnum(2, this.edition_deprecated); + if (this.has_deprecation_warning && this.deprecation_warning.length) + writer.writeString(3, this.deprecation_warning); + if (this.has_edition_removed) + writer.writeEnum(4, this.edition_removed); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): FeatureSupport { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new FeatureSupport(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + message.edition_introduced = reader.readEnum(); + break; + case 2: + message.edition_deprecated = reader.readEnum(); + break; + case 3: + message.deprecation_warning = reader.readString(); + break; + case 4: + message.edition_removed = reader.readEnum(); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): FeatureSupport { + return FeatureSupport.deserialize(bytes); + } + } + } + export class OneofOptions extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + features?: FeatureSet; + uninterpreted_option: UninterpretedOption[]; + }) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [999], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + if ("features" in data && data.features != undefined) { + this.features = data.features; + } + this.uninterpreted_option = data.uninterpreted_option; + } + } + get features() { + return pb_1.Message.getWrapperField(this, FeatureSet, 1) as FeatureSet; + } + set features(value: FeatureSet) { + pb_1.Message.setWrapperField(this, 1, value); + } + get has_features() { + return pb_1.Message.getField(this, 1) != null; + } + get uninterpreted_option() { + return pb_1.Message.getRepeatedWrapperField(this, UninterpretedOption, 999) as UninterpretedOption[]; + } + set uninterpreted_option(value: UninterpretedOption[]) { + pb_1.Message.setRepeatedWrapperField(this, 999, value); + } + static fromObject(data: { + features?: ReturnType; + uninterpreted_option?: ReturnType[]; + }): OneofOptions { + const message = new OneofOptions({ + uninterpreted_option: data.uninterpreted_option.map(item => UninterpretedOption.fromObject(item)) + }); + if (data.features != null) { + message.features = FeatureSet.fromObject(data.features); + } + return message; + } + toObject() { + const data: { + features?: ReturnType; + uninterpreted_option?: ReturnType[]; + } = {}; + if (this.features != null) { + data.features = this.features.toObject(); + } + 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.has_features) + writer.writeMessage(1, this.features, () => this.features.serialize(writer)); + if (this.uninterpreted_option.length) + writer.writeRepeatedMessage(999, this.uninterpreted_option, (item: UninterpretedOption) => item.serialize(writer)); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): OneofOptions { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new OneofOptions(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + reader.readMessage(message.features, () => message.features = FeatureSet.deserialize(reader)); + break; + case 999: + reader.readMessage(message.uninterpreted_option, () => pb_1.Message.addToRepeatedWrapperField(message, 999, UninterpretedOption.deserialize(reader), UninterpretedOption)); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): OneofOptions { + return OneofOptions.deserialize(bytes); + } + } + export class EnumOptions extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + allow_alias?: boolean; + deprecated?: boolean; + /** @deprecated*/ + deprecated_legacy_json_field_conflicts?: boolean; + features?: FeatureSet; + uninterpreted_option: UninterpretedOption[]; + }) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [999], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + if ("allow_alias" in data && data.allow_alias != undefined) { + this.allow_alias = data.allow_alias; + } + if ("deprecated" in data && data.deprecated != undefined) { + this.deprecated = data.deprecated; + } + if ("deprecated_legacy_json_field_conflicts" in data && data.deprecated_legacy_json_field_conflicts != undefined) { + this.deprecated_legacy_json_field_conflicts = data.deprecated_legacy_json_field_conflicts; + } + if ("features" in data && data.features != undefined) { + this.features = data.features; + } + this.uninterpreted_option = data.uninterpreted_option; + } + } + get allow_alias() { + 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; + } + /** @deprecated*/ + get deprecated_legacy_json_field_conflicts() { + return pb_1.Message.getFieldWithDefault(this, 6, false) as boolean; + } + /** @deprecated*/ + set deprecated_legacy_json_field_conflicts(value: boolean) { + pb_1.Message.setField(this, 6, value); + } + /** @deprecated*/ + get has_deprecated_legacy_json_field_conflicts() { + return pb_1.Message.getField(this, 6) != null; + } + get features() { + return pb_1.Message.getWrapperField(this, FeatureSet, 7) as FeatureSet; + } + set features(value: FeatureSet) { + pb_1.Message.setWrapperField(this, 7, value); + } + get has_features() { + return pb_1.Message.getField(this, 7) != null; + } + get uninterpreted_option() { + return pb_1.Message.getRepeatedWrapperField(this, UninterpretedOption, 999) as UninterpretedOption[]; + } + set uninterpreted_option(value: UninterpretedOption[]) { + pb_1.Message.setRepeatedWrapperField(this, 999, value); + } + static fromObject(data: { + allow_alias?: boolean; + deprecated?: boolean; + deprecated_legacy_json_field_conflicts?: boolean; + features?: ReturnType; + uninterpreted_option?: ReturnType[]; + }): EnumOptions { + const message = new EnumOptions({ + uninterpreted_option: data.uninterpreted_option.map(item => UninterpretedOption.fromObject(item)) + }); + if (data.allow_alias != null) { + message.allow_alias = data.allow_alias; + } + if (data.deprecated != null) { + message.deprecated = data.deprecated; + } + if (data.deprecated_legacy_json_field_conflicts != null) { + message.deprecated_legacy_json_field_conflicts = data.deprecated_legacy_json_field_conflicts; + } + if (data.features != null) { + message.features = FeatureSet.fromObject(data.features); + } + return message; + } + toObject() { + const data: { + allow_alias?: boolean; + deprecated?: boolean; + deprecated_legacy_json_field_conflicts?: boolean; + features?: ReturnType; + uninterpreted_option?: ReturnType[]; + } = {}; + if (this.allow_alias != null) { + data.allow_alias = this.allow_alias; + } + if (this.deprecated != null) { + data.deprecated = this.deprecated; + } + if (this.deprecated_legacy_json_field_conflicts != null) { + data.deprecated_legacy_json_field_conflicts = this.deprecated_legacy_json_field_conflicts; + } + if (this.features != null) { + data.features = this.features.toObject(); + } + 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.has_allow_alias) + writer.writeBool(2, this.allow_alias); + if (this.has_deprecated) + writer.writeBool(3, this.deprecated); + if (this.has_deprecated_legacy_json_field_conflicts) + writer.writeBool(6, this.deprecated_legacy_json_field_conflicts); + if (this.has_features) + writer.writeMessage(7, this.features, () => this.features.serialize(writer)); + if (this.uninterpreted_option.length) + writer.writeRepeatedMessage(999, this.uninterpreted_option, (item: UninterpretedOption) => item.serialize(writer)); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): EnumOptions { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new EnumOptions(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 2: + message.allow_alias = reader.readBool(); + break; + case 3: + message.deprecated = reader.readBool(); + break; + case 6: + message.deprecated_legacy_json_field_conflicts = reader.readBool(); + break; + case 7: + reader.readMessage(message.features, () => message.features = FeatureSet.deserialize(reader)); + break; + case 999: + reader.readMessage(message.uninterpreted_option, () => pb_1.Message.addToRepeatedWrapperField(message, 999, UninterpretedOption.deserialize(reader), UninterpretedOption)); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): EnumOptions { + return EnumOptions.deserialize(bytes); + } + } + export class EnumValueOptions extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + deprecated?: boolean; + features?: FeatureSet; + debug_redact?: boolean; + feature_support?: FieldOptions.FeatureSupport; + uninterpreted_option: UninterpretedOption[]; + }) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [999], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + if ("deprecated" in data && data.deprecated != undefined) { + this.deprecated = data.deprecated; + } + if ("features" in data && data.features != undefined) { + this.features = data.features; + } + if ("debug_redact" in data && data.debug_redact != undefined) { + this.debug_redact = data.debug_redact; + } + if ("feature_support" in data && data.feature_support != undefined) { + this.feature_support = data.feature_support; + } + this.uninterpreted_option = data.uninterpreted_option; + } + } + get deprecated() { + return pb_1.Message.getFieldWithDefault(this, 1, false) as boolean; + } + set deprecated(value: boolean) { + pb_1.Message.setField(this, 1, value); + } + get has_deprecated() { + return pb_1.Message.getField(this, 1) != null; + } + get features() { + return pb_1.Message.getWrapperField(this, FeatureSet, 2) as FeatureSet; + } + set features(value: FeatureSet) { + pb_1.Message.setWrapperField(this, 2, value); + } + get has_features() { + return pb_1.Message.getField(this, 2) != null; + } + get debug_redact() { + return pb_1.Message.getFieldWithDefault(this, 3, false) as boolean; + } + set debug_redact(value: boolean) { + pb_1.Message.setField(this, 3, value); + } + get has_debug_redact() { + return pb_1.Message.getField(this, 3) != null; + } + get feature_support() { + return pb_1.Message.getWrapperField(this, FieldOptions.FeatureSupport, 4) as FieldOptions.FeatureSupport; + } + set feature_support(value: FieldOptions.FeatureSupport) { + pb_1.Message.setWrapperField(this, 4, value); + } + get has_feature_support() { + return pb_1.Message.getField(this, 4) != null; + } + get uninterpreted_option() { + return pb_1.Message.getRepeatedWrapperField(this, UninterpretedOption, 999) as UninterpretedOption[]; + } + set uninterpreted_option(value: UninterpretedOption[]) { + pb_1.Message.setRepeatedWrapperField(this, 999, value); + } + static fromObject(data: { + deprecated?: boolean; + features?: ReturnType; + debug_redact?: boolean; + feature_support?: ReturnType; + uninterpreted_option?: ReturnType[]; + }): EnumValueOptions { + const message = new EnumValueOptions({ + uninterpreted_option: data.uninterpreted_option.map(item => UninterpretedOption.fromObject(item)) + }); + if (data.deprecated != null) { + message.deprecated = data.deprecated; + } + if (data.features != null) { + message.features = FeatureSet.fromObject(data.features); + } + if (data.debug_redact != null) { + message.debug_redact = data.debug_redact; + } + if (data.feature_support != null) { + message.feature_support = FieldOptions.FeatureSupport.fromObject(data.feature_support); + } + return message; + } + toObject() { + const data: { + deprecated?: boolean; + features?: ReturnType; + debug_redact?: boolean; + feature_support?: ReturnType; + uninterpreted_option?: ReturnType[]; + } = {}; + if (this.deprecated != null) { + data.deprecated = this.deprecated; + } + if (this.features != null) { + data.features = this.features.toObject(); + } + if (this.debug_redact != null) { + data.debug_redact = this.debug_redact; + } + if (this.feature_support != null) { + data.feature_support = this.feature_support.toObject(); + } + 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.has_deprecated) + writer.writeBool(1, this.deprecated); + if (this.has_features) + writer.writeMessage(2, this.features, () => this.features.serialize(writer)); + if (this.has_debug_redact) + writer.writeBool(3, this.debug_redact); + if (this.has_feature_support) + writer.writeMessage(4, this.feature_support, () => this.feature_support.serialize(writer)); + if (this.uninterpreted_option.length) + writer.writeRepeatedMessage(999, this.uninterpreted_option, (item: UninterpretedOption) => item.serialize(writer)); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): EnumValueOptions { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new EnumValueOptions(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + message.deprecated = reader.readBool(); + break; + case 2: + reader.readMessage(message.features, () => message.features = FeatureSet.deserialize(reader)); + break; + case 3: + message.debug_redact = reader.readBool(); + break; + case 4: + reader.readMessage(message.feature_support, () => message.feature_support = FieldOptions.FeatureSupport.deserialize(reader)); + break; + case 999: + reader.readMessage(message.uninterpreted_option, () => pb_1.Message.addToRepeatedWrapperField(message, 999, UninterpretedOption.deserialize(reader), UninterpretedOption)); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): EnumValueOptions { + return EnumValueOptions.deserialize(bytes); + } + } + export class ServiceOptions extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + features?: FeatureSet; + deprecated?: boolean; + uninterpreted_option: UninterpretedOption[]; + }) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [999], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + if ("features" in data && data.features != undefined) { + this.features = data.features; + } + if ("deprecated" in data && data.deprecated != undefined) { + this.deprecated = data.deprecated; + } + this.uninterpreted_option = data.uninterpreted_option; + } + } + get features() { + return pb_1.Message.getWrapperField(this, FeatureSet, 34) as FeatureSet; + } + set features(value: FeatureSet) { + pb_1.Message.setWrapperField(this, 34, value); + } + get has_features() { + return pb_1.Message.getField(this, 34) != null; + } + get deprecated() { + return pb_1.Message.getFieldWithDefault(this, 33, false) as boolean; + } + 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[]; + } + set uninterpreted_option(value: UninterpretedOption[]) { + pb_1.Message.setRepeatedWrapperField(this, 999, value); + } + static fromObject(data: { + features?: ReturnType; + deprecated?: boolean; + uninterpreted_option?: ReturnType[]; + }): ServiceOptions { + const message = new ServiceOptions({ + uninterpreted_option: data.uninterpreted_option.map(item => UninterpretedOption.fromObject(item)) + }); + if (data.features != null) { + message.features = FeatureSet.fromObject(data.features); + } + if (data.deprecated != null) { + message.deprecated = data.deprecated; + } + return message; + } + toObject() { + const data: { + features?: ReturnType; + deprecated?: boolean; + uninterpreted_option?: ReturnType[]; + } = {}; + if (this.features != null) { + data.features = this.features.toObject(); + } + 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.has_features) + writer.writeMessage(34, this.features, () => this.features.serialize(writer)); + if (this.has_deprecated) + writer.writeBool(33, this.deprecated); + if (this.uninterpreted_option.length) + writer.writeRepeatedMessage(999, this.uninterpreted_option, (item: UninterpretedOption) => item.serialize(writer)); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ServiceOptions { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ServiceOptions(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 34: + reader.readMessage(message.features, () => message.features = FeatureSet.deserialize(reader)); + break; + case 33: + message.deprecated = reader.readBool(); + break; + case 999: + reader.readMessage(message.uninterpreted_option, () => pb_1.Message.addToRepeatedWrapperField(message, 999, UninterpretedOption.deserialize(reader), UninterpretedOption)); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): ServiceOptions { + return ServiceOptions.deserialize(bytes); + } + } + export class MethodOptions extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + deprecated?: boolean; + idempotency_level?: MethodOptions.IdempotencyLevel; + features?: FeatureSet; + uninterpreted_option: UninterpretedOption[]; + }) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [999], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + if ("deprecated" in data && data.deprecated != undefined) { + this.deprecated = data.deprecated; + } + if ("idempotency_level" in data && data.idempotency_level != undefined) { + this.idempotency_level = data.idempotency_level; + } + if ("features" in data && data.features != undefined) { + this.features = data.features; + } + this.uninterpreted_option = data.uninterpreted_option; + } + } + get deprecated() { + return pb_1.Message.getFieldWithDefault(this, 33, false) as boolean; + } + 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 features() { + return pb_1.Message.getWrapperField(this, FeatureSet, 35) as FeatureSet; + } + set features(value: FeatureSet) { + pb_1.Message.setWrapperField(this, 35, value); + } + get has_features() { + return pb_1.Message.getField(this, 35) != null; + } + get uninterpreted_option() { + return pb_1.Message.getRepeatedWrapperField(this, UninterpretedOption, 999) as UninterpretedOption[]; + } + set uninterpreted_option(value: UninterpretedOption[]) { + pb_1.Message.setRepeatedWrapperField(this, 999, value); + } + static fromObject(data: { + deprecated?: boolean; + idempotency_level?: MethodOptions.IdempotencyLevel; + features?: ReturnType; + uninterpreted_option?: ReturnType[]; + }): MethodOptions { + const message = new MethodOptions({ + uninterpreted_option: data.uninterpreted_option.map(item => UninterpretedOption.fromObject(item)) + }); + if (data.deprecated != null) { + message.deprecated = data.deprecated; + } + if (data.idempotency_level != null) { + message.idempotency_level = data.idempotency_level; + } + if (data.features != null) { + message.features = FeatureSet.fromObject(data.features); + } + return message; + } + toObject() { + const data: { + deprecated?: boolean; + idempotency_level?: MethodOptions.IdempotencyLevel; + features?: ReturnType; + uninterpreted_option?: ReturnType[]; + } = {}; + if (this.deprecated != null) { + data.deprecated = this.deprecated; + } + if (this.idempotency_level != null) { + data.idempotency_level = this.idempotency_level; + } + if (this.features != null) { + data.features = this.features.toObject(); + } + 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.has_deprecated) + writer.writeBool(33, this.deprecated); + if (this.has_idempotency_level) + writer.writeEnum(34, this.idempotency_level); + if (this.has_features) + writer.writeMessage(35, this.features, () => this.features.serialize(writer)); + if (this.uninterpreted_option.length) + writer.writeRepeatedMessage(999, this.uninterpreted_option, (item: UninterpretedOption) => item.serialize(writer)); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): MethodOptions { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new MethodOptions(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 33: + message.deprecated = reader.readBool(); + break; + case 34: + message.idempotency_level = reader.readEnum(); + break; + case 35: + reader.readMessage(message.features, () => message.features = FeatureSet.deserialize(reader)); + break; + case 999: + reader.readMessage(message.uninterpreted_option, () => pb_1.Message.addToRepeatedWrapperField(message, 999, UninterpretedOption.deserialize(reader), UninterpretedOption)); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): MethodOptions { + return MethodOptions.deserialize(bytes); + } + } + export namespace MethodOptions { + export enum IdempotencyLevel { + IDEMPOTENCY_UNKNOWN = 0, + NO_SIDE_EFFECTS = 1, + IDEMPOTENT = 2 + } + } + export class UninterpretedOption extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + name: UninterpretedOption.NamePart[]; + identifier_value?: string; + positive_int_value?: number; + negative_int_value?: number; + double_value?: number; + string_value?: Uint8Array; + aggregate_value?: string; + }) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [2], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + this.name = data.name; + if ("identifier_value" in data && data.identifier_value != undefined) { + this.identifier_value = data.identifier_value; + } + if ("positive_int_value" in data && data.positive_int_value != undefined) { + this.positive_int_value = data.positive_int_value; + } + if ("negative_int_value" in data && data.negative_int_value != undefined) { + this.negative_int_value = data.negative_int_value; + } + if ("double_value" in data && data.double_value != undefined) { + this.double_value = data.double_value; + } + if ("string_value" in data && data.string_value != undefined) { + this.string_value = data.string_value; + } + if ("aggregate_value" in data && data.aggregate_value != undefined) { + this.aggregate_value = data.aggregate_value; + } + } + } + get name() { + return pb_1.Message.getRepeatedWrapperField(this, UninterpretedOption.NamePart, 2) as UninterpretedOption.NamePart[]; + } + set name(value: UninterpretedOption.NamePart[]) { + pb_1.Message.setRepeatedWrapperField(this, 2, value); + } + get identifier_value() { + 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.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.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.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.getFieldWithDefault(this, 7, new Uint8Array(0)) 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.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[]; + identifier_value?: string; + positive_int_value?: number; + negative_int_value?: number; + double_value?: number; + string_value?: Uint8Array; + aggregate_value?: string; + }): UninterpretedOption { + const message = new UninterpretedOption({ + name: data.name.map(item => UninterpretedOption.NamePart.fromObject(item)) + }); + if (data.identifier_value != null) { + message.identifier_value = data.identifier_value; + } + if (data.positive_int_value != null) { + message.positive_int_value = data.positive_int_value; + } + if (data.negative_int_value != null) { + message.negative_int_value = data.negative_int_value; + } + if (data.double_value != null) { + message.double_value = data.double_value; + } + if (data.string_value != null) { + message.string_value = data.string_value; + } + if (data.aggregate_value != null) { + message.aggregate_value = data.aggregate_value; + } + return message; + } + toObject() { + const data: { + name?: ReturnType[]; + identifier_value?: string; + positive_int_value?: number; + negative_int_value?: number; + double_value?: number; + string_value?: Uint8Array; + aggregate_value?: string; + } = {}; + 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; + } + if (this.positive_int_value != null) { + data.positive_int_value = this.positive_int_value; + } + if (this.negative_int_value != null) { + data.negative_int_value = this.negative_int_value; + } + if (this.double_value != null) { + data.double_value = this.double_value; + } + if (this.string_value != null) { + data.string_value = this.string_value; + } + if (this.aggregate_value != null) { + data.aggregate_value = this.aggregate_value; + } + 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.name.length) + writer.writeRepeatedMessage(2, this.name, (item: UninterpretedOption.NamePart) => item.serialize(writer)); + if (this.has_identifier_value && this.identifier_value.length) + writer.writeString(3, this.identifier_value); + if (this.has_positive_int_value) + writer.writeUint64(4, this.positive_int_value); + if (this.has_negative_int_value) + writer.writeInt64(5, this.negative_int_value); + if (this.has_double_value) + writer.writeDouble(6, this.double_value); + if (this.has_string_value && this.string_value.length) + writer.writeBytes(7, this.string_value); + if (this.has_aggregate_value && this.aggregate_value.length) + writer.writeString(8, this.aggregate_value); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): UninterpretedOption { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new UninterpretedOption(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 2: + reader.readMessage(message.name, () => pb_1.Message.addToRepeatedWrapperField(message, 2, UninterpretedOption.NamePart.deserialize(reader), UninterpretedOption.NamePart)); + break; + case 3: + message.identifier_value = reader.readString(); + break; + case 4: + message.positive_int_value = reader.readUint64(); + break; + case 5: + message.negative_int_value = reader.readInt64(); + break; + case 6: + message.double_value = reader.readDouble(); + break; + case 7: + message.string_value = reader.readBytes(); + break; + case 8: + message.aggregate_value = reader.readString(); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): UninterpretedOption { + return UninterpretedOption.deserialize(bytes); + } + } + export namespace UninterpretedOption { + export class NamePart extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + name_part: string; + is_extension: boolean; + }) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + this.name_part = data.name_part; + this.is_extension = data.is_extension; + } + } + get name_part() { + return pb_1.Message.getField(this, 1) as string; + } + 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; + }): NamePart { + const message = new NamePart({ + name_part: data.name_part, + is_extension: data.is_extension + }); + return message; + } + toObject() { + const data: { + 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 (this.has_name_part && this.name_part.length) + writer.writeString(1, this.name_part); + if (this.has_is_extension) + writer.writeBool(2, this.is_extension); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): NamePart { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new NamePart(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + message.name_part = reader.readString(); + break; + case 2: + message.is_extension = reader.readBool(); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): NamePart { + return NamePart.deserialize(bytes); + } + } + } + export class FeatureSet extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + field_presence?: FeatureSet.FieldPresence; + enum_type?: FeatureSet.EnumType; + repeated_field_encoding?: FeatureSet.RepeatedFieldEncoding; + utf8_validation?: FeatureSet.Utf8Validation; + message_encoding?: FeatureSet.MessageEncoding; + json_format?: FeatureSet.JsonFormat; + }) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + if ("field_presence" in data && data.field_presence != undefined) { + this.field_presence = data.field_presence; + } + if ("enum_type" in data && data.enum_type != undefined) { + this.enum_type = data.enum_type; + } + if ("repeated_field_encoding" in data && data.repeated_field_encoding != undefined) { + this.repeated_field_encoding = data.repeated_field_encoding; + } + if ("utf8_validation" in data && data.utf8_validation != undefined) { + this.utf8_validation = data.utf8_validation; + } + if ("message_encoding" in data && data.message_encoding != undefined) { + this.message_encoding = data.message_encoding; + } + if ("json_format" in data && data.json_format != undefined) { + this.json_format = data.json_format; + } + } + } + get field_presence() { + return pb_1.Message.getFieldWithDefault(this, 1, FeatureSet.FieldPresence.FIELD_PRESENCE_UNKNOWN) as FeatureSet.FieldPresence; + } + set field_presence(value: FeatureSet.FieldPresence) { + pb_1.Message.setField(this, 1, value); + } + get has_field_presence() { + return pb_1.Message.getField(this, 1) != null; + } + get enum_type() { + return pb_1.Message.getFieldWithDefault(this, 2, FeatureSet.EnumType.ENUM_TYPE_UNKNOWN) as FeatureSet.EnumType; + } + set enum_type(value: FeatureSet.EnumType) { + pb_1.Message.setField(this, 2, value); + } + get has_enum_type() { + return pb_1.Message.getField(this, 2) != null; + } + get repeated_field_encoding() { + return pb_1.Message.getFieldWithDefault(this, 3, FeatureSet.RepeatedFieldEncoding.REPEATED_FIELD_ENCODING_UNKNOWN) as FeatureSet.RepeatedFieldEncoding; + } + set repeated_field_encoding(value: FeatureSet.RepeatedFieldEncoding) { + pb_1.Message.setField(this, 3, value); + } + get has_repeated_field_encoding() { + return pb_1.Message.getField(this, 3) != null; + } + get utf8_validation() { + return pb_1.Message.getFieldWithDefault(this, 4, FeatureSet.Utf8Validation.UTF8_VALIDATION_UNKNOWN) as FeatureSet.Utf8Validation; + } + set utf8_validation(value: FeatureSet.Utf8Validation) { + pb_1.Message.setField(this, 4, value); + } + get has_utf8_validation() { + return pb_1.Message.getField(this, 4) != null; + } + get message_encoding() { + return pb_1.Message.getFieldWithDefault(this, 5, FeatureSet.MessageEncoding.MESSAGE_ENCODING_UNKNOWN) as FeatureSet.MessageEncoding; + } + set message_encoding(value: FeatureSet.MessageEncoding) { + pb_1.Message.setField(this, 5, value); + } + get has_message_encoding() { + return pb_1.Message.getField(this, 5) != null; + } + get json_format() { + return pb_1.Message.getFieldWithDefault(this, 6, FeatureSet.JsonFormat.JSON_FORMAT_UNKNOWN) as FeatureSet.JsonFormat; + } + set json_format(value: FeatureSet.JsonFormat) { + pb_1.Message.setField(this, 6, value); + } + get has_json_format() { + return pb_1.Message.getField(this, 6) != null; + } + static fromObject(data: { + field_presence?: FeatureSet.FieldPresence; + enum_type?: FeatureSet.EnumType; + repeated_field_encoding?: FeatureSet.RepeatedFieldEncoding; + utf8_validation?: FeatureSet.Utf8Validation; + message_encoding?: FeatureSet.MessageEncoding; + json_format?: FeatureSet.JsonFormat; + }): FeatureSet { + const message = new FeatureSet({}); + if (data.field_presence != null) { + message.field_presence = data.field_presence; + } + if (data.enum_type != null) { + message.enum_type = data.enum_type; + } + if (data.repeated_field_encoding != null) { + message.repeated_field_encoding = data.repeated_field_encoding; + } + if (data.utf8_validation != null) { + message.utf8_validation = data.utf8_validation; + } + if (data.message_encoding != null) { + message.message_encoding = data.message_encoding; + } + if (data.json_format != null) { + message.json_format = data.json_format; + } + return message; + } + toObject() { + const data: { + field_presence?: FeatureSet.FieldPresence; + enum_type?: FeatureSet.EnumType; + repeated_field_encoding?: FeatureSet.RepeatedFieldEncoding; + utf8_validation?: FeatureSet.Utf8Validation; + message_encoding?: FeatureSet.MessageEncoding; + json_format?: FeatureSet.JsonFormat; + } = {}; + if (this.field_presence != null) { + data.field_presence = this.field_presence; + } + if (this.enum_type != null) { + data.enum_type = this.enum_type; + } + if (this.repeated_field_encoding != null) { + data.repeated_field_encoding = this.repeated_field_encoding; + } + if (this.utf8_validation != null) { + data.utf8_validation = this.utf8_validation; + } + if (this.message_encoding != null) { + data.message_encoding = this.message_encoding; + } + if (this.json_format != null) { + data.json_format = this.json_format; + } + 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_field_presence) + writer.writeEnum(1, this.field_presence); + if (this.has_enum_type) + writer.writeEnum(2, this.enum_type); + if (this.has_repeated_field_encoding) + writer.writeEnum(3, this.repeated_field_encoding); + if (this.has_utf8_validation) + writer.writeEnum(4, this.utf8_validation); + if (this.has_message_encoding) + writer.writeEnum(5, this.message_encoding); + if (this.has_json_format) + writer.writeEnum(6, this.json_format); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): FeatureSet { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new FeatureSet(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + message.field_presence = reader.readEnum(); + break; + case 2: + message.enum_type = reader.readEnum(); + break; + case 3: + message.repeated_field_encoding = reader.readEnum(); + break; + case 4: + message.utf8_validation = reader.readEnum(); + break; + case 5: + message.message_encoding = reader.readEnum(); + break; + case 6: + message.json_format = reader.readEnum(); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): FeatureSet { + return FeatureSet.deserialize(bytes); + } + } + export namespace FeatureSet { + export enum FieldPresence { + FIELD_PRESENCE_UNKNOWN = 0, + EXPLICIT = 1, + IMPLICIT = 2, + LEGACY_REQUIRED = 3 + } + export enum EnumType { + ENUM_TYPE_UNKNOWN = 0, + OPEN = 1, + CLOSED = 2 + } + export enum RepeatedFieldEncoding { + REPEATED_FIELD_ENCODING_UNKNOWN = 0, + PACKED = 1, + EXPANDED = 2 + } + export enum Utf8Validation { + UTF8_VALIDATION_UNKNOWN = 0, + VERIFY = 2, + NONE = 3 + } + export enum MessageEncoding { + MESSAGE_ENCODING_UNKNOWN = 0, + LENGTH_PREFIXED = 1, + DELIMITED = 2 + } + export enum JsonFormat { + JSON_FORMAT_UNKNOWN = 0, + ALLOW = 1, + LEGACY_BEST_EFFORT = 2 + } + } + export class FeatureSetDefaults extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + defaults: FeatureSetDefaults.FeatureSetEditionDefault[]; + minimum_edition?: Edition; + maximum_edition?: Edition; + }) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [1], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + this.defaults = data.defaults; + if ("minimum_edition" in data && data.minimum_edition != undefined) { + this.minimum_edition = data.minimum_edition; + } + if ("maximum_edition" in data && data.maximum_edition != undefined) { + this.maximum_edition = data.maximum_edition; + } + } + } + get defaults() { + return pb_1.Message.getRepeatedWrapperField(this, FeatureSetDefaults.FeatureSetEditionDefault, 1) as FeatureSetDefaults.FeatureSetEditionDefault[]; + } + set defaults(value: FeatureSetDefaults.FeatureSetEditionDefault[]) { + pb_1.Message.setRepeatedWrapperField(this, 1, value); + } + get minimum_edition() { + return pb_1.Message.getFieldWithDefault(this, 4, Edition.EDITION_UNKNOWN) as Edition; + } + set minimum_edition(value: Edition) { + pb_1.Message.setField(this, 4, value); + } + get has_minimum_edition() { + return pb_1.Message.getField(this, 4) != null; + } + get maximum_edition() { + return pb_1.Message.getFieldWithDefault(this, 5, Edition.EDITION_UNKNOWN) as Edition; + } + set maximum_edition(value: Edition) { + pb_1.Message.setField(this, 5, value); + } + get has_maximum_edition() { + return pb_1.Message.getField(this, 5) != null; + } + static fromObject(data: { + defaults?: ReturnType[]; + minimum_edition?: Edition; + maximum_edition?: Edition; + }): FeatureSetDefaults { + const message = new FeatureSetDefaults({ + defaults: data.defaults.map(item => FeatureSetDefaults.FeatureSetEditionDefault.fromObject(item)) + }); + if (data.minimum_edition != null) { + message.minimum_edition = data.minimum_edition; + } + if (data.maximum_edition != null) { + message.maximum_edition = data.maximum_edition; + } + return message; + } + toObject() { + const data: { + defaults?: ReturnType[]; + minimum_edition?: Edition; + maximum_edition?: Edition; + } = {}; + if (this.defaults != null) { + data.defaults = this.defaults.map((item: FeatureSetDefaults.FeatureSetEditionDefault) => item.toObject()); + } + if (this.minimum_edition != null) { + data.minimum_edition = this.minimum_edition; + } + if (this.maximum_edition != null) { + data.maximum_edition = this.maximum_edition; + } + 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.defaults.length) + writer.writeRepeatedMessage(1, this.defaults, (item: FeatureSetDefaults.FeatureSetEditionDefault) => item.serialize(writer)); + if (this.has_minimum_edition) + writer.writeEnum(4, this.minimum_edition); + if (this.has_maximum_edition) + writer.writeEnum(5, this.maximum_edition); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): FeatureSetDefaults { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new FeatureSetDefaults(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + reader.readMessage(message.defaults, () => pb_1.Message.addToRepeatedWrapperField(message, 1, FeatureSetDefaults.FeatureSetEditionDefault.deserialize(reader), FeatureSetDefaults.FeatureSetEditionDefault)); + break; + case 4: + message.minimum_edition = reader.readEnum(); + break; + case 5: + message.maximum_edition = reader.readEnum(); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): FeatureSetDefaults { + return FeatureSetDefaults.deserialize(bytes); + } + } + export namespace FeatureSetDefaults { + export class FeatureSetEditionDefault extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + edition?: Edition; + overridable_features?: FeatureSet; + fixed_features?: FeatureSet; + }) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + if ("edition" in data && data.edition != undefined) { + this.edition = data.edition; + } + if ("overridable_features" in data && data.overridable_features != undefined) { + this.overridable_features = data.overridable_features; + } + if ("fixed_features" in data && data.fixed_features != undefined) { + this.fixed_features = data.fixed_features; + } + } + } + get edition() { + return pb_1.Message.getFieldWithDefault(this, 3, Edition.EDITION_UNKNOWN) as Edition; + } + set edition(value: Edition) { + pb_1.Message.setField(this, 3, value); + } + get has_edition() { + return pb_1.Message.getField(this, 3) != null; + } + get overridable_features() { + return pb_1.Message.getWrapperField(this, FeatureSet, 4) as FeatureSet; + } + set overridable_features(value: FeatureSet) { + pb_1.Message.setWrapperField(this, 4, value); + } + get has_overridable_features() { + return pb_1.Message.getField(this, 4) != null; + } + get fixed_features() { + return pb_1.Message.getWrapperField(this, FeatureSet, 5) as FeatureSet; + } + set fixed_features(value: FeatureSet) { + pb_1.Message.setWrapperField(this, 5, value); + } + get has_fixed_features() { + return pb_1.Message.getField(this, 5) != null; + } + static fromObject(data: { + edition?: Edition; + overridable_features?: ReturnType; + fixed_features?: ReturnType; + }): FeatureSetEditionDefault { + const message = new FeatureSetEditionDefault({}); + if (data.edition != null) { + message.edition = data.edition; + } + if (data.overridable_features != null) { + message.overridable_features = FeatureSet.fromObject(data.overridable_features); + } + if (data.fixed_features != null) { + message.fixed_features = FeatureSet.fromObject(data.fixed_features); + } + return message; + } + toObject() { + const data: { + edition?: Edition; + overridable_features?: ReturnType; + fixed_features?: ReturnType; + } = {}; + if (this.edition != null) { + data.edition = this.edition; + } + if (this.overridable_features != null) { + data.overridable_features = this.overridable_features.toObject(); + } + if (this.fixed_features != null) { + data.fixed_features = this.fixed_features.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_edition) + writer.writeEnum(3, this.edition); + if (this.has_overridable_features) + writer.writeMessage(4, this.overridable_features, () => this.overridable_features.serialize(writer)); + if (this.has_fixed_features) + writer.writeMessage(5, this.fixed_features, () => this.fixed_features.serialize(writer)); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): FeatureSetEditionDefault { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new FeatureSetEditionDefault(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 3: + message.edition = reader.readEnum(); + break; + case 4: + reader.readMessage(message.overridable_features, () => message.overridable_features = FeatureSet.deserialize(reader)); + break; + case 5: + reader.readMessage(message.fixed_features, () => message.fixed_features = FeatureSet.deserialize(reader)); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): FeatureSetEditionDefault { + return FeatureSetEditionDefault.deserialize(bytes); + } + } + } + export class SourceCodeInfo extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + location: SourceCodeInfo.Location[]; + }) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [1], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + this.location = data.location; + } + } + get location() { + return pb_1.Message.getRepeatedWrapperField(this, SourceCodeInfo.Location, 1) as SourceCodeInfo.Location[]; + } + set location(value: SourceCodeInfo.Location[]) { + pb_1.Message.setRepeatedWrapperField(this, 1, value); + } + static fromObject(data: { + location?: ReturnType[]; + }): SourceCodeInfo { + const message = new SourceCodeInfo({ + location: data.location.map(item => SourceCodeInfo.Location.fromObject(item)) + }); + return message; + } + toObject() { + const data: { + 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.length) + writer.writeRepeatedMessage(1, this.location, (item: SourceCodeInfo.Location) => item.serialize(writer)); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): SourceCodeInfo { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new SourceCodeInfo(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + reader.readMessage(message.location, () => pb_1.Message.addToRepeatedWrapperField(message, 1, SourceCodeInfo.Location.deserialize(reader), SourceCodeInfo.Location)); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): SourceCodeInfo { + return SourceCodeInfo.deserialize(bytes); + } + } + export namespace SourceCodeInfo { + export class Location extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + path: number[]; + span: number[]; + leading_comments?: string; + trailing_comments?: string; + leading_detached_comments: string[]; + }) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [1, 2, 6], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + this.path = data.path; + this.span = data.span; + if ("leading_comments" in data && data.leading_comments != undefined) { + this.leading_comments = data.leading_comments; + } + if ("trailing_comments" in data && data.trailing_comments != undefined) { + this.trailing_comments = data.trailing_comments; + } + this.leading_detached_comments = data.leading_detached_comments; + } + } + get path() { + 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.getFieldWithDefault(this, 2, []) as number[]; + } + set span(value: number[]) { + pb_1.Message.setField(this, 2, value); + } + get leading_comments() { + 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.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.getFieldWithDefault(this, 6, []) as string[]; + } + set leading_detached_comments(value: string[]) { + pb_1.Message.setField(this, 6, value); + } + static fromObject(data: { + path: number[]; + span: number[]; + leading_comments?: string; + trailing_comments?: string; + leading_detached_comments: string[]; + }): Location { + const message = new Location({ + path: data.path, + span: data.span, + leading_detached_comments: data.leading_detached_comments + }); + if (data.leading_comments != null) { + message.leading_comments = data.leading_comments; + } + if (data.trailing_comments != null) { + message.trailing_comments = data.trailing_comments; + } + return message; + } + toObject() { + const data: { + path: number[]; + span: number[]; + leading_comments?: string; + trailing_comments?: string; + leading_detached_comments: string[]; + } = { + path: this.path, + span: this.span, + leading_detached_comments: this.leading_detached_comments + }; + if (this.leading_comments != null) { + data.leading_comments = this.leading_comments; + } + if (this.trailing_comments != null) { + data.trailing_comments = this.trailing_comments; + } + 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.path.length) + writer.writePackedInt32(1, this.path); + if (this.span.length) + writer.writePackedInt32(2, this.span); + if (this.has_leading_comments && this.leading_comments.length) + writer.writeString(3, this.leading_comments); + if (this.has_trailing_comments && this.trailing_comments.length) + writer.writeString(4, this.trailing_comments); + if (this.leading_detached_comments.length) + writer.writeRepeatedString(6, this.leading_detached_comments); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Location { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Location(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + message.path = reader.readPackedInt32(); + break; + case 2: + message.span = reader.readPackedInt32(); + break; + case 3: + message.leading_comments = reader.readString(); + break; + case 4: + message.trailing_comments = reader.readString(); + break; + case 6: + pb_1.Message.addToRepeatedField(message, 6, reader.readString()); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): Location { + return Location.deserialize(bytes); + } + } + } + export class GeneratedCodeInfo extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + annotation: GeneratedCodeInfo.Annotation[]; + }) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [1], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + this.annotation = data.annotation; + } + } + get annotation() { + return pb_1.Message.getRepeatedWrapperField(this, GeneratedCodeInfo.Annotation, 1) as GeneratedCodeInfo.Annotation[]; + } + set annotation(value: GeneratedCodeInfo.Annotation[]) { + pb_1.Message.setRepeatedWrapperField(this, 1, value); + } + static fromObject(data: { + annotation?: ReturnType[]; + }): GeneratedCodeInfo { + const message = new GeneratedCodeInfo({ + annotation: data.annotation.map(item => GeneratedCodeInfo.Annotation.fromObject(item)) + }); + return message; + } + toObject() { + const data: { + 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.length) + writer.writeRepeatedMessage(1, this.annotation, (item: GeneratedCodeInfo.Annotation) => item.serialize(writer)); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): GeneratedCodeInfo { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new GeneratedCodeInfo(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + reader.readMessage(message.annotation, () => pb_1.Message.addToRepeatedWrapperField(message, 1, GeneratedCodeInfo.Annotation.deserialize(reader), GeneratedCodeInfo.Annotation)); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): GeneratedCodeInfo { + return GeneratedCodeInfo.deserialize(bytes); + } + } + export namespace GeneratedCodeInfo { + export class Annotation extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + path: number[]; + source_file?: string; + begin?: number; + end?: number; + semantic?: GeneratedCodeInfo.Annotation.Semantic; + }) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [1], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + this.path = data.path; + if ("source_file" in data && data.source_file != undefined) { + this.source_file = data.source_file; + } + if ("begin" in data && data.begin != undefined) { + this.begin = data.begin; + } + if ("end" in data && data.end != undefined) { + this.end = data.end; + } + if ("semantic" in data && data.semantic != undefined) { + this.semantic = data.semantic; + } + } + } + get path() { + 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.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.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.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; + } + get semantic() { + return pb_1.Message.getFieldWithDefault(this, 5, GeneratedCodeInfo.Annotation.Semantic.NONE) as GeneratedCodeInfo.Annotation.Semantic; + } + set semantic(value: GeneratedCodeInfo.Annotation.Semantic) { + pb_1.Message.setField(this, 5, value); + } + get has_semantic() { + return pb_1.Message.getField(this, 5) != null; + } + static fromObject(data: { + path: number[]; + source_file?: string; + begin?: number; + end?: number; + semantic?: GeneratedCodeInfo.Annotation.Semantic; + }): Annotation { + const message = new Annotation({ + path: data.path + }); + if (data.source_file != null) { + message.source_file = data.source_file; + } + if (data.begin != null) { + message.begin = data.begin; + } + if (data.end != null) { + message.end = data.end; + } + if (data.semantic != null) { + message.semantic = data.semantic; + } + return message; + } + toObject() { + const data: { + path: number[]; + source_file?: string; + begin?: number; + end?: number; + semantic?: GeneratedCodeInfo.Annotation.Semantic; + } = { + path: this.path + }; + if (this.source_file != null) { + data.source_file = this.source_file; + } + if (this.begin != null) { + data.begin = this.begin; + } + if (this.end != null) { + data.end = this.end; + } + if (this.semantic != null) { + data.semantic = this.semantic; + } + 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.path.length) + writer.writePackedInt32(1, this.path); + if (this.has_source_file && this.source_file.length) + writer.writeString(2, this.source_file); + if (this.has_begin) + writer.writeInt32(3, this.begin); + if (this.has_end) + writer.writeInt32(4, this.end); + if (this.has_semantic) + writer.writeEnum(5, this.semantic); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Annotation { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Annotation(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + message.path = reader.readPackedInt32(); + break; + case 2: + message.source_file = reader.readString(); + break; + case 3: + message.begin = reader.readInt32(); + break; + case 4: + message.end = reader.readInt32(); + break; + case 5: + message.semantic = reader.readEnum(); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): Annotation { + return Annotation.deserialize(bytes); + } + } + export namespace Annotation { + export enum Semantic { + NONE = 0, + SET = 1, + ALIAS = 2 + } + } + } +} diff --git a/frontend/wizard-vue/src/urlmaker/index.ts b/frontend/wizard-vue/src/urlmaker/index.ts index 4ae3e86..9049ddf 100644 --- a/frontend/wizard-vue/src/urlmaker/index.ts +++ b/frontend/wizard-vue/src/urlmaker/index.ts @@ -1,4 +1,6 @@ import type {Specs} from "@/urlmaker/specs.ts"; +import {b64decode, b64encode, compress, decompress, decompressString} from "@/urlmaker/utils.ts"; +import {rssalchemy as pb} from '@/urlmaker/proto/specs.ts'; const apiBase = import.meta.env.VITE_API_BASE || document.location.origin; const renderEndpoint = '/api/v1/render/'; // trailing slash @@ -23,7 +25,7 @@ export async function decodePreset(preset: string): Promise { } export async function decodeSpecsPart(encodedData: string): Promise { - console.log('Data len=' + encodedData.length); + console.log('Decoded data len=' + encodedData.length); const m = encodedData.match(/(\d*):?([A-Za-z0-9+/=]+)/); if(!m) { throw 'Regex failed'; @@ -33,11 +35,17 @@ export async function decodeSpecsPart(encodedData: string): Promise { encodedData = m[2]; let buf = b64decode(encodedData); - if (version === 0) { - const jsonData = await decompress(buf); - return JSON.parse(jsonData); + switch (version) { + case 0: + const jsonData = await decompressString(buf); + return JSON.parse(jsonData); + case 1: + const data = await decompress(buf); + //@ts-ignore + return pb.Specs.deserializeBinary(data).toObject(); + default: + throw 'Unknown version' } - throw 'Unknown version' } export async function encodeUrl(specs: Specs): Promise { @@ -49,48 +57,15 @@ export async function encodePreset(specs: Specs): Promise { } export async function encodeSpecsPart(specs: Specs): Promise { - const jsonData = JSON.stringify(specs); - const buf = await compress(jsonData); - const encodedData = b64encode(buf); - console.log('Data len=' + encodedData.length); - const version = 0; + const pbSpecs = pb.Specs.fromObject(specs); + let data = pbSpecs.serializeBinary(); + data = await compress(data); + const encodedData = b64encode(data); + console.log('Encoded data len=' + encodedData.length); + const version = 1; return `${version}:${encodedData}`; } export function getScreenshotUrl(url: string): string { return `${apiBase}${screenshotEndpoint}?url=${encodeURIComponent(url)}`; } - -function b64encode(buf: Uint8Array): string { - // @ts-ignore - const b64str = btoa(String.fromCharCode.apply(null, buf)); - // @ts-ignore - return b64str.replaceAll('=', ''); -} - -function b64decode(s: string): Uint8Array { - return Uint8Array.from(atob(s), c => c.charCodeAt(0)); -} - -async function compress(s: string): Promise { - let byteArray = new TextEncoder().encode(s); - let cs = new CompressionStream('deflate-raw'); - let writer = cs.writable.getWriter(); - // noinspection ES6MissingAwait - writer.write(byteArray); - // noinspection ES6MissingAwait - writer.close(); - let response = new Response(cs.readable); - return new Uint8Array(await response.arrayBuffer()); -} - -async function decompress(buf: Uint8Array): Promise { - let ds = new DecompressionStream('deflate-raw'); - let writer = ds.writable.getWriter(); - // noinspection ES6MissingAwait - writer.write(buf); - // noinspection ES6MissingAwait - writer.close(); - let response = new Response(ds.readable); - return response.text(); -} diff --git a/frontend/wizard-vue/src/urlmaker/proto/specs.ts b/frontend/wizard-vue/src/urlmaker/proto/specs.ts new file mode 100644 index 0000000..0782248 --- /dev/null +++ b/frontend/wizard-vue/src/urlmaker/proto/specs.ts @@ -0,0 +1,283 @@ +/** + * Generated by the protoc-gen-ts. DO NOT EDIT! + * compiler version: 5.29.3 + * source: proto/specs.proto + * git: https://github.com/thesayyn/protoc-gen-ts */ +import * as dependency_1 from "./../tagger/tagger"; +import * as pb_1 from "google-protobuf"; +export namespace rssalchemy { + export class Specs extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + url?: string; + selector_post?: string; + selector_title?: string; + selector_link?: string; + selector_description?: string; + selector_author?: string; + selector_created?: string; + selector_content?: string; + selector_enclosure?: string; + cache_lifetime?: 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 ("url" in data && data.url != undefined) { + this.url = data.url; + } + if ("selector_post" in data && data.selector_post != undefined) { + this.selector_post = data.selector_post; + } + if ("selector_title" in data && data.selector_title != undefined) { + this.selector_title = data.selector_title; + } + if ("selector_link" in data && data.selector_link != undefined) { + this.selector_link = data.selector_link; + } + if ("selector_description" in data && data.selector_description != undefined) { + this.selector_description = data.selector_description; + } + if ("selector_author" in data && data.selector_author != undefined) { + this.selector_author = data.selector_author; + } + if ("selector_created" in data && data.selector_created != undefined) { + this.selector_created = data.selector_created; + } + if ("selector_content" in data && data.selector_content != undefined) { + this.selector_content = data.selector_content; + } + if ("selector_enclosure" in data && data.selector_enclosure != undefined) { + this.selector_enclosure = data.selector_enclosure; + } + if ("cache_lifetime" in data && data.cache_lifetime != undefined) { + this.cache_lifetime = data.cache_lifetime; + } + } + } + get url() { + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; + } + set url(value: string) { + pb_1.Message.setField(this, 1, value); + } + get selector_post() { + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; + } + set selector_post(value: string) { + pb_1.Message.setField(this, 2, value); + } + get selector_title() { + return pb_1.Message.getFieldWithDefault(this, 3, "") as string; + } + set selector_title(value: string) { + pb_1.Message.setField(this, 3, value); + } + get selector_link() { + return pb_1.Message.getFieldWithDefault(this, 4, "") as string; + } + set selector_link(value: string) { + pb_1.Message.setField(this, 4, value); + } + get selector_description() { + return pb_1.Message.getFieldWithDefault(this, 5, "") as string; + } + set selector_description(value: string) { + pb_1.Message.setField(this, 5, value); + } + get selector_author() { + return pb_1.Message.getFieldWithDefault(this, 6, "") as string; + } + set selector_author(value: string) { + pb_1.Message.setField(this, 6, value); + } + get selector_created() { + return pb_1.Message.getFieldWithDefault(this, 7, "") as string; + } + set selector_created(value: string) { + pb_1.Message.setField(this, 7, value); + } + get selector_content() { + return pb_1.Message.getFieldWithDefault(this, 8, "") as string; + } + set selector_content(value: string) { + pb_1.Message.setField(this, 8, value); + } + get selector_enclosure() { + return pb_1.Message.getFieldWithDefault(this, 9, "") as string; + } + set selector_enclosure(value: string) { + pb_1.Message.setField(this, 9, value); + } + get cache_lifetime() { + return pb_1.Message.getFieldWithDefault(this, 10, "") as string; + } + set cache_lifetime(value: string) { + pb_1.Message.setField(this, 10, value); + } + static fromObject(data: { + url?: string; + selector_post?: string; + selector_title?: string; + selector_link?: string; + selector_description?: string; + selector_author?: string; + selector_created?: string; + selector_content?: string; + selector_enclosure?: string; + cache_lifetime?: string; + }): Specs { + const message = new Specs({}); + if (data.url != null) { + message.url = data.url; + } + if (data.selector_post != null) { + message.selector_post = data.selector_post; + } + if (data.selector_title != null) { + message.selector_title = data.selector_title; + } + if (data.selector_link != null) { + message.selector_link = data.selector_link; + } + if (data.selector_description != null) { + message.selector_description = data.selector_description; + } + if (data.selector_author != null) { + message.selector_author = data.selector_author; + } + if (data.selector_created != null) { + message.selector_created = data.selector_created; + } + if (data.selector_content != null) { + message.selector_content = data.selector_content; + } + if (data.selector_enclosure != null) { + message.selector_enclosure = data.selector_enclosure; + } + if (data.cache_lifetime != null) { + message.cache_lifetime = data.cache_lifetime; + } + return message; + } + toObject() { + const data: { + url?: string; + selector_post?: string; + selector_title?: string; + selector_link?: string; + selector_description?: string; + selector_author?: string; + selector_created?: string; + selector_content?: string; + selector_enclosure?: string; + cache_lifetime?: string; + } = {}; + if (this.url != null) { + data.url = this.url; + } + if (this.selector_post != null) { + data.selector_post = this.selector_post; + } + if (this.selector_title != null) { + data.selector_title = this.selector_title; + } + if (this.selector_link != null) { + data.selector_link = this.selector_link; + } + if (this.selector_description != null) { + data.selector_description = this.selector_description; + } + if (this.selector_author != null) { + data.selector_author = this.selector_author; + } + if (this.selector_created != null) { + data.selector_created = this.selector_created; + } + if (this.selector_content != null) { + data.selector_content = this.selector_content; + } + if (this.selector_enclosure != null) { + data.selector_enclosure = this.selector_enclosure; + } + if (this.cache_lifetime != null) { + data.cache_lifetime = this.cache_lifetime; + } + 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.url.length) + writer.writeString(1, this.url); + if (this.selector_post.length) + writer.writeString(2, this.selector_post); + if (this.selector_title.length) + writer.writeString(3, this.selector_title); + if (this.selector_link.length) + writer.writeString(4, this.selector_link); + if (this.selector_description.length) + writer.writeString(5, this.selector_description); + if (this.selector_author.length) + writer.writeString(6, this.selector_author); + if (this.selector_created.length) + writer.writeString(7, this.selector_created); + if (this.selector_content.length) + writer.writeString(8, this.selector_content); + if (this.selector_enclosure.length) + writer.writeString(9, this.selector_enclosure); + if (this.cache_lifetime.length) + writer.writeString(10, this.cache_lifetime); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Specs { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Specs(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + message.url = reader.readString(); + break; + case 2: + message.selector_post = reader.readString(); + break; + case 3: + message.selector_title = reader.readString(); + break; + case 4: + message.selector_link = reader.readString(); + break; + case 5: + message.selector_description = reader.readString(); + break; + case 6: + message.selector_author = reader.readString(); + break; + case 7: + message.selector_created = reader.readString(); + break; + case 8: + message.selector_content = reader.readString(); + break; + case 9: + message.selector_enclosure = reader.readString(); + break; + case 10: + message.cache_lifetime = reader.readString(); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): Specs { + return Specs.deserialize(bytes); + } + } +} diff --git a/frontend/wizard-vue/src/urlmaker/tagger/tagger.ts b/frontend/wizard-vue/src/urlmaker/tagger/tagger.ts new file mode 100644 index 0000000..635a199 --- /dev/null +++ b/frontend/wizard-vue/src/urlmaker/tagger/tagger.ts @@ -0,0 +1,7 @@ +/** + * Generated by the protoc-gen-ts. DO NOT EDIT! + * compiler version: 5.29.3 + * source: tagger/tagger.proto + * git: https://github.com/thesayyn/protoc-gen-ts */ +import * as dependency_1 from "./../google/protobuf/descriptor"; +export namespace tagger { } diff --git a/frontend/wizard-vue/src/urlmaker/utils.ts b/frontend/wizard-vue/src/urlmaker/utils.ts new file mode 100644 index 0000000..af72a4f --- /dev/null +++ b/frontend/wizard-vue/src/urlmaker/utils.ts @@ -0,0 +1,41 @@ +export async function compress(s: string|Uint8Array): Promise { + if(typeof s === 'string') { + s = new TextEncoder().encode(s); + } + let cs = new CompressionStream('deflate-raw'); + let writer = cs.writable.getWriter(); + // noinspection ES6MissingAwait + writer.write(s); + // noinspection ES6MissingAwait + writer.close(); + let response = new Response(cs.readable); + return new Uint8Array(await response.arrayBuffer()); +} + +export async function decompress(buf: Uint8Array): Promise { + let ds = new DecompressionStream('deflate-raw'); + let writer = ds.writable.getWriter(); + // noinspection ES6MissingAwait + writer.write(buf); + // noinspection ES6MissingAwait + writer.close(); + let response = new Response(ds.readable); + return response.bytes(); +} + +export async function decompressString(buf: Uint8Array): Promise { + const binary = await decompress(buf); + // @ts-ignore + return String.fromCharCode.apply(null, binary); +} + +export function b64encode(buf: Uint8Array): string { + // @ts-ignore + const b64str = btoa(String.fromCharCode.apply(null, buf)); + // @ts-ignore + return b64str.replaceAll('=', ''); +} + +export function b64decode(s: string): Uint8Array { + return Uint8Array.from(atob(s), c => c.charCodeAt(0)); +} diff --git a/go.mod b/go.mod index 60841a5..4d0949e 100644 --- a/go.mod +++ b/go.mod @@ -16,8 +16,10 @@ require ( github.com/nats-io/nats.go v1.38.0 github.com/playwright-community/playwright-go v0.5001.0 github.com/redis/go-redis/v9 v9.7.0 + github.com/srikrsna/protoc-gen-gotag v1.0.2 github.com/stretchr/testify v1.10.0 golang.org/x/time v0.8.0 + google.golang.org/protobuf v1.35.2 ) require ( @@ -97,7 +99,6 @@ require ( google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 // indirect google.golang.org/grpc v1.67.1 // indirect - google.golang.org/protobuf v1.35.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect olympos.io/encoding/edn v0.0.0-20201019073823-d3554ca0b0a3 // indirect ) diff --git a/go.sum b/go.sum index 4cd7931..b9fae53 100644 --- a/go.sum +++ b/go.sum @@ -92,6 +92,7 @@ github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= +github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0= @@ -226,6 +227,7 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -242,6 +244,7 @@ github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lyft/protoc-gen-star/v2 v2.0.3/go.mod h1:amey7yeodaJhXSbf/TlLvWiqQfLOSpEk//mLlc+axEk= github.com/magefile/mage v1.14.0 h1:6QDX3g6z1YvJ4olPhT1wksUcSa/V0a1B+pJb73fBjyo= github.com/magefile/mage v1.14.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= github.com/markusmobius/go-dateparser v1.2.3 h1:TvrsIvr5uk+3v6poDjaicnAFJ5IgtFHgLiuMY2Eb7Nw= @@ -302,6 +305,7 @@ github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/playwright-community/playwright-go v0.5001.0 h1:EY3oB+rU9cUp6CLHguWE8VMZTwAg+83Yyb7dQqEmGLg= github.com/playwright-community/playwright-go v0.5001.0/go.mod h1:kBNWs/w2aJ2ZUp1wEOOFLXgOqvppFngM5OS+qyhl+ZM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -332,6 +336,10 @@ github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUt github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= +github.com/spf13/afero v1.5.1/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= +github.com/srikrsna/protoc-gen-gotag v1.0.2 h1:4okv8GlbVbvmL678VX0AobxaMkERlBbHvgWhUnbcrPM= +github.com/srikrsna/protoc-gen-gotag v1.0.2/go.mod h1:HiXK5kcp/ZRnNPahuJm3tzfGDoD8xzvLNdg5/PYKq7Q= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= @@ -342,6 +350,7 @@ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXf github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= @@ -383,6 +392,7 @@ go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -473,6 +483,7 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= @@ -506,6 +517,7 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io= google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= diff --git a/internal/api/http/handler.go b/internal/api/http/handler.go index ac7c9e8..a98e28d 100644 --- a/internal/api/http/handler.go +++ b/internal/api/http/handler.go @@ -9,6 +9,7 @@ import ( "errors" "fmt" "github.com/egor3f/rssalchemy/internal/adapters" + "github.com/egor3f/rssalchemy/internal/api/http/pb" "github.com/egor3f/rssalchemy/internal/models" "github.com/egor3f/rssalchemy/internal/validators" "github.com/go-playground/validator/v10" @@ -16,6 +17,7 @@ import ( "github.com/labstack/echo/v4" "github.com/labstack/gommon/log" "golang.org/x/time/rate" + "google.golang.org/protobuf/proto" "html" "io" "net/url" @@ -64,19 +66,6 @@ func (h *Handler) SetupRoutes(g *echo.Group) { g.GET("/screenshot", h.handlePageScreenshot) } -type Specs struct { - URL string `json:"URL" validate:"url"` - SelectorPost string `json:"selector_post" validate:"selector"` - SelectorTitle string `json:"selector_title" validate:"selector"` - SelectorLink string `json:"selector_link" validate:"selector"` - SelectorDescription string `json:"selector_description" validate:"omitempty,selector"` - SelectorAuthor string `json:"selector_author" validate:"selector"` - SelectorCreated string `json:"selector_created" validate:"selector"` - SelectorContent string `json:"selector_content" validate:"omitempty,selector"` - SelectorEnclosure string `json:"selector_enclosure" validate:"selector"` - CacheLifetime string `json:"cache_lifetime"` -} - func (h *Handler) handleRender(c echo.Context) error { specsParam := c.Param("specs") specs, err := h.decodeSpecs(specsParam) @@ -86,7 +75,7 @@ func (h *Handler) handleRender(c echo.Context) error { task := models.Task{ TaskType: models.TaskTypeExtract, - URL: specs.URL, + URL: specs.Url, SelectorPost: specs.SelectorPost, SelectorTitle: specs.SelectorTitle, SelectorLink: specs.SelectorLink, @@ -199,37 +188,44 @@ func (h *Handler) checkRateLimit(c echo.Context) bool { return limiter.Allow() } -func (h *Handler) decodeSpecs(specsParam string) (Specs, error) { +func (h *Handler) decodeSpecs(specsParam string) (*pb.Specs, error) { var err error version := 0 paramSplit := strings.Split(specsParam, ":") if len(paramSplit) == 2 { version, err = strconv.Atoi(paramSplit[0]) if err != nil { - return Specs{}, fmt.Errorf("invalid version: %s", paramSplit[0]) + return nil, fmt.Errorf("invalid version: %s", paramSplit[0]) } specsParam = paramSplit[1] } - if version != 0 { - return Specs{}, fmt.Errorf("unknown version: %d", version) - } - decodedSpecsParam, err := base64.StdEncoding.WithPadding(base64.NoPadding).DecodeString(specsParam) if err != nil { - return Specs{}, fmt.Errorf("failed to decode specs: %w", err) + return nil, fmt.Errorf("failed to decode specs: %w", err) } rc := flate.NewReader(bytes.NewReader(decodedSpecsParam)) decodedSpecsParam, err = io.ReadAll(rc) if err != nil { - return Specs{}, fmt.Errorf("failed to unzip specs: %w", err) + return nil, fmt.Errorf("failed to unzip specs: %w", err) } - var specs Specs - if err := json.Unmarshal(decodedSpecsParam, &specs); err != nil { - return Specs{}, fmt.Errorf("failed to unmarshal specs: %w", err) + + specs := &pb.Specs{} + switch version { + case 0: + if err := json.Unmarshal(decodedSpecsParam, specs); err != nil { + return nil, fmt.Errorf("failed to unmarshal json specs: %w", err) + } + case 1: + if err := proto.Unmarshal(decodedSpecsParam, specs); err != nil { + return nil, fmt.Errorf("failed to unmarshal proto specs: %w", err) + } + default: + return nil, fmt.Errorf("unknown version: %d", version) } + if err := h.validate.Struct(specs); err != nil { - return Specs{}, fmt.Errorf("specs are invalid: %w", err) + return nil, fmt.Errorf("specs are invalid: %w", err) } return specs, nil } diff --git a/internal/api/http/pb/specs.pb.go b/internal/api/http/pb/specs.pb.go new file mode 100644 index 0000000..4b6e77f --- /dev/null +++ b/internal/api/http/pb/specs.pb.go @@ -0,0 +1,253 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.4 +// protoc v5.29.3 +// source: proto/specs.proto + +package pb + +import ( + _ "github.com/srikrsna/protoc-gen-gotag/tagger" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type Specs struct { + state protoimpl.MessageState `protogen:"open.v1"` + Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url" validate:"url"` + SelectorPost string `protobuf:"bytes,2,opt,name=selector_post,json=selectorPost,proto3" json:"selector_post" validate:"selector"` + SelectorTitle string `protobuf:"bytes,3,opt,name=selector_title,json=selectorTitle,proto3" json:"selector_title" validate:"selector"` + SelectorLink string `protobuf:"bytes,4,opt,name=selector_link,json=selectorLink,proto3" json:"selector_link" validate:"selector"` + SelectorDescription string `protobuf:"bytes,5,opt,name=selector_description,json=selectorDescription,proto3" json:"selector_description" validate:"omitempty,selector"` + SelectorAuthor string `protobuf:"bytes,6,opt,name=selector_author,json=selectorAuthor,proto3" json:"selector_author" validate:"selector"` + SelectorCreated string `protobuf:"bytes,7,opt,name=selector_created,json=selectorCreated,proto3" json:"selector_created" validate:"selector"` + SelectorContent string `protobuf:"bytes,8,opt,name=selector_content,json=selectorContent,proto3" json:"selector_content" validate:"omitempty,selector"` + SelectorEnclosure string `protobuf:"bytes,9,opt,name=selector_enclosure,json=selectorEnclosure,proto3" json:"selector_enclosure" validate:"selector"` + CacheLifetime string `protobuf:"bytes,10,opt,name=cache_lifetime,json=cacheLifetime,proto3" json:"cache_lifetime"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Specs) Reset() { + *x = Specs{} + mi := &file_proto_specs_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Specs) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Specs) ProtoMessage() {} + +func (x *Specs) ProtoReflect() protoreflect.Message { + mi := &file_proto_specs_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Specs.ProtoReflect.Descriptor instead. +func (*Specs) Descriptor() ([]byte, []int) { + return file_proto_specs_proto_rawDescGZIP(), []int{0} +} + +func (x *Specs) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *Specs) GetSelectorPost() string { + if x != nil { + return x.SelectorPost + } + return "" +} + +func (x *Specs) GetSelectorTitle() string { + if x != nil { + return x.SelectorTitle + } + return "" +} + +func (x *Specs) GetSelectorLink() string { + if x != nil { + return x.SelectorLink + } + return "" +} + +func (x *Specs) GetSelectorDescription() string { + if x != nil { + return x.SelectorDescription + } + return "" +} + +func (x *Specs) GetSelectorAuthor() string { + if x != nil { + return x.SelectorAuthor + } + return "" +} + +func (x *Specs) GetSelectorCreated() string { + if x != nil { + return x.SelectorCreated + } + return "" +} + +func (x *Specs) GetSelectorContent() string { + if x != nil { + return x.SelectorContent + } + return "" +} + +func (x *Specs) GetSelectorEnclosure() string { + if x != nil { + return x.SelectorEnclosure + } + return "" +} + +func (x *Specs) GetCacheLifetime() string { + if x != nil { + return x.CacheLifetime + } + return "" +} + +var File_proto_specs_proto protoreflect.FileDescriptor + +var file_proto_specs_proto_rawDesc = string([]byte{ + 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x72, 0x73, 0x73, 0x61, 0x6c, 0x63, 0x68, 0x65, 0x6d, 0x79, 0x1a, + 0x13, 0x74, 0x61, 0x67, 0x67, 0x65, 0x72, 0x2f, 0x74, 0x61, 0x67, 0x67, 0x65, 0x72, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xef, 0x06, 0x0a, 0x05, 0x53, 0x70, 0x65, 0x63, 0x73, 0x12, 0x30, + 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, 0x9a, 0x84, 0x9e, + 0x03, 0x19, 0x6a, 0x73, 0x6f, 0x6e, 0x3a, 0x22, 0x75, 0x72, 0x6c, 0x22, 0x20, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x22, 0x75, 0x72, 0x6c, 0x22, 0x52, 0x03, 0x75, 0x72, 0x6c, + 0x12, 0x52, 0x0a, 0x0d, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x70, 0x6f, 0x73, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2d, 0x9a, 0x84, 0x9e, 0x03, 0x28, 0x6a, 0x73, + 0x6f, 0x6e, 0x3a, 0x22, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x70, 0x6f, 0x73, + 0x74, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x22, 0x73, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x52, 0x0c, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x50, 0x6f, 0x73, 0x74, 0x12, 0x55, 0x0a, 0x0e, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2e, 0x9a, 0x84, + 0x9e, 0x03, 0x29, 0x6a, 0x73, 0x6f, 0x6e, 0x3a, 0x22, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x65, 0x3a, 0x22, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x52, 0x0d, 0x73, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x52, 0x0a, 0x0d, 0x73, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x2d, 0x9a, 0x84, 0x9e, 0x03, 0x28, 0x6a, 0x73, 0x6f, 0x6e, 0x3a, 0x22, 0x73, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x22, 0x20, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x22, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x22, 0x52, 0x0c, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4c, 0x69, 0x6e, 0x6b, 0x12, + 0x71, 0x0a, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3e, 0x9a, + 0x84, 0x9e, 0x03, 0x39, 0x6a, 0x73, 0x6f, 0x6e, 0x3a, 0x22, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x20, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x22, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x6d, + 0x70, 0x74, 0x79, 0x2c, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x52, 0x13, 0x73, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x58, 0x0a, 0x0f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x61, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2f, 0x9a, 0x84, 0x9e, + 0x03, 0x2a, 0x6a, 0x73, 0x6f, 0x6e, 0x3a, 0x22, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x65, 0x3a, 0x22, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x52, 0x0e, 0x73, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x5b, 0x0a, 0x10, + 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0x9a, 0x84, 0x9e, 0x03, 0x2b, 0x6a, 0x73, 0x6f, + 0x6e, 0x3a, 0x22, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x22, 0x73, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x52, 0x0f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x65, 0x0a, 0x10, 0x73, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x3a, 0x9a, 0x84, 0x9e, 0x03, 0x35, 0x6a, 0x73, 0x6f, 0x6e, 0x3a, 0x22, + 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x22, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x22, 0x6f, 0x6d, 0x69, 0x74, + 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2c, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x52, + 0x0f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x12, 0x61, 0x0a, 0x12, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x65, 0x6e, 0x63, + 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x32, 0x9a, 0x84, + 0x9e, 0x03, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x3a, 0x22, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x5f, 0x65, 0x6e, 0x63, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x22, 0x20, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x22, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, + 0x52, 0x11, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x63, 0x6c, 0x6f, 0x73, + 0x75, 0x72, 0x65, 0x12, 0x41, 0x0a, 0x0e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x6c, 0x69, 0x66, + 0x65, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x9a, 0x84, 0x9e, + 0x03, 0x15, 0x6a, 0x73, 0x6f, 0x6e, 0x3a, 0x22, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x6c, 0x69, + 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x52, 0x0d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x4c, 0x69, + 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x16, 0x5a, 0x14, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x2f, 0x70, 0x62, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_proto_specs_proto_rawDescOnce sync.Once + file_proto_specs_proto_rawDescData []byte +) + +func file_proto_specs_proto_rawDescGZIP() []byte { + file_proto_specs_proto_rawDescOnce.Do(func() { + file_proto_specs_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_proto_specs_proto_rawDesc), len(file_proto_specs_proto_rawDesc))) + }) + return file_proto_specs_proto_rawDescData +} + +var file_proto_specs_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_proto_specs_proto_goTypes = []any{ + (*Specs)(nil), // 0: rssalchemy.Specs +} +var file_proto_specs_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_proto_specs_proto_init() } +func file_proto_specs_proto_init() { + if File_proto_specs_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_proto_specs_proto_rawDesc), len(file_proto_specs_proto_rawDesc)), + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_proto_specs_proto_goTypes, + DependencyIndexes: file_proto_specs_proto_depIdxs, + MessageInfos: file_proto_specs_proto_msgTypes, + }.Build() + File_proto_specs_proto = out.File + file_proto_specs_proto_goTypes = nil + file_proto_specs_proto_depIdxs = nil +} diff --git a/proto/specs.proto b/proto/specs.proto new file mode 100644 index 0000000..f2a6875 --- /dev/null +++ b/proto/specs.proto @@ -0,0 +1,20 @@ +syntax = "proto3"; + +package rssalchemy; + +import "tagger/tagger.proto"; + +option go_package = "internal/api/http/pb"; + +message Specs { + string url = 1 [(tagger.tags) = "json:\"url\" validate:\"url\""]; + string selector_post = 2 [(tagger.tags) = "json:\"selector_post\" validate:\"selector\""]; + string selector_title = 3 [(tagger.tags) = "json:\"selector_title\" validate:\"selector\""]; + string selector_link = 4 [(tagger.tags) = "json:\"selector_link\" validate:\"selector\""]; + string selector_description = 5 [(tagger.tags) = "json:\"selector_description\" validate:\"omitempty,selector\""]; + string selector_author = 6 [(tagger.tags) = "json:\"selector_author\" validate:\"selector\""]; + string selector_created = 7 [(tagger.tags) = "json:\"selector_created\" validate:\"selector\""]; + string selector_content = 8 [(tagger.tags) = "json:\"selector_content\" validate:\"omitempty,selector\""]; + string selector_enclosure = 9 [(tagger.tags) = "json:\"selector_enclosure\" validate:\"selector\""]; + string cache_lifetime = 10 [(tagger.tags) = "json:\"cache_lifetime\""]; +}