Socket
Socket
Sign inDemoInstall

@highoutput/analytics

Package Overview
Dependencies
Maintainers
5
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@highoutput/analytics - npm Package Compare versions

Comparing version 0.1.6 to 0.2.2

README.md

8

dist/analytics.d.ts
import { Mixpanel } from 'mixpanel';
import PQueue from 'p-queue';
export declare class Analytics {
protected project: string;
protected driver: Mixpanel;
protected queue: PQueue;
protected status: 'STARTED' | 'SHUTTING_DOWN';
constructor(params: {
project: string;
token: string;
});

@@ -14,9 +18,11 @@ createAccount(params: {

created?: Date;
[key: string]: any;
}): void;
createEvent(params: {
name: string;
eventName: string;
accountId: string;
body: Record<any, any>;
}): void;
stop(): Promise<void>;
}
//# sourceMappingURL=analytics.d.ts.map

@@ -7,24 +7,74 @@ "use strict";

exports.Analytics = void 0;
const logger_1 = __importDefault(require("@highoutput/logger"));
const object_id_1 = require("@highoutput/object-id");
const mixpanel_1 = __importDefault(require("mixpanel"));
const p_queue_1 = __importDefault(require("p-queue"));
const ramda_1 = __importDefault(require("ramda"));
const logger = new logger_1.default(['analytics']);
function serialize(doc) {
const obj = doc;
return ramda_1.default.reduce((accum, [field, value]) => {
if (value instanceof Buffer) {
return Object.assign(Object.assign({}, accum), { [field]: new object_id_1.ObjectId(value).toString() });
}
if (value instanceof object_id_1.ObjectId) {
return Object.assign(Object.assign({}, accum), { [field]: value.toString() });
}
return Object.assign(Object.assign({}, accum), { [field]: value });
}, {}, ramda_1.default.toPairs(obj));
}
class Analytics {
constructor(params) {
this.project = params.project;
this.driver = mixpanel_1.default.init(process.env.MIXPANEL_TOKEN || 'secrets');
this.driver = mixpanel_1.default.init(params.token);
this.queue = new p_queue_1.default({ concurrency: 1 });
this.status = 'STARTED';
}
createAccount(params) {
var _a;
this.driver.people.set(params.accountId.toString(), {
$distinct_id: params.accountId.toString(),
meta: { project: this.project },
$first_name: params.firstname,
$last_name: params.lastname,
$email: params.email,
$created: (_a = params.created) !== null && _a !== void 0 ? _a : new Date(),
if (this.status === 'SHUTTING_DOWN')
return;
const extraFields = serialize(ramda_1.default.omit(['accountId', 'firstname', 'lastname', 'email', 'created'], params));
this.queue.add(async () => {
try {
await new Promise((resolve, reject) => {
var _a;
this.driver.people.set(params.accountId.toString(), Object.assign({ $distinct_id: params.accountId.toString(), meta: { project: this.project }, $first_name: params.firstname, $last_name: params.lastname, $email: params.email, $created: (_a = params.created) !== null && _a !== void 0 ? _a : new Date() }, extraFields), (err) => {
if (err) {
reject(err);
}
resolve();
});
});
}
catch (error) {
logger.tag('createAccount').verbose(error);
}
});
}
createEvent(params) {
this.driver.track(params.name, Object.assign({ $distinct_id: params.accountId, meta: { project: this.project } }, params.body));
if (this.status === 'SHUTTING_DOWN')
return;
this.queue.add(async () => {
try {
await new Promise((resolve, reject) => {
this.driver.track(params.eventName, Object.assign({ $distinct_id: params.accountId, meta: { project: this.project } }, serialize(params.body)), (err) => {
if (err) {
reject(err);
}
resolve();
});
});
}
catch (error) {
logger.tag('createEvent').verbose(error);
}
});
}
async stop() {
this.status = 'SHUTTING_DOWN';
this.queue.clear();
await this.queue.onIdle();
}
}
exports.Analytics = Analytics;
//# sourceMappingURL=analytics.js.map
export { Analytics } from './analytics';
//# sourceMappingURL=index.d.ts.map

@@ -0,0 +0,0 @@ "use strict";

55

package.json
{
"name": "@highoutput/analytics",
"version": "0.1.6",
"version": "0.2.2",
"description": "Analytics",
"main": "dist/index.js",
"scripts": {
"prepublishOnly": "npm run build",
"prebuild": "rimraf dist/",
"build": "tsc --project tsconfig.json",
"test": "jest --config=./jest.config.js --coverage",
"eslint": "eslint --fix --ext .ts,.tsx src/** tests/**"
},
"publishConfig": {

@@ -20,27 +27,27 @@ "access": "public"

"dependencies": {
"mixpanel": "^0.16.0",
"typescript": "^4.7.4"
"@highoutput/logger": "^0.5.19",
"@highoutput/object-id": "0.1.8",
"mixpanel": "0.16.0",
"p-queue": "^6.6.2",
"ramda": "0.28.0",
"typescript": "4.7.4"
},
"devDependencies": {
"@types/chance": "^1.1.3",
"@types/jest": "^28.1.5",
"@types/node": "^18.0.3",
"@typescript-eslint/eslint-plugin": "^5.30.6",
"@typescript-eslint/parser": "^5.30.6",
"chance": "^1.1.8",
"eslint": "^8.19.0",
"eslint-config-airbnb-base": "^15.0.0",
"eslint-plugin-import": "^2.26.0",
"eslint-plugin-prettier": "^4.2.1",
"jest": "^28.1.2",
"prettier": "^2.7.1",
"ts-jest": "^28.0.5"
"@highoutput/delay": "^0.2.8",
"@types/chance": "1.1.3",
"@types/jest": "28.1.5",
"@types/node": "18.0.3",
"@types/ramda": "0.28.15",
"@typescript-eslint/eslint-plugin": "5.30.6",
"@typescript-eslint/parser": "5.30.6",
"chance": "1.1.8",
"eslint": "8.19.0",
"eslint-config-airbnb-base": "15.0.0",
"eslint-plugin-import": "2.26.0",
"eslint-plugin-prettier": "4.2.1",
"jest": "28.1.2",
"prettier": "2.7.1",
"ts-jest": "28.0.5"
},
"gitHead": "f6d14c3ca3a4fa04758b42513f5a167e41138c94",
"scripts": {
"prebuild": "rimraf dist/",
"build": "tsc --project tsconfig.json",
"test": "jest --config=./jest.config.js --coverage",
"eslint": "eslint --fix --ext .ts,.tsx src/** tests/**"
}
}
"gitHead": "86810b36720697c0a8ef64ed7b8c6d8ac3aa3a11"
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc