Socket
Socket
Sign inDemoInstall

@segment/analytics.js-core

Package Overview
Dependencies
Maintainers
80
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.6.0 to 3.7.2

.circleci/config.yml

2620

HISTORY.md

@@ -0,1800 +1,1900 @@

# 3.7.0 / 2018-07-30
3.6.0 / 2018-05-09
==================
- ci: Fix publish step in circle config (https://github.com/segmentio/analytics.js-core/pull/97)
- build: Replace robo with np for releasing (https://github.com/segmentio/analytics.js-core/pull/96)
- docs: Fix CI status Badges (https://github.com/segmentio/analytics.js-core/pull/95)
- build: Setup Snyk (https://github.com/segmentio/analytics.js-core/pull/93)
- test: Fix flaky tests (https://github.com/segmentio/analytics.js-core/pull/91, https://github.com/segmentio/analytics.js-core/pull/84)
- build: Update ESLint (https://github.com/segmentio/analytics.js-core/pull/90)
- ci: Setup codecov.io (https://github.com/segmentio/analytics.js-core/pull/75)
- build: Setup Prettier (https://github.com/segmentio/analytics.js-core/pull/89)
- ci: Report pretty test results (https://github.com/segmentio/analytics.js-core/pull/88)
- ci: Report readable test summary (https://github.com/segmentio/analytics.js-core/pull/81)
- build: use yarn (https://github.com/segmentio/analytics.js-core/pull/87, https://github.com/segmentio/analytics.js-core/pull/83
- git: Ignore package-lock.json (https://github.com/segmentio/analytics.js-core/pull/76)
- ci: Migrate to Circle CI 2.0 (https://github.com/segmentio/analytics.js-core/pull/77, https://github.com/segmentio/analytics.js-core/pull/83, https://github.com/segmentio/analytics.js-core/pull/79)
- ci: Improve test reporting (https://github.com/segmentio/analytics.js-core/pull/86)
* Add support for disabling integrations at runtime (#70).
* Fix the tracking plan when load options are specified (#74).
# 3.6.0 / 2018-05-09
3.6.0-alpha.2 / 2018-05-09
==================
- Add support for disabling integrations at runtime (#70).
- Fix the tracking plan when load options are specified (#74).
* Fix the tracking plan when load options are specified (#74).
# 3.6.0-alpha.2 / 2018-05-09
3.6.0-alpha / 2018-05-09
==================
- Fix the tracking plan when load options are specified (#74).
* Add support for disabling integrations at runtime (#70).
# 3.6.0-alpha / 2018-05-09
3.5.2 / 2018-05-01
==================
- Add support for disabling integrations at runtime (#70).
* Fix metrics payload, send `Counter` in titlecase, and send `value`.
# 3.5.2 / 2018-05-01
3.5.1 / 2018-05-01
==================
- Fix metrics payload, send `Counter` in titlecase, and send `value`.
* Fix Metrics Client Payload, send `series` instead of `metrics`.
# 3.5.1 / 2018-05-01
3.5.0 / 2018-04-25
==================
- Fix Metrics Client Payload, send `series` instead of `metrics`.
* Add Metrics
# 3.5.0 / 2018-04-25
3.4.1 / 2018-04-23
==================
- Add Metrics
* Catch and guard against Integration errors
# 3.4.1 / 2018-04-23
3.4.0 / 2018-03-05
==================
- Catch and guard against Integration errors
* Revert "[SCH-297][SCH-298] Add tracking plan support to identify and group traits" (#63)
# 3.4.0 / 2018-03-05
3.3.0 / 2018-03-01
==================
- Revert "[SCH-297][sch-298] Add tracking plan support to identify and group traits" (#63)
* Add tracking plan support to identify and group traits (#61)
# 3.3.0 / 2018-03-01
3.2.7 / 2018-02-09
==================
- Add tracking plan support to identify and group traits (#61)
* Replace lodash deepclone with extend to lower ajs size
# 3.2.7 / 2018-02-09
3.2.6 / 2018-02-06
==================
- Replace lodash deepclone with extend to lower ajs size
* Replace ndhoule clone with lodash clone to handle circular references in objects
# 3.2.6 / 2018-02-06
3.2.5 / 2017-11-09
==================
- Replace ndhoule clone with lodash clone to handle circular references in objects
* This release has no application changes - it's an attempt to fix release commits on CI.
# 3.2.5 / 2017-11-09
3.2.4 / 2017-11-09
==================
- This release has no application changes - it's an attempt to fix release commits on CI.
* Revert "update page defaults search method" (#51).
# 3.2.4 / 2017-11-09
3.2.3 / 2017-11-09
==================
- Revert "update page defaults search method" (#51).
* Add support for schema defaults (#50).
# 3.2.3 / 2017-11-09
3.2.2 / 2017-11-05
==================
- Add support for schema defaults (#50).
* Build updates on CI.
* This release has no application changes - it's an attempt to fix release commits on CI.
# 3.2.2 / 2017-11-05
3.2.1 / 2017-11-03
==================
- Build updates on CI.
- This release has no application changes - it's an attempt to fix release commits on CI.
* Fix release commit in 3.2.0
# 3.2.1 / 2017-11-03
3.2.0 / 2017-11-03
==================
- Fix release commit in 3.2.0
* Send disabled events to Segment.
# 3.2.0 / 2017-11-03
3.1.3 / 2017-11-01
==================
- Send disabled events to Segment.
* Adds invocation of integration.ready in initialize catch statement to ensure analytics.ready callbacks are fired.
# 3.1.3 / 2017-11-01
3.1.2 / 2017-10-31
==================
- Adds invocation of integration.ready in initialize catch statement to ensure analytics.ready callbacks are fired.
* Updates try/catch logic during initializations of integrations to look for integration.name - not integration.prototype.name
* Adds a check during `analytics._invoke` to check if the integration failed to initialize and if so, logs that it is passing and does not invoke it's corresponding method.
# 3.1.2 / 2017-10-31
3.1.1 / 2017-10-31
==================
- Updates try/catch logic during initializations of integrations to look for integration.name - not integration.prototype.name
- Adds a check during `analytics._invoke` to check if the integration failed to initialize and if so, logs that it is passing and does not invoke it's corresponding method.
* Wrap initialize functions of integrations in try/catch statement.
* Add logging of failed initializations.
* Add a `failedInitializations` array to prototype to capture names of any failed integrations.
# 3.1.1 / 2017-10-31
3.1.0 / 2017-06-29
==================
- Wrap initialize functions of integrations in try/catch statement.
- Add logging of failed initializations.
- Add a `failedInitializations` array to prototype to capture names of any failed integrations.
* Deprecate IE7/8 testing support
* Re-modernize test dependencies
# 3.1.0 / 2017-06-29
3.0.0 / 2016-05-25
==================
- Deprecate IE7/8 testing support
- Re-modernize test dependencies
* Remove Duo support, add browserify support
* Modernize test harness
# 3.0.0 / 2016-05-25
2.12.2 / 2016-05-24
===================
- Remove Duo support, add browserify support
- Modernize test harness
* Replace component/assert with segmentio/assert to fix build issues
# 2.12.2 / 2016-05-24
2.12.1 / 2016-05-23
===================
- Replace component/assert with segmentio/assert to fix build issues
* Fix bad dependency pin
# 2.12.1 / 2016-05-23
2.12.0 / 2016-05-06
===================
- Fix bad dependency pin
* Update facade dependency to 2.x
# 2.12.0 / 2016-05-06
2.11.1 / 2015-10-13
===================
- Update facade dependency to 2.x
* publishing new version to fix bower
# 2.11.1 / 2015-10-13
2.11.0 / 2015-09-02
===================
- publishing new version to fix bower
* add support for populating traits and properties in querystring-triggered calls
# 2.11.0 / 2015-09-02
2.10.1 / 2015-07-30
===================
- add support for populating traits and properties in querystring-triggered calls
* Bump component/querystring to 2.0.0 to fix a URL encoding issue
# 2.10.1 / 2015-07-30
2.10.0 / 2015-06-16
==================
- Bump component/querystring to 2.0.0 to fix a URL encoding issue
* remove git hooks
* add circle.yml
* remove travis ci
* ignore built files
* remove integrations
# 2.10.0 / 2015-06-16
2.9.1 / 2015-06-11
==================
- remove git hooks
- add circle.yml
- remove travis ci
- ignore built files
- remove integrations
* Remove deprecated analytics.js-integrations dependency
* Update build
# 2.9.1 / 2015-06-11
2.9.0 / 2015-06-11
==================
- Remove deprecated analytics.js-integrations dependency
- Update build
* Pull integrations from individual repositories, located in the [segment-integrations GitHub organization](https://github.com/segment-integrations/). This change should be unnoticeable from a user perspective, but has huge benefits in that excluding integrations from custom builds is now much, much easier, and one integration's test failures will no longer prevent another integration's tests from running.
# 2.9.0 / 2015-06-11
A noteworthy part of this change: All integrations are now pulled into Analytics.js in `component.json`, using an explicit version number.
- Pull integrations from individual repositories, located in the [segment-integrations GitHub organization](https://github.com/segment-integrations/). This change should be unnoticeable from a user perspective, but has huge benefits in that excluding integrations from custom builds is now much, much easier, and one integration's test failures will no longer prevent another integration's tests from running.
A noteworthy part of this change: All integrations are now pulled into Analytics.js in `component.json`, using an explicit version number.
In the future this part of the build process is very likely to change to be more of an automatic process, but for now--baby steps.
2.8.25 / 2015-06-03
===================
# 2.8.25 / 2015-06-03
* Update build (for real this time)
- Update build (for real this time)
2.8.24 / 2015-06-03
===================
# 2.8.24 / 2015-06-03
* Update build
- Update build
2.8.23 / 2015-05-27
===================
# 2.8.23 / 2015-05-27
* Update component/url dependency to 0.2.0
- Update component/url dependency to 0.2.0
2.8.22 / 2015-05-22
===================
# 2.8.22 / 2015-05-22
* Update build
- Update build
2.8.21 / 2015-05-22
===================
# 2.8.21 / 2015-05-22
* Update build
- Update build
2.8.20 / 2015-05-22
===================
# 2.8.20 / 2015-05-22
* Update build
* Clean up Makefile
- Update build
- Clean up Makefile
2.8.19 / 2015-05-16
===================
# 2.8.19 / 2015-05-16
* Pin all dependencies
* Bump Node.js engine dependency to 0.12
- Pin all dependencies
- Bump Node.js engine dependency to 0.12
2.8.18 / 2015-05-14
===================
# 2.8.18 / 2015-05-14
* Bump duo-test dependency
- Bump duo-test dependency
2.8.17 / 2015-05-02
===================
# 2.8.17 / 2015-05-02
* Build updated
- Build updated
2.8.16 / 2015-05-01
===================
# 2.8.16 / 2015-05-01
* Build updated
- Build updated
2.8.15 / 2015-04-29
===================
# 2.8.15 / 2015-04-29
* Build updated
- Build updated
2.8.14 / 2015-04-29
===================
# 2.8.14 / 2015-04-29
* Build updated
- Build updated
2.8.13 / 2015-04-28
===================
# 2.8.13 / 2015-04-28
* Build updated
- Build updated
2.8.12 / 2015-04-23
===================
# 2.8.12 / 2015-04-23
* deps: bump top-domain for test cookie deletion fix
* cookie: bump top-domain to v2 to catch all top domains
- deps: bump top-domain for test cookie deletion fix
- cookie: bump top-domain to v2 to catch all top domains
# 2.8.10 / 2015-04-20
2.8.10 / 2015-04-20
===================
- Build updated
* Build updated
# 2.8.9 / 2015-04-16
2.8.9 / 2015-04-16
==================
* Fix conflicts
- Fix conflicts
2.8.8 / 2015-04-16
==================
# 2.8.8 / 2015-04-16
* Updating analytics.js-integrations
* Updating analytics.js-integrations
- Updating analytics.js-integrations
- Updating analytics.js-integrations
2.8.7 / 2015-04-09
==================
# 2.8.7 / 2015-04-09
* Build updated
* adding pre-release hook (and make targets for hooks)
- Build updated
- adding pre-release hook (and make targets for hooks)
2.8.6 / 2015-04-09
==================
# 2.8.6 / 2015-04-09
* Build updated
- Build updated
2.8.5 / 2015-04-09
==================
# 2.8.5 / 2015-04-09
* Build updated
- Build updated
2.8.4 / 2015-04-02
==================
# 2.8.4 / 2015-04-02
* Build updated
- Build updated
2.8.3 / 2015-03-31
==================
# 2.8.3 / 2015-03-31
* Build updated
- Build updated
2.8.2 / 2015-03-24
==================
# 2.8.2 / 2015-03-24
* Build updated
- Build updated
2.8.1 / 2015-03-20
==================
# 2.8.1 / 2015-03-20
* Build updated
* adding a build phony target
- Build updated
- adding a build phony target
2.8.0 / 2015-03-07
==================
# 2.8.0 / 2015-03-07
* group: fix typo
* entity: add debug warning for memory store
* test: add fallback to memory tests
* entity: fallback to memory
* add memory store
* entity: fallback to localstorage when cookies are disabled
* tests: add localstorage fallback tests
* dist: rebuild
- group: fix typo
- entity: add debug warning for memory store
- test: add fallback to memory tests
- entity: fallback to memory
- add memory store
- entity: fallback to localstorage when cookies are disabled
- tests: add localstorage fallback tests
- dist: rebuild
2.7.1 / 2015-03-05
==================
# 2.7.1 / 2015-03-05
* Updating analytics.js-integrations
- Updating analytics.js-integrations
2.7.0 / 2015-03-05
==================
# 2.7.0 / 2015-03-05
* Attach page metadata to all calls as `context.page`
- Attach page metadata to all calls as `context.page`
2.6.13 / 2015-03-04
===================
# 2.6.13 / 2015-03-04
* normalize: remove trailing comma
* dist: rebuild to make tests pass
* normalize: remove redundant keys from toplevel
- normalize: remove trailing comma
- dist: rebuild to make tests pass
- normalize: remove redundant keys from toplevel
2.6.12 / 2015-03-03
===================
# 2.6.12 / 2015-03-03
* Release 2.6.11
* normalize: keep traits in options
- Release 2.6.11
- normalize: keep traits in options
2.6.11 / 2015-02-28
==================
# 2.6.11 / 2015-02-28
* normalize: keep traits in options
- normalize: keep traits in options
2.6.10 / 2015-02-25
===================
# 2.6.10 / 2015-02-25
* Updating analytics.js-integrations
- Updating analytics.js-integrations
2.6.9 / 2015-02-25
==================
# 2.6.9 / 2015-02-25
* Updating analytics.js-integrations
- Updating analytics.js-integrations
2.6.8 / 2015-02-25
==================
# 2.6.8 / 2015-02-25
* Updating analytics.js-integrations
- Updating analytics.js-integrations
2.6.7 / 2015-02-24
==================
# 2.6.7 / 2015-02-24
* Updating analytics.js-integrations
* removed duplicate .on('initialize') from analytics constructor
- Updating analytics.js-integrations
- removed duplicate .on('initialize') from analytics constructor
2.6.6 / 2015-02-23
==================
# 2.6.6 / 2015-02-23
* update integrations
- update integrations
# 2.6.5 / 2015-02-19
2.6.5 / 2015-02-19
==================
- analytics: less verbose logging
- analytics.js: cleanup plan
- analytics.js: add debugs
- normalize: dont clobber and add tests
- analytics: use normalize removing message()
- add normalize.js
* analytics: less verbose logging
* analytics.js: cleanup plan
* analytics.js: add debugs
* normalize: dont clobber and add tests
* analytics: use normalize removing message()
* add normalize.js
# 2.6.4 / 2015-02-19
- Updating analytics.js-integrations
2.6.4 / 2015-02-19
==================
# 2.6.3 / 2015-02-17
* Updating analytics.js-integrations
- plan: .archived -> .enabled
2.6.3 / 2015-02-17
==================
# 2.6.1 / 2015-02-12
* plan: .archived -> .enabled
- user: fix old anonymous id
2.6.1 / 2015-02-12
==================
# 2.6.0 / 2015-02-09
* user: fix old anonymous id
- .track(): ignore archived events
- .\_options(): preserve options
# 2.5.17 / 2015-02-04
2.6.0 / 2015-02-09
==================
- Updating analytics.js-integrations
* .track(): ignore archived events
* ._options(): preserve options
# 2.5.16 / 2015-02-04
2.5.17 / 2015-02-04
===================
- Updating analytics.js-integrations
* Updating analytics.js-integrations
# 2.5.15 / 2015-02-03
2.5.16 / 2015-02-04
===================
- Updating analytics.js-integrations
* Updating analytics.js-integrations
# 2.5.14 / 2015-02-03
2.5.15 / 2015-02-03
===================
- Updating analytics.js-integrations
* Updating analytics.js-integrations
# 2.5.13 / 2015-01-29
2.5.14 / 2015-02-03
===================
- Updating analytics.js-integrations
* Updating analytics.js-integrations
# 2.5.12 / 2015-01-23
2.5.13 / 2015-01-29
===================
- Updating analytics.js-integrations
* Updating analytics.js-integrations
# 2.5.10 / 2015-01-22
2.5.12 / 2015-01-23
===================
- Updating analytics.js-integrations
* Updating analytics.js-integrations
# 2.5.9 / 2015-01-22
2.5.10 / 2015-01-22
===================
- Updating analytics.js-integrations
* Updating analytics.js-integrations
# 2.5.8 / 2015-01-21
2.5.9 / 2015-01-22
==================
- Updating analytics.js-integrations
* Updating analytics.js-integrations
# 2.5.7 / 2015-01-15
2.5.8 / 2015-01-21
==================
- Updating analytics.js-integrations
* Updating analytics.js-integrations
# 2.5.6 / 2015-01-15
2.5.7 / 2015-01-15
==================
- Updating analytics.js-integrations
* Updating analytics.js-integrations
# 2.5.5 / 2015-01-14
2.5.6 / 2015-01-15
==================
- Updating analytics.js-integrations
* Updating analytics.js-integrations
# 2.5.4 / 2015-01-14
2.5.5 / 2015-01-14
==================
- Updating analytics.js-integrations
* Updating analytics.js-integrations
# 2.5.3 / 2015-01-08
2.5.4 / 2015-01-14
==================
- Fix release
* Updating analytics.js-integrations
# 2.5.2 / 2015-01-08
2.5.3 / 2015-01-08
==================
- Updating analytics.js-integrations
* Fix release
# 2.5.0 / 2015-01-01
2.5.2 / 2015-01-08
==================
- update integrations
- analytics: add setAnonymousId
* Updating analytics.js-integrations
# 2.4.21 / 2014-12-11
2.5.0 / 2015-01-01
==================
- Updating analytics.js-integrations
- tests: skip svg tests on legacy browsers
- travis: node 0.11.13
- trackLink: support svg anchor tags
- add cross browser tests
* update integrations
* analytics: add setAnonymousId
# 2.4.18 / 2014-11-22
2.4.21 / 2014-12-11
===================
- Updating analytics.js-integrations
* Updating analytics.js-integrations
* tests: skip svg tests on legacy browsers
* travis: node 0.11.13
* trackLink: support svg anchor tags
* add cross browser tests
# 2.4.16 / 2014-11-13
2.4.18 / 2014-11-22
===================
- Updating analytics.js-integrations
* Updating analytics.js-integrations
# 2.4.15 / 2014-11-11
2.4.16 / 2014-11-13
===================
- clean: --force to ignore errs
- Updating analytics.js-integrations
* Updating analytics.js-integrations
# 2.4.14 / 2014-11-06
2.4.15 / 2014-11-11
==================
- Updating analytics.js-integrations
* clean: --force to ignore errs
* Updating analytics.js-integrations
# 2.4.10 / 2014-10-27
2.4.14 / 2014-11-06
===================
- support umd
* Updating analytics.js-integrations
# 2.4.9 / 2014-10-25
2.4.10 / 2014-10-27
==================
- Updating analytics.js-integrations
* support umd
# 2.4.7 / 2014-10-21
2.4.9 / 2014-10-25
==================
- Updating analytics.js integrations to 1.3.2
* Updating analytics.js-integrations
# 2.4.6 / 2014-10-17
2.4.7 / 2014-10-21
==================
- upgrade integrations to 2.3.1
* Updating analytics.js integrations to 1.3.2
# 2.4.5 / 2014-10-17
2.4.6 / 2014-10-17
==================
- upgrade integrations to 2.3
* upgrade integrations to 2.3.1
# 2.4.4 / 2014-10-16
2.4.5 / 2014-10-17
==================
- upgrade integrations.
* upgrade integrations to 2.3
# 2.4.3 / 2014-10-15
2.4.4 / 2014-10-16
==================
- Merge pull request #407 from segmentio/prevent/duplicates
- fix: prevent duplicates when cookie cannot be set
* upgrade integrations.
# 2.4.2 / 2014-10-15
2.4.3 / 2014-10-15
==================
- Merge pull request #406 from segmentio/fix/user-id-reset
- fix: prevent anonymousId from changing when user id is reset
* Merge pull request #407 from segmentio/prevent/duplicates
* fix: prevent duplicates when cookie cannot be set
# 2.4.1 / 2014-10-14
2.4.2 / 2014-10-15
==================
- Merge pull request #405 from segmentio/fix/old-anonymous-id
- fix: old anonymousId is not stringified, use raw cookie
- Release 2.4.0
* Merge pull request #406 from segmentio/fix/user-id-reset
* fix: prevent anonymousId from changing when user id is reset
# 2.4.0 / 2014-10-14
2.4.1 / 2014-10-14
==================
- anonymousId: re-generate when user id changes
- Merge pull request #401 from segmentio/anonymous-id
- analytics.reset(): use .logout() to preserve options
- logout: remove anonymous id
- parseQuery: add ajs_aid
- analytics add anonymousId support
- add User#anonymousId
- Release 2.3.33
* Merge pull request #405 from segmentio/fix/old-anonymous-id
* fix: old anonymousId is not stringified, use raw cookie
* Release 2.4.0
# 2.3.33 / 2014-10-14
2.4.0 / 2014-10-14
==================
- upgrade integrations
* anonymousId: re-generate when user id changes
* Merge pull request #401 from segmentio/anonymous-id
* analytics.reset(): use .logout() to preserve options
* logout: remove anonymous id
* parseQuery: add ajs_aid
* analytics add anonymousId support
* add User#anonymousId
* Release 2.3.33
# 2.3.33 / 2014-10-10
2.3.33 / 2014-10-14
===================
- upgrade integrations
* upgrade integrations
# 2.3.32 / 2014-10-09
2.3.33 / 2014-10-10
==================
- upgrade integrations
* upgrade integrations
# 2.3.31 / 2014-10-08
2.3.32 / 2014-10-09
===================
- history.md: ocd
* upgrade integrations
# 2.3.30 / 2014-10-07
2.3.31 / 2014-10-08
===================
- upgrade integrations
* history.md: ocd
# 2.3.29 / 2014-10-06
2.3.30 / 2014-10-07
===================
- add reset(), closes #378
* upgrade integrations
# 2.3.28 / 2014-10-01
2.3.29 / 2014-10-06
===================
- upgrade integrations
* add reset(), closes #378
# 2.3.27 / 2014-09-26
2.3.28 / 2014-10-01
===================
- upgrade integrations
* upgrade integrations
# 2.3.26 / 2014-09-26
- upgrade integrations
2.3.27 / 2014-09-26
===================
# 2.3.25 / 2014-09-22
* upgrade integrations
- add node 0.11 notice for now
# 2.3.24 / 2014-09-17
2.3.26 / 2014-09-26
===================
- upgrade integrations
* upgrade integrations
# 2.3.23 / 2014-09-08
- upgrade integrations
2.3.25 / 2014-09-22
===================
# 2.3.22 / 2014-09-05
* add node 0.11 notice for now
- upgrade integrations
2.3.24 / 2014-09-17
===================
# 2.3.21 / 2014-09-04
* upgrade integrations
- ocd
# 2.3.20 / 2014-09-04
2.3.23 / 2014-09-08
===================
- upgrade integrations
* upgrade integrations
# 2.3.19 / 2014-09-02
- upgrade integrations
2.3.22 / 2014-09-05
===================
# 2.3.18 / 2014-09-02
* upgrade integrations
- upgrade integrations
# 2.3.17 / 2014-08-28
2.3.21 / 2014-09-04
===================
- deps: duo 0.7
- deps: duo 0.7
- Merge pull request #397 from segmentio/add/anonymous-id
- add checking for anonymous id in options
* ocd
# 2.3.15 / 2014-08-22
2.3.20 / 2014-09-04
===================
- google adwords: directly pass remarketing option
* upgrade integrations
# 2.3.14 / 2014-08-22
- deps: upgrade to duo-test@0.3.x
- google adwords: switch to async api
2.3.19 / 2014-09-02
===================
# 2.3.13 / 2014-08-20
* upgrade integrations
- localstorage fallback: add implementation
- localstorage fallback: add tests
- rebuild
- deps: upgrade to duo 0.7
- make: dont clean my npm cache :P
# 2.3.12 / 2014-08-07
2.3.18 / 2014-09-02
===================
- remove userfox
* upgrade integrations
# 2.3.11 / 2014-08-07
- merge a few more fixes (keen.io)
2.3.17 / 2014-08-28
===================
# 2.3.10 / 2014-07-25
* deps: duo 0.7
* deps: duo 0.7
* Merge pull request #397 from segmentio/add/anonymous-id
* add checking for anonymous id in options
- Make lots of analytics.js-integrations fixes
2.3.15 / 2014-08-22
==================
# 2.3.7 / 2014-07-21
* google adwords: directly pass remarketing option
- Merge pull request #390 from segmentio/test/element-error
- throw helpful error when passing string to `trackLink`, closes #389
- Merge pull request #386 from segmentio/context
- add integrations select test
- add backwards compat options object support
2.3.14 / 2014-08-22
==================
# 2.3.6 / 2014-07-16
* deps: upgrade to duo-test@0.3.x
* google adwords: switch to async api
- upgrade integrations
2.3.13 / 2014-08-20
==================
# 2.3.5 / 2014-07-16
* localstorage fallback: add implementation
* localstorage fallback: add tests
* rebuild
* deps: upgrade to duo 0.7
* make: dont clean my npm cache :P
- upgrade integrations
2.3.12 / 2014-08-07
==================
# 2.3.4 / 2014-07-16
* remove userfox
- upgrade integrations
2.3.11 / 2014-08-07
==================
# 2.3.3 / 2014-07-16
* merge a few more fixes (keen.io)
- fix: History.md
2.3.10 / 2014-07-25
==================
# 2.3.2 / 2014-07-13
* Make lots of analytics.js-integrations fixes
- rebuild
2.3.7 / 2014-07-21
==================
# 2.3.1 / 2014-07-13
* Merge pull request #390 from segmentio/test/element-error
* throw helpful error when passing string to `trackLink`, closes #389
* Merge pull request #386 from segmentio/context
* add integrations select test
* add backwards compat options object support
- deps: remove duo-package
- make: test-saucelabs -> test-sauce
2.3.6 / 2014-07-16
==================
# 2.3.0 / 2014-07-11
* upgrade integrations
- use analytics.js-integrations 1.2.0 which removes plugin.Integration
- set .analytics on integration instance
# 2.2.5 / 2014-07-08
2.3.5 / 2014-07-16
==================
- loosen deps
* upgrade integrations
# 2.2.4 / 2014-07-08
- rebuild
2.3.4 / 2014-07-16
==================
# 2.2.3 / 2014-07-07
* upgrade integrations
- rebuild
# 2.2.2 / 2014-06-24
2.3.3 / 2014-07-16
==================
- fix fxn
* fix: History.md
# 2.2.1 / 2014-06-24
2.3.2 / 2014-07-13
==================
- fix typo
* rebuild
# 2.2.0 / 2014-06-24
2.3.1 / 2014-07-13
==================
- bump analytics.js-integrations with bing/bronto fixes
* deps: remove duo-package
* make: test-saucelabs -> test-sauce
# 2.1.0 / 2014-06-23
2.3.0 / 2014-07-11
==================
- add `.add` for test-friendliness
- make-test: kill the server when done testing
- tests: add reporter option
- update readme
- make-test: make sure we use the correct phantomjs(1)
* use analytics.js-integrations 1.2.0 which removes plugin.Integration
* set .analytics on integration instance
# 2.0.1 / 2014-06-13
2.2.5 / 2014-07-08
==================
- bumping store.js dep to 2.0.0
- update readme
* loosen deps
# 2.0.0 / 2014-06-12
2.2.4 / 2014-07-08
===================
- converting to use duo
* rebuild
# 1.5.12 / 2014-06-11
2.2.3 / 2014-07-07
===================
- bump analytics.js-integrations to 0.9.9
* rebuild
# 1.5.11 / 2014-06-05
2.2.2 / 2014-06-24
==================
- bump analytics.js-integrations to 0.9.8
* fix fxn
# 1.5.10 / 2014-06-04
2.2.1 / 2014-06-24
==================
- bump analytics.js-integrations to 0.9.7
* fix typo
# 1.5.9 / 2014-06-04
2.2.0 / 2014-06-24
==================
- bump analytics.js-integrations to 0.9.6
* bump analytics.js-integrations with bing/bronto fixes
# 1.5.8 / 2014-06-04
2.1.0 / 2014-06-23
==================
- bump analytics.js-integrations to 0.9.5
* add `.add` for test-friendliness
* make-test: kill the server when done testing
* tests: add reporter option
* update readme
* make-test: make sure we use the correct phantomjs(1)
# 1.5.6 / 2014-06-02
2.0.1 / 2014-06-13
==================
- bump analytics.js-integrations to 0.9.3
* bumping store.js dep to 2.0.0
* update readme
# 1.5.5 / 2014-06-02
2.0.0 / 2014-06-12
==================
- bump analytics.js-integrations to 0.9.2
* converting to use duo
# 1.5.4 / 2014-05-30
1.5.12 / 2014-06-11
==================
- upgrade integrations to 0.9.1
* bump analytics.js-integrations to 0.9.9
# 1.5.3 / 2014-05-29
1.5.11 / 2014-06-05
==================
- upgrade integrations to 0.9.0
* bump analytics.js-integrations to 0.9.8
# 1.5.1 / 2014-05-20
1.5.10 / 2014-06-04
==================
- update analytics.js-integrations dep for reverting KISSmetrics fixes
* bump analytics.js-integrations to 0.9.7
# 1.5.0 / 2014-05-19
1.5.9 / 2014-06-04
==================
- updating analytics.js-integrations to 0.8.0 for KISSmetrics fixes
* bump analytics.js-integrations to 0.9.6
# 1.4.0 / 2014-05-17
1.5.8 / 2014-06-04
==================
- upgrade integrations to 0.7.0
- upgrade facade to 0.3.10
* bump analytics.js-integrations to 0.9.5
# 1.3.31 / 2014-05-17
1.5.6 / 2014-06-02
==================
- handle dev envs correctly, closes #359
* bump analytics.js-integrations to 0.9.3
# 1.3.30 / 2014-05-07
1.5.5 / 2014-06-02
==================
- upgrade integrations to 0.6.1 for google analytics custom dimensions and metrics
* bump analytics.js-integrations to 0.9.2
# 1.3.28 / 2014-04-29
1.5.4 / 2014-05-30
==================
- upgrade integrations to 0.5.10 for navilytics fix and mixpanel fix
- component: upgrade to 0.19.6 and add githubusercontent to remotes
* upgrade integrations to 0.9.1
# 1.3.26 / 2014-04-17
1.5.3 / 2014-05-29
==================
- upgrade integrations to 0.5.8
* upgrade integrations to 0.9.0
# 1.3.25 / 2014-04-16
1.5.1 / 2014-05-20
==================
- upgrade integrations to 0.5.6
* update analytics.js-integrations dep for reverting KISSmetrics fixes
# 1.3.24 / 2014-04-15
1.5.0 / 2014-05-19
==================
- move analytics.js-integration to dev deps
* updating analytics.js-integrations to 0.8.0 for KISSmetrics fixes
# 1.3.23 / 2014-04-14
1.4.0 / 2014-05-17
==================
- upgrade integrations to 0.5.5
- update querystring to 1.3.0
* upgrade integrations to 0.7.0
* upgrade facade to 0.3.10
# 1.3.22 / 2014-04-11
1.3.31 / 2014-05-17
==================
- upgrade integrations to 0.5.4
* handle dev envs correctly, closes #359
# 1.3.21 / 2014-04-10
1.3.30 / 2014-05-07
==================
- add "invoke" event
* upgrade integrations to 0.6.1 for google analytics custom dimensions and metrics
# 1.3.20 / 2014-04-07
1.3.28 / 2014-04-29
==================
- upgrade integrations to 0.5.3
* upgrade integrations to 0.5.10 for navilytics fix and mixpanel fix
* component: upgrade to 0.19.6 and add githubusercontent to remotes
# 1.3.19 / 2014-04-05
1.3.26 / 2014-04-17
==================
- upgrade querystring to 1.2.0
* upgrade integrations to 0.5.8
# 1.3.18 / 2014-04-05
1.3.25 / 2014-04-16
==================
- upgrade integrations to 0.5.1
* upgrade integrations to 0.5.6
# 1.3.17 / 2014-04-04
1.3.24 / 2014-04-15
==================
- upgrade integrations to 0.5.0
- fix: add .search to .url when url is pulled from canonical tag
- tests: upgrade gravy to 0.2.0
* move analytics.js-integration to dev deps
# 1.3.16 / 2014-04-01
1.3.23 / 2014-04-14
==================
- upgrade integrations to 0.4.14
* upgrade integrations to 0.5.5
* update querystring to 1.3.0
# 1.3.15 / 2014-03-26
1.3.22 / 2014-04-11
==================
- upgrade integrations to 0.4.13
* upgrade integrations to 0.5.4
# 1.3.14 / 2014-03-26
1.3.21 / 2014-04-10
==================
- upgrade integrations to 0.4.12
* add "invoke" event
# 1.3.13 / 2014-03-25
1.3.20 / 2014-04-07
==================
- upgrade integrations to 0.4.11
* upgrade integrations to 0.5.3
# 1.3.12 / 2014-03-19
1.3.19 / 2014-04-05
==================
- upgrade integrations to 0.4.10
* upgrade querystring to 1.2.0
# 1.3.11 / 2014-03-14
1.3.18 / 2014-04-05
==================
- upgrade integrations to 0.4.9
* upgrade integrations to 0.5.1
# 1.3.10 / 2014-03-14
1.3.17 / 2014-04-04
==================
- upgrade integrations to 0.4.8
* upgrade integrations to 0.5.0
* fix: add .search to .url when url is pulled from canonical tag
* tests: upgrade gravy to 0.2.0
# 1.3.9 / 2014-03-14
1.3.16 / 2014-04-01
==================
- upgrade integrations to 0.4.7
* upgrade integrations to 0.4.14
# 1.3.8 / 2014-03-13
1.3.15 / 2014-03-26
==================
- upgrade integrations to 0.4.6
* upgrade integrations to 0.4.13
# 1.3.7 / 2014-03-06
1.3.14 / 2014-03-26
==================
- upgrade integrations to 0.4.5
- upgrade facade to 0.2.11
* upgrade integrations to 0.4.12
# 1.3.6 / 2014-03-05
1.3.13 / 2014-03-25
==================
- upgrade integrations to 0.4.4
* upgrade integrations to 0.4.11
# 1.3.4 / 2014-02-26
1.3.12 / 2014-03-19
==================
- update integrations to 0.4.2
* upgrade integrations to 0.4.10
# 1.3.3 / 2014-02-18
1.3.11 / 2014-03-14
===================
- upgrade analytics.js-integrations to 0.4.1
- dont reset ids and traits
* upgrade integrations to 0.4.9
# 1.3.2 / 2014-02-07
1.3.10 / 2014-03-14
===================
- upgrade analytics.js-integrations to 0.4.0
- upgrade analytics.js-integration to 0.1.7
- upgrade facade to 0.2.7
- fix page url default to check canonical and remove hash
* upgrade integrations to 0.4.8
# 1.3.1 / 2014-01-30
1.3.9 / 2014-03-14
==================
- upgrade isodate-traverse to `0.3.0`
- upgrade facade to `0.2.4`
- upgrade analytics.js-integrations to `0.3.10`
* upgrade integrations to 0.4.7
# 1.3.0 / 2014-01-23
1.3.8 / 2014-03-13
==================
- update analytics.js-integrations to 0.3.9
* upgrade integrations to 0.4.6
# 1.2.9 / 2014-01-18
1.3.7 / 2014-03-06
==================
- update `analytics.js-integrations` to `0.3.8`
- expose `require()`
* upgrade integrations to 0.4.5
* upgrade facade to 0.2.11
# 1.2.8 / 2014-01-15
1.3.6 / 2014-03-05
==================
- update `analytics.js-integrations` to `0.3.7`
- upgrade `facade` to `0.2.3`
* upgrade integrations to 0.4.4
# 1.2.7 / 2014-01-10
1.3.4 / 2014-02-26
==================
- update `analytics.js-integrations` to `0.3.6`
* update integrations to 0.4.2
## 1.2.6 - January 3, 2014
1.3.3 / 2014-02-18
==================
- upgrade `component(1)` for json support
* upgrade analytics.js-integrations to 0.4.1
* dont reset ids and traits
1.2.5 - January 3, 2014
1.3.2 / 2014-02-07
==================
---
* upgrade analytics.js-integrations to 0.4.0
* upgrade analytics.js-integration to 0.1.7
* upgrade facade to 0.2.7
* fix page url default to check canonical and remove hash
- upgrade `analytics.js-integrations` to `0.3.5`
- upgrade `facade` to `0.2.1`
1.3.1 / 2014-01-30
==================
1.2.4 - January 2, 2014
* upgrade isodate-traverse to `0.3.0`
* upgrade facade to `0.2.4`
* upgrade analytics.js-integrations to `0.3.10`
---
1.3.0 / 2014-01-23
==================
- upgrade `analytics.js-integrations` to `0.3.4`
* update analytics.js-integrations to 0.3.9
1.2.3 - December 18, 2013
1.2.9 / 2014-01-18
==================
---
* update `analytics.js-integrations` to `0.3.8`
* expose `require()`
- fix `facade` dependency
1.2.8 / 2014-01-15
==================
1.2.2 - December 18, 2013
* update `analytics.js-integrations` to `0.3.7`
* upgrade `facade` to `0.2.3`
---
1.2.7 / 2014-01-10
==================
- upgrade `analytics.js-integrations` to `0.3.2`
* update `analytics.js-integrations` to `0.3.6`
1.2.1 - December 16, 2013
1.2.6 - January 3, 2014
-----------------------
* upgrade `component(1)` for json support
---
1.2.5 - January 3, 2014
-----------------------
* upgrade `analytics.js-integrations` to `0.3.5`
* upgrade `facade` to `0.2.1`
- add #push, fixes #253
1.2.4 - January 2, 2014
-------------------------
* upgrade `analytics.js-integrations` to `0.3.4`
1.2.0 - December 13, 2013
1.2.3 - December 18, 2013
-------------------------
* fix `facade` dependency
---
1.2.2 - December 18, 2013
-------------------------
* upgrade `analytics.js-integrations` to `0.3.2`
- add [`facade`](https://github.com/segmentio/facade)
1.2.1 - December 16, 2013
-------------------------
* add #push, fixes #253
1.1.9 - December 11, 2013
1.2.0 - December 13, 2013
-------------------------
* add [`facade`](https://github.com/segmentio/facade)
---
1.1.9 - December 11, 2013
-------------------------
* upgrade `analytics.js-integrations` to `0.2.16`
* add `search` to page property defaults
- upgrade `analytics.js-integrations` to `0.2.16`
- add `search` to page property defaults
1.1.8 - December 11, 2013
------------------------
* upgrade `analytics.js-integrations` to `0.2.15`
* add [WebEngage](http://webengage.com)
* heap: fallback to user id as handle
1.1.8 - December 11, 2013
1.1.7 - December 4, 2013
------------------------
* upgrade `analytics.js-integrations` to `0.2.13`
---
1.1.6 - December 2, 2013
------------------------
* update `analytics.js-integrations` to `0.2.12`
* add `entity`
* change `user` to inherit from `entity`
* change `group` to inherit from `entity`
- upgrade `analytics.js-integrations` to `0.2.15`
- add [WebEngage](http://webengage.com)
- heap: fallback to user id as handle
1.1.5 - November 26, 2013
-------------------------
* update `analytics.js-integration` to `0.1.5`
* update `analytics.js-integrations` to `0.2.11`
1.1.7 - December 4, 2013
1.1.4 - November 25, 2013
-------------------------
* fix `page` method properties overload
---
1.1.3 - November 21, 2013
-------------------------
* update `analytics.js-integrations` to `0.2.10`
- upgrade `analytics.js-integrations` to `0.2.13`
1.1.2 - November 21, 2013
-------------------------
* update `analytics.js-integrations` to `0.2.9`
1.1.6 - December 2, 2013
1.1.1 - November 20, 2013
-------------------------
* update `analytics.js-integrations` to `0.2.8`
---
1.1.0 - November 20, 2013
-------------------------
* add `name` and `category` defaults to `page` method calls
* update `analytics.js-integrations` to `0.2.7`
- update `analytics.js-integrations` to `0.2.12`
- add `entity`
- change `user` to inherit from `entity`
- change `group` to inherit from `entity`
1.0.9 - November 15, 2013
-------------------------
* update `analytics.js-integrations` to `0.2.6`
* update dependencies
1.1.5 - November 26, 2013
1.0.8 - November 14, 2013
-------------------------
* update `analytics.js-integrations` to `0.2.5`
---
1.0.7 - November 13, 2013
------------------------
* update `analytics.js-integrations` to `0.2.4`
- update `analytics.js-integration` to `0.1.5`
- update `analytics.js-integrations` to `0.2.11`
1.0.6 - November 12, 2013
-------------------------
* update `analytics.js-integrations` to `0.2.3`
* update `analytics.js-integration` to `0.1.4`
1.1.4 - November 25, 2013
1.0.5 - November 12, 2013
-------------------------
* update `analytics.js-integrations` to `0.2.2`
* fix `properties` overload for `page` method
---
1.0.4 - November 12, 2013
-------------------------
* update `analytics.js-integrations` to `0.2.1`
- fix `page` method properties overload
1.0.3 - November 11, 2013
-------------------------
* update `analytics.js-integrations` to `0.2.0`
1.1.3 - November 21, 2013
1.0.2 - November 11, 2013
-------------------------
* rename the page methods `section` argument to `category`
* update `analytics.js-integration`
* update `analytics.js-integrations`
---
1.0.1 - November 11, 2013
-------------------------
* change `page` to take a `section`
* update `analytics.js-integration`
* update `analytics.js-integrations`
- update `analytics.js-integrations` to `0.2.10`
1.0.0 - November 10, 2013
-------------------------
* change `pageview` method to `page`
* add call to `page` as mandatory to initialize some analytics tools
* remove ability to `initialize` by `key`
* add checking for an integration already being loaded before loading
* add `#use` method for plugins
* add event emitter to `analytics`
* move integrations to [`analytics.js-integrations`](https://github.com/segmentio/analytics.js-integrations)
* add debugging to all integrations
* move integration factory to [`analytics.js-integration`](https://github.com/segmentio/analytics.js-integration)
* Amplitude: rename `pageview` option to `trackAllPages`
* Amplitude: add `trackNamedPages` option
* Google Analytics: add `trackNamedPages` option
* Google Analytics: remove `initialPageview` option
* Keen IO: rename `pageview` option to `trackAllPages`
* Keen IO: add `trackNamedPages` option
* Keen IO: remove `initialPageview` option
* Lytics: remove `initialPageview` option
* Mixpanel: rename `pageview` option to `trackAllPages`
* Mixpanel: add `trackNamedPages` option
* Mixpanel: remove `initialPageview` option
* Olark: rename `pageview` option to `page`
* Tapstream: remove `initialPageview` option
* Tapstream: add `trackAllPages` option
* Tapstream: add `trackNamedPages` option
* Trak.io: remove `pageview` option
* Trak.io: remove `initialPageview` option
* Trak.io: add `trackNamedPages` option
* Woopra: remove `initialPageview` option
1.1.2 - November 21, 2013
0.18.4 - October 29, 2013
-------------------------
* adding convert-date 0.1.0 support
---
0.18.3 - October 29, 2013
-------------------------
* hubspot: adding fix for date traits/properties (calvinfo)
- update `analytics.js-integrations` to `0.2.9`
0.18.2 - October 28, 2013
-------------------------
* upgrade visionmedia/debug to most recent version, fixes security warnings when cookies are disabled.
1.1.1 - November 20, 2013
0.18.1 - October 28, 2013
-------------------------
* add [Evergage](http://evergage.com), by [@glajchs](https://github.com/glajchs)
---
0.18.0 - October 24, 2013
-------------------------
* add event emitter
* add `initialize`, `ready`, `identify`, `alias`, `pageview`, `track`, and `group` events and tests
* fix date equality tests
- update `analytics.js-integrations` to `0.2.8`
0.17.9 - October 24, 2013
-------------------------
* Google Analytics: fix ip anonymization should come after `create`
* Google Analytics: fix domain to default to `"none"`
1.1.0 - November 20, 2013
0.17.8 - October 14, 2013
-------------------------
* Customer.io: added preliminary `group` support
---
0.17.7 - October 10, 2013
-------------------------
* propagating traverse isodate fix
- add `name` and `category` defaults to `page` method calls
- update `analytics.js-integrations` to `0.2.7`
0.17.6 - October 7, 2013
------------------------
* added [Yandex Metrica](http://metrika.yandex.com), by [@yury-egorenkov](https://github.com/yury-egorenkov)
1.0.9 - November 15, 2013
0.17.5 - October 2, 2013
------------------------
* fixed bug in `_invoke` not cloning arguments
---
0.17.4 - September 30, 2013
---------------------------
* added conversion of ISO strings to dates for `track` calls
- update `analytics.js-integrations` to `0.2.6`
- update dependencies
0.17.3 - September 30, 2013
---------------------------
* fixed bug in key-only initialization
1.0.8 - November 14, 2013
0.17.2 - September 30, 2013
---------------------------
* UserVoice: added `classicMode` option
---
0.17.1 - September 30, 2013
---------------------------
* UserVoice: fixed bug loading trigger with new widget
- update `analytics.js-integrations` to `0.2.5`
0.17.0 - September 30, 2013
---------------------------
* added `debug` method, by [@yields](https://github.com/yields)
1.0.7 - November 13, 2013
0.16.0 - September 27, 2013
---------------------------
* UserVoice: updated integration to handle the new widget
---
0.15.2 - September 26, 2013
---------------------------
* added Awesomatic, by [@robv](https://github.com/robv)
- update `analytics.js-integrations` to `0.2.4`
0.15.1 - September 24, 2013
---------------------------
* fixed bug in `ready` causing it to never fire with faulty settings
* fixed all `ready()` calls to always be async
* cleared ready state after all analytics core `initialize` tests
1.0.6 - November 12, 2013
0.15.0 - September 18, 2013
---------------------------
* Crazy Egg: renamed from `CrazyEgg`
* Google Analytics: changed `universalClient` option to `classic`
* Google Analytics: changed `classic` default to `false`
* Keen IO: changed pageview options defaults to `false`
* LeadLander: changed `llactid` option to human-readable `accountId`* Intercom: make `#IntercomDefaultWidget` the default activator
---
0.14.3 - September 18, 2013
---------------------------
* exposed `createIntegration` and `addIntegration`
- update `analytics.js-integrations` to `0.2.3`
- update `analytics.js-integration` to `0.1.4`
0.14.2 - September 17, 2013
---------------------------
* added [Spinnakr](http://spinnakr.com)
1.0.5 - November 12, 2013
0.14.1 - September 17, 2013
---------------------------
* removed old `Provider` for an `integration` factory
---
0.14.0 - September 16, 2013
---------------------------
* exposed `group` via the `#group` method
* exposed `user` via the `#user` method
* started caching `group` in cookie and local storage like `user`
* changed `user` and `group` info to always be queried from storage
* bound all `analytics` methods as a singleton
* added `identify(traits, options)` override
* added `timeout` setter method
- update `analytics.js-integrations` to `0.2.2`
- fix `properties` overload for `page` method
0.13.2 - September 16, 2013
---------------------------
* added [Rollbar](https://rollbar.com/), by [@coryvirok](https://github.com/coryvirok)
1.0.4 - November 12, 2013
0.13.1 - September 12, 2013
---------------------------
* Olark: added tests for empty emails, names and phone numbers
---
0.13.0 - September 11, 2013
---------------------------
* converted all integrations and their tests to a cleaner format
* renamed all instances of "provider" to "integration"
* built integration list from their own `name` to avoid bugs
* changed `_providers` array to an `_integrations` map
- update `analytics.js-integrations` to `0.2.1`
0.12.2 - September 5, 2013
--------------------------
* added [awe.sm](http://awe.sm)
1.0.3 - November 11, 2013
0.12.1 - September 5, 2013
--------------------------
* UserVoice: fix bug where some installations wouldn't show the tab
---
0.12.0 - September 4, 2013
--------------------------
* Clicky: fixed custom tracking, added `pageview`
- update `analytics.js-integrations` to `0.2.0`
0.11.16 - September 3, 2013
---------------------------
* updated `segmentio/new-date` for old browser support
* Woopra: fixed default pageview properties
* Intercom: cleaned up identify logic and tests
1.0.2 - November 11, 2013
0.11.15 - September 2, 2013
---------------------------
* pinned all dependencies
* added [Inspectlet](https://www.inspectlet.com)
* fixed storage options tests
* AdRoll: added custom data tracking
---
0.11.14 - August 30, 2013
-------------------------
* bumped version of [`ianstormtaylor/is`](https://github.com/ianstormtaylor/is) for bugfix
- rename the page methods `section` argument to `category`
- update `analytics.js-integration`
- update `analytics.js-integrations`
0.11.13 - August 29, 2013
-------------------------
* Spinnakr: added global variable for site id
* LeadLander: switched to non `document.write` version
* Customer.io: convert date objects to seconds
* fixed `is.function` bug in old browsers
1.0.1 - November 11, 2013
0.11.12 - August 27, 2013
-------------------------
* cleaned up core
* fixed breaking tests
* removed Bitdeli, by @jtuulos
* updated Woopra to use new tracker, by @billyvg
* added trak.io, by @msaspence
* added `createIntegration` interim method
* added more Lytics options, by @slindberg and @araddon
* added trait alias to trak.io
* added MouseStats, by @Koushan
* added Tapstream, by @adambard
* allow Mixpanel to name users by `username`
* allow GoSquared to name users by `email` or `username`
* make Google Analytics ignored referrers an array
* update Errorception cdn
---
0.11.11 - August 9, 2013
------------------------
* Added LeadLander
- change `page` to take a `section`
- update `analytics.js-integration`
- update `analytics.js-integrations`
0.11.10 - July 12, 2013
-----------------------
* Added cookieName to Mixpanel options - 0a53afd
1.0.0 - November 10, 2013
0.11.9 - June 11, 2013
----------------------
* Added [Visual Website Optimizer](http://visualwebsiteoptimizer.com/)
---
0.11.8 - June 10, 2013
----------------------
* Intercom: added `group` support
- change `pageview` method to `page`
- add call to `page` as mandatory to initialize some analytics tools
- remove ability to `initialize` by `key`
- add checking for an integration already being loaded before loading
- add `#use` method for plugins
- add event emitter to `analytics`
- move integrations to [`analytics.js-integrations`](https://github.com/segmentio/analytics.js-integrations)
- add debugging to all integrations
- move integration factory to [`analytics.js-integration`](https://github.com/segmentio/analytics.js-integration)
- Amplitude: rename `pageview` option to `trackAllPages`
- Amplitude: add `trackNamedPages` option
- Google Analytics: add `trackNamedPages` option
- Google Analytics: remove `initialPageview` option
- Keen IO: rename `pageview` option to `trackAllPages`
- Keen IO: add `trackNamedPages` option
- Keen IO: remove `initialPageview` option
- Lytics: remove `initialPageview` option
- Mixpanel: rename `pageview` option to `trackAllPages`
- Mixpanel: add `trackNamedPages` option
- Mixpanel: remove `initialPageview` option
- Olark: rename `pageview` option to `page`
- Tapstream: remove `initialPageview` option
- Tapstream: add `trackAllPages` option
- Tapstream: add `trackNamedPages` option
- Trak.io: remove `pageview` option
- Trak.io: remove `initialPageview` option
- Trak.io: add `trackNamedPages` option
- Woopra: remove `initialPageview` option
0.11.7 - June 7, 2013
---------------------
* Fix for cookie domains, now sets to subdomain friendly by default.
* Renaming bindAll -> bind-all
0.18.4 - October 29, 2013
0.11.6 - June 6, 2013
---------------------
* Added `group` support to Preact by [@azcoov](https://github.com/azcoov)
* Fixed `created` bug with userfox
* Changed to new Vero CDN URL
* Fixed bug when initializing unknown providers
* Added `options` object to `pageview` by [@debangpaliwal](https://github.com/devangpaliwal)
---
0.11.5 - June 3, 2013
---------------------
* Adding segmentio/json temporarily, fixing json-fallback
- adding convert-date 0.1.0 support
0.11.4 - May 31, 2013
---------------------
* Updated Intercom's library URL
0.18.3 - October 29, 2013
0.11.3 - May 31, 2013
---------------------
* Added trailing comma fix
---
0.11.2 - May 30, 2013
---------------------
* Added fix for UserVoice displaying `'null'`
* Added `make clean` before running components (fixes json fallback)
- hubspot: adding fix for date traits/properties (calvinfo)
0.11.1 - May 29, 2013
---------------------
* Fixed bug with Google Analytics not tracking integer `value`s
0.18.2 - October 28, 2013
0.11.0 - May 28, 2013
---------------------
* Switched from cookie-ing to localStorage
---
0.10.6 - May 23, 2013
---------------------
* Moved trait parsing logic to the global level
* Added [Improvely](http://www.improvely.com/)
* Added [Get Satisfaction](https://getsatisfaction.com/)
* Added a `$phone` alias for Mixpanel
* Added the ability to pass a function for the `event` to `trackLink` and `trackForm`
- upgrade visionmedia/debug to most recent version, fixes security warnings when cookies are disabled.
0.10.5 - May 22, 2013
---------------------
* Added [Amplitude](https://amplitude.com/) support
* Fixed improperly parsed cookies
0.18.1 - October 28, 2013
0.10.4 - May 17, 2013
---------------------
* Fixed bug with Google Analytics being ready to soon
---
0.10.3 - May 15, 2013
---------------------
* Added [Optimizely](https://www.optimizely.com)
- add [Evergage](http://evergage.com), by [@glajchs](https://github.com/glajchs)
0.10.2 - May 14, 2013
---------------------
* Fixed handling of `increments` and `userHash` from `options.Intercom`
0.18.0 - October 24, 2013
0.10.1 - May 14, 2013
---------------------
* Added `identify` to SnapEngage integration
---
0.10.0 - May 9, 2013
--------------------
* Added `group` method
- add event emitter
- add `initialize`, `ready`, `identify`, `alias`, `pageview`, `track`, and `group` events and tests
- fix date equality tests
0.9.18 - May 9, 2013
--------------------
* Added [Preact](http://www.preact.io/) support by [@azcoov](https://github.com/azcoov)
0.17.9 - October 24, 2013
0.9.17 - May 1, 2013
--------------------
* Updated Keen to version 2.1.0
---
0.9.16 - April 30, 2013
-----------------------
* Fixed bug affecting Pingdom users
- Google Analytics: fix ip anonymization should come after `create`
- Google Analytics: fix domain to default to `"none"`
0.9.15 - April 30, 2013
-----------------------
* Added identify to UserVoice
0.17.8 - October 14, 2013
0.9.14 - April 29, 2013
-----------------------
* Fixing userfox integration to accept all traits not just signup_date
---
0.9.13 - April 29, 2013
-----------------------
* Fixing ordering of ignore referrer option in Google Analytics
- Customer.io: added preliminary `group` support
0.9.12 - April 27, 2013
-----------------------
* Adding support for [userfox](https://www.userfox.com)
0.17.7 - October 10, 2013
0.9.11 - April 26, 2013
-----------------------
* Adding new ignoreReferrer option to Google Analytics provider
* Adding new showFeedbackTab option to BugHerd provider
* Updating UserVoice provider to work with their new snippet(s)
* Fixing Errorception window.onerror binding to be friendlier
---
0.9.10 - April 17, 2013
-----------------------
* Adding url and title to mixpanel pageviews
* Addiung url and title to keen pageviews
- propagating traverse isodate fix
0.9.9 - April 17, 2013
----------------------
* Fixed GoSquared relying on `document.body
0.17.6 - October 7, 2013
0.9.8 - April 16, 2013
----------------------
* Adding support for Pingdom RUM
* Adding support for AdRoll
---
0.9.7 - April 16, 2013
----------------------
* Fixing LiveChat test
* Updating mixpanel snippet to wait for ready until script loads
* Adding full traits pulled in from identify.
- added [Yandex Metrica](http://metrika.yandex.com), by [@yury-egorenkov](https://github.com/yury-egorenkov)
0.9.6 - April 10, 2013
----------------------
* Renaming Provider.options to Provider.defaults
* Adding universal analytics support to Google Analytics
0.17.5 - October 2, 2013
0.9.5 - April 10, 2013
----------------------
* Adding support for new Olark Javascript API functions, see #121
---
0.9.4 - April 4, 2013
---------------------
* Fixing Uservoice integration
* Fixing ready tests.
* Adding lytics integration by [@araddon](https://github.com/araddon)
* Adding bower support by [@jede](https://github.com/jede)
- fixed bug in `_invoke` not cloning arguments
0.9.3 - April 2, 2013
---------------------
* Olark provider now only notifies the operator of track and pageview when the chat box is expanded.
0.17.4 - September 30, 2013
0.9.2 - March 28, 2013
----------------------
* Qualaroo provider now prefers to identify with traits.email over a non-email userId --- makes the survey responses human readable.
---
0.9.1 - March 28, 2013
----------------------
* Woopra no longer tracks after each identify so that duplicate page views aren't generated.
- added conversion of ISO strings to dates for `track` calls
0.9.0 - March 27, 2013
----------------------
* Changed default Keen IO settings to record all pageviews by default
* Removed Keen IO API Key option since that is no longer used for data "writes" to their API
* Renamed Keen IO projectId to projectToken to match their docs
0.17.3 - September 30, 2013
0.8.13 - March 25, 2013
-----------------------
* Added ability to pass variables into `intercomSettings` via `context.intercom`
---
0.8.12 - March 25, 2013
-----------------------
* Added [Heap](https://heapanalytics.com)
- fixed bug in key-only initialization
0.8.11 - March 24, 2013
-----------------------
* Removed [Storyberg](http://storyberg.com/2013/03/18/the-end.html), best of luck guys
0.17.2 - September 30, 2013
0.8.10 - March 14, 2013
------------------
* Added fix for conversion of `company`'s `created` date
* Added extra tests for `trackForm`
* Fixing issue with ClickTale https bug
---
0.8.9 - March 13, 2013
----------------------
* Migrated to new Intercom Javascript API
* Removed un-used Intercom traits
* Fix bug in `trackForm` when using jQuery
- UserVoice: added `classicMode` option
0.8.8 - March 12, 2013
----------------------
* Added `userId` to Errorception metadata
* Made date parsing more lenient (ms & sec) for trait.created
0.17.1 - September 30, 2013
0.8.7 - March 7, 2013
---------------------
* Added [Qualaroo](https://qualaroo.com/)
* Fixed bug with Chartbeat and page load times
---
0.8.6 - March 7, 2013
---------------------
* Fixed bug in `trackLink` reported by [@quirkyjack](https://github.com/quirkyjack)
* Fixed bug in ClickTale where it didn't create the ClickTaleDiv
- UserVoice: fixed bug loading trigger with new widget
0.8.5 - March 7, 2013
---------------------
* Added [Storyberg](http://storyberg.com/) by [@kevinicus](https://github.com/kevinicus)
* Added [BugHerd](http://bugherd.com)
* Added [ClickTale](http://clicktale.com)
* Cleaned up extraneous `require`'s in many providers
0.17.0 - September 30, 2013
0.8.4 - March 5, 2013
---------------------
* Added support for strings for the `created` trait
* Added `load-date` for getting the page's load time
---
0.8.3 - March 4, 2013
---------------------
* Added [Sentry](https://getsentry.com)
* Added initial pageview support to more providers
* Allowed HubSpot to recognize email `userId`
* Added support for DoubleClick [via Google Analytics](http://support.google.com/analytics/bin/answer.py?hl-en&answer-2444872)
- added `debug` method, by [@yields](https://github.com/yields)
0.8.2 - March 4, 2013
---------------------
* Fixed bug in FoxMetrics provider
* Added queue for providers which don't support ready immediately.
0.16.0 - September 27, 2013
0.8.1 - March 3, 2013
---------------------
* Fixed bug in `trackForm` when submitted via jQuery
---
0.8.0 - March 1, 2013
---------------------
* Added cookie-ing to keep identity and traits across page loads
* Added `identify` support for Clicky
* Added `identify` support for GoSquared
* Added `identify` support for Woopra
* Updated tracking for Usercycle
- UserVoice: updated integration to handle the new widget
0.7.1 - February 26, 2013
-------------------------
* Added Intercom companies by [@adrianrego](https://github.com/adrianrego)
* Added Intercom setting for use_counter
* Fixed Intercom traits passed without a created field
0.15.2 - September 26, 2013
0.7.0 - February 25, 2013
-------------------------
* Switched over to [Component](http://component.io/)
---
0.6.0 - February 7, 2013
------------------------
* Added `ready` method for binding to when analytics are initialized
* Added [UserVoice](https://www.uservoice.com)
* Added [Perfect Audience](https://www.perfectaudience.com/)
* Added [LiveChat](http://livechatinc.com)
* Fixed Intercom to allow multiple `identify` calls
- added Awesomatic, by [@robv](https://github.com/robv)
0.5.1 - February 4, 2013
------------------------
* Merged in fix for Keen IO's branding
* Added fix to `utils.parseUrl()` field `pathname` in IE
0.15.1 - September 24, 2013
0.5.0 - February 1, 2013
------------------------
* Added an `alias` method for merging two user's by ID
---
0.4.10 - January 30, 2013
-------------------------
* Fixed multiple elements on `trackLink` and `trackForm`
* Fixed CrazyEgg `apiKey` to `accountNumber`
* Fixed Keen to Keen.io
- fixed bug in `ready` causing it to never fire with faulty settings
- fixed all `ready()` calls to always be async
- cleared ready state after all analytics core `initialize` tests
0.15.0 - September 18, 2013
0.4.9 - January 29, 2013
------------------------
* Fixed `alias` and `extend` breaking on non-objects
---
0.4.8 - January 29, 2013
------------------------
* Fixed `trackForm` timeout by [@Plasma](https://github.com/Plasma)
- Crazy Egg: renamed from `CrazyEgg`
- Google Analytics: changed `universalClient` option to `classic`
- Google Analytics: changed `classic` default to `false`
- Keen IO: changed pageview options defaults to `false`
- LeadLander: changed `llactid` option to human-readable `accountId`\* Intercom: make `#IntercomDefaultWidget` the default activator
0.4.7 - January 29, 2013
------------------------
* Added support for Mixpanel's [revenue](https://mixpanel.com/docs/people-analytics/javascript#track_charge) feature
* Added support for KISSmetrics' `"Billing Amount"` property for revenue
* Added support for `revenue` being passed to Google Analytics' `value` property
0.14.3 - September 18, 2013
0.4.6 - January 28, 2013
------------------------
* Added automatic canonical URL support in Google Analytics
---
0.4.5 - January 25, 2013
------------------------
* Added Intercom widget setting
* Fixed Chartbeat from requiring `body` element to exist
- exposed `createIntegration` and `addIntegration`
0.4.4 - January 21, 2013
------------------------
* Added [Bitdeli](https://bitdeli.com/) by [@jtuulos](https://github.com/jtuulos)
* Added Mixpanel `$first_name` and `$last_name` aliases by [@dwradcliffe](https://github.com/dwradcliffe)
* Fixed Mixpanel `$last_seen` alias
* Added `parseUrl` util
* Moved GoSquared queue to snippet
0.14.2 - September 17, 2013
0.4.3 - January 20, 2013
------------------------
* Added support for Errorception [user metadata](http://blog.errorception.com/2012/11/capture-custom-data-with-your-errors.html)
---
0.4.2 - January 18, 2013
------------------------
* Added option to use a properties function in `trackLink` and `trackForm` methods
- added [Spinnakr](http://spinnakr.com)
0.4.1 - January 18, 2013
------------------------
* Added [Keen.io](http://keen.io/) by [@dkador](https://github.com/dkador)
* Added [Foxmetrics](http://foxmetrics.com/) by [@rawsoft](https://github.com/rawsoft)
* Updated Google Analytics to include noninteraction and value added by [@rantav](https://github.com/rantav)
* Moved to expect.js from chai for cross-broser support
0.14.1 - September 17, 2013
0.4.0 - January 18, 2013
------------------------
* Renamed `trackClick` to `trackLink`
* Renamed `trackSubmit` to `trackForm`
---
0.3.8 - January 18, 2013
------------------------
* Fixed Clicky loading slowly
- removed old `Provider` for an `integration` factory
0.3.7 - January 17, 2013
------------------------
* Added [HitTail](http://hittail.com)
* Added [USERcycle](http://usercycle.com)
* Fixed Travis testing
0.14.0 - September 16, 2013
0.3.6 - January 14, 2013
------------------------
* Added [SnapEngage](http://snapengage.com)
---
0.3.5 - January 14, 2013
------------------------
* Added `trackClick` and `trackForm` helpers
- exposed `group` via the `#group` method
- exposed `user` via the `#user` method
- started caching `group` in cookie and local storage like `user`
- changed `user` and `group` info to always be queried from storage
- bound all `analytics` methods as a singleton
- added `identify(traits, options)` override
- added `timeout` setter method
0.3.4 - January 13, 2013
------------------------
* Upgraded to Mixpanel 2.2 by [@loganfuller](https://github.com/loganfuller)
0.13.2 - September 16, 2013
0.3.3 - January 11, 2013
------------------------
* Added [comScore Direct](http://direct.comscore.com)
---
0.3.2 - January 11, 2013
------------------------
* Added [Quantcast](http://quantcast.com)
* Fixed breaking issue on Clicky
* Updated Makefile for new providers
- added [Rollbar](https://rollbar.com/), by [@coryvirok](https://github.com/coryvirok)
0.13.1 - September 12, 2013
0.3.1 - January 11, 2013
------------------------
* Added `label` and `category` support to Google Analytics
---
0.3.0 - January 9, 2013
-----------------------
* Added [Gauges](http://get.gaug.es/) by [@bdougherty](https://github.com/bdougherty)
* Added [Vero](http://www.getvero.com/)
* Added optional `url` argument to `pageview` method
- Olark: added tests for empty emails, names and phone numbers
0.2.5 - January 8, 2013
-----------------------
* Added [Errorception](http://errorception.com/)
* Added [Clicky](http://clicky.com/)
* Fixed IE 7 bug reported by [@yefremov](https://github.com/yefremov)
0.13.0 - September 11, 2013
0.2.4 - January 3, 2013
-----------------------
* Fixed GoSquared trailing comma by [@cmer](https://github.com/cmer)
---
0.2.3 - January 2, 2013
-----------------------
* Added domain field to GA by [@starrhorne](https://github.com/starrhorne)
* Removed phantom install to get travis working
* Added window._gaq fix in initialize
- converted all integrations and their tests to a cleaner format
- renamed all instances of "provider" to "integration"
- built integration list from their own `name` to avoid bugs
- changed `_providers` array to an `_integrations` map
0.2.2 - December 19, 2012
-------------------------
* Added link query tag support for `ajs_uid` and `ajs_event`
* Added docco, uglify, and phantom to `devDependencies` by [@peleteiro](https://github.com/peleteiro)
0.12.2 - September 5, 2013
0.2.1 - December 18, 2012
-------------------------
* Added the `pageview` method for tracking virtual pageviews
* Added Travis-CI
* Fixed window level objects in customerio and gosquared
* Added for Intercom's "secure" mode by [@buger](https://github.com/buger)
* Removed root references
---
0.2.0 - December 16, 2012
-------------------------
* Separated providers into separate files for easier maintenance
* Changed special `createdAt` trait to `created` for cleanliness
* Moved `utils` directly onto the analytics object
* Added `extend` and `alias` utils
* Added `settings` defaults for all providers
- added [awe.sm](http://awe.sm)
0.1.2 - December 14, 2012
-------------------------
* Fixed bug with HubSpot calls pre-script load
* Upgraded sinon-chai to use [callWithMatch version](https://github.com/obmarg/sinon-chai/blob/f7aa7eccd6c0c18a3e1fc524a246a50c1a29c916/lib/sinon-chai.js)
* Added [Klaviyo](http://www.klaviyo.com/) by [@bialecki](https://github.com/bialecki)
* Added [HubSpot](http://www.hubspot.com/) by [@jessbrandi](https://github.com/jessbrandi)
* Added [GoSquared](https://www.gosquared.com/) by [@simontabor](https://github.com/simontabor)
0.12.1 - September 5, 2013
0.1.1 - November 25, 2012
-------------------------
* Added "Enhanced Link Attribution" for Google Analytics by [@nscott](https://github.com/nscott)
* Added "Site Speed Sample Rate" for Google Analytics by [@nscott](https://github.com/nscott)
---
0.1.0 - November 11, 2012
-------------------------
* Added [Olark](http://www.olark.com/)
* Added terse `initialize` syntax
* Added tests for all providers
* Added README
- UserVoice: fix bug where some installations wouldn't show the tab
0.12.0 - September 4, 2013
---
- Clicky: fixed custom tracking, added `pageview`
0.11.16 - September 3, 2013
---
- updated `segmentio/new-date` for old browser support
- Woopra: fixed default pageview properties
- Intercom: cleaned up identify logic and tests
0.11.15 - September 2, 2013
---
- pinned all dependencies
- added [Inspectlet](https://www.inspectlet.com)
- fixed storage options tests
- AdRoll: added custom data tracking
0.11.14 - August 30, 2013
---
- bumped version of [`ianstormtaylor/is`](https://github.com/ianstormtaylor/is) for bugfix
0.11.13 - August 29, 2013
---
- Spinnakr: added global variable for site id
- LeadLander: switched to non `document.write` version
- Customer.io: convert date objects to seconds
- fixed `is.function` bug in old browsers
0.11.12 - August 27, 2013
---
- cleaned up core
- fixed breaking tests
- removed Bitdeli, by @jtuulos
- updated Woopra to use new tracker, by @billyvg
- added trak.io, by @msaspence
- added `createIntegration` interim method
- added more Lytics options, by @slindberg and @araddon
- added trait alias to trak.io
- added MouseStats, by @Koushan
- added Tapstream, by @adambard
- allow Mixpanel to name users by `username`
- allow GoSquared to name users by `email` or `username`
- make Google Analytics ignored referrers an array
- update Errorception cdn
0.11.11 - August 9, 2013
---
- Added LeadLander
0.11.10 - July 12, 2013
---
- Added cookieName to Mixpanel options - 0a53afd
0.11.9 - June 11, 2013
---
- Added [Visual Website Optimizer](http://visualwebsiteoptimizer.com/)
0.11.8 - June 10, 2013
---
- Intercom: added `group` support
0.11.7 - June 7, 2013
---
- Fix for cookie domains, now sets to subdomain friendly by default.
- Renaming bindAll -> bind-all
0.11.6 - June 6, 2013
---
- Added `group` support to Preact by [@azcoov](https://github.com/azcoov)
- Fixed `created` bug with userfox
- Changed to new Vero CDN URL
- Fixed bug when initializing unknown providers
- Added `options` object to `pageview` by [@debangpaliwal](https://github.com/devangpaliwal)
0.11.5 - June 3, 2013
---
- Adding segmentio/json temporarily, fixing json-fallback
0.11.4 - May 31, 2013
---
- Updated Intercom's library URL
0.11.3 - May 31, 2013
---
- Added trailing comma fix
0.11.2 - May 30, 2013
---
- Added fix for UserVoice displaying `'null'`
- Added `make clean` before running components (fixes json fallback)
0.11.1 - May 29, 2013
---
- Fixed bug with Google Analytics not tracking integer `value`s
0.11.0 - May 28, 2013
---
- Switched from cookie-ing to localStorage
0.10.6 - May 23, 2013
---
- Moved trait parsing logic to the global level
- Added [Improvely](http://www.improvely.com/)
- Added [Get Satisfaction](https://getsatisfaction.com/)
- Added a `$phone` alias for Mixpanel
- Added the ability to pass a function for the `event` to `trackLink` and `trackForm`
0.10.5 - May 22, 2013
---
- Added [Amplitude](https://amplitude.com/) support
- Fixed improperly parsed cookies
0.10.4 - May 17, 2013
---
- Fixed bug with Google Analytics being ready to soon
0.10.3 - May 15, 2013
---
- Added [Optimizely](https://www.optimizely.com)
0.10.2 - May 14, 2013
---
- Fixed handling of `increments` and `userHash` from `options.Intercom`
0.10.1 - May 14, 2013
---
- Added `identify` to SnapEngage integration
0.10.0 - May 9, 2013
---
- Added `group` method
0.9.18 - May 9, 2013
---
- Added [Preact](http://www.preact.io/) support by [@azcoov](https://github.com/azcoov)
0.9.17 - May 1, 2013
---
- Updated Keen to version 2.1.0
0.9.16 - April 30, 2013
---
- Fixed bug affecting Pingdom users
0.9.15 - April 30, 2013
---
- Added identify to UserVoice
0.9.14 - April 29, 2013
---
- Fixing userfox integration to accept all traits not just signup_date
0.9.13 - April 29, 2013
---
- Fixing ordering of ignore referrer option in Google Analytics
0.9.12 - April 27, 2013
---
- Adding support for [userfox](https://www.userfox.com)
0.9.11 - April 26, 2013
---
- Adding new ignoreReferrer option to Google Analytics provider
- Adding new showFeedbackTab option to BugHerd provider
- Updating UserVoice provider to work with their new snippet(s)
- Fixing Errorception window.onerror binding to be friendlier
0.9.10 - April 17, 2013
---
- Adding url and title to mixpanel pageviews
- Addiung url and title to keen pageviews
0.9.9 - April 17, 2013
---
- Fixed GoSquared relying on `document.body
0.9.8 - April 16, 2013
---
- Adding support for Pingdom RUM
- Adding support for AdRoll
0.9.7 - April 16, 2013
---
- Fixing LiveChat test
- Updating mixpanel snippet to wait for ready until script loads
- Adding full traits pulled in from identify.
0.9.6 - April 10, 2013
---
- Renaming Provider.options to Provider.defaults
- Adding universal analytics support to Google Analytics
0.9.5 - April 10, 2013
---
- Adding support for new Olark Javascript API functions, see #121
0.9.4 - April 4, 2013
---
- Fixing Uservoice integration
- Fixing ready tests.
- Adding lytics integration by [@araddon](https://github.com/araddon)
- Adding bower support by [@jede](https://github.com/jede)
0.9.3 - April 2, 2013
---
- Olark provider now only notifies the operator of track and pageview when the chat box is expanded.
0.9.2 - March 28, 2013
---
- Qualaroo provider now prefers to identify with traits.email over a non-email userId --- makes the survey responses human readable.
0.9.1 - March 28, 2013
---
- Woopra no longer tracks after each identify so that duplicate page views aren't generated.
0.9.0 - March 27, 2013
---
- Changed default Keen IO settings to record all pageviews by default
- Removed Keen IO API Key option since that is no longer used for data "writes" to their API
- Renamed Keen IO projectId to projectToken to match their docs
0.8.13 - March 25, 2013
---
- Added ability to pass variables into `intercomSettings` via `context.intercom`
0.8.12 - March 25, 2013
---
- Added [Heap](https://heapanalytics.com)
0.8.11 - March 24, 2013
---
- Removed [Storyberg](http://storyberg.com/2013/03/18/the-end.html), best of luck guys
0.8.10 - March 14, 2013
---
- Added fix for conversion of `company`'s `created` date
- Added extra tests for `trackForm`
- Fixing issue with ClickTale https bug
0.8.9 - March 13, 2013
---
- Migrated to new Intercom Javascript API
- Removed un-used Intercom traits
- Fix bug in `trackForm` when using jQuery
0.8.8 - March 12, 2013
---
- Added `userId` to Errorception metadata
- Made date parsing more lenient (ms & sec) for trait.created
0.8.7 - March 7, 2013
---
- Added [Qualaroo](https://qualaroo.com/)
- Fixed bug with Chartbeat and page load times
0.8.6 - March 7, 2013
---
- Fixed bug in `trackLink` reported by [@quirkyjack](https://github.com/quirkyjack)
- Fixed bug in ClickTale where it didn't create the ClickTaleDiv
0.8.5 - March 7, 2013
---
- Added [Storyberg](http://storyberg.com/) by [@kevinicus](https://github.com/kevinicus)
- Added [BugHerd](http://bugherd.com)
- Added [ClickTale](http://clicktale.com)
- Cleaned up extraneous `require`'s in many providers
0.8.4 - March 5, 2013
---
- Added support for strings for the `created` trait
- Added `load-date` for getting the page's load time
0.8.3 - March 4, 2013
---
- Added [Sentry](https://getsentry.com)
- Added initial pageview support to more providers
- Allowed HubSpot to recognize email `userId`
- Added support for DoubleClick [via Google Analytics](http://support.google.com/analytics/bin/answer.py?hl-en&answer-2444872)
0.8.2 - March 4, 2013
---
- Fixed bug in FoxMetrics provider
- Added queue for providers which don't support ready immediately.
0.8.1 - March 3, 2013
---
- Fixed bug in `trackForm` when submitted via jQuery
0.8.0 - March 1, 2013
---
- Added cookie-ing to keep identity and traits across page loads
- Added `identify` support for Clicky
- Added `identify` support for GoSquared
- Added `identify` support for Woopra
- Updated tracking for Usercycle
0.7.1 - February 26, 2013
---
- Added Intercom companies by [@adrianrego](https://github.com/adrianrego)
- Added Intercom setting for use_counter
- Fixed Intercom traits passed without a created field
0.7.0 - February 25, 2013
---
- Switched over to [Component](http://component.io/)
0.6.0 - February 7, 2013
---
- Added `ready` method for binding to when analytics are initialized
- Added [UserVoice](https://www.uservoice.com)
- Added [Perfect Audience](https://www.perfectaudience.com/)
- Added [LiveChat](http://livechatinc.com)
- Fixed Intercom to allow multiple `identify` calls
0.5.1 - February 4, 2013
---
- Merged in fix for Keen IO's branding
- Added fix to `utils.parseUrl()` field `pathname` in IE
0.5.0 - February 1, 2013
---
- Added an `alias` method for merging two user's by ID
0.4.10 - January 30, 2013
---
- Fixed multiple elements on `trackLink` and `trackForm`
- Fixed CrazyEgg `apiKey` to `accountNumber`
- Fixed Keen to Keen.io
## 0.4.9 - January 29, 2013
- Fixed `alias` and `extend` breaking on non-objects
0.4.8 - January 29, 2013
---
- Fixed `trackForm` timeout by [@Plasma](https://github.com/Plasma)
0.4.7 - January 29, 2013
---
- Added support for Mixpanel's [revenue](https://mixpanel.com/docs/people-analytics/javascript#track_charge) feature
- Added support for KISSmetrics' `"Billing Amount"` property for revenue
- Added support for `revenue` being passed to Google Analytics' `value` property
0.4.6 - January 28, 2013
---
- Added automatic canonical URL support in Google Analytics
0.4.5 - January 25, 2013
---
- Added Intercom widget setting
- Fixed Chartbeat from requiring `body` element to exist
0.4.4 - January 21, 2013
---
- Added [Bitdeli](https://bitdeli.com/) by [@jtuulos](https://github.com/jtuulos)
- Added Mixpanel `$first_name` and `$last_name` aliases by [@dwradcliffe](https://github.com/dwradcliffe)
- Fixed Mixpanel `$last_seen` alias
- Added `parseUrl` util
- Moved GoSquared queue to snippet
0.4.3 - January 20, 2013
---
- Added support for Errorception [user metadata](http://blog.errorception.com/2012/11/capture-custom-data-with-your-errors.html)
0.4.2 - January 18, 2013
---
- Added option to use a properties function in `trackLink` and `trackForm` methods
0.4.1 - January 18, 2013
---
- Added [Keen.io](http://keen.io/) by [@dkador](https://github.com/dkador)
- Added [Foxmetrics](http://foxmetrics.com/) by [@rawsoft](https://github.com/rawsoft)
- Updated Google Analytics to include noninteraction and value added by [@rantav](https://github.com/rantav)
- Moved to expect.js from chai for cross-broser support
0.4.0 - January 18, 2013
---
- Renamed `trackClick` to `trackLink`
- Renamed `trackSubmit` to `trackForm`
0.3.8 - January 18, 2013
---
- Fixed Clicky loading slowly
0.3.7 - January 17, 2013
---
- Added [HitTail](http://hittail.com)
- Added [USERcycle](http://usercycle.com)
- Fixed Travis testing
0.3.6 - January 14, 2013
---
- Added [SnapEngage](http://snapengage.com)
0.3.5 - January 14, 2013
---
- Added `trackClick` and `trackForm` helpers
0.3.4 - January 13, 2013
---
- Upgraded to Mixpanel 2.2 by [@loganfuller](https://github.com/loganfuller)
0.3.3 - January 11, 2013
---
- Added [comScore Direct](http://direct.comscore.com)
0.3.2 - January 11, 2013
---
- Added [Quantcast](http://quantcast.com)
- Fixed breaking issue on Clicky
- Updated Makefile for new providers
## 0.3.1 - January 11, 2013
- Added `label` and `category` support to Google Analytics
0.3.0 - January 9, 2013
---
- Added [Gauges](http://get.gaug.es/) by [@bdougherty](https://github.com/bdougherty)
- Added [Vero](http://www.getvero.com/)
- Added optional `url` argument to `pageview` method
0.2.5 - January 8, 2013
---
- Added [Errorception](http://errorception.com/)
- Added [Clicky](http://clicky.com/)
- Fixed IE 7 bug reported by [@yefremov](https://github.com/yefremov)
0.2.4 - January 3, 2013
---
- Fixed GoSquared trailing comma by [@cmer](https://github.com/cmer)
0.2.3 - January 2, 2013
---
- Added domain field to GA by [@starrhorne](https://github.com/starrhorne)
- Removed phantom install to get travis working
- Added window.\_gaq fix in initialize
0.2.2 - December 19, 2012
---
- Added link query tag support for `ajs_uid` and `ajs_event`
- Added docco, uglify, and phantom to `devDependencies` by [@peleteiro](https://github.com/peleteiro)
0.2.1 - December 18, 2012
---
- Added the `pageview` method for tracking virtual pageviews
- Added Travis-CI
- Fixed window level objects in customerio and gosquared
- Added for Intercom's "secure" mode by [@buger](https://github.com/buger)
- Removed root references
0.2.0 - December 16, 2012
---
- Separated providers into separate files for easier maintenance
- Changed special `createdAt` trait to `created` for cleanliness
- Moved `utils` directly onto the analytics object
- Added `extend` and `alias` utils
- Added `settings` defaults for all providers
0.1.2 - December 14, 2012
---
- Fixed bug with HubSpot calls pre-script load
- Upgraded sinon-chai to use [callWithMatch version](https://github.com/obmarg/sinon-chai/blob/f7aa7eccd6c0c18a3e1fc524a246a50c1a29c916/lib/sinon-chai.js)
- Added [Klaviyo](http://www.klaviyo.com/) by [@bialecki](https://github.com/bialecki)
- Added [HubSpot](http://www.hubspot.com/) by [@jessbrandi](https://github.com/jessbrandi)
- Added [GoSquared](https://www.gosquared.com/) by [@simontabor](https://github.com/simontabor)
0.1.1 - November 25, 2012
---
- Added "Enhanced Link Attribution" for Google Analytics by [@nscott](https://github.com/nscott)
- Added "Site Speed Sample Rate" for Google Analytics by [@nscott](https://github.com/nscott)
0.1.0 - November 11, 2012
---
- Added [Olark](http://www.olark.com/)
- Added terse `initialize` syntax
- Added tests for all providers
- Added README

@@ -61,3 +61,5 @@ /* eslint-env node */

if (!process.env.SAUCE_USERNAME || !process.env.SAUCE_ACCESS_KEY) {
throw new Error('SAUCE_USERNAME and SAUCE_ACCESS_KEY environment variables are required but are missing');
throw new Error(
'SAUCE_USERNAME and SAUCE_ACCESS_KEY environment variables are required but are missing'
);
}

@@ -78,24 +80,21 @@

reporters: ['progress', 'junit'],
reporters: ['spec', 'summary', 'junit'],
browsers: ['PhantomJS'].concat(Object.keys(customLaunchers)),
specReporter: {
suppressPassed: true
},
customLaunchers: customLaunchers,
junitReporter: {
outputDir: process.env.TEST_REPORTS_DIR,
outputDir: 'junit-reports',
suite: require('./package.json').name
},
browsers: ['PhantomJS'].concat(Object.keys(customLaunchers)),
customLaunchers: customLaunchers,
sauceLabs: {
testName: require('./package.json').name
}
// Edge and Safari 9 still panic with coverage. Keeping disabled.
// coverageReporter: {
// reporters: [
// { type: 'lcov' }
// ]
// }
});
};
/* eslint-env node */
'use strict';
// 10 minutes
var TEST_TIMEOUT = 10 * 60 * 1000;
module.exports = function(config) {

@@ -8,12 +11,12 @@ config.set({

{ pattern: 'test/support/*.html', included: false },
// NOTE: This must run before all tests
'test/support/global.js',
'test/support/global.js', // NOTE: This must run before all tests
'test/**/*.test.js'
],
browsers: ['PhantomJS'],
singleRun: true,
frameworks: ['browserify', 'mocha'],
reporters: ['spec'/* , 'coverage' */],
reporters: ['spec'],

@@ -24,5 +27,8 @@ preprocessors: {

browserNoActivityTimeout: TEST_TIMEOUT,
client: {
mocha: {
grep: process.env.GREP
grep: process.env.GREP,
timeout: TEST_TIMEOUT
}

@@ -33,24 +39,4 @@ },

debug: true
// Edge and Safari 9 still panic with coverage. Keeping disabled.
// transform: [
// [
// 'browserify-istanbul',
// {
// instrumenterConfig: {
// embedSource: true
// }
// }
// ]
// ]
}
// Edge and Safari 9 still panic with coverage. Keeping disabled.
// coverageReporter: {
// reporters: [
// { type: 'text' },
// { type: 'html' },
// { type: 'json' }
// ]
// }
});
};

@@ -105,3 +105,6 @@ 'use strict';

Analytics.prototype.init = Analytics.prototype.initialize = function(settings, options) {
Analytics.prototype.init = Analytics.prototype.initialize = function(
settings,
options
) {
settings = settings || {};

@@ -125,4 +128,4 @@ options = options || {};

if (
options.integrations[name] === false
|| options.integrations.All === false && !options.integrations[name]
options.integrations[name] === false ||
(options.integrations.All === false && !options.integrations[name])
) {

@@ -163,3 +166,6 @@ return;

each(function(integration) {
if (options.initialPageview && integration.options.initialPageview === false) {
if (
options.initialPageview &&
integration.options.initialPageview === false
) {
integration.page = after(2, integration.page);

@@ -232,5 +238,5 @@ }

/* eslint-disable no-unused-expressions, no-sequences */
if (is.fn(options)) fn = options, options = null;
if (is.fn(traits)) fn = traits, options = null, traits = null;
if (is.object(id)) options = traits, traits = id, id = user.id();
if (is.fn(options)) (fn = options), (options = null);
if (is.fn(traits)) (fn = traits), (options = null), (traits = null);
if (is.object(id)) (options = traits), (traits = id), (id = user.id());
/* eslint-enable no-unused-expressions, no-sequences */

@@ -285,8 +291,7 @@

if (!arguments.length) return group;
if (is.fn(options)) fn = options, options = null;
if (is.fn(traits)) fn = traits, options = null, traits = null;
if (is.object(id)) options = traits, traits = id, id = group.id();
if (is.fn(options)) (fn = options), (options = null);
if (is.fn(traits)) (fn = traits), (options = null), (traits = null);
if (is.object(id)) (options = traits), (traits = id), (id = group.id());
/* eslint-enable no-unused-expressions, no-sequences */
// grab from group again to make sure we're taking from the source

@@ -326,4 +331,5 @@ group.identify(id, traits);

/* eslint-disable no-unused-expressions, no-sequences */
if (is.fn(options)) fn = options, options = null;
if (is.fn(properties)) fn = properties, options = null, properties = null;
if (is.fn(options)) (fn = options), (options = null);
if (is.fn(properties))
(fn = properties), (options = null), (properties = null);
/* eslint-enable no-unused-expressions, no-sequences */

@@ -362,3 +368,6 @@

// Add the initialize integrations so the server-side ones can be disabled too
defaults(msg.integrations, this._mergeInitializeAndPlanIntegrations(planIntegrationOptions));
defaults(
msg.integrations,
this._mergeInitializeAndPlanIntegrations(planIntegrationOptions)
);

@@ -384,3 +393,7 @@ this._invoke('track', new Track(msg));

Analytics.prototype.trackClick = Analytics.prototype.trackLink = function(links, event, properties) {
Analytics.prototype.trackClick = Analytics.prototype.trackLink = function(
links,
event,
properties
) {
if (!links) return this;

@@ -398,5 +411,6 @@ // always arrays, handles jquery

var props = is.fn(properties) ? properties(el) : properties;
var href = el.getAttribute('href')
|| el.getAttributeNS('http://www.w3.org/1999/xlink', 'href')
|| el.getAttribute('xlink:href');
var href =
el.getAttribute('href') ||
el.getAttributeNS('http://www.w3.org/1999/xlink', 'href') ||
el.getAttribute('xlink:href');

@@ -429,3 +443,7 @@ self.track(ev, props);

Analytics.prototype.trackSubmit = Analytics.prototype.trackForm = function(forms, event, properties) {
Analytics.prototype.trackSubmit = Analytics.prototype.trackForm = function(
forms,
event,
properties
) {
if (!forms) return this;

@@ -437,3 +455,4 @@ // always arrays, handles jquery

each(function(el) {
if (type(el) !== 'element') throw new TypeError('Must pass HTMLElement to `analytics.trackForm`.');
if (type(el) !== 'element')
throw new TypeError('Must pass HTMLElement to `analytics.trackForm`.');
function handler(e) {

@@ -479,8 +498,11 @@ prevent(e);

/* eslint-disable no-unused-expressions, no-sequences */
if (is.fn(options)) fn = options, options = null;
if (is.fn(properties)) fn = properties, options = properties = null;
if (is.fn(name)) fn = name, options = properties = name = null;
if (type(category) === 'object') options = name, properties = category, name = category = null;
if (type(name) === 'object') options = properties, properties = name, name = null;
if (type(category) === 'string' && type(name) !== 'string') name = category, category = null;
if (is.fn(options)) (fn = options), (options = null);
if (is.fn(properties)) (fn = properties), (options = properties = null);
if (is.fn(name)) (fn = name), (options = properties = name = null);
if (type(category) === 'object')
(options = name), (properties = category), (name = category = null);
if (type(name) === 'object')
(options = properties), (properties = name), (name = null);
if (type(category) === 'string' && type(name) !== 'string')
(name = category), (category = null);
/* eslint-enable no-unused-expressions, no-sequences */

@@ -554,5 +576,5 @@

/* eslint-disable no-unused-expressions, no-sequences */
if (is.fn(options)) fn = options, options = null;
if (is.fn(from)) fn = from, options = null, from = null;
if (is.object(from)) options = from, from = null;
if (is.fn(options)) (fn = options), (options = null);
if (is.fn(from)) (fn = from), (options = null), (from = null);
if (is.object(from)) (options = from), (from = null);
/* eslint-enable no-unused-expressions, no-sequences */

@@ -676,3 +698,7 @@

if (failedInitializations.indexOf(name) >= 0) {
self.log('Skipping invokation of .%s method of %s integration. Integation failed to initialize properly.', method, name);
self.log(
'Skipping invokation of .%s method of %s integration. Integation failed to initialize properly.',
method,
name
);
} else {

@@ -690,3 +716,8 @@ try {

});
self.log('Error invoking .%s method of %s integration: %o', method, name, e);
self.log(
'Error invoking .%s method of %s integration: %o',
method,
name,
e
);
}

@@ -756,9 +787,13 @@ }

var sub;
return foldl(function(acc, val, key) {
if (key.substr(0, length) === prefix) {
sub = key.substr(length);
acc[sub] = val;
}
return acc;
}, {}, object);
return foldl(
function(acc, val, key) {
if (key.substr(0, length) === prefix) {
sub = key.substr(length);
acc[sub] = val;
}
return acc;
},
{},
object
);
}

@@ -791,3 +826,5 @@ };

*/
Analytics.prototype._mergeInitializeAndPlanIntegrations = function(planIntegrations) {
Analytics.prototype._mergeInitializeAndPlanIntegrations = function(
planIntegrations
) {
// Do nothing if there are no initialization integrations

@@ -794,0 +831,0 @@ if (!this.options.integrations) {

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

/**

@@ -67,3 +66,2 @@ * Get or set the cookie options.

/**

@@ -87,3 +85,2 @@ * Set a `key` and `value` in our cookie.

/**

@@ -106,3 +103,2 @@ * Get a value from our cookie by `key`.

/**

@@ -124,3 +120,2 @@ * Remove a value from our cookie by `key`.

/**

@@ -132,3 +127,2 @@ * Expose the cookie singleton.

/**

@@ -135,0 +129,0 @@ * Expose the `Cookie` constructor.

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

/**

@@ -59,3 +58,5 @@ * Initialize new `Entity` with `options`.

// fallback to memory storage.
debug('warning using memory store both cookies and localStorage are disabled');
debug(
'warning using memory store both cookies and localStorage are disabled'
);
this._storage = memory;

@@ -72,3 +73,2 @@ };

/**

@@ -88,3 +88,2 @@ * Get or set storage `options`.

/**

@@ -98,10 +97,11 @@ * Get or set the entity's `id`.

switch (arguments.length) {
case 0: return this._getId();
case 1: return this._setId(id);
default:
// No default case
case 0:
return this._getId();
case 1:
return this._setId(id);
default:
// No default case
}
};
/**

@@ -120,3 +120,2 @@ * Get the entity's id.

/**

@@ -136,3 +135,2 @@ * Set the entity's `id`.

/**

@@ -148,10 +146,11 @@ * Get or set the entity's `traits`.

switch (arguments.length) {
case 0: return this._getTraits();
case 1: return this._setTraits(traits);
default:
// No default case
case 0:
return this._getTraits();
case 1:
return this._setTraits(traits);
default:
// No default case
}
};
/**

@@ -165,7 +164,8 @@ * Get the entity's traits. Always convert ISO date strings into real dates,

Entity.prototype._getTraits = function() {
var ret = this._options.persist ? store.get(this._options.localStorage.key) : this._traits;
var ret = this._options.persist
? store.get(this._options.localStorage.key)
: this._traits;
return ret ? isodateTraverse(clone(ret)) : {};
};
/**

@@ -186,3 +186,2 @@ * Set the entity's `traits`.

/**

@@ -199,3 +198,4 @@ * Identify the entity with an `id` and `traits`. If we it's the same entity,

var current = this.id();
if (current === null || current === id) traits = extend(this.traits(), traits);
if (current === null || current === id)
traits = extend(this.traits(), traits);
if (id) this.id(id);

@@ -207,3 +207,2 @@ this.debug('identify %o, %o', id, traits);

/**

@@ -222,3 +221,2 @@ * Save the entity to local storage and the cookie.

/**

@@ -235,3 +233,2 @@ * Log the entity out, reseting `id` and `traits` to defaults.

/**

@@ -246,3 +243,2 @@ * Reset all entity state, logging out and returning options to defaults.

/**

@@ -256,2 +252,1 @@ * Load saved entity `id` or `traits` from storage.

};

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

/**

@@ -40,3 +39,2 @@ * Initialize a new `Group` with `options`.

/**

@@ -48,3 +46,2 @@ * Inherit `Entity`

/**

@@ -56,3 +53,2 @@ * Expose the group singleton.

/**

@@ -59,0 +55,0 @@ * Expose the `Group` constructor.

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

/**

@@ -93,3 +92,2 @@ * Expose the metrics singleton.

/**

@@ -96,0 +94,0 @@ * Expose the `Metrics` constructor.

@@ -30,8 +30,3 @@ 'use strict';

var toplevel = [
'integrations',
'anonymousId',
'timestamp',
'context'
];
var toplevel = ['integrations', 'anonymousId', 'timestamp', 'context'];

@@ -47,3 +42,5 @@ /**

function normalize(msg, list) {
var lower = map(function(s) { return s.toLowerCase(); }, list);
var lower = map(function(s) {
return s.toLowerCase();
}, list);
var opts = msg.options || {};

@@ -68,3 +65,4 @@ var integrations = opts.integrations || {};

if (type(integrations[key]) === 'object') return;
if (has.call(integrations, key) && typeof providers[key] === 'boolean') return;
if (has.call(integrations, key) && typeof providers[key] === 'boolean')
return;
integrations[key] = value;

@@ -92,4 +90,8 @@ }, providers);

function integration(name) {
return !!(includes(name, list) || name.toLowerCase() === 'all' || includes(name.toLowerCase(), lower));
return !!(
includes(name, list) ||
name.toLowerCase() === 'all' ||
includes(name.toLowerCase(), lower)
);
}
}

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

/**

@@ -52,3 +51,2 @@ * Set a `key` and `value` in local storage.

/**

@@ -66,3 +64,2 @@ * Get a value from local storage by `key`.

/**

@@ -79,3 +76,2 @@ * Remove a value from local storage by `key`.

/**

@@ -87,3 +83,2 @@ * Expose the store singleton.

/**

@@ -90,0 +85,0 @@ * Expose the `Store` constructor.

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

/**

@@ -44,3 +43,2 @@ * Initialize a new `User` with `options`.

/**

@@ -148,3 +146,2 @@ * Inherit `Entity`

/**

@@ -167,3 +164,2 @@ * BACKWARDS COMPATIBILITY: Load the old user from the cookie.

/**

@@ -175,3 +171,2 @@ * Expose the user singleton.

/**

@@ -178,0 +173,0 @@ * Expose the `User` constructor.

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

@@ -14,4 +14,16 @@ "keywords": [

"scripts": {
"test": "make test"
"test": "make test",
"lint": "eslint \"./{lib,test}/**/*.js\"",
"format": "prettier-eslint --write --list-different \"./{lib,test}/**/*.{js,json,md}\"",
"precommit": "lint-staged",
"np": "np --no-publish"
},
"lint-staged": {
"linters": {
"*.{js,json,md}": [
"prettier-eslint --write",
"git add"
]
}
},
"repository": {

@@ -42,6 +54,6 @@ "type": "git",

"@segment/prevent-default": "^1.0.0",
"@segment/send-json": "^3.0.0",
"@segment/store": "^1.3.20",
"@segment/top-domain": "^3.0.0",
"bind-all": "^1.0.0",
"extend": "3.0.1",
"component-cookie": "^1.1.2",

@@ -54,2 +66,3 @@ "component-emitter": "^1.2.1",

"debug": "^0.7.4",
"extend": "3.0.1",
"inherits": "^2.0.1",

@@ -62,14 +75,19 @@ "install": "^0.7.3",

"segmentio-facade": "^3.0.2",
"uuid": "^2.0.2",
"@segment/send-json": "^3.0.0"
"uuid": "^2.0.2"
},
"devDependencies": {
"@segment/analytics.js-integration": "^3.2.1",
"@segment/eslint-config": "^3.1.1",
"@segment/eslint-config": "^4.0.0",
"browserify": "13.0.0",
"browserify-istanbul": "^2.0.0",
"codecov": "^3.0.2",
"compat-trigger-event": "^1.0.0",
"component-each": "^0.2.6",
"eslint": "^2.9.0",
"eslint-plugin-mocha": "^2.2.0",
"eslint-plugin-require-path-exists": "^1.1.5",
"eslint": "^4.19.1",
"eslint-config-prettier": "^2.9.0",
"eslint-plugin-mocha": "^5.0.0",
"eslint-plugin-react": "^7.9.1",
"eslint-plugin-require-path-exists": "^1.1.8",
"husky": "^0.14.3",
"istanbul": "^0.4.3",
"jquery": "^3.2.1",

@@ -85,8 +103,13 @@ "karma": "1.3.0",

"karma-spec-reporter": "0.0.26",
"karma-summary-reporter": "^1.5.0",
"lint-staged": "^7.2.0",
"mocha": "^2.2.5",
"np": "^3.0.4",
"phantomjs-prebuilt": "^2.1.7",
"prettier-eslint-cli": "^4.7.1",
"proclaim": "^3.4.1",
"sinon": "^1.7.3",
"snyk": "^1.83.0",
"watchify": "^3.7.0"
}
}
# analytics.js-core
[![CircleCI](https://circleci.com/gh/segmentio/analytics.js-core.svg?style=shield&circle-token=802e83e9a76e911d83be24df8497b6283ee5dfeb)](https://circleci.com/gh/segmentio/analytics.js-core)
[![Codecov](https://img.shields.io/codecov/c/github/segmentio/analytics.js-core/master.svg?maxAge=2592000)](https://codecov.io/gh/segmentio/analytics.js-core)
[![CircleCI](https://circleci.com/gh/segmentio/analytics.js-core.svg?style=shield)](https://circleci.com/gh/segmentio/analytics.js-core)
[![Codecov](https://img.shields.io/codecov/c/github/segmentio/analytics.js-core/master.svg)](https://codecov.io/gh/segmentio/analytics.js-core)

@@ -15,6 +15,1 @@ This is the core of [Analytics.js][], the open-source library that powers data collection at [Segment](https://segment.com).

[analytics.js]: https://segment.com/docs/libraries/analytics.js/
## Releasing
1. Update the version in `package.json`.
2. Run `robo release x.y.z` where `x.y.z` is the new version.

@@ -95,3 +95,3 @@ 'use strict';

describe('#setAnonymousId', function() {
it('should set the user\'s anonymous id', function() {
it("should set the user's anonymous id", function() {
var prev = analytics.user().anonymousId();

@@ -119,3 +119,5 @@ assert(prev.length === 36);

it('should gracefully handle integrations that fail to initialize', function() {
Test.prototype.initialize = function() { throw new Error('Uh oh!'); };
Test.prototype.initialize = function() {
throw new Error('Uh oh!');
};
var test = new Test();

@@ -129,3 +131,5 @@ analytics.use(Test);

it('should store the names of integrations that did not initialize', function() {
Test.prototype.initialize = function() { throw new Error('Uh oh!'); };
Test.prototype.initialize = function() {
throw new Error('Uh oh!');
};
var test = new Test();

@@ -140,3 +144,5 @@ analytics.use(Test);

it('should not process events for any integrations that failed to initialize', function() {
Test.prototype.initialize = function() { throw new Error('Uh oh!'); };
Test.prototype.initialize = function() {
throw new Error('Uh oh!');
};
Test.prototype.page = sinon.spy();

@@ -153,3 +159,5 @@ var test = new Test();

it('should still invoke the integrations .ready method', function(done) {
Test.prototype.initialize = function() { throw new Error('Uh oh!'); };
Test.prototype.initialize = function() {
throw new Error('Uh oh!');
};
var spy = sinon.spy(Test.prototype, 'ready');

@@ -167,3 +175,5 @@ var test = new Test();

it('should record a metric for integration errors', function() {
Test.prototype.initialize = function() { throw new Error('Uh oh!'); };
Test.prototype.initialize = function() {
throw new Error('Uh oh!');
};
var test = new Test();

@@ -176,10 +186,18 @@ analytics.use(Test);

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'
});
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'
}
);
});

@@ -237,6 +255,10 @@

sinon.assert.calledOnce(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',
{
method: 'initialize',
integration_name: 'Test'
}
);
});

@@ -418,3 +440,5 @@

it('should not crash when invoking integration fails', function() {
Test.prototype.invoke = function() { throw new Error('Uh oh!'); };
Test.prototype.invoke = function() {
throw new Error('Uh oh!');
};
analytics.track('Test Event');

@@ -430,10 +454,16 @@ });

});
sinon.assert.calledWith(metrics.increment, 'analytics_js.integration.invoke', {
method: 'track',
integration_name: 'Test'
});
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!'); };
Test.prototype.invoke = function() {
throw new Error('Uh oh!');
};
analytics.identify('prateek');

@@ -445,10 +475,18 @@

});
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'
});
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'
}
);
});

@@ -733,3 +771,6 @@

it('should accept top level option .integrations', function() {
analytics.page({ prop: true }, { integrations: { AdRoll: { opt: true } } });
analytics.page(
{ prop: true },
{ integrations: { AdRoll: { opt: true } } }
);
var page = analytics._invoke.args[0][1];

@@ -756,7 +797,10 @@ assert.deepEqual(page.options('AdRoll'), { opt: true });

});
analytics.page({ prop: true }, {
integrations: {
Test: true
analytics.page(
{ prop: true },
{
integrations: {
Test: true
}
}
});
);
var page = analytics._invoke.args[0][1];

@@ -799,3 +843,6 @@ assert.deepEqual(page.obj.integrations, { Test: true });

assert.deepEqual(opts, { context: { page: defaults } });
assert.deepEqual(props, extend(defaults, { category: 'category', name: 'name' }));
assert.deepEqual(
props,
extend(defaults, { category: 'category', name: 'name' })
);
done();

@@ -990,3 +1037,7 @@ });

it('should accept top level option .integrations', function() {
analytics.identify(1, { trait: true }, { integrations: { AdRoll: { opt: true } } });
analytics.identify(
1,
{ trait: true },
{ integrations: { AdRoll: { opt: true } } }
);
var identify = analytics._invoke.args[0][1];

@@ -1013,7 +1064,11 @@ assert.deepEqual({ opt: true }, identify.options('AdRoll'));

});
analytics.identify(1, { trait: true }, {
integrations: {
Test: true
analytics.identify(
1,
{ trait: true },
{
integrations: {
Test: true
}
}
});
);
var identify = analytics._invoke.args[0][1];

@@ -1024,3 +1079,7 @@ assert.deepEqual(identify.obj.integrations, { Test: true });

it('should accept top level option .context', function() {
analytics.identify(1, { trait: true }, { context: { app: { name: 'segment' } } });
analytics.identify(
1,
{ trait: true },
{ context: { app: { name: 'segment' } } }
);
var identify = analytics._invoke.args[0][1];

@@ -1198,3 +1257,7 @@ assert.deepEqual(identify.obj.context.app, { name: 'segment' });

it('should accept top level option .integrations', function() {
analytics.group(1, { trait: true }, { integrations: { AdRoll: { opt: true } } });
analytics.group(
1,
{ trait: true },
{ integrations: { AdRoll: { opt: true } } }
);
var group = analytics._invoke.args[0][1];

@@ -1221,7 +1284,11 @@ assert.deepEqual(group.options('AdRoll'), { opt: true });

});
analytics.group(1, { trait: true }, {
integrations: {
Test: true
analytics.group(
1,
{ trait: true },
{
integrations: {
Test: true
}
}
});
);
var group = analytics._invoke.args[0][1];

@@ -1339,3 +1406,7 @@ assert.deepEqual(group.obj.integrations, { Test: true });

it('should accept top level option .integrations', function() {
analytics.track('event', { prop: true }, { integrations: { AdRoll: { opt: true } } });
analytics.track(
'event',
{ prop: true },
{ integrations: { AdRoll: { opt: true } } }
);
var track = analytics._invoke.args[0][1];

@@ -1362,7 +1433,11 @@ assert.deepEqual({ opt: true }, track.options('AdRoll'));

});
analytics.track('event', { prop: true }, {
integrations: {
Test: true
analytics.track(
'event',
{ prop: true },
{
integrations: {
Test: true
}
}
});
);
var track = analytics._invoke.args[0][1];

@@ -1391,3 +1466,6 @@ assert.deepEqual(track.obj.integrations, { Test: true });

var track = analytics._invoke.args[0][1];
assert.deepEqual(track.obj.integrations, { All: false, 'Segment.io': true });
assert.deepEqual(track.obj.integrations, {
All: false,
'Segment.io': true
});

@@ -1440,3 +1518,6 @@ analytics.track('event2', { prop: true });

var track = analytics._invoke.args[0][1];
assert.deepEqual({ All: false, 'Segment.io': true }, track.obj.integrations);
assert.deepEqual(
{ All: false, 'Segment.io': true },
track.obj.integrations
);
});

@@ -1502,3 +1583,6 @@

var track = analytics._invoke.args[0][1];
assert.deepEqual({ All: false, 'Segment.io': true }, track.obj.integrations);
assert.deepEqual(
{ All: false, 'Segment.io': true },
track.obj.integrations
);
});

@@ -1597,5 +1681,9 @@

it('should not accept a string for an element', function() {
assert['throws'](function() {
analytics.trackLink('a');
}, TypeError, 'Must pass HTMLElement to `analytics.trackLink`.');
assert['throws'](
function() {
analytics.trackLink('a');
},
TypeError,
'Must pass HTMLElement to `analytics.trackLink`.'
);
trigger(link, 'click');

@@ -1612,3 +1700,5 @@ assert(!analytics.track.called);

it('should accept an event function', function() {
function event(el) { return el.nodeName; }
function event(el) {
return el.nodeName;
}
analytics.trackLink(link, event);

@@ -1620,3 +1710,5 @@ trigger(link, 'click');

it('should accept a properties function', function() {
function properties(el) { return { type: el.nodeName }; }
function properties(el) {
return { type: el.nodeName };
}
analytics.trackLink(link, 'event', properties);

@@ -1725,5 +1817,9 @@ trigger(link, 'click');

var str = 'form';
assert['throws'](function() {
analytics.trackForm(str);
}, TypeError, 'Must pass HTMLElement to `analytics.trackForm`.');
assert['throws'](
function() {
analytics.trackForm(str);
},
TypeError,
'Must pass HTMLElement to `analytics.trackForm`.'
);
submit.click();

@@ -1740,3 +1836,5 @@ assert(!analytics.track.called);

it('should accept an event function', function() {
function event() { return 'event'; }
function event() {
return 'event';
}
analytics.trackForm(form, event);

@@ -1748,3 +1846,5 @@ submit.click();

it('should accept a properties function', function() {
function properties() { return { property: true }; }
function properties() {
return { property: true };
}
analytics.trackForm(form, 'event', properties);

@@ -1756,3 +1856,3 @@ submit.click();

it('should call submit after a timeout', function(done) {
var spy = form.submit = sinon.spy();
var spy = (form.submit = sinon.spy());
analytics.trackForm(form);

@@ -1767,3 +1867,5 @@ submit.click();

it('should trigger an existing submit handler', function(done) {
bind(form, 'submit', function() { done(); });
bind(form, 'submit', function() {
done();
});
analytics.trackForm(form);

@@ -1775,3 +1877,5 @@ submit.click();

var $form = jQuery(form);
$form.submit(function() { done(); });
$form.submit(function() {
done();
});
analytics.trackForm(form);

@@ -1790,3 +1894,5 @@ submit.click();

var $form = jQuery(form);
$form.submit(function() { done(); });
$form.submit(function() {
done();
});
analytics.trackForm(form);

@@ -1871,3 +1977,5 @@ $form.submit();

it('should accept top level option .integrations', function() {
analytics.alias('new', 'old', { integrations: { AdRoll: { opt: true } } });
analytics.alias('new', 'old', {
integrations: { AdRoll: { opt: true } }
});
var alias = analytics._invoke.args[0][1];

@@ -1874,0 +1982,0 @@ assert.deepEqual({ opt: true }, alias.options('AdRoll'));

@@ -7,3 +7,3 @@ 'use strict';

describe('cookie', function() {
before(function() {
beforeEach(function() {
// Just to make sure that

@@ -17,3 +17,6 @@ // URIError is never thrown here.

cookie.options({});
cookie.remove('x');
// remove all cookies
document.cookie.split(';').forEach(function(entry) {
cookie.remove(entry.split('=')[0]);
});
});

@@ -27,9 +30,9 @@

it('should get an existing cookie', function() {
cookie.set('x', { a: 'b' });
assert.deepEqual(cookie.get('x'), { a: 'b' });
cookie.set('cookie-get', { a: 'b' });
assert.deepEqual(cookie.get('cookie-get'), { a: 'b' });
});
it('should not throw an error on a malformed cookie', function() {
document.cookie = 'x=y';
assert(cookie.get('x') === null);
document.cookie = 'cookie-bad=y';
assert(cookie.get('cookie-bad') === null);
});

@@ -40,4 +43,4 @@ });

it('should set a cookie', function() {
cookie.set('x', { a: 'b' });
assert.deepEqual(cookie.get('x'), { a: 'b' });
cookie.set('cookie-set', { a: 'b' });
assert.deepEqual(cookie.get('cookie-set'), { a: 'b' });
});

@@ -48,6 +51,6 @@ });

it('should remove a cookie', function() {
cookie.set('x', { a: 'b' });
assert.deepEqual(cookie.get('x'), { a: 'b' });
cookie.remove('x');
assert(cookie.get('x') === null);
cookie.set('cookie-remove', { a: 'b' });
assert.deepEqual(cookie.get('cookie-remove'), { a: 'b' });
cookie.remove('cookie-remove');
assert(cookie.get('cookie-remove') === null);
});

@@ -54,0 +57,0 @@ });

@@ -18,3 +18,6 @@ 'use strict';

previousAnalyticsGlobal = window.analytics;
assert(previousAnalyticsGlobal, 'test harness expected global.analytics to be defined but it is not');
assert(
previousAnalyticsGlobal,
'test harness expected global.analytics to be defined but it is not'
);
});

@@ -21,0 +24,0 @@

@@ -33,7 +33,9 @@ 'use strict';

it('should enqueue items when sampleRate is set', function() {
metrics.options({ sampleRate : 1 });
metrics.options({ sampleRate: 1 });
metrics.increment('test', []);
assert.deepEqual(metrics.queue, [ { type: 'Counter', metric: 'test', value: 1, tags: [] } ]);
assert.deepEqual(metrics.queue, [
{ type: 'Counter', metric: 'test', value: 1, tags: [] }
]);
});

@@ -63,3 +65,6 @@ });

assert.strictEqual(req.url, 'https://api.segment.io/v1/m');
assert.strictEqual(req.requestBody, '{"series":[{"type":"Counter","metric":"foo","value":1,"tags":{}}]}');
assert.strictEqual(
req.requestBody,
'{"series":[{"type":"Counter","metric":"foo","value":1,"tags":{}}]}'
);
});

@@ -78,3 +83,6 @@

assert.strictEqual(req.url, 'https://api.segment.io/v1/m');
assert.strictEqual(req.requestBody, '{"series":[{"type":"Counter","metric":"test1","value":1,"tags":{"foo":"bar"}},{"type":"Counter","metric":"test2","value":1,"tags":{}}]}');
assert.strictEqual(
req.requestBody,
'{"series":[{"type":"Counter","metric":"test1","value":1,"tags":{"foo":"bar"}},{"type":"Counter","metric":"test2","value":1,"tags":{}}]}'
);
});

@@ -147,3 +155,6 @@

assert.strictEqual(req.url, 'https://api.segment.io/v1/m');
assert.strictEqual(req.requestBody, '{"series":[{"type":"Counter","metric":"test1","value":1,"tags":{"foo":"bar"}}]}');
assert.strictEqual(
req.requestBody,
'{"series":[{"type":"Counter","metric":"test1","value":1,"tags":{"foo":"bar"}}]}'
);

@@ -150,0 +161,0 @@ assert.deepEqual(metrics.queue, []);

@@ -30,3 +30,3 @@ 'use strict';

it('should move all toplevel keys to the message', function() {
var date = opts.timestamp = new Date();
var date = (opts.timestamp = new Date());
opts.anonymousId = 'anonymous-id';

@@ -33,0 +33,0 @@ opts.integrations = { foo: 1 };

@@ -12,1 +12,2 @@ 'use strict';

// require('./user.js');

@@ -268,3 +268,5 @@ 'use strict';

it('should return anonymousId using the store', function() {
user.storage = function() { return noop; };
user.storage = function() {
return noop;
};
assert(user.anonymousId() === undefined);

@@ -297,3 +299,5 @@ });

it('should return anonymousId using the store', function() {
user.storage = function() { return noop; };
user.storage = function() {
return noop;
};
assert(user.anonymousId() === undefined);

@@ -315,3 +319,5 @@ });

it('should return anonymousId using the store', function() {
user.storage = function() { return noop; };
user.storage = function() {
return noop;
};
assert(user.anonymousId() === undefined);

@@ -505,3 +511,6 @@ });

it('should load from an old cookie', function() {
cookie.set(user._options.cookie.oldKey, { id: 'old', traits: { trait: true } });
cookie.set(user._options.cookie.oldKey, {
id: 'old',
traits: { trait: true }
});
user.load();

@@ -508,0 +517,0 @@ assert(user.id() === 'old');

Sorry, the diff of this file is not supported yet

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