visitor-segments
Version:
Hellobar Segments.
35 lines (34 loc) • 1.07 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SessionUUID = void 0;
const segmentMaps_1 = require("../segmentMaps");
const segment_1 = require("../segment");
class SessionUUID extends segment_1.Segment {
constructor(visitor) {
super(segmentMaps_1.SEGMENT_KEYS.SESSION_UUID, visitor);
}
get value() {
if (!super.value) {
this.setValue();
}
return super.value;
}
setValue(value) {
super.setValueOnce(value || this.generateUUID());
}
reset() {
super.reset();
super.setValue();
}
generateUUID() {
let dt = new Date().getTime();
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
// tslint:disable-next-line:no-bitwise
const r = (dt + Math.random() * 16) % 16 | 0;
dt = Math.floor(dt / 16);
// tslint:disable-next-line:no-bitwise
return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16);
});
}
}
exports.SessionUUID = SessionUUID;