@xsolla/payment-client-core 0.0.4 → 0.0.6

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 (223) hide show
  1. package/esm2020/lib/core/device-finger-print/device-finger-print-components.interface.mjs +2 -0
  2. package/esm2020/lib/core/device-finger-print/device-finger-print.service.mjs +167 -0
  3. package/esm2020/lib/core/device-finger-print/fingerprint-js.interface.mjs +2 -0
  4. package/esm2020/lib/core/device-finger-print/hash.type.mjs +2 -0
  5. package/esm2020/lib/core/exceptions-handling/elk/additional-info.interface.mjs +2 -0
  6. package/esm2020/lib/core/exceptions-handling/elk/elk-logger.service.mjs +120 -0
  7. package/esm2020/lib/core/exceptions-handling/elk/error-without-meta-fields.interface.mjs +2 -0
  8. package/esm2020/lib/core/exceptions-handling/elk/log-message.interface.mjs +2 -0
  9. package/esm2020/lib/core/exceptions-handling/errors/default-terminal-error.class.mjs +8 -0
  10. package/esm2020/lib/core/exceptions-handling/errors/elk-error-types.enum.mjs +13 -0
  11. package/esm2020/lib/core/exceptions-handling/errors/tagged-error.class.mjs +16 -0
  12. package/esm2020/lib/core/exceptions-handling/errors/terminal-error.class.mjs +8 -0
  13. package/esm2020/lib/core/exceptions-handling/errors/token-error.class.mjs +7 -0
  14. package/esm2020/lib/core/exceptions-handling/errors/ws-error.class.mjs +10 -0
  15. package/esm2020/lib/core/payment/actions/action-factory-value.interface.mjs +2 -0
  16. package/esm2020/lib/core/payment/actions/action-type-command.map.mjs +6 -0
  17. package/esm2020/lib/core/payment/actions/action.interface.mjs +2 -0
  18. package/esm2020/lib/core/payment/actions/check-status/check-status.action.class.mjs +16 -0
  19. package/esm2020/lib/core/payment/actions/check-status/check-status.action.token.mjs +11 -0
  20. package/esm2020/lib/core/payment/actions/check-status/check-status.action.type.mjs +2 -0
  21. package/esm2020/lib/core/payment/actions/next-action.interface.mjs +2 -0
  22. package/esm2020/lib/core/payment/actions/next-action.service.mjs +55 -0
  23. package/esm2020/lib/core/payment/actions/next-actions.mjs +11 -0
  24. package/esm2020/lib/core/payment/actions/show-fields/show-fields.action.class.mjs +16 -0
  25. package/esm2020/lib/core/payment/actions/show-fields/show-fields.action.token.mjs +11 -0
  26. package/esm2020/lib/core/payment/actions/show-fields/show-fields.action.type.mjs +2 -0
  27. package/esm2020/lib/core/payment/actions/status-updated/status-updated.action.class.mjs +13 -0
  28. package/esm2020/lib/core/payment/actions/status-updated/status-updated.action.token.mjs +11 -0
  29. package/esm2020/lib/core/payment/actions/status-updated/status-updated.action.type.mjs +2 -0
  30. package/esm2020/lib/core/payment/field-names.enum.mjs +64 -0
  31. package/esm2020/lib/core/payment/field.interface.mjs +1 -1
  32. package/esm2020/lib/core/payment/form/common-control-config.interface.mjs +2 -0
  33. package/esm2020/lib/core/payment/form/controls/control-config.mjs +6 -0
  34. package/esm2020/lib/core/payment/form/controls/control-config.service.mjs +39 -0
  35. package/esm2020/lib/core/payment/form/controls/control-type.type.mjs +2 -0
  36. package/esm2020/lib/core/payment/form/controls/text-control.config.mjs +8 -0
  37. package/esm2020/lib/core/payment/form/converters/converter.abstract.mjs +75 -0
  38. package/esm2020/lib/core/payment/form/converters/converters-map.interface.mjs +2 -0
  39. package/esm2020/lib/core/payment/form/converters/converters-map.mjs +9 -0
  40. package/esm2020/lib/core/payment/form/converters/email.converter.mjs +29 -0
  41. package/esm2020/lib/core/payment/form/converters/zip.converter.mjs +64 -0
  42. package/esm2020/lib/core/payment/form/form-state.interface.mjs +2 -0
  43. package/esm2020/lib/core/payment/form/form.module.mjs +33 -0
  44. package/esm2020/lib/core/payment/form/form.service.mjs +28 -0
  45. package/esm2020/lib/core/payment/form/validators/convert.function.mjs +22 -0
  46. package/esm2020/lib/core/payment/form/validators/email-validator.mjs +7 -0
  47. package/esm2020/lib/core/payment/form/validators/required-validator.mjs +6 -0
  48. package/esm2020/lib/core/payment/form/validators/restricted-value.validator.mjs +6 -0
  49. package/esm2020/lib/core/payment/form/validators/validation-error.interface.mjs +2 -0
  50. package/esm2020/lib/core/payment/form/validators/validation-errors.interface.mjs +2 -0
  51. package/esm2020/lib/core/payment/form/validators/validator-fn.type.mjs +2 -0
  52. package/esm2020/lib/core/payment/initialize/initialize-request-params.interface.mjs +2 -0
  53. package/esm2020/lib/core/payment/initialize/initialize-response.class.mjs +43 -0
  54. package/esm2020/lib/core/payment/initialize/initialize-response.token.mjs +8 -0
  55. package/esm2020/lib/core/payment/initialize/initialize.service.mjs +46 -0
  56. package/esm2020/lib/core/payment/payment-form.interface.mjs +2 -0
  57. package/esm2020/lib/core/payment/payment.interface.mjs +1 -1
  58. package/esm2020/lib/core/payment/payment.service.mjs +37 -14
  59. package/esm2020/lib/core/payment/status/check-status/check-status.service.mjs +56 -0
  60. package/esm2020/lib/core/payment/status/check-status/request/check-status-request.class.mjs +16 -0
  61. package/esm2020/lib/core/payment/status/check-status/request/check-status-request.token.mjs +8 -0
  62. package/esm2020/lib/core/payment/status/check-status/response/check-status-response.class.mjs +9 -0
  63. package/esm2020/lib/core/payment/status/check-status/response/check-status-response.token.mjs +8 -0
  64. package/esm2020/lib/core/payment/status/listen-status/listen-status.service.mjs +112 -0
  65. package/esm2020/lib/core/payment/status/status-groups.mjs +7 -0
  66. package/esm2020/lib/core/payment/status/status-params.interface.mjs +2 -0
  67. package/esm2020/lib/core/payment/status/status-request/request/status-request.class.mjs +22 -0
  68. package/esm2020/lib/core/payment/status/status-request/request/status-request.token.mjs +8 -0
  69. package/esm2020/lib/core/payment/status/status-request/response/status-response.class.mjs +96 -0
  70. package/esm2020/lib/core/payment/status/status-request/response/status-response.token.mjs +8 -0
  71. package/esm2020/lib/core/payment/status/status-request/status-request-params.interface.mjs +2 -0
  72. package/esm2020/lib/core/payment/status/status-request/status-request.service.mjs +68 -0
  73. package/esm2020/lib/core/payment/status/status-settings.interface.mjs +2 -0
  74. package/esm2020/lib/core/payment/status/status-updated.interface.mjs +2 -0
  75. package/esm2020/lib/core/payment/status/status.interface.mjs +1 -1
  76. package/esm2020/lib/core/payment/status/status.service.mjs +38 -0
  77. package/esm2020/lib/core/payment/status/websocket-status/websocket-status.enum.mjs +6 -0
  78. package/esm2020/lib/core/payment/status/websocket-status/websocket-status.service.mjs +76 -0
  79. package/esm2020/lib/core/payment/submit/request/submit-request.class.mjs +16 -0
  80. package/esm2020/lib/core/payment/submit/request/submit-request.token.mjs +8 -0
  81. package/esm2020/lib/core/payment/submit/response/submit-response.class.mjs +31 -0
  82. package/esm2020/lib/core/payment/submit/response/submit-response.token.mjs +8 -0
  83. package/esm2020/lib/core/payment/submit/submit.service.mjs +59 -0
  84. package/esm2020/lib/core/payment/sync/field-sync-state.interface.mjs +2 -0
  85. package/esm2020/lib/core/payment/sync/sync-request.class.mjs +31 -0
  86. package/esm2020/lib/core/payment/sync/sync-request.token.mjs +8 -0
  87. package/esm2020/lib/core/payment/sync/sync-response.class.mjs +14 -0
  88. package/esm2020/lib/core/payment/sync/sync-response.token.mjs +8 -0
  89. package/esm2020/lib/core/payment/sync/sync.service.mjs +91 -0
  90. package/esm2020/lib/core/payment/xps-api-part-request.abstract.mjs +8 -0
  91. package/esm2020/lib/core/payment/xps-api-part.abstract.mjs +19 -0
  92. package/esm2020/lib/core/payment/xps-error.interface.mjs +1 -1
  93. package/esm2020/lib/core/payment/xps-request.abstract.mjs +8 -0
  94. package/esm2020/lib/core/payment/xps-response.interface.mjs +1 -1
  95. package/esm2020/lib/core/properties.type.mjs +2 -0
  96. package/esm2020/lib/core/web-socket/centrifugo-web-socket.service.mjs +200 -0
  97. package/esm2020/lib/core/web-socket/nchan-web-socket.service.mjs +116 -0
  98. package/esm2020/lib/core/web-socket/web-socket-client-type.enum.mjs +6 -0
  99. package/esm2020/lib/core/web-socket/web-socket.factory.mjs +28 -0
  100. package/esm2020/lib/core/web-socket/web-socket.interface.mjs +2 -0
  101. package/esm2020/lib/core/xps-boolean.enum.mjs +2 -0
  102. package/esm2020/lib/core-library.module.mjs +43 -4
  103. package/esm2020/lib/core-library.service.mjs +18 -11
  104. package/fesm2015/xsolla-payment-client-core.mjs +2201 -87
  105. package/fesm2015/xsolla-payment-client-core.mjs.map +1 -1
  106. package/fesm2020/xsolla-payment-client-core.mjs +2117 -83
  107. package/fesm2020/xsolla-payment-client-core.mjs.map +1 -1
  108. package/lib/core/device-finger-print/device-finger-print-components.interface.d.ts +4 -0
  109. package/lib/core/device-finger-print/device-finger-print.service.d.ts +44 -0
  110. package/lib/core/device-finger-print/fingerprint-js.interface.d.ts +6 -0
  111. package/lib/core/device-finger-print/hash.type.d.ts +3 -0
  112. package/lib/core/exceptions-handling/elk/additional-info.interface.d.ts +19 -0
  113. package/lib/core/exceptions-handling/elk/elk-logger.service.d.ts +27 -0
  114. package/lib/core/exceptions-handling/elk/error-without-meta-fields.interface.d.ts +8 -0
  115. package/lib/core/exceptions-handling/elk/log-message.interface.d.ts +8 -0
  116. package/lib/core/exceptions-handling/errors/default-terminal-error.class.d.ts +4 -0
  117. package/lib/core/exceptions-handling/errors/elk-error-types.enum.d.ts +11 -0
  118. package/lib/core/exceptions-handling/errors/tagged-error.class.d.ts +10 -0
  119. package/lib/core/exceptions-handling/errors/terminal-error.class.d.ts +5 -0
  120. package/lib/core/exceptions-handling/errors/token-error.class.d.ts +4 -0
  121. package/lib/core/exceptions-handling/errors/ws-error.class.d.ts +5 -0
  122. package/lib/core/payment/actions/action-factory-value.interface.d.ts +5 -0
  123. package/lib/core/payment/actions/action-type-command.map.d.ts +4 -0
  124. package/lib/core/payment/actions/check-status/check-status.action.class.d.ts +8 -0
  125. package/lib/core/payment/actions/check-status/check-status.action.token.d.ts +4 -0
  126. package/lib/core/payment/actions/check-status/check-status.action.type.d.ts +12 -0
  127. package/lib/core/payment/actions/next-action.interface.d.ts +4 -0
  128. package/lib/core/payment/actions/next-action.service.d.ts +20 -0
  129. package/lib/core/payment/actions/next-actions.d.ts +5 -0
  130. package/lib/core/payment/actions/show-fields/show-fields.action.class.d.ts +8 -0
  131. package/lib/core/payment/actions/show-fields/show-fields.action.token.d.ts +4 -0
  132. package/lib/core/payment/actions/show-fields/show-fields.action.type.d.ts +12 -0
  133. package/lib/core/payment/actions/status-updated/status-updated.action.class.d.ts +8 -0
  134. package/lib/core/payment/actions/status-updated/status-updated.action.token.d.ts +4 -0
  135. package/lib/core/payment/actions/status-updated/status-updated.action.type.d.ts +11 -0
  136. package/lib/core/payment/field-names.enum.d.ts +62 -0
  137. package/lib/core/payment/field.interface.d.ts +5 -5
  138. package/lib/core/payment/form/common-control-config.interface.d.ts +9 -0
  139. package/lib/core/payment/form/controls/control-config.d.ts +9 -0
  140. package/lib/core/payment/form/controls/control-config.service.d.ts +15 -0
  141. package/lib/core/payment/form/controls/control-type.type.d.ts +1 -0
  142. package/lib/core/payment/form/controls/text-control.config.d.ts +11 -0
  143. package/lib/core/payment/form/converters/converter.abstract.d.ts +23 -0
  144. package/lib/core/payment/form/converters/converters-map.d.ts +4 -0
  145. package/lib/core/payment/form/converters/converters-map.interface.d.ts +5 -0
  146. package/lib/core/payment/form/converters/email.converter.d.ts +14 -0
  147. package/lib/core/payment/form/converters/zip.converter.d.ts +21 -0
  148. package/lib/core/payment/form/form-state.interface.d.ts +3 -0
  149. package/lib/core/payment/form/form.module.d.ts +7 -0
  150. package/lib/core/payment/form/form.service.d.ts +12 -0
  151. package/lib/core/payment/form/validators/convert.function.d.ts +3 -0
  152. package/lib/core/payment/form/validators/email-validator.d.ts +2 -0
  153. package/lib/core/payment/form/validators/required-validator.d.ts +2 -0
  154. package/lib/core/payment/form/validators/restricted-value.validator.d.ts +2 -0
  155. package/lib/core/payment/form/validators/validation-error.interface.d.ts +4 -0
  156. package/lib/core/payment/form/validators/validation-errors.interface.d.ts +4 -0
  157. package/lib/core/payment/form/validators/validator-fn.type.d.ts +3 -0
  158. package/lib/core/payment/initialize/initialize-response.class.d.ts +7 -0
  159. package/lib/core/payment/initialize/initialize-response.token.d.ts +6 -0
  160. package/lib/core/payment/initialize/initialize.service.d.ts +18 -0
  161. package/lib/core/payment/payment-form.interface.d.ts +39 -0
  162. package/lib/core/payment/payment.interface.d.ts +12 -8
  163. package/lib/core/payment/payment.service.d.ts +23 -8
  164. package/lib/core/payment/status/check-status/check-status.service.d.ts +20 -0
  165. package/lib/core/payment/status/check-status/request/check-status-request.class.d.ts +8 -0
  166. package/lib/core/payment/status/check-status/request/check-status-request.token.d.ts +6 -0
  167. package/lib/core/payment/status/check-status/response/check-status-response.class.d.ts +8 -0
  168. package/lib/core/payment/status/check-status/response/check-status-response.token.d.ts +7 -0
  169. package/lib/core/payment/status/listen-status/listen-status.service.d.ts +28 -0
  170. package/lib/core/payment/status/status-groups.d.ts +5 -0
  171. package/lib/core/payment/status/status-params.interface.d.ts +9 -0
  172. package/lib/core/payment/status/status-request/request/status-request.class.d.ts +17 -0
  173. package/lib/core/payment/status/status-request/request/status-request.token.d.ts +6 -0
  174. package/lib/core/payment/status/status-request/response/status-response.class.d.ts +14 -0
  175. package/lib/core/payment/status/status-request/response/status-response.token.d.ts +7 -0
  176. package/lib/core/payment/status/status-request/status-request-params.interface.d.ts +10 -0
  177. package/lib/core/payment/status/status-request/status-request.service.d.ts +21 -0
  178. package/lib/core/payment/status/status-settings.interface.d.ts +13 -0
  179. package/lib/core/payment/status/status-updated.interface.d.ts +6 -0
  180. package/lib/core/payment/status/status.interface.d.ts +0 -1
  181. package/lib/core/payment/status/status.service.d.ts +16 -0
  182. package/lib/core/payment/status/websocket-status/websocket-status.enum.d.ts +4 -0
  183. package/lib/core/payment/status/websocket-status/websocket-status.service.d.ts +24 -0
  184. package/lib/core/payment/submit/request/submit-request.class.d.ts +13 -0
  185. package/lib/core/payment/submit/request/submit-request.token.d.ts +6 -0
  186. package/lib/core/payment/submit/response/submit-response.class.d.ts +26 -0
  187. package/lib/core/payment/submit/response/submit-response.token.d.ts +6 -0
  188. package/lib/core/payment/submit/submit.service.d.ts +21 -0
  189. package/lib/core/payment/sync/field-sync-state.interface.d.ts +5 -0
  190. package/lib/core/payment/sync/sync-request.class.d.ts +15 -0
  191. package/lib/core/payment/sync/sync-request.token.d.ts +6 -0
  192. package/lib/core/payment/sync/sync-response.class.d.ts +11 -0
  193. package/lib/core/payment/sync/sync-response.token.d.ts +6 -0
  194. package/lib/core/payment/sync/sync.service.d.ts +27 -0
  195. package/lib/core/payment/xps-api-part-request.abstract.d.ts +6 -0
  196. package/lib/core/payment/xps-api-part.abstract.d.ts +8 -0
  197. package/lib/core/payment/xps-error.interface.d.ts +1 -0
  198. package/lib/core/payment/xps-request.abstract.d.ts +6 -0
  199. package/lib/core/payment/xps-response.interface.d.ts +3 -6
  200. package/lib/core/properties.type.d.ts +3 -0
  201. package/lib/core/web-socket/centrifugo-web-socket.service.d.ts +41 -0
  202. package/lib/core/web-socket/nchan-web-socket.service.d.ts +30 -0
  203. package/lib/core/web-socket/web-socket-client-type.enum.d.ts +4 -0
  204. package/lib/core/web-socket/web-socket.factory.d.ts +13 -0
  205. package/lib/core/web-socket/web-socket.interface.d.ts +9 -0
  206. package/lib/core/xps-boolean.enum.d.ts +4 -0
  207. package/lib/core-library.module.d.ts +2 -1
  208. package/lib/core-library.service.d.ts +6 -2
  209. package/package.json +19 -4
  210. package/xsolla-payment-client-core-0.0.6.tgz +0 -0
  211. package/esm2020/lib/core/boolean-string.enum.mjs +0 -6
  212. package/esm2020/lib/core/payment/actions/action.type.mjs +0 -2
  213. package/esm2020/lib/core/payment/actions/check-status.action.type.mjs +0 -2
  214. package/esm2020/lib/core/payment/actions/next-action.type.mjs +0 -2
  215. package/esm2020/lib/core/payment/initialize-request-params.interface.mjs +0 -2
  216. package/esm2020/lib/core/payment/initialize.service.mjs +0 -39
  217. package/lib/core/boolean-string.enum.d.ts +0 -4
  218. package/lib/core/payment/actions/check-status.action.type.d.ts +0 -12
  219. package/lib/core/payment/actions/next-action.type.d.ts +0 -2
  220. package/lib/core/payment/initialize.service.d.ts +0 -16
  221. package/xsolla-payment-client-core-0.0.4.tgz +0 -0
  222. /package/lib/core/payment/actions/{action.type.d.ts → action.interface.d.ts} +0 -0
  223. /package/lib/core/payment/{initialize-request-params.interface.d.ts → initialize/initialize-request-params.interface.d.ts} +0 -0
@@ -0,0 +1,14 @@
1
+ export class SyncResponse {
2
+ constructor(changedField, response) {
3
+ const fieldError = response?.errors?.find((error) => error.element_name === changedField.name);
4
+ if (fieldError) {
5
+ this.rewritableError = {
6
+ code: fieldError.code,
7
+ message: fieldError.message,
8
+ };
9
+ }
10
+ this.fields = Object.keys(response.form).map((key) => response.form[key]);
11
+ this.parameters = response;
12
+ }
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1yZXNwb25zZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BheW1lbnQtY2xpZW50LWNvcmUvc3JjL2xpYi9jb3JlL3BheW1lbnQvc3luYy9zeW5jLXJlc3BvbnNlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTyxZQUFZO0lBS3ZCLFlBQW1CLFlBQW1CLEVBQUUsUUFBcUI7UUFDM0QsTUFBTSxVQUFVLEdBQUcsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQ3ZDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxLQUFLLFlBQVksQ0FBQyxJQUFJLENBQ3BELENBQUM7UUFFRixJQUFJLFVBQVUsRUFBRTtZQUNkLElBQUksQ0FBQyxlQUFlLEdBQUc7Z0JBQ3JCLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSTtnQkFDckIsT0FBTyxFQUFFLFVBQVUsQ0FBQyxPQUFPO2FBQzVCLENBQUM7U0FDSDtRQUVELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUMxQyxDQUFDLEdBQVcsRUFBUyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FDM0MsQ0FBQztRQUVGLElBQUksQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDO0lBQzdCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpZWxkIH0gZnJvbSAnLi4vZmllbGQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFhwc1Jlc3BvbnNlIH0gZnJvbSAnLi4veHBzLXJlc3BvbnNlLmludGVyZmFjZSc7XG5cbmV4cG9ydCBjbGFzcyBTeW5jUmVzcG9uc2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgcmV3cml0YWJsZUVycm9yPzogeyBjb2RlOiBudW1iZXI7IG1lc3NhZ2U6IHN0cmluZyB9O1xuICBwdWJsaWMgcmVhZG9ubHkgZmllbGRzOiBGaWVsZFtdO1xuICBwdWJsaWMgcmVhZG9ubHkgcGFyYW1ldGVyczogWHBzUmVzcG9uc2U7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKGNoYW5nZWRGaWVsZDogRmllbGQsIHJlc3BvbnNlOiBYcHNSZXNwb25zZSkge1xuICAgIGNvbnN0IGZpZWxkRXJyb3IgPSByZXNwb25zZT8uZXJyb3JzPy5maW5kKFxuICAgICAgKGVycm9yKSA9PiBlcnJvci5lbGVtZW50X25hbWUgPT09IGNoYW5nZWRGaWVsZC5uYW1lXG4gICAgKTtcblxuICAgIGlmIChmaWVsZEVycm9yKSB7XG4gICAgICB0aGlzLnJld3JpdGFibGVFcnJvciA9IHtcbiAgICAgICAgY29kZTogZmllbGRFcnJvci5jb2RlLFxuICAgICAgICBtZXNzYWdlOiBmaWVsZEVycm9yLm1lc3NhZ2UsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHRoaXMuZmllbGRzID0gT2JqZWN0LmtleXMocmVzcG9uc2UuZm9ybSkubWFwKFxuICAgICAgKGtleTogc3RyaW5nKTogRmllbGQgPT4gcmVzcG9uc2UuZm9ybVtrZXldXG4gICAgKTtcblxuICAgIHRoaXMucGFyYW1ldGVycyA9IHJlc3BvbnNlO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,8 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import { SyncResponse } from './sync-response.class';
3
+ export const syncResponseFactoryToken = new InjectionToken('SyncResponse');
4
+ export const syncResponseFactoryProvider = {
5
+ provide: syncResponseFactoryToken,
6
+ useValue: (...args) => new SyncResponse(...args),
7
+ };
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1yZXNwb25zZS50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BheW1lbnQtY2xpZW50LWNvcmUvc3JjL2xpYi9jb3JlL3BheW1lbnQvc3luYy9zeW5jLXJlc3BvbnNlLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQVFyRCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FDbkMsSUFBSSxjQUFjLENBQXNCLGNBQWMsQ0FBQyxDQUFDO0FBRTFELE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFrQjtJQUN4RCxPQUFPLEVBQUUsd0JBQXdCO0lBQ2pDLFFBQVEsRUFBRSxDQUFDLEdBQUcsSUFBNEIsRUFBRSxFQUFFLENBQUMsSUFBSSxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUM7Q0FDekUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuLCBWYWx1ZVByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTeW5jUmVzcG9uc2UgfSBmcm9tICcuL3N5bmMtcmVzcG9uc2UuY2xhc3MnO1xuXG5leHBvcnQgdHlwZSBTeW5jUmVzcG9uc2VQYXJhbWV0ZXJzID0gQ29uc3RydWN0b3JQYXJhbWV0ZXJzPHR5cGVvZiBTeW5jUmVzcG9uc2U+O1xuXG5leHBvcnQgdHlwZSBTeW5jUmVzcG9uc2VGYWN0b3J5ID0gKFxuICAuLi5hcmdzOiBTeW5jUmVzcG9uc2VQYXJhbWV0ZXJzXG4pID0+IFN5bmNSZXNwb25zZTtcblxuZXhwb3J0IGNvbnN0IHN5bmNSZXNwb25zZUZhY3RvcnlUb2tlbjogSW5qZWN0aW9uVG9rZW48U3luY1Jlc3BvbnNlRmFjdG9yeT4gPVxuICBuZXcgSW5qZWN0aW9uVG9rZW48U3luY1Jlc3BvbnNlRmFjdG9yeT4oJ1N5bmNSZXNwb25zZScpO1xuXG5leHBvcnQgY29uc3Qgc3luY1Jlc3BvbnNlRmFjdG9yeVByb3ZpZGVyOiBWYWx1ZVByb3ZpZGVyID0ge1xuICBwcm92aWRlOiBzeW5jUmVzcG9uc2VGYWN0b3J5VG9rZW4sXG4gIHVzZVZhbHVlOiAoLi4uYXJnczogU3luY1Jlc3BvbnNlUGFyYW1ldGVycykgPT4gbmV3IFN5bmNSZXNwb25zZSguLi5hcmdzKSxcbn07XG4iXX0=
@@ -0,0 +1,91 @@
1
+ import { HttpHeaders } from '@angular/common/http';
2
+ import { Inject, Injectable } from '@angular/core';
3
+ import { UntypedFormGroup } from '@angular/forms';
4
+ import { lastValueFrom } from 'rxjs';
5
+ import { syncRequestFactoryToken, } from './sync-request.token';
6
+ import { syncResponseFactoryToken, } from './sync-response.token';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "../../http/secure-api/secure-api.service";
9
+ import * as i2 from "../../settings/settings.service";
10
+ export class SyncService {
11
+ constructor(requestFactory, responseFactory, secureApi, settingsService) {
12
+ this.requestFactory = requestFactory;
13
+ this.responseFactory = responseFactory;
14
+ this.secureApi = secureApi;
15
+ this.settingsService = settingsService;
16
+ this.apiRoute = 'directpayment';
17
+ this.prevFieldSyncStates = {};
18
+ this.form = new UntypedFormGroup({});
19
+ this.fields = [];
20
+ }
21
+ setup(form, fields) {
22
+ this.reset();
23
+ this.form = form;
24
+ this.fields = fields;
25
+ }
26
+ reset() {
27
+ this.prevFieldSyncStates = {};
28
+ this.form = new UntypedFormGroup({});
29
+ this.fields = [];
30
+ }
31
+ async validate(field) {
32
+ if (!this.isReadyField(field)) {
33
+ return Promise.resolve(null);
34
+ }
35
+ const control = this.form.get(field.name);
36
+ const value = control?.value;
37
+ const prevFieldState = this.getPrevFieldSyncState(field);
38
+ const isInitialValue = value === field.value && !prevFieldState;
39
+ if (isInitialValue) {
40
+ return Promise.resolve(null);
41
+ }
42
+ if (prevFieldState && value === prevFieldState.value) {
43
+ return Promise.resolve(prevFieldState.result);
44
+ }
45
+ const requestPromise = this.request(field);
46
+ this.setPrevFieldSyncState(field, value, requestPromise);
47
+ return requestPromise.then((response) => {
48
+ return response.rewritableError ?? null;
49
+ });
50
+ }
51
+ async request(field) {
52
+ const requestParams = this.requestFactory({
53
+ token: this.settingsService.token,
54
+ changedField: field,
55
+ fields: this.fields,
56
+ form: this.form,
57
+ });
58
+ return lastValueFrom(this.secureApi.post(this.apiRoute, new URLSearchParams(requestParams), {
59
+ headers: new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8'),
60
+ responseType: 'json',
61
+ })).then((response) => {
62
+ return this.responseFactory(field, response);
63
+ });
64
+ }
65
+ isReadyField(field) {
66
+ const isSyncEnabled = !!field.javascript?.change;
67
+ const isExistsInForm = !!this.form?.get(field.name);
68
+ return isSyncEnabled && isExistsInForm;
69
+ }
70
+ getPrevFieldSyncState(field) {
71
+ return this.prevFieldSyncStates[field.name];
72
+ }
73
+ setPrevFieldSyncState(field, value, result) {
74
+ this.prevFieldSyncStates[field.name] = { value, result };
75
+ }
76
+ }
77
+ SyncService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SyncService, deps: [{ token: syncRequestFactoryToken }, { token: syncResponseFactoryToken }, { token: i1.SecureApiClient }, { token: i2.SettingsService }], target: i0.ɵɵFactoryTarget.Injectable });
78
+ SyncService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SyncService, providedIn: 'root' });
79
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SyncService, decorators: [{
80
+ type: Injectable,
81
+ args: [{
82
+ providedIn: 'root',
83
+ }]
84
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
85
+ type: Inject,
86
+ args: [syncRequestFactoryToken]
87
+ }] }, { type: undefined, decorators: [{
88
+ type: Inject,
89
+ args: [syncResponseFactoryToken]
90
+ }] }, { type: i1.SecureApiClient }, { type: i2.SettingsService }]; } });
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGF5bWVudC1jbGllbnQtY29yZS9zcmMvbGliL2NvcmUvcGF5bWVudC9zeW5jL3N5bmMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFvQixNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFNckMsT0FBTyxFQUVMLHVCQUF1QixHQUN4QixNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE9BQU8sRUFFTCx3QkFBd0IsR0FDekIsTUFBTSx1QkFBdUIsQ0FBQzs7OztBQUsvQixNQUFNLE9BQU8sV0FBVztJQVF0QixZQUVtQixjQUFrQyxFQUVsQyxlQUFvQyxFQUNwQyxTQUEwQixFQUMxQixlQUFnQztRQUpoQyxtQkFBYyxHQUFkLGNBQWMsQ0FBb0I7UUFFbEMsb0JBQWUsR0FBZixlQUFlLENBQXFCO1FBQ3BDLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBQzFCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQWJsQyxhQUFRLEdBQUcsZUFBZSxDQUFDO1FBRXBDLHdCQUFtQixHQUE0QyxFQUFFLENBQUM7UUFFbEUsU0FBSSxHQUFxQixJQUFJLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELFdBQU0sR0FBWSxFQUFFLENBQUM7SUFTMUIsQ0FBQztJQUVHLEtBQUssQ0FBQyxJQUFzQixFQUFFLE1BQWU7UUFDbEQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRWIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLE1B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QUFJLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRU8scUJBQXFCLENBQzNCLEtBQVksRUFDWixLQUFjLEVBQ2QsTUFBd0M7UUFFeEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUMzRCxDQUFDOzt3R0FyR1UsV0FBVyxrQkFTWix1QkFBdUIsYUFFdkIsd0JBQXdCOzRHQVh2QixXQUFXLGNBRlYsTUFBTTsyRkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBVUksTUFBTTsyQkFBQyx1QkFBdUI7OzBCQUU5QixNQUFNOzJCQUFDLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUdyb3VwLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgbGFzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2VjdXJlQXBpQ2xpZW50IH0gZnJvbSAnLi4vLi4vaHR0cC9zZWN1cmUtYXBpL3NlY3VyZS1hcGkuc2VydmljZSc7XG5pbXBvcnQgeyBTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXR0aW5ncy9zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IEZpZWxkIH0gZnJvbSAnLi4vZmllbGQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFhwc1Jlc3BvbnNlIH0gZnJvbSAnLi4veHBzLXJlc3BvbnNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGaWVsZFN5bmNTdGF0ZSB9IGZyb20gJy4vZmllbGQtc3luYy1zdGF0ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgU3luY1JlcXVlc3RGYWN0b3J5LFxuICBzeW5jUmVxdWVzdEZhY3RvcnlUb2tlbixcbn0gZnJvbSAnLi9zeW5jLXJlcXVlc3QudG9rZW4nO1xuaW1wb3J0IHsgU3luY1Jlc3BvbnNlIH0gZnJvbSAnLi9zeW5jLXJlc3BvbnNlLmNsYXNzJztcbmltcG9ydCB7XG4gIFN5bmNSZXNwb25zZUZhY3RvcnksXG4gIHN5bmNSZXNwb25zZUZhY3RvcnlUb2tlbixcbn0gZnJvbSAnLi9zeW5jLXJlc3BvbnNlLnRva2VuJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFN5bmNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBhcGlSb3V0ZSA9ICdkaXJlY3RwYXltZW50JztcblxuICBwcml2YXRlIHByZXZGaWVsZFN5bmNTdGF0ZXM6IHsgW2ZpZWxkTmFtZTogc3RyaW5nXTogRmllbGRTeW5jU3RhdGUgfSA9IHt9O1xuXG4gIHByaXZhdGUgZm9ybTogVW50eXBlZEZvcm1Hcm91cCA9IG5ldyBVbnR5cGVkRm9ybUdyb3VwKHt9KTtcbiAgcHJpdmF0ZSBmaWVsZHM6IEZpZWxkW10gPSBbXTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChzeW5jUmVxdWVzdEZhY3RvcnlUb2tlbilcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlcXVlc3RGYWN0b3J5OiBTeW5jUmVxdWVzdEZhY3RvcnksXG4gICAgQEluamVjdChzeW5jUmVzcG9uc2VGYWN0b3J5VG9rZW4pXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXNwb25zZUZhY3Rvcnk6IFN5bmNSZXNwb25zZUZhY3RvcnksXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZWN1cmVBcGk6IFNlY3VyZUFwaUNsaWVudCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNldHRpbmdzU2VydmljZTogU2V0dGluZ3NTZXJ2aWNlXG4gICkge31cblxuICBwdWJsaWMgc2V0dXAoZm9ybTogVW50eXBlZEZvcm1Hcm91cCwgZmllbGRzOiBGaWVsZFtdKTogdm9pZCB7XG4gICAgdGhpcy5yZXNldCgpO1xuXG4gICAgdGhpcy5mb3JtID0gZm9ybTtcbiAgICB0aGlzLmZpZWxkcyA9IGZpZWxkcztcbiAgfVxuXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLnByZXZGaWVsZFN5bmNTdGF0ZXMgPSB7fTtcbiAgICB0aGlzLmZvcm0gPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7fSk7XG4gICAgdGhpcy5maWVsZHMgPSBbXTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB2YWxpZGF0ZShmaWVsZDogRmllbGQpOiBQcm9taXNlPFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPiB7XG4gICAgaWYgKCF0aGlzLmlzUmVhZHlGaWVsZChmaWVsZCkpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybS5nZXQoZmllbGQubmFtZSk7XG4gICAgY29uc3QgdmFsdWUgPSBjb250cm9sPy52YWx1ZTtcbiAgICBjb25zdCBwcmV2RmllbGRTdGF0ZSA9IHRoaXMuZ2V0UHJldkZpZWxkU3luY1N0YXRlKGZpZWxkKTtcblxuICAgIGNvbnN0IGlzSW5pdGlhbFZhbHVlID0gdmFsdWUgPT09IGZpZWxkLnZhbHVlICYmICFwcmV2RmllbGRTdGF0ZTtcblxuICAgIGlmIChpc0luaXRpYWxWYWx1ZSkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcbiAgICB9XG5cbiAgICBpZiAocHJldkZpZWxkU3RhdGUgJiYgdmFsdWUgPT09IHByZXZGaWVsZFN0YXRlLnZhbHVlKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHByZXZGaWVsZFN0YXRlLnJlc3VsdCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVxdWVzdFByb21pc2UgPSB0aGlzLnJlcXVlc3QoZmllbGQpO1xuICAgIHRoaXMuc2V0UHJldkZpZWxkU3luY1N0YXRlKGZpZWxkLCB2YWx1ZSwgcmVxdWVzdFByb21pc2UpO1xuXG4gICAgcmV0dXJuIHJlcXVlc3RQcm9taXNlLnRoZW4oKHJlc3BvbnNlOiBTeW5jUmVzcG9uc2UpID0+IHtcbiAgICAgIHJldHVybiByZXNwb25zZS5yZXdyaXRhYmxlRXJyb3IgPz8gbnVsbDtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVxdWVzdChmaWVsZDogRmllbGQpOiBQcm9taXNlPFN5bmNSZXNwb25zZT4ge1xuICAgIGNvbnN0IHJlcXVlc3RQYXJhbXMgPSB0aGlzLnJlcXVlc3RGYWN0b3J5KHtcbiAgICAgIHRva2VuOiB0aGlzLnNldHRpbmdzU2VydmljZS50b2tlbixcbiAgICAgIGNoYW5nZWRGaWVsZDogZmllbGQsXG4gICAgICBmaWVsZHM6IHRoaXMuZmllbGRzLFxuICAgICAgZm9ybTogdGhpcy5mb3JtLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGxhc3RWYWx1ZUZyb20oXG4gICAgICB0aGlzLnNlY3VyZUFwaS5wb3N0PFhwc1Jlc3BvbnNlPihcbiAgICAgICAgdGhpcy5hcGlSb3V0ZSxcbiAgICAgICAgbmV3IFVSTFNlYXJjaFBhcmFtcyhcbiAgICAgICAgICByZXF1ZXN0UGFyYW1zIGFzIHVua25vd24gYXMgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfVxuICAgICAgICApLFxuICAgICAgICB7XG4gICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZScsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04J1xuICAgICAgICAgICksXG4gICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXG4gICAgICAgIH1cbiAgICAgIClcbiAgICApLnRoZW4oKHJlc3BvbnNlOiBYcHNSZXNwb25zZSkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMucmVzcG9uc2VGYWN0b3J5KGZpZWxkLCByZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGlzUmVhZHlGaWVsZChmaWVsZDogRmllbGQpOiBib29sZWFuIHtcbiAgICBjb25zdCBpc1N5bmNFbmFibGVkID0gISFmaWVsZC5qYXZhc2NyaXB0Py5jaGFuZ2U7XG4gICAgY29uc3QgaXNFeGlzdHNJbkZvcm0gPSAhIXRoaXMuZm9ybT8uZ2V0KGZpZWxkLm5hbWUpO1xuXG4gICAgcmV0dXJuIGlzU3luY0VuYWJsZWQgJiYgaXNFeGlzdHNJbkZvcm07XG4gIH1cblxuICBwcml2YXRlIGdldFByZXZGaWVsZFN5bmNTdGF0ZShmaWVsZDogRmllbGQpOiBGaWVsZFN5bmNTdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMucHJldkZpZWxkU3luY1N0YXRlc1tmaWVsZC5uYW1lXTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0UHJldkZpZWxkU3luY1N0YXRlKFxuICAgIGZpZWxkOiBGaWVsZCxcbiAgICB2YWx1ZTogdW5rbm93bixcbiAgICByZXN1bHQ6IFByb21pc2U8VmFsaWRhdGlvbkVycm9ycyB8IG51bGw+XG4gICk6IHZvaWQge1xuICAgIHRoaXMucHJldkZpZWxkU3luY1N0YXRlc1tmaWVsZC5uYW1lXSA9IHsgdmFsdWUsIHJlc3VsdCB9O1xuICB9XG59XG4iXX0=
@@ -0,0 +1,8 @@
1
+ export class XpsApiPartRequest {
2
+ addXpsParameters(parameters) {
3
+ for (const key in parameters) {
4
+ this[`xps_${key}`] = parameters[key];
5
+ }
6
+ }
7
+ }
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHBzLWFwaS1wYXJ0LXJlcXVlc3QuYWJzdHJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wYXltZW50LWNsaWVudC1jb3JlL3NyYy9saWIvY29yZS9wYXltZW50L3hwcy1hcGktcGFydC1yZXF1ZXN0LmFic3RyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBZ0IsaUJBQWlCO0lBRzNCLGdCQUFnQixDQUFDLFVBQXNDO1FBQy9ELEtBQUssTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFO1lBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3RDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGFic3RyYWN0IGNsYXNzIFhwc0FwaVBhcnRSZXF1ZXN0IHtcbiAgW2ZpZWxkTmFtZTogYHhwc18ke3N0cmluZ31gXTogdW5rbm93bjtcblxuICBwcm90ZWN0ZWQgYWRkWHBzUGFyYW1ldGVycyhwYXJhbWV0ZXJzOiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfSk6IHZvaWQge1xuICAgIGZvciAoY29uc3Qga2V5IGluIHBhcmFtZXRlcnMpIHtcbiAgICAgIHRoaXNbYHhwc18ke2tleX1gXSA9IHBhcmFtZXRlcnNba2V5XTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,19 @@
1
+ import { BehaviorSubject } from 'rxjs';
2
+ import { filter } from 'rxjs/operators';
3
+ export class XpsApiPart {
4
+ constructor() {
5
+ this.response = new BehaviorSubject(null);
6
+ }
7
+ get response$() {
8
+ return this.response
9
+ .asObservable()
10
+ .pipe(filter((response) => response !== null));
11
+ }
12
+ emitResponse(response) {
13
+ this.response.next(response);
14
+ }
15
+ get currentValue() {
16
+ return this.response.getValue();
17
+ }
18
+ }
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHBzLWFwaS1wYXJ0LmFic3RyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGF5bWVudC1jbGllbnQtY29yZS9zcmMvbGliL2NvcmUvcGF5bWVudC94cHMtYXBpLXBhcnQuYWJzdHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEMsTUFBTSxPQUFnQixVQUFVO0lBQWhDO1FBV21CLGFBQVEsR0FDdkIsSUFBSSxlQUFlLENBQWtCLElBQUksQ0FBQyxDQUFDO0lBYS9DLENBQUM7SUF4QkMsSUFBVyxTQUFTO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFFBQVE7YUFDakIsWUFBWSxFQUFFO2FBQ2QsSUFBSSxDQUNILE1BQU0sQ0FDSixDQUFDLFFBQXlCLEVBQXdCLEVBQUUsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUN2RSxDQUNGLENBQUM7SUFDTixDQUFDO0lBS00sWUFBWSxDQUFDLFFBQXlCO1FBQzNDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFXLFlBQVk7UUFDckIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xDLENBQUM7Q0FLRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgWHBzQXBpUGFydDxSZXNwb25zZT4ge1xuICBwdWJsaWMgZ2V0IHJlc3BvbnNlJCgpOiBPYnNlcnZhYmxlPFJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMucmVzcG9uc2VcbiAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcjxSZXNwb25zZSB8IG51bGwsIFJlc3BvbnNlPihcbiAgICAgICAgICAocmVzcG9uc2U6IFJlc3BvbnNlIHwgbnVsbCk6IHJlc3BvbnNlIGlzIFJlc3BvbnNlID0+IHJlc3BvbnNlICE9PSBudWxsXG4gICAgICAgIClcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IHJlc3BvbnNlOiBCZWhhdmlvclN1YmplY3Q8UmVzcG9uc2UgfCBudWxsPiA9XG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdDxSZXNwb25zZSB8IG51bGw+KG51bGwpO1xuXG4gIHB1YmxpYyBlbWl0UmVzcG9uc2UocmVzcG9uc2U6IFJlc3BvbnNlIHwgbnVsbCk6IHZvaWQge1xuICAgIHRoaXMucmVzcG9uc2UubmV4dChyZXNwb25zZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGN1cnJlbnRWYWx1ZSgpOiBSZXNwb25zZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnJlc3BvbnNlLmdldFZhbHVlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVxdWVzdChcbiAgICAuLi5hcmdzOiBhbnlbXSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgKTogdm9pZCB8IFByb21pc2U8UmVzcG9uc2UgfCB2b2lkPiB8IFByb21pc2U8UmVzcG9uc2U+IHwgT2JzZXJ2YWJsZTxSZXNwb25zZT47XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHBzLWVycm9yLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BheW1lbnQtY2xpZW50LWNvcmUvc3JjL2xpYi9jb3JlL3BheW1lbnQveHBzLWVycm9yLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGF5bWVudE1ldGhvZEFwaSB9IGZyb20gJy4uL3BheW1lbnQtbWV0aG9kcy9wYXltZW50LW1ldGhvZC1hcGkuaW50ZXJmYWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBYcHNFcnJvciB7XG4gIGNvZGU6IG51bWJlcjtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBhbHRlcm5hdGl2ZV9pbnN0YW5jZXM/OiBQYXltZW50TWV0aG9kQXBpW107XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHBzLWVycm9yLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BheW1lbnQtY2xpZW50LWNvcmUvc3JjL2xpYi9jb3JlL3BheW1lbnQveHBzLWVycm9yLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGF5bWVudE1ldGhvZEFwaSB9IGZyb20gJy4uL3BheW1lbnQtbWV0aG9kcy9wYXltZW50LW1ldGhvZC1hcGkuaW50ZXJmYWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBYcHNFcnJvciB7XG4gIGNvZGU6IG51bWJlcjtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBlbGVtZW50X25hbWU/OiBzdHJpbmc7XG4gIGFsdGVybmF0aXZlX2luc3RhbmNlcz86IFBheW1lbnRNZXRob2RBcGlbXTtcbn1cbiJdfQ==
@@ -0,0 +1,8 @@
1
+ export class XpsRequest {
2
+ addXpsParameters(parameters) {
3
+ for (const key in parameters) {
4
+ this[`xps_${key}`] = parameters[key];
5
+ }
6
+ }
7
+ }
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHBzLXJlcXVlc3QuYWJzdHJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wYXltZW50LWNsaWVudC1jb3JlL3NyYy9saWIvY29yZS9wYXltZW50L3hwcy1yZXF1ZXN0LmFic3RyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBZ0IsVUFBVTtJQUdwQixnQkFBZ0IsQ0FBQyxVQUFzQztRQUMvRCxLQUFLLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRTtZQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN0QztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBhYnN0cmFjdCBjbGFzcyBYcHNSZXF1ZXN0IHtcbiAgW2ZpZWxkTmFtZTogYHhwc18ke3N0cmluZ31gXTogdW5rbm93bjtcblxuICBwcm90ZWN0ZWQgYWRkWHBzUGFyYW1ldGVycyhwYXJhbWV0ZXJzOiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfSk6IHZvaWQge1xuICAgIGZvciAoY29uc3Qga2V5IGluIHBhcmFtZXRlcnMpIHtcbiAgICAgIHRoaXNbYHhwc18ke2tleX1gXSA9IHBhcmFtZXRlcnNba2V5XTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHBzLXJlc3BvbnNlLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BheW1lbnQtY2xpZW50LWNvcmUvc3JjL2xpYi9jb3JlL3BheW1lbnQveHBzLXJlc3BvbnNlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm9vbGVhblN0cmluZyB9IGZyb20gJy4uL2Jvb2xlYW4tc3RyaW5nLmVudW0nO1xuaW1wb3J0IHsgQ2hlY2tvdXRJdGVtIH0gZnJvbSAnLi9jaGVja291dC1pdGVtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGaWVsZCB9IGZyb20gJy4vZmllbGQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEludm9pY2UgfSBmcm9tICcuL2ludm9pY2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IExpbmVJdGVtIH0gZnJvbSAnLi9zdGF0dXMvbGluZS1pdGVtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTdGF0dXNFbnVtIH0gZnJvbSAnLi9zdGF0dXMvc3RhdHVzLmVudW0nO1xuaW1wb3J0IHsgVGl0bGVDbGFzcyB9IGZyb20gJy4vc3RhdHVzL3RpdGxlLWNsYXNzLmVudW0nO1xuaW1wb3J0IHsgV2ViU29ja2V0Q2xpZW50VHlwZSB9IGZyb20gJy4vc3RhdHVzL3dlYi1zb2NrZXQtY2xpZW50LXR5cGUuZW51bSc7XG5pbXBvcnQgeyBWaXJ0dWFsQ3VycmVuY3kgfSBmcm9tICcuL3ZpcnR1YWwtY3VycmVuY3kuaW50ZXJmYWNlJztcbmltcG9ydCB7IFhwc0NvbW1hbmQgfSBmcm9tICcuL3hwcy1jb21hbmQuZW51bSc7XG5pbXBvcnQgeyBYcHNFcnJvciB9IGZyb20gJy4veHBzLWVycm9yLmludGVyZmFjZSc7XG5pbXBvcnQgeyBYcHNNZXNzYWdlIH0gZnJvbSAnLi94cHMtbWVzc2FnZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgWHBzU3Vic2NyaXB0aW9uSXRlbSB9IGZyb20gJy4veHBzLXN1YnNjcmlwdGlvbi1pdGVtLmludGVyZmFjZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgWHBzUmVzcG9uc2Uge1xuICBjaGVja291dDoge1xuICAgIGFjdGlvbjogc3RyaW5nO1xuICAgIG1ldGhvZDogc3RyaW5nO1xuICAgIGRhdGE6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIH07XG4gIHN1bW1hcnk6IHtcbiAgICBwdXJjaGFzZToge1xuICAgICAgdmlydHVhbF9jdXJyZW5jeT86IFZpcnR1YWxDdXJyZW5jeVtdO1xuICAgICAgY2hlY2tvdXRfaXRlbXM/OiBDaGVja291dEl0ZW1bXTtcbiAgICAgIHZpcnR1YWxfaXRlbXM/OiBWaXJ0dWFsQ3VycmVuY3lbXTtcbiAgICAgIHN1YnNjcmlwdGlvbnM/OiBYcHNTdWJzY3JpcHRpb25JdGVtW107XG4gICAgICBjaGVja291dD86IHtcbiAgICAgICAgYW1vdW50OiBudW1iZXI7XG4gICAgICAgIGN1cnJlbmN5OiBzdHJpbmc7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgICAgIGlzX2JvbnVzPzogYm9vbGVhbjtcbiAgICAgIH07XG4gICAgfTtcbiAgICBmaW5hbmNlOiB7XG4gICAgICBwYXltZW50X2NvdW50cnk6IHsgaXNvOiBzdHJpbmcgfTtcbiAgICAgIHN1Yl90b3RhbDoge1xuICAgICAgICBhbW91bnQ6IG51bWJlcjtcbiAgICAgICAgY3VycmVuY3k6IHN0cmluZztcbiAgICAgICAgcGF5bWVudF9hbW91bnQ6IG51bWJlcjtcbiAgICAgICAgcGF5bWVudF9jdXJyZW5jeTogc3RyaW5nO1xuICAgICAgfTtcbiAgICAgIGRpc2NvdW50OiB7IGFtb3VudDogbnVtYmVyOyBjdXJyZW5jeTogc3RyaW5nIH07XG4gICAgICB2YXRfdXNlcj86IHtcbiAgICAgICAgYW1vdW50OiBudW1iZXI7XG4gICAgICAgIHBlcmNlbnQ6IG51bWJlcjtcbiAgICAgICAgY3VycmVuY3k6IHN0cmluZztcbiAgICAgICAgdmlzaWJsZTogYm9vbGVhbjtcbiAgICAgIH07XG4gICAgICBzYWxlc190YXg6IHsgYW1vdW50OiBudW1iZXI7IHBlcmNlbnQ6IG51bWJlcjsgY3VycmVuY3k6IHN0cmluZyB9O1xuICAgICAgc2FsZXNfdGF4X3VzZXI/OiB7IGFtb3VudDogbnVtYmVyOyBwZXJjZW50OiBudW1iZXI7IGN1cnJlbmN5OiBzdHJpbmcgfTtcbiAgICAgIGZlZTogeyBhbW91bnQ6IG51bWJlcjsgY3VycmVuY3k6IHN0cmluZyB9O1xuICAgICAgdG90YWw6IHsgYW1vdW50OiBudW1iZXI7IGN1cnJlbmN5OiBzdHJpbmcgfTtcbiAgICAgIHhzb2xsYV9jcmVkaXRzPzoge1xuICAgICAgICBwYXltZW50X2Ftb3VudDogbnVtYmVyO1xuICAgICAgICBwYXltZW50X2N1cnJlbmN5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgICAgdmF0OiB7XG4gICAgICAgIGFtb3VudDogbnVtYmVyO1xuICAgICAgICBwZXJjZW50OiBudW1iZXI7XG4gICAgICAgIGN1cnJlbmN5OiBzdHJpbmc7XG4gICAgICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgICB9O1xuICAgICAgdXNlcl9iYWxhbmNlPzogeyBhbW91bnQ6IG51bWJlcjsgY3VycmVuY3k6IHN0cmluZyB9O1xuICAgICAgZ3JhbmRfdG90YWw/OiB7IGFtb3VudDogbnVtYmVyOyBjdXJyZW5jeTogc3RyaW5nIH07XG4gICAgfTtcbiAgfTtcbiAgYnV5RGF0YToge1xuICAgIGN1cnJlbmN5OiBzdHJpbmc7XG4gICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICBleGFtcGxlOiBudWxsIHwgdW5rbm93bjtcbiAgICBpc01hbmRhdG9yeTogbnVsbCB8IGJvb2xlYW47XG4gICAgaXNQYWtldHM6IG51bGwgfCBib29sZWFuO1xuICAgIGlzUmVhZG9ubHk6IG51bGwgfCBib29sZWFuO1xuICAgIGlzVmlzaWJsZTogQm9vbGVhblN0cmluZztcbiAgICBsYWJlbF9oaW50OiBudWxsIHwgc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBvcHRpb25zOiBudWxsIHwgdW5rbm93bltdO1xuICAgIHJlZ2V4OiBudWxsIHwgdW5rbm93bjtcbiAgICBzdW06IHN0cmluZztcbiAgICB0aXRsZTogbnVsbCB8IHN0cmluZztcbiAgICB0b29sdGlwOiBudWxsIHwgc3RyaW5nO1xuICAgIHR5cGU6ICdzdWJtaXQnIHwgc3RyaW5nO1xuICAgIHZhbGlkYXRpb25fZXJyb3JfbXNnOiBudWxsIHwgc3RyaW5nO1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gIH07XG4gIGFjY291bnRYc29sbGE6IHN0cmluZztcbiAgcHVibGljX2lkOiBzdHJpbmc7XG4gIGlkQ2FyZFR5cGU6IHN0cmluZyB8IG51bGw7XG4gIHN3aXRjaF9jYXJkX2ljb246IHN0cmluZyB8IG51bGw7XG4gIGZvcm06IHsgW2tleTogc3RyaW5nXTogRmllbGQgfTtcbiAgaXNTaG9ydEZvcm06IEJvb2xlYW5TdHJpbmc7XG4gIHRheERpc2NsYWltZXI6IHN0cmluZyB8IG51bGw7XG4gIG51bWJlcjogbnVtYmVyO1xuICBiYXJjb2RlOiB1bmtub3duO1xuICBvZmZlcnM6IHVua25vd247XG4gIGluc3RydWN0aW9uOiBzdHJpbmc7XG4gIGVycm9yczogWHBzRXJyb3JbXSB8IG51bGw7XG4gIHJlc3RyaWN0aW9uczogdW5rbm93bjtcbiAgaW5mbzogc3RyaW5nO1xuICBwaWQ6IG51bWJlcjtcbiAgcHJvamVjdDoge1xuICAgIGlkOiBudW1iZXI7XG4gICAgaXNNZXJjaGFudDogYm9vbGVhbjtcbiAgICBpc1Vua25vd25QcmljZTogbnVtYmVyO1xuICAgIG5hbWU6IHN0cmluZztcbiAgfTtcbiAgZXJyb3I/OiB7XG4gICAgZmllbGRzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICB9O1xuICBpbnZvaWNlQ3JlYXRlZDogQm9vbGVhblN0cmluZztcbiAgbWVzc2FnZXM/OiBYcHNNZXNzYWdlW107XG4gIHN0YXR1cz86IFN0YXR1c0VudW0gfCBYcHNTdGF0dXMgfCBudWxsO1xuICBmaW5hbD86IGJvb2xlYW47XG4gIGVsYXBzZWRUaW1lPzogbnVtYmVyO1xuICBncm91cD86IHN0cmluZztcbiAgaXNfcGF5bWVudF9hY2NvdW50X2F0dGFjaGVkPzogYm9vbGVhbjtcbiAgaXNfcGFydGlhbF9wYXk/OiBib29sZWFuO1xuICBjb3VudHJ5PzogeyBpc286IHN0cmluZyB9O1xuICB1c2VyU2Vzc2lvbj86IEludm9pY2U7XG4gIGN1cnJlbnRDb21tYW5kOiBYcHNDb21tYW5kO1xuICB0aXRsZTogc3RyaW5nO1xuICBvbmxpbmVCYW5raW5nPzoge1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gIH07XG4gIHRocmVlRFNGb3JtOiB7XG4gICAgdGhyZWVEU1RyWGlkOiBzdHJpbmc7XG4gICAgdGhyZWVEU01ldGhvZDogc3RyaW5nO1xuICAgIHRocmVlRFNNZXRob2REYXRhOiBzdHJpbmc7XG4gICAgd2ViU29ja2V0Q2hhbm5lbFVybDogc3RyaW5nO1xuICAgIHdlYlNvY2tldENoYW5uZWxOYW1lOiBzdHJpbmc7XG4gICAgd2ViU29ja2V0Q2xpZW50VHlwZTogV2ViU29ja2V0Q2xpZW50VHlwZTtcbiAgICBzdGF0dXNVcmw6IHN0cmluZztcbiAgICB3YWl0Q2FsbGJhY2s6IGJvb2xlYW47XG4gIH0gfCBudWxsO1xuICBza2lwRm9ybTogYm9vbGVhbjtcbiAgc2tpcENoZWNrb3V0OiBib29sZWFuO1xuICBpc01hcDogYm9vbGVhbjtcbiAgaXNDaGVja291dDogYm9vbGVhbjtcbiAgY2F0ZWdvcmllczogbnVtYmVyW107XG4gIHRleHRBbGw/OiB7XG4gICAgZmF0YWw6IGJvb2xlYW47XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgWHBzU3RhdHVzIHtcbiAgaXNfcGFydGlhbF9wYXk6IGJvb2xlYW47XG4gIG1hcmtldHBsYWNlOiBzdHJpbmc7XG4gIGF1dG9yZWRpcmVjdD86IHsgdGltZTogbnVtYmVyIH07XG4gIHN0YXR1c0RhdGE6IHtcbiAgICBwcm9qZWN0OiBudW1iZXI7XG4gICAgcGlkOiBudW1iZXI7XG4gICAgb3V0OiBudW1iZXI7XG4gICAgcGF5bWVudF9jb3VudHJ5X2lzbzogc3RyaW5nO1xuICAgIHYxOiBzdHJpbmc7XG4gICAgdjI6IHN0cmluZztcbiAgICB2Mzogc3RyaW5nO1xuICAgIGludm9pY2U6IG51bWJlcjtcbiAgICBlbWFpbDogc3RyaW5nO1xuICAgIHN0YXRlOiBudW1iZXI7XG4gICAgc3RhdGVUZXh0OiBTdGF0dXNFbnVtO1xuICAgIHN0YXR1c1BzOiBudW1iZXI7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgd2ViU29ja2V0Q2hhbm5lbFVybDogc3RyaW5nO1xuICAgIHdlYlNvY2tldENoYW5uZWxOYW1lOiBzdHJpbmc7XG4gICAgd2ViU29ja2V0Q2xpZW50VHlwZTogV2ViU29ja2V0Q2xpZW50VHlwZTtcbiAgICBwcm9qZWN0QW1vdW50OiBzdHJpbmc7XG4gICAgcmVjdXJyZW50SWQ/OiBudW1iZXI7XG4gIH07XG4gIGdzaGFyZV9iYW5uZXJfZW5hYmxlZDogYm9vbGVhbjtcbiAgaW52b2ljZTogbnVtYmVyO1xuICByZXBheW1lbnQ/OiBudWxsW10gfCBudWxsO1xuICBlbWFpbD86IG51bGxbXSB8IG51bGw7XG4gIGdyb3VwOiBzdHJpbmc7XG4gIHNoYXJpbmc/OiB1bmtub3duO1xuICBwcmVfb3JkZXJzOiB1bmtub3duO1xuICB0ZXh0OiB7XG4gICAgaW5mbzoge1xuICAgICAgW2tleTogc3RyaW5nXTogeyBrZXk/OiBzdHJpbmc7IHByZWY/OiBzdHJpbmc7IHZhbHVlPzogc3RyaW5nIH07XG4gICAgfTtcbiAgICBzdGF0ZTogc3RyaW5nO1xuICAgIHN0YXRlRmFpbGVkOiBzdHJpbmc7XG4gICAgaXNfYWRkaXRpb25hbF9iYWNrX3VybF9lbmFibGVkPzogYm9vbGVhbjtcbiAgICBhZGRpdGlvbmFsX2JhY2tfdXJsX2xpbms/OiBzdHJpbmc7XG4gICAgYWRkaXRpb25hbF9iYWNrX3VybF9sYWJlbD86IHN0cmluZztcbiAgICBhZGRpdGlvbmFsX2JhY2tfdXJsX2FjdGlvbj86IHN0cmluZztcbiAgICBiYWNrdXJsOiBzdHJpbmc7XG4gICAgYmFja3VybF9jYXB0aW9uOiBzdHJpbmc7XG4gICAgYmFja3VybF9hY3Rpb246IHN0cmluZztcbiAgICByZWRlZW1faW5zdHJ1Y3Rpb25fbGluaz86IG51bGw7XG4gICAgb3JkZXI/OiB7XG4gICAgICBsaW5laXRlbXM/OiBMaW5lSXRlbVtdO1xuICAgICAgc2hpcHBpbmc/OiB7XG4gICAgICAgIGN1cnJlbmN5OiBzdHJpbmc7XG4gICAgICAgIGFtb3VudDogbnVtYmVyO1xuICAgICAgfTtcbiAgICAgIGNvbnRhaW5lZF90YXhlcz86IHtcbiAgICAgICAgc2FsZXNfdGF4PzogYm9vbGVhbjtcbiAgICAgICAgdXNlcl92YXQ/OiBib29sZWFuO1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICBjb3VudHJ5OiBzdHJpbmc7XG4gIHJldHVybl9yZWdpb246IHN0cmluZztcbiAgYWRkaXRpb25hbF9idXR0b25fcmV0dXJuX3JlZ2lvbj86IHN0cmluZztcbiAgaXNVc2VyTGVnYWw6IGJvb2xlYW47XG4gIGlzQ2FuY2VsVXNlcjogYm9vbGVhbjtcbiAgaXNQcmVsb2FkZXI6IGJvb2xlYW47XG4gIGFsdGVybmF0aXZlPzogdW5rbm93bjtcbiAgc2hvd0VtYWlsUmVxdWVzdDogYm9vbGVhbjtcbiAgYXV0b1JlY2hhcmdlOiB7XG4gICAgcGFyYW1zPzogdW5rbm93bjtcbiAgICBwYWNrYWdlczogdW5rbm93bjtcbiAgICBsYWJlbF9lcnJvcjogc3RyaW5nO1xuICAgIGxhYmVsX2NvbnRpbnVlOiBzdHJpbmc7XG4gIH07XG4gIHRpdGxlX2NsYXNzOiBUaXRsZUNsYXNzO1xuICBuZWVkVG9DaGVjazogYm9vbGVhbjtcbiAgY3VzdG9tX21lc3NhZ2U6IHN0cmluZztcbiAgY3VzdG9tX2hlYWRlcjogc3RyaW5nO1xuICBiYWJrYUxpbms6IHN0cmluZztcbiAgZGlzY291bnQ/OiB7IFtrZXk6IHN0cmluZ106IHsga2V5Pzogc3RyaW5nOyB2YWx1ZT86IHN0cmluZyB9IH07XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHBzLXJlc3BvbnNlLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BheW1lbnQtY2xpZW50LWNvcmUvc3JjL2xpYi9jb3JlL3BheW1lbnQveHBzLXJlc3BvbnNlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgWHBzQm9vbGVhbiB9IGZyb20gJy4uL3hwcy1ib29sZWFuLmVudW0nO1xuaW1wb3J0IHsgQ2hlY2tvdXRJdGVtIH0gZnJvbSAnLi9jaGVja291dC1pdGVtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGaWVsZCB9IGZyb20gJy4vZmllbGQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEludm9pY2UgfSBmcm9tICcuL2ludm9pY2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IExpbmVJdGVtIH0gZnJvbSAnLi9zdGF0dXMvbGluZS1pdGVtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTdGF0dXNFbnVtIH0gZnJvbSAnLi9zdGF0dXMvc3RhdHVzLmVudW0nO1xuaW1wb3J0IHsgVGl0bGVDbGFzcyB9IGZyb20gJy4vc3RhdHVzL3RpdGxlLWNsYXNzLmVudW0nO1xuaW1wb3J0IHsgV2ViU29ja2V0Q2xpZW50VHlwZSB9IGZyb20gJy4vc3RhdHVzL3dlYi1zb2NrZXQtY2xpZW50LXR5cGUuZW51bSc7XG5pbXBvcnQgeyBWaXJ0dWFsQ3VycmVuY3kgfSBmcm9tICcuL3ZpcnR1YWwtY3VycmVuY3kuaW50ZXJmYWNlJztcbmltcG9ydCB7IFhwc0NvbW1hbmQgfSBmcm9tICcuL3hwcy1jb21hbmQuZW51bSc7XG5pbXBvcnQgeyBYcHNFcnJvciB9IGZyb20gJy4veHBzLWVycm9yLmludGVyZmFjZSc7XG5pbXBvcnQgeyBYcHNNZXNzYWdlIH0gZnJvbSAnLi94cHMtbWVzc2FnZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgWHBzU3Vic2NyaXB0aW9uSXRlbSB9IGZyb20gJy4veHBzLXN1YnNjcmlwdGlvbi1pdGVtLmludGVyZmFjZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgWHBzUmVzcG9uc2Uge1xuICBjaGVja291dDoge1xuICAgIGFjdGlvbjogc3RyaW5nO1xuICAgIG1ldGhvZDogc3RyaW5nO1xuICAgIGRhdGE6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIH07XG4gIHN1bW1hcnk6IHtcbiAgICBwdXJjaGFzZToge1xuICAgICAgdmlydHVhbF9jdXJyZW5jeT86IFZpcnR1YWxDdXJyZW5jeVtdO1xuICAgICAgY2hlY2tvdXRfaXRlbXM/OiBDaGVja291dEl0ZW1bXTtcbiAgICAgIHZpcnR1YWxfaXRlbXM/OiBWaXJ0dWFsQ3VycmVuY3lbXTtcbiAgICAgIHN1YnNjcmlwdGlvbnM/OiBYcHNTdWJzY3JpcHRpb25JdGVtW107XG4gICAgICBjaGVja291dD86IHtcbiAgICAgICAgYW1vdW50OiBudW1iZXI7XG4gICAgICAgIGN1cnJlbmN5OiBzdHJpbmc7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgICAgIGlzX2JvbnVzPzogYm9vbGVhbjtcbiAgICAgIH07XG4gICAgfTtcbiAgICBmaW5hbmNlOiB7XG4gICAgICBwYXltZW50X2NvdW50cnk6IHsgaXNvOiBzdHJpbmcgfTtcbiAgICAgIHN1Yl90b3RhbDoge1xuICAgICAgICBhbW91bnQ6IG51bWJlcjtcbiAgICAgICAgY3VycmVuY3k6IHN0cmluZztcbiAgICAgICAgcGF5bWVudF9hbW91bnQ6IG51bWJlcjtcbiAgICAgICAgcGF5bWVudF9jdXJyZW5jeTogc3RyaW5nO1xuICAgICAgfTtcbiAgICAgIGRpc2NvdW50OiB7IGFtb3VudDogbnVtYmVyOyBjdXJyZW5jeTogc3RyaW5nIH07XG4gICAgICB2YXRfdXNlcj86IHtcbiAgICAgICAgYW1vdW50OiBudW1iZXI7XG4gICAgICAgIHBlcmNlbnQ6IG51bWJlcjtcbiAgICAgICAgY3VycmVuY3k6IHN0cmluZztcbiAgICAgICAgdmlzaWJsZTogYm9vbGVhbjtcbiAgICAgIH07XG4gICAgICBzYWxlc190YXg6IHsgYW1vdW50OiBudW1iZXI7IHBlcmNlbnQ6IG51bWJlcjsgY3VycmVuY3k6IHN0cmluZyB9O1xuICAgICAgc2FsZXNfdGF4X3VzZXI/OiB7IGFtb3VudDogbnVtYmVyOyBwZXJjZW50OiBudW1iZXI7IGN1cnJlbmN5OiBzdHJpbmcgfTtcbiAgICAgIGZlZTogeyBhbW91bnQ6IG51bWJlcjsgY3VycmVuY3k6IHN0cmluZyB9O1xuICAgICAgdG90YWw6IHsgYW1vdW50OiBudW1iZXI7IGN1cnJlbmN5OiBzdHJpbmcgfTtcbiAgICAgIHhzb2xsYV9jcmVkaXRzPzoge1xuICAgICAgICBwYXltZW50X2Ftb3VudDogbnVtYmVyO1xuICAgICAgICBwYXltZW50X2N1cnJlbmN5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgICAgdmF0OiB7XG4gICAgICAgIGFtb3VudDogbnVtYmVyO1xuICAgICAgICBwZXJjZW50OiBudW1iZXI7XG4gICAgICAgIGN1cnJlbmN5OiBzdHJpbmc7XG4gICAgICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgICB9O1xuICAgICAgdXNlcl9iYWxhbmNlPzogeyBhbW91bnQ6IG51bWJlcjsgY3VycmVuY3k6IHN0cmluZyB9O1xuICAgICAgZ3JhbmRfdG90YWw/OiB7IGFtb3VudDogbnVtYmVyOyBjdXJyZW5jeTogc3RyaW5nIH07XG4gICAgfTtcbiAgfTtcbiAgYnV5RGF0YToge1xuICAgIGN1cnJlbmN5OiBzdHJpbmc7XG4gICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICBleGFtcGxlOiBudWxsIHwgdW5rbm93bjtcbiAgICBpc01hbmRhdG9yeTogbnVsbCB8IGJvb2xlYW47XG4gICAgaXNQYWtldHM6IG51bGwgfCBib29sZWFuO1xuICAgIGlzUmVhZG9ubHk6IG51bGwgfCBib29sZWFuO1xuICAgIGlzVmlzaWJsZTogWHBzQm9vbGVhbjtcbiAgICBsYWJlbF9oaW50OiBudWxsIHwgc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBvcHRpb25zOiBudWxsIHwgdW5rbm93bltdO1xuICAgIHJlZ2V4OiBudWxsIHwgdW5rbm93bjtcbiAgICBzdW06IHN0cmluZztcbiAgICB0aXRsZTogbnVsbCB8IHN0cmluZztcbiAgICB0b29sdGlwOiBudWxsIHwgc3RyaW5nO1xuICAgIHR5cGU6ICdzdWJtaXQnIHwgc3RyaW5nO1xuICAgIHZhbGlkYXRpb25fZXJyb3JfbXNnOiBudWxsIHwgc3RyaW5nO1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gIH07XG4gIGFjY291bnRYc29sbGE6IHN0cmluZztcbiAgcHVibGljX2lkOiBzdHJpbmc7XG4gIGZvcm06IHsgW2tleTogc3RyaW5nXTogRmllbGQgfTtcbiAgdGF4RGlzY2xhaW1lcjogc3RyaW5nIHwgbnVsbDtcbiAgbnVtYmVyOiBudW1iZXI7XG4gIGJhcmNvZGU6IHVua25vd247XG4gIG9mZmVyczogdW5rbm93bjtcbiAgaW5zdHJ1Y3Rpb246IHN0cmluZztcbiAgZXJyb3JzOiBYcHNFcnJvcltdIHwgbnVsbDtcbiAgcmVzdHJpY3Rpb25zOiB1bmtub3duO1xuICBpbmZvOiBzdHJpbmc7XG4gIHBpZDogbnVtYmVyO1xuICBwcm9qZWN0OiB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBpc01lcmNoYW50OiBib29sZWFuO1xuICAgIGlzVW5rbm93blByaWNlOiBudW1iZXI7XG4gICAgbmFtZTogc3RyaW5nO1xuICB9O1xuICBlcnJvcj86IHtcbiAgICBmaWVsZHM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIH07XG4gIGludm9pY2VDcmVhdGVkOiBYcHNCb29sZWFuO1xuICBtZXNzYWdlcz86IFhwc01lc3NhZ2VbXTtcbiAgc3RhdHVzPzogU3RhdHVzRW51bSB8IFhwc1N0YXR1cyB8IG51bGw7XG4gIGZpbmFsPzogYm9vbGVhbjtcbiAgZWxhcHNlZFRpbWU/OiBudW1iZXI7XG4gIGdyb3VwPzogc3RyaW5nO1xuICBpc19wYXltZW50X2FjY291bnRfYXR0YWNoZWQ/OiBib29sZWFuO1xuICBpc19wYXJ0aWFsX3BheT86IGJvb2xlYW47XG4gIGNvdW50cnk/OiB7IGlzbzogc3RyaW5nIH07XG4gIHVzZXJTZXNzaW9uPzogSW52b2ljZTtcbiAgY3VycmVudENvbW1hbmQ6IFhwc0NvbW1hbmQ7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIG9ubGluZUJhbmtpbmc/OiB7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgfTtcbiAgdGhyZWVEU0Zvcm06IHtcbiAgICB0aHJlZURTVHJYaWQ6IHN0cmluZztcbiAgICB0aHJlZURTTWV0aG9kOiBzdHJpbmc7XG4gICAgdGhyZWVEU01ldGhvZERhdGE6IHN0cmluZztcbiAgICB3ZWJTb2NrZXRDaGFubmVsVXJsOiBzdHJpbmc7XG4gICAgd2ViU29ja2V0Q2hhbm5lbE5hbWU6IHN0cmluZztcbiAgICB3ZWJTb2NrZXRDbGllbnRUeXBlOiBXZWJTb2NrZXRDbGllbnRUeXBlO1xuICAgIHN0YXR1c1VybDogc3RyaW5nO1xuICAgIHdhaXRDYWxsYmFjazogYm9vbGVhbjtcbiAgfSB8IG51bGw7XG4gIHNraXBGb3JtOiBib29sZWFuO1xuICBza2lwQ2hlY2tvdXQ6IGJvb2xlYW47XG4gIGlzTWFwOiBib29sZWFuO1xuICBpc0NoZWNrb3V0OiBib29sZWFuO1xuICBjYXRlZ29yaWVzOiBudW1iZXJbXTtcbiAgdGV4dEFsbD86IHtcbiAgICBmYXRhbDogYm9vbGVhbjtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBYcHNTdGF0dXMge1xuICBpc19wYXJ0aWFsX3BheTogYm9vbGVhbjtcbiAgbWFya2V0cGxhY2U6IHN0cmluZztcbiAgYXV0b3JlZGlyZWN0PzogeyB0aW1lOiBudW1iZXIgfTtcbiAgc3RhdHVzRGF0YToge1xuICAgIHByb2plY3Q6IG51bWJlcjtcbiAgICBwaWQ6IG51bWJlcjtcbiAgICBvdXQ6IG51bWJlcjtcbiAgICBwYXltZW50X2NvdW50cnlfaXNvOiBzdHJpbmc7XG4gICAgdjE6IHN0cmluZztcbiAgICB2Mjogc3RyaW5nO1xuICAgIHYzOiBzdHJpbmc7XG4gICAgaW52b2ljZTogbnVtYmVyO1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgc3RhdGU6IG51bWJlcjtcbiAgICBzdGF0ZVRleHQ6IFN0YXR1c0VudW07XG4gICAgc3RhdHVzUHM6IG51bWJlcjtcbiAgICBrZXk6IHN0cmluZztcbiAgICB3ZWJTb2NrZXRDaGFubmVsVXJsOiBzdHJpbmc7XG4gICAgd2ViU29ja2V0Q2hhbm5lbE5hbWU6IHN0cmluZztcbiAgICB3ZWJTb2NrZXRDbGllbnRUeXBlOiBXZWJTb2NrZXRDbGllbnRUeXBlO1xuICAgIHByb2plY3RBbW91bnQ6IHN0cmluZztcbiAgICByZWN1cnJlbnRJZD86IG51bWJlcjtcbiAgfTtcbiAgZ3NoYXJlX2Jhbm5lcl9lbmFibGVkOiBib29sZWFuO1xuICBpbnZvaWNlOiBudW1iZXI7XG4gIHJlcGF5bWVudD86IG51bGxbXSB8IG51bGw7XG4gIGVtYWlsPzogbnVsbFtdIHwgbnVsbDtcbiAgZ3JvdXA6IHN0cmluZztcbiAgc2hhcmluZz86IHVua25vd247XG4gIHByZV9vcmRlcnM6IHVua25vd247XG4gIHRleHQ6IHtcbiAgICBpbmZvOiB7XG4gICAgICBba2V5OiBzdHJpbmddOiB7IGtleT86IHN0cmluZzsgcHJlZj86IHN0cmluZzsgdmFsdWU/OiBzdHJpbmcgfTtcbiAgICB9O1xuICAgIHN0YXRlOiBzdHJpbmc7XG4gICAgc3RhdGVGYWlsZWQ6IHN0cmluZztcbiAgICBpc19hZGRpdGlvbmFsX2JhY2tfdXJsX2VuYWJsZWQ/OiBib29sZWFuO1xuICAgIGFkZGl0aW9uYWxfYmFja191cmxfbGluaz86IHN0cmluZztcbiAgICBhZGRpdGlvbmFsX2JhY2tfdXJsX2xhYmVsPzogc3RyaW5nO1xuICAgIGFkZGl0aW9uYWxfYmFja191cmxfYWN0aW9uPzogc3RyaW5nO1xuICAgIGJhY2t1cmw6IHN0cmluZztcbiAgICBiYWNrdXJsX2NhcHRpb246IHN0cmluZztcbiAgICBiYWNrdXJsX2FjdGlvbjogc3RyaW5nO1xuICAgIHJlZGVlbV9pbnN0cnVjdGlvbl9saW5rPzogbnVsbDtcbiAgICBvcmRlcj86IHtcbiAgICAgIGxpbmVpdGVtcz86IExpbmVJdGVtW107XG4gICAgICBzaGlwcGluZz86IHtcbiAgICAgICAgY3VycmVuY3k6IHN0cmluZztcbiAgICAgICAgYW1vdW50OiBudW1iZXI7XG4gICAgICB9O1xuICAgICAgY29udGFpbmVkX3RheGVzPzoge1xuICAgICAgICBzYWxlc190YXg/OiBib29sZWFuO1xuICAgICAgICB1c2VyX3ZhdD86IGJvb2xlYW47XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIGNvdW50cnk6IHN0cmluZztcbiAgcmV0dXJuX3JlZ2lvbjogc3RyaW5nO1xuICBhZGRpdGlvbmFsX2J1dHRvbl9yZXR1cm5fcmVnaW9uPzogc3RyaW5nO1xuICBpc1VzZXJMZWdhbDogYm9vbGVhbjtcbiAgaXNDYW5jZWxVc2VyOiBib29sZWFuO1xuICBpc1ByZWxvYWRlcjogYm9vbGVhbjtcbiAgYWx0ZXJuYXRpdmU/OiB1bmtub3duO1xuICBzaG93RW1haWxSZXF1ZXN0OiBib29sZWFuO1xuICBhdXRvUmVjaGFyZ2U6IHtcbiAgICBwYXJhbXM/OiB1bmtub3duO1xuICAgIHBhY2thZ2VzOiB1bmtub3duO1xuICAgIGxhYmVsX2Vycm9yOiBzdHJpbmc7XG4gICAgbGFiZWxfY29udGludWU6IHN0cmluZztcbiAgfTtcbiAgdGl0bGVfY2xhc3M6IFRpdGxlQ2xhc3M7XG4gIG5lZWRUb0NoZWNrOiBib29sZWFuO1xuICBjdXN0b21fbWVzc2FnZTogc3RyaW5nO1xuICBjdXN0b21faGVhZGVyOiBzdHJpbmc7XG4gIGJhYmthTGluazogc3RyaW5nO1xuICBkaXNjb3VudD86IHsgW2tleTogc3RyaW5nXTogeyBrZXk/OiBzdHJpbmc7IHZhbHVlPzogc3RyaW5nIH0gfTtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydGllcy50eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGF5bWVudC1jbGllbnQtY29yZS9zcmMvbGliL2NvcmUvcHJvcGVydGllcy50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBQcm9wZXJ0aWVzPFQ+ID0ge1xuICBbUCBpbiBrZXlvZiBUXTogVFtQXTtcbn07XG4iXX0=
@@ -0,0 +1,200 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import { map } from 'rxjs/operators';
4
+ import { WsError } from '../exceptions-handling/errors/ws-error.class';
5
+ import { ErrorTags } from '../exceptions-handling/errors/elk-error-types.enum';
6
+ import { WebSocketClientType } from './web-socket-client-type.enum';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "../exceptions-handling/elk/elk-logger.service";
9
+ export class CentrifugoWebSocketService {
10
+ constructor(elkLoggerService) {
11
+ this.elkLoggerService = elkLoggerService;
12
+ this.type = WebSocketClientType.centrifugo;
13
+ this.reconnectionTimerId = null;
14
+ this.isConnectionOpen = false;
15
+ this.isConnecting = false;
16
+ this.incomingMessages$ = new Subject();
17
+ this.successfulReconnectionEventsProxy$ = new Subject();
18
+ }
19
+ async open(url, channel) {
20
+ if (url === this.url && channel === this.channel) {
21
+ return;
22
+ }
23
+ try {
24
+ this.url = url;
25
+ this.channel = channel;
26
+ await this.createConnection(url, channel);
27
+ }
28
+ catch (error) {
29
+ // @ts-expect-error error is unknown
30
+ const message = (error?.message || error);
31
+ const unknownError = new WsError(`unknown websocket error: ${message}`, channel);
32
+ this.elkLoggerService.handleError(unknownError);
33
+ }
34
+ }
35
+ close() {
36
+ this.clearReconnectionTimer();
37
+ if (!this.isConnectionOpen) {
38
+ return;
39
+ }
40
+ this.connection.disconnect();
41
+ }
42
+ get messages$() {
43
+ return (this.incomingMessages$
44
+ .asObservable()
45
+ // event don't respect type from argument, it's weird
46
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
47
+ .pipe(map((event) => event.data)));
48
+ }
49
+ subscribeOnSuccessfulReconnection(next) {
50
+ return this.successfulReconnectionEventsProxy$
51
+ .asObservable()
52
+ .subscribe(next);
53
+ }
54
+ clearReconnectionTimer() {
55
+ if (this.reconnectionTimerId) {
56
+ clearTimeout(this.reconnectionTimerId);
57
+ this.reconnectionTimerId = null;
58
+ }
59
+ }
60
+ setFirstReconnectionTimeout() {
61
+ const min = CentrifugoWebSocketService.timeoutsMs.reconnection -
62
+ CentrifugoWebSocketService.timeoutsMs.reconnectionMaxDeviation;
63
+ const max = CentrifugoWebSocketService.timeoutsMs.reconnection +
64
+ CentrifugoWebSocketService.timeoutsMs.reconnectionMaxDeviation;
65
+ this.reconnectionTimeoutMs =
66
+ Math.floor(Math.random() * (max - min + 1)) + min;
67
+ }
68
+ incrementReconnectionTimeout() {
69
+ this.reconnectionTimeoutMs =
70
+ this.reconnectionTimeoutMs *
71
+ CentrifugoWebSocketService.reconnectionTimeoutIncrementFactor;
72
+ }
73
+ async getCentrifugoClient() {
74
+ return import('centrifuge').then((module) => module.Centrifuge);
75
+ }
76
+ async createConnection(url, channel) {
77
+ if (this.isConnectionOpen || this.isConnecting) {
78
+ return;
79
+ }
80
+ // eslint-disable-next-line @typescript-eslint/naming-convention
81
+ const CentrifugeClient = await this.getCentrifugoClient();
82
+ const websocketUrl = url ?? this.url;
83
+ const websocketChannel = channel ?? this.channel;
84
+ this.connection = new CentrifugeClient(websocketUrl, {
85
+ debug: true,
86
+ maxReconnectDelay: 1500,
87
+ maxServerPingDelay: 1000,
88
+ });
89
+ return new Promise((resolve, reject) => {
90
+ this.connection
91
+ .on('connecting', () => {
92
+ this.isConnecting = true;
93
+ })
94
+ .on('connected', () => {
95
+ this.onConnect();
96
+ resolve();
97
+ })
98
+ .on('disconnected', (ctx) => {
99
+ this.onDisconnect(ctx, websocketChannel);
100
+ reject();
101
+ })
102
+ .on('error', (ctx) => {
103
+ const message = `code ${ctx.error.code} - ${ctx.error.message}`;
104
+ this.elkLoggerService.log(`connection error: ${message}`, [ErrorTags.WS], {
105
+ channel: websocketChannel,
106
+ });
107
+ })
108
+ .connect();
109
+ this.subscription = this.connection.newSubscription(websocketChannel, this.getSubscriptionOptions(websocketChannel));
110
+ this.subscription
111
+ .on('subscribed', (ctx) => {
112
+ this.subscriptionPosition = ctx.streamPosition;
113
+ this.prevSubscribedChannel = websocketChannel;
114
+ })
115
+ .on('publication', (ctx) => {
116
+ const message = ctx.data;
117
+ this.elkLoggerService.log(`websocket message received: ${message}`, [ErrorTags.WS], {
118
+ channel: websocketChannel,
119
+ });
120
+ this.incomingMessages$.next(ctx);
121
+ })
122
+ .on('error', (ctx) => {
123
+ const message = `code ${ctx.error.code} - ${ctx.error.message}`;
124
+ this.elkLoggerService.log(`subscription error: ${message}`, [ErrorTags.WS], {
125
+ channel: websocketChannel,
126
+ });
127
+ })
128
+ .subscribe();
129
+ });
130
+ }
131
+ onConnect() {
132
+ clearTimeout(this.openConnectionTimerId);
133
+ this.isConnecting = false;
134
+ this.isConnectionOpen = true;
135
+ }
136
+ onDisconnect(ctx, websocketChannel) {
137
+ this.isConnecting = false;
138
+ this.isConnectionOpen = false;
139
+ /* If connection error, cause any connection error isn't 0 */
140
+ if (ctx.code !== 0) {
141
+ const message = `code ${ctx.code} - ${ctx.reason}`;
142
+ this.elkLoggerService.log(`disconnected error: ${message}`, [ErrorTags.WS], {
143
+ channel: websocketChannel,
144
+ });
145
+ (async () => {
146
+ await this.waitWhileNotReconnect();
147
+ })();
148
+ }
149
+ }
150
+ async reconnect() {
151
+ this.clearReconnectionTimer();
152
+ return new Promise((resolve) => {
153
+ this.reconnectionTimerId = setTimeout(() => {
154
+ this.createConnection()
155
+ .then(() => resolve(true))
156
+ .catch(() => resolve(false));
157
+ this.incrementReconnectionTimeout();
158
+ }, this.reconnectionTimeoutMs);
159
+ });
160
+ }
161
+ async waitWhileNotReconnect() {
162
+ this.clearReconnectionTimer();
163
+ this.setFirstReconnectionTimeout();
164
+ let isConnected = false;
165
+ const beforeTimer = performance.now();
166
+ while (!isConnected) {
167
+ isConnected = await this.reconnect();
168
+ }
169
+ const afterTimer = performance.now();
170
+ const timerDuration = afterTimer - beforeTimer;
171
+ this.elkLoggerService.log(`fallback to reconnection timer: duration ${timerDuration}ms`, [ErrorTags.WS], {
172
+ channel: this.channel,
173
+ });
174
+ this.successfulReconnectionEventsProxy$.next();
175
+ }
176
+ getSubscriptionOptions(websocketChannel) {
177
+ const options = {
178
+ recoverable: true,
179
+ };
180
+ if (websocketChannel === this.prevSubscribedChannel &&
181
+ this.subscriptionPosition) {
182
+ options.since = this.subscriptionPosition;
183
+ }
184
+ return options;
185
+ }
186
+ }
187
+ CentrifugoWebSocketService.reconnectionTimeoutIncrementFactor = 2;
188
+ CentrifugoWebSocketService.timeoutsMs = {
189
+ reconnection: 1000,
190
+ reconnectionMaxDeviation: 1000,
191
+ };
192
+ CentrifugoWebSocketService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: CentrifugoWebSocketService, deps: [{ token: i1.ElkLoggerService }], target: i0.ɵɵFactoryTarget.Injectable });
193
+ CentrifugoWebSocketService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: CentrifugoWebSocketService, providedIn: 'root' });
194
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: CentrifugoWebSocketService, decorators: [{
195
+ type: Injectable,
196
+ args: [{
197
+ providedIn: 'root',
198
+ }]
199
+ }], ctorParameters: function () { return [{ type: i1.ElkLoggerService }]; } });
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VudHJpZnVnby13ZWItc29ja2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wYXltZW50LWNsaWVudC1jb3JlL3NyYy9saWIvY29yZS93ZWItc29ja2V0L2NlbnRyaWZ1Z28td2ViLXNvY2tldC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBU3JDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFFL0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7OztBQUtwRSxNQUFNLE9BQU8sMEJBQTBCO0lBOEJyQyxZQUFvQyxnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQTNCL0QsU0FBSSxHQUFHLG1CQUFtQixDQUFDLFVBQVUsQ0FBQztRQVFyQyx3QkFBbUIsR0FBeUMsSUFBSSxDQUFDO1FBT2pFLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN6QixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUtaLHNCQUFpQixHQUNoQyxJQUFJLE9BQU8sRUFBc0IsQ0FBQztRQUVuQix1Q0FBa0MsR0FDakQsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUVtRCxDQUFDO0lBRW5FLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBVyxFQUFFLE9BQWU7UUFDNUMsSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsSUFBSSxPQUFPLEtBQUssSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoRCxPQUFPO1NBQ1I7UUFFRCxJQUFJO1lBQ0Ys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QUFJO0NBQy9CLENBQUM7dUhBUlMsMEJBQTBCOzJIQUExQiwwQkFBMEIsY0FGekIsTUFBTTsyRkFFUCwwQkFBMEI7a0JBSHRDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgdHlwZSB7XG4gIENlbnRyaWZ1Z2UsXG4gIERpc2Nvbm5lY3RlZENvbnRleHQsXG4gIFB1YmxpY2F0aW9uQ29udGV4dCxcbiAgU3Vic2NyaXB0aW9uIGFzIENlbnRyaWZ1Z2VTdWJzY3JpcHRpb24sXG59IGZyb20gJ2NlbnRyaWZ1Z2UnO1xuaW1wb3J0IHsgU3RyZWFtUG9zaXRpb24sIFN1YnNjcmlwdGlvbk9wdGlvbnMgfSBmcm9tICdjZW50cmlmdWdlL2J1aWxkL3R5cGVzJztcbmltcG9ydCB7IEVsa0xvZ2dlclNlcnZpY2UgfSBmcm9tICcuLi9leGNlcHRpb25zLWhhbmRsaW5nL2Vsay9lbGstbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgV3NFcnJvciB9IGZyb20gJy4uL2V4Y2VwdGlvbnMtaGFuZGxpbmcvZXJyb3JzL3dzLWVycm9yLmNsYXNzJztcbmltcG9ydCB7IEVycm9yVGFncyB9IGZyb20gJy4uL2V4Y2VwdGlvbnMtaGFuZGxpbmcvZXJyb3JzL2Vsay1lcnJvci10eXBlcy5lbnVtJztcbmltcG9ydCB7IFdlYlNvY2tldENsaWVudCB9IGZyb20gJy4vd2ViLXNvY2tldC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgV2ViU29ja2V0Q2xpZW50VHlwZSB9IGZyb20gJy4vd2ViLXNvY2tldC1jbGllbnQtdHlwZS5lbnVtJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIENlbnRyaWZ1Z29XZWJTb2NrZXRTZXJ2aWNlIGltcGxlbWVudHMgV2ViU29ja2V0Q2xpZW50IHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSByZWNvbm5lY3Rpb25UaW1lb3V0SW5jcmVtZW50RmFjdG9yID0gMjtcblxuICBwdWJsaWMgdHlwZSA9IFdlYlNvY2tldENsaWVudFR5cGUuY2VudHJpZnVnbztcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSB0aW1lb3V0c01zID0ge1xuICAgIHJlY29ubmVjdGlvbjogMTAwMCxcbiAgICByZWNvbm5lY3Rpb25NYXhEZXZpYXRpb246IDEwMDAsXG4gIH07XG5cbiAgcHJpdmF0ZSByZWNvbm5lY3Rpb25UaW1lb3V0TXMhOiBudW1iZXI7XG4gIHByaXZhdGUgcmVjb25uZWN0aW9uVGltZXJJZDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIHJlYWRvbmx5IG9wZW5Db25uZWN0aW9uVGltZXJJZDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgY29ubmVjdGlvbiE6IENlbnRyaWZ1Z2U7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uITogQ2VudHJpZnVnZVN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25Qb3NpdGlvbj86IFN0cmVhbVBvc2l0aW9uO1xuICBwcml2YXRlIGlzQ29ubmVjdGlvbk9wZW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBpc0Nvbm5lY3RpbmcgPSBmYWxzZTtcbiAgcHJpdmF0ZSB1cmwhOiBzdHJpbmc7XG4gIHByaXZhdGUgY2hhbm5lbCE6IHN0cmluZztcbiAgcHJpdmF0ZSBwcmV2U3Vic2NyaWJlZENoYW5uZWw/OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpbmNvbWluZ01lc3NhZ2VzJDogU3ViamVjdDxQdWJsaWNhdGlvbkNvbnRleHQ+ID1cbiAgICBuZXcgU3ViamVjdDxQdWJsaWNhdGlvbkNvbnRleHQ+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzdWNjZXNzZnVsUmVjb25uZWN0aW9uRXZlbnRzUHJveHkkOiBTdWJqZWN0PHZvaWQ+ID1cbiAgICBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGVsa0xvZ2dlclNlcnZpY2U6IEVsa0xvZ2dlclNlcnZpY2UpIHt9XG5cbiAgcHVibGljIGFzeW5jIG9wZW4odXJsOiBzdHJpbmcsIGNoYW5uZWw6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh1cmwgPT09IHRoaXMudXJsICYmIGNoYW5uZWwgPT09IHRoaXMuY2hhbm5lbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICB0aGlzLnVybCA9IHVybDtcbiAgICAgIHRoaXMuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgICBhd2FpdCB0aGlzLmNyZWF0ZUNvbm5lY3Rpb24odXJsLCBjaGFubmVsKTtcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBlcnJvciBpcyB1bmtub3duXG4gICAgICBjb25zdCBtZXNzYWdlID0gKGVycm9yPy5tZXNzYWdlIHx8IGVycm9yKSBhcyBzdHJpbmc7XG4gICAgICBjb25zdCB1bmtub3duRXJyb3IgPSBuZXcgV3NFcnJvcihcbiAgICAgICAgYHVua25vd24gd2Vic29ja2V0IGVycm9yOiAke21lc3NhZ2V9YCxcbiAgICAgICAgY2hhbm5lbFxuICAgICAgKTtcblxuICAgICAgdGhpcy5lbGtMb2dnZXJTZXJ2aWNlLmhhbmRsZUVycm9yKHVua25vd25FcnJvcik7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJSZWNvbm5lY3Rpb25UaW1lcigpO1xuXG4gICAgaWYgKCF0aGlzLmlzQ29ubmVjdGlvbk9wZW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNvbm5lY3Rpb24uZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgcHVibGljIGdldCBtZXNzYWdlcyQoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5pbmNvbWluZ01lc3NhZ2VzJFxuICAgICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgICAgLy8gZXZlbnQgZG9uJ3QgcmVzcGVjdCB0eXBlIGZyb20gYXJndW1lbnQsIGl0J3Mgd2VpcmRcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuXG4gICAgICAgIC5waXBlKG1hcCgoZXZlbnQpID0+IGV2ZW50LmRhdGEpKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc3Vic2NyaWJlT25TdWNjZXNzZnVsUmVjb25uZWN0aW9uKG5leHQ/OiAoKSA9PiB2b2lkKTogU3Vic2NyaXB0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5zdWNjZXNzZnVsUmVjb25uZWN0aW9uRXZlbnRzUHJveHkkXG4gICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgIC5zdWJzY3JpYmUobmV4dCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyUmVjb25uZWN0aW9uVGltZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVjb25uZWN0aW9uVGltZXJJZCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucmVjb25uZWN0aW9uVGltZXJJZCk7XG4gICAgICB0aGlzLnJlY29ubmVjdGlvblRpbWVySWQgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0Rmlyc3RSZWNvbm5lY3Rpb25UaW1lb3V0KCk6IHZvaWQge1xuICAgIGNvbnN0IG1pbiA9XG4gICAgICBDZW50cmlmdWdvV2ViU29ja2V0U2VydmljZS50aW1lb3V0c01zLnJlY29ubmVjdGlvbiAtXG4gICAgICBDZW50cmlmdWdvV2ViU29ja2V0U2VydmljZS50aW1lb3V0c01zLnJlY29ubmVjdGlvbk1heERldmlhdGlvbjtcbiAgICBjb25zdCBtYXggPVxuICAgICAgQ2VudHJpZnVnb1dlYlNvY2tldFNlcnZpY2UudGltZW91dHNNcy5yZWNvbm5lY3Rpb24gK1xuICAgICAgQ2VudHJpZnVnb1dlYlNvY2tldFNlcnZpY2UudGltZW91dHNNcy5yZWNvbm5lY3Rpb25NYXhEZXZpYXRpb247XG4gICAgdGhpcy5yZWNvbm5lY3Rpb25UaW1lb3V0TXMgPVxuICAgICAgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbiArIDEpKSArIG1pbjtcbiAgfVxuXG4gIHByaXZhdGUgaW5jcmVtZW50UmVjb25uZWN0aW9uVGltZW91dCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlY29ubmVjdGlvblRpbWVvdXRNcyA9XG4gICAgICB0aGlzLnJlY29ubmVjdGlvblRpbWVvdXRNcyAqXG4gICAgICBDZW50cmlmdWdvV2ViU29ja2V0U2VydmljZS5yZWNvbm5lY3Rpb25UaW1lb3V0SW5jcmVtZW50RmFjdG9yO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRDZW50cmlmdWdvQ2xpZW50KCk6IFByb21pc2U8dHlwZW9mIENlbnRyaWZ1Z2U+IHtcbiAgICByZXR1cm4gaW1wb3J0KCdjZW50cmlmdWdlJykudGhlbigobW9kdWxlKSA9PiBtb2R1bGUuQ2VudHJpZnVnZSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZUNvbm5lY3Rpb24oXG4gICAgdXJsPzogc3RyaW5nLFxuICAgIGNoYW5uZWw/OiBzdHJpbmdcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuaXNDb25uZWN0aW9uT3BlbiB8fCB0aGlzLmlzQ29ubmVjdGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICBjb25zdCBDZW50cmlmdWdlQ2xpZW50ID0gYXdhaXQgdGhpcy5nZXRDZW50cmlmdWdvQ2xpZW50KCk7XG5cbiAgICBjb25zdCB3ZWJzb2NrZXRVcmwgPSB1cmwgPz8gdGhpcy51cmw7XG4gICAgY29uc3Qgd2Vic29ja2V0Q2hhbm5lbCA9IGNoYW5uZWwgPz8gdGhpcy5jaGFubmVsO1xuXG4gICAgdGhpcy5jb25uZWN0aW9uID0gbmV3IENlbnRyaWZ1Z2VDbGllbnQod2Vic29ja2V0VXJsLCB7XG4gICAgICBkZWJ1ZzogdHJ1ZSxcbiAgICAgIG1heFJlY29ubmVjdERlbGF5OiAxNTAwLFxuICAgICAgbWF4U2VydmVyUGluZ0RlbGF5OiAxMDAwLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuY29ubmVjdGlvblxuICAgICAgICAub24oJ2Nvbm5lY3RpbmcnLCAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pc0Nvbm5lY3RpbmcgPSB0cnVlO1xuICAgICAgICB9KVxuICAgICAgICAub24oJ2Nvbm5lY3RlZCcsICgpID0+IHtcbiAgICAgICAgICB0aGlzLm9uQ29ubmVjdCgpO1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfSlcbiAgICAgICAgLm9uKCdkaXNjb25uZWN0ZWQnLCAoY3R4KSA9PiB7XG4gICAgICAgICAgdGhpcy5vbkRpc2Nvbm5lY3QoY3R4LCB3ZWJzb2NrZXRDaGFubmVsKTtcbiAgICAgICAgICByZWplY3QoKTtcbiAgICAgICAgfSlcbiAgICAgICAgLm9uKCdlcnJvcicsIChjdHgpID0+IHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYGNvZGUgJHtjdHguZXJyb3IuY29kZX0gLSAke2N0eC5lcnJvci5tZXNzYWdlfWA7XG5cbiAgICAgICAgICB0aGlzLmVsa0xvZ2dlclNlcnZpY2UubG9nKFxuICAgICAgICAgICAgYGNvbm5lY3Rpb24gZXJyb3I6ICR7bWVzc2FnZX1gLFxuICAgICAgICAgICAgW0Vycm9yVGFncy5XU10sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNoYW5uZWw6IHdlYnNvY2tldENoYW5uZWwsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNvbm5lY3QoKTtcblxuICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLmNvbm5lY3Rpb24ubmV3U3Vic2NyaXB0aW9uKFxuICAgICAgICB3ZWJzb2NrZXRDaGFubmVsLFxuICAgICAgICB0aGlzLmdldFN1YnNjcmlwdGlvbk9wdGlvbnMod2Vic29ja2V0Q2hhbm5lbClcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uXG4gICAgICAgIC5vbignc3Vic2NyaWJlZCcsIChjdHgpID0+IHtcbiAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvblBvc2l0aW9uID0gY3R4LnN0cmVhbVBvc2l0aW9uO1xuICAgICAgICAgIHRoaXMucHJldlN1YnNjcmliZWRDaGFubmVsID0gd2Vic29ja2V0Q2hhbm5lbDtcbiAgICAgICAgfSlcbiAgICAgICAgLm9uKCdwdWJsaWNhdGlvbicsIChjdHgpID0+IHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gY3R4LmRhdGEgYXMgc3RyaW5nO1xuXG4gICAgICAgICAgdGhpcy5lbGtMb2dnZXJTZXJ2aWNlLmxvZyhcbiAgICAgICAgICAgIGB3ZWJzb2NrZXQgbWVzc2FnZSByZWNlaXZlZDogJHttZXNzYWdlfWAsXG4gICAgICAgICAgICBbRXJyb3JUYWdzLldTXSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2hhbm5lbDogd2Vic29ja2V0Q2hhbm5lbCxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuXG4gICAgICAgICAgdGhpcy5pbmNvbWluZ01lc3NhZ2VzJC5uZXh0KGN0eCk7XG4gICAgICAgIH0pXG4gICAgICAgIC5vbignZXJyb3InLCAoY3R4KSA9PiB7XG4gICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGBjb2RlICR7Y3R4LmVycm9yLmNvZGV9IC0gJHtjdHguZXJyb3IubWVzc2FnZX1gO1xuXG4gICAgICAgICAgdGhpcy5lbGtMb2dnZXJTZXJ2aWNlLmxvZyhcbiAgICAgICAgICAgIGBzdWJzY3JpcHRpb24gZXJyb3I6ICR7bWVzc2FnZX1gLFxuICAgICAgICAgICAgW0Vycm9yVGFncy5XU10sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNoYW5uZWw6IHdlYnNvY2tldENoYW5uZWwsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfSlcbiAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkNvbm5lY3QoKTogdm9pZCB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMub3BlbkNvbm5lY3Rpb25UaW1lcklkKTtcbiAgICB0aGlzLmlzQ29ubmVjdGluZyA9IGZhbHNlO1xuICAgIHRoaXMuaXNDb25uZWN0aW9uT3BlbiA9IHRydWU7XG4gIH1cblxuICBwcml2YXRlIG9uRGlzY29ubmVjdChcbiAgICBjdHg6IERpc2Nvbm5lY3RlZENvbnRleHQsXG4gICAgd2Vic29ja2V0Q2hhbm5lbDogc3RyaW5nXG4gICk6IHZvaWQge1xuICAgIHRoaXMuaXNDb25uZWN0aW5nID0gZmFsc2U7XG4gICAgdGhpcy5pc0Nvbm5lY3Rpb25PcGVuID0gZmFsc2U7XG5cbiAgICAvKiBJZiBjb25uZWN0aW9uIGVycm9yLCBjYXVzZSBhbnkgY29ubmVjdGlvbiBlcnJvciBpc24ndCAwICovXG4gICAgaWYgKGN0eC5jb2RlICE9PSAwKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYGNvZGUgJHtjdHguY29kZX0gLSAke2N0eC5yZWFzb259YDtcblxuICAgICAgdGhpcy5lbGtMb2dnZXJTZXJ2aWNlLmxvZyhcbiAgICAgICAgYGRpc2Nvbm5lY3RlZCBlcnJvcjogJHttZXNzYWdlfWAsXG4gICAgICAgIFtFcnJvclRhZ3MuV1NdLFxuICAgICAgICB7XG4gICAgICAgICAgY2hhbm5lbDogd2Vic29ja2V0Q2hhbm5lbCxcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgKGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy53YWl0V2hpbGVOb3RSZWNvbm5lY3QoKTtcbiAgICAgIH0pKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZWNvbm5lY3QoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdGhpcy5jbGVhclJlY29ubmVjdGlvblRpbWVyKCk7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIHRoaXMucmVjb25uZWN0aW9uVGltZXJJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmNyZWF0ZUNvbm5lY3Rpb24oKVxuICAgICAgICAgIC50aGVuKCgpID0+IHJlc29sdmUodHJ1ZSkpXG4gICAgICAgICAgLmNhdGNoKCgpID0+IHJlc29sdmUoZmFsc2UpKTtcbiAgICAgICAgdGhpcy5pbmNyZW1lbnRSZWNvbm5lY3Rpb25UaW1lb3V0KCk7XG4gICAgICB9LCB0aGlzLnJlY29ubmVjdGlvblRpbWVvdXRNcyk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHdhaXRXaGlsZU5vdFJlY29ubmVjdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmNsZWFyUmVjb25uZWN0aW9uVGltZXIoKTtcbiAgICB0aGlzLnNldEZpcnN0UmVjb25uZWN0aW9uVGltZW91dCgpO1xuXG4gICAgbGV0IGlzQ29ubmVjdGVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBiZWZvcmVUaW1lciA9IHBlcmZvcm1hbmNlLm5vdygpO1xuXG4gICAgd2hpbGUgKCFpc0Nvbm5lY3RlZCkge1xuICAgICAgaXNDb25uZWN0ZWQgPSBhd2FpdCB0aGlzLnJlY29ubmVjdCgpO1xuICAgIH1cblxuICAgIGNvbnN0IGFmdGVyVGltZXIgPSBwZXJmb3JtYW5jZS5ub3coKTtcblxuICAgIGNvbnN0IHRpbWVyRHVyYXRpb24gPSBhZnRlclRpbWVyIC0gYmVmb3JlVGltZXI7XG5cbiAgICB0aGlzLmVsa0xvZ2dlclNlcnZpY2UubG9nKFxuICAgICAgYGZhbGxiYWNrIHRvIHJlY29ubmVjdGlvbiB0aW1lcjogZHVyYXRpb24gJHt0aW1lckR1cmF0aW9ufW1zYCxcbiAgICAgIFtFcnJvclRhZ3MuV1NdLFxuICAgICAge1xuICAgICAgICBjaGFubmVsOiB0aGlzLmNoYW5uZWwsXG4gICAgICB9XG4gICAgKTtcblxuICAgIHRoaXMuc3VjY2Vzc2Z1bFJlY29ubmVjdGlvbkV2ZW50c1Byb3h5JC5uZXh0KCk7XG4gIH1cblxuICBwcml2YXRlIGdldFN1YnNjcmlwdGlvbk9wdGlvbnMoXG4gICAgd2Vic29ja2V0Q2hhbm5lbDogc3RyaW5nXG4gICk6IFBhcnRpYWw8U3Vic2NyaXB0aW9uT3B0aW9ucz4ge1xuICAgIGNvbnN0IG9wdGlvbnM6IFBhcnRpYWw8U3Vic2NyaXB0aW9uT3B0aW9ucz4gPSB7XG4gICAgICByZWNvdmVyYWJsZTogdHJ1ZSxcbiAgICB9O1xuXG4gICAgaWYgKFxuICAgICAgd2Vic29ja2V0Q2hhbm5lbCA9PT0gdGhpcy5wcmV2U3Vic2NyaWJlZENoYW5uZWwgJiZcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uUG9zaXRpb25cbiAgICApIHtcbiAgICAgIG9wdGlvbnMuc2luY2UgPSB0aGlzLnN1YnNjcmlwdGlvblBvc2l0aW9uO1xuICAgIH1cblxuICAgIHJldHVybiBvcHRpb25zO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,116 @@
1
+ import { Subject } from 'rxjs';
2
+ import { map } from 'rxjs/operators';
3
+ import { Injectable } from '@angular/core';
4
+ import { WebSocketClientType } from './web-socket-client-type.enum';
5
+ import * as i0 from "@angular/core";
6
+ export class NchanWebSocketService {
7
+ constructor() {
8
+ this.type = WebSocketClientType.nchan;
9
+ this.reconnectionTimerId = null;
10
+ this.incomingMessages$ = new Subject();
11
+ this.successfulReconnectionEventsProxy$ = new Subject();
12
+ }
13
+ async open() {
14
+ if (this.openPromise && !this.isClosed()) {
15
+ return this.openPromise;
16
+ }
17
+ this.openPromise = this.createConnection()
18
+ .catch(async () => {
19
+ return this.waitWhileNotReconnect();
20
+ })
21
+ .then(() => {
22
+ this.connection.onclose = async () => this.open();
23
+ });
24
+ return this.openPromise;
25
+ }
26
+ close() {
27
+ this.clearReconnectionTimer();
28
+ if (this.isClosed()) {
29
+ return;
30
+ }
31
+ this.connection.onclose = null;
32
+ this.connection.close();
33
+ }
34
+ get messages$() {
35
+ return this.incomingMessages$
36
+ .asObservable()
37
+ .pipe(map((event) => event.data));
38
+ }
39
+ subscribeOnSuccessfulReconnection(next) {
40
+ return this.successfulReconnectionEventsProxy$
41
+ .asObservable()
42
+ .subscribe(next);
43
+ }
44
+ isClosed() {
45
+ if (!this.connection) {
46
+ return true;
47
+ }
48
+ return [this.connection.CLOSED, this.connection.CLOSING].includes(this.connection.readyState);
49
+ }
50
+ clearReconnectionTimer() {
51
+ if (this.reconnectionTimerId) {
52
+ clearTimeout(this.reconnectionTimerId);
53
+ this.reconnectionTimerId = null;
54
+ }
55
+ }
56
+ setFirstReconnectionTimeout() {
57
+ const min = NchanWebSocketService.timeoutsMs.reconnection -
58
+ NchanWebSocketService.timeoutsMs.reconnectionMaxDeviation;
59
+ const max = NchanWebSocketService.timeoutsMs.reconnection +
60
+ NchanWebSocketService.timeoutsMs.reconnectionMaxDeviation;
61
+ this.reconnectionTimeoutMs =
62
+ Math.floor(Math.random() * (max - min + 1)) + min;
63
+ }
64
+ incrementReconnectionTimeout() {
65
+ this.reconnectionTimeoutMs =
66
+ this.reconnectionTimeoutMs *
67
+ NchanWebSocketService.reconnectionTimeoutIncrementFactor;
68
+ }
69
+ async createConnection() {
70
+ this.connection = new WebSocket(this.url);
71
+ this.connection.onmessage = this.incomingMessages$.next.bind(this.incomingMessages$);
72
+ return new Promise((resolve, reject) => {
73
+ this.connection.onopen = () => {
74
+ clearTimeout(this.openConnectionTimerId);
75
+ resolve();
76
+ };
77
+ this.connection.onclose = () => {
78
+ reject();
79
+ };
80
+ });
81
+ }
82
+ async reconnect() {
83
+ this.clearReconnectionTimer();
84
+ return new Promise((resolve) => {
85
+ this.reconnectionTimerId = setTimeout(() => {
86
+ this.createConnection()
87
+ .then(() => resolve(true))
88
+ .catch(() => resolve(false));
89
+ this.incrementReconnectionTimeout();
90
+ }, this.reconnectionTimeoutMs);
91
+ });
92
+ }
93
+ async waitWhileNotReconnect() {
94
+ this.clearReconnectionTimer();
95
+ this.setFirstReconnectionTimeout();
96
+ let isConnected = false;
97
+ while (!isConnected) {
98
+ isConnected = await this.reconnect();
99
+ }
100
+ this.successfulReconnectionEventsProxy$.next();
101
+ }
102
+ }
103
+ NchanWebSocketService.reconnectionTimeoutIncrementFactor = 2;
104
+ NchanWebSocketService.timeoutsMs = {
105
+ reconnection: 1500,
106
+ reconnectionMaxDeviation: 1500,
107
+ };
108
+ NchanWebSocketService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: NchanWebSocketService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
109
+ NchanWebSocketService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: NchanWebSocketService, providedIn: 'root' });
110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: NchanWebSocketService, decorators: [{
111
+ type: Injectable,
112
+ args: [{
113
+ providedIn: 'root',
114
+ }]
115
+ }] });
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmNoYW4td2ViLXNvY2tldC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGF5bWVudC1jbGllbnQtY29yZS9zcmMvbGliL2NvcmUvd2ViLXNvY2tldC9uY2hhbi13ZWItc29ja2V0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBS3BFLE1BQU0sT0FBTyxxQkFBcUI7SUFIbEM7UUFRUyxTQUFJLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDO1FBVWhDLHdCQUFtQixHQUF5QyxJQUFJLENBQUM7UUFNeEQsc0JBQWlCLEdBQ2hDLElBQUksT0FBTyxFQUFnQixDQUFDO1FBQ2IsdUNBQWtDLEdBQ2pELElBQUksT0FBTyxFQUFRLENBQUM7S0FzSHZCO0lBcEhRLEtBQUssQ0FBQyxJQUFJO1FBQ2YsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ3hDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUN6QjtRQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFO2FBQ3ZDLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNoQixPQUFPLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ3RDLENBQUMsQ0FBQzthQUNELElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVB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biB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV2ViU29ja2V0Q2xpZW50IH0gZnJvbSAnLi93ZWItc29ja2V0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBXZWJTb2NrZXRDbGllbnRUeXBlIH0gZnJvbSAnLi93ZWItc29ja2V0LWNsaWVudC10eXBlLmVudW0nO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTmNoYW5XZWJTb2NrZXRTZXJ2aWNlIGltcGxlbWVudHMgV2ViU29ja2V0Q2xpZW50IHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSByZWNvbm5lY3Rpb25UaW1lb3V0SW5jcmVtZW50RmFjdG9yID0gMjtcblxuICBwdWJsaWMgdXJsITogc3RyaW5nO1xuXG4gIHB1YmxpYyB0eXBlID0gV2ViU29ja2V0Q2xpZW50VHlwZS5uY2hhbjtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSB0aW1lb3V0c01zID0ge1xuICAgIHJlY29ubmVjdGlvbjogMTUwMCxcbiAgICByZWNvbm5lY3Rpb25NYXhEZXZpYXRpb246IDE1MDAsXG4gIH07XG5cbiAgcHJpdmF0ZSBvcGVuUHJvbWlzZTogUHJvbWlzZTx1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIHJlY29ubmVjdGlvblRpbWVvdXRNcyE6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWNvbm5lY3Rpb25UaW1lcklkOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgb3BlbkNvbm5lY3Rpb25UaW1lcklkOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBjb25uZWN0aW9uITogV2ViU29ja2V0O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaW5jb21pbmdNZXNzYWdlcyQ6IFN1YmplY3Q8TWVzc2FnZUV2ZW50PiA9XG4gICAgbmV3IFN1YmplY3Q8TWVzc2FnZUV2ZW50PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IHN1Y2Nlc3NmdWxSZWNvbm5lY3Rpb25FdmVudHNQcm94eSQ6IFN1YmplY3Q8dm9pZD4gPVxuICAgIG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHVibGljIGFzeW5jIG9wZW4oKTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgaWYgKHRoaXMub3BlblByb21pc2UgJiYgIXRoaXMuaXNDbG9zZWQoKSkge1xuICAgICAgcmV0dXJuIHRoaXMub3BlblByb21pc2U7XG4gICAgfVxuXG4gICAgdGhpcy5vcGVuUHJvbWlzZSA9IHRoaXMuY3JlYXRlQ29ubmVjdGlvbigpXG4gICAgICAuY2F0Y2goYXN5bmMgKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy53YWl0V2hpbGVOb3RSZWNvbm5lY3QoKTtcbiAgICAgIH0pXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuY29ubmVjdGlvbi5vbmNsb3NlID0gYXN5bmMgKCkgPT4gdGhpcy5vcGVuKCk7XG4gICAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLm9wZW5Qcm9taXNlO1xuICB9XG5cbiAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJSZWNvbm5lY3Rpb25UaW1lcigpO1xuXG4gICAgaWYgKHRoaXMuaXNDbG9zZWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY29ubmVjdGlvbi5vbmNsb3NlID0gbnVsbDtcbiAgICB0aGlzLmNvbm5lY3Rpb24uY2xvc2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWVzc2FnZXMkKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuaW5jb21pbmdNZXNzYWdlcyRcbiAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgLnBpcGUobWFwKChldmVudDogTWVzc2FnZUV2ZW50PHN0cmluZz4pID0+IGV2ZW50LmRhdGEpKTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJzY3JpYmVPblN1Y2Nlc3NmdWxSZWNvbm5lY3Rpb24obmV4dD86ICgpID0+IHZvaWQpOiBTdWJzY3JpcHRpb24ge1xuICAgIHJldHVybiB0aGlzLnN1Y2Nlc3NmdWxSZWNvbm5lY3Rpb25FdmVudHNQcm94eSRcbiAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgLnN1YnNjcmliZShuZXh0KTtcbiAgfVxuXG4gIHByaXZhdGUgaXNDbG9zZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmNvbm5lY3Rpb24pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBbdGhpcy5jb25uZWN0aW9uLkNMT1NFRCwgdGhpcy5jb25uZWN0aW9uLkNMT1NJTkddLmluY2x1ZGVzKFxuICAgICAgdGhpcy5jb25uZWN0aW9uLnJlYWR5U3RhdGVcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhclJlY29ubmVjdGlvblRpbWVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlY29ubmVjdGlvblRpbWVySWQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnJlY29ubmVjdGlvblRpbWVySWQpO1xuICAgICAgdGhpcy5yZWNvbm5lY3Rpb25UaW1lcklkID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEZpcnN0UmVjb25uZWN0aW9uVGltZW91dCgpOiB2b2lkIHtcbiAgICBjb25zdCBtaW4gPVxuICAgICAgTmNoYW5XZWJTb2NrZXRTZXJ2aWNlLnRpbWVvdXRzTXMucmVjb25uZWN0aW9uIC1cbiAgICAgIE5jaGFuV2ViU29ja2V0U2VydmljZS50aW1lb3V0c01zLnJlY29ubmVjdGlvbk1heERldmlhdGlvbjtcbiAgICBjb25zdCBtYXggPVxuICAgICAgTmNoYW5XZWJTb2NrZXRTZXJ2aWNlLnRpbWVvdXRzTXMucmVjb25uZWN0aW9uICtcbiAgICAgIE5jaGFuV2ViU29ja2V0U2VydmljZS50aW1lb3V0c01zLnJlY29ubmVjdGlvbk1heERldmlhdGlvbjtcbiAgICB0aGlzLnJlY29ubmVjdGlvblRpbWVvdXRNcyA9XG4gICAgICBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluICsgMSkpICsgbWluO1xuICB9XG5cbiAgcHJpdmF0ZSBpbmNyZW1lbnRSZWNvbm5lY3Rpb25UaW1lb3V0KCk6IHZvaWQge1xuICAgIHRoaXMucmVjb25uZWN0aW9uVGltZW91dE1zID1cbiAgICAgIHRoaXMucmVjb25uZWN0aW9uVGltZW91dE1zICpcbiAgICAgIE5jaGFuV2ViU29ja2V0U2VydmljZS5yZWNvbm5lY3Rpb25UaW1lb3V0SW5jcmVtZW50RmFjdG9yO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjcmVhdGVDb25uZWN0aW9uKCk6IFByb21pc2U8dW5rbm93bj4ge1xuICAgIHRoaXMuY29ubmVjdGlvbiA9IG5ldyBXZWJTb2NrZXQodGhpcy51cmwpO1xuICAgIHRoaXMuY29ubmVjdGlvbi5vbm1lc3NhZ2UgPSB0aGlzLmluY29taW5nTWVzc2FnZXMkLm5leHQuYmluZChcbiAgICAgIHRoaXMuaW5jb21pbmdNZXNzYWdlcyRcbiAgICApO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuY29ubmVjdGlvbi5vbm9wZW4gPSAoKSA9PiB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLm9wZW5Db25uZWN0aW9uVGltZXJJZCk7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuY29ubmVjdGlvbi5vbmNsb3NlID0gKCkgPT4ge1xuICAgICAgICByZWplY3QoKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlY29ubmVjdCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0aGlzLmNsZWFyUmVjb25uZWN0aW9uVGltZXIoKTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgdGhpcy5yZWNvbm5lY3Rpb25UaW1lcklkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuY3JlYXRlQ29ubmVjdGlvbigpXG4gICAgICAgICAgLnRoZW4oKCkgPT4gcmVzb2x2ZSh0cnVlKSlcbiAgICAgICAgICAuY2F0Y2goKCkgPT4gcmVzb2x2ZShmYWxzZSkpO1xuICAgICAgICB0aGlzLmluY3JlbWVudFJlY29ubmVjdGlvblRpbWVvdXQoKTtcbiAgICAgIH0sIHRoaXMucmVjb25uZWN0aW9uVGltZW91dE1zKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgd2FpdFdoaWxlTm90UmVjb25uZWN0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuY2xlYXJSZWNvbm5lY3Rpb25UaW1lcigpO1xuICAgIHRoaXMuc2V0Rmlyc3RSZWNvbm5lY3Rpb25UaW1lb3V0KCk7XG5cbiAgICBsZXQgaXNDb25uZWN0ZWQgPSBmYWxzZTtcblxuICAgIHdoaWxlICghaXNDb25uZWN0ZWQpIHtcbiAgICAgIGlzQ29ubmVjdGVkID0gYXdhaXQgdGhpcy5yZWNvbm5lY3QoKTtcbiAgICB9XG5cbiAgICB0aGlzLnN1Y2Nlc3NmdWxSZWNvbm5lY3Rpb25FdmVudHNQcm94eSQubmV4dCgpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,6 @@
1
+ export var WebSocketClientType;
2
+ (function (WebSocketClientType) {
3
+ WebSocketClientType["nchan"] = "nchan";
4
+ WebSocketClientType["centrifugo"] = "centrifugo";
5
+ })(WebSocketClientType || (WebSocketClientType = {}));
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLXNvY2tldC1jbGllbnQtdHlwZS5lbnVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGF5bWVudC1jbGllbnQtY29yZS9zcmMvbGliL2NvcmUvd2ViLXNvY2tldC93ZWItc29ja2V0LWNsaWVudC10eXBlLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksbUJBR1g7QUFIRCxXQUFZLG1CQUFtQjtJQUM3QixzQ0FBZSxDQUFBO0lBQ2YsZ0RBQXlCLENBQUE7QUFDM0IsQ0FBQyxFQUhXLG1CQUFtQixLQUFuQixtQkFBbUIsUUFHOUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBXZWJTb2NrZXRDbGllbnRUeXBlIHtcbiAgbmNoYW4gPSAnbmNoYW4nLFxuICBjZW50cmlmdWdvID0gJ2NlbnRyaWZ1Z28nLFxufVxuIl19