@fractional-company/common
Version:
Tessera constants
81 lines (80 loc) • 2.13 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.InternalEvent = void 0;
const generate_uuid_1 = require("../../utils/generate-uuid");
class InternalEvent {
constructor(name, body, eventId) {
this.handler = null;
this.name = name;
this.body = body;
this.eventId = eventId ? eventId : (0, generate_uuid_1.generateUuid)();
}
setName(name) {
this.name = name;
return this;
}
setBody(body) {
this.body = body;
return this;
}
setEventId(eventId) {
this.eventId = eventId;
return this;
}
setHandler(handler) {
this.handler = handler;
return this;
}
getName() {
return this.name;
}
getBody() {
return this.body;
}
getEventId() {
return this.eventId;
}
getHandler() {
return this.handler;
}
hasHandler() {
return !!this.handler;
}
toObject() {
const obj = {
name: this.name,
body: this.body,
eventId: this.eventId,
};
if (this.handler) {
return {
...obj,
handler: this.handler,
};
}
return obj;
}
toJson() {
return JSON.stringify(this.toObject());
}
cloneWithHandler(handler) {
const jsonObject = {
...this.toObject(),
handler,
};
return InternalEvent.resolveFromObject(jsonObject);
}
static resolveFromJson(jsonString) {
const jsonObject = JSON.parse(jsonString);
return this.resolveFromObject(jsonObject);
}
static resolveFromObject(jsonObject) {
const internalEvent = new InternalEvent(jsonObject.name, jsonObject.body, jsonObject.eventId);
if (!("handler" in jsonObject)) {
return internalEvent;
}
internalEvent.setHandler(jsonObject.handler);
return internalEvent;
}
}
exports.InternalEvent = InternalEvent;