netkitty
Version:
Network tools kit
62 lines (61 loc) • 1.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PipeMessage = exports.PipeMessageType = void 0;
const node_crypto_1 = require("node:crypto");
var PipeMessageType;
(function (PipeMessageType) {
PipeMessageType[PipeMessageType["EVENT"] = 0] = "EVENT";
PipeMessageType[PipeMessageType["REQUEST"] = 1] = "REQUEST";
PipeMessageType[PipeMessageType["RESPONSE_OK"] = 2] = "RESPONSE_OK";
PipeMessageType[PipeMessageType["RESPONSE_ERR"] = 3] = "RESPONSE_ERR";
})(PipeMessageType || (exports.PipeMessageType = PipeMessageType = {}));
class PipeMessage {
#serialized;
#structured;
set structured(structured) {
this.#structured = structured;
this.#serialized = JSON.stringify(this.#structured);
}
get structured() {
return this.#structured;
}
get messageId() {
return this.structured.messageId;
}
set type(type) {
const structured = this.structured;
structured.type = type;
this.structured = structured;
}
get type() {
return this.structured.type;
}
set payload(payload) {
const structured = this.structured;
structured.payload = payload;
this.structured = structured;
}
get payload() {
return this.structured.payload;
}
constructor(serialized) {
if (serialized) {
this.#serialized = serialized;
this.#structured = JSON.parse(serialized);
}
else {
this.structured = {
messageId: `PIPE_MSG_${Date.now().toString(16)}${(0, node_crypto_1.randomInt)(10000000, 99999999)}`,
type: PipeMessageType.EVENT,
payload: null
};
}
}
/**
* Serialized pipe message
*/
serialize() {
return this.#serialized;
}
}
exports.PipeMessage = PipeMessage;