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.
Files changed (368) hide show
  1. package/README.md +3 -2
  2. package/adobeanalytics/bundles/angulartics2-adobeanalytics.umd.js +13 -223
  3. package/adobeanalytics/bundles/angulartics2-adobeanalytics.umd.js.map +1 -1
  4. package/adobeanalytics/bundles/angulartics2-adobeanalytics.umd.min.js +1 -15
  5. package/adobeanalytics/bundles/angulartics2-adobeanalytics.umd.min.js.map +1 -1
  6. package/adobeanalytics/esm2015/adobeanalytics.js +7 -9
  7. package/adobeanalytics/esm2015/angulartics2-adobeanalytics.js +1 -1
  8. package/adobeanalytics/fesm2015/angulartics2-adobeanalytics.js +6 -7
  9. package/adobeanalytics/fesm2015/angulartics2-adobeanalytics.js.map +1 -1
  10. package/adobeanalytics/package.json +3 -5
  11. package/amplitude/bundles/angulartics2-amplitude.umd.js +12 -222
  12. package/amplitude/bundles/angulartics2-amplitude.umd.js.map +1 -1
  13. package/amplitude/bundles/angulartics2-amplitude.umd.min.js +1 -15
  14. package/amplitude/bundles/angulartics2-amplitude.umd.min.js.map +1 -1
  15. package/amplitude/esm2015/amplitude.js +7 -9
  16. package/amplitude/esm2015/angulartics2-amplitude.js +1 -1
  17. package/amplitude/fesm2015/angulartics2-amplitude.js +6 -7
  18. package/amplitude/fesm2015/angulartics2-amplitude.js.map +1 -1
  19. package/amplitude/package.json +3 -5
  20. package/appinsights/bundles/angulartics2-appinsights.umd.js +17 -227
  21. package/appinsights/bundles/angulartics2-appinsights.umd.js.map +1 -1
  22. package/appinsights/bundles/angulartics2-appinsights.umd.min.js +1 -15
  23. package/appinsights/bundles/angulartics2-appinsights.umd.min.js.map +1 -1
  24. package/appinsights/esm2015/angulartics2-appinsights.js +1 -1
  25. package/appinsights/esm2015/appinsights.js +8 -10
  26. package/appinsights/fesm2015/angulartics2-appinsights.js +6 -7
  27. package/appinsights/fesm2015/angulartics2-appinsights.js.map +1 -1
  28. package/appinsights/package.json +3 -5
  29. package/baidu/bundles/angulartics2-baidu.umd.js +12 -222
  30. package/baidu/bundles/angulartics2-baidu.umd.js.map +1 -1
  31. package/baidu/bundles/angulartics2-baidu.umd.min.js +1 -15
  32. package/baidu/bundles/angulartics2-baidu.umd.min.js.map +1 -1
  33. package/baidu/esm2015/angulartics2-baidu.js +1 -1
  34. package/baidu/esm2015/baidu.js +7 -9
  35. package/baidu/fesm2015/angulartics2-baidu.js +6 -7
  36. package/baidu/fesm2015/angulartics2-baidu.js.map +1 -1
  37. package/baidu/package.json +3 -5
  38. package/bundles/angulartics2.umd.js +355 -279
  39. package/bundles/angulartics2.umd.js.map +1 -1
  40. package/bundles/angulartics2.umd.min.js +12 -12
  41. package/bundles/angulartics2.umd.min.js.map +1 -1
  42. package/clicky/bundles/angulartics2-clicky.umd.js +13 -223
  43. package/clicky/bundles/angulartics2-clicky.umd.js.map +1 -1
  44. package/clicky/bundles/angulartics2-clicky.umd.min.js +1 -15
  45. package/clicky/bundles/angulartics2-clicky.umd.min.js.map +1 -1
  46. package/clicky/esm2015/angulartics2-clicky.js +1 -1
  47. package/clicky/esm2015/clicky.interfaces.js +1 -1
  48. package/clicky/esm2015/clicky.js +7 -9
  49. package/clicky/fesm2015/angulartics2-clicky.js +6 -7
  50. package/clicky/fesm2015/angulartics2-clicky.js.map +1 -1
  51. package/clicky/package.json +3 -5
  52. package/esm2015/angular-router.js +7 -9
  53. package/esm2015/angulartics2-config.js +1 -1
  54. package/esm2015/angulartics2-core.js +8 -11
  55. package/esm2015/angulartics2-interfaces.js +1 -1
  56. package/esm2015/angulartics2-token.js +1 -1
  57. package/esm2015/angulartics2.js +1 -1
  58. package/esm2015/angulartics2.module.js +10 -13
  59. package/esm2015/angulartics2On.js +22 -35
  60. package/esm2015/public_api.js +2 -1
  61. package/esm2015/routerless.js +1 -1
  62. package/facebook/bundles/angulartics2-facebook.umd.js +12 -222
  63. package/facebook/bundles/angulartics2-facebook.umd.js.map +1 -1
  64. package/facebook/bundles/angulartics2-facebook.umd.min.js +1 -15
  65. package/facebook/bundles/angulartics2-facebook.umd.min.js.map +1 -1
  66. package/facebook/esm2015/angulartics2-facebook.js +1 -1
  67. package/facebook/esm2015/facebook.js +7 -9
  68. package/facebook/fesm2015/angulartics2-facebook.js +6 -7
  69. package/facebook/fesm2015/angulartics2-facebook.js.map +1 -1
  70. package/facebook/package.json +3 -5
  71. package/fesm2015/angulartics2.js +42 -55
  72. package/fesm2015/angulartics2.js.map +1 -1
  73. package/ga/bundles/angulartics2-ga.umd.js +313 -222
  74. package/ga/bundles/angulartics2-ga.umd.js.map +1 -1
  75. package/ga/bundles/angulartics2-ga.umd.min.js +11 -11
  76. package/ga/bundles/angulartics2-ga.umd.min.js.map +1 -1
  77. package/ga/esm2015/angulartics2-ga.js +1 -1
  78. package/ga/esm2015/ga.js +8 -10
  79. package/ga/fesm2015/angulartics2-ga.js +6 -7
  80. package/ga/fesm2015/angulartics2-ga.js.map +1 -1
  81. package/ga/package.json +3 -5
  82. package/ga-enhanced-ecom/bundles/angulartics2-ga-enhanced-ecom.umd.js +9 -219
  83. package/ga-enhanced-ecom/bundles/angulartics2-ga-enhanced-ecom.umd.js.map +1 -1
  84. package/ga-enhanced-ecom/bundles/angulartics2-ga-enhanced-ecom.umd.min.js +1 -15
  85. package/ga-enhanced-ecom/bundles/angulartics2-ga-enhanced-ecom.umd.min.js.map +1 -1
  86. package/ga-enhanced-ecom/esm2015/angulartics2-ga-enhanced-ecom.js +1 -1
  87. package/ga-enhanced-ecom/esm2015/ga-enhanced-ecom-options.js +1 -1
  88. package/ga-enhanced-ecom/esm2015/ga-enhanced-ecom.js +6 -8
  89. package/ga-enhanced-ecom/fesm2015/angulartics2-ga-enhanced-ecom.js +5 -6
  90. package/ga-enhanced-ecom/fesm2015/angulartics2-ga-enhanced-ecom.js.map +1 -1
  91. package/ga-enhanced-ecom/package.json +3 -5
  92. package/gosquared/bundles/angulartics2-gosquared.umd.js +14 -228
  93. package/gosquared/bundles/angulartics2-gosquared.umd.js.map +1 -1
  94. package/gosquared/bundles/angulartics2-gosquared.umd.min.js +1 -15
  95. package/gosquared/bundles/angulartics2-gosquared.umd.min.js.map +1 -1
  96. package/gosquared/esm2015/angulartics2-gosquared.js +1 -1
  97. package/gosquared/esm2015/gosquared.js +7 -9
  98. package/gosquared/fesm2015/angulartics2-gosquared.js +6 -7
  99. package/gosquared/fesm2015/angulartics2-gosquared.js.map +1 -1
  100. package/gosquared/package.json +3 -5
  101. package/gst/bundles/angulartics2-gst.umd.js +316 -225
  102. package/gst/bundles/angulartics2-gst.umd.js.map +1 -1
  103. package/gst/bundles/angulartics2-gst.umd.min.js +11 -11
  104. package/gst/bundles/angulartics2-gst.umd.min.js.map +1 -1
  105. package/gst/esm2015/angulartics2-gst.js +1 -1
  106. package/gst/esm2015/gst-interfaces.js +1 -1
  107. package/gst/esm2015/gst.js +8 -10
  108. package/gst/fesm2015/angulartics2-gst.js +6 -7
  109. package/gst/fesm2015/angulartics2-gst.js.map +1 -1
  110. package/gst/package.json +3 -5
  111. package/gtm/bundles/angulartics2-gtm.umd.js +14 -224
  112. package/gtm/bundles/angulartics2-gtm.umd.js.map +1 -1
  113. package/gtm/bundles/angulartics2-gtm.umd.min.js +1 -15
  114. package/gtm/bundles/angulartics2-gtm.umd.min.js.map +1 -1
  115. package/gtm/esm2015/angulartics2-gtm.js +1 -1
  116. package/gtm/esm2015/gtm.js +8 -10
  117. package/gtm/fesm2015/angulartics2-gtm.js +6 -7
  118. package/gtm/fesm2015/angulartics2-gtm.js.map +1 -1
  119. package/gtm/package.json +3 -5
  120. package/hubspot/bundles/angulartics2-hubspot.umd.js +12 -222
  121. package/hubspot/bundles/angulartics2-hubspot.umd.js.map +1 -1
  122. package/hubspot/bundles/angulartics2-hubspot.umd.min.js +1 -15
  123. package/hubspot/bundles/angulartics2-hubspot.umd.min.js.map +1 -1
  124. package/hubspot/esm2015/angulartics2-hubspot.js +1 -1
  125. package/hubspot/esm2015/hubspot.js +7 -9
  126. package/hubspot/fesm2015/angulartics2-hubspot.js +6 -7
  127. package/hubspot/fesm2015/angulartics2-hubspot.js.map +1 -1
  128. package/hubspot/package.json +3 -5
  129. package/ibm-digital-analytics/bundles/angulartics2-ibm-digital-analytics.umd.js +12 -222
  130. package/ibm-digital-analytics/bundles/angulartics2-ibm-digital-analytics.umd.js.map +1 -1
  131. package/ibm-digital-analytics/bundles/angulartics2-ibm-digital-analytics.umd.min.js +1 -15
  132. package/ibm-digital-analytics/bundles/angulartics2-ibm-digital-analytics.umd.min.js.map +1 -1
  133. package/ibm-digital-analytics/esm2015/angulartics2-ibm-digital-analytics.js +1 -1
  134. package/ibm-digital-analytics/esm2015/ibm-digital-analytics.js +7 -9
  135. package/ibm-digital-analytics/fesm2015/angulartics2-ibm-digital-analytics.js +6 -7
  136. package/ibm-digital-analytics/fesm2015/angulartics2-ibm-digital-analytics.js.map +1 -1
  137. package/ibm-digital-analytics/package.json +3 -5
  138. package/intercom/bundles/angulartics2-intercom.umd.js +12 -222
  139. package/intercom/bundles/angulartics2-intercom.umd.js.map +1 -1
  140. package/intercom/bundles/angulartics2-intercom.umd.min.js +1 -15
  141. package/intercom/bundles/angulartics2-intercom.umd.min.js.map +1 -1
  142. package/intercom/esm2015/angulartics2-intercom.js +1 -1
  143. package/intercom/esm2015/intercom.js +7 -9
  144. package/intercom/fesm2015/angulartics2-intercom.js +6 -7
  145. package/intercom/fesm2015/angulartics2-intercom.js.map +1 -1
  146. package/intercom/package.json +3 -5
  147. package/kissmetrics/bundles/angulartics2-kissmetrics.umd.js +12 -222
  148. package/kissmetrics/bundles/angulartics2-kissmetrics.umd.js.map +1 -1
  149. package/kissmetrics/bundles/angulartics2-kissmetrics.umd.min.js +1 -15
  150. package/kissmetrics/bundles/angulartics2-kissmetrics.umd.min.js.map +1 -1
  151. package/kissmetrics/esm2015/angulartics2-kissmetrics.js +1 -1
  152. package/kissmetrics/esm2015/kissmetrics.js +7 -9
  153. package/kissmetrics/fesm2015/angulartics2-kissmetrics.js +6 -7
  154. package/kissmetrics/fesm2015/angulartics2-kissmetrics.js.map +1 -1
  155. package/kissmetrics/package.json +3 -5
  156. package/launch/bundles/angulartics2-launch.umd.js +12 -222
  157. package/launch/bundles/angulartics2-launch.umd.js.map +1 -1
  158. package/launch/bundles/angulartics2-launch.umd.min.js +1 -15
  159. package/launch/bundles/angulartics2-launch.umd.min.js.map +1 -1
  160. package/launch/esm2015/angulartics2-launch.js +1 -1
  161. package/launch/esm2015/launch.js +7 -9
  162. package/launch/fesm2015/angulartics2-launch.js +6 -7
  163. package/launch/fesm2015/angulartics2-launch.js.map +1 -1
  164. package/launch/package.json +3 -5
  165. package/{piwik → matomo}/README.md +20 -20
  166. package/{piwik/angulartics2-piwik.d.ts → matomo/angulartics2-matomo.d.ts} +1 -1
  167. package/matomo/angulartics2-matomo.metadata.json +1 -0
  168. package/matomo/bundles/angulartics2-matomo.umd.js +309 -0
  169. package/matomo/bundles/angulartics2-matomo.umd.js.map +1 -0
  170. package/matomo/bundles/angulartics2-matomo.umd.min.js +2 -0
  171. package/matomo/bundles/angulartics2-matomo.umd.min.js.map +1 -0
  172. package/matomo/esm2015/angulartics2-matomo.js +5 -0
  173. package/matomo/esm2015/matomo.js +294 -0
  174. package/{piwik/fesm2015/angulartics2-piwik.js → matomo/fesm2015/angulartics2-matomo.js} +74 -33
  175. package/matomo/fesm2015/angulartics2-matomo.js.map +1 -0
  176. package/matomo/matomo.d.ts +137 -0
  177. package/matomo/package.json +20 -0
  178. package/mixpanel/bundles/angulartics2-mixpanel.umd.js +12 -222
  179. package/mixpanel/bundles/angulartics2-mixpanel.umd.js.map +1 -1
  180. package/mixpanel/bundles/angulartics2-mixpanel.umd.min.js +1 -15
  181. package/mixpanel/bundles/angulartics2-mixpanel.umd.min.js.map +1 -1
  182. package/mixpanel/esm2015/angulartics2-mixpanel.js +1 -1
  183. package/mixpanel/esm2015/mixpanel.js +7 -9
  184. package/mixpanel/fesm2015/angulartics2-mixpanel.js +6 -7
  185. package/mixpanel/fesm2015/angulartics2-mixpanel.js.map +1 -1
  186. package/mixpanel/package.json +3 -5
  187. package/package.json +10 -10
  188. package/pyze/bundles/angulartics2-pyze.umd.js +12 -222
  189. package/pyze/bundles/angulartics2-pyze.umd.js.map +1 -1
  190. package/pyze/bundles/angulartics2-pyze.umd.min.js +1 -15
  191. package/pyze/bundles/angulartics2-pyze.umd.min.js.map +1 -1
  192. package/pyze/esm2015/angulartics2-pyze.js +1 -1
  193. package/pyze/esm2015/pyze.js +7 -9
  194. package/pyze/fesm2015/angulartics2-pyze.js +6 -7
  195. package/pyze/fesm2015/angulartics2-pyze.js.map +1 -1
  196. package/pyze/package.json +3 -5
  197. package/routerlessmodule/bundles/angulartics2-routerlessmodule.umd.js +10 -222
  198. package/routerlessmodule/bundles/angulartics2-routerlessmodule.umd.js.map +1 -1
  199. package/routerlessmodule/bundles/angulartics2-routerlessmodule.umd.min.js +1 -15
  200. package/routerlessmodule/bundles/angulartics2-routerlessmodule.umd.min.js.map +1 -1
  201. package/routerlessmodule/esm2015/angulartics2-routerlessmodule.js +1 -1
  202. package/routerlessmodule/esm2015/routerless.module.js +9 -12
  203. package/routerlessmodule/fesm2015/angulartics2-routerlessmodule.js +8 -10
  204. package/routerlessmodule/fesm2015/angulartics2-routerlessmodule.js.map +1 -1
  205. package/routerlessmodule/package.json +3 -5
  206. package/segment/angulartics2-segment.metadata.json +1 -1
  207. package/segment/bundles/angulartics2-segment.umd.js +20 -222
  208. package/segment/bundles/angulartics2-segment.umd.js.map +1 -1
  209. package/segment/bundles/angulartics2-segment.umd.min.js +1 -15
  210. package/segment/bundles/angulartics2-segment.umd.min.js.map +1 -1
  211. package/segment/esm2015/angulartics2-segment.js +1 -1
  212. package/segment/esm2015/segment.js +15 -9
  213. package/segment/fesm2015/angulartics2-segment.js +14 -7
  214. package/segment/fesm2015/angulartics2-segment.js.map +1 -1
  215. package/segment/package.json +3 -5
  216. package/segment/segment.d.ts +6 -0
  217. package/splunk/bundles/angulartics2-splunk.umd.js +12 -222
  218. package/splunk/bundles/angulartics2-splunk.umd.js.map +1 -1
  219. package/splunk/bundles/angulartics2-splunk.umd.min.js +1 -15
  220. package/splunk/bundles/angulartics2-splunk.umd.min.js.map +1 -1
  221. package/splunk/esm2015/angulartics2-splunk.js +1 -1
  222. package/splunk/esm2015/splunk.js +7 -9
  223. package/splunk/fesm2015/angulartics2-splunk.js +6 -7
  224. package/splunk/fesm2015/angulartics2-splunk.js.map +1 -1
  225. package/splunk/package.json +3 -5
  226. package/uiroutermodule/bundles/angulartics2-uiroutermodule.umd.js +19 -231
  227. package/uiroutermodule/bundles/angulartics2-uiroutermodule.umd.js.map +1 -1
  228. package/uiroutermodule/bundles/angulartics2-uiroutermodule.umd.min.js +1 -15
  229. package/uiroutermodule/bundles/angulartics2-uiroutermodule.umd.min.js.map +1 -1
  230. package/uiroutermodule/esm2015/angulartics2-uiroutermodule.js +1 -1
  231. package/uiroutermodule/esm2015/public_api.js +1 -1
  232. package/uiroutermodule/esm2015/uirouter.js +8 -10
  233. package/uiroutermodule/esm2015/uirouter.module.js +9 -12
  234. package/uiroutermodule/fesm2015/angulartics2-uiroutermodule.js +14 -16
  235. package/uiroutermodule/fesm2015/angulartics2-uiroutermodule.js.map +1 -1
  236. package/uiroutermodule/package.json +3 -5
  237. package/woopra/bundles/angulartics2-woopra.umd.js +12 -222
  238. package/woopra/bundles/angulartics2-woopra.umd.js.map +1 -1
  239. package/woopra/bundles/angulartics2-woopra.umd.min.js +1 -15
  240. package/woopra/bundles/angulartics2-woopra.umd.min.js.map +1 -1
  241. package/woopra/esm2015/angulartics2-woopra.js +1 -1
  242. package/woopra/esm2015/woopra.js +7 -9
  243. package/woopra/fesm2015/angulartics2-woopra.js +6 -7
  244. package/woopra/fesm2015/angulartics2-woopra.js.map +1 -1
  245. package/woopra/package.json +3 -5
  246. package/adobeanalytics/esm5/adobeanalytics.js +0 -108
  247. package/adobeanalytics/esm5/angulartics2-adobeanalytics.js +0 -5
  248. package/adobeanalytics/fesm5/angulartics2-adobeanalytics.js +0 -111
  249. package/adobeanalytics/fesm5/angulartics2-adobeanalytics.js.map +0 -1
  250. package/amplitude/esm5/amplitude.js +0 -78
  251. package/amplitude/esm5/angulartics2-amplitude.js +0 -5
  252. package/amplitude/fesm5/angulartics2-amplitude.js +0 -82
  253. package/amplitude/fesm5/angulartics2-amplitude.js.map +0 -1
  254. package/appinsights/esm5/angulartics2-appinsights.js +0 -5
  255. package/appinsights/esm5/appinsights.js +0 -129
  256. package/appinsights/fesm5/angulartics2-appinsights.js +0 -130
  257. package/appinsights/fesm5/angulartics2-appinsights.js.map +0 -1
  258. package/baidu/esm5/angulartics2-baidu.js +0 -5
  259. package/baidu/esm5/baidu.js +0 -88
  260. package/baidu/fesm5/angulartics2-baidu.js +0 -92
  261. package/baidu/fesm5/angulartics2-baidu.js.map +0 -1
  262. package/clicky/esm5/angulartics2-clicky.js +0 -5
  263. package/clicky/esm5/clicky.interfaces.js +0 -1
  264. package/clicky/esm5/clicky.js +0 -72
  265. package/clicky/fesm5/angulartics2-clicky.js +0 -75
  266. package/clicky/fesm5/angulartics2-clicky.js.map +0 -1
  267. package/esm5/angular-router.js +0 -39
  268. package/esm5/angulartics2-config.js +0 -21
  269. package/esm5/angulartics2-core.js +0 -109
  270. package/esm5/angulartics2-interfaces.js +0 -1
  271. package/esm5/angulartics2-token.js +0 -3
  272. package/esm5/angulartics2.js +0 -5
  273. package/esm5/angulartics2.module.js +0 -33
  274. package/esm5/angulartics2On.js +0 -73
  275. package/esm5/public_api.js +0 -8
  276. package/esm5/routerless.js +0 -14
  277. package/facebook/esm5/angulartics2-facebook.js +0 -5
  278. package/facebook/esm5/facebook.js +0 -52
  279. package/facebook/fesm5/angulartics2-facebook.js +0 -56
  280. package/facebook/fesm5/angulartics2-facebook.js.map +0 -1
  281. package/fesm5/angulartics2.js +0 -268
  282. package/fesm5/angulartics2.js.map +0 -1
  283. package/ga/esm5/angulartics2-ga.js +0 -5
  284. package/ga/esm5/ga.js +0 -289
  285. package/ga/fesm5/angulartics2-ga.js +0 -292
  286. package/ga/fesm5/angulartics2-ga.js.map +0 -1
  287. package/ga-enhanced-ecom/esm5/angulartics2-ga-enhanced-ecom.js +0 -5
  288. package/ga-enhanced-ecom/esm5/ga-enhanced-ecom-options.js +0 -6
  289. package/ga-enhanced-ecom/esm5/ga-enhanced-ecom.js +0 -35
  290. package/ga-enhanced-ecom/fesm5/angulartics2-ga-enhanced-ecom.js +0 -40
  291. package/ga-enhanced-ecom/fesm5/angulartics2-ga-enhanced-ecom.js.map +0 -1
  292. package/gosquared/esm5/angulartics2-gosquared.js +0 -5
  293. package/gosquared/esm5/gosquared.js +0 -66
  294. package/gosquared/fesm5/angulartics2-gosquared.js +0 -70
  295. package/gosquared/fesm5/angulartics2-gosquared.js.map +0 -1
  296. package/gst/esm5/angulartics2-gst.js +0 -5
  297. package/gst/esm5/gst-interfaces.js +0 -1
  298. package/gst/esm5/gst.js +0 -203
  299. package/gst/fesm5/angulartics2-gst.js +0 -206
  300. package/gst/fesm5/angulartics2-gst.js.map +0 -1
  301. package/gtm/esm5/angulartics2-gtm.js +0 -5
  302. package/gtm/esm5/gtm.js +0 -115
  303. package/gtm/fesm5/angulartics2-gtm.js +0 -118
  304. package/gtm/fesm5/angulartics2-gtm.js.map +0 -1
  305. package/hubspot/esm5/angulartics2-hubspot.js +0 -5
  306. package/hubspot/esm5/hubspot.js +0 -48
  307. package/hubspot/fesm5/angulartics2-hubspot.js +0 -52
  308. package/hubspot/fesm5/angulartics2-hubspot.js.map +0 -1
  309. package/ibm-digital-analytics/esm5/angulartics2-ibm-digital-analytics.js +0 -5
  310. package/ibm-digital-analytics/esm5/ibm-digital-analytics.js +0 -132
  311. package/ibm-digital-analytics/fesm5/angulartics2-ibm-digital-analytics.js +0 -136
  312. package/ibm-digital-analytics/fesm5/angulartics2-ibm-digital-analytics.js.map +0 -1
  313. package/intercom/esm5/angulartics2-intercom.js +0 -5
  314. package/intercom/esm5/intercom.js +0 -69
  315. package/intercom/fesm5/angulartics2-intercom.js +0 -73
  316. package/intercom/fesm5/angulartics2-intercom.js.map +0 -1
  317. package/kissmetrics/esm5/angulartics2-kissmetrics.js +0 -5
  318. package/kissmetrics/esm5/kissmetrics.js +0 -49
  319. package/kissmetrics/fesm5/angulartics2-kissmetrics.js +0 -53
  320. package/kissmetrics/fesm5/angulartics2-kissmetrics.js.map +0 -1
  321. package/launch/esm5/angulartics2-launch.js +0 -5
  322. package/launch/esm5/launch.js +0 -68
  323. package/launch/fesm5/angulartics2-launch.js +0 -72
  324. package/launch/fesm5/angulartics2-launch.js.map +0 -1
  325. package/mixpanel/esm5/angulartics2-mixpanel.js +0 -5
  326. package/mixpanel/esm5/mixpanel.js +0 -122
  327. package/mixpanel/fesm5/angulartics2-mixpanel.js +0 -126
  328. package/mixpanel/fesm5/angulartics2-mixpanel.js.map +0 -1
  329. package/piwik/angulartics2-piwik.metadata.json +0 -1
  330. package/piwik/bundles/angulartics2-piwik.umd.js +0 -478
  331. package/piwik/bundles/angulartics2-piwik.umd.js.map +0 -1
  332. package/piwik/bundles/angulartics2-piwik.umd.min.js +0 -16
  333. package/piwik/bundles/angulartics2-piwik.umd.min.js.map +0 -1
  334. package/piwik/esm2015/angulartics2-piwik.js +0 -5
  335. package/piwik/esm2015/piwik.js +0 -254
  336. package/piwik/esm5/angulartics2-piwik.js +0 -5
  337. package/piwik/esm5/piwik.js +0 -258
  338. package/piwik/fesm2015/angulartics2-piwik.js.map +0 -1
  339. package/piwik/fesm5/angulartics2-piwik.js +0 -262
  340. package/piwik/fesm5/angulartics2-piwik.js.map +0 -1
  341. package/piwik/package.json +0 -22
  342. package/piwik/piwik.d.ts +0 -27
  343. package/pyze/esm5/angulartics2-pyze.js +0 -5
  344. package/pyze/esm5/pyze.js +0 -72
  345. package/pyze/fesm5/angulartics2-pyze.js +0 -76
  346. package/pyze/fesm5/angulartics2-pyze.js.map +0 -1
  347. package/routerlessmodule/esm5/angulartics2-routerlessmodule.js +0 -5
  348. package/routerlessmodule/esm5/routerless.module.js +0 -28
  349. package/routerlessmodule/fesm5/angulartics2-routerlessmodule.js +0 -34
  350. package/routerlessmodule/fesm5/angulartics2-routerlessmodule.js.map +0 -1
  351. package/segment/esm5/angulartics2-segment.js +0 -5
  352. package/segment/esm5/segment.js +0 -102
  353. package/segment/fesm5/angulartics2-segment.js +0 -106
  354. package/segment/fesm5/angulartics2-segment.js.map +0 -1
  355. package/splunk/esm5/angulartics2-splunk.js +0 -5
  356. package/splunk/esm5/splunk.js +0 -52
  357. package/splunk/fesm5/angulartics2-splunk.js +0 -56
  358. package/splunk/fesm5/angulartics2-splunk.js.map +0 -1
  359. package/uiroutermodule/esm5/angulartics2-uiroutermodule.js +0 -5
  360. package/uiroutermodule/esm5/public_api.js +0 -3
  361. package/uiroutermodule/esm5/uirouter.js +0 -44
  362. package/uiroutermodule/esm5/uirouter.module.js +0 -29
  363. package/uiroutermodule/fesm5/angulartics2-uiroutermodule.js +0 -73
  364. package/uiroutermodule/fesm5/angulartics2-uiroutermodule.js.map +0 -1
  365. package/woopra/esm5/angulartics2-woopra.js +0 -5
  366. package/woopra/esm5/woopra.js +0 -69
  367. package/woopra/fesm5/angulartics2-woopra.js +0 -73
  368. package/woopra/fesm5/angulartics2-woopra.js.map +0 -1
@@ -1,268 +0,0 @@
1
- import { __assign, __values, __decorate, __param } from 'tslib';
2
- import { InjectionToken, Inject, ɵɵdefineInjectable, ɵɵinject, Injectable, ElementRef, Renderer2, Input, Directive, NgModule } from '@angular/core';
3
- import { BehaviorSubject, ReplaySubject } from 'rxjs';
4
- import { filter, map, delay } from 'rxjs/operators';
5
- import { Location } from '@angular/common';
6
- import { NavigationEnd, Router } from '@angular/router';
7
-
8
- var DefaultConfig = /** @class */ (function () {
9
- function DefaultConfig() {
10
- this.pageTracking = {
11
- autoTrackVirtualPages: true,
12
- basePath: '',
13
- excludedRoutes: [],
14
- clearIds: false,
15
- clearHash: false,
16
- clearQueryParams: false,
17
- idsRegExp: /^\d+$|^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,
18
- };
19
- this.developerMode = false;
20
- this.ga = {};
21
- this.appInsights = {};
22
- this.gtm = {};
23
- this.gst = {};
24
- }
25
- return DefaultConfig;
26
- }());
27
-
28
- var ANGULARTICS2_TOKEN = new InjectionToken('ANGULARTICS2');
29
-
30
- var RouterlessTracking = /** @class */ (function () {
31
- function RouterlessTracking() {
32
- }
33
- RouterlessTracking.prototype.trackLocation = function (settings) {
34
- return new BehaviorSubject({ url: '/' });
35
- };
36
- RouterlessTracking.prototype.prepareExternalUrl = function (url) {
37
- return url;
38
- };
39
- return RouterlessTracking;
40
- }());
41
-
42
- var Angulartics2 = /** @class */ (function () {
43
- function Angulartics2(tracker, setup) {
44
- var _this = this;
45
- this.tracker = tracker;
46
- this.pageTrack = new ReplaySubject(10);
47
- this.eventTrack = new ReplaySubject(10);
48
- this.exceptionTrack = new ReplaySubject(10);
49
- this.setAlias = new ReplaySubject(10);
50
- this.setUsername = new ReplaySubject(10);
51
- this.setUserProperties = new ReplaySubject(10);
52
- this.setUserPropertiesOnce = new ReplaySubject(10);
53
- this.setSuperProperties = new ReplaySubject(10);
54
- this.setSuperPropertiesOnce = new ReplaySubject(10);
55
- this.userTimings = new ReplaySubject(10);
56
- var defaultConfig = new DefaultConfig();
57
- this.settings = __assign(__assign({}, defaultConfig), setup.settings);
58
- this.settings.pageTracking = __assign(__assign({}, defaultConfig.pageTracking), setup.settings.pageTracking);
59
- this.tracker
60
- .trackLocation(this.settings)
61
- .subscribe(function (event) {
62
- return _this.trackUrlChange(event.url);
63
- });
64
- }
65
- /** filters all events when developer mode is true */
66
- Angulartics2.prototype.filterDeveloperMode = function () {
67
- var _this = this;
68
- return filter(function (value, index) { return !_this.settings.developerMode; });
69
- };
70
- Angulartics2.prototype.trackUrlChange = function (url) {
71
- if (this.settings.pageTracking.autoTrackVirtualPages && !this.matchesExcludedRoute(url)) {
72
- var clearedUrl = this.clearUrl(url);
73
- var path = void 0;
74
- if (this.settings.pageTracking.basePath.length) {
75
- path = this.settings.pageTracking.basePath + clearedUrl;
76
- }
77
- else {
78
- path = this.tracker.prepareExternalUrl(clearedUrl);
79
- }
80
- this.pageTrack.next({ path: path });
81
- }
82
- };
83
- /**
84
- * Use string literals or regular expressions to exclude routes
85
- * from automatic pageview tracking.
86
- *
87
- * @param url location
88
- */
89
- Angulartics2.prototype.matchesExcludedRoute = function (url) {
90
- var e_1, _a;
91
- try {
92
- for (var _b = __values(this.settings.pageTracking.excludedRoutes), _c = _b.next(); !_c.done; _c = _b.next()) {
93
- var excludedRoute = _c.value;
94
- var matchesRegex = excludedRoute instanceof RegExp && excludedRoute.test(url);
95
- if (matchesRegex || url.indexOf(excludedRoute) !== -1) {
96
- return true;
97
- }
98
- }
99
- }
100
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
101
- finally {
102
- try {
103
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
104
- }
105
- finally { if (e_1) throw e_1.error; }
106
- }
107
- return false;
108
- };
109
- /**
110
- * Removes id's from tracked route.
111
- * EX: `/project/12981/feature` becomes `/project/feature`
112
- *
113
- * @param url current page path
114
- */
115
- Angulartics2.prototype.clearUrl = function (url) {
116
- var _this = this;
117
- if (this.settings.pageTracking.clearIds || this.settings.pageTracking.clearQueryParams ||
118
- this.settings.pageTracking.clearHash) {
119
- return url
120
- .split('/')
121
- .map(function (part) { return _this.settings.pageTracking.clearQueryParams ? part.split('?')[0] : part; })
122
- .map(function (part) { return _this.settings.pageTracking.clearHash ? part.split('#')[0] : part; })
123
- .filter(function (part) { return !_this.settings.pageTracking.clearIds || !part.match(_this.settings.pageTracking.idsRegExp); })
124
- .join('/');
125
- }
126
- return url;
127
- };
128
- Angulartics2.ctorParameters = function () { return [
129
- { type: RouterlessTracking },
130
- { type: undefined, decorators: [{ type: Inject, args: [ANGULARTICS2_TOKEN,] }] }
131
- ]; };
132
- Angulartics2.ɵprov = ɵɵdefineInjectable({ factory: function Angulartics2_Factory() { return new Angulartics2(ɵɵinject(RouterlessTracking), ɵɵinject(ANGULARTICS2_TOKEN)); }, token: Angulartics2, providedIn: "root" });
133
- Angulartics2 = __decorate([
134
- Injectable({ providedIn: 'root' }),
135
- __param(1, Inject(ANGULARTICS2_TOKEN))
136
- ], Angulartics2);
137
- return Angulartics2;
138
- }());
139
-
140
- /**
141
- * Track Route changes for applications using Angular's
142
- * default router
143
- *
144
- * @link https://angular.io/api/router/Router
145
- */
146
- var AngularRouterTracking = /** @class */ (function () {
147
- function AngularRouterTracking(router, location) {
148
- this.router = router;
149
- this.location = location;
150
- }
151
- AngularRouterTracking.prototype.trackLocation = function (settings) {
152
- return this.router.events.pipe(filter(function (e) { return e instanceof NavigationEnd; }), filter(function () { return !settings.developerMode; }), map(function (e) {
153
- return { url: e.urlAfterRedirects };
154
- }), delay(0));
155
- };
156
- AngularRouterTracking.prototype.prepareExternalUrl = function (url) {
157
- return this.location.prepareExternalUrl(url);
158
- };
159
- AngularRouterTracking.ctorParameters = function () { return [
160
- { type: Router },
161
- { type: Location }
162
- ]; };
163
- AngularRouterTracking.ɵprov = ɵɵdefineInjectable({ factory: function AngularRouterTracking_Factory() { return new AngularRouterTracking(ɵɵinject(Router), ɵɵinject(Location)); }, token: AngularRouterTracking, providedIn: "root" });
164
- AngularRouterTracking = __decorate([
165
- Injectable({ providedIn: 'root' })
166
- ], AngularRouterTracking);
167
- return AngularRouterTracking;
168
- }());
169
-
170
- var Angulartics2On = /** @class */ (function () {
171
- function Angulartics2On(elRef, angulartics2, renderer) {
172
- this.elRef = elRef;
173
- this.angulartics2 = angulartics2;
174
- this.renderer = renderer;
175
- this.angularticsProperties = {};
176
- }
177
- Angulartics2On.prototype.ngAfterContentInit = function () {
178
- var _this = this;
179
- this.renderer.listen(this.elRef.nativeElement, this.angulartics2On || 'click', function (event) { return _this.eventTrack(event); });
180
- };
181
- Angulartics2On.prototype.eventTrack = function (event) {
182
- var action = this.angularticsAction; // || this.inferEventName();
183
- var properties = __assign(__assign({}, this.angularticsProperties), { eventType: event.type });
184
- if (this.angularticsCategory) {
185
- properties.category = this.angularticsCategory;
186
- }
187
- if (this.angularticsLabel) {
188
- properties.label = this.angularticsLabel;
189
- }
190
- if (this.angularticsValue) {
191
- properties.value = this.angularticsValue;
192
- }
193
- this.angulartics2.eventTrack.next({
194
- action: action,
195
- properties: properties,
196
- });
197
- };
198
- Angulartics2On.ctorParameters = function () { return [
199
- { type: ElementRef },
200
- { type: Angulartics2 },
201
- { type: Renderer2 }
202
- ]; };
203
- __decorate([
204
- Input('angulartics2On')
205
- ], Angulartics2On.prototype, "angulartics2On", void 0);
206
- __decorate([
207
- Input()
208
- ], Angulartics2On.prototype, "angularticsAction", void 0);
209
- __decorate([
210
- Input()
211
- ], Angulartics2On.prototype, "angularticsCategory", void 0);
212
- __decorate([
213
- Input()
214
- ], Angulartics2On.prototype, "angularticsLabel", void 0);
215
- __decorate([
216
- Input()
217
- ], Angulartics2On.prototype, "angularticsValue", void 0);
218
- __decorate([
219
- Input()
220
- ], Angulartics2On.prototype, "angularticsProperties", void 0);
221
- Angulartics2On = __decorate([
222
- Directive({ selector: '[angulartics2On]' })
223
- ], Angulartics2On);
224
- return Angulartics2On;
225
- }());
226
- var Angulartics2OnModule = /** @class */ (function () {
227
- function Angulartics2OnModule() {
228
- }
229
- Angulartics2OnModule = __decorate([
230
- NgModule({
231
- declarations: [Angulartics2On],
232
- exports: [Angulartics2On],
233
- })
234
- ], Angulartics2OnModule);
235
- return Angulartics2OnModule;
236
- }());
237
-
238
- var Angulartics2Module = /** @class */ (function () {
239
- function Angulartics2Module() {
240
- }
241
- Angulartics2Module_1 = Angulartics2Module;
242
- Angulartics2Module.forRoot = function (settings) {
243
- if (settings === void 0) { settings = {}; }
244
- return {
245
- ngModule: Angulartics2Module_1,
246
- providers: [
247
- { provide: ANGULARTICS2_TOKEN, useValue: { settings: settings } },
248
- { provide: RouterlessTracking, useClass: AngularRouterTracking },
249
- Angulartics2,
250
- ],
251
- };
252
- };
253
- var Angulartics2Module_1;
254
- Angulartics2Module = Angulartics2Module_1 = __decorate([
255
- NgModule({
256
- imports: [Angulartics2OnModule],
257
- exports: [Angulartics2On],
258
- })
259
- ], Angulartics2Module);
260
- return Angulartics2Module;
261
- }());
262
-
263
- /**
264
- * Generated bundle index. Do not edit.
265
- */
266
-
267
- export { ANGULARTICS2_TOKEN, AngularRouterTracking, Angulartics2, Angulartics2Module, Angulartics2On, Angulartics2OnModule, DefaultConfig, RouterlessTracking };
268
- //# sourceMappingURL=angulartics2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"angulartics2.js","sources":["ng://angulartics2/angulartics2-config.ts","ng://angulartics2/angulartics2-token.ts","ng://angulartics2/routerless.ts","ng://angulartics2/angulartics2-core.ts","ng://angulartics2/angular-router.ts","ng://angulartics2/angulartics2On.ts","ng://angulartics2/angulartics2.module.ts","ng://angulartics2/angulartics2.ts"],"sourcesContent":["export interface GoogleAnalyticsSettings {\n /** array of additional account names (only works for analyticsjs) */\n additionalAccountNames: string[];\n userId: any;\n /** see https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#transport */\n transport: string;\n anonymizeIp: boolean;\n}\n\nexport interface AppInsightsSettings {\n userId: string;\n}\n\nexport interface GoogleTagManagerSettings {\n userId: any;\n}\n\nexport interface GoogleGlobalSiteTagSettings {\n trackingIds: any;\n userId?: any;\n anonymizeIp?: boolean;\n customMap?: { [key: string]: string };\n}\n\nexport interface PageTrackingSettings {\n autoTrackVirtualPages: boolean;\n basePath: string;\n excludedRoutes: (string | RegExp)[];\n /** drop ids from url `/sections/123/pages/456` -> `/sections/pages` */\n clearIds: boolean;\n /** drop contents of url after hash marker `/callback#authcode=1234` -> `/callback` */\n clearHash: boolean;\n /** drop query params from url `/sections/123/pages?param=456&param2=789` -> `/sections/123/pages` */\n clearQueryParams: boolean;\n /** used with clearIds, define the matcher to clear url parts */\n idsRegExp: RegExp;\n}\n\nexport interface Angulartics2Settings {\n pageTracking: Partial<PageTrackingSettings>;\n /** Disable page tracking */\n developerMode: boolean;\n ga: Partial<GoogleAnalyticsSettings>;\n appInsights: Partial<AppInsightsSettings>;\n gtm: Partial<GoogleTagManagerSettings>;\n gst: Partial<GoogleGlobalSiteTagSettings>;\n}\n\nexport class DefaultConfig implements Angulartics2Settings {\n pageTracking = {\n autoTrackVirtualPages: true,\n basePath: '',\n excludedRoutes: [],\n clearIds: false,\n clearHash: false,\n clearQueryParams: false,\n idsRegExp: /^\\d+$|^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n };\n developerMode = false;\n ga = {};\n appInsights = {};\n gtm = {};\n gst = {};\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { Angulartics2Settings } from './angulartics2-config';\n\nexport interface Angulartics2Token {\n settings: Partial<Angulartics2Settings>;\n}\n\nexport const ANGULARTICS2_TOKEN = new InjectionToken<Angulartics2Token>('ANGULARTICS2');\n","import { BehaviorSubject, Observable } from 'rxjs';\n\nimport { Angulartics2Settings } from './angulartics2-config';\n\nexport interface TrackNavigationEnd {\n url: string;\n}\n\nexport class RouterlessTracking {\n trackLocation(settings: Angulartics2Settings): Observable<TrackNavigationEnd> {\n return new BehaviorSubject<TrackNavigationEnd>({ url: '/' });\n }\n prepareExternalUrl(url: string): string {\n return url;\n }\n}\n","import { Inject, Injectable } from '@angular/core';\n\nimport { MonoTypeOperatorFunction, ReplaySubject } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { Angulartics2Settings, DefaultConfig } from './angulartics2-config';\nimport { EventTrack, PageTrack, UserTimings } from './angulartics2-interfaces';\nimport { Angulartics2Token, ANGULARTICS2_TOKEN } from './angulartics2-token';\nimport { RouterlessTracking, TrackNavigationEnd } from './routerless';\n\n@Injectable({ providedIn: 'root' })\nexport class Angulartics2 {\n settings: Angulartics2Settings;\n\n pageTrack = new ReplaySubject<Partial<PageTrack>>(10);\n eventTrack = new ReplaySubject<Partial<EventTrack>>(10);\n exceptionTrack = new ReplaySubject<any>(10);\n setAlias = new ReplaySubject<string>(10);\n setUsername = new ReplaySubject<{ userId: string | number } | string>(10);\n setUserProperties = new ReplaySubject<any>(10);\n setUserPropertiesOnce = new ReplaySubject<any>(10);\n setSuperProperties = new ReplaySubject<any>(10);\n setSuperPropertiesOnce = new ReplaySubject<any>(10);\n userTimings = new ReplaySubject<UserTimings>(10);\n\n constructor(\n private tracker: RouterlessTracking,\n @Inject(ANGULARTICS2_TOKEN) setup: Angulartics2Token,\n ) {\n const defaultConfig = new DefaultConfig();\n this.settings = { ...defaultConfig, ...setup.settings };\n this.settings.pageTracking = {\n ...defaultConfig.pageTracking,\n ...setup.settings.pageTracking,\n };\n this.tracker\n .trackLocation(this.settings)\n .subscribe((event: TrackNavigationEnd) =>\n this.trackUrlChange(event.url),\n );\n }\n\n /** filters all events when developer mode is true */\n filterDeveloperMode<T>(): MonoTypeOperatorFunction<T> {\n return filter((value, index) => !this.settings.developerMode);\n }\n\n protected trackUrlChange(url: string) {\n if (this.settings.pageTracking.autoTrackVirtualPages && !this.matchesExcludedRoute(url)) {\n const clearedUrl = this.clearUrl(url);\n let path: string;\n if (this.settings.pageTracking.basePath.length) {\n path = this.settings.pageTracking.basePath + clearedUrl;\n } else {\n path = this.tracker.prepareExternalUrl(clearedUrl);\n }\n this.pageTrack.next({ path });\n }\n }\n\n /**\n * Use string literals or regular expressions to exclude routes\n * from automatic pageview tracking.\n *\n * @param url location\n */\n protected matchesExcludedRoute(url: string): boolean {\n for (const excludedRoute of this.settings.pageTracking.excludedRoutes) {\n const matchesRegex = excludedRoute instanceof RegExp && excludedRoute.test(url);\n if (matchesRegex || url.indexOf(excludedRoute as string) !== -1) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Removes id's from tracked route.\n * EX: `/project/12981/feature` becomes `/project/feature`\n *\n * @param url current page path\n */\n protected clearUrl(url: string): string {\n if (this.settings.pageTracking.clearIds || this.settings.pageTracking.clearQueryParams ||\n this.settings.pageTracking.clearHash) {\n return url\n .split('/')\n .map(part => this.settings.pageTracking.clearQueryParams ? part.split('?')[0] : part)\n .map(part => this.settings.pageTracking.clearHash ? part.split('#')[0] : part)\n .filter(part => !this.settings.pageTracking.clearIds || !part.match(this.settings.pageTracking.idsRegExp))\n .join('/');\n }\n return url;\n }\n}\n","import { Location } from '@angular/common';\nimport { Injectable } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\n\nimport { delay, filter, map } from 'rxjs/operators';\n\nimport { Observable } from 'rxjs';\nimport { RouterlessTracking, TrackNavigationEnd } from './routerless';\n\n/**\n * Track Route changes for applications using Angular's\n * default router\n *\n * @link https://angular.io/api/router/Router\n */\n@Injectable({ providedIn: 'root' })\nexport class AngularRouterTracking implements RouterlessTracking {\n constructor(\n private router: Router,\n private location: Location,\n ) {}\n\n trackLocation(settings): Observable<TrackNavigationEnd> {\n return this.router.events.pipe(\n filter(e => e instanceof NavigationEnd),\n filter(() => !settings.developerMode),\n map((e: NavigationEnd) => {\n return { url: e.urlAfterRedirects };\n }),\n delay(0),\n );\n }\n\n prepareExternalUrl(url: string): string {\n return this.location.prepareExternalUrl(url);\n }\n}\n","import {\n AfterContentInit,\n Directive,\n ElementRef,\n Input,\n NgModule,\n Renderer2,\n} from '@angular/core';\nimport { Angulartics2 } from './angulartics2-core';\n\n@Directive({ selector: '[angulartics2On]' })\nexport class Angulartics2On implements AfterContentInit {\n // tslint:disable-next-line:no-input-rename\n @Input('angulartics2On') angulartics2On: string;\n @Input() angularticsAction: string;\n @Input() angularticsCategory: string;\n @Input() angularticsLabel: string;\n @Input() angularticsValue: string;\n @Input() angularticsProperties: any = {};\n\n constructor(\n private elRef: ElementRef,\n private angulartics2: Angulartics2,\n private renderer: Renderer2\n ) { }\n\n ngAfterContentInit() {\n this.renderer.listen(\n this.elRef.nativeElement,\n this.angulartics2On || 'click',\n (event: Event) => this.eventTrack(event),\n );\n }\n\n eventTrack(event: Event) {\n const action = this.angularticsAction; // || this.inferEventName();\n const properties: any = {\n ...this.angularticsProperties,\n eventType: event.type,\n };\n\n if (this.angularticsCategory) {\n properties.category = this.angularticsCategory;\n }\n if (this.angularticsLabel) {\n properties.label = this.angularticsLabel;\n }\n if (this.angularticsValue) {\n properties.value = this.angularticsValue;\n }\n\n this.angulartics2.eventTrack.next({\n action,\n properties,\n });\n }\n\n /*private isCommand() {\n return ['a:', 'button:', 'button:button', 'button:submit', 'input:button', 'input:submit'].indexOf(\n getDOM().tagName(this.el).toLowerCase() + ':' + (getDOM().type(this.el) || '')) >= 0;\n }\n\n private inferEventName() {\n if (this.isCommand()) return getDOM().getText(this.el) || getDOM().getValue(this.el);\n return getDOM().getProperty(this.el, 'id') || getDOM().getProperty(this.el, 'name') || getDOM().tagName(this.el);\n }*/\n}\n\n@NgModule({\n declarations: [Angulartics2On],\n exports: [Angulartics2On],\n})\nexport class Angulartics2OnModule {}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { AngularRouterTracking } from './angular-router';\nimport { Angulartics2Settings } from './angulartics2-config';\nimport { Angulartics2 } from './angulartics2-core';\nimport { ANGULARTICS2_TOKEN } from './angulartics2-token';\nimport { Angulartics2On, Angulartics2OnModule } from './angulartics2On';\nimport { RouterlessTracking } from './routerless';\n\n@NgModule({\n imports: [Angulartics2OnModule],\n exports: [Angulartics2On],\n})\nexport class Angulartics2Module {\n static forRoot(\n settings: Partial<Angulartics2Settings> = {},\n ): ModuleWithProviders<Angulartics2Module> {\n return {\n ngModule: Angulartics2Module,\n providers: [\n { provide: ANGULARTICS2_TOKEN, useValue: { settings } },\n { provide: RouterlessTracking, useClass: AngularRouterTracking },\n Angulartics2,\n ],\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './ga';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhcnRpY3MyLWdhLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYW5ndWxhcnRpY3MyL2dhLyIsInNvdXJjZXMiOlsiYW5ndWxhcnRpY3MyLWdhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxNQUFNLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vZ2EnO1xuIl19
package/ga/esm5/ga.js DELETED
@@ -1,289 +0,0 @@
1
- import { __assign, __decorate, __values } from "tslib";
2
- import { Injectable } from '@angular/core';
3
- import { Angulartics2, GoogleAnalyticsSettings, UserTimings, } from 'angulartics2';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "angulartics2";
6
- var GoogleAnalyticsDefaults = /** @class */ (function () {
7
- function GoogleAnalyticsDefaults() {
8
- this.additionalAccountNames = [];
9
- this.userId = null;
10
- this.transport = '';
11
- this.anonymizeIp = false;
12
- }
13
- return GoogleAnalyticsDefaults;
14
- }());
15
- export { GoogleAnalyticsDefaults };
16
- var Angulartics2GoogleAnalytics = /** @class */ (function () {
17
- function Angulartics2GoogleAnalytics(angulartics2) {
18
- var _this = this;
19
- this.angulartics2 = angulartics2;
20
- this.dimensionsAndMetrics = [];
21
- var defaults = new GoogleAnalyticsDefaults();
22
- // Set the default settings for this module
23
- this.angulartics2.settings.ga = __assign(__assign({}, defaults), this.angulartics2.settings.ga);
24
- this.settings = this.angulartics2.settings.ga;
25
- this.angulartics2.setUsername.subscribe(function (x) { return _this.setUsername(x); });
26
- this.angulartics2.setUserProperties.subscribe(function (x) { return _this.setUserProperties(x); });
27
- }
28
- Angulartics2GoogleAnalytics.prototype.startTracking = function () {
29
- var _this = this;
30
- this.angulartics2.pageTrack
31
- .pipe(this.angulartics2.filterDeveloperMode())
32
- .subscribe(function (x) { return _this.pageTrack(x.path); });
33
- this.angulartics2.eventTrack
34
- .pipe(this.angulartics2.filterDeveloperMode())
35
- .subscribe(function (x) { return _this.eventTrack(x.action, x.properties); });
36
- this.angulartics2.exceptionTrack
37
- .pipe(this.angulartics2.filterDeveloperMode())
38
- .subscribe(function (x) { return _this.exceptionTrack(x); });
39
- this.angulartics2.userTimings
40
- .pipe(this.angulartics2.filterDeveloperMode())
41
- .subscribe(function (x) { return _this.userTimings(x); });
42
- };
43
- Angulartics2GoogleAnalytics.prototype.pageTrack = function (path) {
44
- var e_1, _a, e_2, _b, e_3, _c, e_4, _d;
45
- if (typeof _gaq !== 'undefined' && _gaq) {
46
- _gaq.push(['_trackPageview', path]);
47
- try {
48
- for (var _e = __values(this.angulartics2.settings.ga.additionalAccountNames), _f = _e.next(); !_f.done; _f = _e.next()) {
49
- var accountName = _f.value;
50
- _gaq.push([accountName + '._trackPageview', path]);
51
- }
52
- }
53
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
54
- finally {
55
- try {
56
- if (_f && !_f.done && (_a = _e.return)) _a.call(_e);
57
- }
58
- finally { if (e_1) throw e_1.error; }
59
- }
60
- }
61
- if (typeof ga !== 'undefined' && ga) {
62
- if (this.angulartics2.settings.ga.userId) {
63
- ga('set', '&uid', this.angulartics2.settings.ga.userId);
64
- try {
65
- for (var _g = __values(this.angulartics2.settings.ga.additionalAccountNames), _h = _g.next(); !_h.done; _h = _g.next()) {
66
- var accountName = _h.value;
67
- ga(accountName + '.set', '&uid', this.angulartics2.settings.ga.userId);
68
- }
69
- }
70
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
71
- finally {
72
- try {
73
- if (_h && !_h.done && (_b = _g.return)) _b.call(_g);
74
- }
75
- finally { if (e_2) throw e_2.error; }
76
- }
77
- }
78
- if (this.angulartics2.settings.ga.anonymizeIp) {
79
- ga('set', 'anonymizeIp', true);
80
- try {
81
- for (var _j = __values(this.angulartics2.settings.ga.additionalAccountNames), _k = _j.next(); !_k.done; _k = _j.next()) {
82
- var accountName = _k.value;
83
- ga(accountName + '.set', 'anonymizeIp', true);
84
- }
85
- }
86
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
87
- finally {
88
- try {
89
- if (_k && !_k.done && (_c = _j.return)) _c.call(_j);
90
- }
91
- finally { if (e_3) throw e_3.error; }
92
- }
93
- }
94
- ga('send', 'pageview', path);
95
- try {
96
- for (var _l = __values(this.angulartics2.settings.ga.additionalAccountNames), _m = _l.next(); !_m.done; _m = _l.next()) {
97
- var accountName = _m.value;
98
- ga(accountName + '.send', 'pageview', path);
99
- }
100
- }
101
- catch (e_4_1) { e_4 = { error: e_4_1 }; }
102
- finally {
103
- try {
104
- if (_m && !_m.done && (_d = _l.return)) _d.call(_l);
105
- }
106
- finally { if (e_4) throw e_4.error; }
107
- }
108
- }
109
- };
110
- /**
111
- * Track Event in GA
112
- *
113
- * @param action Associated with the event
114
- * @param properties Comprised of:
115
- * - category (string) and optional
116
- * - label (string)
117
- * - value (integer)
118
- * - noninteraction (boolean)
119
- *
120
- * @link https://developers.google.com/analytics/devguides/collection/gajs/eventTrackerGuide#SettingUpEventTracking
121
- * @link https://developers.google.com/analytics/devguides/collection/analyticsjs/events
122
- */
123
- Angulartics2GoogleAnalytics.prototype.eventTrack = function (action, properties) {
124
- var e_5, _a;
125
- // Google Analytics requires an Event Category
126
- if (!properties || !properties.category) {
127
- properties = properties || {};
128
- properties.category = 'Event';
129
- }
130
- // GA requires that eventValue be an integer, see:
131
- // https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#eventValue
132
- // https://github.com/luisfarzati/angulartics/issues/81
133
- if (properties.value) {
134
- var parsed = parseInt(properties.value, 10);
135
- properties.value = isNaN(parsed) ? 0 : parsed;
136
- }
137
- if (typeof ga !== 'undefined') {
138
- var eventOptions = __assign({ eventCategory: properties.category, eventAction: action, eventLabel: properties.label, eventValue: properties.value, nonInteraction: properties.noninteraction, page: properties.page || location.hash.substring(1) || location.pathname, userId: this.angulartics2.settings.ga.userId, hitCallback: properties.hitCallback }, this.angulartics2.settings.ga.transport && { transport: this.angulartics2.settings.ga.transport });
139
- // add custom dimensions and metrics
140
- this.setDimensionsAndMetrics(properties);
141
- ga('send', 'event', eventOptions);
142
- try {
143
- for (var _b = __values(this.angulartics2.settings.ga.additionalAccountNames), _c = _b.next(); !_c.done; _c = _b.next()) {
144
- var accountName = _c.value;
145
- ga(accountName + '.send', 'event', eventOptions);
146
- }
147
- }
148
- catch (e_5_1) { e_5 = { error: e_5_1 }; }
149
- finally {
150
- try {
151
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
152
- }
153
- finally { if (e_5) throw e_5.error; }
154
- }
155
- }
156
- else if (typeof _gaq !== 'undefined') {
157
- _gaq.push([
158
- '_trackEvent',
159
- properties.category,
160
- action,
161
- properties.label,
162
- properties.value,
163
- properties.noninteraction,
164
- ]);
165
- }
166
- };
167
- /**
168
- * Exception Track Event in GA
169
- *
170
- * @param properties Comprised of the optional fields:
171
- * - fatal (string)
172
- * - description (string)
173
- *
174
- * @https://developers.google.com/analytics/devguides/collection/analyticsjs/exceptions
175
- *
176
- * @link https://developers.google.com/analytics/devguides/collection/analyticsjs/events
177
- */
178
- Angulartics2GoogleAnalytics.prototype.exceptionTrack = function (properties) {
179
- var e_6, _a;
180
- if (properties.fatal === undefined) {
181
- console.log('No "fatal" provided, sending with fatal=true');
182
- properties.fatal = true;
183
- }
184
- properties.exDescription = properties.description;
185
- var eventOptions = {
186
- exFatal: properties.fatal,
187
- exDescription: properties.description,
188
- };
189
- ga('send', 'exception', eventOptions);
190
- try {
191
- for (var _b = __values(this.angulartics2.settings.ga.additionalAccountNames), _c = _b.next(); !_c.done; _c = _b.next()) {
192
- var accountName = _c.value;
193
- ga(accountName + '.send', 'exception', eventOptions);
194
- }
195
- }
196
- catch (e_6_1) { e_6 = { error: e_6_1 }; }
197
- finally {
198
- try {
199
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
200
- }
201
- finally { if (e_6) throw e_6.error; }
202
- }
203
- };
204
- /**
205
- * User Timings Event in GA
206
- *
207
- * @param properties Comprised of the mandatory fields:
208
- * - timingCategory (string)
209
- * - timingVar (string)
210
- * - timingValue (number)
211
- * Properties can also have the optional fields:
212
- * - timingLabel (string)
213
- *
214
- * @link https://developers.google.com/analytics/devguides/collection/analyticsjs/user-timings
215
- */
216
- Angulartics2GoogleAnalytics.prototype.userTimings = function (properties) {
217
- var e_7, _a;
218
- if (!properties ||
219
- !properties.timingCategory ||
220
- !properties.timingVar ||
221
- !properties.timingValue) {
222
- console.error('Properties timingCategory, timingVar, and timingValue are required to be set.');
223
- return;
224
- }
225
- if (typeof ga !== 'undefined') {
226
- ga('send', 'timing', properties);
227
- try {
228
- for (var _b = __values(this.angulartics2.settings.ga.additionalAccountNames), _c = _b.next(); !_c.done; _c = _b.next()) {
229
- var accountName = _c.value;
230
- ga(accountName + '.send', 'timing', properties);
231
- }
232
- }
233
- catch (e_7_1) { e_7 = { error: e_7_1 }; }
234
- finally {
235
- try {
236
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
237
- }
238
- finally { if (e_7) throw e_7.error; }
239
- }
240
- }
241
- };
242
- Angulartics2GoogleAnalytics.prototype.setUsername = function (userId) {
243
- this.angulartics2.settings.ga.userId = userId;
244
- if (typeof ga === 'undefined') {
245
- return;
246
- }
247
- ga('set', 'userId', userId);
248
- };
249
- Angulartics2GoogleAnalytics.prototype.setUserProperties = function (properties) {
250
- this.setDimensionsAndMetrics(properties);
251
- };
252
- Angulartics2GoogleAnalytics.prototype.setDimensionsAndMetrics = function (properties) {
253
- var _this = this;
254
- if (typeof ga === 'undefined') {
255
- return;
256
- }
257
- // clean previously used dimensions and metrics that will not be overriden
258
- this.dimensionsAndMetrics.forEach(function (elem) {
259
- if (!properties.hasOwnProperty(elem)) {
260
- ga('set', elem, undefined);
261
- _this.angulartics2.settings.ga.additionalAccountNames.forEach(function (accountName) {
262
- ga(accountName + ".set", elem, undefined);
263
- });
264
- }
265
- });
266
- this.dimensionsAndMetrics = [];
267
- // add custom dimensions and metrics
268
- Object.keys(properties).forEach(function (key) {
269
- if (key.lastIndexOf('dimension', 0) === 0 ||
270
- key.lastIndexOf('metric', 0) === 0) {
271
- ga('set', key, properties[key]);
272
- _this.angulartics2.settings.ga.additionalAccountNames.forEach(function (accountName) {
273
- ga(accountName + ".set", key, properties[key]);
274
- });
275
- _this.dimensionsAndMetrics.push(key);
276
- }
277
- });
278
- };
279
- Angulartics2GoogleAnalytics.ctorParameters = function () { return [
280
- { type: Angulartics2 }
281
- ]; };
282
- Angulartics2GoogleAnalytics.ɵprov = i0.ɵɵdefineInjectable({ factory: function Angulartics2GoogleAnalytics_Factory() { return new Angulartics2GoogleAnalytics(i0.ɵɵinject(i1.Angulartics2)); }, token: Angulartics2GoogleAnalytics, providedIn: "root" });
283
- Angulartics2GoogleAnalytics = __decorate([
284
- Injectable({ providedIn: 'root' })
285
- ], Angulartics2GoogleAnalytics);
286
- return Angulartics2GoogleAnalytics;
287
- }());
288
- export { Angulartics2GoogleAnalytics };
289
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2EuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFydGljczIvZ2EvIiwic291cmNlcyI6WyJnYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQ0wsWUFBWSxFQUNaLHVCQUF1QixFQUN2QixXQUFXLEdBQ1osTUFBTSxjQUFjLENBQUM7OztBQU90QjtJQUFBO1FBQ0UsMkJBQXNCLEdBQUcsRUFBRSxDQUFDO1FBQzVCLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFDZCxjQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2YsZ0JBQVcsR0FBRyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUFELDhCQUFDO0FBQUQsQ0FBQyxBQUxELElBS0M7O0FBR0Q7SUFJRSxxQ0FBb0IsWUFBMEI7UUFBOUMsaUJBVUM7UUFWbUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFIOUMseUJBQW9CLEdBQUcsRUFBRSxDQUFDO1FBSXhCLElBQU0sUUFBUSxHQUFHLElBQUksdUJBQXVCLEVBQUUsQ0FBQztRQUMvQywyQ0FBMkM7UUFDM0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBRSx5QkFDeEIsUUFBUSxHQUNSLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FDakMsQ0FBQztRQUNGLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzlDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxVQUFDLENBQVMsSUFBSyxPQUFBLEtBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQW5CLENBQW1CLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLEtBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFD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LElBQUksQ0FBQyxvQkFBb0IsR0FBRyxFQUFFLENBQUM7UUFFL0Isb0NBQW9DO1FBQ3BDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQUEsR0FBRztZQUNqQyxJQUNFLEdBQUcsQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUM7Z0JBQ3JDLEdBQUcsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFDbEM7Z0JBQ0EsRUFBRSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBRWhDLEtBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQzFELFVBQUMsV0FBbUI7b0JBQ2xCLEVBQUUsQ0FBSSxXQUFXLFNBQU0sRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELENBQUMsQ0FDRixDQUFDO2dCQUNGLEtBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDckM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O2dCQS9OaUMsWUFBWTs7O0lBSm5DLDJCQUEyQjtRQUR2QyxVQUFVLENBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUM7T0FDdEIsMkJBQTJCLENBb092QztzQ0F6UEQ7Q0F5UEMsQUFwT0QsSUFvT0M7U0FwT1ksMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBBbmd1bGFydGljczIsXG4gIEdvb2dsZUFuYWx5dGljc1NldHRpbmdzLFxuICBVc2VyVGltaW5ncyxcbn0gZnJvbSAnYW5ndWxhcnRpY3MyJztcblxuXG5kZWNsYXJlIHZhciBfZ2FxOiBHb29nbGVBbmFseXRpY3NDb2RlO1xuZGVjbGFyZSB2YXIgZ2E6IFVuaXZlcnNhbEFuYWx5dGljcy5nYTtcbmRlY2xhcmUgdmFyIGxvY2F0aW9uOiBhbnk7XG5cbmV4cG9ydCBjbGFzcyBHb29nbGVBbmFseXRpY3NEZWZhdWx0cyBpbXBsZW1lbnRzIEdvb2dsZUFuYWx5dGljc1NldHRpbmdzIHtcbiAgYWRkaXRpb25hbEFjY291bnROYW1lcyA9IFtdO1xuICB1c2VySWQgPSBudWxsO1xuICB0cmFuc3BvcnQgPSAnJztcbiAgYW5vbnltaXplSXAgPSBmYWxzZTtcbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBbmd1bGFydGljczJHb29nbGVBbmFseXRpY3Mge1xuICBkaW1lbnNpb25zQW5kTWV0cmljcyA9IFtdO1xuICBzZXR0aW5nczogUGFydGlhbDxHb29nbGVBbmFseXRpY3NTZXR0aW5ncz47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhbmd1bGFydGljczI6IEFuZ3VsYXJ0aWNzMikge1xuICAgIGNvbnN0IGRlZmF1bHRzID0gbmV3IEdvb2dsZUFuYWx5dGljc0RlZmF1bHRzKCk7XG4gICAgLy8gU2V0IHRoZSBkZWZhdWx0IHNldHRpbmdzIGZvciB0aGlzIG1vZHVsZVxuICAgIHRoaXMuYW5ndWxhcnRpY3MyLnNldHRpbmdzLmdhID0ge1xuICAgICAgLi4uZGVmYXVsdHMsXG4gICAgICAuLi50aGlzLmFuZ3VsYXJ0aWNzMi5zZXR0aW5ncy5nYSxcbiAgICB9O1xuICAgIHRoaXMuc2V0dGluZ3MgPSB0aGlzLmFuZ3VsYXJ0aWNzMi5zZXR0aW5ncy5nYTtcbiAgICB0aGlzLmFuZ3VsYXJ0aWNzMi5zZXRVc2VybmFtZS5zdWJzY3JpYmUoKHg6IHN0cmluZykgPT4gdGhpcy5zZXRVc2VybmFtZSh4KSk7XG4gICAgdGhpcy5hbmd1bGFydGljczIuc2V0VXNlclByb3BlcnRpZXMuc3Vic2NyaWJlKHggPT4gdGhpcy5zZXRVc2VyUHJvcGVydGllcyh4KSk7XG4gIH1cblxuICBzdGFydFRyYWNraW5nKCk6IHZvaWQge1xuICAgIHRoaXMuYW5ndWxhcnRpY3MyLnBhZ2VUcmFja1xuICAgICAgLnBpcGUodGhpcy5hbmd1bGFydGljczIuZmlsdGVyRGV2ZWxvcGVyTW9kZSgpKVxuICAgICAgLnN1YnNjcmliZSh4ID0+IHRoaXMucGFnZVRyYWNrKHgucGF0aCkpO1xuICAgIHRoaXMuYW5ndWxhcnRpY3MyLmV2ZW50VHJhY2tcbiAgICAgIC5waXBlKHRoaXMuYW5ndWxhcnRpY3MyLmZpbHRlckRldmVsb3Blck1vZGUoKSlcbiAgICAgIC5zdWJzY3JpYmUoeCA9PiB0aGlzLmV2ZW50VHJhY2soeC5hY3Rpb24sIHgucHJvcGVydGllcykpO1xuICAgIHRoaXMuYW5ndWxhcnRpY3MyLmV4Y2VwdGlvblRyYWNrXG4gICAgICAucGlwZSh0aGlzLmFuZ3VsYXJ0aWNzMi5maWx0ZXJEZXZlbG9wZXJNb2RlKCkpXG4gICAgICAuc3Vic2NyaWJlKHggPT4gdGhpcy5leGNlcHRpb25UcmFjayh4KSk7XG4gICAgdGhpcy5hbmd1bGFydGljczIudXNlclRpbWluZ3NcbiAgICAgIC5waXBlKHRoaXMuYW5ndWxhcnRpY3MyLmZpbHRlckRldmVsb3Blck1vZGUoKSlcbiAgICAgIC5zdWJzY3JpYmUoeCA9PiB0aGlzLnVzZXJUaW1pbmdzKHgpKTtcbiAgfVxuXG4gIHBhZ2VUcmFjayhwYXRoOiBzdHJpbmcpIHtcbiAgICBpZiAodHlwZW9mIF9nYXEgIT09ICd1bmRlZmluZWQnICYmIF9nYXEpIHtcbiAgICAgIF9nYXEucHVzaChbJ190cmFja1BhZ2V2aWV3JywgcGF0aF0pO1xuICAgICAgZm9yIChjb25zdCBhY2NvdW50TmFtZSBvZiB0aGlzLmFuZ3VsYXJ0aWNzMi5zZXR0aW5ncy5nYS5hZGRpdGlvbmFsQWNjb3VudE5hbWVzKSB7XG4gICAgICAgIF9nYXEucHVzaChbYWNjb3VudE5hbWUgKyAnLl90cmFja1BhZ2V2aWV3JywgcGF0aF0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodHlwZW9mIGdhICE9PSAndW5kZWZpbmVkJyAmJiBnYSkge1xuICAgICAgaWYgKHRoaXMuYW5ndWxhcnRpY3MyLnNldHRpbmdzLmdhLnVzZXJJZCkge1xuICAgICAgICBnYSgnc2V0JywgJyZ1aWQnLCB0aGlzLmFuZ3VsYXJ0aWNzMi5zZXR0aW5ncy5nYS51c2VySWQpO1xuICAgICAgICBmb3IgKGNvbnN0IGFjY291bnROYW1lIG9mIHRoaXMuYW5ndWxhcnRpY3MyLnNldHRpbmdzLmdhLmFkZGl0aW9uYWxBY2NvdW50TmFtZXMpIHtcbiAgICAgICAgICBnYShhY2NvdW50TmFtZSArICcuc2V0JywgJyZ1aWQnLCB0aGlzLmFuZ3VsYXJ0aWNzMi5zZXR0aW5ncy5nYS51c2VySWQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5hbmd1bGFydGljczIuc2V0dGluZ3MuZ2EuYW5vbnltaXplSXApIHtcbiAgICAgICAgZ2EoJ3NldCcsICdhbm9ueW1pemVJcCcsIHRydWUpO1xuICAgICAgICBmb3IgKGNvbnN0IGFjY291bnROYW1lIG9mIHRoaXMuYW5ndWxhcnRpY3MyLnNldHRpbmdzLmdhLmFkZGl0aW9uYWxBY2NvdW50TmFtZXMpIHtcbiAgICAgICAgICBnYShhY2NvdW50TmFtZSArICcuc2V0JywgJ2Fub255bWl6ZUlwJywgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGdhKCdzZW5kJywgJ3BhZ2V2aWV3JywgcGF0aCk7XG4gICAgICBmb3IgKGNvbnN0IGFjY291bnROYW1lIG9mIHRoaXMuYW5ndWxhcnRpY3MyLnNldHRpbmdzLmdhLmFkZGl0aW9uYWxBY2NvdW50TmFtZXMpIHtcbiAgICAgICAgZ2EoYWNjb3VudE5hbWUgKyAnLnNlbmQnLCAncGFnZXZpZXcnLCBwYXRoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVHJhY2sgRXZlbnQgaW4gR0FcbiAgICpcbiAgICogQHBhcmFtIGFjdGlvbiBBc3NvY2lhdGVkIHdpdGggdGhlIGV2ZW50XG4gICAqIEBwYXJhbSBwcm9wZXJ0aWVzIENvbXByaXNlZCBvZjpcbiAgICogIC0gY2F0ZWdvcnkgKHN0cmluZykgYW5kIG9wdGlvbmFsXG4gICAqICAtIGxhYmVsIChzdHJpbmcpXG4gICAqICAtIHZhbHVlIChpbnRlZ2VyKVxuICAgKiAgLSBub25pbnRlcmFjdGlvbiAoYm9vbGVhbilcbiAgICpcbiAgICogQGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vYW5hbHl0aWNzL2Rldmd1aWRlcy9jb2xsZWN0aW9uL2dhanMvZXZlbnRUcmFja2VyR3VpZGUjU2V0dGluZ1VwRXZlbnRUcmFja2luZ1xuICAgKiBAbGluayBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9hbmFseXRpY3MvZGV2Z3VpZGVzL2NvbGxlY3Rpb24vYW5hbHl0aWNzanMvZXZlbnRzXG4gICAqL1xuICBldmVudFRyYWNrKGFjdGlvbjogc3RyaW5nLCBwcm9wZXJ0aWVzOiBhbnkpIHtcbiAgICAvLyBHb29nbGUgQW5hbHl0aWNzIHJlcXVpcmVzIGFuIEV2ZW50IENhdGVnb3J5XG4gICAgaWYgKCFwcm9wZXJ0aWVzIHx8ICFwcm9wZXJ0aWVzLmNhdGVnb3J5KSB7XG4gICAgICBwcm9wZXJ0aWVzID0gcHJvcGVydGllcyB8fCB7fTtcbiAgICAgIHByb3BlcnRpZXMuY2F0ZWdvcnkgPSAnRXZlbnQnO1xuICAgIH1cbiAgICAvLyBHQSByZXF1aXJlcyB0aGF0IGV2ZW50VmFsdWUgYmUgYW4gaW50ZWdlciwgc2VlOlxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL2FuYWx5dGljcy9kZXZndWlkZXMvY29sbGVjdGlvbi9hbmFseXRpY3Nqcy9maWVsZC1yZWZlcmVuY2UjZXZlbnRWYWx1ZVxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9sdWlzZmFyemF0aS9hbmd1bGFydGljcy9pc3N1ZXMvODFcbiAgICBpZiAocHJvcGVydGllcy52YWx1ZSkge1xuICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2VJbnQocHJvcGVydGllcy52YWx1ZSwgMTApO1xuICAgICAgcHJvcGVydGllcy52YWx1ZSA9IGlzTmFOKHBhcnNlZCkgPyAwIDogcGFyc2VkO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZ2EgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25zdCBldmVudE9wdGlvbnMgPSB7XG4gICAgICAgIGV2ZW50Q2F0ZWdvcnk6IHByb3BlcnRpZXMuY2F0ZWdvcnksXG4gICAgICAgIGV2ZW50QWN0aW9uOiBhY3Rpb24sXG4gICAgICAgIGV2ZW50TGFiZWw6IHByb3BlcnRpZXMubGFiZWwsXG4gICAgICAgIGV2ZW50VmFsdWU6IHByb3BlcnRpZXMudmFsdWUsXG4gICAgICAgIG5vbkludGVyYWN0aW9uOiBwcm9wZXJ0aWVzLm5vbmludGVyYWN0aW9uLFxuICAgICAgICBwYWdlOiBwcm9wZXJ0aWVzLnBhZ2UgfHwgbG9jYXRpb24uaGFzaC5zdWJzdHJpbmcoMSkgfHwgbG9jYXRpb24ucGF0aG5hbWUsXG4gICAgICAgIHVzZXJJZDogdGhpcy5hbmd1bGFydGljczIuc2V0dGluZ3MuZ2EudXNlcklkLFxuICAgICAgICBoaXRDYWxsYmFjazogcHJvcGVydGllcy5oaXRDYWxsYmFjayxcbiAgICAgICAgLi4uIHRoaXMuYW5ndWxhcnRpY3MyLnNldHRpbmdzLmdhLnRyYW5zcG9ydCAmJiB7IHRyYW5zcG9ydDogdGhpcy5hbmd1bGFydGljczIuc2V0dGluZ3MuZ2EudHJhbnNwb3J0IH1cbiAgICAgIH07XG5cbiAgICAgIC8vIGFkZCBjdXN0b20gZGltZW5zaW9ucyBhbmQgbWV0cmljc1xuICAgICAgdGhpcy5zZXREaW1lbnNpb25zQW5kTWV0cmljcyhwcm9wZXJ0aWVzKTtcblxuICAgICAgZ2EoJ3NlbmQnLCAnZXZlbnQnLCBldmVudE9wdGlvbnMpO1xuXG4gICAgICBmb3IgKGNvbnN0IGFjY291bnROYW1lIG9mIHRoaXMuYW5ndWxhcnRpY3MyLnNldHRpbmdzLmdhLmFkZGl0aW9uYWxBY2NvdW50TmFtZXMpIHtcbiAgICAgICAgZ2EoYWNjb3VudE5hbWUgKyAnLnNlbmQnLCAnZXZlbnQnLCBldmVudE9wdGlvbnMpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIF9nYXEgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBfZ2FxLnB1c2goW1xuICAgICAgICAnX3RyYWNrRXZlbnQnLFxuICAgICAgICBwcm9wZXJ0aWVzLmNhdGVnb3J5LFxuICAgICAgICBhY3Rpb24sXG4gICAgICAgIHByb3BlcnRpZXMubGFiZWwsXG4gICAgICAgIHByb3BlcnRpZXMudmFsdWUsXG4gICAgICAgIHByb3BlcnRpZXMubm9uaW50ZXJhY3Rpb24sXG4gICAgICBdKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRXhjZXB0aW9uIFRyYWNrIEV2ZW50IGluIEdBXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wZXJ0aWVzIENvbXByaXNlZCBvZiB0aGUgb3B0aW9uYWwgZmllbGRzOlxuICAgKiAgLSBmYXRhbCAoc3RyaW5nKVxuICAgKiAgLSBkZXNjcmlwdGlvbiAoc3RyaW5nKVxuICAgKlxuICAgKiBAaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vYW5hbHl0aWNzL2Rldmd1aWRlcy9jb2xsZWN0aW9uL2FuYWx5dGljc2pzL2V4Y2VwdGlvbnNcbiAgICpcbiAgICogQGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vYW5hbHl0aWNzL2Rldmd1aWRlcy9jb2xsZWN0aW9uL2FuYWx5dGljc2pzL2V2ZW50c1xuICAgKi9cbiAgZXhjZXB0aW9uVHJhY2socHJvcGVydGllczogYW55KSB7XG4gICAgaWYgKHByb3BlcnRpZXMuZmF0YWwgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc29sZS5sb2coJ05vIFwiZmF0YWxcIiBwcm92aWRlZCwgc2VuZGluZyB3aXRoIGZhdGFsPXRydWUnKTtcbiAgICAgIHByb3BlcnRpZXMuZmF0YWwgPSB0cnVlO1xuICAgIH1cblxuICAgIHByb3BlcnRpZXMuZXhEZXNjcmlwdGlvbiA9IHByb3BlcnRpZXMuZGVzY3JpcHRpb247XG5cbiAgICBjb25zdCBldmVudE9wdGlvbnMgPSB7XG4gICAgICBleEZhdGFsOiBwcm9wZXJ0aWVzLmZhdGFsLFxuICAgICAgZXhEZXNjcmlwdGlvbjogcHJvcGVydGllcy5kZXNjcmlwdGlvbixcbiAgICB9O1xuXG4gICAgZ2EoJ3NlbmQnLCAnZXhjZXB0aW9uJywgZXZlbnRPcHRpb25zKTtcbiAgICBmb3IgKGNvbnN0IGFjY291bnROYW1lIG9mIHRoaXMuYW5ndWxhcnRpY3MyLnNldHRpbmdzLmdhLmFkZGl0aW9uYWxBY2NvdW50TmFtZXMpIHtcbiAgICAgIGdhKGFjY291bnROYW1lICsgJy5zZW5kJywgJ2V4Y2VwdGlvbicsIGV2ZW50T3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVzZXIgVGltaW5ncyBFdmVudCBpbiBHQVxuICAgKlxuICAgKiBAcGFyYW0gcHJvcGVydGllcyBDb21wcmlzZWQgb2YgdGhlIG1hbmRhdG9yeSBmaWVsZHM6XG4gICAqICAtIHRpbWluZ0NhdGVnb3J5IChzdHJpbmcpXG4gICAqICAtIHRpbWluZ1ZhciAoc3RyaW5nKVxuICAgKiAgLSB0aW1pbmdWYWx1ZSAobnVtYmVyKVxuICAgKiBQcm9wZXJ0aWVzIGNhbiBhbHNvIGhhdmUgdGhlIG9wdGlvbmFsIGZpZWxkczpcbiAgICogIC0gdGltaW5nTGFiZWwgKHN0cmluZylcbiAgICpcbiAgICogQGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vYW5hbHl0aWNzL2Rldmd1aWRlcy9jb2xsZWN0aW9uL2FuYWx5dGljc2pzL3VzZXItdGltaW5nc1xuICAgKi9cbiAgdXNlclRpbWluZ3MocHJvcGVydGllczogVXNlclRpbWluZ3MpIHtcbiAgICBpZiAoXG4gICAgICAhcHJvcGVydGllcyB8fFxuICAgICAgIXByb3BlcnRpZXMudGltaW5nQ2F0ZWdvcnkgfHxcbiAgICAgICFwcm9wZXJ0aWVzLnRpbWluZ1ZhciB8fFxuICAgICAgIXByb3BlcnRpZXMudGltaW5nVmFsdWVcbiAgICApIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICdQcm9wZXJ0aWVzIHRpbWluZ0NhdGVnb3J5LCB0aW1pbmdWYXIsIGFuZCB0aW1pbmdWYWx1ZSBhcmUgcmVxdWlyZWQgdG8gYmUgc2V0LicsXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZ2EgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBnYSgnc2VuZCcsICd0aW1pbmcnLCBwcm9wZXJ0aWVzKTtcbiAgICAgIGZvciAoY29uc3QgYWNjb3VudE5hbWUgb2YgdGhpcy5hbmd1bGFydGljczIuc2V0dGluZ3MuZ2EuYWRkaXRpb25hbEFjY291bnROYW1lcykge1xuICAgICAgICBnYShhY2NvdW50TmFtZSArICcuc2VuZCcsICd0aW1pbmcnLCBwcm9wZXJ0aWVzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXRVc2VybmFtZSh1c2VySWQ6IHN0cmluZykge1xuICAgIHRoaXMuYW5ndWxhcnRpY3MyLnNldHRpbmdzLmdhLnVzZXJJZCA9IHVzZXJJZDtcbiAgICBpZiAodHlwZW9mIGdhID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBnYSgnc2V0JywgJ3VzZXJJZCcsIHVzZXJJZCk7XG4gIH1cblxuICBzZXRVc2VyUHJvcGVydGllcyhwcm9wZXJ0aWVzOiBhbnkpIHtcbiAgICB0aGlzLnNldERpbWVuc2lvbnNBbmRNZXRyaWNzKHByb3BlcnRpZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXREaW1lbnNpb25zQW5kTWV0cmljcyhwcm9wZXJ0aWVzOiBhbnkpIHtcbiAgICBpZiAodHlwZW9mIGdhID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBjbGVhbiBwcmV2aW91c2x5IHVzZWQgZGltZW5zaW9ucyBhbmQgbWV0cmljcyB0aGF0IHdpbGwgbm90IGJlIG92ZXJyaWRlblxuICAgIHRoaXMuZGltZW5zaW9uc0FuZE1ldHJpY3MuZm9yRWFjaChlbGVtID0+IHtcbiAgICAgIGlmICghcHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShlbGVtKSkge1xuICAgICAgICBnYSgnc2V0JywgZWxlbSwgdW5kZWZpbmVkKTtcblxuICAgICAgICB0aGlzLmFuZ3VsYXJ0aWNzMi5zZXR0aW5ncy5nYS5hZGRpdGlvbmFsQWNjb3VudE5hbWVzLmZvckVhY2goXG4gICAgICAgICAgKGFjY291bnROYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGdhKGAke2FjY291bnROYW1lfS5zZXRgLCBlbGVtLCB1bmRlZmluZWQpO1xuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5kaW1lbnNpb25zQW5kTWV0cmljcyA9IFtdO1xuXG4gICAgLy8gYWRkIGN1c3RvbSBkaW1lbnNpb25zIGFuZCBtZXRyaWNzXG4gICAgT2JqZWN0LmtleXMocHJvcGVydGllcykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICBrZXkubGFzdEluZGV4T2YoJ2RpbWVuc2lvbicsIDApID09PSAwIHx8XG4gICAgICAgIGtleS5sYXN0SW5kZXhPZignbWV0cmljJywgMCkgPT09IDBcbiAgICAgICkge1xuICAgICAgICBnYSgnc2V0Jywga2V5LCBwcm9wZXJ0aWVzW2tleV0pO1xuXG4gICAgICAgIHRoaXMuYW5ndWxhcnRpY3MyLnNldHRpbmdzLmdhLmFkZGl0aW9uYWxBY2NvdW50TmFtZXMuZm9yRWFjaChcbiAgICAgICAgICAoYWNjb3VudE5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgZ2EoYCR7YWNjb3VudE5hbWV9LnNldGAsIGtleSwgcHJvcGVydGllc1trZXldKTtcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmRpbWVuc2lvbnNBbmRNZXRyaWNzLnB1c2goa2V5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19