novu
Version:
Novu CLI. Run Novu Studio and sync workflows with Novu Cloud
78 lines (77 loc) • 3.06 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AnalyticService = exports.ANALYTICS_SOURCE = exports.AnalyticsEventEnum = void 0;
const analytics_node_1 = require("@segment/analytics-node");
const constants_1 = require("../constants");
var AnalyticsEventEnum;
(function (AnalyticsEventEnum) {
AnalyticsEventEnum["ENVIRONMENT_SELECT_EVENT"] = "Select Install Environment";
AnalyticsEventEnum["CREATE_APP_QUESTION_EVENT"] = "Create App Question";
AnalyticsEventEnum["REGISTER_METHOD_SELECT_EVENT"] = "Select Register Method";
AnalyticsEventEnum["TERMS_AND_CONDITIONS_QUESTION"] = "Terms And Conditions Question";
AnalyticsEventEnum["PRIVATE_EMAIL_ATTEMPT"] = "Private Email Register Attempt";
AnalyticsEventEnum["ACCOUNT_CREATED"] = "account_created";
AnalyticsEventEnum["OPEN_DASHBOARD"] = "open_dashboard";
AnalyticsEventEnum["DASHBOARD_PAGE_OPENED"] = "Dashboard Page Opened";
AnalyticsEventEnum["EXIT_EXISTING_SESSION"] = "exit_existing_session";
AnalyticsEventEnum["SKIP_TUTORIAL"] = "skip_tutorial";
AnalyticsEventEnum["COPY_SNIPPET"] = "copy_snippet";
AnalyticsEventEnum["TRIGGER_BUTTON"] = "trigger_button";
AnalyticsEventEnum["CLI_LAUNCHED"] = "Cli Launched";
})(AnalyticsEventEnum || (exports.AnalyticsEventEnum = AnalyticsEventEnum = {}));
exports.ANALYTICS_SOURCE = '[CLI Onboarding]';
class AnalyticService {
constructor() {
this._analyticsEnabled = constants_1.ANALYTICS_ENABLED;
if (this._analyticsEnabled) {
this._analytics = new analytics_node_1.Analytics({
writeKey: constants_1.SEGMENTS_WRITE_KEY,
});
}
}
alias({ previousId, userId }) {
if (!this.isAnalyticsEnabled()) {
return;
}
this._analytics.alias({
previousId,
userId,
});
}
identify(user) {
if (!this.isAnalyticsEnabled()) {
return;
}
this._analytics.identify({
userId: user._id,
traits: {
email: user.email,
name: `${user.firstName || ''} ${user.lastName || ''}`.trim(),
firstName: user.firstName,
lastName: user.lastName,
avatar: user.profilePicture,
createdAt: user.createdAt,
},
});
}
track({ data, event, identity, }) {
if (!this.isAnalyticsEnabled()) {
return;
}
const payload = Object.assign(Object.assign({ event: `${event} - ${exports.ANALYTICS_SOURCE}` }, identity), { properties: {} });
if (data) {
payload.properties = Object.assign(Object.assign({}, payload.properties), data);
}
this._analytics.track(payload);
}
async flush() {
if (!this.isAnalyticsEnabled()) {
return;
}
await this._analytics.closeAndFlush();
}
isAnalyticsEnabled() {
return this._analyticsEnabled;
}
}
exports.AnalyticService = AnalyticService;