angulartics2 9.0.0 → 10.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -2
- package/adobeanalytics/bundles/angulartics2-adobeanalytics.umd.js +13 -223
- package/adobeanalytics/bundles/angulartics2-adobeanalytics.umd.js.map +1 -1
- package/adobeanalytics/bundles/angulartics2-adobeanalytics.umd.min.js +1 -15
- package/adobeanalytics/bundles/angulartics2-adobeanalytics.umd.min.js.map +1 -1
- package/adobeanalytics/esm2015/adobeanalytics.js +7 -9
- package/adobeanalytics/esm2015/angulartics2-adobeanalytics.js +1 -1
- package/adobeanalytics/fesm2015/angulartics2-adobeanalytics.js +6 -7
- package/adobeanalytics/fesm2015/angulartics2-adobeanalytics.js.map +1 -1
- package/adobeanalytics/package.json +3 -5
- package/amplitude/bundles/angulartics2-amplitude.umd.js +12 -222
- package/amplitude/bundles/angulartics2-amplitude.umd.js.map +1 -1
- package/amplitude/bundles/angulartics2-amplitude.umd.min.js +1 -15
- package/amplitude/bundles/angulartics2-amplitude.umd.min.js.map +1 -1
- package/amplitude/esm2015/amplitude.js +7 -9
- package/amplitude/esm2015/angulartics2-amplitude.js +1 -1
- package/amplitude/fesm2015/angulartics2-amplitude.js +6 -7
- package/amplitude/fesm2015/angulartics2-amplitude.js.map +1 -1
- package/amplitude/package.json +3 -5
- package/appinsights/bundles/angulartics2-appinsights.umd.js +17 -227
- package/appinsights/bundles/angulartics2-appinsights.umd.js.map +1 -1
- package/appinsights/bundles/angulartics2-appinsights.umd.min.js +1 -15
- package/appinsights/bundles/angulartics2-appinsights.umd.min.js.map +1 -1
- package/appinsights/esm2015/angulartics2-appinsights.js +1 -1
- package/appinsights/esm2015/appinsights.js +8 -10
- package/appinsights/fesm2015/angulartics2-appinsights.js +6 -7
- package/appinsights/fesm2015/angulartics2-appinsights.js.map +1 -1
- package/appinsights/package.json +3 -5
- package/baidu/bundles/angulartics2-baidu.umd.js +12 -222
- package/baidu/bundles/angulartics2-baidu.umd.js.map +1 -1
- package/baidu/bundles/angulartics2-baidu.umd.min.js +1 -15
- package/baidu/bundles/angulartics2-baidu.umd.min.js.map +1 -1
- package/baidu/esm2015/angulartics2-baidu.js +1 -1
- package/baidu/esm2015/baidu.js +7 -9
- package/baidu/fesm2015/angulartics2-baidu.js +6 -7
- package/baidu/fesm2015/angulartics2-baidu.js.map +1 -1
- package/baidu/package.json +3 -5
- package/bundles/angulartics2.umd.js +355 -279
- package/bundles/angulartics2.umd.js.map +1 -1
- package/bundles/angulartics2.umd.min.js +12 -12
- package/bundles/angulartics2.umd.min.js.map +1 -1
- package/clicky/bundles/angulartics2-clicky.umd.js +13 -223
- package/clicky/bundles/angulartics2-clicky.umd.js.map +1 -1
- package/clicky/bundles/angulartics2-clicky.umd.min.js +1 -15
- package/clicky/bundles/angulartics2-clicky.umd.min.js.map +1 -1
- package/clicky/esm2015/angulartics2-clicky.js +1 -1
- package/clicky/esm2015/clicky.interfaces.js +1 -1
- package/clicky/esm2015/clicky.js +7 -9
- package/clicky/fesm2015/angulartics2-clicky.js +6 -7
- package/clicky/fesm2015/angulartics2-clicky.js.map +1 -1
- package/clicky/package.json +3 -5
- package/esm2015/angular-router.js +7 -9
- package/esm2015/angulartics2-config.js +1 -1
- package/esm2015/angulartics2-core.js +8 -11
- package/esm2015/angulartics2-interfaces.js +1 -1
- package/esm2015/angulartics2-token.js +1 -1
- package/esm2015/angulartics2.js +1 -1
- package/esm2015/angulartics2.module.js +10 -13
- package/esm2015/angulartics2On.js +22 -35
- package/esm2015/public_api.js +2 -1
- package/esm2015/routerless.js +1 -1
- package/facebook/bundles/angulartics2-facebook.umd.js +12 -222
- package/facebook/bundles/angulartics2-facebook.umd.js.map +1 -1
- package/facebook/bundles/angulartics2-facebook.umd.min.js +1 -15
- package/facebook/bundles/angulartics2-facebook.umd.min.js.map +1 -1
- package/facebook/esm2015/angulartics2-facebook.js +1 -1
- package/facebook/esm2015/facebook.js +7 -9
- package/facebook/fesm2015/angulartics2-facebook.js +6 -7
- package/facebook/fesm2015/angulartics2-facebook.js.map +1 -1
- package/facebook/package.json +3 -5
- package/fesm2015/angulartics2.js +42 -55
- package/fesm2015/angulartics2.js.map +1 -1
- package/ga/bundles/angulartics2-ga.umd.js +313 -222
- package/ga/bundles/angulartics2-ga.umd.js.map +1 -1
- package/ga/bundles/angulartics2-ga.umd.min.js +11 -11
- package/ga/bundles/angulartics2-ga.umd.min.js.map +1 -1
- package/ga/esm2015/angulartics2-ga.js +1 -1
- package/ga/esm2015/ga.js +8 -10
- package/ga/fesm2015/angulartics2-ga.js +6 -7
- package/ga/fesm2015/angulartics2-ga.js.map +1 -1
- package/ga/package.json +3 -5
- package/ga-enhanced-ecom/bundles/angulartics2-ga-enhanced-ecom.umd.js +9 -219
- package/ga-enhanced-ecom/bundles/angulartics2-ga-enhanced-ecom.umd.js.map +1 -1
- package/ga-enhanced-ecom/bundles/angulartics2-ga-enhanced-ecom.umd.min.js +1 -15
- package/ga-enhanced-ecom/bundles/angulartics2-ga-enhanced-ecom.umd.min.js.map +1 -1
- package/ga-enhanced-ecom/esm2015/angulartics2-ga-enhanced-ecom.js +1 -1
- package/ga-enhanced-ecom/esm2015/ga-enhanced-ecom-options.js +1 -1
- package/ga-enhanced-ecom/esm2015/ga-enhanced-ecom.js +6 -8
- package/ga-enhanced-ecom/fesm2015/angulartics2-ga-enhanced-ecom.js +5 -6
- package/ga-enhanced-ecom/fesm2015/angulartics2-ga-enhanced-ecom.js.map +1 -1
- package/ga-enhanced-ecom/package.json +3 -5
- package/gosquared/bundles/angulartics2-gosquared.umd.js +14 -228
- package/gosquared/bundles/angulartics2-gosquared.umd.js.map +1 -1
- package/gosquared/bundles/angulartics2-gosquared.umd.min.js +1 -15
- package/gosquared/bundles/angulartics2-gosquared.umd.min.js.map +1 -1
- package/gosquared/esm2015/angulartics2-gosquared.js +1 -1
- package/gosquared/esm2015/gosquared.js +7 -9
- package/gosquared/fesm2015/angulartics2-gosquared.js +6 -7
- package/gosquared/fesm2015/angulartics2-gosquared.js.map +1 -1
- package/gosquared/package.json +3 -5
- package/gst/bundles/angulartics2-gst.umd.js +316 -225
- package/gst/bundles/angulartics2-gst.umd.js.map +1 -1
- package/gst/bundles/angulartics2-gst.umd.min.js +11 -11
- package/gst/bundles/angulartics2-gst.umd.min.js.map +1 -1
- package/gst/esm2015/angulartics2-gst.js +1 -1
- package/gst/esm2015/gst-interfaces.js +1 -1
- package/gst/esm2015/gst.js +8 -10
- package/gst/fesm2015/angulartics2-gst.js +6 -7
- package/gst/fesm2015/angulartics2-gst.js.map +1 -1
- package/gst/package.json +3 -5
- package/gtm/bundles/angulartics2-gtm.umd.js +14 -224
- package/gtm/bundles/angulartics2-gtm.umd.js.map +1 -1
- package/gtm/bundles/angulartics2-gtm.umd.min.js +1 -15
- package/gtm/bundles/angulartics2-gtm.umd.min.js.map +1 -1
- package/gtm/esm2015/angulartics2-gtm.js +1 -1
- package/gtm/esm2015/gtm.js +8 -10
- package/gtm/fesm2015/angulartics2-gtm.js +6 -7
- package/gtm/fesm2015/angulartics2-gtm.js.map +1 -1
- package/gtm/package.json +3 -5
- package/hubspot/bundles/angulartics2-hubspot.umd.js +12 -222
- package/hubspot/bundles/angulartics2-hubspot.umd.js.map +1 -1
- package/hubspot/bundles/angulartics2-hubspot.umd.min.js +1 -15
- package/hubspot/bundles/angulartics2-hubspot.umd.min.js.map +1 -1
- package/hubspot/esm2015/angulartics2-hubspot.js +1 -1
- package/hubspot/esm2015/hubspot.js +7 -9
- package/hubspot/fesm2015/angulartics2-hubspot.js +6 -7
- package/hubspot/fesm2015/angulartics2-hubspot.js.map +1 -1
- package/hubspot/package.json +3 -5
- package/ibm-digital-analytics/bundles/angulartics2-ibm-digital-analytics.umd.js +12 -222
- package/ibm-digital-analytics/bundles/angulartics2-ibm-digital-analytics.umd.js.map +1 -1
- package/ibm-digital-analytics/bundles/angulartics2-ibm-digital-analytics.umd.min.js +1 -15
- package/ibm-digital-analytics/bundles/angulartics2-ibm-digital-analytics.umd.min.js.map +1 -1
- package/ibm-digital-analytics/esm2015/angulartics2-ibm-digital-analytics.js +1 -1
- package/ibm-digital-analytics/esm2015/ibm-digital-analytics.js +7 -9
- package/ibm-digital-analytics/fesm2015/angulartics2-ibm-digital-analytics.js +6 -7
- package/ibm-digital-analytics/fesm2015/angulartics2-ibm-digital-analytics.js.map +1 -1
- package/ibm-digital-analytics/package.json +3 -5
- package/intercom/bundles/angulartics2-intercom.umd.js +12 -222
- package/intercom/bundles/angulartics2-intercom.umd.js.map +1 -1
- package/intercom/bundles/angulartics2-intercom.umd.min.js +1 -15
- package/intercom/bundles/angulartics2-intercom.umd.min.js.map +1 -1
- package/intercom/esm2015/angulartics2-intercom.js +1 -1
- package/intercom/esm2015/intercom.js +7 -9
- package/intercom/fesm2015/angulartics2-intercom.js +6 -7
- package/intercom/fesm2015/angulartics2-intercom.js.map +1 -1
- package/intercom/package.json +3 -5
- package/kissmetrics/bundles/angulartics2-kissmetrics.umd.js +12 -222
- package/kissmetrics/bundles/angulartics2-kissmetrics.umd.js.map +1 -1
- package/kissmetrics/bundles/angulartics2-kissmetrics.umd.min.js +1 -15
- package/kissmetrics/bundles/angulartics2-kissmetrics.umd.min.js.map +1 -1
- package/kissmetrics/esm2015/angulartics2-kissmetrics.js +1 -1
- package/kissmetrics/esm2015/kissmetrics.js +7 -9
- package/kissmetrics/fesm2015/angulartics2-kissmetrics.js +6 -7
- package/kissmetrics/fesm2015/angulartics2-kissmetrics.js.map +1 -1
- package/kissmetrics/package.json +3 -5
- package/launch/bundles/angulartics2-launch.umd.js +12 -222
- package/launch/bundles/angulartics2-launch.umd.js.map +1 -1
- package/launch/bundles/angulartics2-launch.umd.min.js +1 -15
- package/launch/bundles/angulartics2-launch.umd.min.js.map +1 -1
- package/launch/esm2015/angulartics2-launch.js +1 -1
- package/launch/esm2015/launch.js +7 -9
- package/launch/fesm2015/angulartics2-launch.js +6 -7
- package/launch/fesm2015/angulartics2-launch.js.map +1 -1
- package/launch/package.json +3 -5
- package/{piwik → matomo}/README.md +20 -20
- package/{piwik/angulartics2-piwik.d.ts → matomo/angulartics2-matomo.d.ts} +1 -1
- package/matomo/angulartics2-matomo.metadata.json +1 -0
- package/matomo/bundles/angulartics2-matomo.umd.js +309 -0
- package/matomo/bundles/angulartics2-matomo.umd.js.map +1 -0
- package/matomo/bundles/angulartics2-matomo.umd.min.js +2 -0
- package/matomo/bundles/angulartics2-matomo.umd.min.js.map +1 -0
- package/matomo/esm2015/angulartics2-matomo.js +5 -0
- package/matomo/esm2015/matomo.js +294 -0
- package/{piwik/fesm2015/angulartics2-piwik.js → matomo/fesm2015/angulartics2-matomo.js} +74 -33
- package/matomo/fesm2015/angulartics2-matomo.js.map +1 -0
- package/matomo/matomo.d.ts +137 -0
- package/matomo/package.json +20 -0
- package/mixpanel/bundles/angulartics2-mixpanel.umd.js +12 -222
- package/mixpanel/bundles/angulartics2-mixpanel.umd.js.map +1 -1
- package/mixpanel/bundles/angulartics2-mixpanel.umd.min.js +1 -15
- package/mixpanel/bundles/angulartics2-mixpanel.umd.min.js.map +1 -1
- package/mixpanel/esm2015/angulartics2-mixpanel.js +1 -1
- package/mixpanel/esm2015/mixpanel.js +7 -9
- package/mixpanel/fesm2015/angulartics2-mixpanel.js +6 -7
- package/mixpanel/fesm2015/angulartics2-mixpanel.js.map +1 -1
- package/mixpanel/package.json +3 -5
- package/package.json +10 -10
- package/pyze/bundles/angulartics2-pyze.umd.js +12 -222
- package/pyze/bundles/angulartics2-pyze.umd.js.map +1 -1
- package/pyze/bundles/angulartics2-pyze.umd.min.js +1 -15
- package/pyze/bundles/angulartics2-pyze.umd.min.js.map +1 -1
- package/pyze/esm2015/angulartics2-pyze.js +1 -1
- package/pyze/esm2015/pyze.js +7 -9
- package/pyze/fesm2015/angulartics2-pyze.js +6 -7
- package/pyze/fesm2015/angulartics2-pyze.js.map +1 -1
- package/pyze/package.json +3 -5
- package/routerlessmodule/bundles/angulartics2-routerlessmodule.umd.js +10 -222
- package/routerlessmodule/bundles/angulartics2-routerlessmodule.umd.js.map +1 -1
- package/routerlessmodule/bundles/angulartics2-routerlessmodule.umd.min.js +1 -15
- package/routerlessmodule/bundles/angulartics2-routerlessmodule.umd.min.js.map +1 -1
- package/routerlessmodule/esm2015/angulartics2-routerlessmodule.js +1 -1
- package/routerlessmodule/esm2015/routerless.module.js +9 -12
- package/routerlessmodule/fesm2015/angulartics2-routerlessmodule.js +8 -10
- package/routerlessmodule/fesm2015/angulartics2-routerlessmodule.js.map +1 -1
- package/routerlessmodule/package.json +3 -5
- package/segment/angulartics2-segment.metadata.json +1 -1
- package/segment/bundles/angulartics2-segment.umd.js +20 -222
- package/segment/bundles/angulartics2-segment.umd.js.map +1 -1
- package/segment/bundles/angulartics2-segment.umd.min.js +1 -15
- package/segment/bundles/angulartics2-segment.umd.min.js.map +1 -1
- package/segment/esm2015/angulartics2-segment.js +1 -1
- package/segment/esm2015/segment.js +15 -9
- package/segment/fesm2015/angulartics2-segment.js +14 -7
- package/segment/fesm2015/angulartics2-segment.js.map +1 -1
- package/segment/package.json +3 -5
- package/segment/segment.d.ts +6 -0
- package/splunk/bundles/angulartics2-splunk.umd.js +12 -222
- package/splunk/bundles/angulartics2-splunk.umd.js.map +1 -1
- package/splunk/bundles/angulartics2-splunk.umd.min.js +1 -15
- package/splunk/bundles/angulartics2-splunk.umd.min.js.map +1 -1
- package/splunk/esm2015/angulartics2-splunk.js +1 -1
- package/splunk/esm2015/splunk.js +7 -9
- package/splunk/fesm2015/angulartics2-splunk.js +6 -7
- package/splunk/fesm2015/angulartics2-splunk.js.map +1 -1
- package/splunk/package.json +3 -5
- package/uiroutermodule/bundles/angulartics2-uiroutermodule.umd.js +19 -231
- package/uiroutermodule/bundles/angulartics2-uiroutermodule.umd.js.map +1 -1
- package/uiroutermodule/bundles/angulartics2-uiroutermodule.umd.min.js +1 -15
- package/uiroutermodule/bundles/angulartics2-uiroutermodule.umd.min.js.map +1 -1
- package/uiroutermodule/esm2015/angulartics2-uiroutermodule.js +1 -1
- package/uiroutermodule/esm2015/public_api.js +1 -1
- package/uiroutermodule/esm2015/uirouter.js +8 -10
- package/uiroutermodule/esm2015/uirouter.module.js +9 -12
- package/uiroutermodule/fesm2015/angulartics2-uiroutermodule.js +14 -16
- package/uiroutermodule/fesm2015/angulartics2-uiroutermodule.js.map +1 -1
- package/uiroutermodule/package.json +3 -5
- package/woopra/bundles/angulartics2-woopra.umd.js +12 -222
- package/woopra/bundles/angulartics2-woopra.umd.js.map +1 -1
- package/woopra/bundles/angulartics2-woopra.umd.min.js +1 -15
- package/woopra/bundles/angulartics2-woopra.umd.min.js.map +1 -1
- package/woopra/esm2015/angulartics2-woopra.js +1 -1
- package/woopra/esm2015/woopra.js +7 -9
- package/woopra/fesm2015/angulartics2-woopra.js +6 -7
- package/woopra/fesm2015/angulartics2-woopra.js.map +1 -1
- package/woopra/package.json +3 -5
- package/adobeanalytics/esm5/adobeanalytics.js +0 -108
- package/adobeanalytics/esm5/angulartics2-adobeanalytics.js +0 -5
- package/adobeanalytics/fesm5/angulartics2-adobeanalytics.js +0 -111
- package/adobeanalytics/fesm5/angulartics2-adobeanalytics.js.map +0 -1
- package/amplitude/esm5/amplitude.js +0 -78
- package/amplitude/esm5/angulartics2-amplitude.js +0 -5
- package/amplitude/fesm5/angulartics2-amplitude.js +0 -82
- package/amplitude/fesm5/angulartics2-amplitude.js.map +0 -1
- package/appinsights/esm5/angulartics2-appinsights.js +0 -5
- package/appinsights/esm5/appinsights.js +0 -129
- package/appinsights/fesm5/angulartics2-appinsights.js +0 -130
- package/appinsights/fesm5/angulartics2-appinsights.js.map +0 -1
- package/baidu/esm5/angulartics2-baidu.js +0 -5
- package/baidu/esm5/baidu.js +0 -88
- package/baidu/fesm5/angulartics2-baidu.js +0 -92
- package/baidu/fesm5/angulartics2-baidu.js.map +0 -1
- package/clicky/esm5/angulartics2-clicky.js +0 -5
- package/clicky/esm5/clicky.interfaces.js +0 -1
- package/clicky/esm5/clicky.js +0 -72
- package/clicky/fesm5/angulartics2-clicky.js +0 -75
- package/clicky/fesm5/angulartics2-clicky.js.map +0 -1
- package/esm5/angular-router.js +0 -39
- package/esm5/angulartics2-config.js +0 -21
- package/esm5/angulartics2-core.js +0 -109
- package/esm5/angulartics2-interfaces.js +0 -1
- package/esm5/angulartics2-token.js +0 -3
- package/esm5/angulartics2.js +0 -5
- package/esm5/angulartics2.module.js +0 -33
- package/esm5/angulartics2On.js +0 -73
- package/esm5/public_api.js +0 -8
- package/esm5/routerless.js +0 -14
- package/facebook/esm5/angulartics2-facebook.js +0 -5
- package/facebook/esm5/facebook.js +0 -52
- package/facebook/fesm5/angulartics2-facebook.js +0 -56
- package/facebook/fesm5/angulartics2-facebook.js.map +0 -1
- package/fesm5/angulartics2.js +0 -268
- package/fesm5/angulartics2.js.map +0 -1
- package/ga/esm5/angulartics2-ga.js +0 -5
- package/ga/esm5/ga.js +0 -289
- package/ga/fesm5/angulartics2-ga.js +0 -292
- package/ga/fesm5/angulartics2-ga.js.map +0 -1
- package/ga-enhanced-ecom/esm5/angulartics2-ga-enhanced-ecom.js +0 -5
- package/ga-enhanced-ecom/esm5/ga-enhanced-ecom-options.js +0 -6
- package/ga-enhanced-ecom/esm5/ga-enhanced-ecom.js +0 -35
- package/ga-enhanced-ecom/fesm5/angulartics2-ga-enhanced-ecom.js +0 -40
- package/ga-enhanced-ecom/fesm5/angulartics2-ga-enhanced-ecom.js.map +0 -1
- package/gosquared/esm5/angulartics2-gosquared.js +0 -5
- package/gosquared/esm5/gosquared.js +0 -66
- package/gosquared/fesm5/angulartics2-gosquared.js +0 -70
- package/gosquared/fesm5/angulartics2-gosquared.js.map +0 -1
- package/gst/esm5/angulartics2-gst.js +0 -5
- package/gst/esm5/gst-interfaces.js +0 -1
- package/gst/esm5/gst.js +0 -203
- package/gst/fesm5/angulartics2-gst.js +0 -206
- package/gst/fesm5/angulartics2-gst.js.map +0 -1
- package/gtm/esm5/angulartics2-gtm.js +0 -5
- package/gtm/esm5/gtm.js +0 -115
- package/gtm/fesm5/angulartics2-gtm.js +0 -118
- package/gtm/fesm5/angulartics2-gtm.js.map +0 -1
- package/hubspot/esm5/angulartics2-hubspot.js +0 -5
- package/hubspot/esm5/hubspot.js +0 -48
- package/hubspot/fesm5/angulartics2-hubspot.js +0 -52
- package/hubspot/fesm5/angulartics2-hubspot.js.map +0 -1
- package/ibm-digital-analytics/esm5/angulartics2-ibm-digital-analytics.js +0 -5
- package/ibm-digital-analytics/esm5/ibm-digital-analytics.js +0 -132
- package/ibm-digital-analytics/fesm5/angulartics2-ibm-digital-analytics.js +0 -136
- package/ibm-digital-analytics/fesm5/angulartics2-ibm-digital-analytics.js.map +0 -1
- package/intercom/esm5/angulartics2-intercom.js +0 -5
- package/intercom/esm5/intercom.js +0 -69
- package/intercom/fesm5/angulartics2-intercom.js +0 -73
- package/intercom/fesm5/angulartics2-intercom.js.map +0 -1
- package/kissmetrics/esm5/angulartics2-kissmetrics.js +0 -5
- package/kissmetrics/esm5/kissmetrics.js +0 -49
- package/kissmetrics/fesm5/angulartics2-kissmetrics.js +0 -53
- package/kissmetrics/fesm5/angulartics2-kissmetrics.js.map +0 -1
- package/launch/esm5/angulartics2-launch.js +0 -5
- package/launch/esm5/launch.js +0 -68
- package/launch/fesm5/angulartics2-launch.js +0 -72
- package/launch/fesm5/angulartics2-launch.js.map +0 -1
- package/mixpanel/esm5/angulartics2-mixpanel.js +0 -5
- package/mixpanel/esm5/mixpanel.js +0 -122
- package/mixpanel/fesm5/angulartics2-mixpanel.js +0 -126
- package/mixpanel/fesm5/angulartics2-mixpanel.js.map +0 -1
- package/piwik/angulartics2-piwik.metadata.json +0 -1
- package/piwik/bundles/angulartics2-piwik.umd.js +0 -478
- package/piwik/bundles/angulartics2-piwik.umd.js.map +0 -1
- package/piwik/bundles/angulartics2-piwik.umd.min.js +0 -16
- package/piwik/bundles/angulartics2-piwik.umd.min.js.map +0 -1
- package/piwik/esm2015/angulartics2-piwik.js +0 -5
- package/piwik/esm2015/piwik.js +0 -254
- package/piwik/esm5/angulartics2-piwik.js +0 -5
- package/piwik/esm5/piwik.js +0 -258
- package/piwik/fesm2015/angulartics2-piwik.js.map +0 -1
- package/piwik/fesm5/angulartics2-piwik.js +0 -262
- package/piwik/fesm5/angulartics2-piwik.js.map +0 -1
- package/piwik/package.json +0 -22
- package/piwik/piwik.d.ts +0 -27
- package/pyze/esm5/angulartics2-pyze.js +0 -5
- package/pyze/esm5/pyze.js +0 -72
- package/pyze/fesm5/angulartics2-pyze.js +0 -76
- package/pyze/fesm5/angulartics2-pyze.js.map +0 -1
- package/routerlessmodule/esm5/angulartics2-routerlessmodule.js +0 -5
- package/routerlessmodule/esm5/routerless.module.js +0 -28
- package/routerlessmodule/fesm5/angulartics2-routerlessmodule.js +0 -34
- package/routerlessmodule/fesm5/angulartics2-routerlessmodule.js.map +0 -1
- package/segment/esm5/angulartics2-segment.js +0 -5
- package/segment/esm5/segment.js +0 -102
- package/segment/fesm5/angulartics2-segment.js +0 -106
- package/segment/fesm5/angulartics2-segment.js.map +0 -1
- package/splunk/esm5/angulartics2-splunk.js +0 -5
- package/splunk/esm5/splunk.js +0 -52
- package/splunk/fesm5/angulartics2-splunk.js +0 -56
- package/splunk/fesm5/angulartics2-splunk.js.map +0 -1
- package/uiroutermodule/esm5/angulartics2-uiroutermodule.js +0 -5
- package/uiroutermodule/esm5/public_api.js +0 -3
- package/uiroutermodule/esm5/uirouter.js +0 -44
- package/uiroutermodule/esm5/uirouter.module.js +0 -29
- package/uiroutermodule/fesm5/angulartics2-uiroutermodule.js +0 -73
- package/uiroutermodule/fesm5/angulartics2-uiroutermodule.js.map +0 -1
- package/woopra/esm5/angulartics2-woopra.js +0 -5
- package/woopra/esm5/woopra.js +0 -69
- package/woopra/fesm5/angulartics2-woopra.js +0 -73
- package/woopra/fesm5/angulartics2-woopra.js.map +0 -1
package/gst/esm5/gst.js
DELETED
@@ -1,203 +0,0 @@
|
|
1
|
-
import { __assign, __decorate, __values } from "tslib";
|
2
|
-
import { Injectable } from '@angular/core';
|
3
|
-
import { Angulartics2, GoogleGlobalSiteTagSettings, UserTimings } from 'angulartics2';
|
4
|
-
import * as i0 from "@angular/core";
|
5
|
-
import * as i1 from "angulartics2";
|
6
|
-
var GoogleGlobalSiteTagDefaults = /** @class */ (function () {
|
7
|
-
function GoogleGlobalSiteTagDefaults() {
|
8
|
-
var _this = this;
|
9
|
-
this.trackingIds = [];
|
10
|
-
if (typeof ga !== 'undefined' && ga) {
|
11
|
-
// See: https://developers.google.com/analytics/devguides/collection/analyticsjs/ga-object-methods-reference
|
12
|
-
ga(function () {
|
13
|
-
ga.getAll().forEach(function (tracker) {
|
14
|
-
var id = tracker.get('trackingId');
|
15
|
-
// If set both in forRoot and HTML page, we want to avoid duplicates
|
16
|
-
if (id !== undefined && _this.trackingIds.indexOf(id) === -1) {
|
17
|
-
_this.trackingIds.push(id);
|
18
|
-
}
|
19
|
-
});
|
20
|
-
});
|
21
|
-
}
|
22
|
-
}
|
23
|
-
return GoogleGlobalSiteTagDefaults;
|
24
|
-
}());
|
25
|
-
export { GoogleGlobalSiteTagDefaults };
|
26
|
-
var Angulartics2GoogleGlobalSiteTag = /** @class */ (function () {
|
27
|
-
function Angulartics2GoogleGlobalSiteTag(angulartics2) {
|
28
|
-
this.angulartics2 = angulartics2;
|
29
|
-
this.dimensionsAndMetrics = {};
|
30
|
-
var defaults = new GoogleGlobalSiteTagDefaults();
|
31
|
-
// Set the default settings for this module
|
32
|
-
this.angulartics2.settings.gst = __assign(__assign({}, defaults), this.angulartics2.settings.gst);
|
33
|
-
}
|
34
|
-
Angulartics2GoogleGlobalSiteTag.prototype.startTracking = function () {
|
35
|
-
var _this = this;
|
36
|
-
this.angulartics2.pageTrack
|
37
|
-
.pipe(this.angulartics2.filterDeveloperMode())
|
38
|
-
.subscribe(function (x) { return _this.pageTrack(x.path); });
|
39
|
-
this.angulartics2.eventTrack
|
40
|
-
.pipe(this.angulartics2.filterDeveloperMode())
|
41
|
-
.subscribe(function (x) { return _this.eventTrack(x.action, x.properties); });
|
42
|
-
this.angulartics2.exceptionTrack
|
43
|
-
.pipe(this.angulartics2.filterDeveloperMode())
|
44
|
-
.subscribe(function (x) { return _this.exceptionTrack(x); });
|
45
|
-
this.angulartics2.userTimings
|
46
|
-
.pipe(this.angulartics2.filterDeveloperMode())
|
47
|
-
.subscribe(function (x) { return _this.userTimings(_this.convertTimings(x)); });
|
48
|
-
this.angulartics2.setUsername
|
49
|
-
.pipe(this.angulartics2.filterDeveloperMode())
|
50
|
-
.subscribe(function (x) { return _this.setUsername(x); });
|
51
|
-
this.angulartics2.setUserProperties
|
52
|
-
.pipe(this.angulartics2.filterDeveloperMode())
|
53
|
-
.subscribe(function (x) { return _this.setUserProperties(x); });
|
54
|
-
};
|
55
|
-
/**
|
56
|
-
* Manually track page view, see:
|
57
|
-
*
|
58
|
-
* https://developers.google.com/analytics/devguides/collection/gtagjs/single-page-applications#tracking_virtual_pageviews
|
59
|
-
*
|
60
|
-
* @param path relative url
|
61
|
-
*/
|
62
|
-
Angulartics2GoogleGlobalSiteTag.prototype.pageTrack = function (path) {
|
63
|
-
var e_1, _a;
|
64
|
-
if (typeof gtag !== 'undefined' && gtag) {
|
65
|
-
var params = __assign({ page_path: path, page_location: window.location.protocol + '//' + window.location.host + path }, this.dimensionsAndMetrics);
|
66
|
-
// Custom map must be reset with all config to stay valid.
|
67
|
-
if (this.angulartics2.settings.gst.customMap) {
|
68
|
-
params.custom_map = this.angulartics2.settings.gst.customMap;
|
69
|
-
}
|
70
|
-
if (this.angulartics2.settings.gst.userId) {
|
71
|
-
params.user_id = this.angulartics2.settings.gst.userId;
|
72
|
-
}
|
73
|
-
if (this.angulartics2.settings.gst.anonymizeIp) {
|
74
|
-
params.anonymize_ip = this.angulartics2.settings.gst.anonymizeIp;
|
75
|
-
}
|
76
|
-
try {
|
77
|
-
for (var _b = __values(this.angulartics2.settings.gst.trackingIds), _c = _b.next(); !_c.done; _c = _b.next()) {
|
78
|
-
var id = _c.value;
|
79
|
-
gtag('config', id, params);
|
80
|
-
}
|
81
|
-
}
|
82
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
83
|
-
finally {
|
84
|
-
try {
|
85
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
86
|
-
}
|
87
|
-
finally { if (e_1) throw e_1.error; }
|
88
|
-
}
|
89
|
-
}
|
90
|
-
};
|
91
|
-
/**
|
92
|
-
* Send interactions to gtag, i.e. for event tracking in Google Analytics. See:
|
93
|
-
*
|
94
|
-
* https://developers.google.com/analytics/devguides/collection/gtagjs/events
|
95
|
-
*
|
96
|
-
* @param action associated with the event
|
97
|
-
*/
|
98
|
-
Angulartics2GoogleGlobalSiteTag.prototype.eventTrack = function (action, properties) {
|
99
|
-
if (properties === void 0) { properties = {}; }
|
100
|
-
this.eventTrackInternal(action, __assign({ event_category: properties.category || 'interaction', event_label: properties.label, value: properties.value, non_interaction: properties.noninteraction }, properties.gstCustom));
|
101
|
-
};
|
102
|
-
/**
|
103
|
-
* Exception Track Event in GST. See:
|
104
|
-
*
|
105
|
-
* https://developers.google.com/analytics/devguides/collection/gtagjs/exceptions
|
106
|
-
*
|
107
|
-
*/
|
108
|
-
Angulartics2GoogleGlobalSiteTag.prototype.exceptionTrack = function (properties) {
|
109
|
-
// TODO: make interface
|
110
|
-
// @param {Object} properties
|
111
|
-
// @param {string} [properties.description]
|
112
|
-
// @param {boolean} [properties.fatal]
|
113
|
-
if (properties.fatal === undefined) {
|
114
|
-
console.log('No "fatal" provided, sending with fatal=true');
|
115
|
-
properties.fatal = true;
|
116
|
-
}
|
117
|
-
properties.exDescription = properties.event ? properties.event.stack : properties.description;
|
118
|
-
this.eventTrack('exception', {
|
119
|
-
gstCustom: __assign({ description: properties.exDescription, fatal: properties.fatal }, properties.gstCustom)
|
120
|
-
});
|
121
|
-
};
|
122
|
-
/**
|
123
|
-
* User Timings Event in GST.
|
124
|
-
*
|
125
|
-
* @param properties Comprised of the mandatory fields:
|
126
|
-
* - name (string)
|
127
|
-
* - value (number - integer)
|
128
|
-
* Properties can also have the optional fields:
|
129
|
-
* - category (string)
|
130
|
-
* - label (string)
|
131
|
-
*
|
132
|
-
* @link https://developers.google.com/analytics/devguides/collection/gtagjs/user-timings
|
133
|
-
*/
|
134
|
-
Angulartics2GoogleGlobalSiteTag.prototype.userTimings = function (properties) {
|
135
|
-
if (!properties) {
|
136
|
-
console.error('User timings - "properties" parameter is required to be set.');
|
137
|
-
return;
|
138
|
-
}
|
139
|
-
this.eventTrackInternal('timing_complete', {
|
140
|
-
name: properties.name,
|
141
|
-
value: properties.value,
|
142
|
-
event_category: properties.category,
|
143
|
-
event_label: properties.label
|
144
|
-
});
|
145
|
-
};
|
146
|
-
Angulartics2GoogleGlobalSiteTag.prototype.convertTimings = function (properties) {
|
147
|
-
return {
|
148
|
-
name: properties.timingVar,
|
149
|
-
value: properties.timingValue,
|
150
|
-
category: properties.timingCategory,
|
151
|
-
label: properties.timingLabel
|
152
|
-
};
|
153
|
-
};
|
154
|
-
Angulartics2GoogleGlobalSiteTag.prototype.setUsername = function (userId) {
|
155
|
-
this.angulartics2.settings.gst.userId = userId;
|
156
|
-
if (typeof gtag !== 'undefined' && gtag) {
|
157
|
-
gtag('set', { user_id: typeof userId === 'string' || !userId ? userId : userId.userId });
|
158
|
-
}
|
159
|
-
};
|
160
|
-
Angulartics2GoogleGlobalSiteTag.prototype.setUserProperties = function (properties) {
|
161
|
-
this.setDimensionsAndMetrics(properties);
|
162
|
-
};
|
163
|
-
Angulartics2GoogleGlobalSiteTag.prototype.setDimensionsAndMetrics = function (properties) {
|
164
|
-
var _this = this;
|
165
|
-
// We want the dimensions and metrics to accumulate, so we merge with previous value
|
166
|
-
this.dimensionsAndMetrics = __assign(__assign({}, this.dimensionsAndMetrics), properties);
|
167
|
-
// Remove properties that are null or undefined
|
168
|
-
Object.keys(this.dimensionsAndMetrics).forEach(function (key) {
|
169
|
-
var val = _this.dimensionsAndMetrics[key];
|
170
|
-
if (val === undefined || val === null) {
|
171
|
-
delete _this.dimensionsAndMetrics[key];
|
172
|
-
}
|
173
|
-
});
|
174
|
-
if (typeof gtag !== 'undefined' && gtag) {
|
175
|
-
gtag('set', this.dimensionsAndMetrics);
|
176
|
-
}
|
177
|
-
};
|
178
|
-
Angulartics2GoogleGlobalSiteTag.prototype.eventTrackInternal = function (action, properties) {
|
179
|
-
if (properties === void 0) { properties = {}; }
|
180
|
-
this.cleanProperties(properties);
|
181
|
-
if (typeof gtag !== 'undefined' && gtag) {
|
182
|
-
gtag('event', action, properties);
|
183
|
-
}
|
184
|
-
};
|
185
|
-
Angulartics2GoogleGlobalSiteTag.prototype.cleanProperties = function (properties) {
|
186
|
-
// GA requires that eventValue be an non-negative integer, see:
|
187
|
-
// https://developers.google.com/analytics/devguides/collection/gtagjs/events
|
188
|
-
if (properties.value) {
|
189
|
-
var parsed = parseInt(properties.value, 10);
|
190
|
-
properties.value = isNaN(parsed) ? 0 : parsed;
|
191
|
-
}
|
192
|
-
};
|
193
|
-
Angulartics2GoogleGlobalSiteTag.ctorParameters = function () { return [
|
194
|
-
{ type: Angulartics2 }
|
195
|
-
]; };
|
196
|
-
Angulartics2GoogleGlobalSiteTag.ɵprov = i0.ɵɵdefineInjectable({ factory: function Angulartics2GoogleGlobalSiteTag_Factory() { return new Angulartics2GoogleGlobalSiteTag(i0.ɵɵinject(i1.Angulartics2)); }, token: Angulartics2GoogleGlobalSiteTag, providedIn: "root" });
|
197
|
-
Angulartics2GoogleGlobalSiteTag = __decorate([
|
198
|
-
Injectable({ providedIn: 'root' })
|
199
|
-
], Angulartics2GoogleGlobalSiteTag);
|
200
|
-
return Angulartics2GoogleGlobalSiteTag;
|
201
|
-
}());
|
202
|
-
export { Angulartics2GoogleGlobalSiteTag };
|
203
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3N0LmpzIiwic291cmNlUm9vdCI6Im5nOi8vYW5ndWxhcnRpY3MyL2dzdC8iLCJzb3VyY2VzIjpbImdzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLDJCQUEyQixFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7O0FBTXRGO0lBR0U7UUFBQSxpQkFhQztRQWZELGdCQUFXLEdBQWEsRUFBRSxDQUFDO1FBR3pCLElBQUksT0FBTyxFQUFFLEtBQUssV0FBVyxJQUFJLEVBQUUsRUFBRTtZQUNuQyw0R0FBNEc7WUFDNUcsRUFBRSxDQUFDO2dCQUNELEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBQyxPQUFZO29CQUMvQixJQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUNyQyxvRUFBb0U7b0JBQ3BFLElBQUksRUFBRSxLQUFLLFNBQVMsSUFBSSxLQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTt3QkFDM0QsS0FBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7cUJBQzNCO2dCQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFDSCxrQ0FBQztBQUFELENBQUMsQUFqQkQsSUFpQkM7O0FBR0Q7SUFHRSx5Q0FBc0IsWUFBMEI7UUFBMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFGeEMseUJBQW9CLEdBQTJCLEVBQUUsQ0FBQztRQUd4RCxJQUFNLFFBQVEsR0FBRyxJQUFJLDJCQUEyQixFQUFFLENBQUM7UUFDbkQsMkNBQTJDO1FBQzNDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcseUJBQVEsUUFBUSxHQUFLLElBQUks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UUFDL0QsNkVBQTZFO1FBQzdFLElBQUksVUFBVSxDQUFDLEtBQUssRUFBRTtZQUNwQixJQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM5QyxVQUFVLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7U0FDL0M7SUFDSCxDQUFDOztnQkF4TG1DLFlBQVk7OztJQUhyQywrQkFBK0I7UUFEM0MsVUFBVSxDQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDO09BQ3RCLCtCQUErQixDQTRMM0M7MENBeE5EO0NBd05DLEFBNUxELElBNExDO1NBNUxZLCtCQUErQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQW5ndWxhcnRpY3MyLCBHb29nbGVHbG9iYWxTaXRlVGFnU2V0dGluZ3MsIFVzZXJUaW1pbmdzIH0gZnJvbSAnYW5ndWxhcnRpY3MyJztcbmltcG9ydCB7IEV2ZW50R3N0LCBVc2VyVGltaW5nc0dzdCB9IGZyb20gJy4vZ3N0LWludGVyZmFjZXMnO1xuXG5kZWNsYXJlIHZhciBndGFnOiBhbnk7XG5kZWNsYXJlIHZhciBnYTogYW55O1xuXG5leHBvcnQgY2xhc3MgR29vZ2xlR2xvYmFsU2l0ZVRhZ0RlZmF1bHRzIGltcGxlbWVudHMgR29vZ2xlR2xvYmFsU2l0ZVRhZ1NldHRpbmdzIHtcbiAgdHJhY2tpbmdJZHM6IHN0cmluZ1tdID0gW107XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKHR5cGVvZiBnYSAhPT0gJ3VuZGVmaW5lZCcgJiYgZ2EpIHtcbiAgICAgIC8vIFNlZTogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vYW5hbHl0aWNzL2Rldmd1aWRlcy9jb2xsZWN0aW9uL2FuYWx5dGljc2pzL2dhLW9iamVjdC1tZXRob2RzLXJlZmVyZW5jZVxuICAgICAgZ2EoKCkgPT4ge1xuICAgICAgICBnYS5nZXRBbGwoKS5mb3JFYWNoKCh0cmFja2VyOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBpZCA9IHRyYWNrZXIuZ2V0KCd0cmFja2luZ0lkJyk7XG4gICAgICAgICAgLy8gSWYgc2V0IGJvdGggaW4gZm9yUm9vdCBhbmQgSFRNTCBwYWdlLCB3ZSB3YW50IHRvIGF2b2lkIGR1cGxpY2F0ZXNcbiAgICAgICAgICBpZiAoaWQgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnRyYWNraW5nSWRzLmluZGV4T2YoaWQpID09PSAtMSkge1xuICAgICAgICAgICAgdGhpcy50cmFja2luZ0lkcy5wdXNoKGlkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQW5ndWxhcnRpY3MyR29vZ2xlR2xvYmFsU2l0ZVRhZyB7XG4gIHByaXZhdGUgZGltZW5zaW9uc0FuZE1ldHJpY3M6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgYW5ndWxhcnRpY3MyOiBBbmd1bGFydGljczIpIHtcbiAgICBjb25zdCBkZWZhdWx0cyA9IG5ldyBHb29nbGVHbG9iYWxTaXRlVGFnRGVmYXVsdHMoKTtcbiAgICAvLyBTZXQgdGhlIGRlZmF1bHQgc2V0dGluZ3MgZm9yIHRoaXMgbW9kdWxlXG4gICAgdGhpcy5hbmd1bGFydGljczIuc2V0dGluZ3MuZ3N0ID0geyAuLi5kZWZhdWx0cywgLi4udGhpcy5hbmd1bGFydGljczIuc2V0dGluZ3MuZ3N0IH07XG4gIH1cblxuICBzdGFydFRyYWNraW5nKCk6IHZvaWQge1xuICAgIHRoaXMuYW5ndWxhcnRpY3MyLnBhZ2VUcmFja1xuICAgICAgLnBpcGUodGhpcy5hbmd1bGFydGljczIuZmlsdGVyRGV2ZWxvcGVyTW9kZSgpKVxuICAgICAgLnN1YnNjcmliZSgoeCkgPT4gdGhpcy5wYWdlVHJhY2soeC5wYXRoKSk7XG4gICAgdGhpcy5hbmd1bGFydGljczIuZXZlbnRUcmFja1xuICAgICAgLnBpcGUodGhpcy5hbmd1bGFydGljczIuZmlsdGVyRGV2ZWxvcGVyTW9kZSgpKVxuICAgICAgLnN1YnNjcmliZSgoeCkgPT4gdGhpcy5ldmVudFRyYWNrKHguYWN0aW9uLCB4LnByb3BlcnRpZXMpKTtcbiAgICB0aGlzLmFuZ3VsYXJ0aWNzMi5leGNlcHRpb25UcmFja1xuICAgICAgLnBpcGUodGhpcy5hbmd1bGFydGljczIuZmlsdGVyRGV2ZWxvcGVyTW9kZSgpKVxuICAgICAgLnN1YnNjcmliZSgoeDogYW55KSA9PiB0aGlzLmV4Y2VwdGlvblRyYWNrKHgpKTtcbiAgICB0aGlzLmFuZ3VsYXJ0aWNzMi51c2VyVGltaW5nc1xuICAgICAgLnBpcGUodGhpcy5hbmd1bGFydGljczIuZmlsdGVyRGV2ZWxvcGVyTW9kZSgpKVxuICAgICAgLnN1YnNjcmliZSh4ID0+IHRoaXMudXNlclRpbWluZ3ModGhpcy5jb252ZXJ0VGltaW5ncyh4KSkpO1xuICAgIHRoaXMuYW5ndWxhcnRpY3MyLnNldFVzZXJuYW1lXG4gICAgICAucGlwZSh0aGlzLmFuZ3VsYXJ0aWNzMi5maWx0ZXJEZXZlbG9wZXJNb2RlKCkpXG4gICAgICAuc3Vic2NyaWJlKCh4OiBzdHJpbmcpID0+IHRoaXMuc2V0VXNlcm5hbWUoeCkpO1xuICAgIHRoaXMuYW5ndWxhcnRpY3MyLnNldFVzZXJQcm9wZXJ0aWVzXG4gICAgICAucGlwZSh0aGlzLmFuZ3VsYXJ0aWNzMi5maWx0ZXJEZXZlbG9wZXJNb2RlKCkpXG4gICAgICAuc3Vic2NyaWJlKCh4OiBhbnkpID0+IHRoaXMuc2V0VXNlclByb3BlcnRpZXMoeCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hbnVhbGx5IHRyYWNrIHBhZ2Ugdmlldywgc2VlOlxuICAgKlxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9hbmFseXRpY3MvZGV2Z3VpZGVzL2NvbGxlY3Rpb24vZ3RhZ2pzL3NpbmdsZS1wYWdlLWFwcGxpY2F0aW9ucyN0cmFja2luZ192aXJ0dWFsX3BhZ2V2aWV3c1xuICAgKlxuICAgKiBAcGFyYW0gcGF0aCByZWxhdGl2ZSB1cmxcbiAgICovXG4gIHBhZ2VUcmFjayhwYXRoOiBzdHJpbmcpIHtcbiAgICBpZiAodHlwZW9mIGd0YWcgIT09ICd1bmRlZmluZWQnICYmIGd0YWcpIHtcbiAgICAgIGNvbnN0IHBhcmFtczogYW55ID0ge1xuICAgICAgICBwYWdlX3BhdGg6IHBhdGgsXG4gICAgICAgIHBhZ2VfbG9jYXRpb246IHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCArICcvLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdCArIHBhdGgsXG4gICAgICAgIC4uLnRoaXMuZGltZW5zaW9uc0FuZE1ldHJpY3NcbiAgICAgIH07XG5cbiAgICAgIC8vIEN1c3RvbSBtYXAgbXVzdCBiZSByZXNldCB3aXRoIGFsbCBjb25maWcgdG8gc3RheSB2YWxpZC5cblxuICAgICAgaWYgKHRoaXMuYW5ndWxhcnRpY3MyLnNldHRpbmdzLmdzdC5jdXN0b21NYXApIHtcbiAgICAgICAgcGFyYW1zLmN1c3RvbV9tYXAgPSB0aGlzLmFuZ3VsYXJ0aWNzMi5zZXR0aW5ncy5nc3QuY3VzdG9tTWFwO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuYW5ndWxhcnRpY3MyLnNldHRpbmdzLmdzdC51c2VySWQpIHtcbiAgICAgICAgcGFyYW1zLnVzZXJfaWQgPSB0aGlzLmFuZ3VsYXJ0aWNzMi5zZXR0aW5ncy5nc3QudXNlcklkO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuYW5ndWxhcnRpY3MyLnNldHRpbmdzLmdzdC5hbm9ueW1pemVJcCkge1xuICAgICAgICBwYXJhbXMuYW5vbnltaXplX2lwID0gdGhpcy5hbmd1bGFydGljczIuc2V0dGluZ3MuZ3N0LmFub255bWl6ZUlwO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IGlkIG9mIHRoaXMuYW5ndWxhcnRpY3MyLnNldHRpbmdzLmdzdC50cmFja2luZ0lkcykge1xuICAgICAgICBndGFnKCdjb25maWcnLCBpZCwgcGFyYW1zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2VuZCBpbnRlcmFjdGlvbnMgdG8gZ3RhZywgaS5lLiBmb3IgZXZlbnQgdHJhY2tpbmcgaW4gR29vZ2xlIEFuYWx5dGljcy4gU2VlOlxuICAgKlxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9hbmFseXRpY3MvZGV2Z3VpZGVzL2NvbGxlY3Rpb24vZ3RhZ2pzL2V2ZW50c1xuICAgKlxuICAgKiBAcGFyYW0gYWN0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXZlbnRcbiAgICovXG4gIGV2ZW50VHJhY2soYWN0aW9uOiBzdHJpbmcsIHByb3BlcnRpZXM6IFBhcnRpYWw8RXZlbnRHc3Q+ID0ge30pIHtcbiAgICB0aGlzLmV2ZW50VHJhY2tJbnRlcm5hbChhY3Rpb24sIHtcbiAgICAgIGV2ZW50X2NhdGVnb3J5OiBwcm9wZXJ0aWVzLmNhdGVnb3J5IHx8ICdpbnRlcmFjdGlvbicsXG4gICAgICBldmVudF9sYWJlbDogcHJvcGVydGllcy5sYWJlbCxcbiAgICAgIHZhbHVlOiBwcm9wZXJ0aWVzLnZhbHVlLFxuICAgICAgbm9uX2ludGVyYWN0aW9uOiBwcm9wZXJ0aWVzLm5vbmludGVyYWN0aW9uLFxuICAgICAgLi4ucHJvcGVydGllcy5nc3RDdXN0b21cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGNlcHRpb24gVHJhY2sgRXZlbnQgaW4gR1NULiBTZWU6XG4gICAqXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL2FuYWx5dGljcy9kZXZndWlkZXMvY29sbGVjdGlvbi9ndGFnanMvZXhjZXB0aW9uc1xuICAgKlxuICAgKi9cbiAgZXhjZXB0aW9uVHJhY2socHJvcGVydGllczogYW55KSB7XG4gICAgLy8gVE9ETzogbWFrZSBpbnRlcmZhY2VcbiAgICAvLyAgQHBhcmFtIHtPYmplY3R9IHByb3BlcnRpZXNcbiAgICAvLyAgQHBhcmFtIHtzdHJpbmd9IFtwcm9wZXJ0aWVzLmRlc2NyaXB0aW9uXVxuICAgIC8vICBAcGFyYW0ge2Jvb2xlYW59IFtwcm9wZXJ0aWVzLmZhdGFsXVxuICAgIGlmIChwcm9wZXJ0aWVzLmZhdGFsID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdObyBcImZhdGFsXCIgcHJvdmlkZWQsIHNlbmRpbmcgd2l0aCBmYXRhbD10cnVlJyk7XG4gICAgICBwcm9wZXJ0aWVzLmZhdGFsID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcm9wZXJ0aWVzLmV4RGVzY3JpcHRpb24gPSBwcm9wZXJ0aWVzLmV2ZW50ID8gcHJvcGVydGllcy5ldmVudC5zdGFjayA6IHByb3BlcnRpZXMuZGVzY3JpcHRpb247XG5cbiAgICB0aGlzLmV2ZW50VHJhY2soJ2V4Y2VwdGlvbicsIHtcbiAgICAgIGdzdEN1c3RvbToge1xuICAgICAgICBkZXNjcmlwdGlvbjogcHJvcGVydGllcy5leERlc2NyaXB0aW9uLFxuICAgICAgICBmYXRhbDogcHJvcGVydGllcy5mYXRhbCxcbiAgICAgICAgLi4ucHJvcGVydGllcy5nc3RDdXN0b21cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VyIFRpbWluZ3MgRXZlbnQgaW4gR1NULlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcGVydGllcyBDb21wcmlzZWQgb2YgdGhlIG1hbmRhdG9yeSBmaWVsZHM6XG4gICAqICAtIG5hbWUgKHN0cmluZylcbiAgICogIC0gdmFsdWUgKG51bWJlciAtIGludGVnZXIpXG4gICAqIFByb3BlcnRpZXMgY2FuIGFsc28gaGF2ZSB0aGUgb3B0aW9uYWwgZmllbGRzOlxuICAgKiAgLSBjYXRlZ29yeSAoc3RyaW5nKVxuICAgKiAgLSBsYWJlbCAoc3RyaW5nKVxuICAgKlxuICAgKiBAbGluayBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9hbmFseXRpY3MvZGV2Z3VpZGVzL2NvbGxlY3Rpb24vZ3RhZ2pzL3VzZXItdGltaW5nc1xuICAgKi9cbiAgdXNlclRpbWluZ3MocHJvcGVydGllczogVXNlclRpbWluZ3NHc3QpIHtcbiAgICBpZiAoIXByb3BlcnRpZXMpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1VzZXIgdGltaW5ncyAtIFwicHJvcGVydGllc1wiIHBhcmFtZXRlciBpcyByZXF1aXJlZCB0byBiZSBzZXQuJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5ldmVudFRyYWNrSW50ZXJuYWwoJ3RpbWluZ19jb21wbGV0ZScsIHtcbiAgICAgIG5hbWU6IHByb3BlcnRpZXMubmFtZSxcbiAgICAgIHZhbHVlOiBwcm9wZXJ0aWVzLnZhbHVlLFxuICAgICAgZXZlbnRfY2F0ZWdvcnk6IHByb3BlcnRpZXMuY2F0ZWdvcnksXG4gICAgICBldmVudF9sYWJlbDogcHJvcGVydGllcy5sYWJlbFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0VGltaW5ncyhwcm9wZXJ0aWVzOiBVc2VyVGltaW5ncyk6IFVzZXJUaW1pbmdzR3N0IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogcHJvcGVydGllcy50aW1pbmdWYXIsXG4gICAgICB2YWx1ZTogcHJvcGVydGllcy50aW1pbmdWYWx1ZSxcbiAgICAgIGNhdGVnb3J5OiBwcm9wZXJ0aWVzLnRpbWluZ0NhdGVnb3J5LFxuICAgICAgbGFiZWw6IHByb3BlcnRpZXMudGltaW5nTGFiZWxcbiAgICB9O1xuICB9XG5cbiAgc2V0VXNlcm5hbWUodXNlcklkOiBzdHJpbmcgfCB7IHVzZXJJZDogc3RyaW5nIHwgbnVtYmVyIH0pIHtcbiAgICB0aGlzLmFuZ3VsYXJ0aWNzMi5zZXR0aW5ncy5nc3QudXNlcklkID0gdXNlcklkO1xuICAgIGlmICh0eXBlb2YgZ3RhZyAhPT0gJ3VuZGVmaW5lZCcgJiYgZ3RhZykge1xuICAgICAgZ3RhZygnc2V0JywgeyB1c2VyX2lkOiB0eXBlb2YgdXNlcklkID09PSAnc3RyaW5nJyB8fCAhdXNlcklkID8gdXNlcklkIDogdXNlcklkLnVzZXJJZCB9KTtcbiAgICB9XG4gIH1cblxuICBzZXRVc2VyUHJvcGVydGllcyhwcm9wZXJ0aWVzOiBhbnkpIHtcbiAgICB0aGlzLnNldERpbWVuc2lvbnNBbmRNZXRyaWNzKHByb3BlcnRpZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXREaW1lbnNpb25zQW5kTWV0cmljcyhwcm9wZXJ0aWVzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XG4gICAgLy8gV2Ugd2FudCB0aGUgZGltZW5zaW9ucyBhbmQgbWV0cmljcyB0byBhY2N1bXVsYXRlLCBzbyB3ZSBtZXJnZSB3aXRoIHByZXZpb3VzIHZhbHVlXG4gICAgdGhpcy5kaW1lbnNpb25zQW5kTWV0cmljcyA9IHtcbiAgICAgIC4uLnRoaXMuZGltZW5zaW9uc0FuZE1ldHJpY3MsXG4gICAgICAuLi5wcm9wZXJ0aWVzXG4gICAgfTtcblxuICAgIC8vIFJlbW92ZSBwcm9wZXJ0aWVzIHRoYXQgYXJlIG51bGwgb3IgdW5kZWZpbmVkXG4gICAgT2JqZWN0LmtleXModGhpcy5kaW1lbnNpb25zQW5kTWV0cmljcykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gdGhpcy5kaW1lbnNpb25zQW5kTWV0cmljc1trZXldO1xuICAgICAgaWYgKHZhbCA9PT0gdW5kZWZpbmVkIHx8IHZhbCA9PT0gbnVsbCkge1xuICAgICAgICBkZWxldGUgdGhpcy5kaW1lbnNpb25zQW5kTWV0cmljc1trZXldO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHR5cGVvZiBndGFnICE9PSAndW5kZWZpbmVkJyAmJiBndGFnKSB7XG4gICAgICBndGFnKCdzZXQnLCB0aGlzLmRpbWVuc2lvbnNBbmRNZXRyaWNzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGV2ZW50VHJhY2tJbnRlcm5hbChhY3Rpb246IHN0cmluZywgcHJvcGVydGllczogYW55ID0ge30pIHtcbiAgICB0aGlzLmNsZWFuUHJvcGVydGllcyhwcm9wZXJ0aWVzKTtcbiAgICBpZiAodHlwZW9mIGd0YWcgIT09ICd1bmRlZmluZWQnICYmIGd0YWcpIHtcbiAgICAgIGd0YWcoJ2V2ZW50JywgYWN0aW9uLCBwcm9wZXJ0aWVzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsZWFuUHJvcGVydGllcyhwcm9wZXJ0aWVzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KTogdm9pZCB7XG4gICAgLy8gR0EgcmVxdWlyZXMgdGhhdCBldmVudFZhbHVlIGJlIGFuIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyLCBzZWU6XG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vYW5hbHl0aWNzL2Rldmd1aWRlcy9jb2xsZWN0aW9uL2d0YWdqcy9ldmVudHNcbiAgICBpZiAocHJvcGVydGllcy52YWx1ZSkge1xuICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2VJbnQocHJvcGVydGllcy52YWx1ZSwgMTApO1xuICAgICAgcHJvcGVydGllcy52YWx1ZSA9IGlzTmFOKHBhcnNlZCkgPyAwIDogcGFyc2VkO1xuICAgIH1cbiAgfVxufVxuIl19
|
@@ -1,206 +0,0 @@
|
|
1
|
-
import { __assign, __values, __decorate } from 'tslib';
|
2
|
-
import { ɵɵdefineInjectable, ɵɵinject, Injectable } from '@angular/core';
|
3
|
-
import { Angulartics2 } from 'angulartics2';
|
4
|
-
|
5
|
-
var GoogleGlobalSiteTagDefaults = /** @class */ (function () {
|
6
|
-
function GoogleGlobalSiteTagDefaults() {
|
7
|
-
var _this = this;
|
8
|
-
this.trackingIds = [];
|
9
|
-
if (typeof ga !== 'undefined' && ga) {
|
10
|
-
// See: https://developers.google.com/analytics/devguides/collection/analyticsjs/ga-object-methods-reference
|
11
|
-
ga(function () {
|
12
|
-
ga.getAll().forEach(function (tracker) {
|
13
|
-
var id = tracker.get('trackingId');
|
14
|
-
// If set both in forRoot and HTML page, we want to avoid duplicates
|
15
|
-
if (id !== undefined && _this.trackingIds.indexOf(id) === -1) {
|
16
|
-
_this.trackingIds.push(id);
|
17
|
-
}
|
18
|
-
});
|
19
|
-
});
|
20
|
-
}
|
21
|
-
}
|
22
|
-
return GoogleGlobalSiteTagDefaults;
|
23
|
-
}());
|
24
|
-
var Angulartics2GoogleGlobalSiteTag = /** @class */ (function () {
|
25
|
-
function Angulartics2GoogleGlobalSiteTag(angulartics2) {
|
26
|
-
this.angulartics2 = angulartics2;
|
27
|
-
this.dimensionsAndMetrics = {};
|
28
|
-
var defaults = new GoogleGlobalSiteTagDefaults();
|
29
|
-
// Set the default settings for this module
|
30
|
-
this.angulartics2.settings.gst = __assign(__assign({}, defaults), this.angulartics2.settings.gst);
|
31
|
-
}
|
32
|
-
Angulartics2GoogleGlobalSiteTag.prototype.startTracking = function () {
|
33
|
-
var _this = this;
|
34
|
-
this.angulartics2.pageTrack
|
35
|
-
.pipe(this.angulartics2.filterDeveloperMode())
|
36
|
-
.subscribe(function (x) { return _this.pageTrack(x.path); });
|
37
|
-
this.angulartics2.eventTrack
|
38
|
-
.pipe(this.angulartics2.filterDeveloperMode())
|
39
|
-
.subscribe(function (x) { return _this.eventTrack(x.action, x.properties); });
|
40
|
-
this.angulartics2.exceptionTrack
|
41
|
-
.pipe(this.angulartics2.filterDeveloperMode())
|
42
|
-
.subscribe(function (x) { return _this.exceptionTrack(x); });
|
43
|
-
this.angulartics2.userTimings
|
44
|
-
.pipe(this.angulartics2.filterDeveloperMode())
|
45
|
-
.subscribe(function (x) { return _this.userTimings(_this.convertTimings(x)); });
|
46
|
-
this.angulartics2.setUsername
|
47
|
-
.pipe(this.angulartics2.filterDeveloperMode())
|
48
|
-
.subscribe(function (x) { return _this.setUsername(x); });
|
49
|
-
this.angulartics2.setUserProperties
|
50
|
-
.pipe(this.angulartics2.filterDeveloperMode())
|
51
|
-
.subscribe(function (x) { return _this.setUserProperties(x); });
|
52
|
-
};
|
53
|
-
/**
|
54
|
-
* Manually track page view, see:
|
55
|
-
*
|
56
|
-
* https://developers.google.com/analytics/devguides/collection/gtagjs/single-page-applications#tracking_virtual_pageviews
|
57
|
-
*
|
58
|
-
* @param path relative url
|
59
|
-
*/
|
60
|
-
Angulartics2GoogleGlobalSiteTag.prototype.pageTrack = function (path) {
|
61
|
-
var e_1, _a;
|
62
|
-
if (typeof gtag !== 'undefined' && gtag) {
|
63
|
-
var params = __assign({ page_path: path, page_location: window.location.protocol + '//' + window.location.host + path }, this.dimensionsAndMetrics);
|
64
|
-
// Custom map must be reset with all config to stay valid.
|
65
|
-
if (this.angulartics2.settings.gst.customMap) {
|
66
|
-
params.custom_map = this.angulartics2.settings.gst.customMap;
|
67
|
-
}
|
68
|
-
if (this.angulartics2.settings.gst.userId) {
|
69
|
-
params.user_id = this.angulartics2.settings.gst.userId;
|
70
|
-
}
|
71
|
-
if (this.angulartics2.settings.gst.anonymizeIp) {
|
72
|
-
params.anonymize_ip = this.angulartics2.settings.gst.anonymizeIp;
|
73
|
-
}
|
74
|
-
try {
|
75
|
-
for (var _b = __values(this.angulartics2.settings.gst.trackingIds), _c = _b.next(); !_c.done; _c = _b.next()) {
|
76
|
-
var id = _c.value;
|
77
|
-
gtag('config', id, params);
|
78
|
-
}
|
79
|
-
}
|
80
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
81
|
-
finally {
|
82
|
-
try {
|
83
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
84
|
-
}
|
85
|
-
finally { if (e_1) throw e_1.error; }
|
86
|
-
}
|
87
|
-
}
|
88
|
-
};
|
89
|
-
/**
|
90
|
-
* Send interactions to gtag, i.e. for event tracking in Google Analytics. See:
|
91
|
-
*
|
92
|
-
* https://developers.google.com/analytics/devguides/collection/gtagjs/events
|
93
|
-
*
|
94
|
-
* @param action associated with the event
|
95
|
-
*/
|
96
|
-
Angulartics2GoogleGlobalSiteTag.prototype.eventTrack = function (action, properties) {
|
97
|
-
if (properties === void 0) { properties = {}; }
|
98
|
-
this.eventTrackInternal(action, __assign({ event_category: properties.category || 'interaction', event_label: properties.label, value: properties.value, non_interaction: properties.noninteraction }, properties.gstCustom));
|
99
|
-
};
|
100
|
-
/**
|
101
|
-
* Exception Track Event in GST. See:
|
102
|
-
*
|
103
|
-
* https://developers.google.com/analytics/devguides/collection/gtagjs/exceptions
|
104
|
-
*
|
105
|
-
*/
|
106
|
-
Angulartics2GoogleGlobalSiteTag.prototype.exceptionTrack = function (properties) {
|
107
|
-
// TODO: make interface
|
108
|
-
// @param {Object} properties
|
109
|
-
// @param {string} [properties.description]
|
110
|
-
// @param {boolean} [properties.fatal]
|
111
|
-
if (properties.fatal === undefined) {
|
112
|
-
console.log('No "fatal" provided, sending with fatal=true');
|
113
|
-
properties.fatal = true;
|
114
|
-
}
|
115
|
-
properties.exDescription = properties.event ? properties.event.stack : properties.description;
|
116
|
-
this.eventTrack('exception', {
|
117
|
-
gstCustom: __assign({ description: properties.exDescription, fatal: properties.fatal }, properties.gstCustom)
|
118
|
-
});
|
119
|
-
};
|
120
|
-
/**
|
121
|
-
* User Timings Event in GST.
|
122
|
-
*
|
123
|
-
* @param properties Comprised of the mandatory fields:
|
124
|
-
* - name (string)
|
125
|
-
* - value (number - integer)
|
126
|
-
* Properties can also have the optional fields:
|
127
|
-
* - category (string)
|
128
|
-
* - label (string)
|
129
|
-
*
|
130
|
-
* @link https://developers.google.com/analytics/devguides/collection/gtagjs/user-timings
|
131
|
-
*/
|
132
|
-
Angulartics2GoogleGlobalSiteTag.prototype.userTimings = function (properties) {
|
133
|
-
if (!properties) {
|
134
|
-
console.error('User timings - "properties" parameter is required to be set.');
|
135
|
-
return;
|
136
|
-
}
|
137
|
-
this.eventTrackInternal('timing_complete', {
|
138
|
-
name: properties.name,
|
139
|
-
value: properties.value,
|
140
|
-
event_category: properties.category,
|
141
|
-
event_label: properties.label
|
142
|
-
});
|
143
|
-
};
|
144
|
-
Angulartics2GoogleGlobalSiteTag.prototype.convertTimings = function (properties) {
|
145
|
-
return {
|
146
|
-
name: properties.timingVar,
|
147
|
-
value: properties.timingValue,
|
148
|
-
category: properties.timingCategory,
|
149
|
-
label: properties.timingLabel
|
150
|
-
};
|
151
|
-
};
|
152
|
-
Angulartics2GoogleGlobalSiteTag.prototype.setUsername = function (userId) {
|
153
|
-
this.angulartics2.settings.gst.userId = userId;
|
154
|
-
if (typeof gtag !== 'undefined' && gtag) {
|
155
|
-
gtag('set', { user_id: typeof userId === 'string' || !userId ? userId : userId.userId });
|
156
|
-
}
|
157
|
-
};
|
158
|
-
Angulartics2GoogleGlobalSiteTag.prototype.setUserProperties = function (properties) {
|
159
|
-
this.setDimensionsAndMetrics(properties);
|
160
|
-
};
|
161
|
-
Angulartics2GoogleGlobalSiteTag.prototype.setDimensionsAndMetrics = function (properties) {
|
162
|
-
var _this = this;
|
163
|
-
// We want the dimensions and metrics to accumulate, so we merge with previous value
|
164
|
-
this.dimensionsAndMetrics = __assign(__assign({}, this.dimensionsAndMetrics), properties);
|
165
|
-
// Remove properties that are null or undefined
|
166
|
-
Object.keys(this.dimensionsAndMetrics).forEach(function (key) {
|
167
|
-
var val = _this.dimensionsAndMetrics[key];
|
168
|
-
if (val === undefined || val === null) {
|
169
|
-
delete _this.dimensionsAndMetrics[key];
|
170
|
-
}
|
171
|
-
});
|
172
|
-
if (typeof gtag !== 'undefined' && gtag) {
|
173
|
-
gtag('set', this.dimensionsAndMetrics);
|
174
|
-
}
|
175
|
-
};
|
176
|
-
Angulartics2GoogleGlobalSiteTag.prototype.eventTrackInternal = function (action, properties) {
|
177
|
-
if (properties === void 0) { properties = {}; }
|
178
|
-
this.cleanProperties(properties);
|
179
|
-
if (typeof gtag !== 'undefined' && gtag) {
|
180
|
-
gtag('event', action, properties);
|
181
|
-
}
|
182
|
-
};
|
183
|
-
Angulartics2GoogleGlobalSiteTag.prototype.cleanProperties = function (properties) {
|
184
|
-
// GA requires that eventValue be an non-negative integer, see:
|
185
|
-
// https://developers.google.com/analytics/devguides/collection/gtagjs/events
|
186
|
-
if (properties.value) {
|
187
|
-
var parsed = parseInt(properties.value, 10);
|
188
|
-
properties.value = isNaN(parsed) ? 0 : parsed;
|
189
|
-
}
|
190
|
-
};
|
191
|
-
Angulartics2GoogleGlobalSiteTag.ctorParameters = function () { return [
|
192
|
-
{ type: Angulartics2 }
|
193
|
-
]; };
|
194
|
-
Angulartics2GoogleGlobalSiteTag.ɵprov = ɵɵdefineInjectable({ factory: function Angulartics2GoogleGlobalSiteTag_Factory() { return new Angulartics2GoogleGlobalSiteTag(ɵɵinject(Angulartics2)); }, token: Angulartics2GoogleGlobalSiteTag, providedIn: "root" });
|
195
|
-
Angulartics2GoogleGlobalSiteTag = __decorate([
|
196
|
-
Injectable({ providedIn: 'root' })
|
197
|
-
], Angulartics2GoogleGlobalSiteTag);
|
198
|
-
return Angulartics2GoogleGlobalSiteTag;
|
199
|
-
}());
|
200
|
-
|
201
|
-
/**
|
202
|
-
* Generated bundle index. Do not edit.
|
203
|
-
*/
|
204
|
-
|
205
|
-
export { Angulartics2GoogleGlobalSiteTag, GoogleGlobalSiteTagDefaults };
|
206
|
-
//# sourceMappingURL=angulartics2-gst.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"angulartics2-gst.js","sources":["ng://angulartics2/gst/gst.ts","ng://angulartics2/gst/angulartics2-gst.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { Angulartics2, GoogleGlobalSiteTagSettings, UserTimings } from 'angulartics2';\nimport { EventGst, UserTimingsGst } from './gst-interfaces';\n\ndeclare var gtag: any;\ndeclare var ga: any;\n\nexport class GoogleGlobalSiteTagDefaults implements GoogleGlobalSiteTagSettings {\n trackingIds: string[] = [];\n\n constructor() {\n if (typeof ga !== 'undefined' && ga) {\n // See: https://developers.google.com/analytics/devguides/collection/analyticsjs/ga-object-methods-reference\n ga(() => {\n ga.getAll().forEach((tracker: any) => {\n const id = tracker.get('trackingId');\n // If set both in forRoot and HTML page, we want to avoid duplicates\n if (id !== undefined && this.trackingIds.indexOf(id) === -1) {\n this.trackingIds.push(id);\n }\n });\n });\n }\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class Angulartics2GoogleGlobalSiteTag {\n private dimensionsAndMetrics: { [key: string]: any } = {};\n\n constructor(protected angulartics2: Angulartics2) {\n const defaults = new GoogleGlobalSiteTagDefaults();\n // Set the default settings for this module\n this.angulartics2.settings.gst = { ...defaults, ...this.angulartics2.settings.gst };\n }\n\n startTracking(): void {\n this.angulartics2.pageTrack\n .pipe(this.angulartics2.filterDeveloperMode())\n .subscribe((x) => this.pageTrack(x.path));\n this.angulartics2.eventTrack\n .pipe(this.angulartics2.filterDeveloperMode())\n .subscribe((x) => this.eventTrack(x.action, x.properties));\n this.angulartics2.exceptionTrack\n .pipe(this.angulartics2.filterDeveloperMode())\n .subscribe((x: any) => this.exceptionTrack(x));\n this.angulartics2.userTimings\n .pipe(this.angulartics2.filterDeveloperMode())\n .subscribe(x => this.userTimings(this.convertTimings(x)));\n this.angulartics2.setUsername\n .pipe(this.angulartics2.filterDeveloperMode())\n .subscribe((x: string) => this.setUsername(x));\n this.angulartics2.setUserProperties\n .pipe(this.angulartics2.filterDeveloperMode())\n .subscribe((x: any) => this.setUserProperties(x));\n }\n\n /**\n * Manually track page view, see:\n *\n * https://developers.google.com/analytics/devguides/collection/gtagjs/single-page-applications#tracking_virtual_pageviews\n *\n * @param path relative url\n */\n pageTrack(path: string) {\n if (typeof gtag !== 'undefined' && gtag) {\n const params: any = {\n page_path: path,\n page_location: window.location.protocol + '//' + window.location.host + path,\n ...this.dimensionsAndMetrics\n };\n\n // Custom map must be reset with all config to stay valid.\n\n if (this.angulartics2.settings.gst.customMap) {\n params.custom_map = this.angulartics2.settings.gst.customMap;\n }\n if (this.angulartics2.settings.gst.userId) {\n params.user_id = this.angulartics2.settings.gst.userId;\n }\n if (this.angulartics2.settings.gst.anonymizeIp) {\n params.anonymize_ip = this.angulartics2.settings.gst.anonymizeIp;\n }\n\n for (const id of this.angulartics2.settings.gst.trackingIds) {\n gtag('config', id, params);\n }\n }\n }\n\n /**\n * Send interactions to gtag, i.e. for event tracking in Google Analytics. See:\n *\n * https://developers.google.com/analytics/devguides/collection/gtagjs/events\n *\n * @param action associated with the event\n */\n eventTrack(action: string, properties: Partial<EventGst> = {}) {\n this.eventTrackInternal(action, {\n event_category: properties.category || 'interaction',\n event_label: properties.label,\n value: properties.value,\n non_interaction: properties.noninteraction,\n ...properties.gstCustom\n });\n }\n\n /**\n * Exception Track Event in GST. See:\n *\n * https://developers.google.com/analytics/devguides/collection/gtagjs/exceptions\n *\n */\n exceptionTrack(properties: any) {\n // TODO: make interface\n // @param {Object} properties\n // @param {string} [properties.description]\n // @param {boolean} [properties.fatal]\n if (properties.fatal === undefined) {\n console.log('No \"fatal\" provided, sending with fatal=true');\n properties.fatal = true;\n }\n\n properties.exDescription = properties.event ? properties.event.stack : properties.description;\n\n this.eventTrack('exception', {\n gstCustom: {\n description: properties.exDescription,\n fatal: properties.fatal,\n ...properties.gstCustom\n }\n });\n }\n\n /**\n * User Timings Event in GST.\n *\n * @param properties Comprised of the mandatory fields:\n * - name (string)\n * - value (number - integer)\n * Properties can also have the optional fields:\n * - category (string)\n * - label (string)\n *\n * @link https://developers.google.com/analytics/devguides/collection/gtagjs/user-timings\n */\n userTimings(properties: UserTimingsGst) {\n if (!properties) {\n console.error('User timings - \"properties\" parameter is required to be set.');\n return;\n }\n\n this.eventTrackInternal('timing_complete', {\n name: properties.name,\n value: properties.value,\n event_category: properties.category,\n event_label: properties.label\n });\n }\n\n private convertTimings(properties: UserTimings): UserTimingsGst {\n return {\n name: properties.timingVar,\n value: properties.timingValue,\n category: properties.timingCategory,\n label: properties.timingLabel\n };\n }\n\n setUsername(userId: string | { userId: string | number }) {\n this.angulartics2.settings.gst.userId = userId;\n if (typeof gtag !== 'undefined' && gtag) {\n gtag('set', { user_id: typeof userId === 'string' || !userId ? userId : userId.userId });\n }\n }\n\n setUserProperties(properties: any) {\n this.setDimensionsAndMetrics(properties);\n }\n\n private setDimensionsAndMetrics(properties: { [key: string]: any }) {\n // We want the dimensions and metrics to accumulate, so we merge with previous value\n this.dimensionsAndMetrics = {\n ...this.dimensionsAndMetrics,\n ...properties\n };\n\n // Remove properties that are null or undefined\n Object.keys(this.dimensionsAndMetrics).forEach(key => {\n const val = this.dimensionsAndMetrics[key];\n if (val === undefined || val === null) {\n delete this.dimensionsAndMetrics[key];\n }\n });\n\n if (typeof gtag !== 'undefined' && gtag) {\n gtag('set', this.dimensionsAndMetrics);\n }\n }\n\n private eventTrackInternal(action: string, properties: any = {}) {\n this.cleanProperties(properties);\n if (typeof gtag !== 'undefined' && gtag) {\n gtag('event', action, properties);\n }\n }\n\n private cleanProperties(properties: { [key: string]: any }): void {\n // GA requires that eventValue be an non-negative integer, see:\n // https://developers.google.com/analytics/devguides/collection/gtagjs/events\n if (properties.value) {\n const parsed = parseInt(properties.value, 10);\n properties.value = isNaN(parsed) ? 0 : parsed;\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './gst';\n"],"names":[],"mappings":"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"}
|
@@ -1,5 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Generated bundle index. Do not edit.
|
3
|
-
*/
|
4
|
-
export * from './gtm';
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhcnRpY3MyLWd0bS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXJ0aWNzMi9ndG0vIiwic291cmNlcyI6WyJhbmd1bGFydGljczItZ3RtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vZ3RtJztcbiJdfQ==
|
package/gtm/esm5/gtm.js
DELETED
@@ -1,115 +0,0 @@
|
|
1
|
-
import { __assign, __decorate } from "tslib";
|
2
|
-
import { Injectable } from '@angular/core';
|
3
|
-
import { Angulartics2, GoogleTagManagerSettings } from 'angulartics2';
|
4
|
-
import * as i0 from "@angular/core";
|
5
|
-
import * as i1 from "angulartics2";
|
6
|
-
var GoogleTagManagerDefaults = /** @class */ (function () {
|
7
|
-
function GoogleTagManagerDefaults() {
|
8
|
-
this.userId = null;
|
9
|
-
}
|
10
|
-
return GoogleTagManagerDefaults;
|
11
|
-
}());
|
12
|
-
export { GoogleTagManagerDefaults };
|
13
|
-
var Angulartics2GoogleTagManager = /** @class */ (function () {
|
14
|
-
function Angulartics2GoogleTagManager(angulartics2) {
|
15
|
-
var _this = this;
|
16
|
-
this.angulartics2 = angulartics2;
|
17
|
-
// The dataLayer needs to be initialized
|
18
|
-
if (typeof dataLayer !== 'undefined' && dataLayer) {
|
19
|
-
dataLayer = window.dataLayer = window.dataLayer || [];
|
20
|
-
}
|
21
|
-
var defaults = new GoogleTagManagerDefaults();
|
22
|
-
// Set the default settings for this module
|
23
|
-
this.angulartics2.settings.gtm = __assign(__assign({}, defaults), this.angulartics2.settings.gtm);
|
24
|
-
this.angulartics2.setUsername
|
25
|
-
.subscribe(function (x) { return _this.setUsername(x); });
|
26
|
-
}
|
27
|
-
Angulartics2GoogleTagManager.prototype.startTracking = function () {
|
28
|
-
var _this = this;
|
29
|
-
this.angulartics2.pageTrack
|
30
|
-
.pipe(this.angulartics2.filterDeveloperMode())
|
31
|
-
.subscribe(function (x) { return _this.pageTrack(x.path); });
|
32
|
-
this.angulartics2.eventTrack
|
33
|
-
.pipe(this.angulartics2.filterDeveloperMode())
|
34
|
-
.subscribe(function (x) { return _this.eventTrack(x.action, x.properties); });
|
35
|
-
this.angulartics2.exceptionTrack
|
36
|
-
.pipe(this.angulartics2.filterDeveloperMode())
|
37
|
-
.subscribe(function (x) { return _this.exceptionTrack(x); });
|
38
|
-
};
|
39
|
-
Angulartics2GoogleTagManager.prototype.pageTrack = function (path) {
|
40
|
-
this.pushLayer({
|
41
|
-
event: 'Page View',
|
42
|
-
'content-name': path,
|
43
|
-
userId: this.angulartics2.settings.gtm.userId
|
44
|
-
});
|
45
|
-
};
|
46
|
-
/**
|
47
|
-
* Send Data Layer
|
48
|
-
*
|
49
|
-
* @layer data layer object
|
50
|
-
*/
|
51
|
-
Angulartics2GoogleTagManager.prototype.pushLayer = function (layer) {
|
52
|
-
if (typeof dataLayer !== 'undefined' && dataLayer) {
|
53
|
-
dataLayer.push(layer);
|
54
|
-
}
|
55
|
-
};
|
56
|
-
/**
|
57
|
-
* Send interactions to the dataLayer, i.e. for event tracking in Google Analytics
|
58
|
-
*
|
59
|
-
* @param action associated with the event
|
60
|
-
*/
|
61
|
-
Angulartics2GoogleTagManager.prototype.eventTrack = function (action, properties) {
|
62
|
-
// TODO: make interface
|
63
|
-
// @param {string} properties.category
|
64
|
-
// @param {string} [properties.label]
|
65
|
-
// @param {number} [properties.value]
|
66
|
-
// @param {boolean} [properties.noninteraction]
|
67
|
-
// Set a default GTM category
|
68
|
-
properties = properties || {};
|
69
|
-
this.pushLayer(__assign({ event: properties.event || 'interaction', target: properties.category || 'Event', action: action, label: properties.label, value: properties.value, interactionType: properties.noninteraction, userId: this.angulartics2.settings.gtm.userId }, properties.gtmCustom));
|
70
|
-
};
|
71
|
-
/**
|
72
|
-
* Exception Track Event in GTM
|
73
|
-
*
|
74
|
-
*/
|
75
|
-
Angulartics2GoogleTagManager.prototype.exceptionTrack = function (properties) {
|
76
|
-
// TODO: make interface
|
77
|
-
// @param {Object} properties
|
78
|
-
// @param {string} properties.appId
|
79
|
-
// @param {string} properties.appName
|
80
|
-
// @param {string} properties.appVersion
|
81
|
-
// @param {string} [properties.description]
|
82
|
-
// @param {boolean} [properties.fatal]
|
83
|
-
if (!properties || !properties.appId || !properties.appName || !properties.appVersion) {
|
84
|
-
console.error('Must be setted appId, appName and appVersion.');
|
85
|
-
return;
|
86
|
-
}
|
87
|
-
if (properties.fatal === undefined) {
|
88
|
-
console.log('No "fatal" provided, sending with fatal=true');
|
89
|
-
properties.exFatal = true;
|
90
|
-
}
|
91
|
-
properties.exDescription = properties.event ? properties.event.stack : properties.description;
|
92
|
-
this.eventTrack("Exception thrown for " + properties.appName + " <" + properties.appId + "@" + properties.appVersion + ">", {
|
93
|
-
category: 'Exception',
|
94
|
-
label: properties.exDescription,
|
95
|
-
});
|
96
|
-
};
|
97
|
-
/**
|
98
|
-
* Set userId for use with Universal Analytics User ID feature
|
99
|
-
*
|
100
|
-
* @param userId used to identify user cross-device in Google Analytics
|
101
|
-
*/
|
102
|
-
Angulartics2GoogleTagManager.prototype.setUsername = function (userId) {
|
103
|
-
this.angulartics2.settings.gtm.userId = userId;
|
104
|
-
};
|
105
|
-
Angulartics2GoogleTagManager.ctorParameters = function () { return [
|
106
|
-
{ type: Angulartics2 }
|
107
|
-
]; };
|
108
|
-
Angulartics2GoogleTagManager.ɵprov = i0.ɵɵdefineInjectable({ factory: function Angulartics2GoogleTagManager_Factory() { return new Angulartics2GoogleTagManager(i0.ɵɵinject(i1.Angulartics2)); }, token: Angulartics2GoogleTagManager, providedIn: "root" });
|
109
|
-
Angulartics2GoogleTagManager = __decorate([
|
110
|
-
Injectable({ providedIn: 'root' })
|
111
|
-
], Angulartics2GoogleTagManager);
|
112
|
-
return Angulartics2GoogleTagManager;
|
113
|
-
}());
|
114
|
-
export { Angulartics2GoogleTagManager };
|
115
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3RtLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYW5ndWxhcnRpY3MyL2d0bS8iLCJzb3VyY2VzIjpbImd0bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLHdCQUF3QixFQUFFLE1BQU0sY0FBYyxDQUFDOzs7QUFJdEU7SUFBQTtRQUNFLFdBQU0sR0FBRyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUFELCtCQUFDO0FBQUQsQ0FBQyxBQUZELElBRUM7O0FBR0Q7SUFFRSxzQ0FDWSxZQUEwQjtRQUR0QyxpQkFZQztRQVhXLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBRXBDLHdDQUF3QztRQUN4QyxJQUFJLE9BQU8sU0FBUyxLQUFLLFdBQVcsSUFBSSxTQUFTLEVBQUU7WUFDakQsU0FBUyxHQUFJLE1BQWMsQ0FBQyxTQUFTLEdBQUksTUFBYyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7U0FDekU7UUFDRCxJQUFNLFFBQVEsR0FBRyxJQUFJLHdCQUF3QixFQUFFLENBQUM7UUFDaEQsMkNBQTJDO1FBQzNDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcseUJBQVEsUUFBUSxHQUFLLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBRSxDQUFDO1FBQ3BGLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVzthQUMxQixTQUFTLENBQUMsVUFBQyxDQUFTLElBQUssT0FBQSxLQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFuQixDQUFtQixDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELG9EQUFhLEdBQWI7UUFBQSxpQkFVQztRQVRDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUzthQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2FBQzdDLFNBQVMsQ0FBQyxVQUFDLENBQUMs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VUFBVSxDQUFDLDBCQUF3QixVQUFVLENBQUMsT0FBTyxVQUFLLFVBQVUsQ0FBQyxLQUFLLFNBQUksVUFBVSxDQUFDLFVBQVUsTUFBRyxFQUFFO1lBQzNHLFFBQVEsRUFBRSxXQUFXO1lBQ3JCLEtBQUssRUFBRSxVQUFVLENBQUMsYUFBYTtTQUNoQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGtEQUFXLEdBQVgsVUFBWSxNQUFjO1FBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ2pELENBQUM7O2dCQTNHeUIsWUFBWTs7O0lBSDNCLDRCQUE0QjtRQUR4QyxVQUFVLENBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUM7T0FDdEIsNEJBQTRCLENBK0d4Qzt1Q0ExSEQ7Q0EwSEMsQUEvR0QsSUErR0M7U0EvR1ksNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBbmd1bGFydGljczIsIEdvb2dsZVRhZ01hbmFnZXJTZXR0aW5ncyB9IGZyb20gJ2FuZ3VsYXJ0aWNzMic7XG5cbmRlY2xhcmUgdmFyIGRhdGFMYXllcjogYW55O1xuXG5leHBvcnQgY2xhc3MgR29vZ2xlVGFnTWFuYWdlckRlZmF1bHRzIGltcGxlbWVudHMgR29vZ2xlVGFnTWFuYWdlclNldHRpbmdzIHtcbiAgdXNlcklkID0gbnVsbDtcbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBbmd1bGFydGljczJHb29nbGVUYWdNYW5hZ2VyIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgYW5ndWxhcnRpY3MyOiBBbmd1bGFydGljczIsXG4gICkge1xuICAgIC8vIFRoZSBkYXRhTGF5ZXIgbmVlZHMgdG8gYmUgaW5pdGlhbGl6ZWRcbiAgICBpZiAodHlwZW9mIGRhdGFMYXllciAhPT0gJ3VuZGVmaW5lZCcgJiYgZGF0YUxheWVyKSB7XG4gICAgICBkYXRhTGF5ZXIgPSAod2luZG93IGFzIGFueSkuZGF0YUxheWVyID0gKHdpbmRvdyBhcyBhbnkpLmRhdGFMYXllciB8fCBbXTtcbiAgICB9XG4gICAgY29uc3QgZGVmYXVsdHMgPSBuZXcgR29vZ2xlVGFnTWFuYWdlckRlZmF1bHRzKCk7XG4gICAgLy8gU2V0IHRoZSBkZWZhdWx0IHNldHRpbmdzIGZvciB0aGlzIG1vZHVsZVxuICAgIHRoaXMuYW5ndWxhcnRpY3MyLnNldHRpbmdzLmd0bSA9IHsgLi4uZGVmYXVsdHMsIC4uLnRoaXMuYW5ndWxhcnRpY3MyLnNldHRpbmdzLmd0bSB9O1xuICAgIHRoaXMuYW5ndWxhcnRpY3MyLnNldFVzZXJuYW1lXG4gICAgICAuc3Vic2NyaWJlKCh4OiBzdHJpbmcpID0+IHRoaXMuc2V0VXNlcm5hbWUoeCkpO1xuICB9XG5cbiAgc3RhcnRUcmFja2luZygpIHtcbiAgICB0aGlzLmFuZ3VsYXJ0aWNzMi5wYWdlVHJhY2tcbiAgICAgIC5waXBlKHRoaXMuYW5ndWxhcnRpY3MyLmZpbHRlckRldmVsb3Blck1vZGUoKSlcbiAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHRoaXMucGFnZVRyYWNrKHgucGF0aCkpO1xuICAgIHRoaXMuYW5ndWxhcnRpY3MyLmV2ZW50VHJhY2tcbiAgICAgIC5waXBlKHRoaXMuYW5ndWxhcnRpY3MyLmZpbHRlckRldmVsb3Blck1vZGUoKSlcbiAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHRoaXMuZXZlbnRUcmFjayh4LmFjdGlvbiwgeC5wcm9wZXJ0aWVzKSk7XG4gICAgdGhpcy5hbmd1bGFydGljczIuZXhjZXB0aW9uVHJhY2tcbiAgICAgIC5waXBlKHRoaXMuYW5ndWxhcnRpY3MyLmZpbHRlckRldmVsb3Blck1vZGUoKSlcbiAgICAgIC5zdWJzY3JpYmUoKHg6IGFueSkgPT4gdGhpcy5leGNlcHRpb25UcmFjayh4KSk7XG4gIH1cblxuICBwYWdlVHJhY2socGF0aDogc3RyaW5nKSB7XG4gICAgdGhpcy5wdXNoTGF5ZXIoe1xuICAgICAgZXZlbnQ6ICdQYWdlIFZpZXcnLFxuICAgICAgJ2NvbnRlbnQtbmFtZSc6IHBhdGgsXG4gICAgICB1c2VySWQ6IHRoaXMuYW5ndWxhcnRpY3MyLnNldHRpbmdzLmd0bS51c2VySWRcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZW5kIERhdGEgTGF5ZXJcbiAgICpcbiAgICogQGxheWVyIGRhdGEgbGF5ZXIgb2JqZWN0XG4gICAqL1xuICBwdXNoTGF5ZXIobGF5ZXI6IGFueSkge1xuICAgIGlmICh0eXBlb2YgZGF0YUxheWVyICE9PSAndW5kZWZpbmVkJyAmJiBkYXRhTGF5ZXIpIHtcbiAgICAgIGRhdGFMYXllci5wdXNoKGxheWVyKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2VuZCBpbnRlcmFjdGlvbnMgdG8gdGhlIGRhdGFMYXllciwgaS5lLiBmb3IgZXZlbnQgdHJhY2tpbmcgaW4gR29vZ2xlIEFuYWx5dGljc1xuICAgKlxuICAgKiBAcGFyYW0gYWN0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXZlbnRcbiAgICovXG4gIGV2ZW50VHJhY2soYWN0aW9uOiBzdHJpbmcsIHByb3BlcnRpZXM6IGFueSkge1xuICAgIC8vIFRPRE86IG1ha2UgaW50ZXJmYWNlXG4gICAgLy8gIEBwYXJhbSB7c3RyaW5nfSBwcm9wZXJ0aWVzLmNhdGVnb3J5XG4gICAgLy8gIEBwYXJhbSB7c3RyaW5nfSBbcHJvcGVydGllcy5sYWJlbF1cbiAgICAvLyAgQHBhcmFtIHtudW1iZXJ9IFtwcm9wZXJ0aWVzLnZhbHVlXVxuICAgIC8vICBAcGFyYW0ge2Jvb2xlYW59IFtwcm9wZXJ0aWVzLm5vbmludGVyYWN0aW9uXVxuICAgIC8vIFNldCBhIGRlZmF1bHQgR1RNIGNhdGVnb3J5XG4gICAgcHJvcGVydGllcyA9IHByb3BlcnRpZXMgfHwge307XG5cbiAgICB0aGlzLnB1c2hMYXllcih7XG4gICAgICBldmVudDogcHJvcGVydGllcy5ldmVudCB8fCAnaW50ZXJhY3Rpb24nLFxuICAgICAgdGFyZ2V0OiBwcm9wZXJ0aWVzLmNhdGVnb3J5IHx8ICdFdmVudCcsXG4gICAgICBhY3Rpb24sXG4gICAgICBsYWJlbDogcHJvcGVydGllcy5sYWJlbCxcbiAgICAgIHZhbHVlOiBwcm9wZXJ0aWVzLnZhbHVlLFxuICAgICAgaW50ZXJhY3Rpb25UeXBlOiBwcm9wZXJ0aWVzLm5vbmludGVyYWN0aW9uLFxuICAgICAgdXNlcklkOiB0aGlzLmFuZ3VsYXJ0aWNzMi5zZXR0aW5ncy5ndG0udXNlcklkLFxuICAgICAgLi4ucHJvcGVydGllcy5ndG1DdXN0b21cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGNlcHRpb24gVHJhY2sgRXZlbnQgaW4gR1RNXG4gICAqXG4gICAqL1xuICBleGNlcHRpb25UcmFjayhwcm9wZXJ0aWVzOiBhbnkpIHtcbiAgICAvLyBUT0RPOiBtYWtlIGludGVyZmFjZVxuICAgIC8vICBAcGFyYW0ge09iamVjdH0gcHJvcGVydGllc1xuICAgIC8vICBAcGFyYW0ge3N0cmluZ30gcHJvcGVydGllcy5hcHBJZFxuICAgIC8vICBAcGFyYW0ge3N0cmluZ30gcHJvcGVydGllcy5hcHBOYW1lXG4gICAgLy8gIEBwYXJhbSB7c3RyaW5nfSBwcm9wZXJ0aWVzLmFwcFZlcnNpb25cbiAgICAvLyAgQHBhcmFtIHtzdHJpbmd9IFtwcm9wZXJ0aWVzLmRlc2NyaXB0aW9uXVxuICAgIC8vICBAcGFyYW0ge2Jvb2xlYW59IFtwcm9wZXJ0aWVzLmZhdGFsXVxuICAgIGlmICghIHByb3BlcnRpZXMgfHwgISBwcm9wZXJ0aWVzLmFwcElkIHx8ICEgcHJvcGVydGllcy5hcHBOYW1lIHx8ICEgcHJvcGVydGllcy5hcHBWZXJzaW9uKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdNdXN0IGJlIHNldHRlZCBhcHBJZCwgYXBwTmFtZSBhbmQgYXBwVmVyc2lvbi4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAocHJvcGVydGllcy5mYXRhbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zb2xlLmxvZygnTm8gXCJmYXRhbFwiIHByb3ZpZGVkLCBzZW5kaW5nIHdpdGggZmF0YWw9dHJ1ZScpO1xuICAgICAgcHJvcGVydGllcy5leEZhdGFsID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcm9wZXJ0aWVzLmV4RGVzY3JpcHRpb24gPSBwcm9wZXJ0aWVzLmV2ZW50ID8gcHJvcGVydGllcy5ldmVudC5zdGFjayA6IHByb3BlcnRpZXMuZGVzY3JpcHRpb247XG5cbiAgICB0aGlzLmV2ZW50VHJhY2soYEV4Y2VwdGlvbiB0aHJvd24gZm9yICR7cHJvcGVydGllcy5hcHBOYW1lfSA8JHtwcm9wZXJ0aWVzLmFwcElkfUAke3Byb3BlcnRpZXMuYXBwVmVyc2lvbn0+YCwge1xuICAgICAgY2F0ZWdvcnk6ICdFeGNlcHRpb24nLFxuICAgICAgbGFiZWw6IHByb3BlcnRpZXMuZXhEZXNjcmlwdGlvbixcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdXNlcklkIGZvciB1c2Ugd2l0aCBVbml2ZXJzYWwgQW5hbHl0aWNzIFVzZXIgSUQgZmVhdHVyZVxuICAgKlxuICAgKiBAcGFyYW0gdXNlcklkIHVzZWQgdG8gaWRlbnRpZnkgdXNlciBjcm9zcy1kZXZpY2UgaW4gR29vZ2xlIEFuYWx5dGljc1xuICAgKi9cbiAgc2V0VXNlcm5hbWUodXNlcklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmFuZ3VsYXJ0aWNzMi5zZXR0aW5ncy5ndG0udXNlcklkID0gdXNlcklkO1xuICB9XG59XG4iXX0=
|