ultimatepos/Modules/Communication/node_modules/@bufbuild/protobuf/dist/esm/message.js

126 lines
4.6 KiB
JavaScript
Vendored

// Copyright 2021-2024 Buf Technologies, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
/**
* Message is the base class of every message, generated, or created at
* runtime.
*
* It is _not_ safe to extend this class. If you want to create a message at
* run time, use proto3.makeMessageType().
*/
export class Message {
/**
* Compare with a message of the same type.
* Note that this function disregards extensions and unknown fields.
*/
equals(other) {
return this.getType().runtime.util.equals(this.getType(), this, other);
}
/**
* Create a deep copy.
*/
clone() {
return this.getType().runtime.util.clone(this);
}
/**
* Parse from binary data, merging fields.
*
* Repeated fields are appended. Map entries are added, overwriting
* existing keys.
*
* If a message field is already present, it will be merged with the
* new data.
*/
fromBinary(bytes, options) {
const type = this.getType(), format = type.runtime.bin, opt = format.makeReadOptions(options);
format.readMessage(this, opt.readerFactory(bytes), bytes.byteLength, opt);
return this;
}
/**
* Parse a message from a JSON value.
*/
fromJson(jsonValue, options) {
const type = this.getType(), format = type.runtime.json, opt = format.makeReadOptions(options);
format.readMessage(type, jsonValue, opt, this);
return this;
}
/**
* Parse a message from a JSON string.
*/
fromJsonString(jsonString, options) {
let json;
try {
json = JSON.parse(jsonString);
}
catch (e) {
throw new Error(`cannot decode ${this.getType().typeName} from JSON: ${e instanceof Error ? e.message : String(e)}`);
}
return this.fromJson(json, options);
}
/**
* Serialize the message to binary data.
*/
toBinary(options) {
const type = this.getType(), bin = type.runtime.bin, opt = bin.makeWriteOptions(options), writer = opt.writerFactory();
bin.writeMessage(this, writer, opt);
return writer.finish();
}
/**
* Serialize the message to a JSON value, a JavaScript value that can be
* passed to JSON.stringify().
*/
toJson(options) {
const type = this.getType(), json = type.runtime.json, opt = json.makeWriteOptions(options);
return json.writeMessage(this, opt);
}
/**
* Serialize the message to a JSON string.
*/
toJsonString(options) {
var _a;
const value = this.toJson(options);
return JSON.stringify(value, null, (_a = options === null || options === void 0 ? void 0 : options.prettySpaces) !== null && _a !== void 0 ? _a : 0);
}
/**
* Override for serialization behavior. This will be invoked when calling
* JSON.stringify on this message (i.e. JSON.stringify(msg)).
*
* Note that this will not serialize google.protobuf.Any with a packed
* message because the protobuf JSON format specifies that it needs to be
* unpacked, and this is only possible with a type registry to look up the
* message type. As a result, attempting to serialize a message with this
* type will throw an Error.
*
* This method is protected because you should not need to invoke it
* directly -- instead use JSON.stringify or toJsonString for
* stringified JSON. Alternatively, if actual JSON is desired, you should
* use toJson.
*/
toJSON() {
return this.toJson({
emitDefaultValues: true,
});
}
/**
* Retrieve the MessageType of this message - a singleton that represents
* the protobuf message declaration and provides metadata for reflection-
* based operations.
*/
getType() {
// Any class that extends Message _must_ provide a complete static
// implementation of MessageType.
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-return
return Object.getPrototypeOf(this).constructor;
}
}