ng-easycommerce-v18 0.0.1 → 0.0.2

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 (508) hide show
  1. package/README.md +24 -27
  2. package/{projects/ng-easycommerce/src/lib/assets → assets}/ec-i18n/ct.json +273 -273
  3. package/{projects/ng-easycommerce/src/lib/assets → assets}/ec-i18n/en.json +0 -0
  4. package/{projects/ng-easycommerce/src/lib/assets → assets}/ec-i18n/es.json +387 -387
  5. package/{projects/ng-easycommerce/src/lib/assets → assets}/ec-i18n/fr.json +0 -0
  6. package/{projects/ng-easycommerce/src/lib/assets → assets}/ec-i18n/gl.json +273 -273
  7. package/{projects/ng-easycommerce/src/lib/assets → assets}/ec-i18n/pr.json +273 -273
  8. package/{projects/ng-easycommerce/src/lib/assets → assets}/recaptcha/recaptcha-site-keys.json +3 -3
  9. package/{projects/ng-easycommerce/src/lib/assets → assets}/recaptcha/recaptcha-sites-prod.json +38 -38
  10. package/{projects/ng-easycommerce/src/lib/assets → assets}/recaptcha/recaptcha-sites.json +52 -52
  11. package/esm2022/lib/api/connection.service.mjs +75 -0
  12. package/esm2022/lib/api/index.mjs +2 -0
  13. package/esm2022/lib/classes/checkout/index.mjs +2 -0
  14. package/esm2022/lib/classes/checkout/steps.mjs +29 -0
  15. package/esm2022/lib/classes/filters/attributes-filter.mjs +73 -0
  16. package/esm2022/lib/classes/filters/category-filter.mjs +59 -0
  17. package/esm2022/lib/classes/filters/dynamics-filter.mjs +58 -0
  18. package/esm2022/lib/classes/filters/filter-factory.mjs +21 -0
  19. package/esm2022/lib/classes/filters/filter.mjs +83 -0
  20. package/esm2022/lib/classes/filters/index.mjs +7 -0
  21. package/esm2022/lib/classes/filters/sort-filter.mjs +88 -0
  22. package/esm2022/lib/classes/index.mjs +4 -0
  23. package/esm2022/lib/classes/user.mjs +59 -0
  24. package/esm2022/lib/constants/api.constants.service.mjs +71 -0
  25. package/esm2022/lib/constants/core.constants.service.mjs +196 -0
  26. package/esm2022/lib/constants/index.mjs +3 -0
  27. package/esm2022/lib/ec-components/abstractions-components/block-ec.component.mjs +110 -0
  28. package/esm2022/lib/ec-components/abstractions-components/index.mjs +3 -0
  29. package/esm2022/lib/ec-components/abstractions-components/menu-ec.component.mjs +97 -0
  30. package/esm2022/lib/ec-components/account-ec/account-ec.component.mjs +22 -0
  31. package/esm2022/lib/ec-components/account-ec/index.mjs +4 -0
  32. package/esm2022/lib/ec-components/account-ec/order-ec/order-ec.component.mjs +16 -0
  33. package/esm2022/lib/ec-components/account-ec/orders-list-ec/orders-list-ec.component.mjs +150 -0
  34. package/esm2022/lib/ec-components/auth-ec/auth-ec.component.mjs +12 -0
  35. package/esm2022/lib/ec-components/auth-ec/confirm-account-ec/confirm-account-ec.component.mjs +30 -0
  36. package/esm2022/lib/ec-components/auth-ec/forgot-password-ec/forgot-password-ec.component.mjs +54 -0
  37. package/esm2022/lib/ec-components/auth-ec/index.mjs +7 -0
  38. package/esm2022/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.mjs +91 -0
  39. package/esm2022/lib/ec-components/auth-ec/register-form-ec/register-form-ec.component.mjs +105 -0
  40. package/esm2022/lib/ec-components/auth-ec/register-wholesaler-form-ec/register-wholesaler-form-ec.component.mjs +153 -0
  41. package/esm2022/lib/ec-components/blocks-ec/block-banner-box-ec/block-banner-box-ec.component.mjs +104 -0
  42. package/esm2022/lib/ec-components/blocks-ec/block-banner-full-ec/block-banner-full-ec.component.mjs +87 -0
  43. package/esm2022/lib/ec-components/blocks-ec/block-form-contact-ec/block-form-contact-ec.component.mjs +87 -0
  44. package/esm2022/lib/ec-components/blocks-ec/block-html-ec/block-html-ec.component.mjs +37 -0
  45. package/esm2022/lib/ec-components/blocks-ec/block-newsletter-ec/block-newsletter-ec.component.mjs +78 -0
  46. package/esm2022/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.mjs +109 -0
  47. package/esm2022/lib/ec-components/blocks-ec/blocks-ec.component.mjs +99 -0
  48. package/esm2022/lib/ec-components/blocks-ec/index.mjs +5 -0
  49. package/esm2022/lib/ec-components/breadcrumb-ec/breadcrumb-ec.component.mjs +27 -0
  50. package/esm2022/lib/ec-components/cart-ec/cart-ec.component.mjs +21 -0
  51. package/esm2022/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.mjs +47 -0
  52. package/esm2022/lib/ec-components/cart-ec/index.mjs +3 -0
  53. package/esm2022/lib/ec-components/checkout-ec/checkout-ec.component.mjs +60 -0
  54. package/esm2022/lib/ec-components/checkout-ec/dataform-ec/dataform-ec.component.mjs +271 -0
  55. package/esm2022/lib/ec-components/checkout-ec/dataform-ec/input-ec/input-ec.component.mjs +51 -0
  56. package/esm2022/lib/ec-components/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.mjs +45 -0
  57. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-ec.component.mjs +92 -0
  58. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/bank-transfer-ec/bank-transfer-ec.component.mjs +30 -0
  59. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/index.mjs +4 -0
  60. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.mjs +119 -0
  61. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/offline-ec/offline-ec.component.mjs +32 -0
  62. package/esm2022/lib/ec-components/checkout-ec/shipment-ec/shipment-ec.component.mjs +96 -0
  63. package/esm2022/lib/ec-components/checkout-ec/step-container-ec/step-container-ec.component.mjs +35 -0
  64. package/esm2022/lib/ec-components/checkout-ec/success-ec/success-ec.component.mjs +55 -0
  65. package/esm2022/lib/ec-components/collection-ec/collection-ec.component.mjs +72 -0
  66. package/esm2022/lib/ec-components/coupon-ec/coupon-ec.component.mjs +29 -0
  67. package/esm2022/lib/ec-components/filters-ec/filters-ec.component.mjs +38 -0
  68. package/esm2022/lib/ec-components/filters-sort-ec/filters-sort-ec.component.mjs +36 -0
  69. package/esm2022/lib/ec-components/footer-ec/footer-ec.component.mjs +17 -0
  70. package/esm2022/lib/ec-components/header-ec/header-ec.component.mjs +18 -0
  71. package/esm2022/lib/ec-components/home-ec/home-ec.component.mjs +14 -0
  72. package/esm2022/lib/ec-components/index.mjs +19 -0
  73. package/esm2022/lib/ec-components/product-detail-ec/product-detail-ec.component.mjs +74 -0
  74. package/esm2022/lib/ec-components/product-ec/product-ec.component.mjs +51 -0
  75. package/esm2022/lib/ec-components/variants-ec/variants-ec.component.mjs +18 -0
  76. package/esm2022/lib/ec-components/widgets-ec/index.mjs +5 -0
  77. package/esm2022/lib/ec-components/widgets-ec/loading/index.mjs +4 -0
  78. package/esm2022/lib/ec-components/widgets-ec/loading/loading-full-ec/loading-full-ec.component.mjs +11 -0
  79. package/esm2022/lib/ec-components/widgets-ec/loading/loading-inline-ec/loading-inline-ec.component.mjs +16 -0
  80. package/esm2022/lib/ec-components/widgets-ec/loading/loading-section-ec/loading-section-ec.component.mjs +12 -0
  81. package/esm2022/lib/ec-components/widgets-ec/magnizoom-ec/magnizoom-ec.component.mjs +178 -0
  82. package/esm2022/lib/ec-components/widgets-ec/price-ec/price-ec.component.mjs +27 -0
  83. package/esm2022/lib/ec-components/widgets-ec/re-captcha-ec/re-captcha-ec.component.mjs +71 -0
  84. package/esm2022/lib/ec-guards/auth.guard.mjs +18 -0
  85. package/esm2022/lib/ec-guards/index.mjs +2 -0
  86. package/esm2022/lib/ec-pipe/ec-currency-symbol.pipe.mjs +98 -0
  87. package/esm2022/lib/ec-pipe/index.mjs +2 -0
  88. package/esm2022/lib/ec-services/addressing.service.mjs +185 -0
  89. package/esm2022/lib/ec-services/analytics/analytics.service.mjs +80 -0
  90. package/esm2022/lib/ec-services/analytics/doppler.service.mjs +47 -0
  91. package/esm2022/lib/ec-services/analytics/facebook-pixel.service.mjs +212 -0
  92. package/esm2022/lib/ec-services/analytics/google-analytics.service.mjs +283 -0
  93. package/esm2022/lib/ec-services/analytics/gtm.service.mjs +414 -0
  94. package/esm2022/lib/ec-services/analytics/index.mjs +7 -0
  95. package/esm2022/lib/ec-services/analytics/metricool-pixel.service.mjs +55 -0
  96. package/esm2022/lib/ec-services/auth.service.mjs +440 -0
  97. package/esm2022/lib/ec-services/auth.storage.service.mjs +54 -0
  98. package/esm2022/lib/ec-services/blocks-repository.service.mjs +64 -0
  99. package/esm2022/lib/ec-services/blocks.service.mjs +52 -0
  100. package/esm2022/lib/ec-services/cart.service.mjs +465 -0
  101. package/esm2022/lib/ec-services/channel.service.mjs +83 -0
  102. package/esm2022/lib/ec-services/checkout.service.mjs +180 -0
  103. package/esm2022/lib/ec-services/currency.service.mjs +177 -0
  104. package/esm2022/lib/ec-services/filters.service.mjs +134 -0
  105. package/esm2022/lib/ec-services/form.service.mjs +81 -0
  106. package/esm2022/lib/ec-services/index.mjs +27 -0
  107. package/esm2022/lib/ec-services/local-storage.service.mjs +58 -0
  108. package/esm2022/lib/ec-services/ngx-local-storage.service.mjs +66 -0
  109. package/esm2022/lib/ec-services/options.service.mjs +273 -0
  110. package/esm2022/lib/ec-services/order-utility.service.mjs +61 -0
  111. package/esm2022/lib/ec-services/orders.service.mjs +48 -0
  112. package/esm2022/lib/ec-services/pagination.service.mjs +163 -0
  113. package/esm2022/lib/ec-services/parameters.service.mjs +65 -0
  114. package/esm2022/lib/ec-services/payment.service.mjs +54 -0
  115. package/esm2022/lib/ec-services/product-detail.service.mjs +285 -0
  116. package/esm2022/lib/ec-services/products.service.mjs +148 -0
  117. package/esm2022/lib/ec-services/re-captcha.service.mjs +114 -0
  118. package/esm2022/lib/ec-services/shipment.service.mjs +158 -0
  119. package/esm2022/lib/ec-services/stores.service.mjs +27 -0
  120. package/esm2022/lib/ec-services/test.service.mjs +16 -0
  121. package/esm2022/lib/ec-services/toast.service.mjs +81 -0
  122. package/esm2022/lib/interceptors/auth.interceptor.mjs +35 -0
  123. package/esm2022/lib/interceptors/index.mjs +2 -0
  124. package/esm2022/lib/interfaces/analytics/event-key.mjs +2 -0
  125. package/esm2022/lib/interfaces/analytics/facebook-pixel-data.mjs +2 -0
  126. package/esm2022/lib/interfaces/analytics/gtm-config.mjs +2 -0
  127. package/esm2022/lib/interfaces/analytics/index.mjs +4 -0
  128. package/esm2022/lib/interfaces/blocks.mjs +2 -0
  129. package/esm2022/lib/interfaces/checkout.mjs +2 -0
  130. package/esm2022/lib/interfaces/connection.mjs +2 -0
  131. package/esm2022/lib/interfaces/coupon.mjs +2 -0
  132. package/esm2022/lib/interfaces/currency.mjs +2 -0
  133. package/esm2022/lib/interfaces/deserializable.mjs +2 -0
  134. package/esm2022/lib/interfaces/environment.mjs +2 -0
  135. package/esm2022/lib/interfaces/filter.mjs +2 -0
  136. package/esm2022/lib/interfaces/index.mjs +19 -0
  137. package/esm2022/lib/interfaces/options.mjs +2 -0
  138. package/esm2022/lib/interfaces/pagination.mjs +2 -0
  139. package/esm2022/lib/interfaces/parameter.mjs +2 -0
  140. package/esm2022/lib/interfaces/product.mjs +2 -0
  141. package/esm2022/lib/interfaces/step.mjs +2 -0
  142. package/esm2022/lib/interfaces/storage.mjs +2 -0
  143. package/esm2022/lib/interfaces/store.mjs +2 -0
  144. package/esm2022/lib/interfaces/types/index.mjs +2 -0
  145. package/esm2022/lib/interfaces/types/user.type.mjs +2 -0
  146. package/esm2022/lib/providers/index.mjs +2 -0
  147. package/esm2022/lib/providers/provideEnvironment.mjs +20 -0
  148. package/esm2022/lib/stores/currency.store.mjs +10 -0
  149. package/esm2022/lib/stores/index.mjs +2 -0
  150. package/esm2022/ng-easycommerce-v18.mjs +5 -0
  151. package/esm2022/public-api.mjs +20 -0
  152. package/fesm2022/ng-easycommerce-v18.mjs +8190 -0
  153. package/fesm2022/ng-easycommerce-v18.mjs.map +1 -0
  154. package/index.d.ts +5 -0
  155. package/lib/api/connection.service.d.ts +52 -0
  156. package/lib/api/index.d.ts +1 -0
  157. package/lib/classes/checkout/index.d.ts +1 -0
  158. package/lib/classes/checkout/steps.d.ts +15 -0
  159. package/lib/classes/filters/attributes-filter.d.ts +14 -0
  160. package/lib/classes/filters/category-filter.d.ts +14 -0
  161. package/lib/classes/filters/dynamics-filter.d.ts +13 -0
  162. package/lib/classes/filters/filter-factory.d.ts +5 -0
  163. package/lib/classes/filters/filter.d.ts +19 -0
  164. package/lib/classes/filters/index.d.ts +6 -0
  165. package/lib/classes/filters/sort-filter.d.ts +14 -0
  166. package/{projects/ng-easycommerce/src/lib/classes/index.ts → lib/classes/index.d.ts} +3 -3
  167. package/lib/classes/user.d.ts +50 -0
  168. package/lib/constants/api.constants.service.d.ts +54 -0
  169. package/lib/constants/core.constants.service.d.ts +109 -0
  170. package/lib/constants/index.d.ts +2 -0
  171. package/lib/ec-components/abstractions-components/block-ec.component.d.ts +62 -0
  172. package/lib/ec-components/abstractions-components/index.d.ts +2 -0
  173. package/lib/ec-components/abstractions-components/menu-ec.component.d.ts +67 -0
  174. package/lib/ec-components/account-ec/account-ec.component.d.ts +10 -0
  175. package/lib/ec-components/account-ec/index.d.ts +3 -0
  176. package/lib/ec-components/account-ec/order-ec/order-ec.component.d.ts +8 -0
  177. package/lib/ec-components/account-ec/orders-list-ec/orders-list-ec.component.d.ts +55 -0
  178. package/lib/ec-components/auth-ec/auth-ec.component.d.ts +5 -0
  179. package/lib/ec-components/auth-ec/confirm-account-ec/confirm-account-ec.component.d.ts +11 -0
  180. package/lib/ec-components/auth-ec/forgot-password-ec/forgot-password-ec.component.d.ts +27 -0
  181. package/{projects/ng-easycommerce/src/lib/ec-components/auth-ec/index.ts → lib/ec-components/auth-ec/index.d.ts} +6 -6
  182. package/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.d.ts +42 -0
  183. package/lib/ec-components/auth-ec/register-form-ec/register-form-ec.component.d.ts +39 -0
  184. package/lib/ec-components/auth-ec/register-wholesaler-form-ec/register-wholesaler-form-ec.component.d.ts +62 -0
  185. package/lib/ec-components/blocks-ec/block-banner-box-ec/block-banner-box-ec.component.d.ts +46 -0
  186. package/lib/ec-components/blocks-ec/block-banner-full-ec/block-banner-full-ec.component.d.ts +54 -0
  187. package/lib/ec-components/blocks-ec/block-form-contact-ec/block-form-contact-ec.component.d.ts +21 -0
  188. package/lib/ec-components/blocks-ec/block-html-ec/block-html-ec.component.d.ts +25 -0
  189. package/lib/ec-components/blocks-ec/block-newsletter-ec/block-newsletter-ec.component.d.ts +17 -0
  190. package/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.d.ts +51 -0
  191. package/lib/ec-components/blocks-ec/blocks-ec.component.d.ts +59 -0
  192. package/{projects/ng-easycommerce/src/lib/ec-components/blocks-ec/index.ts → lib/ec-components/blocks-ec/index.d.ts} +4 -4
  193. package/lib/ec-components/breadcrumb-ec/breadcrumb-ec.component.d.ts +11 -0
  194. package/lib/ec-components/cart-ec/cart-ec.component.d.ts +12 -0
  195. package/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.d.ts +17 -0
  196. package/lib/ec-components/cart-ec/index.d.ts +2 -0
  197. package/lib/ec-components/checkout-ec/checkout-ec.component.d.ts +20 -0
  198. package/lib/ec-components/checkout-ec/dataform-ec/dataform-ec.component.d.ts +83 -0
  199. package/lib/ec-components/checkout-ec/dataform-ec/input-ec/input-ec.component.d.ts +14 -0
  200. package/lib/ec-components/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.d.ts +11 -0
  201. package/lib/ec-components/checkout-ec/payment-ec/payment-ec.component.d.ts +37 -0
  202. package/lib/ec-components/checkout-ec/payment-ec/payment-methods/bank-transfer-ec/bank-transfer-ec.component.d.ts +11 -0
  203. package/{projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/index.ts → lib/ec-components/checkout-ec/payment-ec/payment-methods/index.d.ts} +3 -3
  204. package/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.d.ts +30 -0
  205. package/lib/ec-components/checkout-ec/payment-ec/payment-methods/offline-ec/offline-ec.component.d.ts +11 -0
  206. package/lib/ec-components/checkout-ec/shipment-ec/shipment-ec.component.d.ts +30 -0
  207. package/lib/ec-components/checkout-ec/step-container-ec/step-container-ec.component.d.ts +11 -0
  208. package/lib/ec-components/checkout-ec/success-ec/success-ec.component.d.ts +30 -0
  209. package/lib/ec-components/collection-ec/collection-ec.component.d.ts +37 -0
  210. package/lib/ec-components/coupon-ec/coupon-ec.component.d.ts +12 -0
  211. package/lib/ec-components/filters-ec/filters-ec.component.d.ts +14 -0
  212. package/lib/ec-components/filters-sort-ec/filters-sort-ec.component.d.ts +14 -0
  213. package/lib/ec-components/footer-ec/footer-ec.component.d.ts +10 -0
  214. package/lib/ec-components/header-ec/header-ec.component.d.ts +12 -0
  215. package/lib/ec-components/home-ec/home-ec.component.d.ts +8 -0
  216. package/{projects/ng-easycommerce/src/lib/ec-components/index.ts → lib/ec-components/index.d.ts} +18 -17
  217. package/lib/ec-components/product-detail-ec/product-detail-ec.component.d.ts +35 -0
  218. package/lib/ec-components/product-ec/product-ec.component.d.ts +31 -0
  219. package/lib/ec-components/variants-ec/variants-ec.component.d.ts +8 -0
  220. package/{projects/ng-easycommerce/src/lib/ec-components/widgets-ec/index.ts → lib/ec-components/widgets-ec/index.d.ts} +4 -4
  221. package/{projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/index.ts → lib/ec-components/widgets-ec/loading/index.d.ts} +3 -3
  222. package/lib/ec-components/widgets-ec/loading/loading-full-ec/loading-full-ec.component.d.ts +5 -0
  223. package/lib/ec-components/widgets-ec/loading/loading-inline-ec/loading-inline-ec.component.d.ts +6 -0
  224. package/lib/ec-components/widgets-ec/loading/loading-section-ec/loading-section-ec.component.d.ts +5 -0
  225. package/lib/ec-components/widgets-ec/magnizoom-ec/magnizoom-ec.component.d.ts +70 -0
  226. package/lib/ec-components/widgets-ec/price-ec/price-ec.component.d.ts +16 -0
  227. package/lib/ec-components/widgets-ec/re-captcha-ec/re-captcha-ec.component.d.ts +26 -0
  228. package/lib/ec-guards/auth.guard.d.ts +8 -0
  229. package/lib/ec-guards/index.d.ts +1 -0
  230. package/lib/ec-pipe/ec-currency-symbol.pipe.d.ts +54 -0
  231. package/lib/ec-pipe/index.d.ts +1 -0
  232. package/lib/ec-services/addressing.service.d.ts +233 -0
  233. package/lib/ec-services/analytics/analytics.service.d.ts +50 -0
  234. package/lib/ec-services/analytics/doppler.service.d.ts +26 -0
  235. package/lib/ec-services/analytics/facebook-pixel.service.d.ts +102 -0
  236. package/lib/ec-services/analytics/google-analytics.service.d.ts +118 -0
  237. package/lib/ec-services/analytics/gtm.service.d.ts +153 -0
  238. package/{projects/ng-easycommerce/src/lib/ec-services/analytics/index.ts → lib/ec-services/analytics/index.d.ts} +6 -6
  239. package/lib/ec-services/analytics/metricool-pixel.service.d.ts +26 -0
  240. package/lib/ec-services/auth.service.d.ts +229 -0
  241. package/lib/ec-services/auth.storage.service.d.ts +24 -0
  242. package/lib/ec-services/blocks-repository.service.d.ts +40 -0
  243. package/lib/ec-services/blocks.service.d.ts +38 -0
  244. package/lib/ec-services/cart.service.d.ts +211 -0
  245. package/lib/ec-services/channel.service.d.ts +59 -0
  246. package/lib/ec-services/checkout.service.d.ts +49 -0
  247. package/lib/ec-services/currency.service.d.ts +108 -0
  248. package/lib/ec-services/filters.service.d.ts +56 -0
  249. package/lib/ec-services/form.service.d.ts +50 -0
  250. package/{projects/ng-easycommerce/src/lib/ec-services/index.ts → lib/ec-services/index.d.ts} +26 -24
  251. package/lib/ec-services/local-storage.service.d.ts +40 -0
  252. package/lib/ec-services/ngx-local-storage.service.d.ts +42 -0
  253. package/lib/ec-services/options.service.d.ts +121 -0
  254. package/lib/ec-services/order-utility.service.d.ts +15 -0
  255. package/lib/ec-services/orders.service.d.ts +14 -0
  256. package/lib/ec-services/pagination.service.d.ts +89 -0
  257. package/lib/ec-services/parameters.service.d.ts +41 -0
  258. package/lib/ec-services/payment.service.d.ts +22 -0
  259. package/lib/ec-services/product-detail.service.d.ts +97 -0
  260. package/lib/ec-services/products.service.d.ts +48 -0
  261. package/lib/ec-services/re-captcha.service.d.ts +65 -0
  262. package/lib/ec-services/shipment.service.d.ts +49 -0
  263. package/lib/ec-services/stores.service.d.ts +12 -0
  264. package/lib/ec-services/test.service.d.ts +6 -0
  265. package/lib/ec-services/toast.service.d.ts +59 -0
  266. package/lib/interceptors/auth.interceptor.d.ts +2 -0
  267. package/lib/interceptors/index.d.ts +1 -0
  268. package/lib/interfaces/analytics/event-key.d.ts +1 -0
  269. package/lib/interfaces/analytics/facebook-pixel-data.d.ts +5 -0
  270. package/{projects/ng-easycommerce/src/lib/interfaces/analytics/gtm-config.ts → lib/interfaces/analytics/gtm-config.d.ts} +6 -6
  271. package/{projects/ng-easycommerce/src/lib/interfaces/analytics/index.ts → lib/interfaces/analytics/index.d.ts} +3 -3
  272. package/lib/interfaces/blocks.d.ts +41 -0
  273. package/{projects/ng-easycommerce/src/lib/interfaces/checkout.ts → lib/interfaces/checkout.d.ts} +12 -14
  274. package/{projects/ng-easycommerce/src/lib/interfaces/connection.ts → lib/interfaces/connection.d.ts} +7 -8
  275. package/lib/interfaces/coupon.d.ts +5 -0
  276. package/lib/interfaces/currency.d.ts +9 -0
  277. package/{projects/ng-easycommerce/src/lib/interfaces/deserializable.ts → lib/interfaces/deserializable.d.ts} +3 -3
  278. package/{projects/ng-easycommerce/src/lib/interfaces/environment.ts → lib/interfaces/environment.d.ts} +6 -6
  279. package/{projects/ng-easycommerce/src/lib/interfaces/filter.ts → lib/interfaces/filter.d.ts} +38 -59
  280. package/{projects/ng-easycommerce/src/lib/interfaces/index.ts → lib/interfaces/index.d.ts} +16 -18
  281. package/lib/interfaces/options.d.ts +26 -0
  282. package/lib/interfaces/pagination.d.ts +24 -0
  283. package/lib/interfaces/parameter.d.ts +14 -0
  284. package/{projects/ng-easycommerce/src/lib/interfaces/product.ts → lib/interfaces/product.d.ts} +73 -81
  285. package/lib/interfaces/step.d.ts +15 -0
  286. package/lib/interfaces/storage.d.ts +7 -0
  287. package/{projects/ng-easycommerce/src/lib/interfaces/store.ts → lib/interfaces/store.d.ts} +17 -17
  288. package/lib/interfaces/types/index.d.ts +1 -0
  289. package/lib/interfaces/types/user.type.d.ts +5 -0
  290. package/lib/providers/index.d.ts +1 -0
  291. package/lib/providers/provideEnvironment.d.ts +13 -0
  292. package/lib/stores/currency.store.d.ts +7 -0
  293. package/lib/stores/index.d.ts +1 -0
  294. package/package.json +29 -58
  295. package/{projects/ng-easycommerce/src/public-api.ts → public-api.d.ts} +8 -24
  296. package/.editorconfig +0 -16
  297. package/angular.json +0 -48
  298. package/projects/ng-easycommerce/README.md +0 -24
  299. package/projects/ng-easycommerce/ng-package.json +0 -7
  300. package/projects/ng-easycommerce/package.json +0 -12
  301. package/projects/ng-easycommerce/src/lib/api/connection.service.ts +0 -79
  302. package/projects/ng-easycommerce/src/lib/api/index.ts +0 -1
  303. package/projects/ng-easycommerce/src/lib/classes/checkout/index.ts +0 -1
  304. package/projects/ng-easycommerce/src/lib/classes/checkout/steps.ts +0 -37
  305. package/projects/ng-easycommerce/src/lib/classes/filters/attributes-filter.ts +0 -74
  306. package/projects/ng-easycommerce/src/lib/classes/filters/category-filter.ts +0 -57
  307. package/projects/ng-easycommerce/src/lib/classes/filters/dynamics-filter.ts +0 -57
  308. package/projects/ng-easycommerce/src/lib/classes/filters/filter-factory.ts +0 -23
  309. package/projects/ng-easycommerce/src/lib/classes/filters/filter.ts +0 -89
  310. package/projects/ng-easycommerce/src/lib/classes/filters/index.ts +0 -6
  311. package/projects/ng-easycommerce/src/lib/classes/filters/sort-filter.ts +0 -93
  312. package/projects/ng-easycommerce/src/lib/classes/user.ts +0 -68
  313. package/projects/ng-easycommerce/src/lib/constants/api.constants.service.ts +0 -69
  314. package/projects/ng-easycommerce/src/lib/constants/core.constants.service.ts +0 -210
  315. package/projects/ng-easycommerce/src/lib/constants/index.ts +0 -2
  316. package/projects/ng-easycommerce/src/lib/ec-components/abstractions-components/block-ec.component.ts +0 -107
  317. package/projects/ng-easycommerce/src/lib/ec-components/abstractions-components/index.ts +0 -2
  318. package/projects/ng-easycommerce/src/lib/ec-components/abstractions-components/menu-ec.component.ts +0 -102
  319. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/auth-ec.component.html +0 -10
  320. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/auth-ec.component.scss +0 -0
  321. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/auth-ec.component.ts +0 -13
  322. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/confirm-account-ec/confirm-account-ec.component.html +0 -19
  323. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/confirm-account-ec/confirm-account-ec.component.scss +0 -0
  324. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/confirm-account-ec/confirm-account-ec.component.ts +0 -34
  325. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/forgot-password-ec/forgot-password-ec.component.html +0 -31
  326. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/forgot-password-ec/forgot-password-ec.component.scss +0 -0
  327. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/forgot-password-ec/forgot-password-ec.component.ts +0 -55
  328. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.html +0 -30
  329. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.scss +0 -0
  330. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.ts +0 -92
  331. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/register-form-ec/register-form-ec.component.html +0 -55
  332. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/register-form-ec/register-form-ec.component.scss +0 -0
  333. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/register-form-ec/register-form-ec.component.ts +0 -102
  334. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/register-wholesaler-form-ec/register-wholesaler-form-ec.component.html +0 -233
  335. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/register-wholesaler-form-ec/register-wholesaler-form-ec.component.scss +0 -0
  336. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/register-wholesaler-form-ec/register-wholesaler-form-ec.component.ts +0 -149
  337. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-banner-box-ec/block-banner-box-ec.component.html +0 -113
  338. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-banner-box-ec/block-banner-box-ec.component.scss +0 -12
  339. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-banner-box-ec/block-banner-box-ec.component.ts +0 -100
  340. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-banner-full-ec/block-banner-full-ec.component.html +0 -111
  341. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-banner-full-ec/block-banner-full-ec.component.scss +0 -0
  342. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-banner-full-ec/block-banner-full-ec.component.ts +0 -77
  343. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-form-contact-ec/block-form-contact-ec.component.html +0 -62
  344. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-form-contact-ec/block-form-contact-ec.component.scss +0 -0
  345. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-form-contact-ec/block-form-contact-ec.component.ts +0 -89
  346. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-html-ec/block-html-ec.component.html +0 -1
  347. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-html-ec/block-html-ec.component.scss +0 -0
  348. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-html-ec/block-html-ec.component.ts +0 -33
  349. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-newsletter-ec/block-newsletter-ec.component.html +0 -1
  350. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-newsletter-ec/block-newsletter-ec.component.scss +0 -0
  351. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-newsletter-ec/block-newsletter-ec.component.ts +0 -81
  352. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.html +0 -40
  353. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.scss +0 -0
  354. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.ts +0 -97
  355. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/blocks-ec.component.html +0 -41
  356. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/blocks-ec.component.scss +0 -0
  357. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/blocks-ec.component.ts +0 -86
  358. package/projects/ng-easycommerce/src/lib/ec-components/breadcrumb-ec/breadcrumb-ec.component.html +0 -20
  359. package/projects/ng-easycommerce/src/lib/ec-components/breadcrumb-ec/breadcrumb-ec.component.scss +0 -0
  360. package/projects/ng-easycommerce/src/lib/ec-components/breadcrumb-ec/breadcrumb-ec.component.ts +0 -30
  361. package/projects/ng-easycommerce/src/lib/ec-components/cart-ec/cart-ec.component.html +0 -1
  362. package/projects/ng-easycommerce/src/lib/ec-components/cart-ec/cart-ec.component.scss +0 -0
  363. package/projects/ng-easycommerce/src/lib/ec-components/cart-ec/cart-ec.component.ts +0 -24
  364. package/projects/ng-easycommerce/src/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.html +0 -1
  365. package/projects/ng-easycommerce/src/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.scss +0 -0
  366. package/projects/ng-easycommerce/src/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.ts +0 -51
  367. package/projects/ng-easycommerce/src/lib/ec-components/cart-ec/index.ts +0 -2
  368. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/checkout-ec.component.html +0 -56
  369. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/checkout-ec.component.scss +0 -38
  370. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/checkout-ec.component.ts +0 -67
  371. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/dataform-ec/dataform-ec.component.html +0 -836
  372. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/dataform-ec/dataform-ec.component.scss +0 -0
  373. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/dataform-ec/dataform-ec.component.ts +0 -302
  374. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/dataform-ec/input-ec/input-ec.component.html +0 -32
  375. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/dataform-ec/input-ec/input-ec.component.scss +0 -0
  376. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/dataform-ec/input-ec/input-ec.component.ts +0 -52
  377. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.html +0 -12
  378. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.scss +0 -0
  379. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.ts +0 -48
  380. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-ec.component.html +0 -195
  381. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-ec.component.scss +0 -0
  382. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-ec.component.ts +0 -103
  383. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/bank-transfer-ec/bank-transfer-ec.component.html +0 -28
  384. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/bank-transfer-ec/bank-transfer-ec.component.scss +0 -0
  385. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/bank-transfer-ec/bank-transfer-ec.component.ts +0 -26
  386. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.html +0 -33
  387. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.scss +0 -0
  388. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.ts +0 -116
  389. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/offline-ec/offline-ec.component.html +0 -13
  390. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/offline-ec/offline-ec.component.scss +0 -0
  391. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/offline-ec/offline-ec.component.ts +0 -26
  392. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/shipment-ec/shipment-ec.component.html +0 -111
  393. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/shipment-ec/shipment-ec.component.scss +0 -0
  394. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/shipment-ec/shipment-ec.component.ts +0 -111
  395. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/step-container-ec/step-container-ec.component.html +0 -33
  396. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/step-container-ec/step-container-ec.component.scss +0 -0
  397. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/step-container-ec/step-container-ec.component.ts +0 -39
  398. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/success-ec/success-ec.component.html +0 -59
  399. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/success-ec/success-ec.component.scss +0 -0
  400. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/success-ec/success-ec.component.ts +0 -65
  401. package/projects/ng-easycommerce/src/lib/ec-components/collection-ec/collection-ec.component.html +0 -16
  402. package/projects/ng-easycommerce/src/lib/ec-components/collection-ec/collection-ec.component.scss +0 -0
  403. package/projects/ng-easycommerce/src/lib/ec-components/collection-ec/collection-ec.component.ts +0 -83
  404. package/projects/ng-easycommerce/src/lib/ec-components/coupon-ec/coupon-ec.component.html +0 -1
  405. package/projects/ng-easycommerce/src/lib/ec-components/coupon-ec/coupon-ec.component.scss +0 -0
  406. package/projects/ng-easycommerce/src/lib/ec-components/coupon-ec/coupon-ec.component.ts +0 -32
  407. package/projects/ng-easycommerce/src/lib/ec-components/filters-ec/filters-ec.component.html +0 -1
  408. package/projects/ng-easycommerce/src/lib/ec-components/filters-ec/filters-ec.component.scss +0 -0
  409. package/projects/ng-easycommerce/src/lib/ec-components/filters-ec/filters-ec.component.ts +0 -45
  410. package/projects/ng-easycommerce/src/lib/ec-components/filters-sort-ec/filters-sort-ec.component.html +0 -1
  411. package/projects/ng-easycommerce/src/lib/ec-components/filters-sort-ec/filters-sort-ec.component.scss +0 -0
  412. package/projects/ng-easycommerce/src/lib/ec-components/filters-sort-ec/filters-sort-ec.component.ts +0 -49
  413. package/projects/ng-easycommerce/src/lib/ec-components/footer-ec/footer-ec.component.html +0 -1
  414. package/projects/ng-easycommerce/src/lib/ec-components/footer-ec/footer-ec.component.scss +0 -0
  415. package/projects/ng-easycommerce/src/lib/ec-components/footer-ec/footer-ec.component.spec.ts +0 -23
  416. package/projects/ng-easycommerce/src/lib/ec-components/footer-ec/footer-ec.component.ts +0 -18
  417. package/projects/ng-easycommerce/src/lib/ec-components/header-ec/header-ec.component.html +0 -1
  418. package/projects/ng-easycommerce/src/lib/ec-components/header-ec/header-ec.component.scss +0 -0
  419. package/projects/ng-easycommerce/src/lib/ec-components/header-ec/header-ec.component.spec.ts +0 -23
  420. package/projects/ng-easycommerce/src/lib/ec-components/header-ec/header-ec.component.ts +0 -22
  421. package/projects/ng-easycommerce/src/lib/ec-components/home-ec/home-ec.component.html +0 -1
  422. package/projects/ng-easycommerce/src/lib/ec-components/home-ec/home-ec.component.scss +0 -0
  423. package/projects/ng-easycommerce/src/lib/ec-components/home-ec/home-ec.component.spec.ts +0 -23
  424. package/projects/ng-easycommerce/src/lib/ec-components/home-ec/home-ec.component.ts +0 -16
  425. package/projects/ng-easycommerce/src/lib/ec-components/product-detail-ec/product-detail-ec.component.html +0 -0
  426. package/projects/ng-easycommerce/src/lib/ec-components/product-detail-ec/product-detail-ec.component.scss +0 -0
  427. package/projects/ng-easycommerce/src/lib/ec-components/product-detail-ec/product-detail-ec.component.ts +0 -82
  428. package/projects/ng-easycommerce/src/lib/ec-components/product-ec/product-ec.component.html +0 -31
  429. package/projects/ng-easycommerce/src/lib/ec-components/product-ec/product-ec.component.scss +0 -0
  430. package/projects/ng-easycommerce/src/lib/ec-components/product-ec/product-ec.component.ts +0 -46
  431. package/projects/ng-easycommerce/src/lib/ec-components/variants-ec/variants-ec.component.html +0 -65
  432. package/projects/ng-easycommerce/src/lib/ec-components/variants-ec/variants-ec.component.scss +0 -8
  433. package/projects/ng-easycommerce/src/lib/ec-components/variants-ec/variants-ec.component.ts +0 -20
  434. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/loading-full-ec/loading-full-ec.component.html +0 -7
  435. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/loading-full-ec/loading-full-ec.component.scss +0 -0
  436. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/loading-full-ec/loading-full-ec.component.ts +0 -13
  437. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/loading-inline-ec/loading-inline-ec.component.html +0 -5
  438. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/loading-inline-ec/loading-inline-ec.component.scss +0 -0
  439. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/loading-inline-ec/loading-inline-ec.component.ts +0 -13
  440. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/loading-section-ec/loading-section-ec.component.html +0 -3
  441. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/loading-section-ec/loading-section-ec.component.scss +0 -0
  442. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/loading-section-ec/loading-section-ec.component.ts +0 -13
  443. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/magnizoom-ec/magnizoom-ec.component.html +0 -11
  444. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/magnizoom-ec/magnizoom-ec.component.scss +0 -0
  445. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/magnizoom-ec/magnizoom-ec.component.ts +0 -177
  446. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/price-ec/price-ec.component.html +0 -47
  447. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/price-ec/price-ec.component.scss +0 -0
  448. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/price-ec/price-ec.component.ts +0 -22
  449. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/re-captcha-ec/re-captcha-ec.component.html +0 -6
  450. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/re-captcha-ec/re-captcha-ec.component.scss +0 -0
  451. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/re-captcha-ec/re-captcha-ec.component.ts +0 -70
  452. package/projects/ng-easycommerce/src/lib/ec-guards/auth.guard.ts +0 -19
  453. package/projects/ng-easycommerce/src/lib/ec-guards/index.ts +0 -1
  454. package/projects/ng-easycommerce/src/lib/ec-pipe/ec-currency-symbol.pipe.ts +0 -99
  455. package/projects/ng-easycommerce/src/lib/ec-pipe/index.ts +0 -1
  456. package/projects/ng-easycommerce/src/lib/ec-services/addressing.service.ts +0 -199
  457. package/projects/ng-easycommerce/src/lib/ec-services/analytics/analytics.service.ts +0 -76
  458. package/projects/ng-easycommerce/src/lib/ec-services/analytics/doppler.service.ts +0 -38
  459. package/projects/ng-easycommerce/src/lib/ec-services/analytics/facebook-pixel.service.ts +0 -214
  460. package/projects/ng-easycommerce/src/lib/ec-services/analytics/google-analytics.service.ts +0 -284
  461. package/projects/ng-easycommerce/src/lib/ec-services/analytics/gtm.service.ts +0 -413
  462. package/projects/ng-easycommerce/src/lib/ec-services/analytics/metricool-pixel.service.ts +0 -46
  463. package/projects/ng-easycommerce/src/lib/ec-services/auth.service.ts +0 -438
  464. package/projects/ng-easycommerce/src/lib/ec-services/auth.storage.service.ts +0 -54
  465. package/projects/ng-easycommerce/src/lib/ec-services/blocks-repository.service.ts +0 -67
  466. package/projects/ng-easycommerce/src/lib/ec-services/blocks.service.ts +0 -48
  467. package/projects/ng-easycommerce/src/lib/ec-services/cart.service.ts +0 -492
  468. package/projects/ng-easycommerce/src/lib/ec-services/channel.service.ts +0 -81
  469. package/projects/ng-easycommerce/src/lib/ec-services/checkout.service.ts +0 -196
  470. package/projects/ng-easycommerce/src/lib/ec-services/currency.service.ts +0 -179
  471. package/projects/ng-easycommerce/src/lib/ec-services/filters.service.ts +0 -133
  472. package/projects/ng-easycommerce/src/lib/ec-services/form.service.ts +0 -82
  473. package/projects/ng-easycommerce/src/lib/ec-services/local-storage.service.ts +0 -54
  474. package/projects/ng-easycommerce/src/lib/ec-services/ngx-local-storage.service.ts +0 -66
  475. package/projects/ng-easycommerce/src/lib/ec-services/options.service.ts +0 -274
  476. package/projects/ng-easycommerce/src/lib/ec-services/order-utility.service.ts +0 -52
  477. package/projects/ng-easycommerce/src/lib/ec-services/pagination.service.ts +0 -172
  478. package/projects/ng-easycommerce/src/lib/ec-services/parameters.service.ts +0 -67
  479. package/projects/ng-easycommerce/src/lib/ec-services/payment.service.ts +0 -63
  480. package/projects/ng-easycommerce/src/lib/ec-services/product-detail.service.ts +0 -288
  481. package/projects/ng-easycommerce/src/lib/ec-services/products.service.ts +0 -162
  482. package/projects/ng-easycommerce/src/lib/ec-services/re-captcha.service.ts +0 -126
  483. package/projects/ng-easycommerce/src/lib/ec-services/shipment.service.ts +0 -174
  484. package/projects/ng-easycommerce/src/lib/ec-services/stores.service.ts +0 -27
  485. package/projects/ng-easycommerce/src/lib/ec-services/toast.service.ts +0 -84
  486. package/projects/ng-easycommerce/src/lib/interceptors/auth.interceptor.ts +0 -43
  487. package/projects/ng-easycommerce/src/lib/interceptors/index.ts +0 -1
  488. package/projects/ng-easycommerce/src/lib/interfaces/analytics/event-key.ts +0 -14
  489. package/projects/ng-easycommerce/src/lib/interfaces/analytics/facebook-pixel-data.ts +0 -5
  490. package/projects/ng-easycommerce/src/lib/interfaces/blocks.ts +0 -56
  491. package/projects/ng-easycommerce/src/lib/interfaces/coupon.ts +0 -5
  492. package/projects/ng-easycommerce/src/lib/interfaces/currency.ts +0 -10
  493. package/projects/ng-easycommerce/src/lib/interfaces/options.ts +0 -28
  494. package/projects/ng-easycommerce/src/lib/interfaces/pagination.ts +0 -27
  495. package/projects/ng-easycommerce/src/lib/interfaces/parameter.ts +0 -15
  496. package/projects/ng-easycommerce/src/lib/interfaces/step.ts +0 -19
  497. package/projects/ng-easycommerce/src/lib/interfaces/storage.ts +0 -7
  498. package/projects/ng-easycommerce/src/lib/interfaces/types/index.ts +0 -1
  499. package/projects/ng-easycommerce/src/lib/interfaces/types/user.type.ts +0 -5
  500. package/projects/ng-easycommerce/src/lib/providers/index.ts +0 -1
  501. package/projects/ng-easycommerce/src/lib/providers/provideEnvironment.ts +0 -24
  502. package/projects/ng-easycommerce/src/lib/stores/currency.store.ts +0 -20
  503. package/projects/ng-easycommerce/src/lib/stores/index.ts +0 -1
  504. package/projects/ng-easycommerce/tsconfig.lib.json +0 -15
  505. package/projects/ng-easycommerce/tsconfig.lib.prod.json +0 -11
  506. package/projects/ng-easycommerce/tsconfig.spec.json +0 -15
  507. package/tsconfig.doc.json +0 -4
  508. package/tsconfig.json +0 -37
@@ -0,0 +1,414 @@
1
+ import { inject, Injectable, PLATFORM_ID, RendererFactory2 } from '@angular/core';
2
+ import { NavigationEnd, Router } from '@angular/router';
3
+ import { DOCUMENT, isPlatformBrowser } from '@angular/common';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * Servicio que se encarga de manejar el analytics de GTM.
7
+ */
8
+ export class GTMService {
9
+ /**
10
+ * Indica si se esta cargando el servicio.
11
+ */
12
+ isLoaded = false;
13
+ /**
14
+ * Indica cuando el servicio esta habilitado.
15
+ */
16
+ enabled = false;
17
+ /**
18
+ * Se encarga de crear el elemento HTML con las configuraciones para
19
+ * que se pueda ejecutar el servicio.
20
+ */
21
+ renderer;
22
+ /**
23
+ * Almacena el objecto window del navegador.
24
+ */
25
+ window;
26
+ rendererFactory = inject(RendererFactory2);
27
+ document = null;
28
+ /**
29
+ * Servicio de ruteo de angular.
30
+ */
31
+ router = inject(Router);
32
+ /**
33
+ * Configuración de Google Tag Manager.
34
+ */
35
+ config = { id: null };
36
+ platformId = inject(PLATFORM_ID);
37
+ constructor() {
38
+ this.renderer = this.rendererFactory.createRenderer(null, null);
39
+ if (isPlatformBrowser(this.platformId)) {
40
+ this.window = window;
41
+ this.document = inject(DOCUMENT);
42
+ }
43
+ }
44
+ /**
45
+ * Obtiene el dataLayer del objecto window
46
+ * @returns
47
+ */
48
+ getDataLayer() {
49
+ const window = this.window;
50
+ /* if(window)
51
+ window.dataLayer = window.dataLayer || [];
52
+ return window.dataLayer; */
53
+ return [];
54
+ }
55
+ /**
56
+ * Agrega datos al dataLayer.
57
+ * @param obj
58
+ */
59
+ pushOnDataLayer(obj) {
60
+ const dataLayer = this.getDataLayer();
61
+ dataLayer.push(obj);
62
+ }
63
+ /**
64
+ * Agrega el script de GTM para que empiece a capturar eventos.
65
+ * @returns
66
+ */
67
+ addGtmToDom() {
68
+ return new Promise((resolve, reject) => {
69
+ if (this.isLoaded) {
70
+ return resolve(this.isLoaded);
71
+ }
72
+ //const doc = this.browserGlobals.documentRef();
73
+ this.pushOnDataLayer({ 'gtm.start': new Date().getTime(), event: 'gtm.js' });
74
+ const gtmScript = this.document?.createElement('script'); //doc.createElement('script');
75
+ if (gtmScript) {
76
+ gtmScript.id = 'GTMscript';
77
+ gtmScript.async = true;
78
+ gtmScript.src = this.applyGtmQueryParams(this.config["gtm_resource_path"] ? this.config["gtm_resource_path"] : 'https://www.googletagmanager.com/gtm.js');
79
+ gtmScript.addEventListener('load', () => {
80
+ return resolve(this.isLoaded = true);
81
+ });
82
+ gtmScript.addEventListener('error', () => {
83
+ return reject(false);
84
+ });
85
+ this.document?.head.insertBefore(gtmScript, this.document.head.firstChild);
86
+ }
87
+ });
88
+ }
89
+ applyGtmQueryParams(url) {
90
+ if (url.indexOf('?') === -1) {
91
+ url += '?';
92
+ }
93
+ return (url + Object.keys(this.config).filter((k) => this.config[k]).map((k) => `${k}=${this.config[k]}`).join('&'));
94
+ }
95
+ /**
96
+ * Inicializa el Servicio de analytics con sus configuraciones.
97
+ * @param config Configuraciones de Google Tag Manager
98
+ */
99
+ initialize(config) {
100
+ this.config = config || this.config;
101
+ this.addGtmToDom().then(() => {
102
+ this.router.events.forEach(item => {
103
+ if (item instanceof NavigationEnd) {
104
+ const gtmTag = {
105
+ event: 'page',
106
+ pageName: item.url
107
+ };
108
+ this.pushTag(gtmTag);
109
+ }
110
+ });
111
+ });
112
+ }
113
+ pushTag(item) {
114
+ return new Promise((resolve, reject) => {
115
+ if (!this.isLoaded) {
116
+ this.addGtmToDom().then(() => {
117
+ this.pushOnDataLayer(item);
118
+ return resolve();
119
+ }).catch(() => reject());
120
+ }
121
+ else {
122
+ this.pushOnDataLayer(item);
123
+ return resolve();
124
+ }
125
+ });
126
+ }
127
+ /**
128
+ * Ejecuta el evento pasado por parametro.
129
+ * @param event_name Nombre del evento.
130
+ * @param data Data extra para agregar al evento.
131
+ * @returns
132
+ */
133
+ callEvent(event_name, data = {}) {
134
+ if (!this.isLoaded)
135
+ return;
136
+ let event = this.translateEventName(event_name);
137
+ event && this.pushTag({ ecommerce: null });
138
+ event && this.pushTag({ 'event': this.translateEventName(event_name), ecommerce: this.evalEvent(event_name, data) });
139
+ }
140
+ /**
141
+ * Traduce el evento recibido y devuelve el nombre de la función que lo va a tratar.
142
+ * @param event_name
143
+ * @returns
144
+ */
145
+ translateEventName(event_name) {
146
+ switch (event_name) {
147
+ case 'view_item': return 'view_item';
148
+ case 'view_item_list': return 'view_item_list';
149
+ case 'checkout_init': return 'begin_checkout';
150
+ case 'shipping_info': return 'add_shipping_info';
151
+ case 'add_payment_info': return 'add_payment_info';
152
+ case 'purchase': return 'purchase';
153
+ case 'add_to_cart': return 'add_to_cart';
154
+ case 'remove_from_cart': return 'remove_from_cart';
155
+ case 'sign_up': return 'sign_up';
156
+ case 'select_promotion': return 'select_promotion';
157
+ case 'select_item': return 'select_item';
158
+ default: return null;
159
+ }
160
+ }
161
+ /**
162
+ * Evalua el evento y devuelve los datos de las funciones relacionadas.
163
+ * @param event_name Nombre del evento
164
+ * @param data Data extra para agregar al evento
165
+ * @returns
166
+ */
167
+ evalEvent(event_name, data) {
168
+ switch (event_name) {
169
+ case 'view_item': return this.toViewItem(data);
170
+ case 'view_item_list': return this.toViewItemList(data);
171
+ case 'checkout_init': return this.toCheckoutInit(data);
172
+ case 'shipping_info': return this.toShippingInfo(data);
173
+ case 'add_payment_info': return this.toPaymentInfo(data);
174
+ case 'purchase': return this.toPurchase(data);
175
+ case 'add_to_cart': return this.toAddToCart(data);
176
+ case 'remove_from_cart': return this.toRemoveToCart(data);
177
+ case 'sign_up': return this.toSignUp(data);
178
+ case 'select_promotion': return this.toSelectPromotion(data);
179
+ case 'select_item': return this.toSelectItem(data);
180
+ default: return data;
181
+ }
182
+ }
183
+ /**
184
+ * Evento que se dispara cuando se quiere comprar un producto.
185
+ * @param data
186
+ * @returns
187
+ */
188
+ toPurchase(data) {
189
+ return {
190
+ coupon: this.toCartDiscount(data),
191
+ currency: data.currency,
192
+ shipping: data.totals.shipping,
193
+ tax: data.totals.taxes,
194
+ value: data.totals.total,
195
+ transaction_id: data.number,
196
+ countItems: data.items?.length || 0,
197
+ items: data.items.map((item) => ({
198
+ item_id: item.product.id,
199
+ item_name: item.product.name,
200
+ //coupon:'',
201
+ discount: item.product.discount || 0,
202
+ //index:'',
203
+ item_brand: item.product.attributes?.length ? item.product.attributes[0].name : '',
204
+ item_category: item.product.category,
205
+ item_variant: item.product.variants[0]?.code || '',
206
+ //location_id: '',
207
+ price: item.product.variants[0]?.saleprice || item.product.variants[0]?.price,
208
+ quantity: item.quantity || 1,
209
+ }))
210
+ };
211
+ }
212
+ /**
213
+ * Evento que se dispara cuando se inicializa en checkout.
214
+ * @param data
215
+ * @returns
216
+ */
217
+ toCheckoutInit(data) {
218
+ return {
219
+ coupon: this.toCartDiscount(data),
220
+ currency: data.currency || "USD",
221
+ items: data.items.map((item) => ({
222
+ item_id: item.product.id,
223
+ item_name: item.product.name,
224
+ //coupon:'',
225
+ discount: item.product.discount || 0,
226
+ //index:'',
227
+ item_brand: item.product.attributes?.length ? item.product.attributes[0].name : '',
228
+ item_category: item.product.category,
229
+ //item_list_id: '',
230
+ //item_list_name: '',
231
+ item_variant: item.product.variants[0]?.code || '',
232
+ //location_id: '',
233
+ price: item.product.variants[0]?.saleprice || item.product.variants[0]?.price,
234
+ quantity: item.quantity || 1,
235
+ })),
236
+ value: data.totals?.total || 0,
237
+ };
238
+ }
239
+ /**
240
+ * Evento que se dispara con los descuentos en el carrito.
241
+ * @param data
242
+ * @returns
243
+ */
244
+ toCartDiscount(data) {
245
+ let strDiscount = '';
246
+ strDiscount = data.cartDiscounts.map((itemDiscount) => itemDiscount?.type).join();
247
+ return strDiscount == '' ? 'not-discount' : strDiscount;
248
+ }
249
+ /**
250
+ * Evento que se dispara cuando se agrega un producto al carrito.
251
+ * @param data
252
+ * @returns
253
+ */
254
+ toAddToCart(data) {
255
+ let lastProduct = data.items?.length && data.items[data.items.length - 1];
256
+ return {
257
+ currency: data.currency || "USD",
258
+ items: [this.toItem({ quantity: lastProduct.quantity, ...lastProduct.product })],
259
+ value: lastProduct.total || 0,
260
+ };
261
+ }
262
+ /**
263
+ * Cambia la variable **enabled** a `false`
264
+ * @returns
265
+ */
266
+ disable() { this.enabled = false; }
267
+ /**
268
+ * Evento que se dispara cuando se interactua a las vista del producto.
269
+ * @param product
270
+ * @returns
271
+ */
272
+ toViewItem(product) {
273
+ return {
274
+ currency: product.currency,
275
+ value: product.price,
276
+ items: [this.toItem(product)]
277
+ };
278
+ }
279
+ /**
280
+ * Evento que se dispara cuando se interactua con el listado de productos.
281
+ * @param data
282
+ * @returns
283
+ */
284
+ toViewItemList(data) {
285
+ return {
286
+ items: data.products.map((product) => this.toItem(product)),
287
+ item_list_name: data.item_list_name || 'Collection',
288
+ item_list_id: data.item_list_id || 0
289
+ };
290
+ }
291
+ /**
292
+ * Evento que se dispara cuando se quita un item del carrito.
293
+ * @param product
294
+ * @returns
295
+ */
296
+ toRemoveToCart(product) {
297
+ let productParam = product.product;
298
+ return {
299
+ currency: product.currency || "USD",
300
+ items: [this.toItem({ quantity: product.quantity, ...productParam })],
301
+ value: (productParam.variants[0]?.saleprice || productParam.variants[0]?.price) * product.quantity || 1,
302
+ };
303
+ }
304
+ toItem = (product) => ({
305
+ item_id: product.id,
306
+ item_name: product.name,
307
+ //coupon:'',
308
+ discount: product.discount || 0,
309
+ //index:'',
310
+ item_brand: product.attributes?.length ? product.attributes[0].name : '',
311
+ item_category: product.category,
312
+ //item_list_id: '',
313
+ //item_list_name: '',
314
+ item_variant: product.variants[0]?.code || '',
315
+ //location_id: '',
316
+ price: product.variants[0]?.saleprice || product.variants[0]?.price,
317
+ quantity: product.quantity || 1,
318
+ });
319
+ /**
320
+ * Evento que se dispara cuando se consulta la información de pago.
321
+ * @param data
322
+ * @returns
323
+ */
324
+ toPaymentInfo(data) {
325
+ return {
326
+ coupon: this.toCartDiscount(data),
327
+ currency: data.currency || "USD",
328
+ payment_type: data.payments[0]?.method?.code || 'not-payments',
329
+ value: data.totals?.total || 0,
330
+ items: data.items.map((item) => ({
331
+ item_id: item.product.id,
332
+ item_name: item.product.name,
333
+ //coupon:'',
334
+ discount: item.product.discount || 0,
335
+ //index:'',
336
+ item_brand: item.product.attributes?.length ? item.product.attributes[0].name : '',
337
+ item_category: item.product.category,
338
+ //item_list_id: '',
339
+ //item_list_name: '',
340
+ item_variant: item.product.variants[0]?.code || '',
341
+ //location_id: '',
342
+ price: item.product.variants[0]?.saleprice || item.product.variants[0]?.price,
343
+ quantity: item.quantity || 1,
344
+ })),
345
+ };
346
+ }
347
+ /**
348
+ * Evento que se dispara cuando se interactua con los métodos de envío.
349
+ * @param data
350
+ * @returns
351
+ */
352
+ toShippingInfo(data) {
353
+ return {
354
+ coupon: this.toCartDiscount(data),
355
+ currency: data.currency || "USD",
356
+ shipping_tier: data.shipments[0]?.method?.code || 'not-shipping',
357
+ value: data.totals?.total || 0,
358
+ items: data.items.map((item) => ({
359
+ item_id: item.product.id,
360
+ item_name: item.product.name,
361
+ //coupon:'',
362
+ discount: item.product.discount || 0,
363
+ //index:'',
364
+ item_brand: item.product.attributes?.length ? item.product.attributes[0].name : '',
365
+ item_category: item.product.category,
366
+ //item_list_id: '',
367
+ //item_list_name: '',
368
+ item_variant: item.product.variants[0]?.code || '',
369
+ //location_id: '',
370
+ price: item.product.variants[0]?.saleprice || item.product.variants[0]?.price,
371
+ quantity: item.quantity || 1,
372
+ })),
373
+ };
374
+ }
375
+ toSignUp(data) {
376
+ return {
377
+ ...data
378
+ };
379
+ }
380
+ /**
381
+ * Evento que se dispara cuando se interactua con una promoción.
382
+ * @param data
383
+ * @returns
384
+ */
385
+ toSelectPromotion(data) {
386
+ console.log(data);
387
+ return {
388
+ promotion_id: data.id || '',
389
+ promotion_name: data.code || data.name,
390
+ promotion_title: data.subtitle,
391
+ location_id: data.priority || 0
392
+ };
393
+ }
394
+ /**
395
+ * Evento que se disapra cuando se interactua al seleccionar un item.
396
+ * @param data
397
+ * @returns
398
+ */
399
+ toSelectItem(data) {
400
+ console.log(data);
401
+ return {
402
+ items: this.toItem(data)
403
+ };
404
+ }
405
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GTMService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
406
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GTMService, providedIn: 'root' });
407
+ }
408
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GTMService, decorators: [{
409
+ type: Injectable,
410
+ args: [{
411
+ providedIn: 'root'
412
+ }]
413
+ }], ctorParameters: () => [] });
414
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3RtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtc2VydmljZXMvYW5hbHl0aWNzL2d0bS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBYSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFDOUQ7O0dBRUc7QUFJSCxNQUFNLE9BQU8sVUFBVTtJQUNuQjs7T0FFRztJQUNLLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFDbEM7O09BRUc7SUFDSyxPQUFPLEdBQVksS0FBSyxDQUFDO0lBQ2pDOzs7T0FHRztJQUNLLFFBQVEsQ0FBWTtJQUM1Qjs7T0FFRztJQUNLLE1BQU0sQ0FBVTtJQUVoQixlQUFlLEdBQXFCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzdELFFBQVEsR0FBb0IsSUFBSSxDQUFDO0lBQ3pDOztPQUVHO0lBQ0ssTUFBTSxHQUFXLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4Qzs7T0FFRztJQUNLLE1BQU0sR0FBMkIsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUE7SUFDN0MsVUFBVSxHQUFRLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUM3QztRQUNJLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2hFLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFD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O0lBQ0Q7Ozs7T0FJRztJQUNLLFlBQVksQ0FBQyxJQUFTO1FBQzFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEIsT0FBTztZQUNILEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztTQUMzQixDQUFBO0lBQ0wsQ0FBQzt1R0F0WlEsVUFBVTsyR0FBVixVQUFVLGNBRlAsTUFBTTs7MkZBRVQsVUFBVTtrQkFIdEIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZnRlclJlbmRlciwgaW5qZWN0LCBJbmplY3RhYmxlLCBQTEFURk9STV9JRCwgUmVuZGVyZXIyLCBSZW5kZXJlckZhY3RvcnkyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBbmFseXRpY0V2ZW50S2V5LCBHb29nbGVUYWdNYW5hZ2VyQ29uZmlnIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRE9DVU1FTlQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbi8qKlxuICogU2VydmljaW8gcXVlIHNlIGVuY2FyZ2EgZGUgbWFuZWphciBlbCBhbmFseXRpY3MgZGUgR1RNLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEdUTVNlcnZpY2Uge1xuICAgIC8qKlxuICAgICAqIEluZGljYSBzaSBzZSBlc3RhIGNhcmdhbmRvIGVsIHNlcnZpY2lvLlxuICAgICAqL1xuICAgIHByaXZhdGUgaXNMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBJbmRpY2EgY3VhbmRvIGVsIHNlcnZpY2lvIGVzdGEgaGFiaWxpdGFkby5cbiAgICAgKi9cbiAgICBwcml2YXRlIGVuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBTZSBlbmNhcmdhIGRlIGNyZWFyIGVsIGVsZW1lbnRvIEhUTUwgY29uIGxhcyBjb25maWd1cmFjaW9uZXMgcGFyYSBcbiAgICAgKiBxdWUgc2UgcHVlZGEgZWplY3V0YXIgZWwgc2VydmljaW8uXG4gICAgICovXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyO1xuICAgIC8qKlxuICAgICAqIEFsbWFjZW5hIGVsIG9iamVjdG8gd2luZG93IGRlbCBuYXZlZ2Fkb3IuXG4gICAgICovXG4gICAgcHJpdmF0ZSB3aW5kb3c/OiBXaW5kb3c7XG5cbiAgICBwcml2YXRlIHJlbmRlcmVyRmFjdG9yeTogUmVuZGVyZXJGYWN0b3J5MiA9IGluamVjdChSZW5kZXJlckZhY3RvcnkyKTtcbiAgICBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCB8IG51bGwgPSBudWxsO1xuICAgIC8qKlxuICAgICAqIFNlcnZpY2lvIGRlIHJ1dGVvIGRlIGFuZ3VsYXIuXG4gICAgICovXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICAgIC8qKlxuICAgICAqIENvbmZpZ3VyYWNpw7NuIGRlIEdvb2dsZSBUYWcgTWFuYWdlci5cbiAgICAgKi9cbiAgICBwcml2YXRlIGNvbmZpZzogR29vZ2xlVGFnTWFuYWdlckNvbmZpZyA9IHsgaWQ6IG51bGwgfVxuICAgIHByaXZhdGUgcGxhdGZvcm1JZDogYW55ID0gaW5qZWN0KFBMQVRGT1JNX0lEKVxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyID0gdGhpcy5yZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIobnVsbCwgbnVsbCk7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICB0aGlzLndpbmRvdyA9IHdpbmRvd1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogT2J0aWVuZSBlbCBkYXRhTGF5ZXIgZGVsIG9iamVjdG8gd2luZG93XG4gICAgICogQHJldHVybnMgXG4gICAgICovXG4gICAgcHVibGljIGdldERhdGFMYXllcigpOiBhbnlbXSB7XG4gICAgICAgIGNvbnN0IHdpbmRvdyA9IHRoaXMud2luZG93O1xuICAgICAgICAvKiBpZih3aW5kb3cpXG4gICAgICAgIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdO1xuICAgICAgICByZXR1cm4gd2luZG93LmRhdGFMYXllcjsgKi9cbiAgICAgICAgcmV0dXJuIFtdXG4gICAgfVxuICAgIC8qKlxuICAgICAqIEFncmVnYSBkYXRvcyBhbCBkYXRhTGF5ZXIuXG4gICAgICogQHBhcmFtIG9iaiBcbiAgICAgKi9cbiAgICBwcml2YXRlIHB1c2hPbkRhdGFMYXllcihvYmo6IG9iamVjdCk6IHZvaWQge1xuICAgICAgICBjb25zdCBkYXRhTGF5ZXIgPSB0aGlzLmdldERhdGFMYXllcigpO1xuICAgICAgICBkYXRhTGF5ZXIucHVzaChvYmopO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBZ3JlZ2EgZWwgc2NyaXB0IGRlIEdUTSBwYXJhIHF1ZSBlbXBpZWNlIGEgY2FwdHVyYXIgZXZlbnRvcy5cbiAgICAgKiBAcmV0dXJucyBcbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkR3RtVG9Eb20oKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShcbiAgICAgICAgICAgIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0xvYWRlZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSh0aGlzLmlzTG9hZGVkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy9jb25zdCBkb2MgPSB0aGlzLmJyb3dzZXJHbG9iYWxzLmRvY3VtZW50UmVmKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5wdXNoT25EYXRhTGF5ZXIoeyAnZ3RtLnN0YXJ0JzogbmV3IERhdGUoKS5nZXRUaW1lKCksIGV2ZW50OiAnZ3RtLmpzJyB9KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGd0bVNjcmlwdCA9IHRoaXMuZG9jdW1lbnQ/LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpIC8vZG9jLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICAgICAgICAgIGlmKGd0bVNjcmlwdCl7XG4gICAgICAgICAgICAgICAgICAgIGd0bVNjcmlwdC5pZCA9ICdHVE1zY3JpcHQnO1xuICAgICAgICAgICAgICAgICAgICBndG1TY3JpcHQuYXN5bmMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBndG1TY3JpcHQuc3JjID0gdGhpcy5hcHBseUd0bVF1ZXJ5UGFyYW1zKHRoaXMuY29uZmlnW1wiZ3RtX3Jlc291cmNlX3BhdGhcIl0gPyB0aGlzLmNvbmZpZ1tcImd0bV9yZXNvdXJjZV9wYXRoXCJdIDogJ2h0dHBzOi8vd3d3Lmdvb2dsZXRhZ21hbmFnZXIuY29tL2d0bS5qcycpO1xuICAgICAgICAgICAgICAgICAgICBndG1TY3JpcHQuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHRoaXMuaXNMb2FkZWQgPSB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGd0bVNjcmlwdC5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kb2N1bWVudD8uaGVhZC5pbnNlcnRCZWZvcmUoZ3RtU2NyaXB0LCB0aGlzLmRvY3VtZW50LmhlYWQuZmlyc3RDaGlsZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXBwbHlHdG1RdWVyeVBhcmFtcyh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmICh1cmwuaW5kZXhPZignPycpID09PSAtMSkge1xuICAgICAgICAgICAgdXJsICs9ICc/JztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKHVybCArIE9iamVjdC5rZXlzKHRoaXMuY29uZmlnKS5maWx0ZXIoKGspID0+IHRoaXMuY29uZmlnW2tdKS5tYXAoKGspID0+IGAke2t9PSR7dGhpcy5jb25maWdba11cbiAgICAgICAgICAgIH1gKS5qb2luKCcmJykpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJbmljaWFsaXphIGVsIFNlcnZpY2lvIGRlIGFuYWx5dGljcyBjb24gc3VzIGNvbmZpZ3VyYWNpb25lcy5cbiAgICAgKiBAcGFyYW0gY29uZmlnIENvbmZpZ3VyYWNpb25lcyBkZSBHb29nbGUgVGFnIE1hbmFnZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgaW5pdGlhbGl6ZShjb25maWc6IEdvb2dsZVRhZ01hbmFnZXJDb25maWcpIHtcbiAgICAgICAgdGhpcy5jb25maWcgPSBjb25maWcgfHwgdGhpcy5jb25maWc7XG4gICAgICAgIHRoaXMuYWRkR3RtVG9Eb20oKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLmV2ZW50cy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBndG1UYWcgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudDogJ3BhZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZU5hbWU6IGl0ZW0udXJsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHVzaFRhZyhndG1UYWcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIHB1YmxpYyBwdXNoVGFnKGl0ZW06IG9iamVjdCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzTG9hZGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRHdG1Ub0RvbSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnB1c2hPbkRhdGFMYXllcihpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9KS5jYXRjaCgoKSA9PiByZWplY3QoKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucHVzaE9uRGF0YUxheWVyKGl0ZW0pO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFamVjdXRhIGVsIGV2ZW50byBwYXNhZG8gcG9yIHBhcmFtZXRyby4gXG4gICAgICogQHBhcmFtIGV2ZW50X25hbWUgTm9tYnJlIGRlbCBldmVudG8uXG4gICAgICogQHBhcmFtIGRhdGEgRGF0YSBleHRyYSBwYXJhIGFncmVnYXIgYWwgZXZlbnRvLlxuICAgICAqIEByZXR1cm5zIFxuICAgICAqL1xuICAgIGNhbGxFdmVudChldmVudF9uYW1lOiBBbmFseXRpY0V2ZW50S2V5LCBkYXRhID0ge30pIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzTG9hZGVkKSByZXR1cm47XG4gICAgICAgIGxldCBldmVudCA9IHRoaXMudHJhbnNsYXRlRXZlbnROYW1lKGV2ZW50X25hbWUpO1xuICAgICAgICBldmVudCAmJiB0aGlzLnB1c2hUYWcoeyBlY29tbWVyY2U6IG51bGwgfSlcbiAgICAgICAgZXZlbnQgJiYgdGhpcy5wdXNoVGFnKHsgJ2V2ZW50JzogdGhpcy50cmFuc2xhdGVFdmVudE5hbWUoZXZlbnRfbmFtZSksIGVjb21tZXJjZTogdGhpcy5ldmFsRXZlbnQoZXZlbnRfbmFtZSwgZGF0YSkgfSlcbiAgICB9XG4gICAgLyoqXG4gICAgICogVHJhZHVjZSBlbCBldmVudG8gcmVjaWJpZG8geSBkZXZ1ZWx2ZSBlbCBub21icmUgZGUgbGEgZnVuY2nDs24gcXVlIGxvIHZhIGEgdHJhdGFyLlxuICAgICAqIEBwYXJhbSBldmVudF9uYW1lIFxuICAgICAqIEByZXR1cm5zIFxuICAgICAqL1xuICAgIHRyYW5zbGF0ZUV2ZW50TmFtZShldmVudF9uYW1lOiBBbmFseXRpY0V2ZW50S2V5KSB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnRfbmFtZSkge1xuICAgICAgICAgICAgY2FzZSAndmlld19pdGVtJzogcmV0dXJuICd2aWV3X2l0ZW0nO1xuICAgICAgICAgICAgY2FzZSAndmlld19pdGVtX2xpc3QnOiByZXR1cm4gJ3ZpZXdfaXRlbV9saXN0JztcbiAgICAgICAgICAgIGNhc2UgJ2NoZWNrb3V0X2luaXQnOiByZXR1cm4gJ2JlZ2luX2NoZWNrb3V0JztcbiAgICAgICAgICAgIGNhc2UgJ3NoaXBwaW5nX2luZm8nOiByZXR1cm4gJ2FkZF9zaGlwcGluZ19pbmZvJztcbiAgICAgICAgICAgIGNhc2UgJ2FkZF9wYXltZW50X2luZm8nOiByZXR1cm4gJ2FkZF9wYXltZW50X2luZm8nO1xuICAgICAgICAgICAgY2FzZSAncHVyY2hhc2UnOiByZXR1cm4gJ3B1cmNoYXNlJztcbiAgICAgICAgICAgIGNhc2UgJ2FkZF90b19jYXJ0JzogcmV0dXJuICdhZGRfdG9fY2FydCc7XG4gICAgICAgICAgICBjYXNlICdyZW1vdmVfZnJvbV9jYXJ0JzogcmV0dXJuICdyZW1vdmVfZnJvbV9jYXJ0JztcbiAgICAgICAgICAgIGNhc2UgJ3NpZ25fdXAnOiByZXR1cm4gJ3NpZ25fdXAnO1xuICAgICAgICAgICAgY2FzZSAnc2VsZWN0X3Byb21vdGlvbic6IHJldHVybiAnc2VsZWN0X3Byb21vdGlvbic7XG4gICAgICAgICAgICBjYXNlICdzZWxlY3RfaXRlbSc6IHJldHVybiAnc2VsZWN0X2l0ZW0nO1xuICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogRXZhbHVhIGVsIGV2ZW50byB5IGRldnVlbHZlIGxvcyBkYXRvcyBkZSBsYXMgZnVuY2lvbmVzIHJlbGFjaW9uYWRhcy5cbiAgICAgKiBAcGFyYW0gZXZlbnRfbmFtZSBOb21icmUgZGVsIGV2ZW50b1xuICAgICAqIEBwYXJhbSBkYXRhIERhdGEgZXh0cmEgcGFyYSBhZ3JlZ2FyIGFsIGV2ZW50b1xuICAgICAqIEByZXR1cm5zIFxuICAgICAqL1xuICAgIGV2YWxFdmVudChldmVudF9uYW1lOiBBbmFseXRpY0V2ZW50S2V5LCBkYXRhOiBhbnkpIHtcbiAgICAgICAgc3dpdGNoIChldmVudF9uYW1lKSB7XG4gICAgICAgICAgICBjYXNlICd2aWV3X2l0ZW0nOiByZXR1cm4gdGhpcy50b1ZpZXdJdGVtKGRhdGEpO1xuICAgICAgICAgICAgY2FzZSAndmlld19pdGVtX2xpc3QnOiByZXR1cm4gdGhpcy50b1ZpZXdJdGVtTGlzdChkYXRhKTtcbiAgICAgICAgICAgIGNhc2UgJ2NoZWNrb3V0X2luaXQnOiByZXR1cm4gdGhpcy50b0NoZWNrb3V0SW5pdChkYXRhKTtcbiAgICAgICAgICAgIGNhc2UgJ3NoaXBwaW5nX2luZm8nOiByZXR1cm4gdGhpcy50b1NoaXBwaW5nSW5mbyhkYXRhKTtcbiAgICAgICAgICAgIGNhc2UgJ2FkZF9wYXltZW50X2luZm8nOiByZXR1cm4gdGhpcy50b1BheW1lbnRJbmZvKGRhdGEpO1xuICAgICAgICAgICAgY2FzZSAncHVyY2hhc2UnOiByZXR1cm4gdGhpcy50b1B1cmNoYXNlKGRhdGEpO1xuICAgICAgICAgICAgY2FzZSAnYWRkX3RvX2NhcnQnOiByZXR1cm4gdGhpcy50b0FkZFRvQ2FydChkYXRhKTtcbiAgICAgICAgICAgIGNhc2UgJ3JlbW92ZV9mcm9tX2NhcnQnOiByZXR1cm4gdGhpcy50b1JlbW92ZVRvQ2FydChkYXRhKTtcbiAgICAgICAgICAgIGNhc2UgJ3NpZ25fdXAnOiByZXR1cm4gdGhpcy50b1NpZ25VcChkYXRhKTtcbiAgICAgICAgICAgIGNhc2UgJ3NlbGVjdF9wcm9tb3Rpb24nOiByZXR1cm4gdGhpcy50b1NlbGVjdFByb21vdGlvbihkYXRhKTtcbiAgICAgICAgICAgIGNhc2UgJ3NlbGVjdF9pdGVtJzogcmV0dXJuIHRoaXMudG9TZWxlY3RJdGVtKGRhdGEpO1xuICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuIGRhdGE7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogRXZlbnRvIHF1ZSBzZSBkaXNwYXJhIGN1YW5kbyBzZSBxdWllcmUgY29tcHJhciB1biBwcm9kdWN0by5cbiAgICAgKiBAcGFyYW0gZGF0YSBcbiAgICAgKiBAcmV0dXJucyBcbiAgICAgKi9cbiAgICBwcml2YXRlIHRvUHVyY2hhc2UoZGF0YTogYW55KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb3Vwb246IHRoaXMudG9DYXJ0RGlzY291bnQoZGF0YSksXG4gICAgICAgICAgICBjdXJyZW5jeTogZGF0YS5jdXJyZW5jeSxcbiAgICAgICAgICAgIHNoaXBwaW5nOiBkYXRhLnRvdGFscy5zaGlwcGluZyxcbiAgICAgICAgICAgIHRheDogZGF0YS50b3RhbHMudGF4ZXMsXG4gICAgICAgICAgICB2YWx1ZTogZGF0YS50b3RhbHMudG90YWwsXG4gICAgICAgICAgICB0cmFuc2FjdGlvbl9pZDogZGF0YS5udW1iZXIsXG4gICAgICAgICAgICBjb3VudEl0ZW1zOiBkYXRhLml0ZW1zPy5sZW5ndGggfHwgMCxcbiAgICAgICAgICAgIGl0ZW1zOiBkYXRhLml0ZW1zLm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGl0ZW1faWQ6IGl0ZW0ucHJvZHVjdC5pZCxcbiAgICAgICAgICAgICAgICBpdGVtX25hbWU6IGl0ZW0ucHJvZHVjdC5uYW1lLFxuICAgICAgICAgICAgICAgIC8vY291cG9uOicnLFxuICAgICAgICAgICAgICAgIGRpc2NvdW50OiBpdGVtLnByb2R1Y3QuZGlzY291bnQgfHwgMCxcbiAgICAgICAgICAgICAgICAvL2luZGV4OicnLFxuICAgICAgICAgICAgICAgIGl0ZW1fYnJhbmQ6IGl0ZW0ucHJvZHVjdC5hdHRyaWJ1dGVzPy5sZW5ndGggPyBpdGVtLnByb2R1Y3QuYXR0cmlidXRlc1swXS5uYW1lIDogJycsXG4gICAgICAgICAgICAgICAgaXRlbV9jYXRlZ29yeTogaXRlbS5wcm9kdWN0LmNhdGVnb3J5LFxuICAgICAgICAgICAgICAgIGl0ZW1fdmFyaWFudDogaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdPy5jb2RlIHx8ICcnLFxuICAgICAgICAgICAgICAgIC8vbG9jYXRpb25faWQ6ICcnLFxuICAgICAgICAgICAgICAgIHByaWNlOiBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0/LnNhbGVwcmljZSB8fCBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0/LnByaWNlLFxuICAgICAgICAgICAgICAgIHF1YW50aXR5OiBpdGVtLnF1YW50aXR5IHx8IDEsXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGluaWNpYWxpemEgZW4gY2hlY2tvdXQuXG4gICAgICogQHBhcmFtIGRhdGEgXG4gICAgICogQHJldHVybnMgXG4gICAgICovXG4gICAgcHJpdmF0ZSB0b0NoZWNrb3V0SW5pdChkYXRhOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvdXBvbjogdGhpcy50b0NhcnREaXNjb3VudChkYXRhKSxcbiAgICAgICAgICAgIGN1cnJlbmN5OiBkYXRhLmN1cnJlbmN5IHx8IFwiVVNEXCIsXG4gICAgICAgICAgICBpdGVtczogZGF0YS5pdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpdGVtX2lkOiBpdGVtLnByb2R1Y3QuaWQsXG4gICAgICAgICAgICAgICAgaXRlbV9uYW1lOiBpdGVtLnByb2R1Y3QubmFtZSxcbiAgICAgICAgICAgICAgICAvL2NvdXBvbjonJyxcbiAgICAgICAgICAgICAgICBkaXNjb3VudDogaXRlbS5wcm9kdWN0LmRpc2NvdW50IHx8IDAsXG4gICAgICAgICAgICAgICAgLy9pbmRleDonJyxcbiAgICAgICAgICAgICAgICBpdGVtX2JyYW5kOiBpdGVtLnByb2R1Y3QuYXR0cmlidXRlcz8ubGVuZ3RoID8gaXRlbS5wcm9kdWN0LmF0dHJpYnV0ZXNbMF0ubmFtZSA6ICcnLFxuICAgICAgICAgICAgICAgIGl0ZW1fY2F0ZWdvcnk6IGl0ZW0ucHJvZHVjdC5jYXRlZ29yeSxcbiAgICAgICAgICAgICAgICAvL2l0ZW1fbGlzdF9pZDogJycsXG4gICAgICAgICAgICAgICAgLy9pdGVtX2xpc3RfbmFtZTogJycsXG4gICAgICAgICAgICAgICAgaXRlbV92YXJpYW50OiBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0/LmNvZGUgfHwgJycsXG4gICAgICAgICAgICAgICAgLy9sb2NhdGlvbl9pZDogJycsXG4gICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8uc2FsZXByaWNlIHx8IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8ucHJpY2UsXG4gICAgICAgICAgICAgICAgcXVhbnRpdHk6IGl0ZW0ucXVhbnRpdHkgfHwgMSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIHZhbHVlOiBkYXRhLnRvdGFscz8udG90YWwgfHwgMCxcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY29uIGxvcyBkZXNjdWVudG9zIGVuIGVsIGNhcnJpdG8uXG4gICAgICogQHBhcmFtIGRhdGEgXG4gICAgICogQHJldHVybnMgXG4gICAgICovXG4gICAgcHJpdmF0ZSB0b0NhcnREaXNjb3VudChkYXRhOiBhbnkpIHtcbiAgICAgICAgbGV0IHN0ckRpc2NvdW50ID0gJydcbiAgICAgICAgc3RyRGlzY291bnQgPSBkYXRhLmNhcnREaXNjb3VudHMubWFwKChpdGVtRGlzY291bnQ6IGFueSkgPT4gaXRlbURpc2NvdW50Py50eXBlKS5qb2luKClcbiAgICAgICAgcmV0dXJuIHN0ckRpc2NvdW50ID09ICcnID8gJ25vdC1kaXNjb3VudCcgOiBzdHJEaXNjb3VudFxuICAgIH1cbiAgICAvKipcbiAgICAgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGFncmVnYSB1biBwcm9kdWN0byBhbCBjYXJyaXRvLiBcbiAgICAgKiBAcGFyYW0gZGF0YSBcbiAgICAgKiBAcmV0dXJucyBcbiAgICAgKi9cbiAgICBwcml2YXRlIHRvQWRkVG9DYXJ0KGRhdGE6IGFueSkge1xuICAgICAgICBsZXQgbGFzdFByb2R1Y3QgPSBkYXRhLml0ZW1zPy5sZW5ndGggJiYgZGF0YS5pdGVtc1tkYXRhLml0ZW1zLmxlbmd0aCAtIDFdXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjdXJyZW5jeTogZGF0YS5jdXJyZW5jeSB8fCBcIlVTRFwiLFxuICAgICAgICAgICAgaXRlbXM6IFt0aGlzLnRvSXRlbSh7IHF1YW50aXR5OiBsYXN0UHJvZHVjdC5xdWFudGl0eSwgLi4ubGFzdFByb2R1Y3QucHJvZHVjdCB9KV0sXG4gICAgICAgICAgICB2YWx1ZTogbGFzdFByb2R1Y3QudG90YWwgfHwgMCxcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBDYW1iaWEgbGEgdmFyaWFibGUgKiplbmFibGVkKiogYSBgZmFsc2VgXG4gICAgICogQHJldHVybnMgXG4gICAgICovXG4gICAgZGlzYWJsZSgpIHsgdGhpcy5lbmFibGVkID0gZmFsc2UgfVxuICAgIC8qKlxuICAgICAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgaW50ZXJhY3R1YSBhIGxhcyB2aXN0YSBkZWwgcHJvZHVjdG8uXG4gICAgICogQHBhcmFtIHByb2R1Y3QgXG4gICAgICogQHJldHVybnMgXG4gICAgICovXG4gICAgcHJpdmF0ZSB0b1ZpZXdJdGVtKHByb2R1Y3Q6IGFueSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY3VycmVuY3k6IHByb2R1Y3QuY3VycmVuY3ksXG4gICAgICAgICAgICB2YWx1ZTogcHJvZHVjdC5wcmljZSxcbiAgICAgICAgICAgIGl0ZW1zOiBbdGhpcy50b0l0ZW0ocHJvZHVjdCldXG5cbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGludGVyYWN0dWEgY29uIGVsIGxpc3RhZG8gZGUgcHJvZHVjdG9zLlxuICAgICAqIEBwYXJhbSBkYXRhIFxuICAgICAqIEByZXR1cm5zIFxuICAgICAqL1xuICAgIHByaXZhdGUgdG9WaWV3SXRlbUxpc3QoZGF0YTogYW55KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpdGVtczogZGF0YS5wcm9kdWN0cy5tYXAoKHByb2R1Y3Q6IGFueSkgPT4gdGhpcy50b0l0ZW0ocHJvZHVjdCkpLFxuICAgICAgICAgICAgaXRlbV9saXN0X25hbWU6IGRhdGEuaXRlbV9saXN0X25hbWUgfHwgJ0NvbGxlY3Rpb24nLFxuICAgICAgICAgICAgaXRlbV9saXN0X2lkOiBkYXRhLml0ZW1fbGlzdF9pZCB8fCAwXG4gICAgICAgIH1cblxuXG4gICAgfVxuICAgIC8qKlxuICAgICAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgcXVpdGEgdW4gaXRlbSBkZWwgY2Fycml0by5cbiAgICAgKiBAcGFyYW0gcHJvZHVjdCBcbiAgICAgKiBAcmV0dXJucyBcbiAgICAgKi9cbiAgICBwcml2YXRlIHRvUmVtb3ZlVG9DYXJ0KHByb2R1Y3Q6IGFueSkge1xuICAgICAgICBsZXQgcHJvZHVjdFBhcmFtID0gcHJvZHVjdC5wcm9kdWN0XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjdXJyZW5jeTogcHJvZHVjdC5jdXJyZW5jeSB8fCBcIlVTRFwiLFxuICAgICAgICAgICAgaXRlbXM6IFt0aGlzLnRvSXRlbSh7IHF1YW50aXR5OiBwcm9kdWN0LnF1YW50aXR5LCAuLi5wcm9kdWN0UGFyYW0gfSldLFxuICAgICAgICAgICAgdmFsdWU6IChwcm9kdWN0UGFyYW0udmFyaWFudHNbMF0/LnNhbGVwcmljZSB8fCBwcm9kdWN0UGFyYW0udmFyaWFudHNbMF0/LnByaWNlKSAqIHByb2R1Y3QucXVhbnRpdHkgfHwgMSxcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdG9JdGVtID0gKHByb2R1Y3Q6IGFueSkgPT4gKHtcbiAgICAgICAgaXRlbV9pZDogcHJvZHVjdC5pZCxcbiAgICAgICAgaXRlbV9uYW1lOiBwcm9kdWN0Lm5hbWUsXG4gICAgICAgIC8vY291cG9uOicnLFxuICAgICAgICBkaXNjb3VudDogcHJvZHVjdC5kaXNjb3VudCB8fCAwLFxuICAgICAgICAvL2luZGV4OicnLFxuICAgICAgICBpdGVtX2JyYW5kOiBwcm9kdWN0LmF0dHJpYnV0ZXM/Lmxlbmd0aCA/IHByb2R1Y3QuYXR0cmlidXRlc1swXS5uYW1lIDogJycsXG4gICAgICAgIGl0ZW1fY2F0ZWdvcnk6IHByb2R1Y3QuY2F0ZWdvcnksXG4gICAgICAgIC8vaXRlbV9saXN0X2lkOiAnJyxcbiAgICAgICAgLy9pdGVtX2xpc3RfbmFtZTogJycsXG4gICAgICAgIGl0ZW1fdmFyaWFudDogcHJvZHVjdC52YXJpYW50c1swXT8uY29kZSB8fCAnJyxcbiAgICAgICAgLy9sb2NhdGlvbl9pZDogJycsXG4gICAgICAgIHByaWNlOiBwcm9kdWN0LnZhcmlhbnRzWzBdPy5zYWxlcHJpY2UgfHwgcHJvZHVjdC52YXJpYW50c1swXT8ucHJpY2UsXG4gICAgICAgIHF1YW50aXR5OiBwcm9kdWN0LnF1YW50aXR5IHx8IDEsXG4gICAgfSlcbiAgICAvKipcbiAgICAgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGNvbnN1bHRhIGxhIGluZm9ybWFjacOzbiBkZSBwYWdvLlxuICAgICAqIEBwYXJhbSBkYXRhIFxuICAgICAqIEByZXR1cm5zIFxuICAgICAqL1xuICAgIHByaXZhdGUgdG9QYXltZW50SW5mbyhkYXRhOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvdXBvbjogdGhpcy50b0NhcnREaXNjb3VudChkYXRhKSxcbiAgICAgICAgICAgIGN1cnJlbmN5OiBkYXRhLmN1cnJlbmN5IHx8IFwiVVNEXCIsXG4gICAgICAgICAgICBwYXltZW50X3R5cGU6IGRhdGEucGF5bWVudHNbMF0/Lm1ldGhvZD8uY29kZSB8fCAnbm90LXBheW1lbnRzJyxcbiAgICAgICAgICAgIHZhbHVlOiBkYXRhLnRvdGFscz8udG90YWwgfHwgMCxcbiAgICAgICAgICAgIGl0ZW1zOiBkYXRhLml0ZW1zLm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGl0ZW1faWQ6IGl0ZW0ucHJvZHVjdC5pZCxcbiAgICAgICAgICAgICAgICBpdGVtX25hbWU6IGl0ZW0ucHJvZHVjdC5uYW1lLFxuICAgICAgICAgICAgICAgIC8vY291cG9uOicnLFxuICAgICAgICAgICAgICAgIGRpc2NvdW50OiBpdGVtLnByb2R1Y3QuZGlzY291bnQgfHwgMCxcbiAgICAgICAgICAgICAgICAvL2luZGV4OicnLFxuICAgICAgICAgICAgICAgIGl0ZW1fYnJhbmQ6IGl0ZW0ucHJvZHVjdC5hdHRyaWJ1dGVzPy5sZW5ndGggPyBpdGVtLnByb2R1Y3QuYXR0cmlidXRlc1swXS5uYW1lIDogJycsXG4gICAgICAgICAgICAgICAgaXRlbV9jYXRlZ29yeTogaXRlbS5wcm9kdWN0LmNhdGVnb3J5LFxuICAgICAgICAgICAgICAgIC8vaXRlbV9saXN0X2lkOiAnJyxcbiAgICAgICAgICAgICAgICAvL2l0ZW1fbGlzdF9uYW1lOiAnJyxcbiAgICAgICAgICAgICAgICBpdGVtX3ZhcmlhbnQ6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8uY29kZSB8fCAnJyxcbiAgICAgICAgICAgICAgICAvL2xvY2F0aW9uX2lkOiAnJyxcbiAgICAgICAgICAgICAgICBwcmljZTogaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdPy5zYWxlcHJpY2UgfHwgaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdPy5wcmljZSxcbiAgICAgICAgICAgICAgICBxdWFudGl0eTogaXRlbS5xdWFudGl0eSB8fCAxLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgaW50ZXJhY3R1YSBjb24gbG9zIG3DqXRvZG9zIGRlIGVudsOtby5cbiAgICAgKiBAcGFyYW0gZGF0YSBcbiAgICAgKiBAcmV0dXJucyBcbiAgICAgKi9cbiAgICBwcml2YXRlIHRvU2hpcHBpbmdJbmZvKGRhdGE6IGFueSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY291cG9uOiB0aGlzLnRvQ2FydERpc2NvdW50KGRhdGEpLFxuICAgICAgICAgICAgY3VycmVuY3k6IGRhdGEuY3VycmVuY3kgfHwgXCJVU0RcIixcbiAgICAgICAgICAgIHNoaXBwaW5nX3RpZXI6IGRhdGEuc2hpcG1lbnRzWzBdPy5tZXRob2Q/LmNvZGUgfHwgJ25vdC1zaGlwcGluZycsXG4gICAgICAgICAgICB2YWx1ZTogZGF0YS50b3RhbHM/LnRvdGFsIHx8IDAsXG4gICAgICAgICAgICBpdGVtczogZGF0YS5pdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpdGVtX2lkOiBpdGVtLnByb2R1Y3QuaWQsXG4gICAgICAgICAgICAgICAgaXRlbV9uYW1lOiBpdGVtLnByb2R1Y3QubmFtZSxcbiAgICAgICAgICAgICAgICAvL2NvdXBvbjonJyxcbiAgICAgICAgICAgICAgICBkaXNjb3VudDogaXRlbS5wcm9kdWN0LmRpc2NvdW50IHx8IDAsXG4gICAgICAgICAgICAgICAgLy9pbmRleDonJyxcbiAgICAgICAgICAgICAgICBpdGVtX2JyYW5kOiBpdGVtLnByb2R1Y3QuYXR0cmlidXRlcz8ubGVuZ3RoID8gaXRlbS5wcm9kdWN0LmF0dHJpYnV0ZXNbMF0ubmFtZSA6ICcnLFxuICAgICAgICAgICAgICAgIGl0ZW1fY2F0ZWdvcnk6IGl0ZW0ucHJvZHVjdC5jYXRlZ29yeSxcbiAgICAgICAgICAgICAgICAvL2l0ZW1fbGlzdF9pZDogJycsXG4gICAgICAgICAgICAgICAgLy9pdGVtX2xpc3RfbmFtZTogJycsXG4gICAgICAgICAgICAgICAgaXRlbV92YXJpYW50OiBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0/LmNvZGUgfHwgJycsXG4gICAgICAgICAgICAgICAgLy9sb2NhdGlvbl9pZDogJycsXG4gICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8uc2FsZXByaWNlIHx8IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8ucHJpY2UsXG4gICAgICAgICAgICAgICAgcXVhbnRpdHk6IGl0ZW0ucXVhbnRpdHkgfHwgMSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdG9TaWduVXAoZGF0YTogYW55KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5kYXRhXG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogRXZlbnRvIHF1ZSBzZSBkaXNwYXJhIGN1YW5kbyBzZSBpbnRlcmFjdHVhIGNvbiB1bmEgcHJvbW9jacOzbi5cbiAgICAgKiBAcGFyYW0gZGF0YSBcbiAgICAgKiBAcmV0dXJucyBcbiAgICAgKi9cbiAgICBwcml2YXRlIHRvU2VsZWN0UHJvbW90aW9uKGRhdGE6IGFueSkge1xuICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByb21vdGlvbl9pZDogZGF0YS5pZCB8fCAnJyxcbiAgICAgICAgICAgIHByb21vdGlvbl9uYW1lOiBkYXRhLmNvZGUgfHwgZGF0YS5uYW1lLFxuICAgICAgICAgICAgcHJvbW90aW9uX3RpdGxlOiBkYXRhLnN1YnRpdGxlLFxuICAgICAgICAgICAgbG9jYXRpb25faWQ6IGRhdGEucHJpb3JpdHkgfHwgMFxuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEV2ZW50byBxdWUgc2UgZGlzYXByYSBjdWFuZG8gc2UgaW50ZXJhY3R1YSBhbCBzZWxlY2Npb25hciB1biBpdGVtLlxuICAgICAqIEBwYXJhbSBkYXRhIFxuICAgICAqIEByZXR1cm5zIFxuICAgICAqL1xuICAgIHByaXZhdGUgdG9TZWxlY3RJdGVtKGRhdGE6IGFueSkge1xuICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiB0aGlzLnRvSXRlbShkYXRhKVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -0,0 +1,7 @@
1
+ export * from './facebook-pixel.service';
2
+ export * from './analytics.service';
3
+ export * from './doppler.service';
4
+ export * from './metricool-pixel.service';
5
+ export * from './google-analytics.service';
6
+ export * from './gtm.service';
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtc2VydmljZXMvYW5hbHl0aWNzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZmFjZWJvb2stcGl4ZWwuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2FuYWx5dGljcy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZG9wcGxlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbWV0cmljb29sLXBpeGVsLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9nb29nbGUtYW5hbHl0aWNzLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9ndG0uc2VydmljZSc7Il19
@@ -0,0 +1,55 @@
1
+ import { DOCUMENT, isPlatformBrowser } from '@angular/common';
2
+ import { inject, Injectable, PLATFORM_ID, RendererFactory2 } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Servicio encargado de manejar el analytics de Metricool Pixel
6
+ */
7
+ export class MetricoolPixelService {
8
+ /**
9
+ * Indica si se esta cargando el Servicio.
10
+ */
11
+ isLoaded = false;
12
+ rendererFactory = inject(RendererFactory2);
13
+ document = inject(DOCUMENT);
14
+ platformId = inject(PLATFORM_ID);
15
+ /**
16
+ * Se encarga de crear el elemento HTML con las configuraciones para
17
+ * que se pueda ejecutar el servicio.
18
+ */
19
+ renderer;
20
+ constructor() {
21
+ if (isPlatformBrowser(this.platformId)) {
22
+ this.document = document;
23
+ }
24
+ this.renderer = this.rendererFactory.createRenderer(null, null);
25
+ }
26
+ /**
27
+ * Inicializa el Servicio de analytics con sus configuraciones.
28
+ * @param pixel_hash hash provisto por Metricool Pixel.
29
+ */
30
+ initialize = (pixel_hash) => {
31
+ let new_analityc_script = this.renderer.createElement('script');
32
+ new_analityc_script.type = 'text/javascript';
33
+ new_analityc_script.text = `
34
+ function loadScript(a) {
35
+ var b = document.getElementsByTagName("head")[0], c = document.createElement("script");
36
+ c.type = "text/javascript",
37
+ c.src = "https://tracker.metricool.com/resources/be.js",
38
+ c.onreadystatechange = a,
39
+ c.onload = a, b.appendChild(c)
40
+ } loadScript(function () {
41
+ beTracker.t({ hash: "${pixel_hash}" })
42
+ });
43
+ `;
44
+ this.renderer.appendChild(this.document?.body, new_analityc_script);
45
+ };
46
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MetricoolPixelService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
47
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MetricoolPixelService, providedIn: 'root' });
48
+ }
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MetricoolPixelService, decorators: [{
50
+ type: Injectable,
51
+ args: [{
52
+ providedIn: 'root'
53
+ }]
54
+ }], ctorParameters: () => [] });
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljb29sLXBpeGVsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtc2VydmljZXMvYW5hbHl0aWNzL21ldHJpY29vbC1waXhlbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQWEsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBQzdGOztHQUVHO0FBSUgsTUFBTSxPQUFPLHFCQUFxQjtJQUM5Qjs7T0FFRztJQUNLLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFakIsZUFBZSxHQUFxQixNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtJQUM1RCxRQUFRLEdBQW9CLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUM1QyxVQUFVLEdBQVEsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQzdDOzs7T0FHRztJQUNLLFFBQVEsQ0FBWTtJQUU1QjtRQUNJLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUE7UUFDNUIsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFDRDs7O09BR0c7SUFDSCxVQUFVLEdBQUcsQ0FBQyxVQUFlLEVBQUUsRUFBRTtRQUM3QixJQUFJLG1CQUFtQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hFLG1CQUFtQixDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQztRQUM3QyxtQkFBbUIsQ0FBQyxJQUFJLEdBQUc7Ozs7Ozs7O21DQVFBLFVBQVU7O1NBRXBDLENBQUM7UUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3hFLENBQUMsQ0FBQTt1R0F4Q1EscUJBQXFCOzJHQUFyQixxQkFBcUIsY0FGbEIsTUFBTTs7MkZBRVQscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5ULCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIFBMQVRGT1JNX0lELCBSZW5kZXJlcjIsIFJlbmRlcmVyRmFjdG9yeTIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbi8qKlxuICogU2VydmljaW8gZW5jYXJnYWRvIGRlIG1hbmVqYXIgZWwgYW5hbHl0aWNzIGRlIE1ldHJpY29vbCBQaXhlbFxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE1ldHJpY29vbFBpeGVsU2VydmljZSB7XG4gICAgLyoqXG4gICAgICogSW5kaWNhIHNpIHNlIGVzdGEgY2FyZ2FuZG8gZWwgU2VydmljaW8uXG4gICAgICovXG4gICAgcHJpdmF0ZSBpc0xvYWRlZCA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSByZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTIgPSBpbmplY3QoUmVuZGVyZXJGYWN0b3J5MilcbiAgICBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCB8IG51bGwgPSBpbmplY3QoRE9DVU1FTlQpXG4gICAgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnkgPSBpbmplY3QoUExBVEZPUk1fSUQpXG4gICAgLyoqXG4gICAgICogU2UgZW5jYXJnYSBkZSBjcmVhciBlbCBlbGVtZW50byBIVE1MIGNvbiBsYXMgY29uZmlndXJhY2lvbmVzIHBhcmEgXG4gICAgICogcXVlIHNlIHB1ZWRhIGVqZWN1dGFyIGVsIHNlcnZpY2lvLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMjtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudCA9IGRvY3VtZW50XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZW5kZXJlciA9IHRoaXMucmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKG51bGwsIG51bGwpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJbmljaWFsaXphIGVsIFNlcnZpY2lvIGRlIGFuYWx5dGljcyBjb24gc3VzIGNvbmZpZ3VyYWNpb25lcy5cbiAgICAgKiBAcGFyYW0gcGl4ZWxfaGFzaCBoYXNoIHByb3Zpc3RvIHBvciBNZXRyaWNvb2wgUGl4ZWwuXG4gICAgICovXG4gICAgaW5pdGlhbGl6ZSA9IChwaXhlbF9oYXNoOiBhbnkpID0+IHtcbiAgICAgICAgbGV0IG5ld19hbmFsaXR5Y19zY3JpcHQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICBuZXdfYW5hbGl0eWNfc2NyaXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JztcbiAgICAgICAgbmV3X2FuYWxpdHljX3NjcmlwdC50ZXh0ID0gYFxuICAgICAgICBmdW5jdGlvbiBsb2FkU2NyaXB0KGEpIHtcbiAgICAgICAgICAgIHZhciBiID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdLCBjID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcbiAgICAgICAgICAgIGMudHlwZSA9IFwidGV4dC9qYXZhc2NyaXB0XCIsXG4gICAgICAgICAgICAgICAgYy5zcmMgPSBcImh0dHBzOi8vdHJhY2tlci5tZXRyaWNvb2wuY29tL3Jlc291cmNlcy9iZS5qc1wiLFxuICAgICAgICAgICAgICAgIGMub25yZWFkeXN0YXRlY2hhbmdlID0gYSxcbiAgICAgICAgICAgICAgICBjLm9ubG9hZCA9IGEsIGIuYXBwZW5kQ2hpbGQoYylcbiAgICAgICAgfSBsb2FkU2NyaXB0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGJlVHJhY2tlci50KHsgaGFzaDogXCIke3BpeGVsX2hhc2h9XCIgfSlcbiAgICAgICAgfSk7XG4gICAgICAgIGA7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudD8uYm9keSwgbmV3X2FuYWxpdHljX3NjcmlwdCk7XG4gICAgfVxufVxuIl19