Socket
Socket
Sign inDemoInstall

@segment/analytics.js-core

Package Overview
Dependencies
Maintainers
75
Versions
69
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@segment/analytics.js-core - npm Package Compare versions

Comparing version 3.4.1 to 3.5.0

.npmignore

5

HISTORY.md
3.5.0 / 2018-04-25
==================
* Add Metrics
3.4.1 / 2018-04-23

@@ -3,0 +8,0 @@ ==================

@@ -20,2 +20,3 @@ 'use strict';

var cookie = require('./cookie');
var metrics = require('./metrics');
var debug = require('debug');

@@ -158,5 +159,13 @@ var defaults = require('@ndhoule/defaults');

try {
metrics.increment('analytics_js.integration.invoke', {
method: 'initialize',
integration_name: integration.name
});
integration.initialize();
} catch (e) {
var integrationName = integration.name;
metrics.increment('analytics_js.integration.invoke.error', {
method: 'initialize',
integration_name: integration.name
});
self.failedInitializations.push(integrationName);

@@ -578,2 +587,3 @@ self.log('Error initializing %s integration: %o', integrationName, e);

cookie.options(options.cookie);
metrics.options(options.metrics);
store.options(options.localStorage);

@@ -611,2 +621,5 @@ user.options(options.user);

var self = this;
metrics.increment('analytics_js.invoke', {
method: method
});
this.emit('invoke', facade);

@@ -623,4 +636,12 @@

try {
metrics.increment('analytics_js.integration.invoke', {
method: method,
integration_name: integration.name
});
integration.invoke.call(integration, method, facade);
} catch (e) {
metrics.increment('analytics_js.integration.invoke.error', {
method: method,
integration_name: integration.name
});
self.log('Error invoking .%s method of %s integration: %o', method, name, e);

@@ -736,1 +757,2 @@ }

module.exports.store = store;
module.exports.metrics = metrics;

5

package.json
{
"name": "@segment/analytics.js-core",
"author": "Segment <friends@segment.com>",
"version": "3.4.1",
"version": "3.5.0",
"description": "The hassle-free way to integrate analytics into any web application.",

@@ -59,3 +59,4 @@ "keywords": [

"segmentio-facade": "^3.0.2",
"uuid": "^2.0.2"
"uuid": "^2.0.2",
"@segment/send-json": "^3.0.0"
},

@@ -62,0 +63,0 @@ "devDependencies": {

@@ -22,2 +22,3 @@ 'use strict';

var user = analytics.user();
var metrics = Analytics.metrics;

@@ -108,2 +109,3 @@ describe('Analytics', function() {

sinon.spy(group, 'load');
sinon.spy(metrics, 'increment');
});

@@ -114,2 +116,3 @@

group.load.restore();
metrics.increment.restore();
});

@@ -161,2 +164,21 @@

it('should record a metric for integration errors', function() {
Test.prototype.initialize = function() { throw new Error('Uh oh!'); };
var test = new Test();
analytics.use(Test);
analytics.add(test);
analytics.initialize();
assert(analytics.initialized);
sinon.assert.calledTwice(metrics.increment);
sinon.assert.calledWith(metrics.increment, 'analytics_js.integration.invoke', {
method: 'initialize',
integration_name: 'Test'
});
sinon.assert.calledWith(metrics.increment, 'analytics_js.integration.invoke.error', {
method: 'initialize',
integration_name: 'Test'
});
});
it('should not error without settings', function() {

@@ -205,2 +227,15 @@ analytics.initialize();

it('should listen on integration ready events', function(done) {
Test.readyOnInitialize();
analytics.addIntegration(Test);
analytics.ready(done);
analytics.initialize(settings);
sinon.assert.calledOnce(metrics.increment);
sinon.assert.calledWith(metrics.increment, 'analytics_js.integration.invoke', {
method: 'initialize',
integration_name: 'Test'
});
});
it('should still call ready with unknown integrations', function(done) {

@@ -305,4 +340,10 @@ analytics.ready(done);

analytics.initialize(settings);
sinon.spy(metrics, 'increment');
});
afterEach(function() {
metrics.increment.restore();
});
it('should invoke a method on integration with facade', function() {

@@ -336,2 +377,33 @@ var a = new Identify({ userId: 'id', traits: { trait: true } });

it('should record a metric when invoking an integration', function() {
analytics.track('Test Event');
sinon.assert.calledTwice(metrics.increment);
sinon.assert.calledWith(metrics.increment, 'analytics_js.invoke', {
method: 'track'
});
sinon.assert.calledWith(metrics.increment, 'analytics_js.integration.invoke', {
method: 'track',
integration_name: 'Test'
});
});
it('should record a metric when invoking an integration', function() {
Test.prototype.invoke = function() { throw new Error('Uh oh!'); };
analytics.identify('prateek');
sinon.assert.calledThrice(metrics.increment);
sinon.assert.calledWith(metrics.increment, 'analytics_js.invoke', {
method: 'identify'
});
sinon.assert.calledWith(metrics.increment, 'analytics_js.integration.invoke', {
method: 'identify',
integration_name: 'Test'
});
sinon.assert.calledWith(metrics.increment, 'analytics_js.integration.invoke.error', {
method: 'identify',
integration_name: 'Test'
});
});
it('should support .integrations to disable / select integrations', function() {

@@ -361,2 +433,3 @@ var opts = { integrations: { Test: false } };

sinon.stub(group, 'options');
sinon.stub(metrics, 'options');
});

@@ -369,2 +442,3 @@

group.options.restore();
metrics.options.restore();
});

@@ -377,2 +451,7 @@

it('should set metrics options', function() {
analytics._options({ metrics: { option: true } });
assert(metrics.options.calledWith({ option: true }));
});
it('should set store options', function() {

@@ -379,0 +458,0 @@ analytics._options({ localStorage: { option: true } });

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