diff --git a/node_modules/protobufjs/dist/light/protobuf.js b/node_modules/protobufjs/dist/light/protobuf.js index 62a9c6a..1d598c5 100644 --- a/node_modules/protobufjs/dist/light/protobuf.js +++ b/node_modules/protobufjs/dist/light/protobuf.js @@ -1,6 +1,6 @@ /*! - * protobuf.js v7.1.0 (c) 2016, daniel wirtz - * compiled fri, 09 sep 2022 03:02:57 utc + * protobuf.js v7.2.4 (c) 2016, daniel wirtz + * compiled wed, 12 jul 2023 00:03:48 utc * licensed under the bsd-3-clause license * see: https://github.com/dcodeio/protobuf.js for details */ @@ -1129,18 +1129,20 @@ var Enum = require(14), * @ignore */ function genValuePartial_fromObject(gen, field, fieldIndex, prop) { + var defaultAlreadyEmitted = false; /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */ if (field.resolvedType) { if (field.resolvedType instanceof Enum) { gen ("switch(d%s){", prop); for (var values = field.resolvedType.values, keys = Object.keys(values), i = 0; i < keys.length; ++i) { // enum unknown values passthrough - if (values[keys[i]] === field.typeDefault) { gen + if (values[keys[i]] === field.typeDefault && !defaultAlreadyEmitted) { gen ("default:") ("if(typeof(d%s)===\"number\"){m%s=d%s;break}", prop, prop, prop); if (!field.repeated) gen // fallback to default value only for // arrays, to avoid leaving holes. ("break"); // for non-repeated fields, just ignore + defaultAlreadyEmitted = true; } gen ("case%j:", keys[i]) @@ -1433,6 +1435,7 @@ function decoder(mtype) { ("r=Reader.create(r)") ("var c=l===undefined?r.len:r.pos+l,m=new this.ctor" + (mtype.fieldsArray.filter(function(field) { return field.map; }).length ? ",k,value" : "")) ("while(r.pos>>3){"); + var unknownRef = "m" + util.safeProp("$unknownFields"); + var i = 0; for (; i < /* initializes */ mtype.fieldsArray.length; ++i) { var field = mtype._fieldsArray[i].resolve(), @@ -1522,6 +1527,11 @@ function decoder(mtype) { } gen ("default:") ("r.skipType(t&7)") + ("if (!(%s)) {", unknownRef) + ("%s = []", unknownRef) + ("}") + + ("%s.push(r.buf.slice(unknownStartPos, r.pos))", unknownRef) ("break") ("}") @@ -1579,6 +1589,21 @@ function encoder(mtype) { // "when a message is serialized its known fields should be written sequentially by field number" var fields = /* initializes */ mtype.fieldsArray.slice().sort(util.compareFieldsById); + var unknownRef = "m" + util.safeProp("$unknownFields"); + + // Redecode unknown fields and apply them to the message before encoding + gen + ("var fullyUnknown=[]") + ("if(%s) {", unknownRef) + ("for(var i=0;i<%s.length;++i) {", unknownRef) + ("try {") + ("var known=this.ctor.decode(%s[i])", unknownRef) + ("fullyUnknown=fullyUnknown.concat(known.$unknownFields||[])") + ("m=Object.assign(known,m)") + ("}catch(_){}") + ("}") + ("}") + for (var i = 0; i < fields.length; ++i) { var field = fields[i].resolve(), index = mtype._fieldsArray.indexOf(field), @@ -1637,6 +1662,11 @@ function encoder(mtype) { } } + gen + ("for(var i=0;i -1) @@ -4423,6 +4453,10 @@ function tryHandleExtension(root, field) { var extendedType = field.parent.lookup(field.extend); if (extendedType) { var sisterField = new Field(field.fullName, field.id, field.type, field.rule, undefined, field.options); + //do not allow to extend same field twice to prevent the error + if (extendedType.get(sisterField.name)) { + return true; + } sisterField.declaringField = field; field.extensionField = sisterField; extendedType.add(sisterField); @@ -5851,7 +5885,7 @@ util.decorateEnum = function decorateEnum(object) { util.setProperty = function setProperty(dst, path, value) { function setProp(dst, path, value) { var part = path.shift(); - if (part === "__proto__") { + if (part === "__proto__" || part === "prototype") { return dst; } if (path.length > 0) { @@ -6379,7 +6413,7 @@ function newError(name) { configurable: true, }, name: { - get() { return name; }, + get: function get() { return name; }, set: undefined, enumerable: false, // configurable: false would accurately preserve the behavior of @@ -6389,7 +6423,7 @@ function newError(name) { configurable: true, }, toString: { - value() { return this.name + ": " + this.message; }, + value: function value() { return this.name + ": " + this.message; }, writable: true, enumerable: false, configurable: true, @@ -7196,6 +7230,11 @@ Writer.prototype.bytes = function write_bytes(value) { return this.uint32(len)._push(writeBytes, len, value); }; + +Writer.prototype._unknownField = function __unknownField(field) { + return this._push(writeBytes, field.length, field); +}; + /** * Writes a string. * @param {string} value Value to write diff --git a/node_modules/protobufjs/dist/minimal/protobuf.js b/node_modules/protobufjs/dist/minimal/protobuf.js index 0f4af1d..a3dd165 100644 --- a/node_modules/protobufjs/dist/minimal/protobuf.js +++ b/node_modules/protobufjs/dist/minimal/protobuf.js @@ -1,6 +1,6 @@ /*! - * protobuf.js v7.1.0 (c) 2016, daniel wirtz - * compiled fri, 09 sep 2022 03:02:57 utc + * protobuf.js v7.2.4 (c) 2016, daniel wirtz + * compiled wed, 12 jul 2023 00:03:48 utc * licensed under the bsd-3-clause license * see: https://github.com/dcodeio/protobuf.js for details */ @@ -2022,7 +2022,7 @@ function newError(name) { configurable: true, }, name: { - get() { return name; }, + get: function get() { return name; }, set: undefined, enumerable: false, // configurable: false would accurately preserve the behavior of @@ -2032,7 +2032,7 @@ function newError(name) { configurable: true, }, toString: { - value() { return this.name + ": " + this.message; }, + value: function value() { return this.name + ": " + this.message; }, writable: true, enumerable: false, configurable: true, @@ -2557,6 +2557,11 @@ Writer.prototype.bytes = function write_bytes(value) { return this.uint32(len)._push(writeBytes, len, value); }; + +Writer.prototype._unknownField = function __unknownField(field) { + return this._push(writeBytes, field.length, field); +}; + /** * Writes a string. * @param {string} value Value to write diff --git a/node_modules/protobufjs/dist/protobuf.js b/node_modules/protobufjs/dist/protobuf.js index eccc464..28a6fb8 100644 --- a/node_modules/protobufjs/dist/protobuf.js +++ b/node_modules/protobufjs/dist/protobuf.js @@ -1,6 +1,6 @@ /*! - * protobuf.js v7.1.0 (c) 2016, daniel wirtz - * compiled fri, 09 sep 2022 03:02:57 utc + * protobuf.js v7.2.4 (c) 2016, daniel wirtz + * compiled wed, 12 jul 2023 00:03:48 utc * licensed under the bsd-3-clause license * see: https://github.com/dcodeio/protobuf.js for details */ @@ -1530,18 +1530,20 @@ var Enum = require(15), * @ignore */ function genValuePartial_fromObject(gen, field, fieldIndex, prop) { + var defaultAlreadyEmitted = false; /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */ if (field.resolvedType) { if (field.resolvedType instanceof Enum) { gen ("switch(d%s){", prop); for (var values = field.resolvedType.values, keys = Object.keys(values), i = 0; i < keys.length; ++i) { // enum unknown values passthrough - if (values[keys[i]] === field.typeDefault) { gen + if (values[keys[i]] === field.typeDefault && !defaultAlreadyEmitted) { gen ("default:") ("if(typeof(d%s)===\"number\"){m%s=d%s;break}", prop, prop, prop); if (!field.repeated) gen // fallback to default value only for // arrays, to avoid leaving holes. ("break"); // for non-repeated fields, just ignore + defaultAlreadyEmitted = true; } gen ("case%j:", keys[i]) @@ -1834,6 +1836,7 @@ function decoder(mtype) { ("r=Reader.create(r)") ("var c=l===undefined?r.len:r.pos+l,m=new this.ctor" + (mtype.fieldsArray.filter(function(field) { return field.map; }).length ? ",k,value" : "")) ("while(r.pos>>3){"); + var unknownRef = "m" + util.safeProp("$unknownFields"); + var i = 0; for (; i < /* initializes */ mtype.fieldsArray.length; ++i) { var field = mtype._fieldsArray[i].resolve(), @@ -1923,6 +1928,11 @@ function decoder(mtype) { } gen ("default:") ("r.skipType(t&7)") + ("if (!(%s)) {", unknownRef) + ("%s = []", unknownRef) + ("}") + + ("%s.push(r.buf.slice(unknownStartPos, r.pos))", unknownRef) ("break") ("}") @@ -1980,6 +1990,21 @@ function encoder(mtype) { // "when a message is serialized its known fields should be written sequentially by field number" var fields = /* initializes */ mtype.fieldsArray.slice().sort(util.compareFieldsById); + var unknownRef = "m" + util.safeProp("$unknownFields"); + + // Redecode unknown fields and apply them to the message before encoding + gen + ("var fullyUnknown=[]") + ("if(%s) {", unknownRef) + ("for(var i=0;i<%s.length;++i) {", unknownRef) + ("try {") + ("var known=this.ctor.decode(%s[i])", unknownRef) + ("fullyUnknown=fullyUnknown.concat(known.$unknownFields||[])") + ("m=Object.assign(known,m)") + ("}catch(_){}") + ("}") + ("}") + for (var i = 0; i < fields.length; ++i) { var field = fields[i].resolve(), index = mtype._fieldsArray.indexOf(field), @@ -2038,6 +2063,11 @@ function encoder(mtype) { } } + gen + ("for(var i=0;i -1) @@ -5699,6 +5739,10 @@ function tryHandleExtension(root, field) { var extendedType = field.parent.lookup(field.extend); if (extendedType) { var sisterField = new Field(field.fullName, field.id, field.type, field.rule, undefined, field.options); + //do not allow to extend same field twice to prevent the error + if (extendedType.get(sisterField.name)) { + return true; + } sisterField.declaringField = field; field.extensionField = sisterField; extendedType.add(sisterField); @@ -7547,7 +7591,7 @@ util.decorateEnum = function decorateEnum(object) { util.setProperty = function setProperty(dst, path, value) { function setProp(dst, path, value) { var part = path.shift(); - if (part === "__proto__") { + if (part === "__proto__" || part === "prototype") { return dst; } if (path.length > 0) { @@ -8075,7 +8119,7 @@ function newError(name) { configurable: true, }, name: { - get() { return name; }, + get: function get() { return name; }, set: undefined, enumerable: false, // configurable: false would accurately preserve the behavior of @@ -8085,7 +8129,7 @@ function newError(name) { configurable: true, }, toString: { - value() { return this.name + ": " + this.message; }, + value: function value() { return this.name + ": " + this.message; }, writable: true, enumerable: false, configurable: true, @@ -8892,6 +8936,11 @@ Writer.prototype.bytes = function write_bytes(value) { return this.uint32(len)._push(writeBytes, len, value); }; + +Writer.prototype._unknownField = function __unknownField(field) { + return this._push(writeBytes, field.length, field); +}; + /** * Writes a string. * @param {string} value Value to write diff --git a/node_modules/protobufjs/ext/descriptor/index.d.ts b/node_modules/protobufjs/ext/descriptor/index.d.ts index 1df2efc..da2a2c0 100644 --- a/node_modules/protobufjs/ext/descriptor/index.d.ts +++ b/node_modules/protobufjs/ext/descriptor/index.d.ts @@ -1,4 +1,5 @@ import * as $protobuf from "../.."; +import Long = require("long"); export const FileDescriptorSet: $protobuf.Type; export const FileDescriptorProto: $protobuf.Type; @@ -58,6 +59,8 @@ export const GeneratedCodeInfo: $protobuf.Type & { export interface IFileDescriptorSet { file: IFileDescriptorProto[]; + + $unknownFields?: ReadonlyArray; } export interface IFileDescriptorProto { @@ -73,6 +76,8 @@ export interface IFileDescriptorProto { options?: IFileOptions; sourceCodeInfo?: any; syntax?: string; + + $unknownFields?: ReadonlyArray; } export interface IFileOptions { @@ -90,6 +95,8 @@ export interface IFileOptions { ccEnableArenas?: boolean; objcClassPrefix?: string; csharpNamespace?: string; + + $unknownFields?: ReadonlyArray; } type IFileOptionsOptimizeMode = number; @@ -105,20 +112,28 @@ export interface IDescriptorProto { options?: IMessageOptions; reservedRange?: IDescriptorProtoReservedRange[]; reservedName?: string[]; + + $unknownFields?: ReadonlyArray; } export interface IMessageOptions { mapEntry?: boolean; + + $unknownFields?: ReadonlyArray; } export interface IDescriptorProtoExtensionRange { start?: number; end?: number; + + $unknownFields?: ReadonlyArray; } export interface IDescriptorProtoReservedRange { start?: number; end?: number; + + $unknownFields?: ReadonlyArray; } export interface IFieldDescriptorProto { @@ -132,6 +147,8 @@ export interface IFieldDescriptorProto { oneofIndex?: number; jsonName?: any; options?: IFieldOptions; + + $unknownFields?: ReadonlyArray; } type IFieldDescriptorProtoLabel = number; @@ -141,6 +158,8 @@ type IFieldDescriptorProtoType = number; export interface IFieldOptions { packed?: boolean; jstype?: IFieldOptionsJSType; + + $unknownFields?: ReadonlyArray; } type IFieldOptionsJSType = number; @@ -149,32 +168,44 @@ export interface IEnumDescriptorProto { name?: string; value?: IEnumValueDescriptorProto[]; options?: IEnumOptions; + + $unknownFields?: ReadonlyArray; } export interface IEnumValueDescriptorProto { name?: string; number?: number; options?: any; + + $unknownFields?: ReadonlyArray; } export interface IEnumOptions { allowAlias?: boolean; deprecated?: boolean; + + $unknownFields?: ReadonlyArray; } export interface IOneofDescriptorProto { name?: string; options?: any; + + $unknownFields?: ReadonlyArray; } export interface IServiceDescriptorProto { name?: string; method?: IMethodDescriptorProto[]; options?: IServiceOptions; + + $unknownFields?: ReadonlyArray; } export interface IServiceOptions { deprecated?: boolean; + + $unknownFields?: ReadonlyArray; } export interface IMethodDescriptorProto { @@ -184,8 +215,12 @@ export interface IMethodDescriptorProto { options?: IMethodOptions; clientStreaming?: boolean; serverStreaming?: boolean; + + $unknownFields?: ReadonlyArray; } export interface IMethodOptions { deprecated?: boolean; + + $unknownFields?: ReadonlyArray; } diff --git a/node_modules/protobufjs/index.d.ts b/node_modules/protobufjs/index.d.ts index 750ad2f..ffcbdbe 100644 --- a/node_modules/protobufjs/index.d.ts +++ b/node_modules/protobufjs/index.d.ts @@ -16,27 +16,37 @@ export namespace common { interface IAny { typeUrl?: string; bytes?: Uint8Array; + + $unknownFields?: ReadonlyArray; } /** Properties of a google.protobuf.Duration message. */ interface IDuration { seconds?: (number|Long); nanos?: number; + + $unknownFields?: ReadonlyArray; } /** Properties of a google.protobuf.Timestamp message. */ interface ITimestamp { seconds?: (number|Long); nanos?: number; + + $unknownFields?: ReadonlyArray; } /** Properties of a google.protobuf.Empty message. */ interface IEmpty { + + $unknownFields?: ReadonlyArray; } /** Properties of a google.protobuf.Struct message. */ interface IStruct { fields?: { [k: string]: IValue }; + + $unknownFields?: ReadonlyArray; } /** Properties of a google.protobuf.Value message. */ @@ -48,56 +58,78 @@ export namespace common { boolValue?: boolean; structValue?: IStruct; listValue?: IListValue; + + $unknownFields?: ReadonlyArray; } /** Properties of a google.protobuf.ListValue message. */ interface IListValue { values?: IValue[]; + + $unknownFields?: ReadonlyArray; } /** Properties of a google.protobuf.DoubleValue message. */ interface IDoubleValue { value?: number; + + $unknownFields?: ReadonlyArray; } /** Properties of a google.protobuf.FloatValue message. */ interface IFloatValue { value?: number; + + $unknownFields?: ReadonlyArray; } /** Properties of a google.protobuf.Int64Value message. */ interface IInt64Value { value?: (number|Long); + + $unknownFields?: ReadonlyArray; } /** Properties of a google.protobuf.UInt64Value message. */ interface IUInt64Value { value?: (number|Long); + + $unknownFields?: ReadonlyArray; } /** Properties of a google.protobuf.Int32Value message. */ interface IInt32Value { value?: number; + + $unknownFields?: ReadonlyArray; } /** Properties of a google.protobuf.UInt32Value message. */ interface IUInt32Value { value?: number; + + $unknownFields?: ReadonlyArray; } /** Properties of a google.protobuf.BoolValue message. */ interface IBoolValue { value?: boolean; + + $unknownFields?: ReadonlyArray; } /** Properties of a google.protobuf.StringValue message. */ interface IStringValue { value?: string; + + $unknownFields?: ReadonlyArray; } /** Properties of a google.protobuf.BytesValue message. */ interface IBytesValue { value?: Uint8Array; + + $unknownFields?: ReadonlyArray; } /** @@ -232,6 +264,8 @@ export class Enum extends ReflectionObject { * @returns `true` if reserved, otherwise `false` */ public isReservedName(name: string): boolean; + + public $unknownFields?: ReadonlyArray; } /** Enum descriptor. */ @@ -242,6 +276,8 @@ export interface IEnum { /** Enum options */ options?: { [k: string]: any }; + + $unknownFields?: ReadonlyArray; } /** Reflected message field. */ @@ -288,6 +324,8 @@ export class Field extends FieldBase { * @returns Decorator function */ public static d>(fieldId: number, fieldType: (Constructor|string), fieldRule?: ("optional"|"required"|"repeated")): FieldDecorator; + + public $unknownFields?: ReadonlyArray; } /** Base class of all reflected message fields. This is not an actual class but here for the sake of having consistent type definitions. */ @@ -369,6 +407,8 @@ export class FieldBase extends ReflectionObject { * @throws {Error} If any reference cannot be resolved */ public resolve(): Field; + + public $unknownFields?: ReadonlyArray; } /** Field descriptor. */ @@ -385,6 +425,8 @@ export interface IField { /** Field options */ options?: { [k: string]: any }; + + $unknownFields?: ReadonlyArray; } /** Extension field descriptor. */ @@ -392,6 +434,8 @@ export interface IExtensionField extends IField { /** Extended type */ extend: string; + + $unknownFields?: ReadonlyArray; } /** @@ -494,6 +538,8 @@ export class MapField extends FieldBase { * @returns Decorator function */ public static d }>(fieldId: number, fieldKeyType: ("int32"|"uint32"|"sint32"|"fixed32"|"sfixed32"|"int64"|"uint64"|"sint64"|"fixed64"|"sfixed64"|"bool"|"string"), fieldValueType: ("double"|"float"|"int32"|"uint32"|"sint32"|"fixed32"|"sfixed32"|"int64"|"uint64"|"sint64"|"fixed64"|"sfixed64"|"bool"|"string"|"bytes"|object|Constructor<{}>)): FieldDecorator; + + public $unknownFields?: ReadonlyArray; } /** Map field descriptor. */ @@ -501,6 +547,8 @@ export interface IMapField extends IField { /** Key type */ keyType: string; + + $unknownFields?: ReadonlyArray; } /** Extension map field descriptor. */ @@ -508,6 +556,8 @@ export interface IExtensionMapField extends IMapField { /** Extended type */ extend: string; + + $unknownFields?: ReadonlyArray; } /** Abstract runtime message. */ @@ -589,6 +639,8 @@ export class Message { * @returns JSON object */ public toJSON(): { [k: string]: any }; + + public $unknownFields?: ReadonlyArray; } /** Reflected service method. */ @@ -650,6 +702,8 @@ export class Method extends ReflectionObject { * @returns Method descriptor */ public toJSON(toJSONOptions?: IToJSONOptions): IMethod; + + public $unknownFields?: ReadonlyArray; } /** Method descriptor. */ @@ -678,6 +732,8 @@ export interface IMethod { /** Method options properly parsed into an object */ parsedOptions?: { [k: string]: any }; + + $unknownFields?: ReadonlyArray; } /** Reflected namespace. */ @@ -722,6 +778,8 @@ export class Namespace extends NamespaceBase { * @returns `true` if reserved, otherwise `false` */ public static isReservedName(reserved: ((number[]|string)[]|undefined), name: string): boolean; + + public $unknownFields?: ReadonlyArray; } /** Base class of all reflection objects containing nested objects. This is not an actual class but here for the sake of having consistent type definitions. */ @@ -847,6 +905,8 @@ export abstract class NamespaceBase extends ReflectionObject { * @throws {Error} If `path` does not point to a service */ public lookupService(path: (string|string[])): Service; + + public $unknownFields?: ReadonlyArray; } /** Namespace descriptor. */ @@ -857,6 +917,8 @@ export interface INamespace { /** Nested object descriptors */ nested?: { [k: string]: AnyNestedObject }; + + $unknownFields?: ReadonlyArray; } /** Any extension field descriptor. */ @@ -957,6 +1019,8 @@ export abstract class ReflectionObject { * @returns Class name[, space, full name] */ public toString(): string; + + public $unknownFields?: ReadonlyArray; } /** Reflected oneof. */ @@ -1016,6 +1080,8 @@ export class OneOf extends ReflectionObject { * @returns Decorator function */ public static d(...fieldNames: string[]): OneOfDecorator; + + public $unknownFields?: ReadonlyArray; } /** Oneof descriptor. */ @@ -1026,6 +1092,8 @@ export interface IOneOf { /** Oneof options */ options?: { [k: string]: any }; + + $unknownFields?: ReadonlyArray; } /** @@ -1060,6 +1128,8 @@ export interface IParserResult { /** Populated root instance */ root: Root; + + $unknownFields?: ReadonlyArray; } /** Options modifying the behavior of {@link parse}. */ @@ -1073,6 +1143,8 @@ export interface IParseOptions { /** Use trailing comment when both leading comment and trailing comment exist. */ preferTrailingComment?: boolean; + + $unknownFields?: ReadonlyArray; } /** Options modifying the behavior of JSON serialization. */ @@ -1080,6 +1152,8 @@ export interface IToJSONOptions { /** Serializes comments. */ keepComments?: boolean; + + $unknownFields?: ReadonlyArray; } /** @@ -1220,6 +1294,8 @@ export class Reader { * @returns `this` */ public skipType(wireType: number): Reader; + + public $unknownFields?: ReadonlyArray; } /** Wire format reader using node buffers. */ @@ -1236,6 +1312,8 @@ export class BufferReader extends Reader { * @returns Value read */ public bytes(): Buffer; + + public $unknownFields?: ReadonlyArray; } /** Root namespace wrapping all types, enums, services, sub-namespaces etc. that belong together. */ @@ -1309,6 +1387,8 @@ export class Root extends NamespaceBase { * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid */ public loadSync(filename: (string|string[]), options?: IParseOptions): Root; + + public $unknownFields?: ReadonlyArray; } /** @@ -1374,6 +1454,8 @@ export namespace rpc { * @returns `this` */ public end(endedByRPC?: boolean): rpc.Service; + + public $unknownFields?: ReadonlyArray; } } @@ -1433,6 +1515,8 @@ export class Service extends NamespaceBase { * @returns RPC service. Useful where requests and/or responses are streamed. */ public create(rpcImpl: RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean): rpc.Service; + + public $unknownFields?: ReadonlyArray; } /** Service descriptor. */ @@ -1440,6 +1524,8 @@ export interface IService extends INamespace { /** Method descriptors */ methods: { [k: string]: IMethod }; + + $unknownFields?: ReadonlyArray; } /** @@ -1496,6 +1582,8 @@ export interface ITokenizerHandle { /** Current line number */ line: number; + + $unknownFields?: ReadonlyArray; } /** @@ -1683,6 +1771,8 @@ export class Type extends NamespaceBase { * @returns Decorator function */ public static d>(typeName?: string): TypeDecorator; + + public $unknownFields?: ReadonlyArray; } /** Message type descriptor. */ @@ -1702,6 +1792,8 @@ export interface IType extends INamespace { /** Whether a legacy group or not */ group?: boolean; + + $unknownFields?: ReadonlyArray; } /** Conversion options as used by {@link Type#toObject} and {@link Message.toObject}. */ @@ -1742,6 +1834,8 @@ export interface IConversionOptions { /** Performs additional JSON compatibility conversions, i.e. NaN and Infinity to strings */ json?: boolean; + + $unknownFields?: ReadonlyArray; } /** @@ -1838,6 +1932,8 @@ export namespace types { /** Constructor type. */ export interface Constructor extends Function { new(...params: any[]): T; prototype: T; + + $unknownFields?: ReadonlyArray; } /** Properties type. */ @@ -1848,6 +1944,8 @@ type Properties = { [P in keyof T]?: T[P] }; * This is a minimal stand-alone definition of a Buffer instance. The actual type is that exported by node's typings. */ export interface Buffer extends Uint8Array { + + $unknownFields?: ReadonlyArray; } /** @@ -1864,6 +1962,8 @@ export interface Long { /** Whether unsigned or not */ unsigned: boolean; + + $unknownFields?: ReadonlyArray; } /** @@ -1961,6 +2061,8 @@ export namespace util { * @returns Length */ public length(): number; + + public $unknownFields?: ReadonlyArray; } /** Whether running within node or not. */ @@ -2088,6 +2190,8 @@ export namespace util { /** So far decoded message instance. */ public instance: Message; + + public $unknownFields?: ReadonlyArray; } /** @@ -2298,6 +2402,8 @@ export namespace util { * @returns `this` */ public emit(evt: string, ...args: any[]): this; + + public $unknownFields?: ReadonlyArray; } /** Reads / writes floats / doubles from / to buffers. */ @@ -2497,6 +2603,8 @@ export interface IWrapper { /** To object converter */ toObject?: WrapperToObjectConverter; + + $unknownFields?: ReadonlyArray; } /** Wire format writer using `Uint8Array` if available, otherwise `Array`. */ @@ -2664,6 +2772,8 @@ export class Writer { * @returns Finished buffer */ public finish(): Uint8Array; + + public $unknownFields?: ReadonlyArray; } /** Wire format writer using node buffers. */ @@ -2684,6 +2794,8 @@ export class BufferWriter extends Writer { * @returns Finished buffer */ public finish(): Buffer; + + public $unknownFields?: ReadonlyArray; } /** @@ -2723,6 +2835,8 @@ export interface IFetchOptions { /** If `true`, forces the use of XMLHttpRequest */ xhr?: boolean; + + $unknownFields?: ReadonlyArray; } /** diff --git a/node_modules/protobufjs/src/decoder.js b/node_modules/protobufjs/src/decoder.js index f55451f..31aa011 100644 --- a/node_modules/protobufjs/src/decoder.js +++ b/node_modules/protobufjs/src/decoder.js @@ -21,6 +21,7 @@ function decoder(mtype) { ("r=Reader.create(r)") ("var c=l===undefined?r.len:r.pos+l,m=new this.ctor" + (mtype.fieldsArray.filter(function(field) { return field.map; }).length ? ",k,value" : "")) ("while(r.pos>>3){"); + var unknownRef = "m" + util.safeProp("$unknownFields"); + var i = 0; for (; i < /* initializes */ mtype.fieldsArray.length; ++i) { var field = mtype._fieldsArray[i].resolve(), @@ -110,6 +113,11 @@ function decoder(mtype) { } gen ("default:") ("r.skipType(t&7)") + ("if (!(%s)) {", unknownRef) + ("%s = []", unknownRef) + ("}") + + ("%s.push(r.buf.slice(unknownStartPos, r.pos))", unknownRef) ("break") ("}") diff --git a/node_modules/protobufjs/src/encoder.js b/node_modules/protobufjs/src/encoder.js index c803e99..c44439e 100644 --- a/node_modules/protobufjs/src/encoder.js +++ b/node_modules/protobufjs/src/encoder.js @@ -36,6 +36,21 @@ function encoder(mtype) { // "when a message is serialized its known fields should be written sequentially by field number" var fields = /* initializes */ mtype.fieldsArray.slice().sort(util.compareFieldsById); + var unknownRef = "m" + util.safeProp("$unknownFields"); + + // Redecode unknown fields and apply them to the message before encoding + gen + ("var fullyUnknown=[]") + ("if(%s) {", unknownRef) + ("for(var i=0;i<%s.length;++i) {", unknownRef) + ("try {") + ("var known=this.ctor.decode(%s[i])", unknownRef) + ("fullyUnknown=fullyUnknown.concat(known.$unknownFields||[])") + ("m=Object.assign(known,m)") + ("}catch(_){}") + ("}") + ("}") + for (var i = 0; i < fields.length; ++i) { var field = fields[i].resolve(), index = mtype._fieldsArray.indexOf(field), @@ -94,6 +109,11 @@ function encoder(mtype) { } } + gen + ("for(var i=0;i