mudb
Version:
Real-time database for multiplayer games
68 lines • 1.74 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
class MuDate {
constructor(identity) {
this.muType = 'date';
this.pool = [];
this.identity = new Date(0);
if (identity) {
this.identity.setTime(identity.getTime());
}
this.json = {
type: 'date',
identity: this.identity.toISOString(),
};
}
alloc() {
return this.pool.pop() || new Date();
}
free(date) {
this.pool.push(date);
}
equal(a, b) {
return a.getTime() === b.getTime();
}
clone(date_) {
const date = this.alloc();
date.setTime(date_.getTime());
return date;
}
assign(dst, src) {
dst.setTime(src.getTime());
return dst;
}
diff(base, target, out) {
const bt = base.getTime();
const tt = target.getTime();
if (bt !== tt) {
out.grow(10);
out.writeVarint(tt % 0x10000000);
out.writeVarint(tt / 0x10000000 | 0);
return true;
}
return false;
}
patch(base, inp) {
const date = this.alloc();
const lo = inp.readVarint();
const hi = inp.readVarint();
date.setTime(lo + 0x10000000 * hi);
return date;
}
toJSON(date) {
return date.toISOString();
}
fromJSON(x) {
if (typeof x === 'string') {
const ms = Date.parse(x);
if (ms) {
const date = this.alloc();
date.setTime(ms);
return date;
}
}
return this.clone(this.identity);
}
}
exports.MuDate = MuDate;
//# sourceMappingURL=date.js.map