Skip to content

Commit b20096e

Browse files
Add integration navilytics This commit copies the content of the integration repo into the "integrations" folder. Original repo: https://github.com/segment-integrations/analytics.js-integration-navilytics Readme: https://github.com/segment-integrations/analytics.js-integration-navilytics/blob/master/README.md
1 parent 52c6f9a commit b20096e

File tree

6 files changed

+241
-0
lines changed

6 files changed

+241
-0
lines changed

integrations/navilytics/HISTORY.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
2.0.0 / 2016-06-21
2+
==================
3+
4+
* Remove Duo compatibility
5+
* Add CI setup (coverage, linting, cross-browser compatibility, etc.)
6+
* Update eslint configuration
7+
8+
1.0.4 / 2016-05-07
9+
==================
10+
11+
* Bump Analytics.js core, tester, integration to use Facade 2.x
12+
13+
1.0.3 / 2015-06-30
14+
==================
15+
16+
* Replace analytics.js dependency with analytics.js-core
17+
18+
1.0.2 / 2015-06-24
19+
==================
20+
21+
* Bump analytics.js-integration version
22+
23+
1.0.1 / 2015-06-24
24+
==================
25+
26+
* Bump analytics.js-integration version
27+
28+
1.0.0 / 2015-06-09
29+
==================
30+
31+
* Initial commit :sparkles:

integrations/navilytics/README.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# analytics.js-integration-navilytics [![Build Status][ci-badge]][ci-link]
2+
3+
Navilytics integration for [Analytics.js][].
4+
5+
## License
6+
7+
Released under the [MIT license](LICENSE).
8+
9+
10+
[Analytics.js]: https://segment.com/docs/libraries/analytics.js/
11+
[ci-link]: https://circleci.com/gh/segment-integrations/analytics.js-integration-navilytics
12+
[ci-badge]: https://circleci.com/gh/segment-integrations/analytics.js-integration-navilytics.svg?style=svg
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
'use strict';
2+
3+
/**
4+
* Module dependencies.
5+
*/
6+
7+
var integration = require('@segment/analytics.js-integration');
8+
var push = require('global-queue')('__nls');
9+
10+
/**
11+
* Expose `Navilytics` integration.
12+
*/
13+
14+
var Navilytics = module.exports = integration('Navilytics')
15+
.assumesPageview()
16+
.global('__nls')
17+
.option('memberId', '')
18+
.option('projectId', '')
19+
.tag('<script src="//www.navilytics.com/nls.js?mid={{ memberId }}&pid={{ projectId }}">');
20+
21+
/**
22+
* Initialize.
23+
*
24+
* https://www.navilytics.com/member/code_settings
25+
*
26+
* @api public
27+
*/
28+
29+
Navilytics.prototype.initialize = function() {
30+
window.__nls = window.__nls || [];
31+
this.load(this.ready);
32+
};
33+
34+
/**
35+
* Loaded?
36+
*
37+
* @api private
38+
* @return {boolean}
39+
*/
40+
41+
Navilytics.prototype.loaded = function() {
42+
return !!(window.__nls && Array.prototype.push !== window.__nls.push);
43+
};
44+
45+
/**
46+
* Track.
47+
*
48+
* https://www.navilytics.com/docs#tags
49+
*
50+
* @param {Track} track
51+
*/
52+
53+
Navilytics.prototype.track = function(track) {
54+
push('tagRecording', track.event());
55+
};
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
{
2+
"name": "@segment/analytics.js-integration-navilytics",
3+
"description": "The Navilytics analytics.js integration.",
4+
"version": "2.0.0",
5+
"keywords": [
6+
"analytics.js",
7+
"analytics.js-integration",
8+
"segment",
9+
"navilytics"
10+
],
11+
"main": "lib/index.js",
12+
"scripts": {
13+
"test": "make test"
14+
},
15+
"author": "Segment \u003cfriends@segment.com\u003e",
16+
"license": "SEE LICENSE IN LICENSE",
17+
"homepage": "https://github.com/segmentio/analytics.js-integrations/blob/master/integrations/navilytics#readme",
18+
"bugs": {
19+
"url": "https://github.com/segmentio/analytics.js-integrations/issues"
20+
},
21+
"repository": {
22+
"type": "git",
23+
"url": "git+https://github.com/segmentio/analytics.js-integrations.git"
24+
},
25+
"dependencies": {
26+
"@segment/analytics.js-integration": "^2.1.0",
27+
"global-queue": "^1.0.1"
28+
},
29+
"devDependencies": {
30+
"@segment/analytics.js-core": "^3.0.0",
31+
"@segment/analytics.js-integration-tester": "^3.1.0",
32+
"@segment/clear-env": "^2.0.0",
33+
"@segment/eslint-config": "^3.1.1",
34+
"browserify": "^13.0.0",
35+
"browserify-istanbul": "^2.0.0",
36+
"eslint": "^2.9.0",
37+
"eslint-plugin-mocha": "^2.2.0",
38+
"eslint-plugin-require-path-exists": "^1.1.5",
39+
"istanbul": "^0.4.3",
40+
"karma": "1.3.0",
41+
"karma-browserify": "^5.0.4",
42+
"karma-chrome-launcher": "^1.0.1",
43+
"karma-coverage": "^1.0.0",
44+
"karma-junit-reporter": "^1.0.0",
45+
"karma-mocha": "1.0.1",
46+
"karma-phantomjs-launcher": "^1.0.0",
47+
"karma-sauce-launcher": "^1.0.0",
48+
"karma-spec-reporter": "0.0.26",
49+
"mocha": "^2.2.5",
50+
"npm-check": "^5.2.1",
51+
"phantomjs-prebuilt": "^2.1.7",
52+
"watchify": "^3.7.0"
53+
}
54+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"extends": "@segment/eslint-config/mocha"
3+
}
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
'use strict';
2+
3+
var Analytics = require('@segment/analytics.js-core').constructor;
4+
var integration = require('@segment/analytics.js-integration');
5+
var sandbox = require('@segment/clear-env');
6+
var tester = require('@segment/analytics.js-integration-tester');
7+
var Navilytics = require('../lib/');
8+
9+
describe('Navilytics', function() {
10+
var analytics;
11+
var navilytics;
12+
var settings;
13+
14+
beforeEach(function() {
15+
settings = {
16+
memberId: '1042',
17+
projectId: '73'
18+
};
19+
analytics = new Analytics();
20+
navilytics = new Navilytics(settings);
21+
analytics.use(Navilytics);
22+
analytics.use(tester);
23+
analytics.add(navilytics);
24+
});
25+
26+
afterEach(function() {
27+
analytics.restore();
28+
analytics.reset();
29+
navilytics.reset();
30+
sandbox();
31+
});
32+
33+
it('should have the right settings', function() {
34+
analytics.compare(Navilytics, integration('Navilytics')
35+
.assumesPageview()
36+
.global('__nls')
37+
.option('memberId', '')
38+
.option('projectId', ''));
39+
});
40+
41+
describe('before loading', function() {
42+
beforeEach(function() {
43+
analytics.stub(navilytics, 'load');
44+
});
45+
46+
describe('#initialize', function() {
47+
it('should call #load', function() {
48+
analytics.initialize();
49+
analytics.page();
50+
analytics.called(navilytics.load);
51+
});
52+
53+
it('should create window.__nls', function() {
54+
analytics.assert(window.__nls === undefined);
55+
analytics.initialize();
56+
analytics.page();
57+
analytics.deepEqual(window.__nls, []);
58+
});
59+
});
60+
});
61+
62+
describe('loading', function() {
63+
it('should load', function(done) {
64+
analytics.load(navilytics, done);
65+
});
66+
});
67+
68+
describe('after loading', function() {
69+
beforeEach(function(done) {
70+
analytics.once('ready', done);
71+
analytics.initialize();
72+
analytics.page();
73+
});
74+
75+
describe('#track', function() {
76+
beforeEach(function() {
77+
analytics.stub(window.__nls, 'push');
78+
});
79+
80+
it('should tag the recording', function() {
81+
analytics.track('event');
82+
analytics.called(window.__nls.push, ['tagRecording', 'event']);
83+
});
84+
});
85+
});
86+
});

0 commit comments

Comments
 (0)