Skip to content

Commit 3945931

Browse files
committed
Move loader files and snippets into src/loaders
1 parent 246a7d7 commit 3945931

19 files changed

+140
-137
lines changed

.eslintignore

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
src/loaders/mixpanel.js
2+
src/loaders/mixpanel-jslib-snippet.js

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ or
5050

5151
2) Recompile the snippet with a custom `MIXPANEL_LIB_URL` using [Closure Compiler](https://developers.google.com/closure/compiler/):
5252
```sh
53-
java -jar compiler.jar --js mixpanel-jslib-snippet.js --js_output_file mixpanel-jslib-snippet.min.js --compilation_level ADVANCED_OPTIMIZATIONS --define='MIXPANEL_LIB_URL="bower_components/mixpanel/mixpanel.js"'
53+
java -jar compiler.jar --js src/loaders/mixpanel-jslib-snippet.js --js_output_file mixpanel-jslib-snippet.min.js --compilation_level ADVANCED_OPTIMIZATIONS --define='MIXPANEL_LIB_URL="bower_components/mixpanel/mixpanel.js"'
5454
```
5555

5656
### Upgrading from mixpanel-bower v2.2.0 or v2.0.0

bower.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "mixpanel",
33
"homepage": "https://github.com/mixpanel/mixpanel-js",
44
"description": "Mixpanel JavaScript Library",
5-
"main": "mixpanel-jslib-snippet.js",
5+
"main": "src/loaders/mixpanel-jslib-snippet.js",
66
"repository": {
77
"type": "git",
88
"url": "[email protected]:mixpanel/mixpanel-js.git"

build.sh

+8-8
Original file line numberDiff line numberDiff line change
@@ -8,25 +8,25 @@ if [ ! -z "$DIST" ]; then
88
fi
99

1010
echo 'Building main bundle'
11-
./node_modules/.bin/rollup -i src/loader-globals.js -f iife -o build/mixpanel.globals.js -n mixpanel -c rollup.config.js
11+
./node_modules/.bin/rollup -i src/loaders/loader-globals.js -f iife -o build/mixpanel.globals.js -n mixpanel -c rollup.config.js
1212
ln -sf mixpanel.globals.js build/mixpanel.js
1313

1414
if [ ! -z "$FULL" ]; then
1515
echo 'Minifying main build and snippets'
1616
java -jar vendor/closure-compiler/compiler.jar --js build/mixpanel.js --js_output_file build/mixpanel.min.js --compilation_level ADVANCED_OPTIMIZATIONS --output_wrapper "(function() {
1717
%output%
1818
})();"
19-
java -jar vendor/closure-compiler/compiler.jar --js mixpanel-jslib-snippet.js --js_output_file build/mixpanel-jslib-snippet.min.js --compilation_level ADVANCED_OPTIMIZATIONS
20-
java -jar vendor/closure-compiler/compiler.jar --js mixpanel-jslib-snippet.js --js_output_file build/mixpanel-jslib-snippet.min.test.js --compilation_level ADVANCED_OPTIMIZATIONS --define='MIXPANEL_LIB_URL="../build/mixpanel.min.js"'
19+
java -jar vendor/closure-compiler/compiler.jar --js src/loaders/mixpanel-jslib-snippet.js --js_output_file build/mixpanel-jslib-snippet.min.js --compilation_level ADVANCED_OPTIMIZATIONS
20+
java -jar vendor/closure-compiler/compiler.jar --js src/loaders/mixpanel-jslib-snippet.js --js_output_file build/mixpanel-jslib-snippet.min.test.js --compilation_level ADVANCED_OPTIMIZATIONS --define='MIXPANEL_LIB_URL="../build/mixpanel.min.js"'
2121

2222
echo 'Building mixpanel-js-wrapper'
23-
java -jar vendor/closure-compiler/compiler.jar --js mixpanel-jslib-snippet.js --js src/loaders/mixpanel-js-wrapper.js --js_output_file build/mixpanel-js-wrapper.js --compilation_level WHITESPACE_ONLY
24-
java -jar vendor/closure-compiler/compiler.jar --js mixpanel-jslib-snippet.js --js src/loaders/mixpanel-js-wrapper.js --js_output_file build/mixpanel-js-wrapper.min.js --compilation_level ADVANCED_OPTIMIZATIONS
23+
java -jar vendor/closure-compiler/compiler.jar --js src/loaders/mixpanel-jslib-snippet.js --js src/loaders/mixpanel-js-wrapper.js --js_output_file build/mixpanel-js-wrapper.js --compilation_level WHITESPACE_ONLY
24+
java -jar vendor/closure-compiler/compiler.jar --js src/loaders/mixpanel-jslib-snippet.js --js src/loaders/mixpanel-js-wrapper.js --js_output_file build/mixpanel-js-wrapper.min.js --compilation_level ADVANCED_OPTIMIZATIONS
2525

2626
echo 'Building module bundles'
27-
./node_modules/.bin/rollup -i src/loader-module.js -f amd -o build/mixpanel.amd.js -c rollup.config.js
28-
./node_modules/.bin/rollup -i src/loader-module.js -f cjs -o build/mixpanel.cjs.js -c rollup.config.js
29-
./node_modules/.bin/rollup -i src/loader-module.js -f umd -o build/mixpanel.umd.js -n mixpanel -c rollup.config.js
27+
./node_modules/.bin/rollup -i src/loaders/loader-module.js -f amd -o build/mixpanel.amd.js -c rollup.config.js
28+
./node_modules/.bin/rollup -i src/loaders/loader-module.js -f cjs -o build/mixpanel.cjs.js -c rollup.config.js
29+
./node_modules/.bin/rollup -i src/loaders/loader-module.js -f umd -o build/mixpanel.umd.js -n mixpanel -c rollup.config.js
3030

3131
echo 'Bundling module-loader test runners'
3232
./node_modules/.bin/webpack tests/module-cjs.js tests/module-cjs.bundle.js

examples/es2015-babelify/bundle.js

+8-8
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,21 @@
33

44
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
55

6-
var _srcLoaderModule = require('../../src/loader-module');
6+
var _srcLoadersLoaderModule = require('../../src/loaders/loader-module');
77

8-
var _srcLoaderModule2 = _interopRequireDefault(_srcLoaderModule);
8+
var _srcLoadersLoaderModule2 = _interopRequireDefault(_srcLoadersLoaderModule);
99

10-
_srcLoaderModule2['default'].init("FAKE_TOKEN", {
10+
_srcLoadersLoaderModule2['default'].init("FAKE_TOKEN", {
1111
debug: true,
1212
loaded: function loaded() {
13-
_srcLoaderModule2['default'].track('loaded() callback works but is unnecessary');
13+
_srcLoadersLoaderModule2['default'].track('loaded() callback works but is unnecessary');
1414
alert("Mixpanel loaded successfully via ES2015 Modules/Babelify");
1515
}
1616
});
1717

18-
_srcLoaderModule2['default'].track('Tracking after mixpanel.init');
18+
_srcLoadersLoaderModule2['default'].track('Tracking after mixpanel.init');
1919

20-
},{"../../src/loader-module":6}],2:[function(require,module,exports){
20+
},{"../../src/loaders/loader-module":6}],2:[function(require,module,exports){
2121
/* eslint camelcase: "off" */
2222

2323
'use strict';
@@ -653,14 +653,14 @@ Object.defineProperty(exports, '__esModule', {
653653
value: true
654654
});
655655

656-
var _mixpanelCore = require('./mixpanel-core');
656+
var _mixpanelCore = require('../mixpanel-core');
657657

658658
var mixpanel = (0, _mixpanelCore.init_as_module)();
659659

660660
exports['default'] = mixpanel;
661661
module.exports = exports['default'];
662662

663-
},{"./mixpanel-core":7}],7:[function(require,module,exports){
663+
},{"../mixpanel-core":7}],7:[function(require,module,exports){
664664
/* eslint camelcase: "off" */
665665
'use strict';
666666

examples/es2015-babelify/index.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import mixpanel from '../../src/loader-module';
1+
import mixpanel from '../../src/loaders/loader-module';
22

33
mixpanel.init("FAKE_TOKEN", {
44
debug: true,

mixpanel-jslib-snippet.js

-105
This file was deleted.

mixpanel-jslib-snippet.js

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
src/loaders/mixpanel-jslib-snippet.js

src/loader-globals.js

-4
This file was deleted.

src/loaders/loader-globals.js

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
/* eslint camelcase: "off" */
2+
import { init_from_snippet } from '../mixpanel-core';
3+
4+
init_from_snippet();

src/loader-module.js renamed to src/loaders/loader-module.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* eslint camelcase: "off" */
2-
import { init_as_module } from './mixpanel-core';
2+
import { init_as_module } from '../mixpanel-core';
33

44
var mixpanel = init_as_module();
55

src/loaders/mixpanel-jslib-snippet.js

+105
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
// ==ClosureCompiler==
2+
// @compilation_level SIMPLE_OPTIMIZATIONS
3+
// @output_file_name mixpanel-jslib-2.2-snippet.min.js
4+
// ==/ClosureCompiler==
5+
6+
/** @define {string} */
7+
var MIXPANEL_LIB_URL = '//cdn.mxpnl.com/libs/mixpanel-2-latest.min.js';
8+
9+
(function(document, mixpanel) {
10+
// Only stub out if this is the first time running the snippet.
11+
if (!mixpanel['__SV']) {
12+
var script, first_script, gen_fn, functions, i, lib_name = "mixpanel";
13+
window[lib_name] = mixpanel;
14+
15+
mixpanel['_i'] = [];
16+
17+
mixpanel['init'] = function (token, config, name) {
18+
// support multiple mixpanel instances
19+
var target = mixpanel;
20+
if (typeof(name) !== 'undefined') {
21+
target = mixpanel[name] = [];
22+
} else {
23+
name = lib_name;
24+
}
25+
26+
// Pass in current people object if it exists
27+
target['people'] = target['people'] || [];
28+
target['toString'] = function(no_stub) {
29+
var str = lib_name;
30+
if (name !== lib_name) {
31+
str += "." + name;
32+
}
33+
if (!no_stub) {
34+
str += " (stub)";
35+
}
36+
return str;
37+
};
38+
target['people']['toString'] = function() {
39+
// 1 instead of true for minifying
40+
return target.toString(1) + ".people (stub)";
41+
};
42+
43+
function _set_and_defer(target, fn) {
44+
var split = fn.split(".");
45+
if (split.length == 2) {
46+
target = target[split[0]];
47+
fn = split[1];
48+
}
49+
target[fn] = function() {
50+
target.push([fn].concat(Array.prototype.slice.call(arguments, 0)));
51+
};
52+
}
53+
54+
// create shallow clone of the public mixpanel interface
55+
// Note: only supports 1 additional level atm, e.g. mixpanel.people.set, not mixpanel.people.set.do_something_else.
56+
functions = "disable time_event track track_pageview track_links track_forms track_with_groups add_group set_group remove_group register register_once alias unregister identify name_tag set_config reset opt_in_tracking opt_out_tracking has_opted_in_tracking has_opted_out_tracking clear_opt_in_out_tracking start_batch_senders people.set people.set_once people.unset people.increment people.append people.union people.track_charge people.clear_charges people.delete_user people.remove".split(' ');
57+
for (i = 0; i < functions.length; i++) {
58+
_set_and_defer(target, functions[i]);
59+
}
60+
61+
// special case for get_group(): chain method calls like mixpanel.get_group('foo', 'bar').unset('baz')
62+
var group_functions = "set set_once union unset remove delete".split(' ');
63+
target['get_group'] = function() {
64+
var mock_group = {};
65+
66+
var call1_args = arguments;
67+
var call1 = ['get_group'].concat(Array.prototype.slice.call(call1_args, 0));
68+
69+
function _set_and_defer_chained(fn_name) {
70+
mock_group[fn_name] = function() {
71+
var call2_args = arguments;
72+
var call2 = [fn_name].concat(Array.prototype.slice.call(call2_args, 0));
73+
target.push([call1, call2]);
74+
};
75+
}
76+
for (var i = 0; i < group_functions.length; i++) {
77+
_set_and_defer_chained(group_functions[i]);
78+
}
79+
return mock_group;
80+
};
81+
82+
// register mixpanel instance
83+
mixpanel['_i'].push([token, config, name]);
84+
};
85+
86+
// Snippet version, used to fail on new features w/ old snippet
87+
mixpanel['__SV'] = 1.2;
88+
89+
script = document.createElement("script");
90+
script.type = "text/javascript";
91+
script.async = true;
92+
93+
if (typeof MIXPANEL_CUSTOM_LIB_URL !== 'undefined') {
94+
script.src = MIXPANEL_CUSTOM_LIB_URL;
95+
} else if (document.location.protocol === 'file:' && MIXPANEL_LIB_URL.match(/^\/\//)) {
96+
script.src = 'https:' + MIXPANEL_LIB_URL;
97+
} else {
98+
script.src = MIXPANEL_LIB_URL;
99+
}
100+
101+
first_script = document.getElementsByTagName("script")[0];
102+
first_script.parentNode.insertBefore(script, first_script);
103+
}
104+
// Pass in current Mixpanel object if it exists (for ppl like Optimizely)
105+
})(document, window['mixpanel'] || []);

tests/lib-2implementations.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ <h2 id="qunit-userAgent"></h2>
2626
mixpanel.people = [function() { this.val_to_change = 42; }];
2727
</script>
2828
<script>window.MIXPANEL_CUSTOM_LIB_URL = '../mixpanel.js';</script>
29-
<script type="text/javascript" src="../mixpanel-jslib-snippet.js"></script>
29+
<script type="text/javascript" src="../src/loaders/mixpanel-jslib-snippet.js"></script>
3030
<script type="text/javascript">
3131
// Test that the base lib is correctly initialized
3232
mixpanel.init("4874fb5a6ac20d3c883349defcfb9c99",

tests/lib-apidown.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ <h2 id="qunit-userAgent"></h2>
3030
});
3131
</script>
3232
<script>window.MIXPANEL_CUSTOM_LIB_URL = '../mixpanel.js';</script>
33-
<script type="text/javascript" src="../mixpanel-jslib-snippet.js"></script>
33+
<script type="text/javascript" src="../src/loaders/mixpanel-jslib-snippet.js"></script>
3434
<script type="text/javascript">
3535
mixpanel.init("4874fb5a6ac20d3c883349defcfb9c99",
3636
{

tests/lib-cookiefailure.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ <h2 id="qunit-userAgent"></h2>
1919
<div id="qunit-fixture"></div>
2020
<script>window.MIXPANEL_CUSTOM_LIB_URL = '../mixpanel.js';</script>
2121
<script type="text/javascript" src="redirect-unless-referrer.js"></script>
22-
<script type="text/javascript" src="../mixpanel-jslib-snippet.js"></script>
22+
<script type="text/javascript" src="../src/loaders/mixpanel-jslib-snippet.js"></script>
2323
<script type="text/javascript">
2424
$('#qunit-tests').addClass('hidepass')
2525

tests/lib-headcalls.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<link rel="stylesheet" type="text/css" href="tests.css">
1111
<script>window.MIXPANEL_CUSTOM_LIB_URL = '../mixpanel.js';</script>
1212
<script type="text/javascript" src="redirect-unless-referrer.js"></script>
13-
<script type="text/javascript" src="../mixpanel-jslib-snippet.js"></script>
13+
<script type="text/javascript" src="../src/loaders/mixpanel-jslib-snippet.js"></script>
1414
<script type="text/javascript">
1515
var called_all_mixpanel_functions = false;
1616
var group_ops = {}

tests/lib-localstorage.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ <h2 id="qunit-userAgent"></h2>
1818
<div id="qunit-fixture"></div>
1919
<script>window.MIXPANEL_CUSTOM_LIB_URL = '../mixpanel.js';</script>
2020
<script type="text/javascript" src="redirect-unless-referrer.js"></script>
21-
<script type="text/javascript" src="../mixpanel-jslib-snippet.js"></script>
21+
<script type="text/javascript" src="../src/loaders/mixpanel-jslib-snippet.js"></script>
2222
<script type="text/javascript">
2323
$('#qunit-tests').addClass('hidepass')
2424

tests/module-es2015.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import mixpanel from '../src/loader-module';
1+
import mixpanel from '../src/loaders/loader-module';
22

33
$('#qunit-tests').addClass('hidepass');
44
mixpanel.init("MIXPANEL_TOKEN", {

tests/tests.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ <h2 id="qunit-userAgent"></h2>
2525
</div>
2626
<script>window.MIXPANEL_CUSTOM_LIB_URL = '../build/mixpanel.js';</script>
2727
<script type="text/javascript" src="redirect-unless-referrer.js"></script>
28-
<script type="text/javascript" src="../mixpanel-jslib-snippet.js"></script>
28+
<script type="text/javascript" src="../src/loaders/mixpanel-jslib-snippet.js"></script>
2929
<script type="text/javascript" src="./run-tests.js"></script>
3030
</body>
3131
</html>

0 commit comments

Comments
 (0)