@hashgraph/sdk
Version:
3 lines (2 loc) • 1.4 kB
JavaScript
import t from"long";import e from"./Cache.js";const o=t.fromNumber(1e9),n=new Set;class s{constructor(e,o){this.seconds=e instanceof t?e:t.fromNumber(e),this.nanos=o instanceof t?o:t.fromNumber(o),Object.freeze(this)}static generate(t=!0){let o;o=t?Math.floor(5e3*Math.random())+3e3:0;const r=Date.now()-o,a=Math.floor(r/1e3)+e.timeDrift,i=1e6*Math.floor(r%1e3)+Math.floor(1e6*Math.random()),c=new s(a,i);return n.has(c.toString())?this.generate():(n.add(c.toString()),c)}static fromDate(e){let o;if("number"==typeof e)o=t.fromNumber(e);else if("string"==typeof e)o=t.fromNumber(Date.parse(e)).mul(1e6);else{if(!(e instanceof Date))throw new TypeError(`invalid type '${typeof e}' for 'data', expected 'Date'`);o=t.fromNumber(e.getTime()).mul(1e6)}return new s(0,0).plusNanos(o)}toDate(){return new Date(1e3*this.seconds.toInt()+Math.floor(this.nanos.toInt()/1e6))}plusNanos(t){const e=this.nanos.add(t);return new s(this.seconds.add(e.div(o)),e.mod(o))}_toProtobuf(){return{seconds:this.seconds,nanos:this.nanos.toInt()}}static _fromProtobuf(e){return new s(e.seconds instanceof t?e.seconds.toInt():null!=e.seconds?e.seconds:0,null!=e.nanos?e.nanos:0)}toString(){const t=String(this.nanos).padStart(9,"0");return`${this.seconds.toString()}.${t}`}compare(t){const e=this.seconds.compare(t.seconds);return 0!=e?e:this.nanos.compare(t.nanos)}}export{s as default};
//# sourceMappingURL=Timestamp.js.map