Erster Commit
This commit is contained in:
+125
@@ -0,0 +1,125 @@
|
||||
// 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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user