@senior-agronegocio/angular-components 0.0.49

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 (391) hide show
  1. package/agro-angular-components.module.d.ts +9 -0
  2. package/bundles/senior-agronegocio-angular-components.umd.js +5855 -0
  3. package/bundles/senior-agronegocio-angular-components.umd.js.map +1 -0
  4. package/bundles/senior-agronegocio-angular-components.umd.min.js +17 -0
  5. package/bundles/senior-agronegocio-angular-components.umd.min.js.map +1 -0
  6. package/common/agro-array-utils.class.d.ts +35 -0
  7. package/common/agro-cookie-utils.class.d.ts +8 -0
  8. package/common/agro-date-utils.class.d.ts +88 -0
  9. package/common/agro-name-utils.class.d.ts +22 -0
  10. package/common/agro-number-utils.class.d.ts +71 -0
  11. package/common/agro-object-utils.class.d.ts +161 -0
  12. package/common/agro-platform-utils.class.d.ts +38 -0
  13. package/common/agro-regex.constant.d.ts +142 -0
  14. package/common/agro-string-utils.class.d.ts +194 -0
  15. package/common/colors.class.d.ts +76 -0
  16. package/common/index.d.ts +10 -0
  17. package/components/event-control-board/common/control-status.d.ts +5 -0
  18. package/components/event-control-board/common/documentsToIssue.d.ts +4 -0
  19. package/components/event-control-board/common/event-control-constants.d.ts +15 -0
  20. package/components/event-control-board/common/event-operation.d.ts +11 -0
  21. package/components/event-control-board/common/event-origin.d.ts +7 -0
  22. package/components/event-control-board/common/event-status.d.ts +7 -0
  23. package/components/event-control-board/common/invoice-status.d.ts +12 -0
  24. package/components/event-control-board/common/invoice-type.d.ts +5 -0
  25. package/components/event-control-board/common/lookup-error-message.constants.d.ts +3 -0
  26. package/components/event-control-board/common/operation.d.ts +5 -0
  27. package/components/event-control-board/common/operationType.d.ts +5 -0
  28. package/components/event-control-board/common/status-entity.d.ts +4 -0
  29. package/components/event-control-board/common/ticket-status.d.ts +7 -0
  30. package/components/event-control-board/event-control-board.component.d.ts +97 -0
  31. package/components/event-control-board/event-control-board.module.d.ts +2 -0
  32. package/components/event-control-board/index.d.ts +20 -0
  33. package/components/event-control-board/service/e001pes/e001pes-dto.d.ts +12 -0
  34. package/components/event-control-board/service/e001pes/e001pes.d.ts +15 -0
  35. package/components/event-control-board/service/e001pes/e001pes.module.d.ts +2 -0
  36. package/components/event-control-board/service/e001pes/e001pes.service.d.ts +13 -0
  37. package/components/event-control-board/service/e001tns/e001tns-dto.d.ts +14 -0
  38. package/components/event-control-board/service/e001tns/e001tns.d.ts +19 -0
  39. package/components/event-control-board/service/e001tns/e001tns.module.d.ts +2 -0
  40. package/components/event-control-board/service/e001tns/e001tns.service.d.ts +11 -0
  41. package/components/event-control-board/service/e012fam/e012fam-dto.d.ts +11 -0
  42. package/components/event-control-board/service/e012fam/e012fam.d.ts +14 -0
  43. package/components/event-control-board/service/e012fam/e012fam.service.d.ts +11 -0
  44. package/components/event-control-board/service/e070emp/e070emp-dto.d.ts +10 -0
  45. package/components/event-control-board/service/e070emp/e070emp.d.ts +13 -0
  46. package/components/event-control-board/service/e070emp/e070emp.module.d.ts +2 -0
  47. package/components/event-control-board/service/e070emp/e070emp.service.d.ts +12 -0
  48. package/components/event-control-board/service/e070fil/e070fil-dto.d.ts +14 -0
  49. package/components/event-control-board/service/e070fil/e070fil.d.ts +17 -0
  50. package/components/event-control-board/service/e070fil/e070fil.module.d.ts +2 -0
  51. package/components/event-control-board/service/e070fil/e070fil.service.d.ts +12 -0
  52. package/components/event-control-board/service/e075der/e075der-dto.d.ts +15 -0
  53. package/components/event-control-board/service/e075der/e075der.d.ts +18 -0
  54. package/components/event-control-board/service/e075der/e075der.module.d.ts +2 -0
  55. package/components/event-control-board/service/e075der/e075der.service.d.ts +12 -0
  56. package/components/event-control-board/service/e113saf/e113saf-dto.d.ts +11 -0
  57. package/components/event-control-board/service/e113saf/e113saf.d.ts +14 -0
  58. package/components/event-control-board/service/e205dep/deposit-dto.d.ts +11 -0
  59. package/components/event-control-board/service/e205dep/e205dep-dto.d.ts +15 -0
  60. package/components/event-control-board/service/e205dep/e205dep.d.ts +16 -0
  61. package/components/event-control-board/service/e205dep/e205dep.service.d.ts +12 -0
  62. package/components/event-control-board/service/entity-service.d.ts +72 -0
  63. package/components/event-control-board/service/event-control/event-control-dto.d.ts +12 -0
  64. package/components/event-control-board/service/event-control/event-control.d.ts +18 -0
  65. package/components/event-control-board/service/event-control/event-control.module.d.ts +2 -0
  66. package/components/event-control-board/service/event-control/event-control.service.d.ts +11 -0
  67. package/components/event-control-board/service/event-control-board.service.d.ts +11 -0
  68. package/components/event-control-board/service/event-control-item/event-control-item-dto.d.ts +17 -0
  69. package/components/event-control-board/service/event-control-item/event-control-item.d.ts +23 -0
  70. package/components/event-control-board/service/event-control-item/event-control-item.module.d.ts +2 -0
  71. package/components/event-control-board/service/event-control-item/event-control-item.service.d.ts +15 -0
  72. package/components/event-control-board/service/external-invoice/external-invoice-dto.d.ts +13 -0
  73. package/components/event-control-board/service/external-invoice/external-invoice.d.ts +13 -0
  74. package/components/event-control-board/service/external-invoice/external-invoice.module.d.ts +2 -0
  75. package/components/event-control-board/service/external-invoice/external-invoice.service.d.ts +11 -0
  76. package/components/event-control-board/service/invoice/invoice-dto.d.ts +15 -0
  77. package/components/event-control-board/service/invoice/invoice.d.ts +21 -0
  78. package/components/event-control-board/service/invoice/invoice.module.d.ts +2 -0
  79. package/components/event-control-board/service/invoice/invoice.service.d.ts +11 -0
  80. package/components/event-control-board/service/origination/operationType.d.ts +5 -0
  81. package/components/event-control-board/service/origination/origination-dto.d.ts +50 -0
  82. package/components/event-control-board/service/origination/origination.d.ts +51 -0
  83. package/components/event-control-board/service/origination/origination.module.d.ts +2 -0
  84. package/components/event-control-board/service/origination/origination.service.d.ts +11 -0
  85. package/components/event-control-board/service/paginator-storage.service.d.ts +8 -0
  86. package/components/event-control-board/service/producer-invoice/producer-invoice-dto.d.ts +26 -0
  87. package/components/event-control-board/service/producer-invoice/producer-invoice.d.ts +27 -0
  88. package/components/event-control-board/service/producer-invoice/producer-invoice.module.d.ts +2 -0
  89. package/components/event-control-board/service/producer-invoice/producer-invoice.service.d.ts +11 -0
  90. package/components/event-control-board/service/rural-estate/rural-estate-dto.d.ts +28 -0
  91. package/components/event-control-board/service/rural-estate/rural-estate.d.ts +34 -0
  92. package/components/event-control-board/service/rural-estate/rural-estate.module.d.ts +2 -0
  93. package/components/event-control-board/service/rural-estate/rural-estate.service.d.ts +11 -0
  94. package/components/event-control-board/service/ticket/ticket-dto.d.ts +17 -0
  95. package/components/event-control-board/service/ticket/ticket.d.ts +18 -0
  96. package/components/event-control-board/service/ticket/ticket.module.d.ts +2 -0
  97. package/components/event-control-board/service/ticket/ticket.service.d.ts +45 -0
  98. package/components/event-control-board/shared.module.d.ts +2 -0
  99. package/components/event-steps/event-steps.component.d.ts +35 -0
  100. package/components/event-steps/event-steps.module.d.ts +2 -0
  101. package/components/event-steps/index.d.ts +2 -0
  102. package/components/index.d.ts +2 -0
  103. package/enums/agro-entity-status.enum.d.ts +4 -0
  104. package/enums/agro-numbers.enum.d.ts +1006 -0
  105. package/enums/agro-string-masks.enum.d.ts +10 -0
  106. package/enums/date-comparison-type.enum.d.ts +4 -0
  107. package/enums/http-codes.enum.d.ts +64 -0
  108. package/enums/index.d.ts +6 -0
  109. package/enums/number-comparison-type.enum.d.ts +8 -0
  110. package/esm2015/agro-angular-components.module.js +22 -0
  111. package/esm2015/common/agro-array-utils.class.js +56 -0
  112. package/esm2015/common/agro-cookie-utils.class.js +31 -0
  113. package/esm2015/common/agro-date-utils.class.js +117 -0
  114. package/esm2015/common/agro-name-utils.class.js +59 -0
  115. package/esm2015/common/agro-number-utils.class.js +102 -0
  116. package/esm2015/common/agro-object-utils.class.js +245 -0
  117. package/esm2015/common/agro-platform-utils.class.js +97 -0
  118. package/esm2015/common/agro-regex.constant.js +143 -0
  119. package/esm2015/common/agro-string-utils.class.js +367 -0
  120. package/esm2015/common/colors.class.js +77 -0
  121. package/esm2015/common/index.js +11 -0
  122. package/esm2015/components/event-control-board/common/control-status.js +7 -0
  123. package/esm2015/components/event-control-board/common/documentsToIssue.js +6 -0
  124. package/esm2015/components/event-control-board/common/event-control-constants.js +28 -0
  125. package/esm2015/components/event-control-board/common/event-operation.js +13 -0
  126. package/esm2015/components/event-control-board/common/event-origin.js +9 -0
  127. package/esm2015/components/event-control-board/common/event-status.js +9 -0
  128. package/esm2015/components/event-control-board/common/invoice-status.js +14 -0
  129. package/esm2015/components/event-control-board/common/invoice-type.js +7 -0
  130. package/esm2015/components/event-control-board/common/lookup-error-message.constants.js +11 -0
  131. package/esm2015/components/event-control-board/common/operation.js +7 -0
  132. package/esm2015/components/event-control-board/common/operationType.js +7 -0
  133. package/esm2015/components/event-control-board/common/status-entity.js +6 -0
  134. package/esm2015/components/event-control-board/common/ticket-status.js +9 -0
  135. package/esm2015/components/event-control-board/event-control-board.component.js +503 -0
  136. package/esm2015/components/event-control-board/event-control-board.module.js +62 -0
  137. package/esm2015/components/event-control-board/index.js +21 -0
  138. package/esm2015/components/event-control-board/service/e001pes/e001pes-dto.js +1 -0
  139. package/esm2015/components/event-control-board/service/e001pes/e001pes.js +20 -0
  140. package/esm2015/components/event-control-board/service/e001pes/e001pes.module.js +24 -0
  141. package/esm2015/components/event-control-board/service/e001pes/e001pes.service.js +34 -0
  142. package/esm2015/components/event-control-board/service/e001tns/e001tns-dto.js +1 -0
  143. package/esm2015/components/event-control-board/service/e001tns/e001tns.js +42 -0
  144. package/esm2015/components/event-control-board/service/e001tns/e001tns.module.js +26 -0
  145. package/esm2015/components/event-control-board/service/e001tns/e001tns.service.js +24 -0
  146. package/esm2015/components/event-control-board/service/e012fam/e012fam-dto.js +1 -0
  147. package/esm2015/components/event-control-board/service/e012fam/e012fam.js +20 -0
  148. package/esm2015/components/event-control-board/service/e012fam/e012fam.service.js +24 -0
  149. package/esm2015/components/event-control-board/service/e070emp/e070emp-dto.js +1 -0
  150. package/esm2015/components/event-control-board/service/e070emp/e070emp.js +29 -0
  151. package/esm2015/components/event-control-board/service/e070emp/e070emp.module.js +24 -0
  152. package/esm2015/components/event-control-board/service/e070emp/e070emp.service.js +31 -0
  153. package/esm2015/components/event-control-board/service/e070fil/e070fil-dto.js +1 -0
  154. package/esm2015/components/event-control-board/service/e070fil/e070fil.js +41 -0
  155. package/esm2015/components/event-control-board/service/e070fil/e070fil.module.js +24 -0
  156. package/esm2015/components/event-control-board/service/e070fil/e070fil.service.js +31 -0
  157. package/esm2015/components/event-control-board/service/e075der/e075der-dto.js +1 -0
  158. package/esm2015/components/event-control-board/service/e075der/e075der.js +31 -0
  159. package/esm2015/components/event-control-board/service/e075der/e075der.module.js +24 -0
  160. package/esm2015/components/event-control-board/service/e075der/e075der.service.js +29 -0
  161. package/esm2015/components/event-control-board/service/e113saf/e113saf-dto.js +1 -0
  162. package/esm2015/components/event-control-board/service/e113saf/e113saf.js +20 -0
  163. package/esm2015/components/event-control-board/service/e205dep/deposit-dto.js +1 -0
  164. package/esm2015/components/event-control-board/service/e205dep/e205dep-dto.js +1 -0
  165. package/esm2015/components/event-control-board/service/e205dep/e205dep.js +20 -0
  166. package/esm2015/components/event-control-board/service/e205dep/e205dep.service.js +29 -0
  167. package/esm2015/components/event-control-board/service/entity-service.js +129 -0
  168. package/esm2015/components/event-control-board/service/event-control/event-control-dto.js +1 -0
  169. package/esm2015/components/event-control-board/service/event-control/event-control.js +20 -0
  170. package/esm2015/components/event-control-board/service/event-control/event-control.module.js +26 -0
  171. package/esm2015/components/event-control-board/service/event-control/event-control.service.js +24 -0
  172. package/esm2015/components/event-control-board/service/event-control-board.service.js +33 -0
  173. package/esm2015/components/event-control-board/service/event-control-item/event-control-item-dto.js +1 -0
  174. package/esm2015/components/event-control-board/service/event-control-item/event-control-item.js +34 -0
  175. package/esm2015/components/event-control-board/service/event-control-item/event-control-item.module.js +26 -0
  176. package/esm2015/components/event-control-board/service/event-control-item/event-control-item.service.js +29 -0
  177. package/esm2015/components/event-control-board/service/external-invoice/external-invoice-dto.js +1 -0
  178. package/esm2015/components/event-control-board/service/external-invoice/external-invoice.js +20 -0
  179. package/esm2015/components/event-control-board/service/external-invoice/external-invoice.module.js +26 -0
  180. package/esm2015/components/event-control-board/service/external-invoice/external-invoice.service.js +24 -0
  181. package/esm2015/components/event-control-board/service/invoice/invoice-dto.js +1 -0
  182. package/esm2015/components/event-control-board/service/invoice/invoice.js +43 -0
  183. package/esm2015/components/event-control-board/service/invoice/invoice.module.js +26 -0
  184. package/esm2015/components/event-control-board/service/invoice/invoice.service.js +24 -0
  185. package/esm2015/components/event-control-board/service/origination/operationType.js +7 -0
  186. package/esm2015/components/event-control-board/service/origination/origination-dto.js +1 -0
  187. package/esm2015/components/event-control-board/service/origination/origination.js +59 -0
  188. package/esm2015/components/event-control-board/service/origination/origination.module.js +24 -0
  189. package/esm2015/components/event-control-board/service/origination/origination.service.js +24 -0
  190. package/esm2015/components/event-control-board/service/paginator-storage.service.js +32 -0
  191. package/esm2015/components/event-control-board/service/producer-invoice/producer-invoice-dto.js +1 -0
  192. package/esm2015/components/event-control-board/service/producer-invoice/producer-invoice.js +32 -0
  193. package/esm2015/components/event-control-board/service/producer-invoice/producer-invoice.module.js +26 -0
  194. package/esm2015/components/event-control-board/service/producer-invoice/producer-invoice.service.js +24 -0
  195. package/esm2015/components/event-control-board/service/rural-estate/rural-estate-dto.js +1 -0
  196. package/esm2015/components/event-control-board/service/rural-estate/rural-estate.js +78 -0
  197. package/esm2015/components/event-control-board/service/rural-estate/rural-estate.module.js +26 -0
  198. package/esm2015/components/event-control-board/service/rural-estate/rural-estate.service.js +24 -0
  199. package/esm2015/components/event-control-board/service/ticket/ticket-dto.js +1 -0
  200. package/esm2015/components/event-control-board/service/ticket/ticket.js +39 -0
  201. package/esm2015/components/event-control-board/service/ticket/ticket.module.js +26 -0
  202. package/esm2015/components/event-control-board/service/ticket/ticket.service.js +59 -0
  203. package/esm2015/components/event-control-board/shared.module.js +60 -0
  204. package/esm2015/components/event-steps/event-steps.component.js +103 -0
  205. package/esm2015/components/event-steps/event-steps.module.js +16 -0
  206. package/esm2015/components/event-steps/index.js +3 -0
  207. package/esm2015/components/index.js +3 -0
  208. package/esm2015/enums/agro-entity-status.enum.js +6 -0
  209. package/esm2015/enums/agro-numbers.enum.js +1007 -0
  210. package/esm2015/enums/agro-string-masks.enum.js +12 -0
  211. package/esm2015/enums/date-comparison-type.enum.js +6 -0
  212. package/esm2015/enums/http-codes.enum.js +66 -0
  213. package/esm2015/enums/index.js +7 -0
  214. package/esm2015/enums/number-comparison-type.enum.js +10 -0
  215. package/esm2015/form-validator/agro-form-validator.js +229 -0
  216. package/esm2015/form-validator/index.js +2 -0
  217. package/esm2015/lib-translation.module.js +21 -0
  218. package/esm2015/pipe/index.js +2 -0
  219. package/esm2015/pipe/lib-translate.pipe.js +24 -0
  220. package/esm2015/public-api.js +9 -0
  221. package/esm2015/senior-agronegocio-angular-components.js +6 -0
  222. package/esm2015/services/i18n/en-US.js +195 -0
  223. package/esm2015/services/i18n/es-CO.js +195 -0
  224. package/esm2015/services/i18n/pt-BR.js +195 -0
  225. package/esm2015/services/index.js +3 -0
  226. package/esm2015/services/lib-translation.service.js +54 -0
  227. package/esm2015/services/websocket/async-lock.js +34 -0
  228. package/esm2015/services/websocket/index.js +6 -0
  229. package/esm2015/services/websocket/models/index.js +2 -0
  230. package/esm2015/services/websocket/models/primitive-manager.js +39 -0
  231. package/esm2015/services/websocket/protocols/index.js +1 -0
  232. package/esm2015/services/websocket/protocols/on-event-options.js +1 -0
  233. package/esm2015/services/websocket/protocols/primitive-event.js +1 -0
  234. package/esm2015/services/websocket/user-information.service.js +34 -0
  235. package/esm2015/services/websocket/websocket.module.js +21 -0
  236. package/esm2015/services/websocket/websocket.service.js +339 -0
  237. package/esm5/agro-angular-components.module.js +26 -0
  238. package/esm5/common/agro-array-utils.class.js +72 -0
  239. package/esm5/common/agro-cookie-utils.class.js +38 -0
  240. package/esm5/common/agro-date-utils.class.js +122 -0
  241. package/esm5/common/agro-name-utils.class.js +63 -0
  242. package/esm5/common/agro-number-utils.class.js +109 -0
  243. package/esm5/common/agro-object-utils.class.js +250 -0
  244. package/esm5/common/agro-platform-utils.class.js +101 -0
  245. package/esm5/common/agro-regex.constant.js +143 -0
  246. package/esm5/common/agro-string-utils.class.js +383 -0
  247. package/esm5/common/colors.class.js +81 -0
  248. package/esm5/common/index.js +11 -0
  249. package/esm5/components/event-control-board/common/control-status.js +7 -0
  250. package/esm5/components/event-control-board/common/documentsToIssue.js +6 -0
  251. package/esm5/components/event-control-board/common/event-control-constants.js +28 -0
  252. package/esm5/components/event-control-board/common/event-operation.js +13 -0
  253. package/esm5/components/event-control-board/common/event-origin.js +9 -0
  254. package/esm5/components/event-control-board/common/event-status.js +9 -0
  255. package/esm5/components/event-control-board/common/invoice-status.js +14 -0
  256. package/esm5/components/event-control-board/common/invoice-type.js +7 -0
  257. package/esm5/components/event-control-board/common/lookup-error-message.constants.js +11 -0
  258. package/esm5/components/event-control-board/common/operation.js +7 -0
  259. package/esm5/components/event-control-board/common/operationType.js +7 -0
  260. package/esm5/components/event-control-board/common/status-entity.js +6 -0
  261. package/esm5/components/event-control-board/common/ticket-status.js +9 -0
  262. package/esm5/components/event-control-board/event-control-board.component.js +528 -0
  263. package/esm5/components/event-control-board/event-control-board.module.js +65 -0
  264. package/esm5/components/event-control-board/index.js +21 -0
  265. package/esm5/components/event-control-board/service/e001pes/e001pes-dto.js +1 -0
  266. package/esm5/components/event-control-board/service/e001pes/e001pes.js +25 -0
  267. package/esm5/components/event-control-board/service/e001pes/e001pes.module.js +27 -0
  268. package/esm5/components/event-control-board/service/e001pes/e001pes.service.js +37 -0
  269. package/esm5/components/event-control-board/service/e001tns/e001tns-dto.js +1 -0
  270. package/esm5/components/event-control-board/service/e001tns/e001tns.js +45 -0
  271. package/esm5/components/event-control-board/service/e001tns/e001tns.module.js +29 -0
  272. package/esm5/components/event-control-board/service/e001tns/e001tns.service.js +27 -0
  273. package/esm5/components/event-control-board/service/e012fam/e012fam-dto.js +1 -0
  274. package/esm5/components/event-control-board/service/e012fam/e012fam.js +25 -0
  275. package/esm5/components/event-control-board/service/e012fam/e012fam.service.js +27 -0
  276. package/esm5/components/event-control-board/service/e070emp/e070emp-dto.js +1 -0
  277. package/esm5/components/event-control-board/service/e070emp/e070emp.js +34 -0
  278. package/esm5/components/event-control-board/service/e070emp/e070emp.module.js +27 -0
  279. package/esm5/components/event-control-board/service/e070emp/e070emp.service.js +34 -0
  280. package/esm5/components/event-control-board/service/e070fil/e070fil-dto.js +1 -0
  281. package/esm5/components/event-control-board/service/e070fil/e070fil.js +48 -0
  282. package/esm5/components/event-control-board/service/e070fil/e070fil.module.js +27 -0
  283. package/esm5/components/event-control-board/service/e070fil/e070fil.service.js +34 -0
  284. package/esm5/components/event-control-board/service/e075der/e075der-dto.js +1 -0
  285. package/esm5/components/event-control-board/service/e075der/e075der.js +36 -0
  286. package/esm5/components/event-control-board/service/e075der/e075der.module.js +27 -0
  287. package/esm5/components/event-control-board/service/e075der/e075der.service.js +32 -0
  288. package/esm5/components/event-control-board/service/e113saf/e113saf-dto.js +1 -0
  289. package/esm5/components/event-control-board/service/e113saf/e113saf.js +25 -0
  290. package/esm5/components/event-control-board/service/e205dep/deposit-dto.js +1 -0
  291. package/esm5/components/event-control-board/service/e205dep/e205dep-dto.js +1 -0
  292. package/esm5/components/event-control-board/service/e205dep/e205dep.js +25 -0
  293. package/esm5/components/event-control-board/service/e205dep/e205dep.service.js +32 -0
  294. package/esm5/components/event-control-board/service/entity-service.js +140 -0
  295. package/esm5/components/event-control-board/service/event-control/event-control-dto.js +1 -0
  296. package/esm5/components/event-control-board/service/event-control/event-control.js +25 -0
  297. package/esm5/components/event-control-board/service/event-control/event-control.module.js +29 -0
  298. package/esm5/components/event-control-board/service/event-control/event-control.service.js +27 -0
  299. package/esm5/components/event-control-board/service/event-control-board.service.js +34 -0
  300. package/esm5/components/event-control-board/service/event-control-item/event-control-item-dto.js +1 -0
  301. package/esm5/components/event-control-board/service/event-control-item/event-control-item.js +39 -0
  302. package/esm5/components/event-control-board/service/event-control-item/event-control-item.module.js +29 -0
  303. package/esm5/components/event-control-board/service/event-control-item/event-control-item.service.js +32 -0
  304. package/esm5/components/event-control-board/service/external-invoice/external-invoice-dto.js +1 -0
  305. package/esm5/components/event-control-board/service/external-invoice/external-invoice.js +25 -0
  306. package/esm5/components/event-control-board/service/external-invoice/external-invoice.module.js +29 -0
  307. package/esm5/components/event-control-board/service/external-invoice/external-invoice.service.js +27 -0
  308. package/esm5/components/event-control-board/service/invoice/invoice-dto.js +1 -0
  309. package/esm5/components/event-control-board/service/invoice/invoice.js +48 -0
  310. package/esm5/components/event-control-board/service/invoice/invoice.module.js +29 -0
  311. package/esm5/components/event-control-board/service/invoice/invoice.service.js +27 -0
  312. package/esm5/components/event-control-board/service/origination/operationType.js +7 -0
  313. package/esm5/components/event-control-board/service/origination/origination-dto.js +1 -0
  314. package/esm5/components/event-control-board/service/origination/origination.js +62 -0
  315. package/esm5/components/event-control-board/service/origination/origination.module.js +27 -0
  316. package/esm5/components/event-control-board/service/origination/origination.service.js +27 -0
  317. package/esm5/components/event-control-board/service/paginator-storage.service.js +71 -0
  318. package/esm5/components/event-control-board/service/producer-invoice/producer-invoice-dto.js +1 -0
  319. package/esm5/components/event-control-board/service/producer-invoice/producer-invoice.js +37 -0
  320. package/esm5/components/event-control-board/service/producer-invoice/producer-invoice.module.js +29 -0
  321. package/esm5/components/event-control-board/service/producer-invoice/producer-invoice.service.js +27 -0
  322. package/esm5/components/event-control-board/service/rural-estate/rural-estate-dto.js +1 -0
  323. package/esm5/components/event-control-board/service/rural-estate/rural-estate.js +83 -0
  324. package/esm5/components/event-control-board/service/rural-estate/rural-estate.module.js +29 -0
  325. package/esm5/components/event-control-board/service/rural-estate/rural-estate.service.js +27 -0
  326. package/esm5/components/event-control-board/service/ticket/ticket-dto.js +1 -0
  327. package/esm5/components/event-control-board/service/ticket/ticket.js +44 -0
  328. package/esm5/components/event-control-board/service/ticket/ticket.module.js +29 -0
  329. package/esm5/components/event-control-board/service/ticket/ticket.service.js +62 -0
  330. package/esm5/components/event-control-board/shared.module.js +63 -0
  331. package/esm5/components/event-steps/event-steps.component.js +113 -0
  332. package/esm5/components/event-steps/event-steps.module.js +19 -0
  333. package/esm5/components/event-steps/index.js +3 -0
  334. package/esm5/components/index.js +3 -0
  335. package/esm5/enums/agro-entity-status.enum.js +6 -0
  336. package/esm5/enums/agro-numbers.enum.js +1007 -0
  337. package/esm5/enums/agro-string-masks.enum.js +12 -0
  338. package/esm5/enums/date-comparison-type.enum.js +6 -0
  339. package/esm5/enums/http-codes.enum.js +66 -0
  340. package/esm5/enums/index.js +7 -0
  341. package/esm5/enums/number-comparison-type.enum.js +10 -0
  342. package/esm5/form-validator/agro-form-validator.js +239 -0
  343. package/esm5/form-validator/index.js +2 -0
  344. package/esm5/lib-translation.module.js +24 -0
  345. package/esm5/pipe/index.js +2 -0
  346. package/esm5/pipe/lib-translate.pipe.js +29 -0
  347. package/esm5/public-api.js +9 -0
  348. package/esm5/senior-agronegocio-angular-components.js +6 -0
  349. package/esm5/services/i18n/en-US.js +195 -0
  350. package/esm5/services/i18n/es-CO.js +195 -0
  351. package/esm5/services/i18n/pt-BR.js +195 -0
  352. package/esm5/services/index.js +3 -0
  353. package/esm5/services/lib-translation.service.js +56 -0
  354. package/esm5/services/websocket/async-lock.js +43 -0
  355. package/esm5/services/websocket/index.js +6 -0
  356. package/esm5/services/websocket/models/index.js +2 -0
  357. package/esm5/services/websocket/models/primitive-manager.js +58 -0
  358. package/esm5/services/websocket/protocols/index.js +1 -0
  359. package/esm5/services/websocket/protocols/on-event-options.js +1 -0
  360. package/esm5/services/websocket/protocols/primitive-event.js +1 -0
  361. package/esm5/services/websocket/user-information.service.js +38 -0
  362. package/esm5/services/websocket/websocket.module.js +24 -0
  363. package/esm5/services/websocket/websocket.service.js +411 -0
  364. package/fesm2015/senior-agronegocio-angular-components.js +5279 -0
  365. package/fesm2015/senior-agronegocio-angular-components.js.map +1 -0
  366. package/fesm5/senior-agronegocio-angular-components.js +5638 -0
  367. package/fesm5/senior-agronegocio-angular-components.js.map +1 -0
  368. package/form-validator/agro-form-validator.d.ts +103 -0
  369. package/form-validator/index.d.ts +1 -0
  370. package/lib-translation.module.d.ts +2 -0
  371. package/package.json +82 -0
  372. package/pipe/index.d.ts +1 -0
  373. package/pipe/lib-translate.pipe.d.ts +7 -0
  374. package/public-api.d.ts +8 -0
  375. package/senior-agronegocio-angular-components.d.ts +5 -0
  376. package/senior-agronegocio-angular-components.metadata.json +1 -0
  377. package/services/i18n/en-US.d.ts +194 -0
  378. package/services/i18n/es-CO.d.ts +194 -0
  379. package/services/i18n/pt-BR.d.ts +194 -0
  380. package/services/index.d.ts +2 -0
  381. package/services/lib-translation.service.d.ts +15 -0
  382. package/services/websocket/async-lock.d.ts +6 -0
  383. package/services/websocket/index.d.ts +6 -0
  384. package/services/websocket/models/index.d.ts +1 -0
  385. package/services/websocket/models/primitive-manager.d.ts +19 -0
  386. package/services/websocket/protocols/index.d.ts +2 -0
  387. package/services/websocket/protocols/on-event-options.d.ts +8 -0
  388. package/services/websocket/protocols/primitive-event.d.ts +10 -0
  389. package/services/websocket/user-information.service.d.ts +7 -0
  390. package/services/websocket/websocket.module.d.ts +2 -0
  391. package/services/websocket/websocket.service.d.ts +100 -0
@@ -0,0 +1,339 @@
1
+ import { __awaiter, __decorate } from "tslib";
2
+ import { Injectable } from '@angular/core';
3
+ import { filter, finalize, map, switchMap, take } from 'rxjs/operators';
4
+ import { Client, FrameImpl } from '@stomp/stompjs';
5
+ import { BehaviorSubject, Subject } from 'rxjs';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "./user-information.service";
8
+ const SockJS = require('sockjs-client');
9
+ import { AsyncLock } from './async-lock';
10
+ import { UserInformationService } from './user-information.service';
11
+ import { PrimitiveManager } from './models';
12
+ const RECONNECT_INTERVAL_MILLISECONDS = 3000;
13
+ const CONNECTION_TIMEOUT_MILLISECONDS = 5000;
14
+ let WebsocketService = class WebsocketService {
15
+ constructor(userInformationService) {
16
+ this.userInformationService = userInformationService;
17
+ this.connected$ = new BehaviorSubject(false);
18
+ this.disconnected$ = new Subject();
19
+ this.reconnected$ = new Subject();
20
+ this.error$ = new Subject();
21
+ this.subscribed$ = new Subject();
22
+ this.primitiveManagers = new Map();
23
+ this.connectionLock = new AsyncLock();
24
+ this.debugEnable = false;
25
+ this.lostConnection = false;
26
+ }
27
+ /**
28
+ * Enables stompjs debug logs and additional info
29
+ */
30
+ enableDebugLogs() {
31
+ this.debugEnable = true;
32
+ }
33
+ /**
34
+ * Manually starts the connection
35
+ */
36
+ connect() {
37
+ return __awaiter(this, void 0, void 0, function* () {
38
+ yield this.connectionLock.acquire();
39
+ try {
40
+ if (this.isConnected() || this.isConnecting()) {
41
+ return;
42
+ }
43
+ this.lostConnection = false;
44
+ const stompConfig = {
45
+ webSocketFactory: () => {
46
+ return new SockJS(this.getSubscriptionUrl(), null, {
47
+ timeout: CONNECTION_TIMEOUT_MILLISECONDS
48
+ });
49
+ },
50
+ reconnectDelay: RECONNECT_INTERVAL_MILLISECONDS,
51
+ debug: this.debug.bind(this),
52
+ onConnect: this.handleOnConnected.bind(this),
53
+ onDisconnect: this.handleOnDisconnect.bind(this),
54
+ onWebSocketClose: this.handleOnWebSocketClose.bind(this),
55
+ onStompError: this.handleOnStompError.bind(this),
56
+ onWebSocketError: this.handleOnWebSocketError.bind(this)
57
+ };
58
+ this.debug('Connecting the Webscoket');
59
+ this.stompClient = new Client(stompConfig);
60
+ this.stompClient.activate();
61
+ }
62
+ finally {
63
+ yield this.connectionLock.release();
64
+ }
65
+ });
66
+ }
67
+ /**
68
+ * Manually disconnect the websocket. The reconnect loop will be stopped.
69
+ */
70
+ disconnect() {
71
+ return __awaiter(this, void 0, void 0, function* () {
72
+ if (!this.isConnected()) {
73
+ return;
74
+ }
75
+ yield this.connectionLock.acquire();
76
+ try {
77
+ for (const primitiveManager of this.primitiveManagers.values()) {
78
+ primitiveManager.unsubscribe();
79
+ }
80
+ this.primitiveManagers.clear();
81
+ this.connected$.next(false);
82
+ if (this.stompClient) {
83
+ yield this.stompClient.deactivate();
84
+ }
85
+ }
86
+ finally {
87
+ yield this.connectionLock.release();
88
+ }
89
+ });
90
+ }
91
+ /**
92
+ * Check if the websocket is connected
93
+ * @return `boolean` representing if the websocket is connected
94
+ */
95
+ isConnected() {
96
+ if (!this.stompClient) {
97
+ return false;
98
+ }
99
+ return this.stompClient.connected;
100
+ }
101
+ /**
102
+ * Check if the websocket is tring to connect
103
+ * @return `boolean` representing if the websocket status
104
+ */
105
+ isConnecting() {
106
+ if (!this.stompClient) {
107
+ return false;
108
+ }
109
+ return !this.stompClient.connected && this.stompClient.active;
110
+ }
111
+ /**
112
+ * Event responsable to emit an event when the connection is established.
113
+ * Do not forget to unsubscribe the observable when you don't need it anymore.
114
+ * @return `Observable<boolean>`
115
+ */
116
+ onConnect() {
117
+ return this.connected$.asObservable()
118
+ .pipe(filter(p => p === true));
119
+ }
120
+ /**
121
+ * Event responsable to emit an event when the connection is closed.
122
+ * Do not forget to unsubscribe the observable when you don't need it anymore.
123
+ * @return `Observable<void>`
124
+ */
125
+ onDisconnect() {
126
+ return this.disconnected$.asObservable();
127
+ }
128
+ /**
129
+ * Event responsable to emit an event when the connection is reestablished.
130
+ * Do not forget to unsubscribe the observable when you don't need it anymore.
131
+ * @return `Observable<void>`
132
+ */
133
+ onReconnect() {
134
+ return this.reconnected$.asObservable();
135
+ }
136
+ /**
137
+ * Event responsable to emit an event when an error ocurred.
138
+ * Do not forget to unsubscribe the observable when you don't need it anymore.
139
+ * @return `Observable<FrameImpl>`
140
+ */
141
+ onError() {
142
+ return this.error$.asObservable();
143
+ }
144
+ /**
145
+ * Event responsible to emit an event when a primitive is called.
146
+ * Do not forget to unsubscribe the observable when you don't need it anymore.
147
+ * @typeParam `<T>` Object type that will be used in the observable for the `data` property.
148
+ * @param {OnEventOptions} options Configurations for the event.
149
+ * @return `Observable<PrimitiveEvent<T>>` Observable that emits an event when the service calls the primitive.
150
+ */
151
+ onEvent(options) {
152
+ const { domain, service, primitive } = options;
153
+ const key = this.buildPrimitiveManagerKey(domain, service, primitive);
154
+ if (this.primitiveManagers.has(key)) {
155
+ return this.primitiveManagers.get(key).getEventObservable();
156
+ }
157
+ const primitiveManager = new PrimitiveManager(domain, service, primitive);
158
+ this.primitiveManagers.set(key, primitiveManager);
159
+ this.connect().then(() => {
160
+ this.onConnect()
161
+ .pipe(take(1))
162
+ .subscribe(() => {
163
+ this.createStompSubscriptions(primitiveManager);
164
+ });
165
+ });
166
+ return primitiveManager
167
+ .getEventObservable()
168
+ .pipe(finalize(() => this.unsubscribePrimitiveOnFinalize(primitiveManager)));
169
+ }
170
+ /**
171
+ * Event responsible to emit an event when a subscription is created for the primitive.
172
+ * Do not forget to unsubscribe the observable when you don't need it anymore.
173
+ * @param {OnEventOptions} options Configurations for the event.
174
+ * Observable responsável por emitir uma notificação após o subscribe do evento pela primeira vez.
175
+ * @return `Observable<boolean>` Observable that emits an event when the service calls the primitive.
176
+ */
177
+ onSubscribe(options) {
178
+ const { domain, service, primitive } = options;
179
+ const key = this.buildPrimitiveManagerKey(domain, service, primitive);
180
+ return this.onConnect().pipe(take(1), switchMap(() => {
181
+ if (this.primitiveManagers.has(key)) {
182
+ return this.primitiveManagers
183
+ .get(key)
184
+ .getSubscriptionObservable()
185
+ .pipe(take(1));
186
+ }
187
+ return this.subscribed$.asObservable().pipe(filter((primitiveManager) => {
188
+ return this.buildPrimitiveManagerKey(primitiveManager.domain, primitiveManager.service, primitiveManager.primitive) === key;
189
+ }), map(() => true), take(1));
190
+ }));
191
+ }
192
+ debug(message, ...optionalParams) {
193
+ if (!this.debugEnable) {
194
+ return;
195
+ }
196
+ console.log('WS debug: ' + message, ...optionalParams);
197
+ }
198
+ info(message) {
199
+ console.info('WS info: ' + message);
200
+ }
201
+ handleOnConnected() {
202
+ this.info('Webscoket connected');
203
+ this.connected$.next(true);
204
+ if (this.lostConnection) {
205
+ this.info('Webscoket reconnected, recriating subscriptions');
206
+ this.handleReconnection();
207
+ }
208
+ }
209
+ handleOnDisconnect() {
210
+ this.info('Webscoket disconnected');
211
+ this.connected$.next(false);
212
+ this.disconnected$.next();
213
+ }
214
+ handleOnWebSocketClose(data) {
215
+ var _a, _b;
216
+ if (((_a = data === null || data === void 0 ? void 0 : data.reason) === null || _a === void 0 ? void 0 : _a.toLowerCase().indexOf("go away")) !== -1) {
217
+ this.lostConnection = true;
218
+ this.handleError('AuthenticationError', new FrameImpl({
219
+ command: data.type,
220
+ headers: {
221
+ message: data.reason
222
+ }
223
+ }));
224
+ return;
225
+ }
226
+ if (((_b = data === null || data === void 0 ? void 0 : data.reason) === null || _b === void 0 ? void 0 : _b.toLowerCase().indexOf("cannot connect to server")) !== -1) {
227
+ this.lostConnection = true;
228
+ this.handleError('ConnectionError', new FrameImpl({
229
+ command: data.type,
230
+ headers: {
231
+ message: data.reason
232
+ }
233
+ }));
234
+ return;
235
+ }
236
+ if (data.wasClean) {
237
+ return;
238
+ }
239
+ this.lostConnection = true;
240
+ }
241
+ handleOnStompError(data) {
242
+ this.handleError('StompError', data);
243
+ if (this.isAuthenticationError(data)) {
244
+ this.info('Authentication error, recriating subscriptions');
245
+ this.handleReconnection();
246
+ }
247
+ }
248
+ isAuthenticationError(data) {
249
+ var _a;
250
+ const errorMessage = (_a = data === null || data === void 0 ? void 0 : data.headers) === null || _a === void 0 ? void 0 : _a.message;
251
+ if (!errorMessage) {
252
+ return false;
253
+ }
254
+ return errorMessage.toLowerCase().indexOf('forbiddenexception') !== -1;
255
+ }
256
+ handleOnWebSocketError(data) {
257
+ this.handleError('WebSocketError', data);
258
+ }
259
+ handleError(origin, data) {
260
+ console.error(origin, data);
261
+ this.error$.next(data);
262
+ }
263
+ handleReconnection() {
264
+ this.lostConnection = false;
265
+ this.reconnectPrimitives();
266
+ this.reconnected$.next();
267
+ }
268
+ reconnectPrimitives() {
269
+ for (const primitiveManager of this.primitiveManagers.values()) {
270
+ this.createStompSubscriptions(primitiveManager);
271
+ }
272
+ }
273
+ buildSubscriptionUrlWithToken(domain, service, primitive) {
274
+ const authToken = this.userInformationService.getAuthToken();
275
+ const tenant = this.userInformationService.getTenantDomain();
276
+ return `/topic/${tenant}/${authToken}/${domain}/${service}/${primitive}`;
277
+ }
278
+ getSubscriptionUrlWithoutToken(domain, service, primitive) {
279
+ const tenant = this.userInformationService.getTenantDomain();
280
+ return `/topic/${tenant}/${domain}/${service}/${primitive}`;
281
+ }
282
+ buildPrimitiveManagerKey(domain, service, primitive) {
283
+ return `${domain}/${service}/${primitive}`;
284
+ }
285
+ unsubscribePrimitiveOnFinalize(primitiveManager) {
286
+ return __awaiter(this, void 0, void 0, function* () {
287
+ if (primitiveManager.hasObservers()) {
288
+ return;
289
+ }
290
+ primitiveManager.unsubscribe();
291
+ const key = this.buildPrimitiveManagerKey(primitiveManager.domain, primitiveManager.service, primitiveManager.primitive);
292
+ this.primitiveManagers.delete(key);
293
+ yield this.disconnectIfNoMoreObservables();
294
+ });
295
+ }
296
+ disconnectIfNoMoreObservables() {
297
+ return __awaiter(this, void 0, void 0, function* () {
298
+ if (this.getObserversCount() === 0) {
299
+ this.debug('Manually disconnecting because there are no more observers');
300
+ yield this.disconnect();
301
+ }
302
+ });
303
+ }
304
+ getObserversCount() {
305
+ let observersCount = 0;
306
+ this.primitiveManagers.forEach(primitiveManager => {
307
+ observersCount += primitiveManager.getObserversCount();
308
+ });
309
+ return observersCount;
310
+ }
311
+ createStompSubscription(destination, primitiveManager) {
312
+ return this.stompClient.subscribe(destination, (message) => {
313
+ const event = JSON.parse(message.body || '{}');
314
+ primitiveManager.fireEvent(event);
315
+ });
316
+ }
317
+ createStompSubscriptions(primitiveManager) {
318
+ const subscriptionUrlWithToken = this.buildSubscriptionUrlWithToken(primitiveManager.domain, primitiveManager.service, primitiveManager.primitive);
319
+ const subscriptionUrlWithoutToken = this.getSubscriptionUrlWithoutToken(primitiveManager.domain, primitiveManager.service, primitiveManager.primitive);
320
+ const stompSubscriptionWithToken = this.createStompSubscription(subscriptionUrlWithToken, primitiveManager);
321
+ const stompSubscriptionWithoutToken = this.createStompSubscription(subscriptionUrlWithoutToken, primitiveManager);
322
+ primitiveManager.subscribe(stompSubscriptionWithToken, stompSubscriptionWithoutToken);
323
+ this.subscribed$.next(primitiveManager);
324
+ }
325
+ getSubscriptionUrl() {
326
+ return `${this.userInformationService.getWebSocketUrl()}/subscription`;
327
+ }
328
+ };
329
+ WebsocketService.ctorParameters = () => [
330
+ { type: UserInformationService }
331
+ ];
332
+ WebsocketService.ɵprov = i0.ɵɵdefineInjectable({ factory: function WebsocketService_Factory() { return new WebsocketService(i0.ɵɵinject(i1.UserInformationService)); }, token: WebsocketService, providedIn: "root" });
333
+ WebsocketService = __decorate([
334
+ Injectable({
335
+ providedIn: 'root'
336
+ })
337
+ ], WebsocketService);
338
+ export { WebsocketService };
339
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWFncm9uZWdvY2lvL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbInNlcnZpY2VzL3dlYnNvY2tldC93ZWJzb2NrZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFrQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25GLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFDNUQsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRzVDLE1BQU0sK0JBQStCLEdBQUcsSUFBSSxDQUFDO0FBQzdDLE1BQU0sK0JBQStCLEdBQUcsSUFBSSxDQUFDO0FBSzdDLElBQWEsZ0JBQWdCLEdBQTdCLE1BQWEsZ0JBQWdCO0lBY3pCLFlBQTZCLHNCQUE4QztRQUE5QywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBYjFELGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNqRCxrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDcEMsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ25DLFdBQU0sR0FBRyxJQUFJLE9BQU8sRUFBYSxDQUFDO1FBQ2xD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QkFBdUIsQ0FBQyx3QkFBd0IsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVHLE1BQU0sNkJBQTZCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLDJCQUEyQixFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDbEgsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLDBCQUEwQixFQUFFLDZCQUE2QixDQUFDLENBQUM7UUFDdEYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU8sa0JBQWtCO1FBQ3RCLE9BQU8sR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsZUFBZSxFQUFFLGVBQWUsQ0FBQztJQUMzRSxDQUFDO0NBQ0osQ0FBQTs7WUF6WHdELHNCQUFzQjs7O0FBZGxFLGdCQUFnQjtJQUg1QixVQUFVLENBQUM7UUFDUixVQUFVLEVBQUUsTUFBTTtLQUNyQixDQUFDO0dBQ1csZ0JBQWdCLENBdVk1QjtTQXZZWSxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGZpbHRlciwgZmluYWxpemUsIG1hcCwgc3dpdGNoTWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDbGllbnQsIEZyYW1lSW1wbCwgU3RvbXBDb25maWcsIFN0b21wU3Vic2NyaXB0aW9uIH0gZnJvbSAnQHN0b21wL3N0b21wanMnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuY29uc3QgU29ja0pTID0gcmVxdWlyZSgnc29ja2pzLWNsaWVudCcpO1xyXG5pbXBvcnQgeyBBc3luY0xvY2sgfSBmcm9tICcuL2FzeW5jLWxvY2snO1xyXG5pbXBvcnQgeyBVc2VySW5mb3JtYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi91c2VyLWluZm9ybWF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcmltaXRpdmVNYW5hZ2VyIH0gZnJvbSAnLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBPbkV2ZW50T3B0aW9ucywgUHJpbWl0aXZlRXZlbnQgfSBmcm9tICcuL3Byb3RvY29scyc7XHJcblxyXG5jb25zdCBSRUNPTk5FQ1RfSU5URVJWQUxfTUlMTElTRUNPTkRTID0gMzAwMDtcclxuY29uc3QgQ09OTkVDVElPTl9USU1FT1VUX01JTExJU0VDT05EUyA9IDUwMDA7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFdlYnNvY2tldFNlcnZpY2Uge1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25uZWN0ZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRpc2Nvbm5lY3RlZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSByZWNvbm5lY3RlZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBlcnJvciQgPSBuZXcgU3ViamVjdDxGcmFtZUltcGw+KCk7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN1YnNjcmliZWQkID0gbmV3IFN1YmplY3Q8UHJpbWl0aXZlTWFuYWdlcjxhbnk+PigpO1xyXG5cclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJpbWl0aXZlTWFuYWdlcnM6IE1hcDxzdHJpbmcsIFByaW1pdGl2ZU1hbmFnZXI8YW55Pj4gPSBuZXcgTWFwPHN0cmluZywgUHJpbWl0aXZlTWFuYWdlcjxhbnk+PigpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25uZWN0aW9uTG9jayA9IG5ldyBBc3luY0xvY2soKTtcclxuXHJcbiAgICBwcml2YXRlIHN0b21wQ2xpZW50OiBDbGllbnQ7XHJcbiAgICBwcml2YXRlIGRlYnVnRW5hYmxlID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIGxvc3RDb25uZWN0aW9uID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB1c2VySW5mb3JtYXRpb25TZXJ2aWNlOiBVc2VySW5mb3JtYXRpb25TZXJ2aWNlKSB7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFbmFibGVzIHN0b21wanMgZGVidWcgbG9ncyBhbmQgYWRkaXRpb25hbCBpbmZvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBlbmFibGVEZWJ1Z0xvZ3MoKSB7XHJcbiAgICAgICAgdGhpcy5kZWJ1Z0VuYWJsZSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNYW51YWxseSBzdGFydHMgdGhlIGNvbm5lY3Rpb25cclxuICAgICAqL1xyXG4gICAgcHVibGljIGFzeW5jIGNvbm5lY3QoKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5jb25uZWN0aW9uTG9jay5hY3F1aXJlKCk7XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlzQ29ubmVjdGVkKCkgfHwgdGhpcy5pc0Nvbm5lY3RpbmcoKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMubG9zdENvbm5lY3Rpb24gPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHN0b21wQ29uZmlnOiBTdG9tcENvbmZpZyA9IHtcclxuICAgICAgICAgICAgICAgIHdlYlNvY2tldEZhY3Rvcnk6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNvY2tKUyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRTdWJzY3JpcHRpb25VcmwoKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dDogQ09OTkVDVElPTl9USU1FT1VUX01JTExJU0VDT05EU1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICByZWNvbm5lY3REZWxheTogUkVDT05ORUNUX0lOVEVSVkFMX01JTExJU0VDT05EUyxcclxuICAgICAgICAgICAgICAgIGRlYnVnOiB0aGlzLmRlYnVnLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgICBvbkNvbm5lY3Q6IHRoaXMuaGFuZGxlT25Db25uZWN0ZWQuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgICAgIG9uRGlzY29ubmVjdDogdGhpcy5oYW5kbGVPbkRpc2Nvbm5lY3QuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgICAgIG9uV2ViU29ja2V0Q2xvc2U6IHRoaXMuaGFuZGxlT25XZWJTb2NrZXRDbG9zZS5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICAgICAgb25TdG9tcEVycm9yOiB0aGlzLmhhbmRsZU9uU3RvbXBFcnJvci5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICAgICAgb25XZWJTb2NrZXRFcnJvcjogdGhpcy5oYW5kbGVPbldlYlNvY2tldEVycm9yLmJpbmQodGhpcylcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZGVidWcoJ0Nvbm5lY3RpbmcgdGhlIFdlYnNjb2tldCcpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5zdG9tcENsaWVudCA9IG5ldyBDbGllbnQoc3RvbXBDb25maWcpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b21wQ2xpZW50LmFjdGl2YXRlKCk7XHJcbiAgICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5jb25uZWN0aW9uTG9jay5yZWxlYXNlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWFudWFsbHkgZGlzY29ubmVjdCB0aGUgd2Vic29ja2V0LiBUaGUgcmVjb25uZWN0IGxvb3Agd2lsbCBiZSBzdG9wcGVkLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYXN5bmMgZGlzY29ubmVjdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNDb25uZWN0ZWQoKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBhd2FpdCB0aGlzLmNvbm5lY3Rpb25Mb2NrLmFjcXVpcmUoKTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHByaW1pdGl2ZU1hbmFnZXIgb2YgdGhpcy5wcmltaXRpdmVNYW5hZ2Vycy52YWx1ZXMoKSkge1xyXG4gICAgICAgICAgICAgICAgcHJpbWl0aXZlTWFuYWdlci51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLnByaW1pdGl2ZU1hbmFnZXJzLmNsZWFyKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29ubmVjdGVkJC5uZXh0KGZhbHNlKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnN0b21wQ2xpZW50KSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnN0b21wQ2xpZW50LmRlYWN0aXZhdGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuY29ubmVjdGlvbkxvY2sucmVsZWFzZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENoZWNrIGlmIHRoZSB3ZWJzb2NrZXQgaXMgY29ubmVjdGVkXHJcbiAgICAgKiBAcmV0dXJuIGBib29sZWFuYCByZXByZXNlbnRpbmcgaWYgdGhlIHdlYnNvY2tldCBpcyBjb25uZWN0ZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGlzQ29ubmVjdGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghdGhpcy5zdG9tcENsaWVudCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5zdG9tcENsaWVudC5jb25uZWN0ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDaGVjayBpZiB0aGUgd2Vic29ja2V0IGlzIHRyaW5nIHRvIGNvbm5lY3RcclxuICAgICAqIEByZXR1cm4gYGJvb2xlYW5gIHJlcHJlc2VudGluZyBpZiB0aGUgd2Vic29ja2V0IHN0YXR1c1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaXNDb25uZWN0aW5nKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghdGhpcy5zdG9tcENsaWVudCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gIXRoaXMuc3RvbXBDbGllbnQuY29ubmVjdGVkICYmIHRoaXMuc3RvbXBDbGllbnQuYWN0aXZlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnQgcmVzcG9uc2FibGUgdG8gZW1pdCBhbiBldmVudCB3aGVuIHRoZSBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkLlxyXG4gICAgICogRG8gbm90IGZvcmdldCB0byB1bnN1YnNjcmliZSB0aGUgb2JzZXJ2YWJsZSB3aGVuIHlvdSBkb24ndCBuZWVkIGl0IGFueW1vcmUuXHJcbiAgICAgKiBAcmV0dXJuIGBPYnNlcnZhYmxlPGJvb2xlYW4+YFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb25Db25uZWN0KCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3RlZCQuYXNPYnNlcnZhYmxlKClcclxuICAgICAgICAgICAgLnBpcGUoZmlsdGVyKHAgPT4gcCA9PT0gdHJ1ZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnQgcmVzcG9uc2FibGUgdG8gZW1pdCBhbiBldmVudCB3aGVuIHRoZSBjb25uZWN0aW9uIGlzIGNsb3NlZC5cclxuICAgICAqIERvIG5vdCBmb3JnZXQgdG8gdW5zdWJzY3JpYmUgdGhlIG9ic2VydmFibGUgd2hlbiB5b3UgZG9uJ3QgbmVlZCBpdCBhbnltb3JlLlxyXG4gICAgICogQHJldHVybiBgT2JzZXJ2YWJsZTx2b2lkPmBcclxuICAgICAqL1xyXG4gICAgcHVibGljIG9uRGlzY29ubmVjdCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kaXNjb25uZWN0ZWQkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnQgcmVzcG9uc2FibGUgdG8gZW1pdCBhbiBldmVudCB3aGVuIHRoZSBjb25uZWN0aW9uIGlzIHJlZXN0YWJsaXNoZWQuXHJcbiAgICAgKiBEbyBub3QgZm9yZ2V0IHRvIHVuc3Vic2NyaWJlIHRoZSBvYnNlcnZhYmxlIHdoZW4geW91IGRvbid0IG5lZWQgaXQgYW55bW9yZS5cclxuICAgICAqIEByZXR1cm4gYE9ic2VydmFibGU8dm9pZD5gXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvblJlY29ubmVjdCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yZWNvbm5lY3RlZCQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudCByZXNwb25zYWJsZSB0byBlbWl0IGFuIGV2ZW50IHdoZW4gYW4gZXJyb3Igb2N1cnJlZC5cclxuICAgICAqIERvIG5vdCBmb3JnZXQgdG8gdW5zdWJzY3JpYmUgdGhlIG9ic2VydmFibGUgd2hlbiB5b3UgZG9uJ3QgbmVlZCBpdCBhbnltb3JlLlxyXG4gICAgICogQHJldHVybiBgT2JzZXJ2YWJsZTxGcmFtZUltcGw+YFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb25FcnJvcigpOiBPYnNlcnZhYmxlPEZyYW1lSW1wbD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVycm9yJC5hc09ic2VydmFibGUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50IHJlc3BvbnNpYmxlIHRvIGVtaXQgYW4gZXZlbnQgd2hlbiBhIHByaW1pdGl2ZSBpcyBjYWxsZWQuXHJcbiAgICAgKiBEbyBub3QgZm9yZ2V0IHRvIHVuc3Vic2NyaWJlIHRoZSBvYnNlcnZhYmxlIHdoZW4geW91IGRvbid0IG5lZWQgaXQgYW55bW9yZS5cclxuICAgICAqIEB0eXBlUGFyYW0gYDxUPmAgT2JqZWN0IHR5cGUgdGhhdCB3aWxsIGJlIHVzZWQgaW4gdGhlIG9ic2VydmFibGUgZm9yIHRoZSBgZGF0YWAgcHJvcGVydHkuXHJcbiAgICAgKiBAcGFyYW0ge09uRXZlbnRPcHRpb25zfSBvcHRpb25zIENvbmZpZ3VyYXRpb25zIGZvciB0aGUgZXZlbnQuXHJcbiAgICAgKiBAcmV0dXJuIGBPYnNlcnZhYmxlPFByaW1pdGl2ZUV2ZW50PFQ+PmAgT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIGFuIGV2ZW50IHdoZW4gdGhlIHNlcnZpY2UgY2FsbHMgdGhlIHByaW1pdGl2ZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIG9uRXZlbnQ8VD4ob3B0aW9uczogT25FdmVudE9wdGlvbnMpOiBPYnNlcnZhYmxlPFByaW1pdGl2ZUV2ZW50PFQ+PiB7XHJcbiAgICAgICAgY29uc3QgeyBkb21haW4sIHNlcnZpY2UsIHByaW1pdGl2ZSB9ID0gb3B0aW9ucztcclxuICAgICAgICBjb25zdCBrZXkgPSB0aGlzLmJ1aWxkUHJpbWl0aXZlTWFuYWdlcktleShkb21haW4sIHNlcnZpY2UsIHByaW1pdGl2ZSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnByaW1pdGl2ZU1hbmFnZXJzLmhhcyhrZXkpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByaW1pdGl2ZU1hbmFnZXJzLmdldChrZXkpLmdldEV2ZW50T2JzZXJ2YWJsZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcHJpbWl0aXZlTWFuYWdlciA9IG5ldyBQcmltaXRpdmVNYW5hZ2VyPFQ+KGRvbWFpbiwgc2VydmljZSwgcHJpbWl0aXZlKTtcclxuICAgICAgICB0aGlzLnByaW1pdGl2ZU1hbmFnZXJzLnNldChrZXksIHByaW1pdGl2ZU1hbmFnZXIpO1xyXG5cclxuICAgICAgICB0aGlzLmNvbm5lY3QoKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5vbkNvbm5lY3QoKVxyXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcclxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlU3RvbXBTdWJzY3JpcHRpb25zKHByaW1pdGl2ZU1hbmFnZXIpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBwcmltaXRpdmVNYW5hZ2VyXHJcbiAgICAgICAgICAgIC5nZXRFdmVudE9ic2VydmFibGUoKVxyXG4gICAgICAgICAgICAucGlwZShmaW5hbGl6ZSgoKSA9PiB0aGlzLnVuc3Vic2NyaWJlUHJpbWl0aXZlT25GaW5hbGl6ZShwcmltaXRpdmVNYW5hZ2VyKSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnQgcmVzcG9uc2libGUgdG8gZW1pdCBhbiBldmVudCB3aGVuIGEgc3Vic2NyaXB0aW9uIGlzIGNyZWF0ZWQgZm9yIHRoZSBwcmltaXRpdmUuXHJcbiAgICAgKiBEbyBub3QgZm9yZ2V0IHRvIHVuc3Vic2NyaWJlIHRoZSBvYnNlcnZhYmxlIHdoZW4geW91IGRvbid0IG5lZWQgaXQgYW55bW9yZS5cclxuICAgICAqIEBwYXJhbSB7T25FdmVudE9wdGlvbnN9IG9wdGlvbnMgQ29uZmlndXJhdGlvbnMgZm9yIHRoZSBldmVudC5cclxuICAgICAqIE9ic2VydmFibGUgcmVzcG9uc8OhdmVsIHBvciBlbWl0aXIgdW1hIG5vdGlmaWNhw6fDo28gYXDDs3MgbyBzdWJzY3JpYmUgZG8gZXZlbnRvIHBlbGEgcHJpbWVpcmEgdmV6LlxyXG4gICAgICogQHJldHVybiBgT2JzZXJ2YWJsZTxib29sZWFuPmAgT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIGFuIGV2ZW50IHdoZW4gdGhlIHNlcnZpY2UgY2FsbHMgdGhlIHByaW1pdGl2ZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIG9uU3Vic2NyaWJlKG9wdGlvbnM6IE9uRXZlbnRPcHRpb25zKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICAgICAgY29uc3QgeyBkb21haW4sIHNlcnZpY2UsIHByaW1pdGl2ZSB9ID0gb3B0aW9ucztcclxuICAgICAgICBjb25zdCBrZXkgPSB0aGlzLmJ1aWxkUHJpbWl0aXZlTWFuYWdlcktleShkb21haW4sIHNlcnZpY2UsIHByaW1pdGl2ZSk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLm9uQ29ubmVjdCgpLnBpcGUoXHJcbiAgICAgICAgICAgIHRha2UoMSksXHJcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wcmltaXRpdmVNYW5hZ2Vycy5oYXMoa2V5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByaW1pdGl2ZU1hbmFnZXJzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoa2V5KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuZ2V0U3Vic2NyaXB0aW9uT2JzZXJ2YWJsZSgpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKHRha2UoMSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnN1YnNjcmliZWQkLmFzT2JzZXJ2YWJsZSgpLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyKChwcmltaXRpdmVNYW5hZ2VyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmJ1aWxkUHJpbWl0aXZlTWFuYWdlcktleShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW1pdGl2ZU1hbmFnZXIuZG9tYWluLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbWl0aXZlTWFuYWdlci5zZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbWl0aXZlTWFuYWdlci5wcmltaXRpdmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgKSA9PT0ga2V5O1xyXG4gICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgIG1hcCgoKSA9PiB0cnVlKSxcclxuICAgICAgICAgICAgICAgICAgICB0YWtlKDEpXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBkZWJ1ZyhtZXNzYWdlOiBzdHJpbmcsIC4uLm9wdGlvbmFsUGFyYW1zOiBhbnlbXSkge1xyXG4gICAgICAgIGlmICghdGhpcy5kZWJ1Z0VuYWJsZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnNvbGUubG9nKCdXUyBkZWJ1ZzogJyArIG1lc3NhZ2UsIC4uLm9wdGlvbmFsUGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGluZm8obWVzc2FnZTogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc29sZS5pbmZvKCdXUyBpbmZvOiAnICsgbWVzc2FnZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBoYW5kbGVPbkNvbm5lY3RlZCgpIHtcclxuICAgICAgICB0aGlzLmluZm8oJ1dlYnNjb2tldCBjb25uZWN0ZWQnKTtcclxuXHJcbiAgICAgICAgdGhpcy5jb25uZWN0ZWQkLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgaWYgKHRoaXMubG9zdENvbm5lY3Rpb24pIHtcclxuICAgICAgICAgICAgdGhpcy5pbmZvKCdXZWJzY29rZXQgcmVjb25uZWN0ZWQsIHJlY3JpYXRpbmcgc3Vic2NyaXB0aW9ucycpO1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZVJlY29ubmVjdGlvbigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGhhbmRsZU9uRGlzY29ubmVjdCgpIHtcclxuICAgICAgICB0aGlzLmluZm8oJ1dlYnNjb2tldCBkaXNjb25uZWN0ZWQnKTtcclxuXHJcbiAgICAgICAgdGhpcy5jb25uZWN0ZWQkLm5leHQoZmFsc2UpO1xyXG4gICAgICAgIHRoaXMuZGlzY29ubmVjdGVkJC5uZXh0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBoYW5kbGVPbldlYlNvY2tldENsb3NlKGRhdGE6IENsb3NlRXZlbnQpIHtcclxuICAgICAgICBpZiAoZGF0YT8ucmVhc29uPy50b0xvd2VyQ2FzZSgpLmluZGV4T2YoXCJnbyBhd2F5XCIpICE9PSAtMSkge1xyXG4gICAgICAgICAgICB0aGlzLmxvc3RDb25uZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcignQXV0aGVudGljYXRpb25FcnJvcicsIG5ldyBGcmFtZUltcGwoXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29tbWFuZDogZGF0YS50eXBlLFxyXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogZGF0YS5yZWFzb25cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICkpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZGF0YT8ucmVhc29uPy50b0xvd2VyQ2FzZSgpLmluZGV4T2YoXCJjYW5ub3QgY29ubmVjdCB0byBzZXJ2ZXJcIikgIT09IC0xKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9zdENvbm5lY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKCdDb25uZWN0aW9uRXJyb3InLCBuZXcgRnJhbWVJbXBsKFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ6IGRhdGEudHlwZSxcclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGRhdGEucmVhc29uXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGRhdGEud2FzQ2xlYW4pIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5sb3N0Q29ubmVjdGlvbiA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBoYW5kbGVPblN0b21wRXJyb3IoZGF0YTogRnJhbWVJbXBsKSB7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVFcnJvcignU3RvbXBFcnJvcicsIGRhdGEpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5pc0F1dGhlbnRpY2F0aW9uRXJyb3IoZGF0YSkpIHtcclxuICAgICAgICAgICAgdGhpcy5pbmZvKCdBdXRoZW50aWNhdGlvbiBlcnJvciwgcmVjcmlhdGluZyBzdWJzY3JpcHRpb25zJyk7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlUmVjb25uZWN0aW9uKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaXNBdXRoZW50aWNhdGlvbkVycm9yKGRhdGE6IEZyYW1lSW1wbCkge1xyXG4gICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGRhdGE/LmhlYWRlcnM/Lm1lc3NhZ2U7XHJcbiAgICAgICAgaWYgKCFlcnJvck1lc3NhZ2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGVycm9yTWVzc2FnZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2ZvcmJpZGRlbmV4Y2VwdGlvbicpICE9PSAtMTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGhhbmRsZU9uV2ViU29ja2V0RXJyb3IoZGF0YTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVFcnJvcignV2ViU29ja2V0RXJyb3InLCBkYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGhhbmRsZUVycm9yKG9yaWdpbjogc3RyaW5nLCBkYXRhOiBGcmFtZUltcGwpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKG9yaWdpbiwgZGF0YSk7XHJcbiAgICAgICAgdGhpcy5lcnJvciQubmV4dChkYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGhhbmRsZVJlY29ubmVjdGlvbigpIHtcclxuICAgICAgICB0aGlzLmxvc3RDb25uZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5yZWNvbm5lY3RQcmltaXRpdmVzKCk7XHJcbiAgICAgICAgdGhpcy5yZWNvbm5lY3RlZCQubmV4dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVjb25uZWN0UHJpbWl0aXZlcygpOiB2b2lkIHtcclxuICAgICAgICBmb3IgKGNvbnN0IHByaW1pdGl2ZU1hbmFnZXIgb2YgdGhpcy5wcmltaXRpdmVNYW5hZ2Vycy52YWx1ZXMoKSkge1xyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZVN0b21wU3Vic2NyaXB0aW9ucyhwcmltaXRpdmVNYW5hZ2VyKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBidWlsZFN1YnNjcmlwdGlvblVybFdpdGhUb2tlbihkb21haW46IHN0cmluZywgc2VydmljZTogc3RyaW5nLCBwcmltaXRpdmU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgYXV0aFRva2VuID0gdGhpcy51c2VySW5mb3JtYXRpb25TZXJ2aWNlLmdldEF1dGhUb2tlbigpO1xyXG4gICAgICAgIGNvbnN0IHRlbmFudCA9IHRoaXMudXNlckluZm9ybWF0aW9uU2VydmljZS5nZXRUZW5hbnREb21haW4oKTtcclxuICAgICAgICByZXR1cm4gYC90b3BpYy8ke3RlbmFudH0vJHthdXRoVG9rZW59LyR7ZG9tYWlufS8ke3NlcnZpY2V9LyR7cHJpbWl0aXZlfWA7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRTdWJzY3JpcHRpb25VcmxXaXRob3V0VG9rZW4oZG9tYWluOiBzdHJpbmcsIHNlcnZpY2U6IHN0cmluZywgcHJpbWl0aXZlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IHRlbmFudCA9IHRoaXMudXNlckluZm9ybWF0aW9uU2VydmljZS5nZXRUZW5hbnREb21haW4oKTtcclxuICAgICAgICByZXR1cm4gYC90b3BpYy8ke3RlbmFudH0vJHtkb21haW59LyR7c2VydmljZX0vJHtwcmltaXRpdmV9YDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGJ1aWxkUHJpbWl0aXZlTWFuYWdlcktleShkb21haW46IHN0cmluZywgc2VydmljZTogc3RyaW5nLCBwcmltaXRpdmU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIGAke2RvbWFpbn0vJHtzZXJ2aWNlfS8ke3ByaW1pdGl2ZX1gO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgdW5zdWJzY3JpYmVQcmltaXRpdmVPbkZpbmFsaXplKHByaW1pdGl2ZU1hbmFnZXI6IFByaW1pdGl2ZU1hbmFnZXI8YW55Pikge1xyXG4gICAgICAgIGlmIChwcmltaXRpdmVNYW5hZ2VyLmhhc09ic2VydmVycygpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHByaW1pdGl2ZU1hbmFnZXIudW5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAgICAgY29uc3Qga2V5ID0gdGhpcy5idWlsZFByaW1pdGl2ZU1hbmFnZXJLZXkocHJpbWl0aXZlTWFuYWdlci5kb21haW4sIHByaW1pdGl2ZU1hbmFnZXIuc2VydmljZSwgcHJpbWl0aXZlTWFuYWdlci5wcmltaXRpdmUpO1xyXG4gICAgICAgIHRoaXMucHJpbWl0aXZlTWFuYWdlcnMuZGVsZXRlKGtleSk7XHJcblxyXG4gICAgICAgIGF3YWl0IHRoaXMuZGlzY29ubmVjdElmTm9Nb3JlT2JzZXJ2YWJsZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFzeW5jIGRpc2Nvbm5lY3RJZk5vTW9yZU9ic2VydmFibGVzKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmdldE9ic2VydmVyc0NvdW50KCkgPT09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5kZWJ1ZygnTWFudWFsbHkgZGlzY29ubmVjdGluZyBiZWNhdXNlIHRoZXJlIGFyZSBubyBtb3JlIG9ic2VydmVycycpO1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRpc2Nvbm5lY3QoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRPYnNlcnZlcnNDb3VudCgpOiBudW1iZXIge1xyXG4gICAgICAgIGxldCBvYnNlcnZlcnNDb3VudCA9IDA7XHJcblxyXG4gICAgICAgIHRoaXMucHJpbWl0aXZlTWFuYWdlcnMuZm9yRWFjaChwcmltaXRpdmVNYW5hZ2VyID0+IHtcclxuICAgICAgICAgICAgb2JzZXJ2ZXJzQ291bnQgKz0gcHJpbWl0aXZlTWFuYWdlci5nZXRPYnNlcnZlcnNDb3VudCgpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gb2JzZXJ2ZXJzQ291bnQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjcmVhdGVTdG9tcFN1YnNjcmlwdGlvbjxUPihkZXN0aW5hdGlvbjogc3RyaW5nLCBwcmltaXRpdmVNYW5hZ2VyOiBQcmltaXRpdmVNYW5hZ2VyPFQ+KTogU3RvbXBTdWJzY3JpcHRpb24ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnN0b21wQ2xpZW50LnN1YnNjcmliZShkZXN0aW5hdGlvbiwgKG1lc3NhZ2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBldmVudCA9IEpTT04ucGFyc2UobWVzc2FnZS5ib2R5IHx8ICd7fScpO1xyXG4gICAgICAgICAgICBwcmltaXRpdmVNYW5hZ2VyLmZpcmVFdmVudChldmVudCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjcmVhdGVTdG9tcFN1YnNjcmlwdGlvbnM8VD4ocHJpbWl0aXZlTWFuYWdlcjogUHJpbWl0aXZlTWFuYWdlcjxUPik6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvblVybFdpdGhUb2tlbiA9IHRoaXMuYnVpbGRTdWJzY3JpcHRpb25VcmxXaXRoVG9rZW4oXHJcbiAgICAgICAgICAgIHByaW1pdGl2ZU1hbmFnZXIuZG9tYWluLFxyXG4gICAgICAgICAgICBwcmltaXRpdmVNYW5hZ2VyLnNlcnZpY2UsXHJcbiAgICAgICAgICAgIHByaW1pdGl2ZU1hbmFnZXIucHJpbWl0aXZlXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBzdWJzY3JpcHRpb25VcmxXaXRob3V0VG9rZW4gPSB0aGlzLmdldFN1YnNjcmlwdGlvblVybFdpdGhvdXRUb2tlbihcclxuICAgICAgICAgICAgcHJpbWl0aXZlTWFuYWdlci5kb21haW4sXHJcbiAgICAgICAgICAgIHByaW1pdGl2ZU1hbmFnZXIuc2VydmljZSxcclxuICAgICAgICAgICAgcHJpbWl0aXZlTWFuYWdlci5wcmltaXRpdmVcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBjb25zdCBzdG9tcFN1YnNjcmlwdGlvbldpdGhUb2tlbiA9IHRoaXMuY3JlYXRlU3RvbXBTdWJzY3JpcHRpb24oc3Vic2NyaXB0aW9uVXJsV2l0aFRva2VuLCBwcmltaXRpdmVNYW5hZ2VyKTtcclxuICAgICAgICBjb25zdCBzdG9tcFN1YnNjcmlwdGlvbldpdGhvdXRUb2tlbiA9IHRoaXMuY3JlYXRlU3RvbXBTdWJzY3JpcHRpb24oc3Vic2NyaXB0aW9uVXJsV2l0aG91dFRva2VuLCBwcmltaXRpdmVNYW5hZ2VyKTtcclxuICAgICAgICBwcmltaXRpdmVNYW5hZ2VyLnN1YnNjcmliZShzdG9tcFN1YnNjcmlwdGlvbldpdGhUb2tlbiwgc3RvbXBTdWJzY3JpcHRpb25XaXRob3V0VG9rZW4pO1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaWJlZCQubmV4dChwcmltaXRpdmVNYW5hZ2VyKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldFN1YnNjcmlwdGlvblVybCgpIHtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy51c2VySW5mb3JtYXRpb25TZXJ2aWNlLmdldFdlYlNvY2tldFVybCgpfS9zdWJzY3JpcHRpb25gO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,26 @@
1
+ import { __decorate } from "tslib";
2
+ import { NgModule, InjectionToken } from "@angular/core";
3
+ export var HostProjectConfigsInjectionToken = new InjectionToken("hostProjectConfigs");
4
+ var AgroAngularComponentsModule = /** @class */ (function () {
5
+ function AgroAngularComponentsModule() {
6
+ }
7
+ AgroAngularComponentsModule_1 = AgroAngularComponentsModule;
8
+ AgroAngularComponentsModule.forRoot = function (config) {
9
+ return {
10
+ ngModule: AgroAngularComponentsModule_1,
11
+ providers: [
12
+ {
13
+ provide: HostProjectConfigsInjectionToken,
14
+ useValue: config
15
+ }
16
+ ]
17
+ };
18
+ };
19
+ var AgroAngularComponentsModule_1;
20
+ AgroAngularComponentsModule = AgroAngularComponentsModule_1 = __decorate([
21
+ NgModule({})
22
+ ], AgroAngularComponentsModule);
23
+ return AgroAngularComponentsModule;
24
+ }());
25
+ export { AgroAngularComponentsModule };
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1hbmd1bGFyLWNvbXBvbmVudHMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvci1hZ3JvbmVnb2Npby9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJhZ3JvLWFuZ3VsYXItY29tcG9uZW50cy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFSCxRQUFRLEVBQ1IsY0FBYyxFQUNqQixNQUFNLGVBQWUsQ0FBQztBQUV2QixNQUFNLENBQUMsSUFBTSxnQ0FBZ0MsR0FBRyxJQUFJLGNBQWMsQ0FBcUIsb0JBQW9CLENBQUMsQ0FBQztBQVM3RztJQUFBO0lBWUEsQ0FBQztvQ0FaWSwyQkFBMkI7SUFDN0IsbUNBQU8sR0FBZCxVQUFlLE1BQTBCO1FBQ3JDLE9BQU87WUFDSCxRQUFRLEVBQUUsNkJBQTJCO1lBQ3JDLFNBQVMsRUFBRTtnQkFDUDtvQkFDSSxPQUFPLEVBQUUsZ0NBQWdDO29CQUN6QyxRQUFRLEVBQUUsTUFBTTtpQkFDbkI7YUFDSjtTQUNKLENBQUM7SUFDTixDQUFDOztJQVhRLDJCQUEyQjtRQUZ2QyxRQUFRLENBQUMsRUFDVCxDQUFDO09BQ1csMkJBQTJCLENBWXZDO0lBQUQsa0NBQUM7Q0FBQSxBQVpELElBWUM7U0FaWSwyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgTW9kdWxlV2l0aFByb3ZpZGVycyxcclxuICAgIE5nTW9kdWxlLFxyXG4gICAgSW5qZWN0aW9uVG9rZW5cclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuZXhwb3J0IGNvbnN0IEhvc3RQcm9qZWN0Q29uZmlnc0luamVjdGlvblRva2VuID0gbmV3IEluamVjdGlvblRva2VuPEhvc3RQcm9qZWN0Q29uZmlncz4oXCJob3N0UHJvamVjdENvbmZpZ3NcIik7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEhvc3RQcm9qZWN0Q29uZmlncyB7XHJcbiAgICBkb21haW46IHN0cmluZztcclxuICAgIHNlcnZpY2U6IHN0cmluZztcclxufVxyXG5cclxuQE5nTW9kdWxlKHtcclxufSlcclxuZXhwb3J0IGNsYXNzIEFncm9Bbmd1bGFyQ29tcG9uZW50c01vZHVsZSB7XHJcbiAgICBzdGF0aWMgZm9yUm9vdChjb25maWc6IEhvc3RQcm9qZWN0Q29uZmlncyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8QWdyb0FuZ3VsYXJDb21wb25lbnRzTW9kdWxlPiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgbmdNb2R1bGU6IEFncm9Bbmd1bGFyQ29tcG9uZW50c01vZHVsZSxcclxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZTogSG9zdFByb2plY3RDb25maWdzSW5qZWN0aW9uVG9rZW4sXHJcbiAgICAgICAgICAgICAgICAgICAgdXNlVmFsdWU6IGNvbmZpZ1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,72 @@
1
+ import { __values } from "tslib";
2
+ /**
3
+ * Classe com funções úteis para Arrays.
4
+ */
5
+ var AgroArrayUtils = /** @class */ (function () {
6
+ function AgroArrayUtils() {
7
+ }
8
+ /**
9
+ * Verifica se o valor informado é um array.
10
+ */
11
+ AgroArrayUtils.isArray = function (value) {
12
+ return Array.isArray(value);
13
+ };
14
+ /**
15
+ * Remove um item de um array.
16
+ * @param array Array de onde o item será removido.
17
+ * @param item Item a ser removido.
18
+ */
19
+ AgroArrayUtils.removeItem = function (array, item) {
20
+ var index = array.indexOf(item);
21
+ if (index !== -1) {
22
+ array.splice(index, 1);
23
+ }
24
+ };
25
+ /**
26
+ * Remove um item de um array por índice.
27
+ * @param array Array de onde o item será removido.
28
+ * @param index Índice do item a ser removido.
29
+ */
30
+ AgroArrayUtils.removeItemByIndex = function (array, index) {
31
+ array.splice(index, 1);
32
+ };
33
+ /**
34
+ * Remove todos os itens de um array.
35
+ * @param array Array de onde os itens serão removidos.
36
+ */
37
+ AgroArrayUtils.removeAllItems = function (array) {
38
+ array.splice(0, array.length);
39
+ };
40
+ /**
41
+ * Verifica se um array é vazio.
42
+ * @param array Array a ser verificado.
43
+ */
44
+ AgroArrayUtils.isEmpty = function (array) {
45
+ return AgroArrayUtils.isArray(array) && array.length === 0;
46
+ };
47
+ /**
48
+ * Localiza um item em um array de objetos de acordo com a propriedade e valor informados.
49
+ */
50
+ AgroArrayUtils.findItemByProperty = function (array, property, value) {
51
+ var e_1, _a;
52
+ try {
53
+ for (var array_1 = __values(array), array_1_1 = array_1.next(); !array_1_1.done; array_1_1 = array_1.next()) {
54
+ var item = array_1_1.value;
55
+ if (item[property] === value) {
56
+ return item;
57
+ }
58
+ }
59
+ }
60
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
61
+ finally {
62
+ try {
63
+ if (array_1_1 && !array_1_1.done && (_a = array_1.return)) _a.call(array_1);
64
+ }
65
+ finally { if (e_1) throw e_1.error; }
66
+ }
67
+ return null;
68
+ };
69
+ return AgroArrayUtils;
70
+ }());
71
+ export { AgroArrayUtils };
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1hcnJheS11dGlscy5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItYWdyb25lZ29jaW8vYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tbW9uL2Fncm8tYXJyYXktdXRpbHMuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHO0FBQ0g7SUFBQTtJQXdEQSxDQUFDO0lBdkRHOztPQUVHO0lBQ1csc0JBQU8sR0FBckIsVUFBc0IsS0FBVTtRQUM1QixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDVyx5QkFBVSxHQUF4QixVQUF5QixLQUFZLEVBQUUsSUFBUztRQUM1QyxJQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ2QsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDMUI7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNXLGdDQUFpQixHQUEvQixVQUFnQyxLQUFZLEVBQUUsS0FBYTtRQUN2RCxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQ7OztPQUdHO0lBQ1csNkJBQWMsR0FBNUIsVUFBNkIsS0FBWTtRQUNyQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7T0FHRztJQUNXLHNCQUFPLEdBQXJCLFVBQXNCLEtBQVk7UUFDOUIsT0FBTyxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRDs7T0FFRztJQUNXLGlDQUFrQixHQUFoQyxVQUFpQyxLQUFZLEVBQUUsUUFBZ0IsRUFBRSxLQUFVOzs7WUFDdkUsS0FBbUIsSUFBQSxVQUFBLFNBQUEsS0FBSyxDQUFBLDRCQUFBLCtDQUFFO2dCQUFyQixJQUFNLElBQUksa0JBQUE7Z0JBQ1gsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssS0FBSyxFQUFFO29CQUMxQixPQUFPLElBQUksQ0FBQztpQkFDZjthQUNKOzs7Ozs7Ozs7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0wscUJBQUM7QUFBRCxDQUFDLEFBeERELElBd0RDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIENsYXNzZSBjb20gZnVuw6fDtWVzIMO6dGVpcyBwYXJhIEFycmF5cy5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBBZ3JvQXJyYXlVdGlscyB7XHJcbiAgICAvKipcclxuICAgICAqIFZlcmlmaWNhIHNlIG8gdmFsb3IgaW5mb3JtYWRvIMOpIHVtIGFycmF5LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzQXJyYXkodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZSB1bSBpdGVtIGRlIHVtIGFycmF5LlxyXG4gICAgICogQHBhcmFtIGFycmF5IEFycmF5IGRlIG9uZGUgbyBpdGVtIHNlcsOhIHJlbW92aWRvLlxyXG4gICAgICogQHBhcmFtIGl0ZW0gSXRlbSBhIHNlciByZW1vdmlkby5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyByZW1vdmVJdGVtKGFycmF5OiBhbnlbXSwgaXRlbTogYW55KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSBhcnJheS5pbmRleE9mKGl0ZW0pO1xyXG4gICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcclxuICAgICAgICAgICAgYXJyYXkuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZW1vdmUgdW0gaXRlbSBkZSB1bSBhcnJheSBwb3Igw61uZGljZS5cclxuICAgICAqIEBwYXJhbSBhcnJheSBBcnJheSBkZSBvbmRlIG8gaXRlbSBzZXLDoSByZW1vdmlkby5cclxuICAgICAqIEBwYXJhbSBpbmRleCDDjW5kaWNlIGRvIGl0ZW0gYSBzZXIgcmVtb3ZpZG8uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgcmVtb3ZlSXRlbUJ5SW5kZXgoYXJyYXk6IGFueVtdLCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgYXJyYXkuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZSB0b2RvcyBvcyBpdGVucyBkZSB1bSBhcnJheS5cclxuICAgICAqIEBwYXJhbSBhcnJheSBBcnJheSBkZSBvbmRlIG9zIGl0ZW5zIHNlcsOjbyByZW1vdmlkb3MuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgcmVtb3ZlQWxsSXRlbXMoYXJyYXk6IGFueVtdKTogdm9pZCB7XHJcbiAgICAgICAgYXJyYXkuc3BsaWNlKDAsIGFycmF5Lmxlbmd0aCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWZXJpZmljYSBzZSB1bSBhcnJheSDDqSB2YXppby5cclxuICAgICAqIEBwYXJhbSBhcnJheSBBcnJheSBhIHNlciB2ZXJpZmljYWRvLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzRW1wdHkoYXJyYXk6IGFueVtdKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIEFncm9BcnJheVV0aWxzLmlzQXJyYXkoYXJyYXkpICYmIGFycmF5Lmxlbmd0aCA9PT0gMDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIExvY2FsaXphIHVtIGl0ZW0gZW0gdW0gYXJyYXkgZGUgb2JqZXRvcyBkZSBhY29yZG8gY29tIGEgcHJvcHJpZWRhZGUgZSB2YWxvciBpbmZvcm1hZG9zLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGZpbmRJdGVtQnlQcm9wZXJ0eShhcnJheTogYW55W10sIHByb3BlcnR5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBhbnkge1xyXG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBhcnJheSkge1xyXG4gICAgICAgICAgICBpZiAoaXRlbVtwcm9wZXJ0eV0gPT09IHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,38 @@
1
+ import { __read } from "tslib";
2
+ export { AgroCookieUtils as ACU, AgroCookieUtils as CookieUtils };
3
+ var AgroCookieUtils = /** @class */ (function () {
4
+ function AgroCookieUtils() {
5
+ }
6
+ AgroCookieUtils.getCookie = function (name, parseURIValue) {
7
+ if (parseURIValue === void 0) { parseURIValue = false; }
8
+ var cookieValue = document.cookie.split(';')
9
+ .map(function (cookie) { return cookie.trim(); })
10
+ .find(function (cookie) { return cookie.startsWith(name); });
11
+ var result = cookieValue === null || cookieValue === void 0 ? void 0 : cookieValue.split('=')[1];
12
+ if (parseURIValue && result) {
13
+ result = decodeURIComponent(result);
14
+ }
15
+ return result;
16
+ };
17
+ AgroCookieUtils.parseCookieToObject = function (cookieString, parseURIString) {
18
+ if (parseURIString === void 0) { parseURIString = false; }
19
+ var cookieObject = {};
20
+ if (parseURIString) {
21
+ cookieString = decodeURIComponent(cookieString);
22
+ }
23
+ cookieString.split(';').forEach(function (cookie) {
24
+ var _a = __read(cookie.split('=').map(function (c) { return c.trim(); }), 2), key = _a[0], value = _a[1];
25
+ cookieObject[key] = value;
26
+ });
27
+ return cookieObject;
28
+ };
29
+ AgroCookieUtils.prototype.setCookie = function (name, value, days) {
30
+ var date = new Date();
31
+ date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
32
+ var expires = 'expires=' + date.toUTCString();
33
+ document.cookie = name + '=' + value + ';' + expires + ';path=/';
34
+ };
35
+ return AgroCookieUtils;
36
+ }());
37
+ export { AgroCookieUtils };
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1jb29raWUtdXRpbHMuY2xhc3MuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWFncm9uZWdvY2lvL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbW1vbi9hZ3JvLWNvb2tpZS11dGlscy5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFDLGVBQWUsSUFBSSxHQUFHLEVBQUUsZUFBZSxJQUFJLFdBQVcsRUFBQyxDQUFDO0FBRWhFO0lBQUE7SUFtQ0EsQ0FBQztJQWpDaUIseUJBQVMsR0FBdkIsVUFBd0IsSUFBWSxFQUFFLGFBQXFCO1FBQXJCLDhCQUFBLEVBQUEscUJBQXFCO1FBQ3ZELElBQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUN6QyxHQUFHLENBQUMsVUFBQSxNQUFNLElBQUksT0FBQSxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQWIsQ0FBYSxDQUFDO2FBQzVCLElBQUksQ0FBQyxVQUFBLE1BQU0sSUFBSSxPQUFBLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQXZCLENBQXVCLENBQUMsQ0FBQztRQUM3QyxJQUFJLE1BQU0sR0FBRyxXQUFXLGFBQVgsV0FBVyx1QkFBWCxXQUFXLENBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUV4QyxJQUFJLGFBQWEsSUFBSSxNQUFNLEVBQUU7WUFDekIsTUFBTSxHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3ZDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFFbEIsQ0FBQztJQUVhLG1DQUFtQixHQUFqQyxVQUFrQyxZQUFvQixFQUFFLGNBQXNCO1FBQXRCLCtCQUFBLEVBQUEsc0JBQXNCO1FBQzFFLElBQU0sWUFBWSxHQUE4QixFQUFFLENBQUM7UUFDbkQsSUFBSSxjQUFjLEVBQUU7WUFDaEIsWUFBWSxHQUFHLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ25EO1FBQ0QsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQSxNQUFNO1lBQzVCLElBQUEsd0VBQW1ELEVBQWxELFdBQUcsRUFBRSxhQUE2QyxDQUFDO1lBQzFELFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLFlBQVksQ0FBQztJQUN4QixDQUFDO0lBRUQsbUNBQVMsR0FBVCxVQUFVLElBQVksRUFBRSxLQUFhLEVBQUUsSUFBWTtRQUMvQyxJQUFNLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDNUQsSUFBTSxPQUFPLEdBQUcsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNoRCxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsS0FBSyxHQUFHLEdBQUcsR0FBRyxPQUFPLEdBQUcsU0FBUyxDQUFDO0lBQ3JFLENBQUM7SUFHTCxzQkFBQztBQUFELENBQUMsQUFuQ0QsSUFtQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuZXhwb3J0IHtBZ3JvQ29va2llVXRpbHMgYXMgQUNVLCBBZ3JvQ29va2llVXRpbHMgYXMgQ29va2llVXRpbHN9O1xyXG5cclxuZXhwb3J0IGNsYXNzIEFncm9Db29raWVVdGlscyB7XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBnZXRDb29raWUobmFtZTogc3RyaW5nLCBwYXJzZVVSSVZhbHVlID0gZmFsc2UpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IGNvb2tpZVZhbHVlID0gZG9jdW1lbnQuY29va2llLnNwbGl0KCc7JylcclxuICAgICAgICAgICAgLm1hcChjb29raWUgPT4gY29va2llLnRyaW0oKSlcclxuICAgICAgICAgICAgLmZpbmQoY29va2llID0+IGNvb2tpZS5zdGFydHNXaXRoKG5hbWUpKTtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gY29va2llVmFsdWU/LnNwbGl0KCc9JylbMV07XHJcblxyXG4gICAgICAgIGlmIChwYXJzZVVSSVZhbHVlICYmIHJlc3VsdCkge1xyXG4gICAgICAgICAgICByZXN1bHQgPSBkZWNvZGVVUklDb21wb25lbnQocmVzdWx0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBwYXJzZUNvb2tpZVRvT2JqZWN0KGNvb2tpZVN0cmluZzogc3RyaW5nLCBwYXJzZVVSSVN0cmluZyA9IGZhbHNlKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XHJcbiAgICAgICAgY29uc3QgY29va2llT2JqZWN0OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XHJcbiAgICAgICAgaWYgKHBhcnNlVVJJU3RyaW5nKSB7XHJcbiAgICAgICAgICAgIGNvb2tpZVN0cmluZyA9IGRlY29kZVVSSUNvbXBvbmVudChjb29raWVTdHJpbmcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb29raWVTdHJpbmcuc3BsaXQoJzsnKS5mb3JFYWNoKGNvb2tpZSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IFtrZXksIHZhbHVlXSA9IGNvb2tpZS5zcGxpdCgnPScpLm1hcChjID0+IGMudHJpbSgpKTtcclxuICAgICAgICAgICAgY29va2llT2JqZWN0W2tleV0gPSB2YWx1ZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gY29va2llT2JqZWN0O1xyXG4gICAgfVxyXG5cclxuICAgIHNldENvb2tpZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIGRheXM6IG51bWJlcikge1xyXG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIGRhdGUuc2V0VGltZShkYXRlLmdldFRpbWUoKSArIChkYXlzICogMjQgKiA2MCAqIDYwICogMTAwMCkpO1xyXG4gICAgICAgIGNvbnN0IGV4cGlyZXMgPSAnZXhwaXJlcz0nICsgZGF0ZS50b1VUQ1N0cmluZygpO1xyXG4gICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IG5hbWUgKyAnPScgKyB2YWx1ZSArICc7JyArIGV4cGlyZXMgKyAnO3BhdGg9Lyc7XHJcbiAgICB9XHJcblxyXG5cclxufVxyXG4iXX0=