UNPKG

novu

Version:

Novu CLI. Run Novu Studio and sync workflows with Novu Cloud

78 lines (77 loc) 3.06 kB
"use strict"; 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;