angulartics2 9.1.0 → 12.0.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 (502) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +8 -9
  3. package/angular-router.d.ts +3 -0
  4. package/angulartics2-core.d.ts +3 -1
  5. package/angulartics2.d.ts +1 -0
  6. package/angulartics2.module.d.ts +5 -0
  7. package/angulartics2On.d.ts +6 -0
  8. package/esm2020/angular-router.mjs +33 -0
  9. package/esm2020/angulartics2-config.mjs +19 -0
  10. package/esm2020/angulartics2-core.mjs +93 -0
  11. package/esm2020/angulartics2-interfaces.mjs +2 -0
  12. package/esm2020/angulartics2-token.mjs +3 -0
  13. package/esm2020/angulartics2.mjs +5 -0
  14. package/esm2020/angulartics2.module.mjs +30 -0
  15. package/esm2020/angulartics2On.mjs +66 -0
  16. package/esm2020/providers/adobeanalytics/adobeanalytics.mjs +98 -0
  17. package/esm2020/providers/amplitude/amplitude.mjs +68 -0
  18. package/esm2020/providers/appinsights/appinsights.mjs +118 -0
  19. package/esm2020/providers/baidu/baidu.mjs +81 -0
  20. package/esm2020/providers/clicky/clicky.interfaces.mjs +2 -0
  21. package/esm2020/providers/clicky/clicky.mjs +64 -0
  22. package/esm2020/providers/facebook/facebook.mjs +45 -0
  23. package/esm2020/providers/ga/ga.mjs +219 -0
  24. package/esm2020/providers/ga-enhanced-ecom/ga-enhanced-ecom-options.mjs +7 -0
  25. package/esm2020/providers/ga-enhanced-ecom/ga-enhanced-ecom.mjs +32 -0
  26. package/esm2020/providers/gosquared/gosquared.mjs +55 -0
  27. package/esm2020/providers/gst/gst-interfaces.mjs +2 -0
  28. package/esm2020/providers/gst/gst.mjs +197 -0
  29. package/esm2020/providers/gtm/gtm.mjs +114 -0
  30. package/esm2020/providers/hubspot/hubspot.mjs +40 -0
  31. package/esm2020/providers/ibm-digital-analytics/ibm-digital-analytics.mjs +125 -0
  32. package/esm2020/providers/intercom/intercom.mjs +60 -0
  33. package/esm2020/providers/kissmetrics/kissmetrics.mjs +40 -0
  34. package/esm2020/providers/launch/launch.mjs +59 -0
  35. package/esm2020/providers/matomo/matomo.mjs +303 -0
  36. package/esm2020/providers/mixpanel/mixpanel.mjs +109 -0
  37. package/esm2020/providers/pyze/pyze.mjs +65 -0
  38. package/esm2020/providers/segment/segment.mjs +100 -0
  39. package/esm2020/providers/splunk/splunk.mjs +46 -0
  40. package/esm2020/providers/woopra/woopra.mjs +61 -0
  41. package/esm2020/public_api.mjs +32 -0
  42. package/esm2020/routerless.mjs +10 -0
  43. package/esm2020/routerless.module.mjs +28 -0
  44. package/fesm2015/angulartics2.mjs +2248 -0
  45. package/fesm2015/angulartics2.mjs.map +1 -0
  46. package/fesm2020/angulartics2.mjs +2294 -0
  47. package/fesm2020/angulartics2.mjs.map +1 -0
  48. package/package.json +28 -16
  49. package/{adobeanalytics → providers/adobeanalytics}/README.md +1 -1
  50. package/{adobeanalytics → providers/adobeanalytics}/adobeanalytics.d.ts +4 -1
  51. package/{amplitude → providers/amplitude}/README.md +1 -1
  52. package/{amplitude → providers/amplitude}/amplitude.d.ts +4 -1
  53. package/{appinsights → providers/appinsights}/README.md +1 -1
  54. package/{appinsights → providers/appinsights}/appinsights.d.ts +5 -1
  55. package/{baidu → providers/baidu}/README.md +1 -1
  56. package/{baidu → providers/baidu}/baidu.d.ts +4 -1
  57. package/{clicky → providers/clicky}/README.md +1 -1
  58. package/{clicky → providers/clicky}/clicky.d.ts +4 -1
  59. package/{clicky → providers/clicky}/clicky.interfaces.d.ts +0 -0
  60. package/{facebook → providers/facebook}/README.md +1 -1
  61. package/{facebook → providers/facebook}/facebook.d.ts +4 -1
  62. package/{ga → providers/ga}/README.md +1 -1
  63. package/{ga → providers/ga}/ga.d.ts +6 -1
  64. package/{ga-enhanced-ecom → providers/ga-enhanced-ecom}/README.md +1 -1
  65. package/{ga-enhanced-ecom → providers/ga-enhanced-ecom}/ga-enhanced-ecom-options.d.ts +0 -0
  66. package/{ga-enhanced-ecom → providers/ga-enhanced-ecom}/ga-enhanced-ecom.d.ts +3 -0
  67. package/{gosquared → providers/gosquared}/README.md +1 -1
  68. package/{gosquared → providers/gosquared}/gosquared.d.ts +4 -1
  69. package/{gst → providers/gst}/README.md +2 -2
  70. package/{gst → providers/gst}/gst-interfaces.d.ts +0 -0
  71. package/{gst → providers/gst}/gst.d.ts +5 -1
  72. package/{gtm → providers/gtm}/README.md +2 -2
  73. package/{gtm → providers/gtm}/gtm.d.ts +5 -1
  74. package/{hubspot → providers/hubspot}/README.md +1 -1
  75. package/{hubspot → providers/hubspot}/hubspot.d.ts +4 -1
  76. package/{ibm-digital-analytics → providers/ibm-digital-analytics}/README.md +2 -2
  77. package/{ibm-digital-analytics → providers/ibm-digital-analytics}/ibm-digital-analytics.d.ts +4 -1
  78. package/{intercom → providers/intercom}/README.md +1 -1
  79. package/{intercom → providers/intercom}/intercom.d.ts +4 -1
  80. package/{kissmetrics → providers/kissmetrics}/README.md +1 -1
  81. package/{kissmetrics → providers/kissmetrics}/kissmetrics.d.ts +4 -1
  82. package/{launch → providers/launch}/README.md +3 -3
  83. package/{launch → providers/launch}/launch.d.ts +4 -1
  84. package/{piwik → providers/matomo}/README.md +20 -20
  85. package/providers/matomo/matomo.d.ts +140 -0
  86. package/{mixpanel → providers/mixpanel}/README.md +2 -2
  87. package/{mixpanel → providers/mixpanel}/mixpanel.d.ts +4 -1
  88. package/{pyze → providers/pyze}/README.md +1 -1
  89. package/{pyze → providers/pyze}/pyze.d.ts +4 -1
  90. package/{segment → providers/segment}/README.md +3 -3
  91. package/{segment → providers/segment}/segment.d.ts +4 -1
  92. package/{splunk → providers/splunk}/README.md +2 -2
  93. package/providers/splunk/splunk.d.ts +11 -0
  94. package/{woopra → providers/woopra}/README.md +1 -1
  95. package/{woopra → providers/woopra}/woopra.d.ts +4 -1
  96. package/public_api.d.ts +23 -0
  97. package/routerless.module.d.ts +10 -0
  98. package/adobeanalytics/angulartics2-adobeanalytics.d.ts +0 -4
  99. package/adobeanalytics/angulartics2-adobeanalytics.metadata.json +0 -1
  100. package/adobeanalytics/bundles/angulartics2-adobeanalytics.umd.js +0 -326
  101. package/adobeanalytics/bundles/angulartics2-adobeanalytics.umd.js.map +0 -1
  102. package/adobeanalytics/bundles/angulartics2-adobeanalytics.umd.min.js +0 -16
  103. package/adobeanalytics/bundles/angulartics2-adobeanalytics.umd.min.js.map +0 -1
  104. package/adobeanalytics/esm2015/adobeanalytics.js +0 -105
  105. package/adobeanalytics/esm2015/angulartics2-adobeanalytics.js +0 -5
  106. package/adobeanalytics/esm5/adobeanalytics.js +0 -108
  107. package/adobeanalytics/esm5/angulartics2-adobeanalytics.js +0 -5
  108. package/adobeanalytics/fesm2015/angulartics2-adobeanalytics.js +0 -108
  109. package/adobeanalytics/fesm2015/angulartics2-adobeanalytics.js.map +0 -1
  110. package/adobeanalytics/fesm5/angulartics2-adobeanalytics.js +0 -111
  111. package/adobeanalytics/fesm5/angulartics2-adobeanalytics.js.map +0 -1
  112. package/adobeanalytics/package.json +0 -22
  113. package/amplitude/angulartics2-amplitude.d.ts +0 -4
  114. package/amplitude/angulartics2-amplitude.metadata.json +0 -1
  115. package/amplitude/bundles/angulartics2-amplitude.umd.js +0 -298
  116. package/amplitude/bundles/angulartics2-amplitude.umd.js.map +0 -1
  117. package/amplitude/bundles/angulartics2-amplitude.umd.min.js +0 -16
  118. package/amplitude/bundles/angulartics2-amplitude.umd.min.js.map +0 -1
  119. package/amplitude/esm2015/amplitude.js +0 -75
  120. package/amplitude/esm2015/angulartics2-amplitude.js +0 -5
  121. package/amplitude/esm5/amplitude.js +0 -78
  122. package/amplitude/esm5/angulartics2-amplitude.js +0 -5
  123. package/amplitude/fesm2015/angulartics2-amplitude.js +0 -79
  124. package/amplitude/fesm2015/angulartics2-amplitude.js.map +0 -1
  125. package/amplitude/fesm5/angulartics2-amplitude.js +0 -82
  126. package/amplitude/fesm5/angulartics2-amplitude.js.map +0 -1
  127. package/amplitude/package.json +0 -22
  128. package/angulartics2.metadata.json +0 -1
  129. package/appinsights/angulartics2-appinsights.d.ts +0 -4
  130. package/appinsights/angulartics2-appinsights.metadata.json +0 -1
  131. package/appinsights/bundles/angulartics2-appinsights.umd.js +0 -344
  132. package/appinsights/bundles/angulartics2-appinsights.umd.js.map +0 -1
  133. package/appinsights/bundles/angulartics2-appinsights.umd.min.js +0 -16
  134. package/appinsights/bundles/angulartics2-appinsights.umd.min.js.map +0 -1
  135. package/appinsights/esm2015/angulartics2-appinsights.js +0 -5
  136. package/appinsights/esm2015/appinsights.js +0 -124
  137. package/appinsights/esm5/angulartics2-appinsights.js +0 -5
  138. package/appinsights/esm5/appinsights.js +0 -129
  139. package/appinsights/fesm2015/angulartics2-appinsights.js +0 -126
  140. package/appinsights/fesm2015/angulartics2-appinsights.js.map +0 -1
  141. package/appinsights/fesm5/angulartics2-appinsights.js +0 -130
  142. package/appinsights/fesm5/angulartics2-appinsights.js.map +0 -1
  143. package/appinsights/package.json +0 -22
  144. package/baidu/angulartics2-baidu.d.ts +0 -4
  145. package/baidu/angulartics2-baidu.metadata.json +0 -1
  146. package/baidu/bundles/angulartics2-baidu.umd.js +0 -308
  147. package/baidu/bundles/angulartics2-baidu.umd.js.map +0 -1
  148. package/baidu/bundles/angulartics2-baidu.umd.min.js +0 -16
  149. package/baidu/bundles/angulartics2-baidu.umd.min.js.map +0 -1
  150. package/baidu/esm2015/angulartics2-baidu.js +0 -5
  151. package/baidu/esm2015/baidu.js +0 -85
  152. package/baidu/esm5/angulartics2-baidu.js +0 -5
  153. package/baidu/esm5/baidu.js +0 -88
  154. package/baidu/fesm2015/angulartics2-baidu.js +0 -89
  155. package/baidu/fesm2015/angulartics2-baidu.js.map +0 -1
  156. package/baidu/fesm5/angulartics2-baidu.js +0 -92
  157. package/baidu/fesm5/angulartics2-baidu.js.map +0 -1
  158. package/baidu/package.json +0 -22
  159. package/bundles/angulartics2.umd.js +0 -489
  160. package/bundles/angulartics2.umd.js.map +0 -1
  161. package/bundles/angulartics2.umd.min.js +0 -16
  162. package/bundles/angulartics2.umd.min.js.map +0 -1
  163. package/clicky/angulartics2-clicky.d.ts +0 -4
  164. package/clicky/angulartics2-clicky.metadata.json +0 -1
  165. package/clicky/bundles/angulartics2-clicky.umd.js +0 -290
  166. package/clicky/bundles/angulartics2-clicky.umd.js.map +0 -1
  167. package/clicky/bundles/angulartics2-clicky.umd.min.js +0 -16
  168. package/clicky/bundles/angulartics2-clicky.umd.min.js.map +0 -1
  169. package/clicky/esm2015/angulartics2-clicky.js +0 -5
  170. package/clicky/esm2015/clicky.interfaces.js +0 -1
  171. package/clicky/esm2015/clicky.js +0 -70
  172. package/clicky/esm5/angulartics2-clicky.js +0 -5
  173. package/clicky/esm5/clicky.interfaces.js +0 -1
  174. package/clicky/esm5/clicky.js +0 -72
  175. package/clicky/fesm2015/angulartics2-clicky.js +0 -73
  176. package/clicky/fesm2015/angulartics2-clicky.js.map +0 -1
  177. package/clicky/fesm5/angulartics2-clicky.js +0 -75
  178. package/clicky/fesm5/angulartics2-clicky.js.map +0 -1
  179. package/clicky/package.json +0 -22
  180. package/esm2015/angular-router.js +0 -38
  181. package/esm2015/angulartics2-config.js +0 -19
  182. package/esm2015/angulartics2-core.js +0 -93
  183. package/esm2015/angulartics2-interfaces.js +0 -1
  184. package/esm2015/angulartics2-token.js +0 -3
  185. package/esm2015/angulartics2.js +0 -5
  186. package/esm2015/angulartics2.module.js +0 -28
  187. package/esm2015/angulartics2On.js +0 -68
  188. package/esm2015/public_api.js +0 -8
  189. package/esm2015/routerless.js +0 -10
  190. package/esm5/angular-router.js +0 -39
  191. package/esm5/angulartics2-config.js +0 -21
  192. package/esm5/angulartics2-core.js +0 -110
  193. package/esm5/angulartics2-interfaces.js +0 -1
  194. package/esm5/angulartics2-token.js +0 -3
  195. package/esm5/angulartics2.js +0 -5
  196. package/esm5/angulartics2.module.js +0 -33
  197. package/esm5/angulartics2On.js +0 -73
  198. package/esm5/public_api.js +0 -8
  199. package/esm5/routerless.js +0 -14
  200. package/facebook/angulartics2-facebook.d.ts +0 -4
  201. package/facebook/angulartics2-facebook.metadata.json +0 -1
  202. package/facebook/bundles/angulartics2-facebook.umd.js +0 -272
  203. package/facebook/bundles/angulartics2-facebook.umd.js.map +0 -1
  204. package/facebook/bundles/angulartics2-facebook.umd.min.js +0 -16
  205. package/facebook/bundles/angulartics2-facebook.umd.min.js.map +0 -1
  206. package/facebook/esm2015/angulartics2-facebook.js +0 -5
  207. package/facebook/esm2015/facebook.js +0 -49
  208. package/facebook/esm5/angulartics2-facebook.js +0 -5
  209. package/facebook/esm5/facebook.js +0 -52
  210. package/facebook/fesm2015/angulartics2-facebook.js +0 -53
  211. package/facebook/fesm2015/angulartics2-facebook.js.map +0 -1
  212. package/facebook/fesm5/angulartics2-facebook.js +0 -56
  213. package/facebook/fesm5/angulartics2-facebook.js.map +0 -1
  214. package/facebook/package.json +0 -22
  215. package/fesm2015/angulartics2.js +0 -237
  216. package/fesm2015/angulartics2.js.map +0 -1
  217. package/fesm5/angulartics2.js +0 -269
  218. package/fesm5/angulartics2.js.map +0 -1
  219. package/ga/angulartics2-ga.d.ts +0 -4
  220. package/ga/angulartics2-ga.metadata.json +0 -1
  221. package/ga/bundles/angulartics2-ga.umd.js +0 -509
  222. package/ga/bundles/angulartics2-ga.umd.js.map +0 -1
  223. package/ga/bundles/angulartics2-ga.umd.min.js +0 -16
  224. package/ga/bundles/angulartics2-ga.umd.min.js.map +0 -1
  225. package/ga/esm2015/angulartics2-ga.js +0 -5
  226. package/ga/esm2015/ga.js +0 -209
  227. package/ga/esm5/angulartics2-ga.js +0 -5
  228. package/ga/esm5/ga.js +0 -289
  229. package/ga/fesm2015/angulartics2-ga.js +0 -213
  230. package/ga/fesm2015/angulartics2-ga.js.map +0 -1
  231. package/ga/fesm5/angulartics2-ga.js +0 -292
  232. package/ga/fesm5/angulartics2-ga.js.map +0 -1
  233. package/ga/package.json +0 -22
  234. package/ga-enhanced-ecom/angulartics2-ga-enhanced-ecom.d.ts +0 -4
  235. package/ga-enhanced-ecom/angulartics2-ga-enhanced-ecom.metadata.json +0 -1
  236. package/ga-enhanced-ecom/bundles/angulartics2-ga-enhanced-ecom.umd.js +0 -257
  237. package/ga-enhanced-ecom/bundles/angulartics2-ga-enhanced-ecom.umd.js.map +0 -1
  238. package/ga-enhanced-ecom/bundles/angulartics2-ga-enhanced-ecom.umd.min.js +0 -16
  239. package/ga-enhanced-ecom/bundles/angulartics2-ga-enhanced-ecom.umd.min.js.map +0 -1
  240. package/ga-enhanced-ecom/esm2015/angulartics2-ga-enhanced-ecom.js +0 -5
  241. package/ga-enhanced-ecom/esm2015/ga-enhanced-ecom-options.js +0 -6
  242. package/ga-enhanced-ecom/esm2015/ga-enhanced-ecom.js +0 -32
  243. package/ga-enhanced-ecom/esm5/angulartics2-ga-enhanced-ecom.js +0 -5
  244. package/ga-enhanced-ecom/esm5/ga-enhanced-ecom-options.js +0 -6
  245. package/ga-enhanced-ecom/esm5/ga-enhanced-ecom.js +0 -35
  246. package/ga-enhanced-ecom/fesm2015/angulartics2-ga-enhanced-ecom.js +0 -37
  247. package/ga-enhanced-ecom/fesm2015/angulartics2-ga-enhanced-ecom.js.map +0 -1
  248. package/ga-enhanced-ecom/fesm5/angulartics2-ga-enhanced-ecom.js +0 -40
  249. package/ga-enhanced-ecom/fesm5/angulartics2-ga-enhanced-ecom.js.map +0 -1
  250. package/ga-enhanced-ecom/package.json +0 -22
  251. package/gosquared/angulartics2-gosquared.d.ts +0 -4
  252. package/gosquared/angulartics2-gosquared.metadata.json +0 -1
  253. package/gosquared/bundles/angulartics2-gosquared.umd.js +0 -286
  254. package/gosquared/bundles/angulartics2-gosquared.umd.js.map +0 -1
  255. package/gosquared/bundles/angulartics2-gosquared.umd.min.js +0 -16
  256. package/gosquared/bundles/angulartics2-gosquared.umd.min.js.map +0 -1
  257. package/gosquared/esm2015/angulartics2-gosquared.js +0 -5
  258. package/gosquared/esm2015/gosquared.js +0 -59
  259. package/gosquared/esm5/angulartics2-gosquared.js +0 -5
  260. package/gosquared/esm5/gosquared.js +0 -66
  261. package/gosquared/fesm2015/angulartics2-gosquared.js +0 -63
  262. package/gosquared/fesm2015/angulartics2-gosquared.js.map +0 -1
  263. package/gosquared/fesm5/angulartics2-gosquared.js +0 -70
  264. package/gosquared/fesm5/angulartics2-gosquared.js.map +0 -1
  265. package/gosquared/package.json +0 -22
  266. package/gst/angulartics2-gst.d.ts +0 -4
  267. package/gst/angulartics2-gst.metadata.json +0 -1
  268. package/gst/bundles/angulartics2-gst.umd.js +0 -423
  269. package/gst/bundles/angulartics2-gst.umd.js.map +0 -1
  270. package/gst/bundles/angulartics2-gst.umd.min.js +0 -16
  271. package/gst/bundles/angulartics2-gst.umd.min.js.map +0 -1
  272. package/gst/esm2015/angulartics2-gst.js +0 -5
  273. package/gst/esm2015/gst-interfaces.js +0 -1
  274. package/gst/esm2015/gst.js +0 -184
  275. package/gst/esm5/angulartics2-gst.js +0 -5
  276. package/gst/esm5/gst-interfaces.js +0 -1
  277. package/gst/esm5/gst.js +0 -203
  278. package/gst/fesm2015/angulartics2-gst.js +0 -188
  279. package/gst/fesm2015/angulartics2-gst.js.map +0 -1
  280. package/gst/fesm5/angulartics2-gst.js +0 -206
  281. package/gst/fesm5/angulartics2-gst.js.map +0 -1
  282. package/gst/package.json +0 -22
  283. package/gtm/angulartics2-gtm.d.ts +0 -4
  284. package/gtm/angulartics2-gtm.metadata.json +0 -1
  285. package/gtm/bundles/angulartics2-gtm.umd.js +0 -335
  286. package/gtm/bundles/angulartics2-gtm.umd.js.map +0 -1
  287. package/gtm/bundles/angulartics2-gtm.umd.min.js +0 -16
  288. package/gtm/bundles/angulartics2-gtm.umd.min.js.map +0 -1
  289. package/gtm/esm2015/angulartics2-gtm.js +0 -5
  290. package/gtm/esm2015/gtm.js +0 -110
  291. package/gtm/esm5/angulartics2-gtm.js +0 -5
  292. package/gtm/esm5/gtm.js +0 -115
  293. package/gtm/fesm2015/angulartics2-gtm.js +0 -114
  294. package/gtm/fesm2015/angulartics2-gtm.js.map +0 -1
  295. package/gtm/fesm5/angulartics2-gtm.js +0 -118
  296. package/gtm/fesm5/angulartics2-gtm.js.map +0 -1
  297. package/gtm/package.json +0 -22
  298. package/hubspot/angulartics2-hubspot.d.ts +0 -4
  299. package/hubspot/angulartics2-hubspot.metadata.json +0 -1
  300. package/hubspot/bundles/angulartics2-hubspot.umd.js +0 -268
  301. package/hubspot/bundles/angulartics2-hubspot.umd.js.map +0 -1
  302. package/hubspot/bundles/angulartics2-hubspot.umd.min.js +0 -16
  303. package/hubspot/bundles/angulartics2-hubspot.umd.min.js.map +0 -1
  304. package/hubspot/esm2015/angulartics2-hubspot.js +0 -5
  305. package/hubspot/esm2015/hubspot.js +0 -45
  306. package/hubspot/esm5/angulartics2-hubspot.js +0 -5
  307. package/hubspot/esm5/hubspot.js +0 -48
  308. package/hubspot/fesm2015/angulartics2-hubspot.js +0 -49
  309. package/hubspot/fesm2015/angulartics2-hubspot.js.map +0 -1
  310. package/hubspot/fesm5/angulartics2-hubspot.js +0 -52
  311. package/hubspot/fesm5/angulartics2-hubspot.js.map +0 -1
  312. package/hubspot/package.json +0 -22
  313. package/ibm-digital-analytics/angulartics2-ibm-digital-analytics.d.ts +0 -4
  314. package/ibm-digital-analytics/angulartics2-ibm-digital-analytics.metadata.json +0 -1
  315. package/ibm-digital-analytics/bundles/angulartics2-ibm-digital-analytics.umd.js +0 -352
  316. package/ibm-digital-analytics/bundles/angulartics2-ibm-digital-analytics.umd.js.map +0 -1
  317. package/ibm-digital-analytics/bundles/angulartics2-ibm-digital-analytics.umd.min.js +0 -16
  318. package/ibm-digital-analytics/bundles/angulartics2-ibm-digital-analytics.umd.min.js.map +0 -1
  319. package/ibm-digital-analytics/esm2015/angulartics2-ibm-digital-analytics.js +0 -5
  320. package/ibm-digital-analytics/esm2015/ibm-digital-analytics.js +0 -129
  321. package/ibm-digital-analytics/esm5/angulartics2-ibm-digital-analytics.js +0 -5
  322. package/ibm-digital-analytics/esm5/ibm-digital-analytics.js +0 -132
  323. package/ibm-digital-analytics/fesm2015/angulartics2-ibm-digital-analytics.js +0 -133
  324. package/ibm-digital-analytics/fesm2015/angulartics2-ibm-digital-analytics.js.map +0 -1
  325. package/ibm-digital-analytics/fesm5/angulartics2-ibm-digital-analytics.js +0 -136
  326. package/ibm-digital-analytics/fesm5/angulartics2-ibm-digital-analytics.js.map +0 -1
  327. package/ibm-digital-analytics/package.json +0 -22
  328. package/intercom/angulartics2-intercom.d.ts +0 -4
  329. package/intercom/angulartics2-intercom.metadata.json +0 -1
  330. package/intercom/bundles/angulartics2-intercom.umd.js +0 -289
  331. package/intercom/bundles/angulartics2-intercom.umd.js.map +0 -1
  332. package/intercom/bundles/angulartics2-intercom.umd.min.js +0 -16
  333. package/intercom/bundles/angulartics2-intercom.umd.min.js.map +0 -1
  334. package/intercom/esm2015/angulartics2-intercom.js +0 -5
  335. package/intercom/esm2015/intercom.js +0 -66
  336. package/intercom/esm5/angulartics2-intercom.js +0 -5
  337. package/intercom/esm5/intercom.js +0 -69
  338. package/intercom/fesm2015/angulartics2-intercom.js +0 -70
  339. package/intercom/fesm2015/angulartics2-intercom.js.map +0 -1
  340. package/intercom/fesm5/angulartics2-intercom.js +0 -73
  341. package/intercom/fesm5/angulartics2-intercom.js.map +0 -1
  342. package/intercom/package.json +0 -22
  343. package/kissmetrics/angulartics2-kissmetrics.d.ts +0 -4
  344. package/kissmetrics/angulartics2-kissmetrics.metadata.json +0 -1
  345. package/kissmetrics/bundles/angulartics2-kissmetrics.umd.js +0 -269
  346. package/kissmetrics/bundles/angulartics2-kissmetrics.umd.js.map +0 -1
  347. package/kissmetrics/bundles/angulartics2-kissmetrics.umd.min.js +0 -16
  348. package/kissmetrics/bundles/angulartics2-kissmetrics.umd.min.js.map +0 -1
  349. package/kissmetrics/esm2015/angulartics2-kissmetrics.js +0 -5
  350. package/kissmetrics/esm2015/kissmetrics.js +0 -46
  351. package/kissmetrics/esm5/angulartics2-kissmetrics.js +0 -5
  352. package/kissmetrics/esm5/kissmetrics.js +0 -49
  353. package/kissmetrics/fesm2015/angulartics2-kissmetrics.js +0 -50
  354. package/kissmetrics/fesm2015/angulartics2-kissmetrics.js.map +0 -1
  355. package/kissmetrics/fesm5/angulartics2-kissmetrics.js +0 -53
  356. package/kissmetrics/fesm5/angulartics2-kissmetrics.js.map +0 -1
  357. package/kissmetrics/package.json +0 -25
  358. package/launch/angulartics2-launch.d.ts +0 -4
  359. package/launch/angulartics2-launch.metadata.json +0 -1
  360. package/launch/bundles/angulartics2-launch.umd.js +0 -288
  361. package/launch/bundles/angulartics2-launch.umd.js.map +0 -1
  362. package/launch/bundles/angulartics2-launch.umd.min.js +0 -16
  363. package/launch/bundles/angulartics2-launch.umd.min.js.map +0 -1
  364. package/launch/esm2015/angulartics2-launch.js +0 -5
  365. package/launch/esm2015/launch.js +0 -65
  366. package/launch/esm5/angulartics2-launch.js +0 -5
  367. package/launch/esm5/launch.js +0 -68
  368. package/launch/fesm2015/angulartics2-launch.js +0 -69
  369. package/launch/fesm2015/angulartics2-launch.js.map +0 -1
  370. package/launch/fesm5/angulartics2-launch.js +0 -72
  371. package/launch/fesm5/angulartics2-launch.js.map +0 -1
  372. package/launch/package.json +0 -22
  373. package/mixpanel/angulartics2-mixpanel.d.ts +0 -4
  374. package/mixpanel/angulartics2-mixpanel.metadata.json +0 -1
  375. package/mixpanel/bundles/angulartics2-mixpanel.umd.js +0 -342
  376. package/mixpanel/bundles/angulartics2-mixpanel.umd.js.map +0 -1
  377. package/mixpanel/bundles/angulartics2-mixpanel.umd.min.js +0 -16
  378. package/mixpanel/bundles/angulartics2-mixpanel.umd.min.js.map +0 -1
  379. package/mixpanel/esm2015/angulartics2-mixpanel.js +0 -5
  380. package/mixpanel/esm2015/mixpanel.js +0 -119
  381. package/mixpanel/esm5/angulartics2-mixpanel.js +0 -5
  382. package/mixpanel/esm5/mixpanel.js +0 -122
  383. package/mixpanel/fesm2015/angulartics2-mixpanel.js +0 -123
  384. package/mixpanel/fesm2015/angulartics2-mixpanel.js.map +0 -1
  385. package/mixpanel/fesm5/angulartics2-mixpanel.js +0 -126
  386. package/mixpanel/fesm5/angulartics2-mixpanel.js.map +0 -1
  387. package/mixpanel/package.json +0 -22
  388. package/piwik/angulartics2-piwik.d.ts +0 -4
  389. package/piwik/angulartics2-piwik.metadata.json +0 -1
  390. package/piwik/bundles/angulartics2-piwik.umd.js +0 -478
  391. package/piwik/bundles/angulartics2-piwik.umd.js.map +0 -1
  392. package/piwik/bundles/angulartics2-piwik.umd.min.js +0 -16
  393. package/piwik/bundles/angulartics2-piwik.umd.min.js.map +0 -1
  394. package/piwik/esm2015/angulartics2-piwik.js +0 -5
  395. package/piwik/esm2015/piwik.js +0 -254
  396. package/piwik/esm5/angulartics2-piwik.js +0 -5
  397. package/piwik/esm5/piwik.js +0 -258
  398. package/piwik/fesm2015/angulartics2-piwik.js +0 -258
  399. package/piwik/fesm2015/angulartics2-piwik.js.map +0 -1
  400. package/piwik/fesm5/angulartics2-piwik.js +0 -262
  401. package/piwik/fesm5/angulartics2-piwik.js.map +0 -1
  402. package/piwik/package.json +0 -22
  403. package/piwik/piwik.d.ts +0 -27
  404. package/pyze/angulartics2-pyze.d.ts +0 -4
  405. package/pyze/angulartics2-pyze.metadata.json +0 -1
  406. package/pyze/bundles/angulartics2-pyze.umd.js +0 -292
  407. package/pyze/bundles/angulartics2-pyze.umd.js.map +0 -1
  408. package/pyze/bundles/angulartics2-pyze.umd.min.js +0 -16
  409. package/pyze/bundles/angulartics2-pyze.umd.min.js.map +0 -1
  410. package/pyze/esm2015/angulartics2-pyze.js +0 -5
  411. package/pyze/esm2015/pyze.js +0 -69
  412. package/pyze/esm5/angulartics2-pyze.js +0 -5
  413. package/pyze/esm5/pyze.js +0 -72
  414. package/pyze/fesm2015/angulartics2-pyze.js +0 -73
  415. package/pyze/fesm2015/angulartics2-pyze.js.map +0 -1
  416. package/pyze/fesm5/angulartics2-pyze.js +0 -76
  417. package/pyze/fesm5/angulartics2-pyze.js.map +0 -1
  418. package/pyze/package.json +0 -22
  419. package/routerlessmodule/angulartics2-routerlessmodule.d.ts +0 -4
  420. package/routerlessmodule/angulartics2-routerlessmodule.metadata.json +0 -1
  421. package/routerlessmodule/bundles/angulartics2-routerlessmodule.umd.js +0 -250
  422. package/routerlessmodule/bundles/angulartics2-routerlessmodule.umd.js.map +0 -1
  423. package/routerlessmodule/bundles/angulartics2-routerlessmodule.umd.min.js +0 -16
  424. package/routerlessmodule/bundles/angulartics2-routerlessmodule.umd.min.js.map +0 -1
  425. package/routerlessmodule/esm2015/angulartics2-routerlessmodule.js +0 -5
  426. package/routerlessmodule/esm2015/routerless.module.js +0 -23
  427. package/routerlessmodule/esm5/angulartics2-routerlessmodule.js +0 -5
  428. package/routerlessmodule/esm5/routerless.module.js +0 -28
  429. package/routerlessmodule/fesm2015/angulartics2-routerlessmodule.js +0 -29
  430. package/routerlessmodule/fesm2015/angulartics2-routerlessmodule.js.map +0 -1
  431. package/routerlessmodule/fesm5/angulartics2-routerlessmodule.js +0 -34
  432. package/routerlessmodule/fesm5/angulartics2-routerlessmodule.js.map +0 -1
  433. package/routerlessmodule/package.json +0 -22
  434. package/routerlessmodule/routerless.module.d.ts +0 -5
  435. package/segment/angulartics2-segment.d.ts +0 -4
  436. package/segment/angulartics2-segment.metadata.json +0 -1
  437. package/segment/bundles/angulartics2-segment.umd.js +0 -330
  438. package/segment/bundles/angulartics2-segment.umd.js.map +0 -1
  439. package/segment/bundles/angulartics2-segment.umd.min.js +0 -16
  440. package/segment/bundles/angulartics2-segment.umd.min.js.map +0 -1
  441. package/segment/esm2015/angulartics2-segment.js +0 -5
  442. package/segment/esm2015/segment.js +0 -107
  443. package/segment/esm5/angulartics2-segment.js +0 -5
  444. package/segment/esm5/segment.js +0 -110
  445. package/segment/fesm2015/angulartics2-segment.js +0 -111
  446. package/segment/fesm2015/angulartics2-segment.js.map +0 -1
  447. package/segment/fesm5/angulartics2-segment.js +0 -114
  448. package/segment/fesm5/angulartics2-segment.js.map +0 -1
  449. package/segment/package.json +0 -22
  450. package/splunk/angulartics2-splunk.d.ts +0 -4
  451. package/splunk/angulartics2-splunk.metadata.json +0 -1
  452. package/splunk/bundles/angulartics2-splunk.umd.js +0 -272
  453. package/splunk/bundles/angulartics2-splunk.umd.js.map +0 -1
  454. package/splunk/bundles/angulartics2-splunk.umd.min.js +0 -16
  455. package/splunk/bundles/angulartics2-splunk.umd.min.js.map +0 -1
  456. package/splunk/esm2015/angulartics2-splunk.js +0 -5
  457. package/splunk/esm2015/splunk.js +0 -50
  458. package/splunk/esm5/angulartics2-splunk.js +0 -5
  459. package/splunk/esm5/splunk.js +0 -52
  460. package/splunk/fesm2015/angulartics2-splunk.js +0 -54
  461. package/splunk/fesm2015/angulartics2-splunk.js.map +0 -1
  462. package/splunk/fesm5/angulartics2-splunk.js +0 -56
  463. package/splunk/fesm5/angulartics2-splunk.js.map +0 -1
  464. package/splunk/package.json +0 -22
  465. package/splunk/splunk.d.ts +0 -8
  466. package/uiroutermodule/angulartics2-uiroutermodule.d.ts +0 -4
  467. package/uiroutermodule/angulartics2-uiroutermodule.metadata.json +0 -1
  468. package/uiroutermodule/bundles/angulartics2-uiroutermodule.umd.js +0 -288
  469. package/uiroutermodule/bundles/angulartics2-uiroutermodule.umd.js.map +0 -1
  470. package/uiroutermodule/bundles/angulartics2-uiroutermodule.umd.min.js +0 -16
  471. package/uiroutermodule/bundles/angulartics2-uiroutermodule.umd.min.js.map +0 -1
  472. package/uiroutermodule/esm2015/angulartics2-uiroutermodule.js +0 -5
  473. package/uiroutermodule/esm2015/public_api.js +0 -3
  474. package/uiroutermodule/esm2015/uirouter.js +0 -42
  475. package/uiroutermodule/esm2015/uirouter.module.js +0 -24
  476. package/uiroutermodule/esm5/angulartics2-uiroutermodule.js +0 -5
  477. package/uiroutermodule/esm5/public_api.js +0 -3
  478. package/uiroutermodule/esm5/uirouter.js +0 -44
  479. package/uiroutermodule/esm5/uirouter.module.js +0 -29
  480. package/uiroutermodule/fesm2015/angulartics2-uiroutermodule.js +0 -66
  481. package/uiroutermodule/fesm2015/angulartics2-uiroutermodule.js.map +0 -1
  482. package/uiroutermodule/fesm5/angulartics2-uiroutermodule.js +0 -73
  483. package/uiroutermodule/fesm5/angulartics2-uiroutermodule.js.map +0 -1
  484. package/uiroutermodule/package.json +0 -22
  485. package/uiroutermodule/public_api.d.ts +0 -2
  486. package/uiroutermodule/uirouter.d.ts +0 -17
  487. package/uiroutermodule/uirouter.module.d.ts +0 -5
  488. package/woopra/angulartics2-woopra.d.ts +0 -4
  489. package/woopra/angulartics2-woopra.metadata.json +0 -1
  490. package/woopra/bundles/angulartics2-woopra.umd.js +0 -289
  491. package/woopra/bundles/angulartics2-woopra.umd.js.map +0 -1
  492. package/woopra/bundles/angulartics2-woopra.umd.min.js +0 -16
  493. package/woopra/bundles/angulartics2-woopra.umd.min.js.map +0 -1
  494. package/woopra/esm2015/angulartics2-woopra.js +0 -5
  495. package/woopra/esm2015/woopra.js +0 -66
  496. package/woopra/esm5/angulartics2-woopra.js +0 -5
  497. package/woopra/esm5/woopra.js +0 -69
  498. package/woopra/fesm2015/angulartics2-woopra.js +0 -70
  499. package/woopra/fesm2015/angulartics2-woopra.js.map +0 -1
  500. package/woopra/fesm5/angulartics2-woopra.js +0 -73
  501. package/woopra/fesm5/angulartics2-woopra.js.map +0 -1
  502. package/woopra/package.json +0 -22
@@ -1,16 +0,0 @@
1
- !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("angulartics2")):"function"==typeof define&&define.amd?define("angulartics2/gst",["exports","@angular/core","angulartics2"],e):e(((t=t||self).angulartics2=t.angulartics2||{},t.angulartics2.gst={}),t.ng.core,t.angulartics2)}(this,(function(t,e,n){"use strict";
2
- /*! *****************************************************************************
3
- Copyright (c) Microsoft Corporation.
4
-
5
- Permission to use, copy, modify, and/or distribute this software for any
6
- purpose with or without fee is hereby granted.
7
-
8
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
9
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
10
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
11
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
12
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
13
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
14
- PERFORMANCE OF THIS SOFTWARE.
15
- ***************************************************************************** */var i=function(){return(i=Object.assign||function(t){for(var e,n=1,i=arguments.length;n<i;n++)for(var r in e=arguments[n])Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t}).apply(this,arguments)};function r(t){var e="function"==typeof Symbol&&Symbol.iterator,n=e&&t[e],i=0;if(n)return n.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&i>=t.length&&(t=void 0),{value:t&&t[i++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}var s=function(){var t=this;this.trackingIds=[],"undefined"!=typeof ga&&ga&&ga((function(){ga.getAll().forEach((function(e){var n=e.get("trackingId");void 0!==n&&-1===t.trackingIds.indexOf(n)&&t.trackingIds.push(n)}))}))},a=function(){function t(t){this.angulartics2=t,this.dimensionsAndMetrics={};var e=new s;this.angulartics2.settings.gst=i(i({},e),this.angulartics2.settings.gst)}return t.prototype.startTracking=function(){var t=this;this.angulartics2.pageTrack.pipe(this.angulartics2.filterDeveloperMode()).subscribe((function(e){return t.pageTrack(e.path)})),this.angulartics2.eventTrack.pipe(this.angulartics2.filterDeveloperMode()).subscribe((function(e){return t.eventTrack(e.action,e.properties)})),this.angulartics2.exceptionTrack.pipe(this.angulartics2.filterDeveloperMode()).subscribe((function(e){return t.exceptionTrack(e)})),this.angulartics2.userTimings.pipe(this.angulartics2.filterDeveloperMode()).subscribe((function(e){return t.userTimings(t.convertTimings(e))})),this.angulartics2.setUsername.pipe(this.angulartics2.filterDeveloperMode()).subscribe((function(e){return t.setUsername(e)})),this.angulartics2.setUserProperties.pipe(this.angulartics2.filterDeveloperMode()).subscribe((function(e){return t.setUserProperties(e)}))},t.prototype.pageTrack=function(t){var e,n;if("undefined"!=typeof gtag&&gtag){var s=i({page_path:t,page_location:window.location.protocol+"//"+window.location.host+t},this.dimensionsAndMetrics);this.angulartics2.settings.gst.customMap&&(s.custom_map=this.angulartics2.settings.gst.customMap),this.angulartics2.settings.gst.userId&&(s.user_id=this.angulartics2.settings.gst.userId),this.angulartics2.settings.gst.anonymizeIp&&(s.anonymize_ip=this.angulartics2.settings.gst.anonymizeIp);try{for(var a=r(this.angulartics2.settings.gst.trackingIds),o=a.next();!o.done;o=a.next()){var c=o.value;gtag("config",c,s)}}catch(t){e={error:t}}finally{try{o&&!o.done&&(n=a.return)&&n.call(a)}finally{if(e)throw e.error}}}},t.prototype.eventTrack=function(t,e){void 0===e&&(e={}),this.eventTrackInternal(t,i({event_category:e.category||"interaction",event_label:e.label,value:e.value,non_interaction:e.noninteraction},e.gstCustom))},t.prototype.exceptionTrack=function(t){void 0===t.fatal&&(console.log('No "fatal" provided, sending with fatal=true'),t.fatal=!0),t.exDescription=t.event?t.event.stack:t.description,this.eventTrack("exception",{gstCustom:i({description:t.exDescription,fatal:t.fatal},t.gstCustom)})},t.prototype.userTimings=function(t){t?this.eventTrackInternal("timing_complete",{name:t.name,value:t.value,event_category:t.category,event_label:t.label}):console.error('User timings - "properties" parameter is required to be set.')},t.prototype.convertTimings=function(t){return{name:t.timingVar,value:t.timingValue,category:t.timingCategory,label:t.timingLabel}},t.prototype.setUsername=function(t){this.angulartics2.settings.gst.userId=t,"undefined"!=typeof gtag&&gtag&&gtag("set",{user_id:"string"!=typeof t&&t?t.userId:t})},t.prototype.setUserProperties=function(t){this.setDimensionsAndMetrics(t)},t.prototype.setDimensionsAndMetrics=function(t){var e=this;this.dimensionsAndMetrics=i(i({},this.dimensionsAndMetrics),t),Object.keys(this.dimensionsAndMetrics).forEach((function(t){var n=e.dimensionsAndMetrics[t];null==n&&delete e.dimensionsAndMetrics[t]})),"undefined"!=typeof gtag&&gtag&&gtag("set",this.dimensionsAndMetrics)},t.prototype.eventTrackInternal=function(t,e){void 0===e&&(e={}),this.cleanProperties(e),"undefined"!=typeof gtag&&gtag&&gtag("event",t,e)},t.prototype.cleanProperties=function(t){if(t.value){var e=parseInt(t.value,10);t.value=isNaN(e)?0:e}},t.ctorParameters=function(){return[{type:n.Angulartics2}]},t.ɵprov=e.ɵɵdefineInjectable({factory:function(){return new t(e.ɵɵinject(n.Angulartics2))},token:t,providedIn:"root"}),t=function(t,e,n,i){var r,s=arguments.length,a=s<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,n):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,n,i);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(a=(s<3?r(a):s>3?r(e,n,a):r(e,n))||a);return s>3&&a&&Object.defineProperty(e,n,a),a}([e.Injectable({providedIn:"root"})],t)}();t.Angulartics2GoogleGlobalSiteTag=a,t.GoogleGlobalSiteTagDefaults=s,Object.defineProperty(t,"__esModule",{value:!0})}));
16
- //# sourceMappingURL=angulartics2-gst.umd.min.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","ng://angulartics2/gst/gst.ts"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__values","o","Symbol","iterator","m","next","value","done","TypeError","_this","trackingIds","ga","getAll","forEach","tracker","id","get","undefined","indexOf","push","Angulartics2GoogleGlobalSiteTag","angulartics2","dimensionsAndMetrics","defaults","GoogleGlobalSiteTagDefaults","settings","gst","startTracking","pageTrack","pipe","filterDeveloperMode","subscribe","x","path","eventTrack","action","properties","exceptionTrack","userTimings","convertTimings","setUsername","setUserProperties","gtag","params","page_path","page_location","window","location","protocol","host","customMap","custom_map","userId","user_id","anonymizeIp","anonymize_ip","_b","_c","eventTrackInternal","event_category","category","event_label","label","non_interaction","noninteraction","gstCustom","fatal","console","log","exDescription","event","stack","description","name","error","timingVar","timingValue","timingCategory","timingLabel","setDimensionsAndMetrics","keys","key","val","cleanProperties","parsed","parseInt","isNaN","Angulartics2","decorators","target","desc","d","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__decorate","Injectable","providedIn"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","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"]}
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './gst';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhcnRpY3MyLWdzdC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXJ0aWNzMi9nc3QvIiwic291cmNlcyI6WyJhbmd1bGFydGljczItZ3N0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vZ3N0JztcbiJdfQ==
@@ -1 +0,0 @@
1
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3N0LWludGVyZmFjZXMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFydGljczIvZ3N0LyIsInNvdXJjZXMiOlsiZ3N0LWludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbGluayBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9hbmFseXRpY3MvZGV2Z3VpZGVzL2NvbGxlY3Rpb24vZ3RhZ2pzL3VzZXItdGltaW5ncyAqL1xuZXhwb3J0IGludGVyZmFjZSBVc2VyVGltaW5nc0dzdCB7XG4gIC8qKiBBIHN0cmluZyB0byBpZGVudGlmeSB0aGUgdmFyaWFibGUgYmVpbmcgcmVjb3JkZWQgKGUuZy4gJ2xvYWQnKS4gKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKiogVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaW4gZWxhcHNlZCB0aW1lIHRvIHJlcG9ydCB0byBHb29nbGUgQW5hbHl0aWNzIChlLmcuIDIwKS4gKi9cbiAgdmFsdWU6IG51bWJlcjtcbiAgLyoqIEEgc3RyaW5nIGZvciBjYXRlZ29yaXppbmcgYWxsIHVzZXIgdGltaW5nIHZhcmlhYmxlcyBpbnRvIGxvZ2ljYWwgZ3JvdXBzIChlLmcuICdKUyBEZXBlbmRlbmNpZXMnKS4gKi9cbiAgY2F0ZWdvcnk/OiBzdHJpbmc7XG4gIC8qKiBBIHN0cmluZyB0aGF0IGNhbiBiZSB1c2VkIHRvIGFkZCBmbGV4aWJpbGl0eSBpbiB2aXN1YWxpemluZyB1c2VyIHRpbWluZ3MgaW4gdGhlIHJlcG9ydHMgKGUuZy4gJ0dvb2dsZSBDRE4nKS4gKi9cbiAgbGFiZWw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRHc3Qge1xuICBjYXRlZ29yeTogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZztcbiAgdmFsdWU/OiBudW1iZXIgfCBzdHJpbmc7XG4gIG5vbmludGVyYWN0aW9uPzogYm9vbGVhbjtcbiAgZ3N0Q3VzdG9tPzogYW55O1xufVxuIl19
@@ -1,184 +0,0 @@
1
- import { __decorate } 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
- export class GoogleGlobalSiteTagDefaults {
7
- constructor() {
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(() => {
12
- ga.getAll().forEach((tracker) => {
13
- const 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
- }
23
- let Angulartics2GoogleGlobalSiteTag = class Angulartics2GoogleGlobalSiteTag {
24
- constructor(angulartics2) {
25
- this.angulartics2 = angulartics2;
26
- this.dimensionsAndMetrics = {};
27
- const defaults = new GoogleGlobalSiteTagDefaults();
28
- // Set the default settings for this module
29
- this.angulartics2.settings.gst = Object.assign(Object.assign({}, defaults), this.angulartics2.settings.gst);
30
- }
31
- startTracking() {
32
- this.angulartics2.pageTrack
33
- .pipe(this.angulartics2.filterDeveloperMode())
34
- .subscribe((x) => this.pageTrack(x.path));
35
- this.angulartics2.eventTrack
36
- .pipe(this.angulartics2.filterDeveloperMode())
37
- .subscribe((x) => this.eventTrack(x.action, x.properties));
38
- this.angulartics2.exceptionTrack
39
- .pipe(this.angulartics2.filterDeveloperMode())
40
- .subscribe((x) => this.exceptionTrack(x));
41
- this.angulartics2.userTimings
42
- .pipe(this.angulartics2.filterDeveloperMode())
43
- .subscribe(x => this.userTimings(this.convertTimings(x)));
44
- this.angulartics2.setUsername
45
- .pipe(this.angulartics2.filterDeveloperMode())
46
- .subscribe((x) => this.setUsername(x));
47
- this.angulartics2.setUserProperties
48
- .pipe(this.angulartics2.filterDeveloperMode())
49
- .subscribe((x) => this.setUserProperties(x));
50
- }
51
- /**
52
- * Manually track page view, see:
53
- *
54
- * https://developers.google.com/analytics/devguides/collection/gtagjs/single-page-applications#tracking_virtual_pageviews
55
- *
56
- * @param path relative url
57
- */
58
- pageTrack(path) {
59
- if (typeof gtag !== 'undefined' && gtag) {
60
- const params = Object.assign({ page_path: path, page_location: window.location.protocol + '//' + window.location.host + path }, this.dimensionsAndMetrics);
61
- // Custom map must be reset with all config to stay valid.
62
- if (this.angulartics2.settings.gst.customMap) {
63
- params.custom_map = this.angulartics2.settings.gst.customMap;
64
- }
65
- if (this.angulartics2.settings.gst.userId) {
66
- params.user_id = this.angulartics2.settings.gst.userId;
67
- }
68
- if (this.angulartics2.settings.gst.anonymizeIp) {
69
- params.anonymize_ip = this.angulartics2.settings.gst.anonymizeIp;
70
- }
71
- for (const id of this.angulartics2.settings.gst.trackingIds) {
72
- gtag('config', id, params);
73
- }
74
- }
75
- }
76
- /**
77
- * Send interactions to gtag, i.e. for event tracking in Google Analytics. See:
78
- *
79
- * https://developers.google.com/analytics/devguides/collection/gtagjs/events
80
- *
81
- * @param action associated with the event
82
- */
83
- eventTrack(action, properties = {}) {
84
- this.eventTrackInternal(action, Object.assign({ event_category: properties.category || 'interaction', event_label: properties.label, value: properties.value, non_interaction: properties.noninteraction }, properties.gstCustom));
85
- }
86
- /**
87
- * Exception Track Event in GST. See:
88
- *
89
- * https://developers.google.com/analytics/devguides/collection/gtagjs/exceptions
90
- *
91
- */
92
- exceptionTrack(properties) {
93
- // TODO: make interface
94
- // @param {Object} properties
95
- // @param {string} [properties.description]
96
- // @param {boolean} [properties.fatal]
97
- if (properties.fatal === undefined) {
98
- console.log('No "fatal" provided, sending with fatal=true');
99
- properties.fatal = true;
100
- }
101
- properties.exDescription = properties.event ? properties.event.stack : properties.description;
102
- this.eventTrack('exception', {
103
- gstCustom: Object.assign({ description: properties.exDescription, fatal: properties.fatal }, properties.gstCustom)
104
- });
105
- }
106
- /**
107
- * User Timings Event in GST.
108
- *
109
- * @param properties Comprised of the mandatory fields:
110
- * - name (string)
111
- * - value (number - integer)
112
- * Properties can also have the optional fields:
113
- * - category (string)
114
- * - label (string)
115
- *
116
- * @link https://developers.google.com/analytics/devguides/collection/gtagjs/user-timings
117
- */
118
- userTimings(properties) {
119
- if (!properties) {
120
- console.error('User timings - "properties" parameter is required to be set.');
121
- return;
122
- }
123
- this.eventTrackInternal('timing_complete', {
124
- name: properties.name,
125
- value: properties.value,
126
- event_category: properties.category,
127
- event_label: properties.label
128
- });
129
- }
130
- convertTimings(properties) {
131
- return {
132
- name: properties.timingVar,
133
- value: properties.timingValue,
134
- category: properties.timingCategory,
135
- label: properties.timingLabel
136
- };
137
- }
138
- setUsername(userId) {
139
- this.angulartics2.settings.gst.userId = userId;
140
- if (typeof gtag !== 'undefined' && gtag) {
141
- gtag('set', { user_id: typeof userId === 'string' || !userId ? userId : userId.userId });
142
- }
143
- }
144
- setUserProperties(properties) {
145
- this.setDimensionsAndMetrics(properties);
146
- }
147
- setDimensionsAndMetrics(properties) {
148
- // We want the dimensions and metrics to accumulate, so we merge with previous value
149
- this.dimensionsAndMetrics = Object.assign(Object.assign({}, this.dimensionsAndMetrics), properties);
150
- // Remove properties that are null or undefined
151
- Object.keys(this.dimensionsAndMetrics).forEach(key => {
152
- const val = this.dimensionsAndMetrics[key];
153
- if (val === undefined || val === null) {
154
- delete this.dimensionsAndMetrics[key];
155
- }
156
- });
157
- if (typeof gtag !== 'undefined' && gtag) {
158
- gtag('set', this.dimensionsAndMetrics);
159
- }
160
- }
161
- eventTrackInternal(action, properties = {}) {
162
- this.cleanProperties(properties);
163
- if (typeof gtag !== 'undefined' && gtag) {
164
- gtag('event', action, properties);
165
- }
166
- }
167
- cleanProperties(properties) {
168
- // GA requires that eventValue be an non-negative integer, see:
169
- // https://developers.google.com/analytics/devguides/collection/gtagjs/events
170
- if (properties.value) {
171
- const parsed = parseInt(properties.value, 10);
172
- properties.value = isNaN(parsed) ? 0 : parsed;
173
- }
174
- }
175
- };
176
- Angulartics2GoogleGlobalSiteTag.ctorParameters = () => [
177
- { type: Angulartics2 }
178
- ];
179
- Angulartics2GoogleGlobalSiteTag.ɵprov = i0.ɵɵdefineInjectable({ factory: function Angulartics2GoogleGlobalSiteTag_Factory() { return new Angulartics2GoogleGlobalSiteTag(i0.ɵɵinject(i1.Angulartics2)); }, token: Angulartics2GoogleGlobalSiteTag, providedIn: "root" });
180
- Angulartics2GoogleGlobalSiteTag = __decorate([
181
- Injectable({ providedIn: 'root' })
182
- ], Angulartics2GoogleGlobalSiteTag);
183
- export { Angulartics2GoogleGlobalSiteTag };
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3N0LmpzIiwic291cmNlUm9vdCI6Im5nOi8vYW5ndWxhcnRpY3MyL2dzdC8iLCJzb3VyY2VzIjpbImdzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLDJCQUEyQixFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7O0FBTXRGLE1BQU0sT0FBTywyQkFBMkI7SUFHdEM7UUFGQSxnQkFBVyxHQUFhLEVBQUUsQ0FBQztRQUd6QixJQUFJLE9BQU8sRUFBRSxLQUFLLFdBQVcsSUFBSSxFQUFFLEVBQUU7WUFDbkMsNEdBQTRHO1lBQzVHLEVBQUUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ04sRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFO29CQUNuQyxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUNyQyxvRUFBb0U7b0JBQ3BFLElBQUksRUFBRSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTt3QkFDM0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7cUJBQzNCO2dCQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7Q0FDRjtBQUdELElBQWEsK0JBQStCLEdBQTVDLE1BQWEsK0JBQStCO0lBRzFDLFlBQXNCLFlBQTBCO1FBQTFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBRnhDLHlCQUFvQixHQUEyQixFQUFFLENBQUM7UUFHeEQsTUFBTSxRQUFRLEdBQUcsSUFBSSwyQkFBMkIsRUFBRSxDQUFDO1FBQ25ELDJDQUEyQztRQUMzQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FB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QUFNLENBQUM7U0FDL0M7SUFDSCxDQUFDO0NBQ0YsQ0FBQTs7WUF6THFDLFlBQVk7OztBQUhyQywrQkFBK0I7SUFEM0MsVUFBVSxDQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDO0dBQ3RCLCtCQUErQixDQTRMM0M7U0E1TFksK0JBQStCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBbmd1bGFydGljczIsIEdvb2dsZUdsb2JhbFNpdGVUYWdTZXR0aW5ncywgVXNlclRpbWluZ3MgfSBmcm9tICdhbmd1bGFydGljczInO1xuaW1wb3J0IHsgRXZlbnRHc3QsIFVzZXJUaW1pbmdzR3N0IH0gZnJvbSAnLi9nc3QtaW50ZXJmYWNlcyc7XG5cbmRlY2xhcmUgdmFyIGd0YWc6IGFueTtcbmRlY2xhcmUgdmFyIGdhOiBhbnk7XG5cbmV4cG9ydCBjbGFzcyBHb29nbGVHbG9iYWxTaXRlVGFnRGVmYXVsdHMgaW1wbGVtZW50cyBHb29nbGVHbG9iYWxTaXRlVGFnU2V0dGluZ3Mge1xuICB0cmFja2luZ0lkczogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBpZiAodHlwZW9mIGdhICE9PSAndW5kZWZpbmVkJyAmJiBnYSkge1xuICAgICAgLy8gU2VlOiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9hbmFseXRpY3MvZGV2Z3VpZGVzL2NvbGxlY3Rpb24vYW5hbHl0aWNzanMvZ2Etb2JqZWN0LW1ldGhvZHMtcmVmZXJlbmNlXG4gICAgICBnYSgoKSA9PiB7XG4gICAgICAgIGdhLmdldEFsbCgpLmZvckVhY2goKHRyYWNrZXI6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlkID0gdHJhY2tlci5nZXQoJ3RyYWNraW5nSWQnKTtcbiAgICAgICAgICAvLyBJZiBzZXQgYm90aCBpbiBmb3JSb290IGFuZCBIVE1MIHBhZ2UsIHdlIHdhbnQgdG8gYXZvaWQgZHVwbGljYXRlc1xuICAgICAgICAgIGlmIChpZCAhPT0gdW5kZWZpbmVkICYmIHRoaXMudHJhY2tpbmdJZHMuaW5kZXhPZihpZCkgPT09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLnRyYWNraW5nSWRzLnB1c2goaWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBbmd1bGFydGljczJHb29nbGVHbG9iYWxTaXRlVGFnIHtcbiAgcHJpdmF0ZSBkaW1lbnNpb25zQW5kTWV0cmljczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBhbmd1bGFydGljczI6IEFuZ3VsYXJ0aWNzMikge1xuICAgIGNvbnN0IGRlZmF1bHRzID0gbmV3IEdvb2dsZUdsb2JhbFNpdGVUYWdEZWZhdWx0cygpO1xuICAgIC8vIFNldCB0aGUgZGVmYXVsdCBzZXR0aW5ncyBmb3IgdGhpcyBtb2R1bGVcbiAgICB0aGlzLmFuZ3VsYXJ0aWNzMi5zZXR0aW5ncy5nc3QgPSB7IC4uLmRlZmF1bHRzLCAuLi50aGlzLmFuZ3VsYXJ0aWNzMi5zZXR0aW5ncy5nc3QgfTtcbiAgfVxuXG4gIHN0YXJ0VHJhY2tpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5hbmd1bGFydGljczIucGFnZVRyYWNrXG4gICAgICAucGlwZSh0aGlzLmFuZ3VsYXJ0aWNzMi5maWx0ZXJEZXZlbG9wZXJNb2RlKCkpXG4gICAgICAuc3Vic2NyaWJlKCh4KSA9PiB0aGlzLnBhZ2VUcmFjayh4LnBhdGgpKTtcbiAgICB0aGlzLmFuZ3VsYXJ0aWNzMi5ldmVudFRyYWNrXG4gICAgICAucGlwZSh0aGlzLmFuZ3VsYXJ0aWNzMi5maWx0ZXJEZXZlbG9wZXJNb2RlKCkpXG4gICAgICAuc3Vic2NyaWJlKCh4KSA9PiB0aGlzLmV2ZW50VHJhY2soeC5hY3Rpb24sIHgucHJvcGVydGllcykpO1xuICAgIHRoaXMuYW5ndWxhcnRpY3MyLmV4Y2VwdGlvblRyYWNrXG4gICAgICAucGlwZSh0aGlzLmFuZ3VsYXJ0aWNzMi5maWx0ZXJEZXZlbG9wZXJNb2RlKCkpXG4gICAgICAuc3Vic2NyaWJlKCh4OiBhbnkpID0+IHRoaXMuZXhjZXB0aW9uVHJhY2soeCkpO1xuICAgIHRoaXMuYW5ndWxhcnRpY3MyLnVzZXJUaW1pbmdzXG4gICAgICAucGlwZSh0aGlzLmFuZ3VsYXJ0aWNzMi5maWx0ZXJEZXZlbG9wZXJNb2RlKCkpXG4gICAgICAuc3Vic2NyaWJlKHggPT4gdGhpcy51c2VyVGltaW5ncyh0aGlzLmNvbnZlcnRUaW1pbmdzKHgpKSk7XG4gICAgdGhpcy5hbmd1bGFydGljczIuc2V0VXNlcm5hbWVcbiAgICAgIC5waXBlKHRoaXMuYW5ndWxhcnRpY3MyLmZpbHRlckRldmVsb3Blck1vZGUoKSlcbiAgICAgIC5zdWJzY3JpYmUoKHg6IHN0cmluZykgPT4gdGhpcy5zZXRVc2VybmFtZSh4KSk7XG4gICAgdGhpcy5hbmd1bGFydGljczIuc2V0VXNlclByb3BlcnRpZXNcbiAgICAgIC5waXBlKHRoaXMuYW5ndWxhcnRpY3MyLmZpbHRlckRldmVsb3Blck1vZGUoKSlcbiAgICAgIC5zdWJzY3JpYmUoKHg6IGFueSkgPT4gdGhpcy5zZXRVc2VyUHJvcGVydGllcyh4KSk7XG4gIH1cblxuICAvKipcbiAgICogTWFudWFsbHkgdHJhY2sgcGFnZSB2aWV3LCBzZWU6XG4gICAqXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL2FuYWx5dGljcy9kZXZndWlkZXMvY29sbGVjdGlvbi9ndGFnanMvc2luZ2xlLXBhZ2UtYXBwbGljYXRpb25zI3RyYWNraW5nX3ZpcnR1YWxfcGFnZXZpZXdzXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIHJlbGF0aXZlIHVybFxuICAgKi9cbiAgcGFnZVRyYWNrKHBhdGg6IHN0cmluZykge1xuICAgIGlmICh0eXBlb2YgZ3RhZyAhPT0gJ3VuZGVmaW5lZCcgJiYgZ3RhZykge1xuICAgICAgY29uc3QgcGFyYW1zOiBhbnkgPSB7XG4gICAgICAgIHBhZ2VfcGF0aDogcGF0aCxcbiAgICAgICAgcGFnZV9sb2NhdGlvbjogd2luZG93LmxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0ICsgcGF0aCxcbiAgICAgICAgLi4udGhpcy5kaW1lbnNpb25zQW5kTWV0cmljc1xuICAgICAgfTtcblxuICAgICAgLy8gQ3VzdG9tIG1hcCBtdXN0IGJlIHJlc2V0IHdpdGggYWxsIGNvbmZpZyB0byBzdGF5IHZhbGlkLlxuXG4gICAgICBpZiAodGhpcy5hbmd1bGFydGljczIuc2V0dGluZ3MuZ3N0LmN1c3RvbU1hcCkge1xuICAgICAgICBwYXJhbXMuY3VzdG9tX21hcCA9IHRoaXMuYW5ndWxhcnRpY3MyLnNldHRpbmdzLmdzdC5jdXN0b21NYXA7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5hbmd1bGFydGljczIuc2V0dGluZ3MuZ3N0LnVzZXJJZCkge1xuICAgICAgICBwYXJhbXMudXNlcl9pZCA9IHRoaXMuYW5ndWxhcnRpY3MyLnNldHRpbmdzLmdzdC51c2VySWQ7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5hbmd1bGFydGljczIuc2V0dGluZ3MuZ3N0LmFub255bWl6ZUlwKSB7XG4gICAgICAgIHBhcmFtcy5hbm9ueW1pemVfaXAgPSB0aGlzLmFuZ3VsYXJ0aWNzMi5zZXR0aW5ncy5nc3QuYW5vbnltaXplSXA7XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3QgaWQgb2YgdGhpcy5hbmd1bGFydGljczIuc2V0dGluZ3MuZ3N0LnRyYWNraW5nSWRzKSB7XG4gICAgICAgIGd0YWcoJ2NvbmZpZycsIGlkLCBwYXJhbXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZW5kIGludGVyYWN0aW9ucyB0byBndGFnLCBpLmUuIGZvciBldmVudCB0cmFja2luZyBpbiBHb29nbGUgQW5hbHl0aWNzLiBTZWU6XG4gICAqXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL2FuYWx5dGljcy9kZXZndWlkZXMvY29sbGVjdGlvbi9ndGFnanMvZXZlbnRzXG4gICAqXG4gICAqIEBwYXJhbSBhY3Rpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBldmVudFxuICAgKi9cbiAgZXZlbnRUcmFjayhhY3Rpb246IHN0cmluZywgcHJvcGVydGllczogUGFydGlhbDxFdmVudEdzdD4gPSB7fSkge1xuICAgIHRoaXMuZXZlbnRUcmFja0ludGVybmFsKGFjdGlvbiwge1xuICAgICAgZXZlbnRfY2F0ZWdvcnk6IHByb3BlcnRpZXMuY2F0ZWdvcnkgfHwgJ2ludGVyYWN0aW9uJyxcbiAgICAgIGV2ZW50X2xhYmVsOiBwcm9wZXJ0aWVzLmxhYmVsLFxuICAgICAgdmFsdWU6IHByb3BlcnRpZXMudmFsdWUsXG4gICAgICBub25faW50ZXJhY3Rpb246IHByb3BlcnRpZXMubm9uaW50ZXJhY3Rpb24sXG4gICAgICAuLi5wcm9wZXJ0aWVzLmdzdEN1c3RvbVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4Y2VwdGlvbiBUcmFjayBFdmVudCBpbiBHU1QuIFNlZTpcbiAgICpcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vYW5hbHl0aWNzL2Rldmd1aWRlcy9jb2xsZWN0aW9uL2d0YWdqcy9leGNlcHRpb25zXG4gICAqXG4gICAqL1xuICBleGNlcHRpb25UcmFjayhwcm9wZXJ0aWVzOiBhbnkpIHtcbiAgICAvLyBUT0RPOiBtYWtlIGludGVyZmFjZVxuICAgIC8vICBAcGFyYW0ge09iamVjdH0gcHJvcGVydGllc1xuICAgIC8vICBAcGFyYW0ge3N0cmluZ30gW3Byb3BlcnRpZXMuZGVzY3JpcHRpb25dXG4gICAgLy8gIEBwYXJhbSB7Ym9vbGVhbn0gW3Byb3BlcnRpZXMuZmF0YWxdXG4gICAgaWYgKHByb3BlcnRpZXMuZmF0YWwgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc29sZS5sb2coJ05vIFwiZmF0YWxcIiBwcm92aWRlZCwgc2VuZGluZyB3aXRoIGZhdGFsPXRydWUnKTtcbiAgICAgIHByb3BlcnRpZXMuZmF0YWwgPSB0cnVlO1xuICAgIH1cblxuICAgIHByb3BlcnRpZXMuZXhEZXNjcmlwdGlvbiA9IHByb3BlcnRpZXMuZXZlbnQgPyBwcm9wZXJ0aWVzLmV2ZW50LnN0YWNrIDogcHJvcGVydGllcy5kZXNjcmlwdGlvbjtcblxuICAgIHRoaXMuZXZlbnRUcmFjaygnZXhjZXB0aW9uJywge1xuICAgICAgZ3N0Q3VzdG9tOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wZXJ0aWVzLmV4RGVzY3JpcHRpb24sXG4gICAgICAgIGZhdGFsOiBwcm9wZXJ0aWVzLmZhdGFsLFxuICAgICAgICAuLi5wcm9wZXJ0aWVzLmdzdEN1c3RvbVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZXIgVGltaW5ncyBFdmVudCBpbiBHU1QuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wZXJ0aWVzIENvbXByaXNlZCBvZiB0aGUgbWFuZGF0b3J5IGZpZWxkczpcbiAgICogIC0gbmFtZSAoc3RyaW5nKVxuICAgKiAgLSB2YWx1ZSAobnVtYmVyIC0gaW50ZWdlcilcbiAgICogUHJvcGVydGllcyBjYW4gYWxzbyBoYXZlIHRoZSBvcHRpb25hbCBmaWVsZHM6XG4gICAqICAtIGNhdGVnb3J5IChzdHJpbmcpXG4gICAqICAtIGxhYmVsIChzdHJpbmcpXG4gICAqXG4gICAqIEBsaW5rIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL2FuYWx5dGljcy9kZXZndWlkZXMvY29sbGVjdGlvbi9ndGFnanMvdXNlci10aW1pbmdzXG4gICAqL1xuICB1c2VyVGltaW5ncyhwcm9wZXJ0aWVzOiBVc2VyVGltaW5nc0dzdCkge1xuICAgIGlmICghcHJvcGVydGllcykge1xuICAgICAgY29uc29sZS5lcnJvcignVXNlciB0aW1pbmdzIC0gXCJwcm9wZXJ0aWVzXCIgcGFyYW1ldGVyIGlzIHJlcXVpcmVkIHRvIGJlIHNldC4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmV2ZW50VHJhY2tJbnRlcm5hbCgndGltaW5nX2NvbXBsZXRlJywge1xuICAgICAgbmFtZTogcHJvcGVydGllcy5uYW1lLFxuICAgICAgdmFsdWU6IHByb3BlcnRpZXMudmFsdWUsXG4gICAgICBldmVudF9jYXRlZ29yeTogcHJvcGVydGllcy5jYXRlZ29yeSxcbiAgICAgIGV2ZW50X2xhYmVsOiBwcm9wZXJ0aWVzLmxhYmVsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRUaW1pbmdzKHByb3BlcnRpZXM6IFVzZXJUaW1pbmdzKTogVXNlclRpbWluZ3NHc3Qge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBwcm9wZXJ0aWVzLnRpbWluZ1ZhcixcbiAgICAgIHZhbHVlOiBwcm9wZXJ0aWVzLnRpbWluZ1ZhbHVlLFxuICAgICAgY2F0ZWdvcnk6IHByb3BlcnRpZXMudGltaW5nQ2F0ZWdvcnksXG4gICAgICBsYWJlbDogcHJvcGVydGllcy50aW1pbmdMYWJlbFxuICAgIH07XG4gIH1cblxuICBzZXRVc2VybmFtZSh1c2VySWQ6IHN0cmluZyB8IHsgdXNlcklkOiBzdHJpbmcgfCBudW1iZXIgfSkge1xuICAgIHRoaXMuYW5ndWxhcnRpY3MyLnNldHRpbmdzLmdzdC51c2VySWQgPSB1c2VySWQ7XG4gICAgaWYgKHR5cGVvZiBndGFnICE9PSAndW5kZWZpbmVkJyAmJiBndGFnKSB7XG4gICAgICBndGFnKCdzZXQnLCB7IHVzZXJfaWQ6IHR5cGVvZiB1c2VySWQgPT09ICdzdHJpbmcnIHx8ICF1c2VySWQgPyB1c2VySWQgOiB1c2VySWQudXNlcklkIH0pO1xuICAgIH1cbiAgfVxuXG4gIHNldFVzZXJQcm9wZXJ0aWVzKHByb3BlcnRpZXM6IGFueSkge1xuICAgIHRoaXMuc2V0RGltZW5zaW9uc0FuZE1ldHJpY3MocHJvcGVydGllcyk7XG4gIH1cblxuICBwcml2YXRlIHNldERpbWVuc2lvbnNBbmRNZXRyaWNzKHByb3BlcnRpZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0pIHtcbiAgICAvLyBXZSB3YW50IHRoZSBkaW1lbnNpb25zIGFuZCBtZXRyaWNzIHRvIGFjY3VtdWxhdGUsIHNvIHdlIG1lcmdlIHdpdGggcHJldmlvdXMgdmFsdWVcbiAgICB0aGlzLmRpbWVuc2lvbnNBbmRNZXRyaWNzID0ge1xuICAgICAgLi4udGhpcy5kaW1lbnNpb25zQW5kTWV0cmljcyxcbiAgICAgIC4uLnByb3BlcnRpZXNcbiAgICB9O1xuXG4gICAgLy8gUmVtb3ZlIHByb3BlcnRpZXMgdGhhdCBhcmUgbnVsbCBvciB1bmRlZmluZWRcbiAgICBPYmplY3Qua2V5cyh0aGlzLmRpbWVuc2lvbnNBbmRNZXRyaWNzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSB0aGlzLmRpbWVuc2lvbnNBbmRNZXRyaWNzW2tleV07XG4gICAgICBpZiAodmFsID09PSB1bmRlZmluZWQgfHwgdmFsID09PSBudWxsKSB7XG4gICAgICAgIGRlbGV0ZSB0aGlzLmRpbWVuc2lvbnNBbmRNZXRyaWNzW2tleV07XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodHlwZW9mIGd0YWcgIT09ICd1bmRlZmluZWQnICYmIGd0YWcpIHtcbiAgICAgIGd0YWcoJ3NldCcsIHRoaXMuZGltZW5zaW9uc0FuZE1ldHJpY3MpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZXZlbnRUcmFja0ludGVybmFsKGFjdGlvbjogc3RyaW5nLCBwcm9wZXJ0aWVzOiBhbnkgPSB7fSkge1xuICAgIHRoaXMuY2xlYW5Qcm9wZXJ0aWVzKHByb3BlcnRpZXMpO1xuICAgIGlmICh0eXBlb2YgZ3RhZyAhPT0gJ3VuZGVmaW5lZCcgJiYgZ3RhZykge1xuICAgICAgZ3RhZygnZXZlbnQnLCBhY3Rpb24sIHByb3BlcnRpZXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2xlYW5Qcm9wZXJ0aWVzKHByb3BlcnRpZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0pOiB2b2lkIHtcbiAgICAvLyBHQSByZXF1aXJlcyB0aGF0IGV2ZW50VmFsdWUgYmUgYW4gbm9uLW5lZ2F0aXZlIGludGVnZXIsIHNlZTpcbiAgICAvLyBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9hbmFseXRpY3MvZGV2Z3VpZGVzL2NvbGxlY3Rpb24vZ3RhZ2pzL2V2ZW50c1xuICAgIGlmIChwcm9wZXJ0aWVzLnZhbHVlKSB7XG4gICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZUludChwcm9wZXJ0aWVzLnZhbHVlLCAxMCk7XG4gICAgICBwcm9wZXJ0aWVzLnZhbHVlID0gaXNOYU4ocGFyc2VkKSA/IDAgOiBwYXJzZWQ7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './gst';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhcnRpY3MyLWdzdC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXJ0aWNzMi9nc3QvIiwic291cmNlcyI6WyJhbmd1bGFydGljczItZ3N0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vZ3N0JztcbiJdfQ==
@@ -1 +0,0 @@
1
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3N0LWludGVyZmFjZXMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFydGljczIvZ3N0LyIsInNvdXJjZXMiOlsiZ3N0LWludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbGluayBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9hbmFseXRpY3MvZGV2Z3VpZGVzL2NvbGxlY3Rpb24vZ3RhZ2pzL3VzZXItdGltaW5ncyAqL1xuZXhwb3J0IGludGVyZmFjZSBVc2VyVGltaW5nc0dzdCB7XG4gIC8qKiBBIHN0cmluZyB0byBpZGVudGlmeSB0aGUgdmFyaWFibGUgYmVpbmcgcmVjb3JkZWQgKGUuZy4gJ2xvYWQnKS4gKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKiogVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaW4gZWxhcHNlZCB0aW1lIHRvIHJlcG9ydCB0byBHb29nbGUgQW5hbHl0aWNzIChlLmcuIDIwKS4gKi9cbiAgdmFsdWU6IG51bWJlcjtcbiAgLyoqIEEgc3RyaW5nIGZvciBjYXRlZ29yaXppbmcgYWxsIHVzZXIgdGltaW5nIHZhcmlhYmxlcyBpbnRvIGxvZ2ljYWwgZ3JvdXBzIChlLmcuICdKUyBEZXBlbmRlbmNpZXMnKS4gKi9cbiAgY2F0ZWdvcnk/OiBzdHJpbmc7XG4gIC8qKiBBIHN0cmluZyB0aGF0IGNhbiBiZSB1c2VkIHRvIGFkZCBmbGV4aWJpbGl0eSBpbiB2aXN1YWxpemluZyB1c2VyIHRpbWluZ3MgaW4gdGhlIHJlcG9ydHMgKGUuZy4gJ0dvb2dsZSBDRE4nKS4gKi9cbiAgbGFiZWw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRHc3Qge1xuICBjYXRlZ29yeTogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZztcbiAgdmFsdWU/OiBudW1iZXIgfCBzdHJpbmc7XG4gIG5vbmludGVyYWN0aW9uPzogYm9vbGVhbjtcbiAgZ3N0Q3VzdG9tPzogYW55O1xufVxuIl19
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