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
@@ -0,0 +1,219 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../angulartics2-core";
4
+ export class GoogleAnalyticsDefaults {
5
+ constructor() {
6
+ this.additionalAccountNames = [];
7
+ this.userId = null;
8
+ this.transport = '';
9
+ this.anonymizeIp = false;
10
+ }
11
+ }
12
+ export class Angulartics2GoogleAnalytics {
13
+ constructor(angulartics2) {
14
+ this.angulartics2 = angulartics2;
15
+ this.dimensionsAndMetrics = [];
16
+ const defaults = new GoogleAnalyticsDefaults();
17
+ // Set the default settings for this module
18
+ this.angulartics2.settings.ga = {
19
+ ...defaults,
20
+ ...this.angulartics2.settings.ga,
21
+ };
22
+ this.settings = this.angulartics2.settings.ga;
23
+ this.angulartics2.setUsername.subscribe((x) => this.setUsername(x));
24
+ this.angulartics2.setUserProperties.subscribe(x => this.setUserProperties(x));
25
+ }
26
+ startTracking() {
27
+ this.angulartics2.pageTrack
28
+ .pipe(this.angulartics2.filterDeveloperMode())
29
+ .subscribe(x => this.pageTrack(x.path));
30
+ this.angulartics2.eventTrack
31
+ .pipe(this.angulartics2.filterDeveloperMode())
32
+ .subscribe(x => this.eventTrack(x.action, x.properties));
33
+ this.angulartics2.exceptionTrack
34
+ .pipe(this.angulartics2.filterDeveloperMode())
35
+ .subscribe(x => this.exceptionTrack(x));
36
+ this.angulartics2.userTimings
37
+ .pipe(this.angulartics2.filterDeveloperMode())
38
+ .subscribe(x => this.userTimings(x));
39
+ }
40
+ pageTrack(path) {
41
+ if (typeof _gaq !== 'undefined' && _gaq) {
42
+ _gaq.push(['_trackPageview', path]);
43
+ for (const accountName of this.angulartics2.settings.ga.additionalAccountNames) {
44
+ _gaq.push([accountName + '._trackPageview', path]);
45
+ }
46
+ }
47
+ if (typeof ga !== 'undefined' && ga) {
48
+ if (this.angulartics2.settings.ga.userId) {
49
+ ga('set', '&uid', this.angulartics2.settings.ga.userId);
50
+ for (const accountName of this.angulartics2.settings.ga.additionalAccountNames) {
51
+ ga(accountName + '.set', '&uid', this.angulartics2.settings.ga.userId);
52
+ }
53
+ }
54
+ if (this.angulartics2.settings.ga.anonymizeIp) {
55
+ ga('set', 'anonymizeIp', true);
56
+ for (const accountName of this.angulartics2.settings.ga.additionalAccountNames) {
57
+ ga(accountName + '.set', 'anonymizeIp', true);
58
+ }
59
+ }
60
+ ga('send', 'pageview', path);
61
+ for (const accountName of this.angulartics2.settings.ga.additionalAccountNames) {
62
+ ga(accountName + '.send', 'pageview', path);
63
+ }
64
+ }
65
+ }
66
+ /**
67
+ * Track Event in GA
68
+ *
69
+ * @param action Associated with the event
70
+ * @param properties Comprised of:
71
+ * - category (string) and optional
72
+ * - label (string)
73
+ * - value (integer)
74
+ * - noninteraction (boolean)
75
+ *
76
+ * @link https://developers.google.com/analytics/devguides/collection/gajs/eventTrackerGuide#SettingUpEventTracking
77
+ * @link https://developers.google.com/analytics/devguides/collection/analyticsjs/events
78
+ */
79
+ eventTrack(action, properties) {
80
+ // Google Analytics requires an Event Category
81
+ if (!properties || !properties.category) {
82
+ properties = properties || {};
83
+ properties.category = 'Event';
84
+ }
85
+ // GA requires that eventValue be an integer, see:
86
+ // https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#eventValue
87
+ // https://github.com/luisfarzati/angulartics/issues/81
88
+ if (properties.value) {
89
+ const parsed = parseInt(properties.value, 10);
90
+ properties.value = isNaN(parsed) ? 0 : parsed;
91
+ }
92
+ if (typeof ga !== 'undefined') {
93
+ const eventOptions = {
94
+ eventCategory: properties.category,
95
+ eventAction: action,
96
+ eventLabel: properties.label,
97
+ eventValue: properties.value,
98
+ nonInteraction: properties.noninteraction,
99
+ page: properties.page || location.hash.substring(1) || location.pathname,
100
+ userId: this.angulartics2.settings.ga.userId,
101
+ hitCallback: properties.hitCallback,
102
+ ...(this.angulartics2.settings.ga.transport && {
103
+ transport: this.angulartics2.settings.ga.transport,
104
+ }),
105
+ };
106
+ // add custom dimensions and metrics
107
+ this.setDimensionsAndMetrics(properties);
108
+ ga('send', 'event', eventOptions);
109
+ for (const accountName of this.angulartics2.settings.ga.additionalAccountNames) {
110
+ ga(accountName + '.send', 'event', eventOptions);
111
+ }
112
+ }
113
+ else if (typeof _gaq !== 'undefined') {
114
+ _gaq.push([
115
+ '_trackEvent',
116
+ properties.category,
117
+ action,
118
+ properties.label,
119
+ properties.value,
120
+ properties.noninteraction,
121
+ ]);
122
+ }
123
+ }
124
+ /**
125
+ * Exception Track Event in GA
126
+ *
127
+ * @param properties Comprised of the optional fields:
128
+ * - fatal (string)
129
+ * - description (string)
130
+ *
131
+ * @https://developers.google.com/analytics/devguides/collection/analyticsjs/exceptions
132
+ *
133
+ * @link https://developers.google.com/analytics/devguides/collection/analyticsjs/events
134
+ */
135
+ exceptionTrack(properties) {
136
+ if (properties.fatal === undefined) {
137
+ console.log('No "fatal" provided, sending with fatal=true');
138
+ properties.fatal = true;
139
+ }
140
+ properties.exDescription = properties.description;
141
+ const eventOptions = {
142
+ exFatal: properties.fatal,
143
+ exDescription: properties.description,
144
+ };
145
+ ga('send', 'exception', eventOptions);
146
+ for (const accountName of this.angulartics2.settings.ga.additionalAccountNames) {
147
+ ga(accountName + '.send', 'exception', eventOptions);
148
+ }
149
+ }
150
+ /**
151
+ * User Timings Event in GA
152
+ *
153
+ * @param properties Comprised of the mandatory fields:
154
+ * - timingCategory (string)
155
+ * - timingVar (string)
156
+ * - timingValue (number)
157
+ * Properties can also have the optional fields:
158
+ * - timingLabel (string)
159
+ *
160
+ * @link https://developers.google.com/analytics/devguides/collection/analyticsjs/user-timings
161
+ */
162
+ userTimings(properties) {
163
+ if (!properties ||
164
+ !properties.timingCategory ||
165
+ !properties.timingVar ||
166
+ !properties.timingValue) {
167
+ console.error('Properties timingCategory, timingVar, and timingValue are required to be set.');
168
+ return;
169
+ }
170
+ if (typeof ga !== 'undefined') {
171
+ ga('send', 'timing', properties);
172
+ for (const accountName of this.angulartics2.settings.ga.additionalAccountNames) {
173
+ ga(accountName + '.send', 'timing', properties);
174
+ }
175
+ }
176
+ }
177
+ setUsername(userId) {
178
+ this.angulartics2.settings.ga.userId = userId;
179
+ if (typeof ga === 'undefined') {
180
+ return;
181
+ }
182
+ ga('set', 'userId', userId);
183
+ }
184
+ setUserProperties(properties) {
185
+ this.setDimensionsAndMetrics(properties);
186
+ }
187
+ setDimensionsAndMetrics(properties) {
188
+ if (typeof ga === 'undefined') {
189
+ return;
190
+ }
191
+ // clean previously used dimensions and metrics that will not be overriden
192
+ this.dimensionsAndMetrics.forEach(elem => {
193
+ if (!properties.hasOwnProperty(elem)) {
194
+ ga('set', elem, undefined);
195
+ this.angulartics2.settings.ga.additionalAccountNames.forEach((accountName) => {
196
+ ga(`${accountName}.set`, elem, undefined);
197
+ });
198
+ }
199
+ });
200
+ this.dimensionsAndMetrics = [];
201
+ // add custom dimensions and metrics
202
+ Object.keys(properties).forEach(key => {
203
+ if (key.lastIndexOf('dimension', 0) === 0 || key.lastIndexOf('metric', 0) === 0) {
204
+ ga('set', key, properties[key]);
205
+ this.angulartics2.settings.ga.additionalAccountNames.forEach((accountName) => {
206
+ ga(`${accountName}.set`, key, properties[key]);
207
+ });
208
+ this.dimensionsAndMetrics.push(key);
209
+ }
210
+ });
211
+ }
212
+ }
213
+ Angulartics2GoogleAnalytics.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: Angulartics2GoogleAnalytics, deps: [{ token: i1.Angulartics2 }], target: i0.ɵɵFactoryTarget.Injectable });
214
+ Angulartics2GoogleAnalytics.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: Angulartics2GoogleAnalytics, providedIn: 'root' });
215
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: Angulartics2GoogleAnalytics, decorators: [{
216
+ type: Injectable,
217
+ args: [{ providedIn: 'root' }]
218
+ }], ctorParameters: function () { return [{ type: i1.Angulartics2 }]; } });
219
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2EuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3Byb3ZpZGVycy9nYS9nYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFVM0MsTUFBTSxPQUFPLHVCQUF1QjtJQUFwQztRQUNFLDJCQUFzQixHQUFHLEVBQUUsQ0FBQztRQUM1QixXQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2QsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNmLGdCQUFXLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7Q0FBQTtBQUdELE1BQU0sT0FBTywyQkFBMkI7SUFJdEMsWUFBb0IsWUFBMEI7UUFBMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFIOUMseUJBQW9CLEdBQUcsRUFBRSxDQUFDO1FBSXhCLE1BQU0sUUFBUSxHQUFHLElBQUksdUJBQXVCLEVBQUUsQ0FBQztRQUMvQywyQ0FBMkM7UUFDM0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHO1lBQzlCLEdBQUcsUUFBUTtZQUNYLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBRTtTQUNqQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDOUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FB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QUMsQ0FBQyxDQUFDO2dCQUNqRCxDQUFDLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3JDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzt3SEE5TlUsMkJBQTJCOzRIQUEzQiwyQkFBMkIsY0FEZCxNQUFNOzJGQUNuQiwyQkFBMkI7a0JBRHZDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBbmd1bGFydGljczIgfSBmcm9tICcuLi8uLi9hbmd1bGFydGljczItY29yZSc7XG5pbXBvcnQgeyBHb29nbGVBbmFseXRpY3NTZXR0aW5ncyB9IGZyb20gJy4uLy4uL2FuZ3VsYXJ0aWNzMi1jb25maWcnO1xuaW1wb3J0IHsgVXNlclRpbWluZ3MgfSBmcm9tICcuLi8uLi9hbmd1bGFydGljczItaW50ZXJmYWNlcyc7XG5cbmRlY2xhcmUgdmFyIF9nYXE6IEdvb2dsZUFuYWx5dGljc0NvZGU7XG5kZWNsYXJlIHZhciBnYTogVW5pdmVyc2FsQW5hbHl0aWNzLmdhO1xuZGVjbGFyZSB2YXIgbG9jYXRpb246IGFueTtcblxuZXhwb3J0IGNsYXNzIEdvb2dsZUFuYWx5dGljc0RlZmF1bHRzIGltcGxlbWVudHMgR29vZ2xlQW5hbHl0aWNzU2V0dGluZ3Mge1xuICBhZGRpdGlvbmFsQWNjb3VudE5hbWVzID0gW107XG4gIHVzZXJJZCA9IG51bGw7XG4gIHRyYW5zcG9ydCA9ICcnO1xuICBhbm9ueW1pemVJcCA9IGZhbHNlO1xufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJ0aWNzMkdvb2dsZUFuYWx5dGljcyB7XG4gIGRpbWVuc2lvbnNBbmRNZXRyaWNzID0gW107XG4gIHNldHRpbmdzOiBQYXJ0aWFsPEdvb2dsZUFuYWx5dGljc1NldHRpbmdzPjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFuZ3VsYXJ0aWNzMjogQW5ndWxhcnRpY3MyKSB7XG4gICAgY29uc3QgZGVmYXVsdHMgPSBuZXcgR29vZ2xlQW5hbHl0aWNzRGVmYXVsdHMoKTtcbiAgICAvLyBTZXQgdGhlIGRlZmF1bHQgc2V0dGluZ3MgZm9yIHRoaXMgbW9kdWxlXG4gICAgdGhpcy5hbmd1bGFydGljczIuc2V0dGluZ3MuZ2EgPSB7XG4gICAgICAuLi5kZWZhdWx0cyxcbiAgICAgIC4uLnRoaXMuYW5ndWxhcnRpY3MyLnNldHRpbmdzLmdhLFxuICAgIH07XG4gICAgdGhpcy5zZXR0aW5ncyA9IHRoaXMuYW5ndWxhcnRpY3MyLnNldHRpbmdzLmdhO1xuICAgIHRoaXMuYW5ndWxhcnRpY3MyLnNldFVzZXJuYW1lLnN1YnNjcmliZSgoeDogc3RyaW5nKSA9PiB0aGlzLnNldFVzZXJuYW1lKHgpKTtcbiAgICB0aGlzLmFuZ3VsYXJ0aWNzMi5zZXRVc2VyUHJvcGVydGllcy5zdWJzY3JpYmUoeCA9PiB0aGlzLnNldFVzZXJQcm9wZXJ0aWVzKHgpKTtcbiAgfVxuXG4gIHN0YXJ0VHJhY2tpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5hbmd1bGFydGljczIucGFnZVRyYWNrXG4gICAgICAucGlwZSh0aGlzLmFuZ3VsYXJ0aWNzMi5maWx0ZXJEZXZlbG9wZXJNb2RlKCkpXG4gICAgICAuc3Vic2NyaWJlKHggPT4gdGhpcy5wYWdlVHJhY2soeC5wYXRoKSk7XG4gICAgdGhpcy5hbmd1bGFydGljczIuZXZlbnRUcmFja1xuICAgICAgLnBpcGUodGhpcy5hbmd1bGFydGljczIuZmlsdGVyRGV2ZWxvcGVyTW9kZSgpKVxuICAgICAgLnN1YnNjcmliZSh4ID0+IHRoaXMuZXZlbnRUcmFjayh4LmFjdGlvbiwgeC5wcm9wZXJ0aWVzKSk7XG4gICAgdGhpcy5hbmd1bGFydGljczIuZXhjZXB0aW9uVHJhY2tcbiAgICAgIC5waXBlKHRoaXMuYW5ndWxhcnRpY3MyLmZpbHRlckRldmVsb3Blck1vZGUoKSlcbiAgICAgIC5zdWJzY3JpYmUoeCA9PiB0aGlzLmV4Y2VwdGlvblRyYWNrKHgpKTtcbiAgICB0aGlzLmFuZ3VsYXJ0aWNzMi51c2VyVGltaW5nc1xuICAgICAgLnBpcGUodGhpcy5hbmd1bGFydGljczIuZmlsdGVyRGV2ZWxvcGVyTW9kZSgpKVxuICAgICAgLnN1YnNjcmliZSh4ID0+IHRoaXMudXNlclRpbWluZ3MoeCkpO1xuICB9XG5cbiAgcGFnZVRyYWNrKHBhdGg6IHN0cmluZykge1xuICAgIGlmICh0eXBlb2YgX2dhcSAhPT0gJ3VuZGVmaW5lZCcgJiYgX2dhcSkge1xuICAgICAgX2dhcS5wdXNoKFsnX3RyYWNrUGFnZXZpZXcnLCBwYXRoXSk7XG4gICAgICBmb3IgKGNvbnN0IGFjY291bnROYW1lIG9mIHRoaXMuYW5ndWxhcnRpY3MyLnNldHRpbmdzLmdhLmFkZGl0aW9uYWxBY2NvdW50TmFtZXMpIHtcbiAgICAgICAgX2dhcS5wdXNoKFthY2NvdW50TmFtZSArICcuX3RyYWNrUGFnZXZpZXcnLCBwYXRoXSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZ2EgIT09ICd1bmRlZmluZWQnICYmIGdhKSB7XG4gICAgICBpZiAodGhpcy5hbmd1bGFydGljczIuc2V0dGluZ3MuZ2EudXNlcklkKSB7XG4gICAgICAgIGdhKCdzZXQnLCAnJnVpZCcsIHRoaXMuYW5ndWxhcnRpY3MyLnNldHRpbmdzLmdhLnVzZXJJZCk7XG4gICAgICAgIGZvciAoY29uc3QgYWNjb3VudE5hbWUgb2YgdGhpcy5hbmd1bGFydGljczIuc2V0dGluZ3MuZ2EuYWRkaXRpb25hbEFjY291bnROYW1lcykge1xuICAgICAgICAgIGdhKGFjY291bnROYW1lICsgJy5zZXQnLCAnJnVpZCcsIHRoaXMuYW5ndWxhcnRpY3MyLnNldHRpbmdzLmdhLnVzZXJJZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmFuZ3VsYXJ0aWNzMi5zZXR0aW5ncy5nYS5hbm9ueW1pemVJcCkge1xuICAgICAgICBnYSgnc2V0JywgJ2Fub255bWl6ZUlwJywgdHJ1ZSk7XG4gICAgICAgIGZvciAoY29uc3QgYWNjb3VudE5hbWUgb2YgdGhpcy5hbmd1bGFydGljczIuc2V0dGluZ3MuZ2EuYWRkaXRpb25hbEFjY291bnROYW1lcykge1xuICAgICAgICAgIGdhKGFjY291bnROYW1lICsgJy5zZXQnLCAnYW5vbnltaXplSXAnLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZ2EoJ3NlbmQnLCAncGFnZXZpZXcnLCBwYXRoKTtcbiAgICAgIGZvciAoY29uc3QgYWNjb3VudE5hbWUgb2YgdGhpcy5hbmd1bGFydGljczIuc2V0dGluZ3MuZ2EuYWRkaXRpb25hbEFjY291bnROYW1lcykge1xuICAgICAgICBnYShhY2NvdW50TmFtZSArICcuc2VuZCcsICdwYWdldmlldycsIHBhdGgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFjayBFdmVudCBpbiBHQVxuICAgKlxuICAgKiBAcGFyYW0gYWN0aW9uIEFzc29jaWF0ZWQgd2l0aCB0aGUgZXZlbnRcbiAgICogQHBhcmFtIHByb3BlcnRpZXMgQ29tcHJpc2VkIG9mOlxuICAgKiAgLSBjYXRlZ29yeSAoc3RyaW5nKSBhbmQgb3B0aW9uYWxcbiAgICogIC0gbGFiZWwgKHN0cmluZylcbiAgICogIC0gdmFsdWUgKGludGVnZXIpXG4gICAqICAtIG5vbmludGVyYWN0aW9uIChib29sZWFuKVxuICAgKlxuICAgKiBAbGluayBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9hbmFseXRpY3MvZGV2Z3VpZGVzL2NvbGxlY3Rpb24vZ2Fqcy9ldmVudFRyYWNrZXJHdWlkZSNTZXR0aW5nVXBFdmVudFRyYWNraW5nXG4gICAqIEBsaW5rIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL2FuYWx5dGljcy9kZXZndWlkZXMvY29sbGVjdGlvbi9hbmFseXRpY3Nqcy9ldmVudHNcbiAgICovXG4gIGV2ZW50VHJhY2soYWN0aW9uOiBzdHJpbmcsIHByb3BlcnRpZXM6IGFueSkge1xuICAgIC8vIEdvb2dsZSBBbmFseXRpY3MgcmVxdWlyZXMgYW4gRXZlbnQgQ2F0ZWdvcnlcbiAgICBpZiAoIXByb3BlcnRpZXMgfHwgIXByb3BlcnRpZXMuY2F0ZWdvcnkpIHtcbiAgICAgIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzIHx8IHt9O1xuICAgICAgcHJvcGVydGllcy5jYXRlZ29yeSA9ICdFdmVudCc7XG4gICAgfVxuICAgIC8vIEdBIHJlcXVpcmVzIHRoYXQgZXZlbnRWYWx1ZSBiZSBhbiBpbnRlZ2VyLCBzZWU6XG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vYW5hbHl0aWNzL2Rldmd1aWRlcy9jb2xsZWN0aW9uL2FuYWx5dGljc2pzL2ZpZWxkLXJlZmVyZW5jZSNldmVudFZhbHVlXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2x1aXNmYXJ6YXRpL2FuZ3VsYXJ0aWNzL2lzc3Vlcy84MVxuICAgIGlmIChwcm9wZXJ0aWVzLnZhbHVlKSB7XG4gICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZUludChwcm9wZXJ0aWVzLnZhbHVlLCAxMCk7XG4gICAgICBwcm9wZXJ0aWVzLnZhbHVlID0gaXNOYU4ocGFyc2VkKSA/IDAgOiBwYXJzZWQ7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBnYSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNvbnN0IGV2ZW50T3B0aW9ucyA9IHtcbiAgICAgICAgZXZlbnRDYXRlZ29yeTogcHJvcGVydGllcy5jYXRlZ29yeSxcbiAgICAgICAgZXZlbnRBY3Rpb246IGFjdGlvbixcbiAgICAgICAgZXZlbnRMYWJlbDogcHJvcGVydGllcy5sYWJlbCxcbiAgICAgICAgZXZlbnRWYWx1ZTogcHJvcGVydGllcy52YWx1ZSxcbiAgICAgICAgbm9uSW50ZXJhY3Rpb246IHByb3BlcnRpZXMubm9uaW50ZXJhY3Rpb24sXG4gICAgICAgIHBhZ2U6IHByb3BlcnRpZXMucGFnZSB8fCBsb2NhdGlvbi5oYXNoLnN1YnN0cmluZygxKSB8fCBsb2NhdGlvbi5wYXRobmFtZSxcbiAgICAgICAgdXNlcklkOiB0aGlzLmFuZ3VsYXJ0aWNzMi5zZXR0aW5ncy5nYS51c2VySWQsXG4gICAgICAgIGhpdENhbGxiYWNrOiBwcm9wZXJ0aWVzLmhpdENhbGxiYWNrLFxuICAgICAgICAuLi4odGhpcy5hbmd1bGFydGljczIuc2V0dGluZ3MuZ2EudHJhbnNwb3J0ICYmIHtcbiAgICAgICAgICB0cmFuc3BvcnQ6IHRoaXMuYW5ndWxhcnRpY3MyLnNldHRpbmdzLmdhLnRyYW5zcG9ydCxcbiAgICAgICAgfSksXG4gICAgICB9O1xuXG4gICAgICAvLyBhZGQgY3VzdG9tIGRpbWVuc2lvbnMgYW5kIG1ldHJpY3NcbiAgICAgIHRoaXMuc2V0RGltZW5zaW9uc0FuZE1ldHJpY3MocHJvcGVydGllcyk7XG5cbiAgICAgIGdhKCdzZW5kJywgJ2V2ZW50JywgZXZlbnRPcHRpb25zKTtcblxuICAgICAgZm9yIChjb25zdCBhY2NvdW50TmFtZSBvZiB0aGlzLmFuZ3VsYXJ0aWNzMi5zZXR0aW5ncy5nYS5hZGRpdGlvbmFsQWNjb3VudE5hbWVzKSB7XG4gICAgICAgIGdhKGFjY291bnROYW1lICsgJy5zZW5kJywgJ2V2ZW50JywgZXZlbnRPcHRpb25zKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBfZ2FxICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgX2dhcS5wdXNoKFtcbiAgICAgICAgJ190cmFja0V2ZW50JyxcbiAgICAgICAgcHJvcGVydGllcy5jYXRlZ29yeSxcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBwcm9wZXJ0aWVzLmxhYmVsLFxuICAgICAgICBwcm9wZXJ0aWVzLnZhbHVlLFxuICAgICAgICBwcm9wZXJ0aWVzLm5vbmludGVyYWN0aW9uLFxuICAgICAgXSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEV4Y2VwdGlvbiBUcmFjayBFdmVudCBpbiBHQVxuICAgKlxuICAgKiBAcGFyYW0gcHJvcGVydGllcyBDb21wcmlzZWQgb2YgdGhlIG9wdGlvbmFsIGZpZWxkczpcbiAgICogIC0gZmF0YWwgKHN0cmluZylcbiAgICogIC0gZGVzY3JpcHRpb24gKHN0cmluZylcbiAgICpcbiAgICogQGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL2FuYWx5dGljcy9kZXZndWlkZXMvY29sbGVjdGlvbi9hbmFseXRpY3Nqcy9leGNlcHRpb25zXG4gICAqXG4gICAqIEBsaW5rIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL2FuYWx5dGljcy9kZXZndWlkZXMvY29sbGVjdGlvbi9hbmFseXRpY3Nqcy9ldmVudHNcbiAgICovXG4gIGV4Y2VwdGlvblRyYWNrKHByb3BlcnRpZXM6IGFueSkge1xuICAgIGlmIChwcm9wZXJ0aWVzLmZhdGFsID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdObyBcImZhdGFsXCIgcHJvdmlkZWQsIHNlbmRpbmcgd2l0aCBmYXRhbD10cnVlJyk7XG4gICAgICBwcm9wZXJ0aWVzLmZhdGFsID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcm9wZXJ0aWVzLmV4RGVzY3JpcHRpb24gPSBwcm9wZXJ0aWVzLmRlc2NyaXB0aW9uO1xuXG4gICAgY29uc3QgZXZlbnRPcHRpb25zID0ge1xuICAgICAgZXhGYXRhbDogcHJvcGVydGllcy5mYXRhbCxcbiAgICAgIGV4RGVzY3JpcHRpb246IHByb3BlcnRpZXMuZGVzY3JpcHRpb24sXG4gICAgfTtcblxuICAgIGdhKCdzZW5kJywgJ2V4Y2VwdGlvbicsIGV2ZW50T3B0aW9ucyk7XG4gICAgZm9yIChjb25zdCBhY2NvdW50TmFtZSBvZiB0aGlzLmFuZ3VsYXJ0aWNzMi5zZXR0aW5ncy5nYS5hZGRpdGlvbmFsQWNjb3VudE5hbWVzKSB7XG4gICAgICBnYShhY2NvdW50TmFtZSArICcuc2VuZCcsICdleGNlcHRpb24nLCBldmVudE9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VyIFRpbWluZ3MgRXZlbnQgaW4gR0FcbiAgICpcbiAgICogQHBhcmFtIHByb3BlcnRpZXMgQ29tcHJpc2VkIG9mIHRoZSBtYW5kYXRvcnkgZmllbGRzOlxuICAgKiAgLSB0aW1pbmdDYXRlZ29yeSAoc3RyaW5nKVxuICAgKiAgLSB0aW1pbmdWYXIgKHN0cmluZylcbiAgICogIC0gdGltaW5nVmFsdWUgKG51bWJlcilcbiAgICogUHJvcGVydGllcyBjYW4gYWxzbyBoYXZlIHRoZSBvcHRpb25hbCBmaWVsZHM6XG4gICAqICAtIHRpbWluZ0xhYmVsIChzdHJpbmcpXG4gICAqXG4gICAqIEBsaW5rIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL2FuYWx5dGljcy9kZXZndWlkZXMvY29sbGVjdGlvbi9hbmFseXRpY3Nqcy91c2VyLXRpbWluZ3NcbiAgICovXG4gIHVzZXJUaW1pbmdzKHByb3BlcnRpZXM6IFVzZXJUaW1pbmdzKSB7XG4gICAgaWYgKFxuICAgICAgIXByb3BlcnRpZXMgfHxcbiAgICAgICFwcm9wZXJ0aWVzLnRpbWluZ0NhdGVnb3J5IHx8XG4gICAgICAhcHJvcGVydGllcy50aW1pbmdWYXIgfHxcbiAgICAgICFwcm9wZXJ0aWVzLnRpbWluZ1ZhbHVlXG4gICAgKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAnUHJvcGVydGllcyB0aW1pbmdDYXRlZ29yeSwgdGltaW5nVmFyLCBhbmQgdGltaW5nVmFsdWUgYXJlIHJlcXVpcmVkIHRvIGJlIHNldC4nLFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGdhICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgZ2EoJ3NlbmQnLCAndGltaW5nJywgcHJvcGVydGllcyk7XG4gICAgICBmb3IgKGNvbnN0IGFjY291bnROYW1lIG9mIHRoaXMuYW5ndWxhcnRpY3MyLnNldHRpbmdzLmdhLmFkZGl0aW9uYWxBY2NvdW50TmFtZXMpIHtcbiAgICAgICAgZ2EoYWNjb3VudE5hbWUgKyAnLnNlbmQnLCAndGltaW5nJywgcHJvcGVydGllcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0VXNlcm5hbWUodXNlcklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmFuZ3VsYXJ0aWNzMi5zZXR0aW5ncy5nYS51c2VySWQgPSB1c2VySWQ7XG4gICAgaWYgKHR5cGVvZiBnYSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZ2EoJ3NldCcsICd1c2VySWQnLCB1c2VySWQpO1xuICB9XG5cbiAgc2V0VXNlclByb3BlcnRpZXMocHJvcGVydGllczogYW55KSB7XG4gICAgdGhpcy5zZXREaW1lbnNpb25zQW5kTWV0cmljcyhwcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RGltZW5zaW9uc0FuZE1ldHJpY3MocHJvcGVydGllczogYW55KSB7XG4gICAgaWYgKHR5cGVvZiBnYSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gY2xlYW4gcHJldmlvdXNseSB1c2VkIGRpbWVuc2lvbnMgYW5kIG1ldHJpY3MgdGhhdCB3aWxsIG5vdCBiZSBvdmVycmlkZW5cbiAgICB0aGlzLmRpbWVuc2lvbnNBbmRNZXRyaWNzLmZvckVhY2goZWxlbSA9PiB7XG4gICAgICBpZiAoIXByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoZWxlbSkpIHtcbiAgICAgICAgZ2EoJ3NldCcsIGVsZW0sIHVuZGVmaW5lZCk7XG5cbiAgICAgICAgdGhpcy5hbmd1bGFydGljczIuc2V0dGluZ3MuZ2EuYWRkaXRpb25hbEFjY291bnROYW1lcy5mb3JFYWNoKChhY2NvdW50TmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgZ2EoYCR7YWNjb3VudE5hbWV9LnNldGAsIGVsZW0sIHVuZGVmaW5lZCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuZGltZW5zaW9uc0FuZE1ldHJpY3MgPSBbXTtcblxuICAgIC8vIGFkZCBjdXN0b20gZGltZW5zaW9ucyBhbmQgbWV0cmljc1xuICAgIE9iamVjdC5rZXlzKHByb3BlcnRpZXMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGlmIChrZXkubGFzdEluZGV4T2YoJ2RpbWVuc2lvbicsIDApID09PSAwIHx8IGtleS5sYXN0SW5kZXhPZignbWV0cmljJywgMCkgPT09IDApIHtcbiAgICAgICAgZ2EoJ3NldCcsIGtleSwgcHJvcGVydGllc1trZXldKTtcblxuICAgICAgICB0aGlzLmFuZ3VsYXJ0aWNzMi5zZXR0aW5ncy5nYS5hZGRpdGlvbmFsQWNjb3VudE5hbWVzLmZvckVhY2goKGFjY291bnROYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBnYShgJHthY2NvdW50TmFtZX0uc2V0YCwga2V5LCBwcm9wZXJ0aWVzW2tleV0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5kaW1lbnNpb25zQW5kTWV0cmljcy5wdXNoKGtleSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Product and Promotion Actions
3
+ *
4
+ * Actions specify how to interpret product and promotion data that you send to Google Analytics.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2EtZW5oYW5jZWQtZWNvbS1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9wcm92aWRlcnMvZ2EtZW5oYW5jZWQtZWNvbS9nYS1lbmhhbmNlZC1lY29tLW9wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUHJvZHVjdCBhbmQgUHJvbW90aW9uIEFjdGlvbnNcbiAqXG4gKiBBY3Rpb25zIHNwZWNpZnkgaG93IHRvIGludGVycHJldCBwcm9kdWN0IGFuZCBwcm9tb3Rpb24gZGF0YSB0aGF0IHlvdSBzZW5kIHRvIEdvb2dsZSBBbmFseXRpY3MuXG4gKi9cblxuZXhwb3J0IHR5cGUgR2FFbmhhbmNlZEVjb21BY3Rpb24gPVxuICB8ICdjbGljaycgLy8gQSBjbGljayBvbiBhIHByb2R1Y3Qgb3IgcHJvZHVjdCBsaW5rIGZvciBvbmUgb3IgbW9yZSBwcm9kdWN0cy5cbiAgfCAnZGV0YWlsJyAvLyBBIHZpZXcgb2YgcHJvZHVjdCBkZXRhaWxzLlxuICB8ICdhZGQnIC8vIEFkZGluZyBvbmUgb3IgbW9yZSBwcm9kdWN0cyB0byBhIHNob3BwaW5nIGNhcnQuXG4gIHwgJ3JlbW92ZScgLy8gUmVtb3ZlIG9uZSBvciBtb3JlIHByb2R1Y3RzIGZyb20gYSBzaG9wcGluZyBjYXJ0LlxuICB8ICdjaGVja291dCcgLy8gSW5pdGlhdGluZyB0aGUgY2hlY2tvdXQgcHJvY2VzcyBmb3Igb25lIG9yIG1vcmUgcHJvZHVjdHMuXG4gIHwgJ2NoZWNrb3V0X29wdGlvbicgLy8gU2VuZGluZyB0aGUgb3B0aW9uIHZhbHVlIGZvciBhIGdpdmVuIGNoZWNrb3V0IHN0ZXAuXG4gIHwgJ3B1cmNoYXNlJyAvLyBUaGUgc2FsZSBvZiBvbmUgb3IgbW9yZSBwcm9kdWN0cy5cbiAgfCAncmVmdW5kJyAvLyBUaGUgcmVmdW5kIG9mIG9uZSBvciBtb3JlIHByb2R1Y3RzLlxuICB8ICdwcm9tb19jbGljayc7IC8vIEEgY2xpY2sgb24gYW4gaW50ZXJuYWwgcHJvbW90aW9uLlxuXG4vKipcbiAqIEltcHJlc3Npb24gRGF0YVxuICpcbiAqIFJlcHJlc2VudHMgaW5mb3JtYXRpb24gYWJvdXQgYSBwcm9kdWN0IHRoYXQgaGFzIGJlZW4gdmlld2VkLiBJdCBpc1xuICogcmVmZXJyZWQgdG8gYXMgYW4gaW1wcmVzc2lvbkZpZWxkT2JqZWN0IGFuZCBjb250YWlucyB0aGUgZm9sbG93aW5nIHZhbHVlcy5cbiAqXG4gKiBAbGluayBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9hbmFseXRpY3MvZGV2Z3VpZGVzL2NvbGxlY3Rpb24vYW5hbHl0aWNzanMvZW5oYW5jZWQtZWNvbW1lcmNlI2ltcHJlc3Npb24tZGF0YVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdhRW5oYW5jZWRFY29tSW1wcmVzc2lvbkZpZWxkT2JqZWN0IHtcbiAgLyoqIFRoZSBwcm9kdWN0IElEIG9yIFNLVSAoZS5nLiBQNjc4OTApLiAqRWl0aGVyIHRoaXMgZmllbGQgb3IgbmFtZSBtdXN0IGJlIHNldC4gKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqIFRoZSBuYW1lIG9mIHRoZSBwcm9kdWN0IChlLmcuIEFuZHJvaWQgVC1TaGlydCkuICpFaXRoZXIgdGhpcyBmaWVsZCBvciBpZCBtdXN0IGJlIHNldC4gKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKiogVGhlIGxpc3Qgb3IgY29sbGVjdGlvbiB0byB3aGljaCB0aGUgcHJvZHVjdCBiZWxvbmdzIChlLmcuIFNlYXJjaCBSZXN1bHRzKSAqL1xuICBsaXN0OiBzdHJpbmc7XG4gIC8qKiBUaGUgYnJhbmQgYXNzb2NpYXRlZCB3aXRoIHRoZSBwcm9kdWN0IChlLmcuIEdvb2dsZSkuICovXG4gIGJyYW5kOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgY2F0ZWdvcnkgdG8gd2hpY2ggdGhlIHByb2R1Y3QgYmVsb25ncyAoZS5nLiBBcHBhcmVsKS5cbiAgICogVXNlIC8gYXMgYSBkZWxpbWl0ZXIgdG8gc3BlY2lmeSB1cCB0byA1LWxldmVscyBvZiBoaWVyYXJjaHkgKGUuZy4gQXBwYXJlbC9NZW4vVC1TaGlydHMpXG4gICAqL1xuICBjYXRlZ29yeTogc3RyaW5nO1xuICAvKiogVGhlIHZhcmlhbnQgb2YgdGhlIHByb2R1Y3QgKGUuZy4gQmxhY2spLiAqL1xuICB2YXJpYW50OiBzdHJpbmc7XG4gIC8qKiBUaGUgcHJvZHVjdCdzIHBvc2l0aW9uIGluIGEgbGlzdCBvciBjb2xsZWN0aW9uIChlLmcuIDIpICovXG4gIHBvc2l0aW9uOiBudW1iZXI7XG4gIC8qKiBUaGUgcHJpY2Ugb2YgYSBwcm9kdWN0IChlLmcuIDI5LjIwKSAqL1xuICBwcmljZTogbnVtYmVyO1xufVxuXG4vKipcbiAqIFByb2R1Y3QgRGF0YVxuICpcbiAqIFByb2R1Y3QgZGF0YSByZXByZXNlbnRzIGluZGl2aWR1YWwgcHJvZHVjdHMgdGhhdCB3ZXJlIHZpZXdlZCwgYWRkZWRcbiAqIHRvIHRoZSBzaG9wcGluZyBjYXJ0LCBldGMuIEl0IGlzIHJlZmVycmVkIHRvIGFzIGEgcHJvZHVjdEZpZWxkT2JqZWN0XG4gKiBhbmQgY29udGFpbnMgdGhlIGZvbGxvd2luZyB2YWx1ZXMuXG4gKlxuICogQGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vYW5hbHl0aWNzL2Rldmd1aWRlcy9jb2xsZWN0aW9uL2FuYWx5dGljc2pzL2VuaGFuY2VkLWVjb21tZXJjZSNwcm9kdWN0LWRhdGFcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHYUVuaGFuY2VkRWNvbVByb2R1Y3RGaWVsZE9iamVjdCB7XG4gIC8qKiBUaGUgcHJvZHVjdCBJRCBvciBTS1UgKGUuZy4gUDY3ODkwKS4gKkVpdGhlciB0aGlzIGZpZWxkIG9yIG5hbWUgbXVzdCBiZSBzZXQuICovXG4gIGlkOiBzdHJpbmc7XG4gIC8qKiBUaGUgbmFtZSBvZiB0aGUgcHJvZHVjdCAoZS5nLiBBbmRyb2lkIFQtU2hpcnQpLiAqRWl0aGVyIHRoaXMgZmllbGQgb3IgaWQgbXVzdCBiZSBzZXQuICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIFRoZSBicmFuZCBhc3NvY2lhdGVkIHdpdGggdGhlIHByb2R1Y3QgKGUuZy4gR29vZ2xlKS4gKi9cbiAgYnJhbmQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBjYXRlZ29yeSB0byB3aGljaCB0aGUgcHJvZHVjdCBiZWxvbmdzIChlLmcuIEFwcGFyZWwpLlxuICAgKiBVc2UgLyBhcyBhIGRlbGltaXRlciB0byBzcGVjaWZ5IHVwIHRvIDUtbGV2ZWxzIG9mIGhpZXJhcmNoeSAoZS5nLiBBcHBhcmVsL01lbi9ULVNoaXJ0cykuXG4gICAqL1xuICBjYXRlZ29yeTogc3RyaW5nO1xuICAvKiogVGhlIHZhcmlhbnQgb2YgdGhlIHByb2R1Y3QgKGUuZy4gQmxhY2spLiAqL1xuICB2YXJpYW50OiBzdHJpbmc7XG4gIC8qKiBUaGUgcHJpY2Ugb2YgYSBwcm9kdWN0IChlLmcuIDI5LjIwKS4gKi9cbiAgcHJpY2U6IG51bWJlcjtcbiAgLyoqIFRoZSBxdWFudGl0eSBvZiBhIHByb2R1Y3QgKGUuZy4gMikuICovXG4gIHF1YW50aXR5OiBudW1iZXI7XG4gIC8qKiBUaGUgY291cG9uIGNvZGUgYXNzb2NpYXRlZCB3aXRoIGEgcHJvZHVjdCAoZS5nLiBTVU1NRVJfU0FMRTEzKS4gKi9cbiAgY291cG9uOiBzdHJpbmc7XG4gIC8qKiBUaGUgcHJvZHVjdCdzIHBvc2l0aW9uIGluIGEgbGlzdCBvciBjb2xsZWN0aW9uIChlLmcuIDIpLiAqL1xuICBwb3NpdGlvbjogbnVtYmVyO1xufVxuXG4vKipcbiAqIFByb21vdGlvbiBEYXRhXG4gKlxuICogUmVwcmVzZW50cyBpbmZvcm1hdGlvbiBhYm91dCBhIHByb21vdGlvbiB0aGF0IGhhcyBiZWVuIHZpZXdlZC5cbiAqIEl0IGlzIHJlZmVycmVkIHRvIGEgcHJvbW9GaWVsZE9iamVjdCBhbmQgY29udGFpbnMgdGhlIGZvbGxvd2luZyB2YWx1ZXMuXG4gKlxuICogQGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vYW5hbHl0aWNzL2Rldmd1aWRlcy9jb2xsZWN0aW9uL2FuYWx5dGljc2pzL2VuaGFuY2VkLWVjb21tZXJjZSNwcm9tb3Rpb24tZGF0YVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdhRW5oYW5jZWRFY29tUHJvbW9GaWVsZE9iamVjdCB7XG4gIC8qKiBUaGUgcHJvbW90aW9uIElEIChlLmcuIFBST01PXzEyMzQpLiAqRWl0aGVyIHRoaXMgZmllbGQgb3IgbmFtZSBtdXN0IGJlIHNldC4gKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqIFRoZSBuYW1lIG9mIHRoZSBwcm9tb3Rpb24gKGUuZy4gU3VtbWVyIFNhbGUpLiAqRWl0aGVyIHRoaXMgZmllbGQgb3IgaWQgbXVzdCBiZSBzZXQuICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIFRoZSBjcmVhdGl2ZSBhc3NvY2lhdGVkIHdpdGggdGhlIHByb21vdGlvbiAoZS5nLiBzdW1tZXJfYmFubmVyMikuICovXG4gIGNyZWF0aXZlOiBzdHJpbmc7XG4gIC8qKiBUaGUgcG9zaXRpb24gb2YgdGhlIGNyZWF0aXZlIChlLmcuIGJhbm5lcl9zbG90XzEpLiAqL1xuICBwb3NpdGlvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFjdGlvbiBEYXRhXG4gKlxuICogUmVwcmVzZW50cyBpbmZvcm1hdGlvbiBhYm91dCBhbiBlY29tbWVyY2UgcmVsYXRlZCBhY3Rpb25cbiAqIHRoYXQgaGFzIHRha2VuIHBsYWNlLiBJdCBpcyByZWZlcnJlZCB0byBhcyBhbiBhY3Rpb25GaWVsZE9iamVjdFxuICogYW5kIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgdmFsdWVzLlxuICpcbiAqIEBsaW5rIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL2FuYWx5dGljcy9kZXZndWlkZXMvY29sbGVjdGlvbi9hbmFseXRpY3Nqcy9lbmhhbmNlZC1lY29tbWVyY2UjYWN0aW9uLWRhdGFcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHYUVuaGFuY2VkRWNvbUFjdGlvbkZpZWxkT2JqZWN0IHtcbiAgLyoqIFRoZSB0cmFuc2FjdGlvbiBJRCAoZS5nLiBUMTIzNCkuICpSZXF1aXJlZCBpZiB0aGUgYWN0aW9uIHR5cGUgaXMgcHVyY2hhc2Ugb3IgcmVmdW5kLiAqL1xuICBpZDogc3RyaW5nO1xuICAvKiogVGhlIHN0b3JlIG9yIGFmZmlsaWF0aW9uIGZyb20gd2hpY2ggdGhpcyB0cmFuc2FjdGlvbiBvY2N1cnJlZCAoZS5nLiBHb29nbGUgU3RvcmUpLiAqL1xuICBhZmZpbGlhdGlvbjogc3RyaW5nO1xuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSB0b3RhbCByZXZlbnVlIG9yIGdyYW5kIHRvdGFsIGFzc29jaWF0ZWQgd2l0aCB0aGUgdHJhbnNhY3Rpb24gKGUuZy4gMTEuOTkpLlxuICAgKiBUaGlzIHZhbHVlIG1heSBpbmNsdWRlIHNoaXBwaW5nLCB0YXggY29zdHMsIG9yIG90aGVyIGFkanVzdG1lbnRzIHRvIHRvdGFsIHJldmVudWUgdGhhdFxuICAgKiB5b3Ugd2FudCB0byBpbmNsdWRlIGFzIHBhcnQgb2YgeW91ciByZXZlbnVlIGNhbGN1bGF0aW9ucy4gTm90ZTogaWYgcmV2ZW51ZSBpcyBub3Qgc2V0LFxuICAgKiBpdHMgdmFsdWUgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGNhbGN1bGF0ZWQgdXNpbmcgdGhlIHByb2R1Y3QgcXVhbnRpdHkgYW5kIHByaWNlIGZpZWxkc1xuICAgKiBvZiBhbGwgcHJvZHVjdHMgaW4gdGhlIHNhbWUgaGl0LlxuICAgKi9cbiAgcmV2ZW51ZTogbnVtYmVyO1xuICAvKiogVGhlIHRvdGFsIHRheCBhc3NvY2lhdGVkIHdpdGggdGhlIHRyYW5zYWN0aW9uLiAqL1xuICB0YXg6IG51bWJlcjtcbiAgLyoqIFRoZSBzaGlwcGluZyBjb3N0IGFzc29jaWF0ZWQgd2l0aCB0aGUgdHJhbnNhY3Rpb24uICovXG4gIHNoaXBwaW5nOiBudW1iZXI7XG4gIC8qKiBUaGUgdHJhbnNhY3Rpb24gY291cG9uIHJlZGVlbWVkIHdpdGggdGhlIHRyYW5zYWN0aW9uLiAqL1xuICBjb3Vwb246IHN0cmluZztcbiAgLyoqIFRoZSBsaXN0IHRoYXQgdGhlIGFzc29jaWF0ZWQgcHJvZHVjdHMgYmVsb25nIHRvLiBPcHRpb25hbC4gKi9cbiAgbGlzdDogc3RyaW5nO1xuICAvKiogQSBudW1iZXIgcmVwcmVzZW50aW5nIGEgc3RlcCBpbiB0aGUgY2hlY2tvdXQgcHJvY2Vzcy4gT3B0aW9uYWwgb24gY2hlY2tvdXQgYWN0aW9ucy4gKi9cbiAgc3RlcDogbnVtYmVyO1xuICAvKipcbiAgICogQWRkaXRpb25hbCBmaWVsZCBmb3IgY2hlY2tvdXQgYW5kIGNoZWNrb3V0X29wdGlvbiBhY3Rpb25zIHRoYXQgY2FuIGRlc2NyaWJlXG4gICAqIG9wdGlvbiBpbmZvcm1hdGlvbiBvbiB0aGUgY2hlY2tvdXQgcGFnZSwgbGlrZSBzZWxlY3RlZCBwYXltZW50IG1ldGhvZC5cbiAgICovXG4gIG9wdGlvbjogc3RyaW5nO1xufVxuIl19
@@ -0,0 +1,32 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class Angulartics2GoogleAnalyticsEnhancedEcommerce {
4
+ /**
5
+ * Add impression in GA enhanced ecommerce tracking
6
+ * @link https://developers.google.com/analytics/devguides/collection/analyticsjs/enhanced-ecommerce#measuring-activities
7
+ */
8
+ ecAddImpression(properties) {
9
+ ga('ec:addImpression', properties);
10
+ }
11
+ /**
12
+ * Add product in GA enhanced ecommerce tracking
13
+ * @link https://developers.google.com/analytics/devguides/collection/analyticsjs/ecommerce
14
+ */
15
+ ecAddProduct(product) {
16
+ ga('ec:addProduct', product);
17
+ }
18
+ /**
19
+ * Set action in GA enhanced ecommerce tracking
20
+ * @link https://developers.google.com/analytics/devguides/collection/analyticsjs/ecommerce
21
+ */
22
+ ecSetAction(action, properties) {
23
+ ga('ec:setAction', action, properties);
24
+ }
25
+ }
26
+ Angulartics2GoogleAnalyticsEnhancedEcommerce.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: Angulartics2GoogleAnalyticsEnhancedEcommerce, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
27
+ Angulartics2GoogleAnalyticsEnhancedEcommerce.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: Angulartics2GoogleAnalyticsEnhancedEcommerce, providedIn: 'root' });
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: Angulartics2GoogleAnalyticsEnhancedEcommerce, decorators: [{
29
+ type: Injectable,
30
+ args: [{ providedIn: 'root' }]
31
+ }] });
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2EtZW5oYW5jZWQtZWNvbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvcHJvdmlkZXJzL2dhLWVuaGFuY2VkLWVjb20vZ2EtZW5oYW5jZWQtZWNvbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVczQyxNQUFNLE9BQU8sNENBQTRDO0lBQ3ZEOzs7T0FHRztJQUNILGVBQWUsQ0FBQyxVQUF3RDtRQUN0RSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7T0FHRztJQUNILFlBQVksQ0FBQyxPQUFrRDtRQUM3RCxFQUFFLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7O09BR0c7SUFDSCxXQUFXLENBQ1QsTUFBNEIsRUFDNUIsVUFBb0Q7UUFFcEQsRUFBRSxDQUFDLGNBQWMsRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDekMsQ0FBQzs7eUlBMUJVLDRDQUE0Qzs2SUFBNUMsNENBQTRDLGNBRC9CLE1BQU07MkZBQ25CLDRDQUE0QztrQkFEeEQsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBHYUVuaGFuY2VkRWNvbUFjdGlvbixcbiAgR2FFbmhhbmNlZEVjb21BY3Rpb25GaWVsZE9iamVjdCxcbiAgR2FFbmhhbmNlZEVjb21JbXByZXNzaW9uRmllbGRPYmplY3QsXG4gIEdhRW5oYW5jZWRFY29tUHJvZHVjdEZpZWxkT2JqZWN0LFxufSBmcm9tICcuL2dhLWVuaGFuY2VkLWVjb20tb3B0aW9ucyc7XG5cbmRlY2xhcmUgdmFyIGdhOiBVbml2ZXJzYWxBbmFseXRpY3MuZ2E7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQW5ndWxhcnRpY3MyR29vZ2xlQW5hbHl0aWNzRW5oYW5jZWRFY29tbWVyY2Uge1xuICAvKipcbiAgICogQWRkIGltcHJlc3Npb24gaW4gR0EgZW5oYW5jZWQgZWNvbW1lcmNlIHRyYWNraW5nXG4gICAqIEBsaW5rIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL2FuYWx5dGljcy9kZXZndWlkZXMvY29sbGVjdGlvbi9hbmFseXRpY3Nqcy9lbmhhbmNlZC1lY29tbWVyY2UjbWVhc3VyaW5nLWFjdGl2aXRpZXNcbiAgICovXG4gIGVjQWRkSW1wcmVzc2lvbihwcm9wZXJ0aWVzOiBQYXJ0aWFsPEdhRW5oYW5jZWRFY29tSW1wcmVzc2lvbkZpZWxkT2JqZWN0Pikge1xuICAgIGdhKCdlYzphZGRJbXByZXNzaW9uJywgcHJvcGVydGllcyk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIHByb2R1Y3QgaW4gR0EgZW5oYW5jZWQgZWNvbW1lcmNlIHRyYWNraW5nXG4gICAqIEBsaW5rIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL2FuYWx5dGljcy9kZXZndWlkZXMvY29sbGVjdGlvbi9hbmFseXRpY3Nqcy9lY29tbWVyY2VcbiAgICovXG4gIGVjQWRkUHJvZHVjdChwcm9kdWN0OiBQYXJ0aWFsPEdhRW5oYW5jZWRFY29tUHJvZHVjdEZpZWxkT2JqZWN0Pikge1xuICAgIGdhKCdlYzphZGRQcm9kdWN0JywgcHJvZHVjdCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGFjdGlvbiBpbiBHQSBlbmhhbmNlZCBlY29tbWVyY2UgdHJhY2tpbmdcbiAgICogQGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vYW5hbHl0aWNzL2Rldmd1aWRlcy9jb2xsZWN0aW9uL2FuYWx5dGljc2pzL2Vjb21tZXJjZVxuICAgKi9cbiAgZWNTZXRBY3Rpb24oXG4gICAgYWN0aW9uOiBHYUVuaGFuY2VkRWNvbUFjdGlvbixcbiAgICBwcm9wZXJ0aWVzOiBQYXJ0aWFsPEdhRW5oYW5jZWRFY29tQWN0aW9uRmllbGRPYmplY3Q+XG4gICkge1xuICAgIGdhKCdlYzpzZXRBY3Rpb24nLCBhY3Rpb24sIHByb3BlcnRpZXMpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,55 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../angulartics2-core";
4
+ export class Angulartics2GoSquared {
5
+ constructor(angulartics2) {
6
+ this.angulartics2 = angulartics2;
7
+ this.angulartics2.setUserProperties.subscribe(x => this.setUserProperties(x));
8
+ this.angulartics2.setUserPropertiesOnce.subscribe(x => this.setUserProperties(x));
9
+ }
10
+ startTracking() {
11
+ this.angulartics2.pageTrack
12
+ .pipe(this.angulartics2.filterDeveloperMode())
13
+ .subscribe(x => this.pageTrack(x.path));
14
+ this.angulartics2.eventTrack
15
+ .pipe(this.angulartics2.filterDeveloperMode())
16
+ .subscribe(x => this.eventTrack(x.action, x.properties));
17
+ }
18
+ pageTrack(path) {
19
+ try {
20
+ _gs('track', path);
21
+ }
22
+ catch (e) {
23
+ if (!(e instanceof ReferenceError)) {
24
+ throw e;
25
+ }
26
+ }
27
+ }
28
+ eventTrack(action, properties) {
29
+ try {
30
+ _gs('event', action, properties);
31
+ }
32
+ catch (e) {
33
+ if (!(e instanceof ReferenceError)) {
34
+ throw e;
35
+ }
36
+ }
37
+ }
38
+ setUserProperties(properties) {
39
+ try {
40
+ _gs('identify', properties);
41
+ }
42
+ catch (e) {
43
+ if (!(e instanceof ReferenceError)) {
44
+ throw e;
45
+ }
46
+ }
47
+ }
48
+ }
49
+ Angulartics2GoSquared.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: Angulartics2GoSquared, deps: [{ token: i1.Angulartics2 }], target: i0.ɵɵFactoryTarget.Injectable });
50
+ Angulartics2GoSquared.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: Angulartics2GoSquared, providedIn: 'root' });
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: Angulartics2GoSquared, decorators: [{
52
+ type: Injectable,
53
+ args: [{ providedIn: 'root' }]
54
+ }], ctorParameters: function () { return [{ type: i1.Angulartics2 }]; } });
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29zcXVhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9wcm92aWRlcnMvZ29zcXVhcmVkL2dvc3F1YXJlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFPM0MsTUFBTSxPQUFPLHFCQUFxQjtJQUNoQyxZQUFvQixZQUEwQjtRQUExQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUM1QyxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlFLElBQUksQ0FBQyxZQUFZLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVM7YUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLEVBQUUsQ0FBQzthQUM3QyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVTthQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2FBQzdDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsU0FBUyxDQUFDLElBQVk7UUFDcEIsSUFBSTtZQUNGLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDcEI7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxjQUFjLENBQUMsRUFBRTtnQkFDbEMsTUFBTSxDQUFDLENBQUM7YUFDVDtTQUNGO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFjLEVBQUUsVUFBZTtRQUN4QyxJQUFJO1lBQ0YsR0FBRyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7U0FDbEM7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxjQUFjLENBQUMsRUFBRTtnQkFDbEMsTUFBTSxDQUFDLENBQUM7YUFDVDtTQUNGO0lBQ0gsQ0FBQztJQUVELGlCQUFpQixDQUFDLFVBQWU7UUFDL0IsSUFBSTtZQUNGLEdBQUcsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7U0FDN0I7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxjQUFjLENBQUMsRUFBRTtnQkFDbEMsTUFBTSxDQUFDLENBQUM7YUFDVDtTQUNGO0lBQ0gsQ0FBQzs7a0hBM0NVLHFCQUFxQjtzSEFBckIscUJBQXFCLGNBRFIsTUFBTTsyRkFDbkIscUJBQXFCO2tCQURqQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQW5ndWxhcnRpY3MyIH0gZnJvbSAnLi4vLi4vYW5ndWxhcnRpY3MyLWNvcmUnO1xuXG5kZWNsYXJlIHZhciBfZ3M6IGFueTtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBbmd1bGFydGljczJHb1NxdWFyZWQge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFuZ3VsYXJ0aWNzMjogQW5ndWxhcnRpY3MyKSB7XG4gICAgdGhpcy5hbmd1bGFydGljczIuc2V0VXNlclByb3BlcnRpZXMuc3Vic2NyaWJlKHggPT4gdGhpcy5zZXRVc2VyUHJvcGVydGllcyh4KSk7XG4gICAgdGhpcy5hbmd1bGFydGljczIuc2V0VXNlclByb3BlcnRpZXNPbmNlLnN1YnNjcmliZSh4ID0+IHRoaXMuc2V0VXNlclByb3BlcnRpZXMoeCkpO1xuICB9XG5cbiAgc3RhcnRUcmFja2luZygpOiB2b2lkIHtcbiAgICB0aGlzLmFuZ3VsYXJ0aWNzMi5wYWdlVHJhY2tcbiAgICAgIC5waXBlKHRoaXMuYW5ndWxhcnRpY3MyLmZpbHRlckRldmVsb3Blck1vZGUoKSlcbiAgICAgIC5zdWJzY3JpYmUoeCA9PiB0aGlzLnBhZ2VUcmFjayh4LnBhdGgpKTtcbiAgICB0aGlzLmFuZ3VsYXJ0aWNzMi5ldmVudFRyYWNrXG4gICAgICAucGlwZSh0aGlzLmFuZ3VsYXJ0aWNzMi5maWx0ZXJEZXZlbG9wZXJNb2RlKCkpXG4gICAgICAuc3Vic2NyaWJlKHggPT4gdGhpcy5ldmVudFRyYWNrKHguYWN0aW9uLCB4LnByb3BlcnRpZXMpKTtcbiAgfVxuXG4gIHBhZ2VUcmFjayhwYXRoOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgX2dzKCd0cmFjaycsIHBhdGgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBSZWZlcmVuY2VFcnJvcikpIHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBldmVudFRyYWNrKGFjdGlvbjogc3RyaW5nLCBwcm9wZXJ0aWVzOiBhbnkpIHtcbiAgICB0cnkge1xuICAgICAgX2dzKCdldmVudCcsIGFjdGlvbiwgcHJvcGVydGllcyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yKSkge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldFVzZXJQcm9wZXJ0aWVzKHByb3BlcnRpZXM6IGFueSkge1xuICAgIHRyeSB7XG4gICAgICBfZ3MoJ2lkZW50aWZ5JywgcHJvcGVydGllcyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yKSkge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3N0LWludGVyZmFjZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3Byb3ZpZGVycy9nc3QvZ3N0LWludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbGluayBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9hbmFseXRpY3MvZGV2Z3VpZGVzL2NvbGxlY3Rpb24vZ3RhZ2pzL3VzZXItdGltaW5ncyAqL1xuZXhwb3J0IGludGVyZmFjZSBVc2VyVGltaW5nc0dzdCB7XG4gIC8qKiBBIHN0cmluZyB0byBpZGVudGlmeSB0aGUgdmFyaWFibGUgYmVpbmcgcmVjb3JkZWQgKGUuZy4gJ2xvYWQnKS4gKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKiogVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaW4gZWxhcHNlZCB0aW1lIHRvIHJlcG9ydCB0byBHb29nbGUgQW5hbHl0aWNzIChlLmcuIDIwKS4gKi9cbiAgdmFsdWU6IG51bWJlcjtcbiAgLyoqIEEgc3RyaW5nIGZvciBjYXRlZ29yaXppbmcgYWxsIHVzZXIgdGltaW5nIHZhcmlhYmxlcyBpbnRvIGxvZ2ljYWwgZ3JvdXBzIChlLmcuICdKUyBEZXBlbmRlbmNpZXMnKS4gKi9cbiAgY2F0ZWdvcnk/OiBzdHJpbmc7XG4gIC8qKiBBIHN0cmluZyB0aGF0IGNhbiBiZSB1c2VkIHRvIGFkZCBmbGV4aWJpbGl0eSBpbiB2aXN1YWxpemluZyB1c2VyIHRpbWluZ3MgaW4gdGhlIHJlcG9ydHMgKGUuZy4gJ0dvb2dsZSBDRE4nKS4gKi9cbiAgbGFiZWw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRHc3Qge1xuICBjYXRlZ29yeTogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZztcbiAgdmFsdWU/OiBudW1iZXIgfCBzdHJpbmc7XG4gIG5vbmludGVyYWN0aW9uPzogYm9vbGVhbjtcbiAgZ3N0Q3VzdG9tPzogYW55O1xufVxuIl19
@@ -0,0 +1,197 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../angulartics2-core";
4
+ export class GoogleGlobalSiteTagDefaults {
5
+ constructor() {
6
+ this.trackingIds = [];
7
+ if (typeof ga !== 'undefined' && ga) {
8
+ // See: https://developers.google.com/analytics/devguides/collection/analyticsjs/ga-object-methods-reference
9
+ ga(() => {
10
+ ga.getAll().forEach((tracker) => {
11
+ const id = tracker.get('trackingId');
12
+ // If set both in forRoot and HTML page, we want to avoid duplicates
13
+ if (id !== undefined && this.trackingIds.indexOf(id) === -1) {
14
+ this.trackingIds.push(id);
15
+ }
16
+ });
17
+ });
18
+ }
19
+ }
20
+ }
21
+ export class Angulartics2GoogleGlobalSiteTag {
22
+ constructor(angulartics2) {
23
+ this.angulartics2 = angulartics2;
24
+ this.dimensionsAndMetrics = {};
25
+ const defaults = new GoogleGlobalSiteTagDefaults();
26
+ // Set the default settings for this module
27
+ this.angulartics2.settings.gst = { ...defaults, ...this.angulartics2.settings.gst };
28
+ }
29
+ startTracking() {
30
+ this.angulartics2.pageTrack
31
+ .pipe(this.angulartics2.filterDeveloperMode())
32
+ .subscribe(x => this.pageTrack(x.path));
33
+ this.angulartics2.eventTrack
34
+ .pipe(this.angulartics2.filterDeveloperMode())
35
+ .subscribe(x => this.eventTrack(x.action, x.properties));
36
+ this.angulartics2.exceptionTrack
37
+ .pipe(this.angulartics2.filterDeveloperMode())
38
+ .subscribe((x) => this.exceptionTrack(x));
39
+ this.angulartics2.userTimings
40
+ .pipe(this.angulartics2.filterDeveloperMode())
41
+ .subscribe(x => this.userTimings(this.convertTimings(x)));
42
+ this.angulartics2.setUsername
43
+ .pipe(this.angulartics2.filterDeveloperMode())
44
+ .subscribe((x) => this.setUsername(x));
45
+ this.angulartics2.setUserProperties
46
+ .pipe(this.angulartics2.filterDeveloperMode())
47
+ .subscribe((x) => this.setUserProperties(x));
48
+ }
49
+ /**
50
+ * Manually track page view, see:
51
+ *
52
+ * https://developers.google.com/analytics/devguides/collection/gtagjs/single-page-applications#tracking_virtual_pageviews
53
+ *
54
+ * @param path relative url
55
+ */
56
+ pageTrack(path) {
57
+ if (typeof gtag !== 'undefined' && gtag) {
58
+ const params = {
59
+ page_path: path,
60
+ page_location: window.location.protocol + '//' + window.location.host + path,
61
+ ...this.dimensionsAndMetrics,
62
+ };
63
+ // Custom map must be reset with all config to stay valid.
64
+ if (this.angulartics2.settings.gst.customMap) {
65
+ params.custom_map = this.angulartics2.settings.gst.customMap;
66
+ }
67
+ if (this.angulartics2.settings.gst.userId) {
68
+ params.user_id = this.angulartics2.settings.gst.userId;
69
+ }
70
+ if (this.angulartics2.settings.gst.anonymizeIp) {
71
+ params.anonymize_ip = this.angulartics2.settings.gst.anonymizeIp;
72
+ }
73
+ for (const id of this.angulartics2.settings.gst.trackingIds) {
74
+ gtag('config', id, params);
75
+ }
76
+ }
77
+ }
78
+ /**
79
+ * Send interactions to gtag, i.e. for event tracking in Google Analytics. See:
80
+ *
81
+ * https://developers.google.com/analytics/devguides/collection/gtagjs/events
82
+ *
83
+ * @param action associated with the event
84
+ */
85
+ eventTrack(action, properties = {}) {
86
+ this.eventTrackInternal(action, {
87
+ event_category: properties.category || 'interaction',
88
+ event_label: properties.label,
89
+ value: properties.value,
90
+ non_interaction: properties.noninteraction,
91
+ ...properties.gstCustom,
92
+ });
93
+ }
94
+ /**
95
+ * Exception Track Event in GST. See:
96
+ *
97
+ * https://developers.google.com/analytics/devguides/collection/gtagjs/exceptions
98
+ *
99
+ */
100
+ exceptionTrack(properties) {
101
+ // TODO: make interface
102
+ // @param {Object} properties
103
+ // @param {string} [properties.description]
104
+ // @param {boolean} [properties.fatal]
105
+ if (properties.fatal === undefined) {
106
+ console.log('No "fatal" provided, sending with fatal=true');
107
+ properties.fatal = true;
108
+ }
109
+ properties.exDescription = properties.event ? properties.event.stack : properties.description;
110
+ this.eventTrack('exception', {
111
+ gstCustom: {
112
+ description: properties.exDescription,
113
+ fatal: properties.fatal,
114
+ ...properties.gstCustom,
115
+ },
116
+ });
117
+ }
118
+ /**
119
+ * User Timings Event in GST.
120
+ *
121
+ * @param properties Comprised of the mandatory fields:
122
+ * - name (string)
123
+ * - value (number - integer)
124
+ * Properties can also have the optional fields:
125
+ * - category (string)
126
+ * - label (string)
127
+ *
128
+ * @link https://developers.google.com/analytics/devguides/collection/gtagjs/user-timings
129
+ */
130
+ userTimings(properties) {
131
+ if (!properties) {
132
+ console.error('User timings - "properties" parameter is required to be set.');
133
+ return;
134
+ }
135
+ this.eventTrackInternal('timing_complete', {
136
+ name: properties.name,
137
+ value: properties.value,
138
+ event_category: properties.category,
139
+ event_label: properties.label,
140
+ });
141
+ }
142
+ convertTimings(properties) {
143
+ return {
144
+ name: properties.timingVar,
145
+ value: properties.timingValue,
146
+ category: properties.timingCategory,
147
+ label: properties.timingLabel,
148
+ };
149
+ }
150
+ setUsername(userId) {
151
+ this.angulartics2.settings.gst.userId = userId;
152
+ if (typeof gtag !== 'undefined' && gtag) {
153
+ gtag('set', { user_id: typeof userId === 'string' || !userId ? userId : userId.userId });
154
+ }
155
+ }
156
+ setUserProperties(properties) {
157
+ this.setDimensionsAndMetrics(properties);
158
+ }
159
+ setDimensionsAndMetrics(properties) {
160
+ // We want the dimensions and metrics to accumulate, so we merge with previous value
161
+ this.dimensionsAndMetrics = {
162
+ ...this.dimensionsAndMetrics,
163
+ ...properties,
164
+ };
165
+ // Remove properties that are null or undefined
166
+ Object.keys(this.dimensionsAndMetrics).forEach(key => {
167
+ const val = this.dimensionsAndMetrics[key];
168
+ if (val === undefined || val === null) {
169
+ delete this.dimensionsAndMetrics[key];
170
+ }
171
+ });
172
+ if (typeof gtag !== 'undefined' && gtag) {
173
+ gtag('set', this.dimensionsAndMetrics);
174
+ }
175
+ }
176
+ eventTrackInternal(action, properties = {}) {
177
+ this.cleanProperties(properties);
178
+ if (typeof gtag !== 'undefined' && gtag) {
179
+ gtag('event', action, properties);
180
+ }
181
+ }
182
+ cleanProperties(properties) {
183
+ // GA requires that eventValue be an non-negative integer, see:
184
+ // https://developers.google.com/analytics/devguides/collection/gtagjs/events
185
+ if (properties.value) {
186
+ const parsed = parseInt(properties.value, 10);
187
+ properties.value = isNaN(parsed) ? 0 : parsed;
188
+ }
189
+ }
190
+ }
191
+ Angulartics2GoogleGlobalSiteTag.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: Angulartics2GoogleGlobalSiteTag, deps: [{ token: i1.Angulartics2 }], target: i0.ɵɵFactoryTarget.Injectable });
192
+ Angulartics2GoogleGlobalSiteTag.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: Angulartics2GoogleGlobalSiteTag, providedIn: 'root' });
193
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: Angulartics2GoogleGlobalSiteTag, decorators: [{
194
+ type: Injectable,
195
+ args: [{ providedIn: 'root' }]
196
+ }], ctorParameters: function () { return [{ type: i1.Angulartics2 }]; } });
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3N0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9wcm92aWRlcnMvZ3N0L2dzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFVM0MsTUFBTSxPQUFPLDJCQUEyQjtJQUd0QztRQUZBLGdCQUFXLEdBQWEsRUFBRSxDQUFDO1FBR3pCLElBQUksT0FBTyxFQUFFLEtBQUssV0FBVyxJQUFJLEVBQUUsRUFBRTtZQUNuQyw0R0FBNEc7WUFDNUcsRUFBRSxDQUFDLEdBQUcsRUFBRTtnQkFDTixFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUU7b0JBQ25DLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQ3JDLG9FQUFvRTtvQkFDcEUsSUFBSSxFQUFFLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO3dCQUMzRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztxQkFDM0I7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztDQUNGO0FBR0QsTUFBTSxPQUFPLCtCQUErQjtJQUcxQyxZQUFzQixZQUEwQjtRQUExQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUZ4Qyx5QkFBb0IsR0FBMkIsRUFBRSxDQUFDO1FBR3hELE1BQU0sUUFBUSxHQUFHLElBQUksMkJBQTJCLEVBQUUsQ0FBQztRQUNuRCwyQ0FBMkM7UUFDM0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxHQUFHLEVBQUUsR0FBRyxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FB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O1NBQy9DO0lBQ0gsQ0FBQzs7NEhBM0xVLCtCQUErQjtnSUFBL0IsK0JBQStCLGNBRGxCLE1BQU07MkZBQ25CLCtCQUErQjtrQkFEM0MsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFVzZXJUaW1pbmdzIH0gZnJvbSAnLi4vLi4vYW5ndWxhcnRpY3MyLWludGVyZmFjZXMnO1xuaW1wb3J0IHsgR29vZ2xlR2xvYmFsU2l0ZVRhZ1NldHRpbmdzIH0gZnJvbSAnLi4vLi4vYW5ndWxhcnRpY3MyLWNvbmZpZyc7XG5pbXBvcnQgeyBBbmd1bGFydGljczIgfSBmcm9tICcuLi8uLi9hbmd1bGFydGljczItY29yZSc7XG5pbXBvcnQgeyBFdmVudEdzdCwgVXNlclRpbWluZ3NHc3QgfSBmcm9tICcuL2dzdC1pbnRlcmZhY2VzJztcblxuZGVjbGFyZSB2YXIgZ3RhZzogYW55O1xuZGVjbGFyZSB2YXIgZ2E6IGFueTtcblxuZXhwb3J0IGNsYXNzIEdvb2dsZUdsb2JhbFNpdGVUYWdEZWZhdWx0cyBpbXBsZW1lbnRzIEdvb2dsZUdsb2JhbFNpdGVUYWdTZXR0aW5ncyB7XG4gIHRyYWNraW5nSWRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGlmICh0eXBlb2YgZ2EgIT09ICd1bmRlZmluZWQnICYmIGdhKSB7XG4gICAgICAvLyBTZWU6IGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL2FuYWx5dGljcy9kZXZndWlkZXMvY29sbGVjdGlvbi9hbmFseXRpY3Nqcy9nYS1vYmplY3QtbWV0aG9kcy1yZWZlcmVuY2VcbiAgICAgIGdhKCgpID0+IHtcbiAgICAgICAgZ2EuZ2V0QWxsKCkuZm9yRWFjaCgodHJhY2tlcjogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgaWQgPSB0cmFja2VyLmdldCgndHJhY2tpbmdJZCcpO1xuICAgICAgICAgIC8vIElmIHNldCBib3RoIGluIGZvclJvb3QgYW5kIEhUTUwgcGFnZSwgd2Ugd2FudCB0byBhdm9pZCBkdXBsaWNhdGVzXG4gICAgICAgICAgaWYgKGlkICE9PSB1bmRlZmluZWQgJiYgdGhpcy50cmFja2luZ0lkcy5pbmRleE9mKGlkKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMudHJhY2tpbmdJZHMucHVzaChpZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJ0aWNzMkdvb2dsZUdsb2JhbFNpdGVUYWcge1xuICBwcml2YXRlIGRpbWVuc2lvbnNBbmRNZXRyaWNzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGFuZ3VsYXJ0aWNzMjogQW5ndWxhcnRpY3MyKSB7XG4gICAgY29uc3QgZGVmYXVsdHMgPSBuZXcgR29vZ2xlR2xvYmFsU2l0ZVRhZ0RlZmF1bHRzKCk7XG4gICAgLy8gU2V0IHRoZSBkZWZhdWx0IHNldHRpbmdzIGZvciB0aGlzIG1vZHVsZVxuICAgIHRoaXMuYW5ndWxhcnRpY3MyLnNldHRpbmdzLmdzdCA9IHsgLi4uZGVmYXVsdHMsIC4uLnRoaXMuYW5ndWxhcnRpY3MyLnNldHRpbmdzLmdzdCB9O1xuICB9XG5cbiAgc3RhcnRUcmFja2luZygpOiB2b2lkIHtcbiAgICB0aGlzLmFuZ3VsYXJ0aWNzMi5wYWdlVHJhY2tcbiAgICAgIC5waXBlKHRoaXMuYW5ndWxhcnRpY3MyLmZpbHRlckRldmVsb3Blck1vZGUoKSlcbiAgICAgIC5zdWJzY3JpYmUoeCA9PiB0aGlzLnBhZ2VUcmFjayh4LnBhdGgpKTtcbiAgICB0aGlzLmFuZ3VsYXJ0aWNzMi5ldmVudFRyYWNrXG4gICAgICAucGlwZSh0aGlzLmFuZ3VsYXJ0aWNzMi5maWx0ZXJEZXZlbG9wZXJNb2RlKCkpXG4gICAgICAuc3Vic2NyaWJlKHggPT4gdGhpcy5ldmVudFRyYWNrKHguYWN0aW9uLCB4LnByb3BlcnRpZXMpKTtcbiAgICB0aGlzLmFuZ3VsYXJ0aWNzMi5leGNlcHRpb25UcmFja1xuICAgICAgLnBpcGUodGhpcy5hbmd1bGFydGljczIuZmlsdGVyRGV2ZWxvcGVyTW9kZSgpKVxuICAgICAgLnN1YnNjcmliZSgoeDogYW55KSA9PiB0aGlzLmV4Y2VwdGlvblRyYWNrKHgpKTtcbiAgICB0aGlzLmFuZ3VsYXJ0aWNzMi51c2VyVGltaW5nc1xuICAgICAgLnBpcGUodGhpcy5hbmd1bGFydGljczIuZmlsdGVyRGV2ZWxvcGVyTW9kZSgpKVxuICAgICAgLnN1YnNjcmliZSh4ID0+IHRoaXMudXNlclRpbWluZ3ModGhpcy5jb252ZXJ0VGltaW5ncyh4KSkpO1xuICAgIHRoaXMuYW5ndWxhcnRpY3MyLnNldFVzZXJuYW1lXG4gICAgICAucGlwZSh0aGlzLmFuZ3VsYXJ0aWNzMi5maWx0ZXJEZXZlbG9wZXJNb2RlKCkpXG4gICAgICAuc3Vic2NyaWJlKCh4OiBzdHJpbmcpID0+IHRoaXMuc2V0VXNlcm5hbWUoeCkpO1xuICAgIHRoaXMuYW5ndWxhcnRpY3MyLnNldFVzZXJQcm9wZXJ0aWVzXG4gICAgICAucGlwZSh0aGlzLmFuZ3VsYXJ0aWNzMi5maWx0ZXJEZXZlbG9wZXJNb2RlKCkpXG4gICAgICAuc3Vic2NyaWJlKCh4OiBhbnkpID0+IHRoaXMuc2V0VXNlclByb3BlcnRpZXMoeCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hbnVhbGx5IHRyYWNrIHBhZ2Ugdmlldywgc2VlOlxuICAgKlxuICAgKiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9hbmFseXRpY3MvZGV2Z3VpZGVzL2NvbGxlY3Rpb24vZ3RhZ2pzL3NpbmdsZS1wYWdlLWFwcGxpY2F0aW9ucyN0cmFja2luZ192aXJ0dWFsX3BhZ2V2aWV3c1xuICAgKlxuICAgKiBAcGFyYW0gcGF0aCByZWxhdGl2ZSB1cmxcbiAgICovXG4gIHBhZ2VUcmFjayhwYXRoOiBzdHJpbmcpIHtcbiAgICBpZiAodHlwZW9mIGd0YWcgIT09ICd1bmRlZmluZWQnICYmIGd0YWcpIHtcbiAgICAgIGNvbnN0IHBhcmFtczogYW55ID0ge1xuICAgICAgICBwYWdlX3BhdGg6IHBhdGgsXG4gICAgICAgIHBhZ2VfbG9jYXRpb246IHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCArICcvLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdCArIHBhdGgsXG4gICAgICAgIC4uLnRoaXMuZGltZW5zaW9uc0FuZE1ldHJpY3MsXG4gICAgICB9O1xuXG4gICAgICAvLyBDdXN0b20gbWFwIG11c3QgYmUgcmVzZXQgd2l0aCBhbGwgY29uZmlnIHRvIHN0YXkgdmFsaWQuXG5cbiAgICAgIGlmICh0aGlzLmFuZ3VsYXJ0aWNzMi5zZXR0aW5ncy5nc3QuY3VzdG9tTWFwKSB7XG4gICAgICAgIHBhcmFtcy5jdXN0b21fbWFwID0gdGhpcy5hbmd1bGFydGljczIuc2V0dGluZ3MuZ3N0LmN1c3RvbU1hcDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmFuZ3VsYXJ0aWNzMi5zZXR0aW5ncy5nc3QudXNlcklkKSB7XG4gICAgICAgIHBhcmFtcy51c2VyX2lkID0gdGhpcy5hbmd1bGFydGljczIuc2V0dGluZ3MuZ3N0LnVzZXJJZDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmFuZ3VsYXJ0aWNzMi5zZXR0aW5ncy5nc3QuYW5vbnltaXplSXApIHtcbiAgICAgICAgcGFyYW1zLmFub255bWl6ZV9pcCA9IHRoaXMuYW5ndWxhcnRpY3MyLnNldHRpbmdzLmdzdC5hbm9ueW1pemVJcDtcbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBpZCBvZiB0aGlzLmFuZ3VsYXJ0aWNzMi5zZXR0aW5ncy5nc3QudHJhY2tpbmdJZHMpIHtcbiAgICAgICAgZ3RhZygnY29uZmlnJywgaWQsIHBhcmFtcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNlbmQgaW50ZXJhY3Rpb25zIHRvIGd0YWcsIGkuZS4gZm9yIGV2ZW50IHRyYWNraW5nIGluIEdvb2dsZSBBbmFseXRpY3MuIFNlZTpcbiAgICpcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vYW5hbHl0aWNzL2Rldmd1aWRlcy9jb2xsZWN0aW9uL2d0YWdqcy9ldmVudHNcbiAgICpcbiAgICogQHBhcmFtIGFjdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIGV2ZW50XG4gICAqL1xuICBldmVudFRyYWNrKGFjdGlvbjogc3RyaW5nLCBwcm9wZXJ0aWVzOiBQYXJ0aWFsPEV2ZW50R3N0PiA9IHt9KSB7XG4gICAgdGhpcy5ldmVudFRyYWNrSW50ZXJuYWwoYWN0aW9uLCB7XG4gICAgICBldmVudF9jYXRlZ29yeTogcHJvcGVydGllcy5jYXRlZ29yeSB8fCAnaW50ZXJhY3Rpb24nLFxuICAgICAgZXZlbnRfbGFiZWw6IHByb3BlcnRpZXMubGFiZWwsXG4gICAgICB2YWx1ZTogcHJvcGVydGllcy52YWx1ZSxcbiAgICAgIG5vbl9pbnRlcmFjdGlvbjogcHJvcGVydGllcy5ub25pbnRlcmFjdGlvbixcbiAgICAgIC4uLnByb3BlcnRpZXMuZ3N0Q3VzdG9tLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4Y2VwdGlvbiBUcmFjayBFdmVudCBpbiBHU1QuIFNlZTpcbiAgICpcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vYW5hbHl0aWNzL2Rldmd1aWRlcy9jb2xsZWN0aW9uL2d0YWdqcy9leGNlcHRpb25zXG4gICAqXG4gICAqL1xuICBleGNlcHRpb25UcmFjayhwcm9wZXJ0aWVzOiBhbnkpIHtcbiAgICAvLyBUT0RPOiBtYWtlIGludGVyZmFjZVxuICAgIC8vICBAcGFyYW0ge09iamVjdH0gcHJvcGVydGllc1xuICAgIC8vICBAcGFyYW0ge3N0cmluZ30gW3Byb3BlcnRpZXMuZGVzY3JpcHRpb25dXG4gICAgLy8gIEBwYXJhbSB7Ym9vbGVhbn0gW3Byb3BlcnRpZXMuZmF0YWxdXG4gICAgaWYgKHByb3BlcnRpZXMuZmF0YWwgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc29sZS5sb2coJ05vIFwiZmF0YWxcIiBwcm92aWRlZCwgc2VuZGluZyB3aXRoIGZhdGFsPXRydWUnKTtcbiAgICAgIHByb3BlcnRpZXMuZmF0YWwgPSB0cnVlO1xuICAgIH1cblxuICAgIHByb3BlcnRpZXMuZXhEZXNjcmlwdGlvbiA9IHByb3BlcnRpZXMuZXZlbnQgPyBwcm9wZXJ0aWVzLmV2ZW50LnN0YWNrIDogcHJvcGVydGllcy5kZXNjcmlwdGlvbjtcblxuICAgIHRoaXMuZXZlbnRUcmFjaygnZXhjZXB0aW9uJywge1xuICAgICAgZ3N0Q3VzdG9tOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wZXJ0aWVzLmV4RGVzY3JpcHRpb24sXG4gICAgICAgIGZhdGFsOiBwcm9wZXJ0aWVzLmZhdGFsLFxuICAgICAgICAuLi5wcm9wZXJ0aWVzLmdzdEN1c3RvbSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVXNlciBUaW1pbmdzIEV2ZW50IGluIEdTVC5cbiAgICpcbiAgICogQHBhcmFtIHByb3BlcnRpZXMgQ29tcHJpc2VkIG9mIHRoZSBtYW5kYXRvcnkgZmllbGRzOlxuICAgKiAgLSBuYW1lIChzdHJpbmcpXG4gICAqICAtIHZhbHVlIChudW1iZXIgLSBpbnRlZ2VyKVxuICAgKiBQcm9wZXJ0aWVzIGNhbiBhbHNvIGhhdmUgdGhlIG9wdGlvbmFsIGZpZWxkczpcbiAgICogIC0gY2F0ZWdvcnkgKHN0cmluZylcbiAgICogIC0gbGFiZWwgKHN0cmluZylcbiAgICpcbiAgICogQGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vYW5hbHl0aWNzL2Rldmd1aWRlcy9jb2xsZWN0aW9uL2d0YWdqcy91c2VyLXRpbWluZ3NcbiAgICovXG4gIHVzZXJUaW1pbmdzKHByb3BlcnRpZXM6IFVzZXJUaW1pbmdzR3N0KSB7XG4gICAgaWYgKCFwcm9wZXJ0aWVzKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdVc2VyIHRpbWluZ3MgLSBcInByb3BlcnRpZXNcIiBwYXJhbWV0ZXIgaXMgcmVxdWlyZWQgdG8gYmUgc2V0LicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZXZlbnRUcmFja0ludGVybmFsKCd0aW1pbmdfY29tcGxldGUnLCB7XG4gICAgICBuYW1lOiBwcm9wZXJ0aWVzLm5hbWUsXG4gICAgICB2YWx1ZTogcHJvcGVydGllcy52YWx1ZSxcbiAgICAgIGV2ZW50X2NhdGVnb3J5OiBwcm9wZXJ0aWVzLmNhdGVnb3J5LFxuICAgICAgZXZlbnRfbGFiZWw6IHByb3BlcnRpZXMubGFiZWwsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRUaW1pbmdzKHByb3BlcnRpZXM6IFVzZXJUaW1pbmdzKTogVXNlclRpbWluZ3NHc3Qge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBwcm9wZXJ0aWVzLnRpbWluZ1ZhcixcbiAgICAgIHZhbHVlOiBwcm9wZXJ0aWVzLnRpbWluZ1ZhbHVlLFxuICAgICAgY2F0ZWdvcnk6IHByb3BlcnRpZXMudGltaW5nQ2F0ZWdvcnksXG4gICAgICBsYWJlbDogcHJvcGVydGllcy50aW1pbmdMYWJlbCxcbiAgICB9O1xuICB9XG5cbiAgc2V0VXNlcm5hbWUodXNlcklkOiBzdHJpbmcgfCB7IHVzZXJJZDogc3RyaW5nIHwgbnVtYmVyIH0pIHtcbiAgICB0aGlzLmFuZ3VsYXJ0aWNzMi5zZXR0aW5ncy5nc3QudXNlcklkID0gdXNlcklkO1xuICAgIGlmICh0eXBlb2YgZ3RhZyAhPT0gJ3VuZGVmaW5lZCcgJiYgZ3RhZykge1xuICAgICAgZ3RhZygnc2V0JywgeyB1c2VyX2lkOiB0eXBlb2YgdXNlcklkID09PSAnc3RyaW5nJyB8fCAhdXNlcklkID8gdXNlcklkIDogdXNlcklkLnVzZXJJZCB9KTtcbiAgICB9XG4gIH1cblxuICBzZXRVc2VyUHJvcGVydGllcyhwcm9wZXJ0aWVzOiBhbnkpIHtcbiAgICB0aGlzLnNldERpbWVuc2lvbnNBbmRNZXRyaWNzKHByb3BlcnRpZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXREaW1lbnNpb25zQW5kTWV0cmljcyhwcm9wZXJ0aWVzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XG4gICAgLy8gV2Ugd2FudCB0aGUgZGltZW5zaW9ucyBhbmQgbWV0cmljcyB0byBhY2N1bXVsYXRlLCBzbyB3ZSBtZXJnZSB3aXRoIHByZXZpb3VzIHZhbHVlXG4gICAgdGhpcy5kaW1lbnNpb25zQW5kTWV0cmljcyA9IHtcbiAgICAgIC4uLnRoaXMuZGltZW5zaW9uc0FuZE1ldHJpY3MsXG4gICAgICAuLi5wcm9wZXJ0aWVzLFxuICAgIH07XG5cbiAgICAvLyBSZW1vdmUgcHJvcGVydGllcyB0aGF0IGFyZSBudWxsIG9yIHVuZGVmaW5lZFxuICAgIE9iamVjdC5rZXlzKHRoaXMuZGltZW5zaW9uc0FuZE1ldHJpY3MpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IHRoaXMuZGltZW5zaW9uc0FuZE1ldHJpY3Nba2V5XTtcbiAgICAgIGlmICh2YWwgPT09IHVuZGVmaW5lZCB8fCB2YWwgPT09IG51bGwpIHtcbiAgICAgICAgZGVsZXRlIHRoaXMuZGltZW5zaW9uc0FuZE1ldHJpY3Nba2V5XTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh0eXBlb2YgZ3RhZyAhPT0gJ3VuZGVmaW5lZCcgJiYgZ3RhZykge1xuICAgICAgZ3RhZygnc2V0JywgdGhpcy5kaW1lbnNpb25zQW5kTWV0cmljcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBldmVudFRyYWNrSW50ZXJuYWwoYWN0aW9uOiBzdHJpbmcsIHByb3BlcnRpZXM6IGFueSA9IHt9KSB7XG4gICAgdGhpcy5jbGVhblByb3BlcnRpZXMocHJvcGVydGllcyk7XG4gICAgaWYgKHR5cGVvZiBndGFnICE9PSAndW5kZWZpbmVkJyAmJiBndGFnKSB7XG4gICAgICBndGFnKCdldmVudCcsIGFjdGlvbiwgcHJvcGVydGllcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjbGVhblByb3BlcnRpZXMocHJvcGVydGllczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSk6IHZvaWQge1xuICAgIC8vIEdBIHJlcXVpcmVzIHRoYXQgZXZlbnRWYWx1ZSBiZSBhbiBub24tbmVnYXRpdmUgaW50ZWdlciwgc2VlOlxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL2FuYWx5dGljcy9kZXZndWlkZXMvY29sbGVjdGlvbi9ndGFnanMvZXZlbnRzXG4gICAgaWYgKHByb3BlcnRpZXMudmFsdWUpIHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlSW50KHByb3BlcnRpZXMudmFsdWUsIDEwKTtcbiAgICAgIHByb3BlcnRpZXMudmFsdWUgPSBpc05hTihwYXJzZWQpID8gMCA6IHBhcnNlZDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==