"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.flush = flush; exports.setSegmentNodeKey = setSegmentNodeKey; exports.setUserProperties = setUserProperties; exports.setVersionName = setVersionName; exports.logEvent = logEvent; function _os() { const data = _interopRequireDefault(require("os")); _os = function () { return data; }; return data; } function _analyticsNode() { const data = _interopRequireDefault(require("analytics-node")); _analyticsNode = function () { return data; }; return data; } function _ip() { const data = _interopRequireDefault(require("./ip")); _ip = function () { return data; }; return data; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } let _segmentNodeInstance; let _userId; let _version; const PLATFORM_TO_ANALYTICS_PLATFORM = { darwin: 'Mac', win32: 'Windows', linux: 'Linux' }; function flush() { if (_segmentNodeInstance) _segmentNodeInstance.flush(); } function setSegmentNodeKey(key) { // Do not wait before flushing, we want node to close immediately if the programs ends _segmentNodeInstance = new (_analyticsNode().default)(key, { flushInterval: 300 }); } function setUserProperties(userId, traits) { _userId = userId; if (_segmentNodeInstance) { _segmentNodeInstance.identify({ userId, traits, context: _getContext() }); } } function setVersionName(version) { _version = version; } function logEvent(name, properties = {}) { if (_segmentNodeInstance && _userId) { _segmentNodeInstance.track({ userId: _userId, event: name, properties, context: _getContext() }); } } function _getContext() { let platform = PLATFORM_TO_ANALYTICS_PLATFORM[_os().default.platform()] || _os().default.platform(); let context = { ip: _ip().default.address(), device: { model: platform, brand: platform }, os: { name: platform, version: _os().default.release() }, app: {} }; if (_version) { context.app = { version: _version }; } return context; } //# sourceMappingURL=__sourcemaps__/Analytics.js.map