@xsolla/payment-client-core 0.2.17 → 0.2.18-1
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.
- package/{esm2020 → esm2022}/lib/core/combined-payment-methods/combined-payment-methods.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/core/countries-api/countries-api.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/core/country/country.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/core/credit-card/credit-card.service.mjs +4 -4
- package/esm2022/lib/core/device-finger-print/device-finger-print.service.mjs +67 -0
- package/{esm2020 → esm2022}/lib/core/edit-saved-methods/edit-saved-methods.service.mjs +5 -5
- package/esm2022/lib/core/encrypt-credit-card/encrypt-credit-card.service.mjs +72 -0
- package/esm2022/lib/core/errors-mapping/xps-response-errors-mapping.service.mjs +52 -0
- package/esm2022/lib/core/exceptions-handling/elk/elk-logger.service.mjs +120 -0
- package/esm2022/lib/core/exceptions-handling/errors/http-error.class.mjs +40 -0
- package/esm2022/lib/core/exceptions-handling/errors/tagged-error.class.mjs +16 -0
- package/{esm2020 → esm2022}/lib/core/exceptions-handling/http-interceptor/http-exceptions.interceptor.mjs +5 -5
- package/esm2022/lib/core/http/secure-api/secure-api.service.mjs +55 -0
- package/{esm2020 → esm2022}/lib/core/legal/disclaimer.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/core/legal/legal.service.mjs +5 -5
- package/esm2022/lib/core/legal/refund-policy.service.mjs +30 -0
- package/esm2022/lib/core/legal/secure-connection.service.mjs +31 -0
- package/{esm2020 → esm2022}/lib/core/payment/actions/check-status/check-status.action.class.mjs +4 -4
- package/esm2022/lib/core/payment/actions/next-action.service.mjs +61 -0
- package/esm2022/lib/core/payment/actions/redirect/redirect.action.class.mjs +60 -0
- package/{esm2020 → esm2022}/lib/core/payment/actions/show-errors/show-errors.action.class.mjs +4 -4
- package/{esm2020 → esm2022}/lib/core/payment/actions/show-fields/show-fields.action.class.mjs +4 -4
- package/{esm2020 → esm2022}/lib/core/payment/actions/show-mobile-payment-screen/show-mobile-payment-screen.action.class.mjs +4 -4
- package/{esm2020 → esm2022}/lib/core/payment/actions/show-qr-code/show-qr-code.action.class.mjs +4 -4
- package/{esm2020 → esm2022}/lib/core/payment/actions/special-button/special-button.action.class.mjs +4 -4
- package/esm2022/lib/core/payment/actions/status-updated/status-updated.action.class.mjs +38 -0
- package/{esm2020 → esm2022}/lib/core/payment/actions/three-ds/three-ds.action.class.mjs +4 -4
- package/esm2022/lib/core/payment/config/config.service.mjs +37 -0
- package/{esm2020 → esm2022}/lib/core/payment/credit-card-state/credit-card-state.service.mjs +4 -4
- package/esm2022/lib/core/payment/finance-details/finance-details.service.mjs +38 -0
- package/{esm2020 → esm2022}/lib/core/payment/finance-details/status/status-finance-details-adapter.service.mjs +5 -5
- package/esm2022/lib/core/payment/finance-details/summary/summary-finance-details-adapter.service.mjs +264 -0
- package/esm2022/lib/core/payment/form/controls/control-config.service.mjs +46 -0
- package/{esm2020 → esm2022}/lib/core/payment/form/converters/birth-date/birth-date.converter.mjs +5 -5
- package/{esm2020 → esm2022}/lib/core/payment/form/converters/card-month/card-month.converter.mjs +5 -5
- package/{esm2020 → esm2022}/lib/core/payment/form/converters/card-number/card-number.converter.mjs +5 -5
- package/{esm2020 → esm2022}/lib/core/payment/form/converters/card-year/card-year.converter.mjs +5 -5
- package/{esm2020 → esm2022}/lib/core/payment/form/converters/cardholder-name/cardholder-name.converter.mjs +5 -5
- package/esm2022/lib/core/payment/form/converters/checkbox/checkbox.converter.mjs +33 -0
- package/esm2022/lib/core/payment/form/converters/converter.abstract.mjs +76 -0
- package/{esm2020 → esm2022}/lib/core/payment/form/converters/coupon/coupon.converter.mjs +5 -5
- package/{esm2020 → esm2022}/lib/core/payment/form/converters/cpf-name/cpf-name.converter.mjs +5 -5
- package/{esm2020 → esm2022}/lib/core/payment/form/converters/cpf-number/cpf-number.converter.mjs +5 -5
- package/esm2022/lib/core/payment/form/converters/cvv/cvv.converter.mjs +72 -0
- package/{esm2020 → esm2022}/lib/core/payment/form/converters/email/email.converter.mjs +5 -5
- package/{esm2020 → esm2022}/lib/core/payment/form/converters/phone.converter.mjs +5 -5
- package/{esm2020 → esm2022}/lib/core/payment/form/converters/pin/pin.converter.mjs +5 -5
- package/{esm2020 → esm2022}/lib/core/payment/form/converters/pricepoint/pricepoint.converter.mjs +5 -5
- package/{esm2020 → esm2022}/lib/core/payment/form/converters/radio-group/radio-group.converter.mjs +5 -5
- package/{esm2020 → esm2022}/lib/core/payment/form/converters/select/select.converter.mjs +5 -5
- package/esm2022/lib/core/payment/form/converters/street-number/street-number.converter.mjs +28 -0
- package/{esm2020 → esm2022}/lib/core/payment/form/converters/text/text.converter.mjs +5 -5
- package/esm2022/lib/core/payment/form/converters/zip/zip.converter.mjs +64 -0
- package/{esm2020 → esm2022}/lib/core/payment/form/form.module.mjs +33 -33
- package/esm2022/lib/core/payment/form/form.service.mjs +49 -0
- package/esm2022/lib/core/payment/form/validators/birth-date/birth-date.validator.mjs +37 -0
- package/esm2022/lib/core/payment/form/validators/card-month/card-month.validator.mjs +37 -0
- package/esm2022/lib/core/payment/form/validators/card-year/card-year.validator.mjs +34 -0
- package/esm2022/lib/core/payment/form/validators/convert.function.mjs +15 -0
- package/esm2022/lib/core/payment/form/validators/credit-card-length/credit-card-min-length.validator.mjs +32 -0
- package/esm2022/lib/core/payment/form/validators/luhn-formula-validator/luhn-formula.validator.mjs +40 -0
- package/{esm2020 → esm2022}/lib/core/payment/form/validators/validators.module.mjs +5 -5
- package/esm2022/lib/core/payment/form-messages/form-messages.service.mjs +26 -0
- package/esm2022/lib/core/payment/initialize/initialize.service.mjs +85 -0
- package/esm2022/lib/core/payment/initialize/response/initialize-response.class.mjs +43 -0
- package/{esm2020 → esm2022}/lib/core/payment/payment.interface.mjs +1 -1
- package/esm2022/lib/core/payment/payment.service.mjs +369 -0
- package/{esm2020 → esm2022}/lib/core/payment/status/check-status/check-status.service.mjs +6 -6
- package/{esm2020 → esm2022}/lib/core/payment/status/check-status/request/check-status-request.class.mjs +1 -1
- package/esm2022/lib/core/payment/status/listen-status/listen-status.service.mjs +124 -0
- package/{esm2020 → esm2022}/lib/core/payment/status/save-payment-method-status/api/saved-payment-account-changes.service.mjs +5 -5
- package/esm2022/lib/core/payment/status/save-payment-method-status/save-payment-method-status.service.mjs +121 -0
- package/esm2022/lib/core/payment/status/status-request/request/status-request.class.mjs +22 -0
- package/esm2022/lib/core/payment/status/status-request/response/status-response.class.mjs +98 -0
- package/{esm2020 → esm2022}/lib/core/payment/status/status-request/status-request.service.mjs +6 -6
- package/esm2022/lib/core/payment/status/status.service.mjs +75 -0
- package/esm2022/lib/core/payment/status/websocket-status/websocket-status.service.mjs +76 -0
- package/esm2022/lib/core/payment/submit/request/submit-request.class.mjs +24 -0
- package/esm2022/lib/core/payment/submit/response/submit-response.class.mjs +31 -0
- package/esm2022/lib/core/payment/submit/submit.service.mjs +78 -0
- package/esm2022/lib/core/payment/sync/request/sync-request.class.mjs +31 -0
- package/esm2022/lib/core/payment/sync/response/sync-response.class.mjs +17 -0
- package/esm2022/lib/core/payment/sync/sync.service.mjs +157 -0
- package/esm2022/lib/core/payment/three-ds/api/notify-dfp-status/notify-dfp-status.service.mjs +49 -0
- package/esm2022/lib/core/payment/three-ds/api/status-three-ds/status-three-ds.service.mjs +60 -0
- package/esm2022/lib/core/payment/three-ds/dfp-collect/dfp-collect.service.mjs +105 -0
- package/esm2022/lib/core/payment/three-ds/reinsurance-check/reinsurance-check.service.mjs +41 -0
- package/esm2022/lib/core/payment/three-ds/three-ds-20/three-ds20.service.mjs +109 -0
- package/esm2022/lib/core/payment/three-ds/three-ds.service.mjs +42 -0
- package/esm2022/lib/core/payment/xps-api/xps-api.service.mjs +85 -0
- package/esm2022/lib/core/payment/xps-api-part-request.abstract.mjs +8 -0
- package/esm2022/lib/core/payment-methods/payment-methods.service.mjs +75 -0
- package/esm2022/lib/core/performance/performance.service.mjs +111 -0
- package/esm2022/lib/core/performance/xhr-action.service.mjs +114 -0
- package/esm2022/lib/core/saved-methods/saved-methods.service.mjs +54 -0
- package/esm2022/lib/core/sdk-payment-systems/apple-pay/apple-pay.service.mjs +268 -0
- package/esm2022/lib/core/sdk-payment-systems/google-pay/google-pay-button-color.type.mjs +2 -0
- package/esm2022/lib/core/sdk-payment-systems/google-pay/google-pay.service.mjs +177 -0
- package/esm2022/lib/core/sdk-payment-systems/payment-systems/payment-system-processing.service.mjs +84 -0
- package/esm2022/lib/core/session/session.service.mjs +57 -0
- package/esm2022/lib/core/settings/settings.service.mjs +92 -0
- package/esm2022/lib/core/url/url.service.mjs +34 -0
- package/esm2022/lib/core/user-agent/user-agent.service.mjs +211 -0
- package/esm2022/lib/core/user-balance/user-balance.service.mjs +53 -0
- package/esm2022/lib/core/user-behaviour-analytics/event-builder/event-builder.service.mjs +144 -0
- package/esm2022/lib/core/user-behaviour-analytics/user-behaviour-analytics.service.mjs +158 -0
- package/esm2022/lib/core/web-socket/centrifugo-web-socket.service.mjs +200 -0
- package/esm2022/lib/core/web-socket/nchan-web-socket.service.mjs +116 -0
- package/esm2022/lib/core/web-socket/web-socket.factory.mjs +28 -0
- package/esm2022/lib/core-library.module.mjs +92 -0
- package/esm2022/lib/core-library.service.mjs +152 -0
- package/{esm2020 → esm2022}/lib/shared/pipes/pipes.module.mjs +5 -5
- package/esm2022/lib/shared/pipes/unescape-html/unescape-html.pipe.mjs +23 -0
- package/esm2022/public-api.mjs +17 -0
- package/{fesm2020 → fesm2022}/xsolla-payment-client-core.mjs +477 -458
- package/fesm2022/xsolla-payment-client-core.mjs.map +1 -0
- package/lib/core/payment/payment.interface.d.ts +1 -0
- package/lib/core/payment/payment.service.d.ts +2 -0
- package/lib/core/sdk-payment-systems/google-pay/google-pay-button-color.type.d.ts +1 -0
- package/lib/core/sdk-payment-systems/google-pay/google-pay.service.d.ts +2 -1
- package/package.json +10 -16
- package/public-api.d.ts +1 -0
- package/xsolla-payment-client-core-0.2.18-1.tgz +0 -0
- package/esm2020/lib/core/device-finger-print/device-finger-print.service.mjs +0 -67
- package/esm2020/lib/core/encrypt-credit-card/encrypt-credit-card.service.mjs +0 -72
- package/esm2020/lib/core/errors-mapping/xps-response-errors-mapping.service.mjs +0 -52
- package/esm2020/lib/core/exceptions-handling/elk/elk-logger.service.mjs +0 -120
- package/esm2020/lib/core/exceptions-handling/errors/http-error.class.mjs +0 -40
- package/esm2020/lib/core/exceptions-handling/errors/tagged-error.class.mjs +0 -16
- package/esm2020/lib/core/http/secure-api/secure-api.service.mjs +0 -55
- package/esm2020/lib/core/legal/refund-policy.service.mjs +0 -30
- package/esm2020/lib/core/legal/secure-connection.service.mjs +0 -31
- package/esm2020/lib/core/payment/actions/next-action.service.mjs +0 -61
- package/esm2020/lib/core/payment/actions/redirect/redirect.action.class.mjs +0 -60
- package/esm2020/lib/core/payment/actions/status-updated/status-updated.action.class.mjs +0 -38
- package/esm2020/lib/core/payment/config/config.service.mjs +0 -37
- package/esm2020/lib/core/payment/finance-details/finance-details.service.mjs +0 -38
- package/esm2020/lib/core/payment/finance-details/summary/summary-finance-details-adapter.service.mjs +0 -264
- package/esm2020/lib/core/payment/form/controls/control-config.service.mjs +0 -46
- package/esm2020/lib/core/payment/form/converters/checkbox/checkbox.converter.mjs +0 -33
- package/esm2020/lib/core/payment/form/converters/converter.abstract.mjs +0 -76
- package/esm2020/lib/core/payment/form/converters/cvv/cvv.converter.mjs +0 -72
- package/esm2020/lib/core/payment/form/converters/street-number/street-number.converter.mjs +0 -28
- package/esm2020/lib/core/payment/form/converters/zip/zip.converter.mjs +0 -64
- package/esm2020/lib/core/payment/form/form.service.mjs +0 -49
- package/esm2020/lib/core/payment/form/validators/birth-date/birth-date.validator.mjs +0 -37
- package/esm2020/lib/core/payment/form/validators/card-month/card-month.validator.mjs +0 -37
- package/esm2020/lib/core/payment/form/validators/card-year/card-year.validator.mjs +0 -34
- package/esm2020/lib/core/payment/form/validators/convert.function.mjs +0 -15
- package/esm2020/lib/core/payment/form/validators/credit-card-length/credit-card-min-length.validator.mjs +0 -32
- package/esm2020/lib/core/payment/form/validators/luhn-formula-validator/luhn-formula.validator.mjs +0 -40
- package/esm2020/lib/core/payment/form-messages/form-messages.service.mjs +0 -26
- package/esm2020/lib/core/payment/initialize/initialize.service.mjs +0 -85
- package/esm2020/lib/core/payment/initialize/response/initialize-response.class.mjs +0 -43
- package/esm2020/lib/core/payment/payment.service.mjs +0 -351
- package/esm2020/lib/core/payment/status/listen-status/listen-status.service.mjs +0 -124
- package/esm2020/lib/core/payment/status/save-payment-method-status/save-payment-method-status.service.mjs +0 -121
- package/esm2020/lib/core/payment/status/status-request/request/status-request.class.mjs +0 -22
- package/esm2020/lib/core/payment/status/status-request/response/status-response.class.mjs +0 -98
- package/esm2020/lib/core/payment/status/status.service.mjs +0 -75
- package/esm2020/lib/core/payment/status/websocket-status/websocket-status.service.mjs +0 -76
- package/esm2020/lib/core/payment/submit/request/submit-request.class.mjs +0 -24
- package/esm2020/lib/core/payment/submit/response/submit-response.class.mjs +0 -31
- package/esm2020/lib/core/payment/submit/submit.service.mjs +0 -78
- package/esm2020/lib/core/payment/sync/request/sync-request.class.mjs +0 -31
- package/esm2020/lib/core/payment/sync/response/sync-response.class.mjs +0 -17
- package/esm2020/lib/core/payment/sync/sync.service.mjs +0 -157
- package/esm2020/lib/core/payment/three-ds/api/notify-dfp-status/notify-dfp-status.service.mjs +0 -49
- package/esm2020/lib/core/payment/three-ds/api/status-three-ds/status-three-ds.service.mjs +0 -60
- package/esm2020/lib/core/payment/three-ds/dfp-collect/dfp-collect.service.mjs +0 -105
- package/esm2020/lib/core/payment/three-ds/reinsurance-check/reinsurance-check.service.mjs +0 -41
- package/esm2020/lib/core/payment/three-ds/three-ds-20/three-ds20.service.mjs +0 -109
- package/esm2020/lib/core/payment/three-ds/three-ds.service.mjs +0 -42
- package/esm2020/lib/core/payment/xps-api/xps-api.service.mjs +0 -85
- package/esm2020/lib/core/payment/xps-api-part-request.abstract.mjs +0 -8
- package/esm2020/lib/core/payment-methods/payment-methods.service.mjs +0 -75
- package/esm2020/lib/core/performance/performance.service.mjs +0 -111
- package/esm2020/lib/core/performance/xhr-action.service.mjs +0 -114
- package/esm2020/lib/core/saved-methods/saved-methods.service.mjs +0 -54
- package/esm2020/lib/core/sdk-payment-systems/apple-pay/apple-pay.service.mjs +0 -268
- package/esm2020/lib/core/sdk-payment-systems/google-pay/google-pay.service.mjs +0 -177
- package/esm2020/lib/core/sdk-payment-systems/payment-systems/payment-system-processing.service.mjs +0 -84
- package/esm2020/lib/core/session/session.service.mjs +0 -57
- package/esm2020/lib/core/settings/settings.service.mjs +0 -92
- package/esm2020/lib/core/url/url.service.mjs +0 -34
- package/esm2020/lib/core/user-agent/user-agent.service.mjs +0 -211
- package/esm2020/lib/core/user-balance/user-balance.service.mjs +0 -53
- package/esm2020/lib/core/user-behaviour-analytics/event-builder/event-builder.service.mjs +0 -144
- package/esm2020/lib/core/user-behaviour-analytics/user-behaviour-analytics.service.mjs +0 -158
- package/esm2020/lib/core/web-socket/centrifugo-web-socket.service.mjs +0 -200
- package/esm2020/lib/core/web-socket/nchan-web-socket.service.mjs +0 -116
- package/esm2020/lib/core/web-socket/web-socket.factory.mjs +0 -28
- package/esm2020/lib/core-library.module.mjs +0 -92
- package/esm2020/lib/core-library.service.mjs +0 -151
- package/esm2020/lib/shared/pipes/unescape-html/unescape-html.pipe.mjs +0 -23
- package/esm2020/public-api.mjs +0 -16
- package/fesm2015/xsolla-payment-client-core.mjs +0 -8116
- package/fesm2015/xsolla-payment-client-core.mjs.map +0 -1
- package/fesm2020/xsolla-payment-client-core.mjs.map +0 -1
- package/xsolla-payment-client-core-0.2.17.tgz +0 -0
- /package/{esm2020 → esm2022}/lib/core/agreementsGroup.const.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/boolean-number.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/combined-payment-methods/combined-payment-methods.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/countries-api/country-response.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/countries-api/country.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/country/country-iso-code.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/credit-card/credit-card-settings.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/credit-card/credit-card-types.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/credit-card/credit-card.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/credit-card/credit-cards-map.const.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/credit-card/default-mask.const.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/credit-card/four-block-mask.const.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/credit-card/ordered-cards-settings.const.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/credit-card/types/american-express.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/credit-card/types/aura.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/credit-card/types/china-union-pay.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/credit-card/types/dankort.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/credit-card/types/default-card.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/credit-card/types/diners-clubs.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/credit-card/types/discover.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/credit-card/types/elo.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/credit-card/types/hipercard.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/credit-card/types/jcb.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/credit-card/types/maestro.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/credit-card/types/mastercard.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/credit-card/types/mir.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/credit-card/types/naranja.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/credit-card/types/postepay.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/credit-card/types/visa.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/deep-readonly.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/device-finger-print/hash.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/edit-saved-methods/delete-method-response.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/encrypt-credit-card/encrypted-card.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/encrypt-credit-card/open-card.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/errors-mapping/card-number-sanction-error-codes.const.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/errors-mapping/field-special-errors-map.const.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/exceptions-handling/elk/additional-info.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/exceptions-handling/elk/error-without-meta-fields.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/exceptions-handling/elk/log-message.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/exceptions-handling/errors/api-error.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/exceptions-handling/errors/app-error.class.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/exceptions-handling/errors/elk-error-types.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/exceptions-handling/errors/encrypt-card-error.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/exceptions-handling/errors/response-error.class.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/exceptions-handling/errors/terminal-error.class.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/exceptions-handling/errors/token-error.class.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/exceptions-handling/errors/ws-error.class.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/exceptions-handling/http-interceptor/http-error-data.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/exceptions-handling/http-interceptor/http-error-response-data.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/extended-window.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/http/secure-api/api-url.const.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/http/secure-api/options.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/legal/legal.component.config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/actions/action.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/actions/check-status/check-status.action.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/actions/next-action.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/actions/next-actions.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/actions/redirect/pay-station4-url.const.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/actions/redirect/ps4-pages/pages-payment-methods-id.const.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/actions/redirect/ps4-pages/pages-routes.const.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/actions/redirect/redirect.action.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/actions/show-errors/show-errors.action.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/actions/show-fields/show-fields.action.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/actions/show-mobile-payment-screen/show-mobile-payment-screen.action.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/actions/show-qr-code/show-qr-code.action.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/actions/special-button/special-button.action.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/actions/status-updated/status-updated.action.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/actions/three-ds/three-ds.action.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/checkout-item.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/credit-card-payment-methods-id.variable.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/credit-card-state/credit-card-state.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/emit-data.service.abstract.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/field-names.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/field.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/finance-details/cart-item.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/finance-details/cart-line.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/finance-details/cart-summary.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/finance-details/finance-details.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/finance-details/price.helpers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/finance-details/price.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/finance-details/status/field-with-amount-and-currency.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/finance-details/status/fields-with-currency.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/finance-details/status/finance-info.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/finance-details/summary/default-image-patterns.const.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/finance-details/summary/sales-tax-details-key.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/finance-details/vat-details-key.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/form/common-control-config.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/form/control-status.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/form/controls/card-number/card-number-control.config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/form/controls/checkbox/checkbox-control.config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/form/controls/control-config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/form/controls/control-type.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/form/controls/coupon/coupon-control.config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/form/controls/phone-control.config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/form/controls/radio-control/radio-control.config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/form/controls/radio-control/radio-option.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/form/controls/search-select/search-select-option.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/form/controls/search-select/select-control.config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/form/controls/search-select/select-option.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/form/controls/text-control.config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/form/converters/converters-map.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/form/converters/converters-map.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/form/converters/cpf-name/cpf-name-regex.variable.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/form/converters/cvv/cvv-form-state.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/form/converters/street-number/street-number-from-state.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/form/field-form-states.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/form/field-status.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/form/form-fields-status.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/form/form-state.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/form/input-event.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/form/validators/async-validator-fn.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/form/validators/coupon/coupon-validator.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/form/validators/email/email-validator.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/form/validators/is-empty-input-value.function.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/form/validators/max-length-validator.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/form/validators/min-length-validator.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/form/validators/phone-validator.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/form/validators/required/required.validator.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/form/validators/restricted-value/restricted-value.validator.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/form/validators/validation-error.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/form/validators/validation-errors.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/form/validators/validator-fn.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/form-response.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/initialize/initialize-request-params.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/initialize/response/initialize-response.token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/invoice.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/payment-config.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/payment-form.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/status/check-status/request/check-status-request.token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/status/check-status/response/check-status-response.class.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/status/check-status/response/check-status-response.token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/status/finance-info-field.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/status/line-item.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/status/save-payment-method-status/api/saved-payment-account-changes.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/status/save-payment-method-status/api/saved-payment-account.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/status/save-payment-method-status/save-payment-method-status.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/status/status-finance-info.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/status/status-groups.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/status/status-order.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/status/status-request/request/status-request.token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/status/status-request/required-status-search-params.const.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/status/status-request/response/status-response.token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/status/status-request/status-request-params.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/status/status-request/status-search-param.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/status/status-request/status-search-params.map.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/status/status-settings.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/status/status-updated.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/status/status.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/status/status.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/status/title-class.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/status/web-socket-client-type.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/status/websocket-status/websocket-status.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/submit/request/submit-request.token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/submit/response/is-submit-response.function.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/submit/response/submit-response.token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/sync/field-async-validation.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/sync/field-sync-state.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/sync/request/sync-request.token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/sync/response/sync-response.token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/three-ds/api/notify-dfp-status/request/notify-dfp-status-request.class.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/three-ds/api/notify-dfp-status/request/notify-dfp-status-request.token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/three-ds/api/status-three-ds/request/status-three-ds-request.class.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/three-ds/api/status-three-ds/request/status-three-ds-request.token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/three-ds/api/status-three-ds/response/status-three-ds-response.class.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/three-ds/api/status-three-ds/response/status-three-ds-response.token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/three-ds/api/status-three-ds/status-three-ds-response.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/three-ds/api/status-three-ds/status-types.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/three-ds/api/status-three-ds/three-ds-checkout-form.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/three-ds/reinsurance-check/timer.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/three-ds/three-ds-20/status-update.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/three-ds/three-ds-form.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/three-ds/three-ds-status-websocket-types.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/virtual-currency.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/xps-api-part.abstract.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/xps-checkout.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/xps-comand.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/xps-error.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/xps-finance.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/xps-message.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/xps-purchase.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/xps-request-params.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/xps-request.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/xps-response.error.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/xps-response.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment/xps-summary.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment-methods/payment-method-api.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment-methods/payment-method.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment-methods/payment-methods-api.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment-methods/payment-methods-request-params.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment-methods/payment-methods-response.class.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment-methods/payment-methods-response.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/payment-methods/payment-methods-response.token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/performance/xhr-action.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/properties.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/saved-methods/saved-method-api.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/saved-methods/saved-method.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/saved-methods/saved-methods-request-params.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/saved-methods/saved-methods-response.class.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/saved-methods/saved-methods-response.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/saved-methods/saved-methods-response.token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/sdk-payment-systems/apple-pay/apple-pay-integration.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/sdk-payment-systems/apple-pay/apple-pay-params.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/sdk-payment-systems/apple-pay/apple-pay.const.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/sdk-payment-systems/apple-pay/apple-pay.errors.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/sdk-payment-systems/apple-pay/checkout-params.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/sdk-payment-systems/google-pay/google-pay-checkout.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/sdk-payment-systems/google-pay/google-pay-init-params.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/sdk-payment-systems/google-pay/google-pay-library.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/sdk-payment-systems/sdk-payment-methods.const.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/sdk-payment-systems/sdk-payment-systems-initial-data.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/sdk-payment-systems/sdk-payment-systems.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/settings/auto-redirect-on-status.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/settings/balance.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/settings/bonus.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/settings/configuration.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/settings/empty-utils-response.error.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/settings/header-type.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/settings/offer.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/settings/project.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/settings/purchase.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/settings/settings-mode.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/settings/settings.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/settings/status-back-show.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/settings/tracking-info.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/settings/user.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/settings/utils-response.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/type-guards/is-null.function.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/type-guards/is-string.function.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/type-guards/is-undefined.function.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/url/search-params.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/user-agent/browserInfo.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/user-agent/browsers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/user-agent/device.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/user-agent/os.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/user-agent/user-agent-data.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/user-balance/user-balance-api.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/user-balance/user-balance-request-params.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/user-balance/user-balance-response.class.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/user-balance/user-balance-response.token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/user-behaviour-analytics/event-builder/event-parameter-types.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/user-behaviour-analytics/event-builder/invoice.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/user-behaviour-analytics/event-builder/purchase.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/user-behaviour-analytics/event-builder/user-behaviour-event.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/user-behaviour-analytics/one-time-analytics-events.const.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/user-behaviour-analytics/user-behaviour-analytics.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/user-behaviour-analytics/user-behaviour-event/user-behaviour-event-categories.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/user-behaviour-analytics/user-behaviour-event/user-behaviour-event-types.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/user-behaviour-analytics/user-behaviour-event-name.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/user-behaviour-analytics/user-session-options.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/web-socket/web-socket-client-type.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/web-socket/web-socket.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/window.token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/core/xps-boolean.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/xsolla-payment-client-core.mjs +0 -0
|
@@ -1,351 +0,0 @@
|
|
|
1
|
-
import { BehaviorSubject, Subject, filter, takeUntil, take, } from 'rxjs';
|
|
2
|
-
import { Injectable } from '@angular/core';
|
|
3
|
-
import { SubmitResponse } from './submit/response/submit-response.class';
|
|
4
|
-
import { InitializeResponse } from './initialize/response/initialize-response.class';
|
|
5
|
-
import { isSubmitResponse } from './submit/response/is-submit-response.function';
|
|
6
|
-
import { InputEventName } from './form/input-event.enum';
|
|
7
|
-
import { XpsCommand } from './xps-comand.enum';
|
|
8
|
-
import { FieldNames } from './field-names.enum';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "./initialize/initialize.service";
|
|
11
|
-
import * as i2 from "./submit/submit.service";
|
|
12
|
-
import * as i3 from "./sync/sync.service";
|
|
13
|
-
import * as i4 from "./form/form.service";
|
|
14
|
-
import * as i5 from "./status/status.service";
|
|
15
|
-
import * as i6 from "./finance-details/finance-details.service";
|
|
16
|
-
import * as i7 from "./credit-card-state/credit-card-state.service";
|
|
17
|
-
import * as i8 from "./actions/next-action.service";
|
|
18
|
-
import * as i9 from "./form/controls/control-config.service";
|
|
19
|
-
import * as i10 from "./three-ds/three-ds.service";
|
|
20
|
-
import * as i11 from "./form-messages/form-messages.service";
|
|
21
|
-
import * as i12 from "../settings/settings.service";
|
|
22
|
-
import * as i13 from "../country/country.service";
|
|
23
|
-
import * as i14 from "./actions/check-status/check-status.action.class";
|
|
24
|
-
export class PaymentService {
|
|
25
|
-
get formFieldsStatus$() {
|
|
26
|
-
return this.formFieldsStatusSubject.asObservable().pipe(filter(Boolean));
|
|
27
|
-
}
|
|
28
|
-
get paymentForm$() {
|
|
29
|
-
return this._paymentForm$.asObservable();
|
|
30
|
-
}
|
|
31
|
-
get formResponse$() {
|
|
32
|
-
return this._formResponse$.asObservable();
|
|
33
|
-
}
|
|
34
|
-
get formResponseValue() {
|
|
35
|
-
return this._formResponse$.getValue();
|
|
36
|
-
}
|
|
37
|
-
constructor(initializeService, submitService, syncService, formService, statusService, financeDetailsService, creditCardStateService, nextActionService, controlConfigService, threeDsService, formMessagesService, settingsService, countryService, checkStatusActionCreator) {
|
|
38
|
-
this.initializeService = initializeService;
|
|
39
|
-
this.submitService = submitService;
|
|
40
|
-
this.syncService = syncService;
|
|
41
|
-
this.formService = formService;
|
|
42
|
-
this.statusService = statusService;
|
|
43
|
-
this.financeDetailsService = financeDetailsService;
|
|
44
|
-
this.creditCardStateService = creditCardStateService;
|
|
45
|
-
this.nextActionService = nextActionService;
|
|
46
|
-
this.controlConfigService = controlConfigService;
|
|
47
|
-
this.threeDsService = threeDsService;
|
|
48
|
-
this.formMessagesService = formMessagesService;
|
|
49
|
-
this.settingsService = settingsService;
|
|
50
|
-
this.countryService = countryService;
|
|
51
|
-
this.checkStatusActionCreator = checkStatusActionCreator;
|
|
52
|
-
this.form = null;
|
|
53
|
-
this.data = null;
|
|
54
|
-
this.financeDetails = null;
|
|
55
|
-
this.focusFieldName = null;
|
|
56
|
-
this.fields = [];
|
|
57
|
-
this.destroy$ = new Subject();
|
|
58
|
-
this.formDestroy$ = new Subject();
|
|
59
|
-
this._paymentForm$ = new BehaviorSubject(null);
|
|
60
|
-
this.formFieldsStatusSubject = new BehaviorSubject(null);
|
|
61
|
-
this._formResponse$ = new BehaviorSubject(null);
|
|
62
|
-
this.isSavingMethodMode = false;
|
|
63
|
-
}
|
|
64
|
-
async initialize(config) {
|
|
65
|
-
this.destroy$ = new Subject();
|
|
66
|
-
this.formDestroy$ = new Subject();
|
|
67
|
-
this.listenFinanceDetails();
|
|
68
|
-
this.config = config;
|
|
69
|
-
this.data = await this.initializeService.request(config);
|
|
70
|
-
this.emitFormResponse(this.data);
|
|
71
|
-
this.fields = this.getFields();
|
|
72
|
-
this.form = this.formService.createForm(this.fields);
|
|
73
|
-
this.updatePidConfig();
|
|
74
|
-
this.setupSyncService(this.form, this.fields);
|
|
75
|
-
this.listenFormStatusChanges(this.form);
|
|
76
|
-
this.emitFinanceDetails(this.data.paymentForm?.summary);
|
|
77
|
-
this.emitFormFieldsStatus(this.form);
|
|
78
|
-
this.emitFormMessages(this.data.paymentForm?.messages);
|
|
79
|
-
return this.fields.filter((field) => field?.isVisible === "1" /* XpsBoolean.true */);
|
|
80
|
-
}
|
|
81
|
-
async submit() {
|
|
82
|
-
if (!this.form) {
|
|
83
|
-
throw new Error('form is empty!');
|
|
84
|
-
}
|
|
85
|
-
if (!this.form.valid) {
|
|
86
|
-
this.form.markAllAsTouched();
|
|
87
|
-
this.emitFormFieldsStatus(this.form);
|
|
88
|
-
return;
|
|
89
|
-
}
|
|
90
|
-
this.isSavingMethodMode = this.fields.some(({ name, value }) => name === 'savePsAccountOnly' && value === "1" /* XpsBoolean.true */);
|
|
91
|
-
const submitResponse = await this.submitService.request(this.fields, this.form);
|
|
92
|
-
this.data = submitResponse;
|
|
93
|
-
this.emitFormResponse(this.data);
|
|
94
|
-
if (!this.isSavingMethodMode) {
|
|
95
|
-
this.emitFinanceDetails(submitResponse.summary);
|
|
96
|
-
}
|
|
97
|
-
this.emitFormMessages(submitResponse.messages);
|
|
98
|
-
// Handle 3ds flow
|
|
99
|
-
if (submitResponse.currentCommand === XpsCommand.create &&
|
|
100
|
-
submitResponse.parameters.threeDSForm) {
|
|
101
|
-
this.runThreeDs();
|
|
102
|
-
return;
|
|
103
|
-
}
|
|
104
|
-
this.fields = this.getFields();
|
|
105
|
-
this.form = this.formService.createForm(this.fields);
|
|
106
|
-
this.syncService.setup(this.form, this.fields);
|
|
107
|
-
return this.nextActionService.getNextAction(submitResponse);
|
|
108
|
-
}
|
|
109
|
-
getFields() {
|
|
110
|
-
if (this.data instanceof SubmitResponse) {
|
|
111
|
-
return this.data.fields ?? [];
|
|
112
|
-
}
|
|
113
|
-
return this.data?.paymentForm?.fields ?? [];
|
|
114
|
-
}
|
|
115
|
-
getControlStatus(name) {
|
|
116
|
-
const control = this.form?.get(name);
|
|
117
|
-
if (!control) {
|
|
118
|
-
return null;
|
|
119
|
-
}
|
|
120
|
-
return {
|
|
121
|
-
name,
|
|
122
|
-
errors: control.errors,
|
|
123
|
-
status: control.status,
|
|
124
|
-
};
|
|
125
|
-
}
|
|
126
|
-
getInitialDataForSdkPaymentSystems() {
|
|
127
|
-
if (!isSubmitResponse(this.data)) {
|
|
128
|
-
throw new Error('Should submit form first');
|
|
129
|
-
}
|
|
130
|
-
return {
|
|
131
|
-
data: this.data.parameters.checkout.data.data,
|
|
132
|
-
sandbox: this.settingsService.isSandboxMode()
|
|
133
|
-
? "1" /* XpsBoolean.true */
|
|
134
|
-
: "0" /* XpsBoolean.false */,
|
|
135
|
-
country: this.countryService.getCountry(),
|
|
136
|
-
};
|
|
137
|
-
}
|
|
138
|
-
getQrCode() {
|
|
139
|
-
if (!isSubmitResponse(this.data)) {
|
|
140
|
-
throw new Error('Should submit form first');
|
|
141
|
-
}
|
|
142
|
-
return this.data.parameters.form.qr.title;
|
|
143
|
-
}
|
|
144
|
-
getPid() {
|
|
145
|
-
if (this.data instanceof SubmitResponse) {
|
|
146
|
-
return (Number(this.data.fields.find((field) => field.name === 'fix_pid')?.value) || null);
|
|
147
|
-
}
|
|
148
|
-
if (this.data instanceof InitializeResponse) {
|
|
149
|
-
return (Number(this.data.paymentForm?.fields.find((field) => field.name === 'fix_pid')?.value) || null);
|
|
150
|
-
}
|
|
151
|
-
return null;
|
|
152
|
-
}
|
|
153
|
-
async validate(field) {
|
|
154
|
-
const syncErrors = this.syncService.getSyncValidationErrors(field);
|
|
155
|
-
if (syncErrors) {
|
|
156
|
-
return Promise.resolve(syncErrors);
|
|
157
|
-
}
|
|
158
|
-
return this.syncService.validate(field);
|
|
159
|
-
}
|
|
160
|
-
runThreeDs() {
|
|
161
|
-
if (!isSubmitResponse(this.data)) {
|
|
162
|
-
throw new Error('Should submit form first');
|
|
163
|
-
}
|
|
164
|
-
this.threeDsService.checkThreeDs(this.data);
|
|
165
|
-
}
|
|
166
|
-
getFinanceDetails() {
|
|
167
|
-
return this.financeDetails;
|
|
168
|
-
}
|
|
169
|
-
updateFieldFormState(fieldName, formState) {
|
|
170
|
-
if (this.form) {
|
|
171
|
-
this.formService.updateFieldFormState(this.form, this.fields, fieldName, formState);
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
getFieldFormState(fieldName) {
|
|
175
|
-
return this.formService.getFieldFormState(fieldName);
|
|
176
|
-
}
|
|
177
|
-
async getStatus() {
|
|
178
|
-
if (!isSubmitResponse(this.data)) {
|
|
179
|
-
throw new Error('Should submit form first');
|
|
180
|
-
}
|
|
181
|
-
const params = {
|
|
182
|
-
pid: this.config.paymentMethodId,
|
|
183
|
-
invoice: parseInt(this.data.fixInvoice ?? ''),
|
|
184
|
-
signature: this.data.signature ?? '',
|
|
185
|
-
locale: this.data.fields.find((field) => field.name === 'locale')?.value ??
|
|
186
|
-
'en',
|
|
187
|
-
isSavePaymentAccount: this.isSavingMethodMode
|
|
188
|
-
? "1" /* XpsBoolean.true */
|
|
189
|
-
: "0" /* XpsBoolean.false */,
|
|
190
|
-
};
|
|
191
|
-
return this.statusService.getStatus(params);
|
|
192
|
-
}
|
|
193
|
-
async listenFinalStatus() {
|
|
194
|
-
const { invoice } = await this.getStatus();
|
|
195
|
-
this.statusService
|
|
196
|
-
.listenFinalStatus(invoice)
|
|
197
|
-
.pipe(take(1))
|
|
198
|
-
.subscribe(() => {
|
|
199
|
-
this.nextActionService.emitFlowUpdates(this.checkStatusActionCreator.getActionData());
|
|
200
|
-
});
|
|
201
|
-
}
|
|
202
|
-
getFieldConfig(field) {
|
|
203
|
-
return this.controlConfigService.getConfig(field);
|
|
204
|
-
}
|
|
205
|
-
changeFieldValue(name, value) {
|
|
206
|
-
const formControl = this.form?.get(name);
|
|
207
|
-
formControl?.setValue(value);
|
|
208
|
-
}
|
|
209
|
-
changeFieldState(name, state) {
|
|
210
|
-
const formControl = this.form?.get(name);
|
|
211
|
-
if (!this.form || !formControl) {
|
|
212
|
-
return;
|
|
213
|
-
}
|
|
214
|
-
switch (state) {
|
|
215
|
-
case InputEventName.blur: {
|
|
216
|
-
formControl.markAsTouched();
|
|
217
|
-
this.focusFieldName = null;
|
|
218
|
-
break;
|
|
219
|
-
}
|
|
220
|
-
case InputEventName.focus: {
|
|
221
|
-
formControl.markAsUntouched();
|
|
222
|
-
this.focusFieldName = name;
|
|
223
|
-
break;
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
this.emitFormFieldsStatus(this.form);
|
|
227
|
-
}
|
|
228
|
-
addExtraField(name, value) {
|
|
229
|
-
const isHaveField = this.fields.find((field) => {
|
|
230
|
-
return field.name === name;
|
|
231
|
-
});
|
|
232
|
-
if (isHaveField) {
|
|
233
|
-
this.fields = this.fields.map((field) => {
|
|
234
|
-
if (field.name === name) {
|
|
235
|
-
field.value = value;
|
|
236
|
-
}
|
|
237
|
-
return field;
|
|
238
|
-
});
|
|
239
|
-
return;
|
|
240
|
-
}
|
|
241
|
-
const field = {
|
|
242
|
-
name: name,
|
|
243
|
-
value: value,
|
|
244
|
-
title: '',
|
|
245
|
-
type: 'text',
|
|
246
|
-
example: '',
|
|
247
|
-
isMandatory: "1" /* XpsBoolean.true */,
|
|
248
|
-
isVisible: "0" /* XpsBoolean.false */,
|
|
249
|
-
};
|
|
250
|
-
this.fields.push(field);
|
|
251
|
-
}
|
|
252
|
-
destroy() {
|
|
253
|
-
this.data = null;
|
|
254
|
-
this.financeDetails = null;
|
|
255
|
-
this.form = null;
|
|
256
|
-
this.fields = [];
|
|
257
|
-
this.formDestroy$.next();
|
|
258
|
-
this.destroy$.next();
|
|
259
|
-
this.threeDsService.stopChecking();
|
|
260
|
-
}
|
|
261
|
-
emitFinanceDetails(summary) {
|
|
262
|
-
this.financeDetailsService.emitWithSummary(summary);
|
|
263
|
-
}
|
|
264
|
-
emitCreditCardState(idCardType) {
|
|
265
|
-
this.creditCardStateService.emit({ idCardType });
|
|
266
|
-
}
|
|
267
|
-
emitFormFieldsStatus(form) {
|
|
268
|
-
const formFieldsStatus = {};
|
|
269
|
-
Object.keys(form.controls).forEach((name) => {
|
|
270
|
-
const control = form.controls[name];
|
|
271
|
-
formFieldsStatus[name] = {
|
|
272
|
-
name: name,
|
|
273
|
-
validationStatus: control.status,
|
|
274
|
-
errors: control.errors,
|
|
275
|
-
isFocused: this.focusFieldName === name,
|
|
276
|
-
isTouched: control.touched,
|
|
277
|
-
};
|
|
278
|
-
});
|
|
279
|
-
this.formFieldsStatusSubject.next(formFieldsStatus);
|
|
280
|
-
}
|
|
281
|
-
emitFormMessages(messages) {
|
|
282
|
-
this.formMessagesService.emitOnResponse(messages);
|
|
283
|
-
}
|
|
284
|
-
setupSyncService(form, fields) {
|
|
285
|
-
this.syncService.setup(form, fields);
|
|
286
|
-
this.syncService.data$
|
|
287
|
-
.pipe(takeUntil(this.destroy$))
|
|
288
|
-
.subscribe((response) => {
|
|
289
|
-
this.emitFinanceDetails(response.summary);
|
|
290
|
-
this.emitFormMessages(response.messages);
|
|
291
|
-
this.emitFormResponse(response);
|
|
292
|
-
});
|
|
293
|
-
this.syncService.fieldAsyncValidation$
|
|
294
|
-
.pipe(takeUntil(this.destroy$))
|
|
295
|
-
.subscribe((fieldAsyncValidation) => {
|
|
296
|
-
switch (fieldAsyncValidation.field.name) {
|
|
297
|
-
case FieldNames.cardNumber:
|
|
298
|
-
this.emitCreditCardState(fieldAsyncValidation.response.parameters.idCardType);
|
|
299
|
-
}
|
|
300
|
-
});
|
|
301
|
-
}
|
|
302
|
-
listenFinanceDetails() {
|
|
303
|
-
this.financeDetailsService.data$
|
|
304
|
-
.pipe(takeUntil(this.destroy$))
|
|
305
|
-
.subscribe((financeDetails) => (this.financeDetails = financeDetails));
|
|
306
|
-
}
|
|
307
|
-
listenFormStatusChanges(form) {
|
|
308
|
-
form.statusChanges
|
|
309
|
-
.pipe(takeUntil(this.formDestroy$))
|
|
310
|
-
.subscribe((status) => {
|
|
311
|
-
this.emitFormFieldsStatus(form);
|
|
312
|
-
this._paymentForm$.next(status);
|
|
313
|
-
});
|
|
314
|
-
}
|
|
315
|
-
/*
|
|
316
|
-
* in case the form pid changes despite the one passed during initialization
|
|
317
|
-
* */
|
|
318
|
-
updatePidConfig() {
|
|
319
|
-
const currentPid = this.getPid();
|
|
320
|
-
if (currentPid) {
|
|
321
|
-
this.config.paymentMethodId = currentPid;
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
emitFormResponse(data) {
|
|
325
|
-
let type;
|
|
326
|
-
if (data instanceof InitializeResponse) {
|
|
327
|
-
type = 'initialize';
|
|
328
|
-
}
|
|
329
|
-
else if (data instanceof SubmitResponse) {
|
|
330
|
-
type = 'submit';
|
|
331
|
-
}
|
|
332
|
-
else {
|
|
333
|
-
type = 'sync';
|
|
334
|
-
}
|
|
335
|
-
this._formResponse$.next({
|
|
336
|
-
type,
|
|
337
|
-
data,
|
|
338
|
-
token: this.settingsService.token,
|
|
339
|
-
isSandbox: this.settingsService.isSandboxMode(),
|
|
340
|
-
});
|
|
341
|
-
}
|
|
342
|
-
}
|
|
343
|
-
PaymentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: PaymentService, deps: [{ token: i1.InitializeService }, { token: i2.SubmitService }, { token: i3.SyncService }, { token: i4.FormService }, { token: i5.StatusService }, { token: i6.FinanceDetailsService }, { token: i7.CreditCardStateService }, { token: i8.NextActionService }, { token: i9.ControlConfigService }, { token: i10.ThreeDsService }, { token: i11.FormMessagesService }, { token: i12.SettingsService }, { token: i13.CountryService }, { token: i14.CheckStatusActionCreator }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
344
|
-
PaymentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: PaymentService, providedIn: 'root' });
|
|
345
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: PaymentService, decorators: [{
|
|
346
|
-
type: Injectable,
|
|
347
|
-
args: [{
|
|
348
|
-
providedIn: 'root',
|
|
349
|
-
}]
|
|
350
|
-
}], ctorParameters: function () { return [{ type: i1.InitializeService }, { type: i2.SubmitService }, { type: i3.SyncService }, { type: i4.FormService }, { type: i5.StatusService }, { type: i6.FinanceDetailsService }, { type: i7.CreditCardStateService }, { type: i8.NextActionService }, { type: i9.ControlConfigService }, { type: i10.ThreeDsService }, { type: i11.FormMessagesService }, { type: i12.SettingsService }, { type: i13.CountryService }, { type: i14.CheckStatusActionCreator }]; } });
|
|
351
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGF5bWVudC1jbGllbnQtY29yZS9zcmMvbGliL2NvcmUvcGF5bWVudC9wYXltZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGVBQWUsRUFFZixPQUFPLEVBQ1AsTUFBTSxFQUNOLFNBQVMsRUFDVCxJQUFJLEdBQ0wsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUV6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQWVyRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUlqRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQWNoRCxNQUFNLE9BQU8sY0FBYztJQUd6QixJQUFXLGlCQUFpQjtRQUMxQixPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELElBQVcsWUFBWTtRQUNyQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELElBQVcsaUJBQWlCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLGNB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LElBQUksWUFBWSxrQkFBa0IsRUFBRTtZQUN0QyxJQUFJLEdBQUcsWUFBWSxDQUFDO1NBQ3JCO2FBQU0sSUFBSSxJQUFJLFlBQVksY0FBYyxFQUFFO1lBQ3pDLElBQUksR0FBRyxRQUFRLENBQUM7U0FDakI7YUFBTTtZQUNMLElBQUksR0FBRyxNQUFNLENBQUM7U0FDZjtRQUNELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO1lBQ3ZCLElBQUk7WUFDSixJQUFJO1lBQ0osS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSztZQUNqQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUU7U0FDaEQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7MkdBdGFVLGNBQWM7K0dBQWQsY0FBYyxjQUZiLE1BQU07MkZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIE9ic2VydmFibGUsXG4gIFN1YmplY3QsXG4gIGZpbHRlcixcbiAgdGFrZVVudGlsLFxuICB0YWtlLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sU3RhdHVzLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3VibWl0UmVzcG9uc2UgfSBmcm9tICcuL3N1Ym1pdC9yZXNwb25zZS9zdWJtaXQtcmVzcG9uc2UuY2xhc3MnO1xuaW1wb3J0IHsgRm9ybVNlcnZpY2UgfSBmcm9tICcuL2Zvcm0vZm9ybS5zZXJ2aWNlJztcbmltcG9ydCB7IEluaXRpYWxpemVSZXNwb25zZSB9IGZyb20gJy4vaW5pdGlhbGl6ZS9yZXNwb25zZS9pbml0aWFsaXplLXJlc3BvbnNlLmNsYXNzJztcbmltcG9ydCB7IEluaXRpYWxpemVTZXJ2aWNlIH0gZnJvbSAnLi9pbml0aWFsaXplL2luaXRpYWxpemUuc2VydmljZSc7XG5pbXBvcnQgeyBTdGF0dXMgfSBmcm9tICcuL3N0YXR1cy9zdGF0dXMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFN1Ym1pdFNlcnZpY2UgfSBmcm9tICcuL3N1Ym1pdC9zdWJtaXQuc2VydmljZSc7XG5pbXBvcnQgeyBTeW5jU2VydmljZSB9IGZyb20gJy4vc3luYy9zeW5jLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RhdHVzU2VydmljZSB9IGZyb20gJy4vc3RhdHVzL3N0YXR1cy5zZXJ2aWNlJztcbmltcG9ydCB7IE5leHRBY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9hY3Rpb25zL25leHQtYWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29udHJvbENvbmZpZyB9IGZyb20gJy4vZm9ybS9jb250cm9scy9jb250cm9sLWNvbmZpZyc7XG5pbXBvcnQgeyBDb250cm9sQ29uZmlnU2VydmljZSB9IGZyb20gJy4vZm9ybS9jb250cm9scy9jb250cm9sLWNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IEZpbmFuY2VEZXRhaWxzIH0gZnJvbSAnLi9maW5hbmNlLWRldGFpbHMvZmluYW5jZS1kZXRhaWxzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGaW5hbmNlRGV0YWlsc1NlcnZpY2UgfSBmcm9tICcuL2ZpbmFuY2UtZGV0YWlscy9maW5hbmNlLWRldGFpbHMuc2VydmljZSc7XG5pbXBvcnQgeyBOZXh0QWN0aW9uIH0gZnJvbSAnLi9hY3Rpb25zL25leHQtYWN0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBYcHNTdW1tYXJ5IH0gZnJvbSAnLi94cHMtc3VtbWFyeS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmllbGQgfSBmcm9tICcuL2ZpZWxkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQYXltZW50Q29uZmlnIH0gZnJvbSAnLi9wYXltZW50LWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgaXNTdWJtaXRSZXNwb25zZSB9IGZyb20gJy4vc3VibWl0L3Jlc3BvbnNlL2lzLXN1Ym1pdC1yZXNwb25zZS5mdW5jdGlvbic7XG5pbXBvcnQgeyBYcHNCb29sZWFuIH0gZnJvbSAnLi4veHBzLWJvb2xlYW4uZW51bSc7XG5pbXBvcnQgeyBTdGF0dXNSZXF1ZXN0UGFyYW1zIH0gZnJvbSAnLi9zdGF0dXMvc3RhdHVzLXJlcXVlc3Qvc3RhdHVzLXJlcXVlc3QtcGFyYW1zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnLi9mb3JtL3ZhbGlkYXRvcnMvdmFsaWRhdGlvbi1lcnJvcnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IElucHV0RXZlbnROYW1lIH0gZnJvbSAnLi9mb3JtL2lucHV0LWV2ZW50LmVudW0nO1xuaW1wb3J0IHsgRm9ybUZpZWxkc1N0YXR1cyB9IGZyb20gJy4vZm9ybS9mb3JtLWZpZWxkcy1zdGF0dXMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFRocmVlRHNTZXJ2aWNlIH0gZnJvbSAnLi90aHJlZS1kcy90aHJlZS1kcy5zZXJ2aWNlJztcbmltcG9ydCB7IFhwc0NvbW1hbmQgfSBmcm9tICcuL3hwcy1jb21hbmQuZW51bSc7XG5pbXBvcnQgeyBDcmVkaXRDYXJkU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi9jcmVkaXQtY2FyZC1zdGF0ZS9jcmVkaXQtY2FyZC1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IEZpZWxkTmFtZXMgfSBmcm9tICcuL2ZpZWxkLW5hbWVzLmVudW0nO1xuaW1wb3J0IHsgRm9ybVN0YXRlIH0gZnJvbSAnLi9mb3JtL2Zvcm0tc3RhdGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZvcm1NZXNzYWdlc1NlcnZpY2UgfSBmcm9tICcuL2Zvcm0tbWVzc2FnZXMvZm9ybS1tZXNzYWdlcy5zZXJ2aWNlJztcbmltcG9ydCB7IFhwc01lc3NhZ2UgfSBmcm9tICcuL3hwcy1tZXNzYWdlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuLi9zZXR0aW5ncy9zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IENvdW50cnlTZXJ2aWNlIH0gZnJvbSAnLi4vY291bnRyeS9jb3VudHJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgU2RrUGF5bWVudFN5c3RlbXNJbml0aWFsRGF0YSB9IGZyb20gJy4uL3Nkay1wYXltZW50LXN5c3RlbXMvc2RrLXBheW1lbnQtc3lzdGVtcy1pbml0aWFsLWRhdGEuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZvcm1SZXNwb25zZSB9IGZyb20gJy4vZm9ybS1yZXNwb25zZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ2hlY2tTdGF0dXNBY3Rpb25DcmVhdG9yIH0gZnJvbSAnLi9hY3Rpb25zL2NoZWNrLXN0YXR1cy9jaGVjay1zdGF0dXMuYWN0aW9uLmNsYXNzJztcbmltcG9ydCB7IENvbnRyb2xTdGF0dXMgfSBmcm9tICcuL2Zvcm0vY29udHJvbC1zdGF0dXMuaW50ZXJmYWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFBheW1lbnRTZXJ2aWNlIHtcbiAgcHVibGljIGZvcm06IFVudHlwZWRGb3JtR3JvdXAgfCBudWxsID0gbnVsbDtcblxuICBwdWJsaWMgZ2V0IGZvcm1GaWVsZHNTdGF0dXMkKCk6IE9ic2VydmFibGU8Rm9ybUZpZWxkc1N0YXR1cz4ge1xuICAgIHJldHVybiB0aGlzLmZvcm1GaWVsZHNTdGF0dXNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoZmlsdGVyKEJvb2xlYW4pKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGF5bWVudEZvcm0kKCk6IE9ic2VydmFibGU8Rm9ybUNvbnRyb2xTdGF0dXMgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3BheW1lbnRGb3JtJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZm9ybVJlc3BvbnNlJCgpOiBPYnNlcnZhYmxlPEZvcm1SZXNwb25zZSB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fZm9ybVJlc3BvbnNlJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZm9ybVJlc3BvbnNlVmFsdWUoKTogRm9ybVJlc3BvbnNlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1SZXNwb25zZSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZGF0YTogSW5pdGlhbGl6ZVJlc3BvbnNlIHwgU3VibWl0UmVzcG9uc2UgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBmaW5hbmNlRGV0YWlsczogRmluYW5jZURldGFpbHMgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBmb2N1c0ZpZWxkTmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgZmllbGRzOiBGaWVsZFtdID0gW107XG4gIHByaXZhdGUgY29uZmlnITogUGF5bWVudENvbmZpZztcblxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBmb3JtRGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYXltZW50Rm9ybSQgPVxuICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8Rm9ybUNvbnRyb2xTdGF0dXMgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBmb3JtRmllbGRzU3RhdHVzU3ViamVjdCA9XG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdDxGb3JtRmllbGRzU3RhdHVzIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Zvcm1SZXNwb25zZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZvcm1SZXNwb25zZSB8IG51bGw+KFxuICAgIG51bGxcbiAgKTtcblxuICBwcml2YXRlIGlzU2F2aW5nTWV0aG9kTW9kZSA9IGZhbHNlO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluaXRpYWxpemVTZXJ2aWNlOiBJbml0aWFsaXplU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN1Ym1pdFNlcnZpY2U6IFN1Ym1pdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzeW5jU2VydmljZTogU3luY1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtU2VydmljZTogRm9ybVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdGF0dXNTZXJ2aWNlOiBTdGF0dXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmluYW5jZURldGFpbHNTZXJ2aWNlOiBGaW5hbmNlRGV0YWlsc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjcmVkaXRDYXJkU3RhdGVTZXJ2aWNlOiBDcmVkaXRDYXJkU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmV4dEFjdGlvblNlcnZpY2U6IE5leHRBY3Rpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29udHJvbENvbmZpZ1NlcnZpY2U6IENvbnRyb2xDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGhyZWVEc1NlcnZpY2U6IFRocmVlRHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybU1lc3NhZ2VzU2VydmljZTogRm9ybU1lc3NhZ2VzU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNldHRpbmdzU2VydmljZTogU2V0dGluZ3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY291bnRyeVNlcnZpY2U6IENvdW50cnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hlY2tTdGF0dXNBY3Rpb25DcmVhdG9yOiBDaGVja1N0YXR1c0FjdGlvbkNyZWF0b3JcbiAgKSB7fVxuXG4gIHB1YmxpYyBhc3luYyBpbml0aWFsaXplKGNvbmZpZzogUGF5bWVudENvbmZpZyk6IFByb21pc2U8RmllbGRbXT4ge1xuICAgIHRoaXMuZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHRoaXMuZm9ybURlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIHRoaXMubGlzdGVuRmluYW5jZURldGFpbHMoKTtcblxuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMuZGF0YSA9IGF3YWl0IHRoaXMuaW5pdGlhbGl6ZVNlcnZpY2UucmVxdWVzdChjb25maWcpO1xuICAgIHRoaXMuZW1pdEZvcm1SZXNwb25zZSh0aGlzLmRhdGEpO1xuXG4gICAgdGhpcy5maWVsZHMgPSB0aGlzLmdldEZpZWxkcygpO1xuICAgIHRoaXMuZm9ybSA9IHRoaXMuZm9ybVNlcnZpY2UuY3JlYXRlRm9ybSh0aGlzLmZpZWxkcyk7XG5cbiAgICB0aGlzLnVwZGF0ZVBpZENvbmZpZygpO1xuICAgIHRoaXMuc2V0dXBTeW5jU2VydmljZSh0aGlzLmZvcm0sIHRoaXMuZmllbGRzKTtcbiAgICB0aGlzLmxpc3RlbkZvcm1TdGF0dXNDaGFuZ2VzKHRoaXMuZm9ybSk7XG5cbiAgICB0aGlzLmVtaXRGaW5hbmNlRGV0YWlscyh0aGlzLmRhdGEucGF5bWVudEZvcm0/LnN1bW1hcnkpO1xuICAgIHRoaXMuZW1pdEZvcm1GaWVsZHNTdGF0dXModGhpcy5mb3JtKTtcbiAgICB0aGlzLmVtaXRGb3JtTWVzc2FnZXModGhpcy5kYXRhLnBheW1lbnRGb3JtPy5tZXNzYWdlcyk7XG5cbiAgICByZXR1cm4gdGhpcy5maWVsZHMuZmlsdGVyKFxuICAgICAgKGZpZWxkOiBGaWVsZCkgPT4gZmllbGQ/LmlzVmlzaWJsZSA9PT0gWHBzQm9vbGVhbi50cnVlXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzdWJtaXQoKTogUHJvbWlzZTxOZXh0QWN0aW9uIHwgbnVsbCB8IHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuZm9ybSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdmb3JtIGlzIGVtcHR5IScpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5mb3JtLnZhbGlkKSB7XG4gICAgICB0aGlzLmZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgICAgdGhpcy5lbWl0Rm9ybUZpZWxkc1N0YXR1cyh0aGlzLmZvcm0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaXNTYXZpbmdNZXRob2RNb2RlID0gdGhpcy5maWVsZHMuc29tZShcbiAgICAgICh7IG5hbWUsIHZhbHVlIH0pID0+XG4gICAgICAgIG5hbWUgPT09ICdzYXZlUHNBY2NvdW50T25seScgJiYgdmFsdWUgPT09IFhwc0Jvb2xlYW4udHJ1ZVxuICAgICk7XG4gICAgY29uc3Qgc3VibWl0UmVzcG9uc2UgPSBhd2FpdCB0aGlzLnN1Ym1pdFNlcnZpY2UucmVxdWVzdChcbiAgICAgIHRoaXMuZmllbGRzLFxuICAgICAgdGhpcy5mb3JtXG4gICAgKTtcblxuICAgIHRoaXMuZGF0YSA9IHN1Ym1pdFJlc3BvbnNlO1xuICAgIHRoaXMuZW1pdEZvcm1SZXNwb25zZSh0aGlzLmRhdGEpO1xuXG4gICAgaWYgKCF0aGlzLmlzU2F2aW5nTWV0aG9kTW9kZSkge1xuICAgICAgdGhpcy5lbWl0RmluYW5jZURldGFpbHMoc3VibWl0UmVzcG9uc2Uuc3VtbWFyeSk7XG4gICAgfVxuICAgIHRoaXMuZW1pdEZvcm1NZXNzYWdlcyhzdWJtaXRSZXNwb25zZS5tZXNzYWdlcyk7XG5cbiAgICAvLyBIYW5kbGUgM2RzIGZsb3dcbiAgICBpZiAoXG4gICAgICBzdWJtaXRSZXNwb25zZS5jdXJyZW50Q29tbWFuZCA9PT0gWHBzQ29tbWFuZC5jcmVhdGUgJiZcbiAgICAgIHN1Ym1pdFJlc3BvbnNlLnBhcmFtZXRlcnMudGhyZWVEU0Zvcm1cbiAgICApIHtcbiAgICAgIHRoaXMucnVuVGhyZWVEcygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZmllbGRzID0gdGhpcy5nZXRGaWVsZHMoKTtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1TZXJ2aWNlLmNyZWF0ZUZvcm0odGhpcy5maWVsZHMpO1xuXG4gICAgdGhpcy5zeW5jU2VydmljZS5zZXR1cCh0aGlzLmZvcm0sIHRoaXMuZmllbGRzKTtcblxuICAgIHJldHVybiB0aGlzLm5leHRBY3Rpb25TZXJ2aWNlLmdldE5leHRBY3Rpb24oc3VibWl0UmVzcG9uc2UpO1xuICB9XG5cbiAgcHVibGljIGdldEZpZWxkcygpOiBGaWVsZFtdIHtcbiAgICBpZiAodGhpcy5kYXRhIGluc3RhbmNlb2YgU3VibWl0UmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGEuZmllbGRzID8/IFtdO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmRhdGE/LnBheW1lbnRGb3JtPy5maWVsZHMgPz8gW107XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29udHJvbFN0YXR1cyhuYW1lOiBGaWVsZE5hbWVzKTogQ29udHJvbFN0YXR1cyB8IG51bGwge1xuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm0/LmdldChuYW1lKTtcbiAgICBpZiAoIWNvbnRyb2wpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBuYW1lLFxuICAgICAgZXJyb3JzOiBjb250cm9sLmVycm9ycyxcbiAgICAgIHN0YXR1czogY29udHJvbC5zdGF0dXMsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRJbml0aWFsRGF0YUZvclNka1BheW1lbnRTeXN0ZW1zKCk6IFNka1BheW1lbnRTeXN0ZW1zSW5pdGlhbERhdGEge1xuICAgIGlmICghaXNTdWJtaXRSZXNwb25zZSh0aGlzLmRhdGEpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Nob3VsZCBzdWJtaXQgZm9ybSBmaXJzdCcpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkYXRhOiB0aGlzLmRhdGEucGFyYW1ldGVycy5jaGVja291dC5kYXRhLmRhdGEsXG4gICAgICBzYW5kYm94OiB0aGlzLnNldHRpbmdzU2VydmljZS5pc1NhbmRib3hNb2RlKClcbiAgICAgICAgPyBYcHNCb29sZWFuLnRydWVcbiAgICAgICAgOiBYcHNCb29sZWFuLmZhbHNlLFxuICAgICAgY291bnRyeTogdGhpcy5jb3VudHJ5U2VydmljZS5nZXRDb3VudHJ5KCksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRRckNvZGUoKTogc3RyaW5nIHtcbiAgICBpZiAoIWlzU3VibWl0UmVzcG9uc2UodGhpcy5kYXRhKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTaG91bGQgc3VibWl0IGZvcm0gZmlyc3QnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5kYXRhLnBhcmFtZXRlcnMuZm9ybS5xci50aXRsZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRQaWQoKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMuZGF0YSBpbnN0YW5jZW9mIFN1Ym1pdFJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBOdW1iZXIoXG4gICAgICAgICAgdGhpcy5kYXRhLmZpZWxkcy5maW5kKChmaWVsZCkgPT4gZmllbGQubmFtZSA9PT0gJ2ZpeF9waWQnKT8udmFsdWVcbiAgICAgICAgKSB8fCBudWxsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRhdGEgaW5zdGFuY2VvZiBJbml0aWFsaXplUmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIE51bWJlcihcbiAgICAgICAgICB0aGlzLmRhdGEucGF5bWVudEZvcm0/LmZpZWxkcy5maW5kKFxuICAgICAgICAgICAgKGZpZWxkKSA9PiBmaWVsZC5uYW1lID09PSAnZml4X3BpZCdcbiAgICAgICAgICApPy52YWx1ZVxuICAgICAgICApIHx8IG51bGxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdmFsaWRhdGUoZmllbGQ6IEZpZWxkKTogUHJvbWlzZTxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD4ge1xuICAgIGNvbnN0IHN5bmNFcnJvcnMgPSB0aGlzLnN5bmNTZXJ2aWNlLmdldFN5bmNWYWxpZGF0aW9uRXJyb3JzKGZpZWxkKTtcblxuICAgIGlmIChzeW5jRXJyb3JzKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHN5bmNFcnJvcnMpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN5bmNTZXJ2aWNlLnZhbGlkYXRlKGZpZWxkKTtcbiAgfVxuXG4gIHB1YmxpYyBydW5UaHJlZURzKCk6IHZvaWQge1xuICAgIGlmICghaXNTdWJtaXRSZXNwb25zZSh0aGlzLmRhdGEpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Nob3VsZCBzdWJtaXQgZm9ybSBmaXJzdCcpO1xuICAgIH1cblxuICAgIHRoaXMudGhyZWVEc1NlcnZpY2UuY2hlY2tUaHJlZURzKHRoaXMuZGF0YSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RmluYW5jZURldGFpbHMoKTogRmluYW5jZURldGFpbHMgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5maW5hbmNlRGV0YWlscztcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVGaWVsZEZvcm1TdGF0ZShmaWVsZE5hbWU6IHN0cmluZywgZm9ybVN0YXRlOiBGb3JtU3RhdGUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb3JtKSB7XG4gICAgICB0aGlzLmZvcm1TZXJ2aWNlLnVwZGF0ZUZpZWxkRm9ybVN0YXRlKFxuICAgICAgICB0aGlzLmZvcm0sXG4gICAgICAgIHRoaXMuZmllbGRzLFxuICAgICAgICBmaWVsZE5hbWUsXG4gICAgICAgIGZvcm1TdGF0ZVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0RmllbGRGb3JtU3RhdGUoZmllbGROYW1lOiBGaWVsZE5hbWVzKTogRm9ybVN0YXRlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybVNlcnZpY2UuZ2V0RmllbGRGb3JtU3RhdGUoZmllbGROYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTdGF0dXMoKTogUHJvbWlzZTxTdGF0dXM+IHtcbiAgICBpZiAoIWlzU3VibWl0UmVzcG9uc2UodGhpcy5kYXRhKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTaG91bGQgc3VibWl0IGZvcm0gZmlyc3QnKTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJhbXM6IFN0YXR1c1JlcXVlc3RQYXJhbXMgPSB7XG4gICAgICBwaWQ6IHRoaXMuY29uZmlnLnBheW1lbnRNZXRob2RJZCxcbiAgICAgIGludm9pY2U6IHBhcnNlSW50KHRoaXMuZGF0YS5maXhJbnZvaWNlID8/ICcnKSxcbiAgICAgIHNpZ25hdHVyZTogdGhpcy5kYXRhLnNpZ25hdHVyZSA/PyAnJyxcbiAgICAgIGxvY2FsZTpcbiAgICAgICAgdGhpcy5kYXRhLmZpZWxkcy5maW5kKChmaWVsZCkgPT4gZmllbGQubmFtZSA9PT0gJ2xvY2FsZScpPy52YWx1ZSA/P1xuICAgICAgICAnZW4nLFxuICAgICAgaXNTYXZlUGF5bWVudEFjY291bnQ6IHRoaXMuaXNTYXZpbmdNZXRob2RNb2RlXG4gICAgICAgID8gWHBzQm9vbGVhbi50cnVlXG4gICAgICAgIDogWHBzQm9vbGVhbi5mYWxzZSxcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLnN0YXR1c1NlcnZpY2UuZ2V0U3RhdHVzKHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbGlzdGVuRmluYWxTdGF0dXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBpbnZvaWNlIH0gPSBhd2FpdCB0aGlzLmdldFN0YXR1cygpO1xuXG4gICAgdGhpcy5zdGF0dXNTZXJ2aWNlXG4gICAgICAubGlzdGVuRmluYWxTdGF0dXMoaW52b2ljZSBhcyB1bmtub3duIGFzIG51bWJlcilcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5uZXh0QWN0aW9uU2VydmljZS5lbWl0Rmxvd1VwZGF0ZXMoXG4gICAgICAgICAgdGhpcy5jaGVja1N0YXR1c0FjdGlvbkNyZWF0b3IuZ2V0QWN0aW9uRGF0YSgpXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGaWVsZENvbmZpZyhmaWVsZDogRmllbGQpOiBDb250cm9sQ29uZmlnIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbENvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKGZpZWxkKTtcbiAgfVxuXG4gIHB1YmxpYyBjaGFuZ2VGaWVsZFZhbHVlKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGZvcm1Db250cm9sID0gdGhpcy5mb3JtPy5nZXQobmFtZSk7XG4gICAgZm9ybUNvbnRyb2w/LnNldFZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBjaGFuZ2VGaWVsZFN0YXRlKG5hbWU6IHN0cmluZywgc3RhdGU6IElucHV0RXZlbnROYW1lKTogdm9pZCB7XG4gICAgY29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLmZvcm0/LmdldChuYW1lKTtcblxuICAgIGlmICghdGhpcy5mb3JtIHx8ICFmb3JtQ29udHJvbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN3aXRjaCAoc3RhdGUpIHtcbiAgICAgIGNhc2UgSW5wdXRFdmVudE5hbWUuYmx1cjoge1xuICAgICAgICBmb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgIHRoaXMuZm9jdXNGaWVsZE5hbWUgPSBudWxsO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgSW5wdXRFdmVudE5hbWUuZm9jdXM6IHtcbiAgICAgICAgZm9ybUNvbnRyb2wubWFya0FzVW50b3VjaGVkKCk7XG4gICAgICAgIHRoaXMuZm9jdXNGaWVsZE5hbWUgPSBuYW1lO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmVtaXRGb3JtRmllbGRzU3RhdHVzKHRoaXMuZm9ybSk7XG4gIH1cblxuICBwdWJsaWMgYWRkRXh0cmFGaWVsZChuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBpc0hhdmVGaWVsZCA9IHRoaXMuZmllbGRzLmZpbmQoKGZpZWxkKSA9PiB7XG4gICAgICByZXR1cm4gZmllbGQubmFtZSA9PT0gbmFtZTtcbiAgICB9KTtcblxuICAgIGlmIChpc0hhdmVGaWVsZCkge1xuICAgICAgdGhpcy5maWVsZHMgPSB0aGlzLmZpZWxkcy5tYXAoKGZpZWxkKSA9PiB7XG4gICAgICAgIGlmIChmaWVsZC5uYW1lID09PSBuYW1lKSB7XG4gICAgICAgICAgZmllbGQudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGZpZWxkID0ge1xuICAgICAgbmFtZTogbmFtZSxcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIHRpdGxlOiAnJyxcbiAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgIGV4YW1wbGU6ICcnLFxuICAgICAgaXNNYW5kYXRvcnk6IFhwc0Jvb2xlYW4udHJ1ZSxcbiAgICAgIGlzVmlzaWJsZTogWHBzQm9vbGVhbi5mYWxzZSxcbiAgICB9IGFzIEZpZWxkO1xuXG4gICAgdGhpcy5maWVsZHMucHVzaChmaWVsZCk7XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGEgPSBudWxsO1xuICAgIHRoaXMuZmluYW5jZURldGFpbHMgPSBudWxsO1xuICAgIHRoaXMuZm9ybSA9IG51bGw7XG4gICAgdGhpcy5maWVsZHMgPSBbXTtcbiAgICB0aGlzLmZvcm1EZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG5cbiAgICB0aGlzLnRocmVlRHNTZXJ2aWNlLnN0b3BDaGVja2luZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0RmluYW5jZURldGFpbHMoc3VtbWFyeT86IFhwc1N1bW1hcnkpOiB2b2lkIHtcbiAgICB0aGlzLmZpbmFuY2VEZXRhaWxzU2VydmljZS5lbWl0V2l0aFN1bW1hcnkoc3VtbWFyeSk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRDcmVkaXRDYXJkU3RhdGUoaWRDYXJkVHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jcmVkaXRDYXJkU3RhdGVTZXJ2aWNlLmVtaXQoeyBpZENhcmRUeXBlIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0Rm9ybUZpZWxkc1N0YXR1cyhmb3JtOiBVbnR5cGVkRm9ybUdyb3VwKTogdm9pZCB7XG4gICAgY29uc3QgZm9ybUZpZWxkc1N0YXR1czogRm9ybUZpZWxkc1N0YXR1cyA9IHt9O1xuXG4gICAgT2JqZWN0LmtleXMoZm9ybS5jb250cm9scykuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgY29uc3QgY29udHJvbCA9IGZvcm0uY29udHJvbHNbbmFtZV07XG4gICAgICBmb3JtRmllbGRzU3RhdHVzW25hbWVdID0ge1xuICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICB2YWxpZGF0aW9uU3RhdHVzOiBjb250cm9sLnN0YXR1cyxcbiAgICAgICAgZXJyb3JzOiBjb250cm9sLmVycm9ycyxcbiAgICAgICAgaXNGb2N1c2VkOiB0aGlzLmZvY3VzRmllbGROYW1lID09PSBuYW1lLFxuICAgICAgICBpc1RvdWNoZWQ6IGNvbnRyb2wudG91Y2hlZCxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICB0aGlzLmZvcm1GaWVsZHNTdGF0dXNTdWJqZWN0Lm5leHQoZm9ybUZpZWxkc1N0YXR1cyk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRGb3JtTWVzc2FnZXMobWVzc2FnZXM/OiBYcHNNZXNzYWdlW10pOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1NZXNzYWdlc1NlcnZpY2UuZW1pdE9uUmVzcG9uc2UobWVzc2FnZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFN5bmNTZXJ2aWNlKGZvcm06IFVudHlwZWRGb3JtR3JvdXAsIGZpZWxkczogRmllbGRbXSk6IHZvaWQge1xuICAgIHRoaXMuc3luY1NlcnZpY2Uuc2V0dXAoZm9ybSwgZmllbGRzKTtcbiAgICB0aGlzLnN5bmNTZXJ2aWNlLmRhdGEkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLmVtaXRGaW5hbmNlRGV0YWlscyhyZXNwb25zZS5zdW1tYXJ5KTtcbiAgICAgICAgdGhpcy5lbWl0Rm9ybU1lc3NhZ2VzKHJlc3BvbnNlLm1lc3NhZ2VzKTtcbiAgICAgICAgdGhpcy5lbWl0Rm9ybVJlc3BvbnNlKHJlc3BvbnNlKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5zeW5jU2VydmljZS5maWVsZEFzeW5jVmFsaWRhdGlvbiRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKGZpZWxkQXN5bmNWYWxpZGF0aW9uKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoZmllbGRBc3luY1ZhbGlkYXRpb24uZmllbGQubmFtZSkge1xuICAgICAgICAgIGNhc2UgRmllbGROYW1lcy5jYXJkTnVtYmVyOlxuICAgICAgICAgICAgdGhpcy5lbWl0Q3JlZGl0Q2FyZFN0YXRlKFxuICAgICAgICAgICAgICBmaWVsZEFzeW5jVmFsaWRhdGlvbi5yZXNwb25zZS5wYXJhbWV0ZXJzLmlkQ2FyZFR5cGVcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5GaW5hbmNlRGV0YWlscygpOiB2b2lkIHtcbiAgICB0aGlzLmZpbmFuY2VEZXRhaWxzU2VydmljZS5kYXRhJFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoZmluYW5jZURldGFpbHMpID0+ICh0aGlzLmZpbmFuY2VEZXRhaWxzID0gZmluYW5jZURldGFpbHMpKTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuRm9ybVN0YXR1c0NoYW5nZXMoZm9ybTogVW50eXBlZEZvcm1Hcm91cCk6IHZvaWQge1xuICAgIGZvcm0uc3RhdHVzQ2hhbmdlc1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZm9ybURlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKHN0YXR1czogRm9ybUNvbnRyb2xTdGF0dXMpID0+IHtcbiAgICAgICAgdGhpcy5lbWl0Rm9ybUZpZWxkc1N0YXR1cyhmb3JtKTtcbiAgICAgICAgdGhpcy5fcGF5bWVudEZvcm0kLm5leHQoc3RhdHVzKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLypcbiAgICogaW4gY2FzZSB0aGUgZm9ybSBwaWQgY2hhbmdlcyBkZXNwaXRlIHRoZSBvbmUgcGFzc2VkIGR1cmluZyBpbml0aWFsaXphdGlvblxuICAgKiAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVQaWRDb25maWcoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFBpZCA9IHRoaXMuZ2V0UGlkKCk7XG4gICAgaWYgKGN1cnJlbnRQaWQpIHtcbiAgICAgIHRoaXMuY29uZmlnLnBheW1lbnRNZXRob2RJZCA9IGN1cnJlbnRQaWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBlbWl0Rm9ybVJlc3BvbnNlKGRhdGE6IEZvcm1SZXNwb25zZVsnZGF0YSddKTogdm9pZCB7XG4gICAgbGV0IHR5cGU6IEZvcm1SZXNwb25zZVsndHlwZSddO1xuICAgIGlmIChkYXRhIGluc3RhbmNlb2YgSW5pdGlhbGl6ZVJlc3BvbnNlKSB7XG4gICAgICB0eXBlID0gJ2luaXRpYWxpemUnO1xuICAgIH0gZWxzZSBpZiAoZGF0YSBpbnN0YW5jZW9mIFN1Ym1pdFJlc3BvbnNlKSB7XG4gICAgICB0eXBlID0gJ3N1Ym1pdCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHR5cGUgPSAnc3luYyc7XG4gICAgfVxuICAgIHRoaXMuX2Zvcm1SZXNwb25zZSQubmV4dCh7XG4gICAgICB0eXBlLFxuICAgICAgZGF0YSxcbiAgICAgIHRva2VuOiB0aGlzLnNldHRpbmdzU2VydmljZS50b2tlbixcbiAgICAgIGlzU2FuZGJveDogdGhpcy5zZXR0aW5nc1NlcnZpY2UuaXNTYW5kYm94TW9kZSgpLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { filter, Subject, takeUntil } from 'rxjs';
|
|
3
|
-
import { StatusEnum } from '../status.enum';
|
|
4
|
-
import { UserBehaviourEventName } from '../../../user-behaviour-analytics/user-behaviour-event-name.enum';
|
|
5
|
-
import { userBehaviourEventTypes } from '../../../user-behaviour-analytics/user-behaviour-event/user-behaviour-event-types';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "../status-request/status-request.service";
|
|
8
|
-
import * as i2 from "../check-status/check-status.service";
|
|
9
|
-
import * as i3 from "../websocket-status/websocket-status.service";
|
|
10
|
-
import * as i4 from "../../../user-behaviour-analytics/user-behaviour-analytics.service";
|
|
11
|
-
export class ListenStatusService {
|
|
12
|
-
get websocketOpened$() {
|
|
13
|
-
return this.websocketOpenedSubject.asObservable();
|
|
14
|
-
}
|
|
15
|
-
get statusUpdated$() {
|
|
16
|
-
return this.statusUpdatedSubject.asObservable();
|
|
17
|
-
}
|
|
18
|
-
constructor(statusService, checkStatusService, websocketStatusService, userBehaviourAnalyticsService) {
|
|
19
|
-
this.statusService = statusService;
|
|
20
|
-
this.checkStatusService = checkStatusService;
|
|
21
|
-
this.websocketStatusService = websocketStatusService;
|
|
22
|
-
this.userBehaviourAnalyticsService = userBehaviourAnalyticsService;
|
|
23
|
-
this.isListening = false;
|
|
24
|
-
this.websocketOpenedSubject = new Subject();
|
|
25
|
-
this.statusUpdatedSubject = new Subject();
|
|
26
|
-
this.statusDoneSubject = new Subject();
|
|
27
|
-
this.destroy$ = new Subject();
|
|
28
|
-
}
|
|
29
|
-
listen(invoice) {
|
|
30
|
-
if (this.isListening) {
|
|
31
|
-
this.stopListening();
|
|
32
|
-
}
|
|
33
|
-
this.destroy$ = new Subject();
|
|
34
|
-
this.isListening = true;
|
|
35
|
-
this.subscribeStatusUpdate(invoice);
|
|
36
|
-
this.subscribeCheckStatusUpdate();
|
|
37
|
-
this.subscribeWebsocketEvent();
|
|
38
|
-
this.checkStatusService.setRequestParams(invoice);
|
|
39
|
-
return this.statusDoneSubject.asObservable();
|
|
40
|
-
}
|
|
41
|
-
stopListening() {
|
|
42
|
-
this.isListening = false;
|
|
43
|
-
this.websocketStatusService.closeWebSocket();
|
|
44
|
-
this.destroy$.next();
|
|
45
|
-
this.destroy$.complete();
|
|
46
|
-
}
|
|
47
|
-
subscribeStatusUpdate(invoice) {
|
|
48
|
-
this.statusService.response$
|
|
49
|
-
.pipe(filter((statusResponse) => {
|
|
50
|
-
return statusResponse?.status?.invoice === Number(invoice);
|
|
51
|
-
}), takeUntil(this.destroy$))
|
|
52
|
-
.subscribe((statusResponse) => {
|
|
53
|
-
if (!statusResponse?.status) {
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
const statusSettings = {
|
|
57
|
-
statusState: statusResponse.status.statusState,
|
|
58
|
-
isCancelUser: statusResponse.status.isCancelUser,
|
|
59
|
-
needWebSocket: statusResponse.status.needToCheck,
|
|
60
|
-
backUrlSettings: statusResponse.status.backUrlSettings,
|
|
61
|
-
autoRedirect: statusResponse.status.autoRedirect,
|
|
62
|
-
webSocketUrl: statusResponse.status.webSocketUrl,
|
|
63
|
-
webSocketChannelName: statusResponse.status.webSocketChannelName,
|
|
64
|
-
webSocketClientType: statusResponse.status.webSocketClientType,
|
|
65
|
-
};
|
|
66
|
-
this.statusUpdatedSubject.next({
|
|
67
|
-
statusResponse: statusResponse,
|
|
68
|
-
statusSettings: statusSettings,
|
|
69
|
-
});
|
|
70
|
-
const isStatusError = statusSettings.statusState === StatusEnum.canceled ||
|
|
71
|
-
statusSettings.statusState === StatusEnum.error ||
|
|
72
|
-
statusSettings.isCancelUser;
|
|
73
|
-
if (isStatusError) {
|
|
74
|
-
this.userBehaviourAnalyticsService.send(UserBehaviourEventName.openStatusError, userBehaviourEventTypes.manual, {
|
|
75
|
-
instanceId: statusResponse.status.pid,
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
if (statusSettings.needWebSocket) {
|
|
79
|
-
this.openWebsocket(statusSettings);
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
this.stopListening();
|
|
83
|
-
this.statusDoneSubject.next(statusSettings);
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
subscribeCheckStatusUpdate() {
|
|
87
|
-
this.checkStatusService.response$
|
|
88
|
-
.pipe(takeUntil(this.destroy$))
|
|
89
|
-
.subscribe((checkStatusResponse) => {
|
|
90
|
-
if (!checkStatusResponse?.status)
|
|
91
|
-
return;
|
|
92
|
-
if (checkStatusResponse.status === StatusEnum.done) {
|
|
93
|
-
this.statusService.request();
|
|
94
|
-
this.websocketStatusService.closeWebSocket();
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
if (checkStatusResponse.final === false) {
|
|
98
|
-
this.websocketStatusService.startReinsuranceCheckTimeout();
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
subscribeWebsocketEvent() {
|
|
104
|
-
this.websocketStatusService.needCheckStatus$
|
|
105
|
-
.pipe(takeUntil(this.destroy$))
|
|
106
|
-
.subscribe(() => this.checkStatusService.request());
|
|
107
|
-
this.websocketStatusService.statusChanged$
|
|
108
|
-
.pipe(takeUntil(this.destroy$))
|
|
109
|
-
.subscribe(() => this.statusService.request());
|
|
110
|
-
}
|
|
111
|
-
openWebsocket(statusSettings) {
|
|
112
|
-
void this.websocketStatusService.checkStatusWithWebSocket(statusSettings.webSocketUrl, statusSettings.webSocketChannelName, statusSettings.webSocketClientType);
|
|
113
|
-
this.websocketOpenedSubject.next(statusSettings);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
ListenStatusService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ListenStatusService, deps: [{ token: i1.StatusRequestService }, { token: i2.CheckStatusService }, { token: i3.WebsocketStatusService }, { token: i4.UserBehaviourAnalyticsService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
117
|
-
ListenStatusService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ListenStatusService, providedIn: 'root' });
|
|
118
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ListenStatusService, decorators: [{
|
|
119
|
-
type: Injectable,
|
|
120
|
-
args: [{
|
|
121
|
-
providedIn: 'root',
|
|
122
|
-
}]
|
|
123
|
-
}], ctorParameters: function () { return [{ type: i1.StatusRequestService }, { type: i2.CheckStatusService }, { type: i3.WebsocketStatusService }, { type: i4.UserBehaviourAnalyticsService }]; } });
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdGVuLXN0YXR1cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGF5bWVudC1jbGllbnQtY29yZS9zcmMvbGliL2NvcmUvcGF5bWVudC9zdGF0dXMvbGlzdGVuLXN0YXR1cy9saXN0ZW4tc3RhdHVzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFjLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFLOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSzVDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtFQUFrRSxDQUFDO0FBQzFHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1GQUFtRixDQUFDOzs7Ozs7QUFLNUgsTUFBTSxPQUFPLG1CQUFtQjtJQVE5QixJQUFXLGdCQUFnQjtRQUN6QixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBRUQsSUFBVyxjQUFjO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFFRCxZQUNtQixhQUFtQyxFQUNuQyxrQkFBc0MsRUFDdEMsc0JBQThDLEVBQzlDLDZCQUE0RDtRQUg1RCxrQkFBYSxHQUFiLGFBQWEsQ0FBc0I7UUFDbkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzlDLGtDQUE2QixHQUE3Qiw2QkFBNkIsQ0FBK0I7UUFuQnhFLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRVYsMkJBQXNCLEdBQUcsSUFBSSxPQUFPLEVBQWtCLENBQUM7UUFDdkQseUJBQW9CLEdBQUcsSUFB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QUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVPLGFBQWEsQ0FBQyxjQUE4QjtRQUNsRCxLQUFLLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyx3QkFBd0IsQ0FDdkQsY0FBYyxDQUFDLFlBQVksRUFDM0IsY0FBYyxDQUFDLG9CQUFvQixFQUNuQyxjQUFjLENBQUMsbUJBQW1CLENBQ25DLENBQUM7UUFDRixJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7O2dIQXpJVSxtQkFBbUI7b0hBQW5CLG1CQUFtQixjQUZsQixNQUFNOzJGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmaWx0ZXIsIE9ic2VydmFibGUsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU3RhdHVzUmVxdWVzdFNlcnZpY2UgfSBmcm9tICcuLi9zdGF0dXMtcmVxdWVzdC9zdGF0dXMtcmVxdWVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IENoZWNrU3RhdHVzU2VydmljZSB9IGZyb20gJy4uL2NoZWNrLXN0YXR1cy9jaGVjay1zdGF0dXMuc2VydmljZSc7XG5pbXBvcnQgeyBXZWJzb2NrZXRTdGF0dXNTZXJ2aWNlIH0gZnJvbSAnLi4vd2Vic29ja2V0LXN0YXR1cy93ZWJzb2NrZXQtc3RhdHVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RhdHVzU2V0dGluZ3MgfSBmcm9tICcuLi9zdGF0dXMtc2V0dGluZ3MuaW50ZXJmYWNlJztcbmltcG9ydCB7IFN0YXR1c0VudW0gfSBmcm9tICcuLi9zdGF0dXMuZW51bSc7XG5pbXBvcnQgeyBTdGF0dXNVcGRhdGVkIH0gZnJvbSAnLi4vc3RhdHVzLXVwZGF0ZWQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFN0YXR1c1Jlc3BvbnNlIH0gZnJvbSAnLi4vc3RhdHVzLXJlcXVlc3QvcmVzcG9uc2Uvc3RhdHVzLXJlc3BvbnNlLmNsYXNzJztcbmltcG9ydCB7IENoZWNrU3RhdHVzUmVzcG9uc2UgfSBmcm9tICcuLi9jaGVjay1zdGF0dXMvcmVzcG9uc2UvY2hlY2stc3RhdHVzLXJlc3BvbnNlLmNsYXNzJztcbmltcG9ydCB7IFVzZXJCZWhhdmlvdXJBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vdXNlci1iZWhhdmlvdXItYW5hbHl0aWNzL3VzZXItYmVoYXZpb3VyLWFuYWx5dGljcy5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJCZWhhdmlvdXJFdmVudE5hbWUgfSBmcm9tICcuLi8uLi8uLi91c2VyLWJlaGF2aW91ci1hbmFseXRpY3MvdXNlci1iZWhhdmlvdXItZXZlbnQtbmFtZS5lbnVtJztcbmltcG9ydCB7IHVzZXJCZWhhdmlvdXJFdmVudFR5cGVzIH0gZnJvbSAnLi4vLi4vLi4vdXNlci1iZWhhdmlvdXItYW5hbHl0aWNzL3VzZXItYmVoYXZpb3VyLWV2ZW50L3VzZXItYmVoYXZpb3VyLWV2ZW50LXR5cGVzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIExpc3RlblN0YXR1c1NlcnZpY2Uge1xuICBwdWJsaWMgaXNMaXN0ZW5pbmcgPSBmYWxzZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHdlYnNvY2tldE9wZW5lZFN1YmplY3QgPSBuZXcgU3ViamVjdDxTdGF0dXNTZXR0aW5ncz4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzdGF0dXNVcGRhdGVkU3ViamVjdCA9IG5ldyBTdWJqZWN0PFN0YXR1c1VwZGF0ZWQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3RhdHVzRG9uZVN1YmplY3QgPSBuZXcgU3ViamVjdDxTdGF0dXNTZXR0aW5ncz4oKTtcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHVibGljIGdldCB3ZWJzb2NrZXRPcGVuZWQkKCk6IE9ic2VydmFibGU8U3RhdHVzU2V0dGluZ3M+IHtcbiAgICByZXR1cm4gdGhpcy53ZWJzb2NrZXRPcGVuZWRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBzdGF0dXNVcGRhdGVkJCgpOiBPYnNlcnZhYmxlPFN0YXR1c1VwZGF0ZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5zdGF0dXNVcGRhdGVkU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0YXR1c1NlcnZpY2U6IFN0YXR1c1JlcXVlc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hlY2tTdGF0dXNTZXJ2aWNlOiBDaGVja1N0YXR1c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB3ZWJzb2NrZXRTdGF0dXNTZXJ2aWNlOiBXZWJzb2NrZXRTdGF0dXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlckJlaGF2aW91ckFuYWx5dGljc1NlcnZpY2U6IFVzZXJCZWhhdmlvdXJBbmFseXRpY3NTZXJ2aWNlXG4gICkge31cblxuICBwdWJsaWMgbGlzdGVuKGludm9pY2U6IG51bWJlcik6IE9ic2VydmFibGU8U3RhdHVzU2V0dGluZ3M+IHtcbiAgICBpZiAodGhpcy5pc0xpc3RlbmluZykge1xuICAgICAgdGhpcy5zdG9wTGlzdGVuaW5nKCk7XG4gICAgfVxuXG4gICAgdGhpcy5kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgdGhpcy5pc0xpc3RlbmluZyA9IHRydWU7XG5cbiAgICB0aGlzLnN1YnNjcmliZVN0YXR1c1VwZGF0ZShpbnZvaWNlKTtcbiAgICB0aGlzLnN1YnNjcmliZUNoZWNrU3RhdHVzVXBkYXRlKCk7XG4gICAgdGhpcy5zdWJzY3JpYmVXZWJzb2NrZXRFdmVudCgpO1xuXG4gICAgdGhpcy5jaGVja1N0YXR1c1NlcnZpY2Uuc2V0UmVxdWVzdFBhcmFtcyhpbnZvaWNlKTtcblxuICAgIHJldHVybiB0aGlzLnN0YXR1c0RvbmVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIHN0b3BMaXN0ZW5pbmcoKTogdm9pZCB7XG4gICAgdGhpcy5pc0xpc3RlbmluZyA9IGZhbHNlO1xuICAgIHRoaXMud2Vic29ja2V0U3RhdHVzU2VydmljZS5jbG9zZVdlYlNvY2tldCgpO1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3Vic2NyaWJlU3RhdHVzVXBkYXRlKGludm9pY2U6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuc3RhdHVzU2VydmljZS5yZXNwb25zZSRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKHN0YXR1c1Jlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHN0YXR1c1Jlc3BvbnNlPy5zdGF0dXM/Lmludm9pY2UgPT09IE51bWJlcihpbnZvaWNlKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoc3RhdHVzUmVzcG9uc2U6IFN0YXR1c1Jlc3BvbnNlIHwgbnVsbCkgPT4ge1xuICAgICAgICBpZiAoIXN0YXR1c1Jlc3BvbnNlPy5zdGF0dXMpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzdGF0dXNTZXR0aW5ncyA9IHtcbiAgICAgICAgICBzdGF0dXNTdGF0ZTogc3RhdHVzUmVzcG9uc2Uuc3RhdHVzLnN0YXR1c1N0YXRlLFxuICAgICAgICAgIGlzQ2FuY2VsVXNlcjogc3RhdHVzUmVzcG9uc2Uuc3RhdHVzLmlzQ2FuY2VsVXNlcixcbiAgICAgICAgICBuZWVkV2ViU29ja2V0OiBzdGF0dXNSZXNwb25zZS5zdGF0dXMubmVlZFRvQ2hlY2ssXG4gICAgICAgICAgYmFja1VybFNldHRpbmdzOiBzdGF0dXNSZXNwb25zZS5zdGF0dXMuYmFja1VybFNldHRpbmdzLFxuICAgICAgICAgIGF1dG9SZWRpcmVjdDogc3RhdHVzUmVzcG9uc2Uuc3RhdHVzLmF1dG9SZWRpcmVjdCxcbiAgICAgICAgICB3ZWJTb2NrZXRVcmw6IHN0YXR1c1Jlc3BvbnNlLnN0YXR1cy53ZWJTb2NrZXRVcmwsXG4gICAgICAgICAgd2ViU29ja2V0Q2hhbm5lbE5hbWU6IHN0YXR1c1Jlc3BvbnNlLnN0YXR1cy53ZWJTb2NrZXRDaGFubmVsTmFtZSxcbiAgICAgICAgICB3ZWJTb2NrZXRDbGllbnRUeXBlOiBzdGF0dXNSZXNwb25zZS5zdGF0dXMud2ViU29ja2V0Q2xpZW50VHlwZSxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnN0YXR1c1VwZGF0ZWRTdWJqZWN0Lm5leHQoe1xuICAgICAgICAgIHN0YXR1c1Jlc3BvbnNlOiBzdGF0dXNSZXNwb25zZSxcbiAgICAgICAgICBzdGF0dXNTZXR0aW5nczogc3RhdHVzU2V0dGluZ3MsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGlzU3RhdHVzRXJyb3IgPVxuICAgICAgICAgIHN0YXR1c1NldHRpbmdzLnN0YXR1c1N0YXRlID09PSBTdGF0dXNFbnVtLmNhbmNlbGVkIHx8XG4gICAgICAgICAgc3RhdHVzU2V0dGluZ3Muc3RhdHVzU3RhdGUgPT09IFN0YXR1c0VudW0uZXJyb3IgfHxcbiAgICAgICAgICBzdGF0dXNTZXR0aW5ncy5pc0NhbmNlbFVzZXI7XG5cbiAgICAgICAgaWYgKGlzU3RhdHVzRXJyb3IpIHtcbiAgICAgICAgICB0aGlzLnVzZXJCZWhhdmlvdXJBbmFseXRpY3NTZXJ2aWNlLnNlbmQoXG4gICAgICAgICAgICBVc2VyQmVoYXZpb3VyRXZlbnROYW1lLm9wZW5TdGF0dXNFcnJvcixcbiAgICAgICAgICAgIHVzZXJCZWhhdmlvdXJFdmVudFR5cGVzLm1hbnVhbCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaW5zdGFuY2VJZDogc3RhdHVzUmVzcG9uc2Uuc3RhdHVzLnBpZCxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0YXR1c1NldHRpbmdzLm5lZWRXZWJTb2NrZXQpIHtcbiAgICAgICAgICB0aGlzLm9wZW5XZWJzb2NrZXQoc3RhdHVzU2V0dGluZ3MpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3RvcExpc3RlbmluZygpO1xuICAgICAgICB0aGlzLnN0YXR1c0RvbmVTdWJqZWN0Lm5leHQoc3RhdHVzU2V0dGluZ3MpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZUNoZWNrU3RhdHVzVXBkYXRlKCk6IHZvaWQge1xuICAgIHRoaXMuY2hlY2tTdGF0dXNTZXJ2aWNlLnJlc3BvbnNlJFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoY2hlY2tTdGF0dXNSZXNwb25zZTogQ2hlY2tTdGF0dXNSZXNwb25zZSB8IG51bGwpID0+IHtcbiAgICAgICAgaWYgKCFjaGVja1N0YXR1c1Jlc3BvbnNlPy5zdGF0dXMpIHJldHVybjtcblxuICAgICAgICBpZiAoY2hlY2tTdGF0dXNSZXNwb25zZS5zdGF0dXMgPT09IFN0YXR1c0VudW0uZG9uZSkge1xuICAgICAgICAgIHRoaXMuc3RhdHVzU2VydmljZS5yZXF1ZXN0KCk7XG4gICAgICAgICAgdGhpcy53ZWJzb2NrZXRTdGF0dXNTZXJ2aWNlLmNsb3NlV2ViU29ja2V0KCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoZWNrU3RhdHVzUmVzcG9uc2UuZmluYWwgPT09IGZhbHNlKSB7XG4gICAgICAgICAgdGhpcy53ZWJzb2NrZXRTdGF0dXNTZXJ2aWNlLnN0YXJ0UmVpbnN1cmFuY2VDaGVja1RpbWVvdXQoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVXZWJzb2NrZXRFdmVudCgpOiB2b2lkIHtcbiAgICB0aGlzLndlYnNvY2tldFN0YXR1c1NlcnZpY2UubmVlZENoZWNrU3RhdHVzJFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNoZWNrU3RhdHVzU2VydmljZS5yZXF1ZXN0KCkpO1xuXG4gICAgdGhpcy53ZWJzb2NrZXRTdGF0dXNTZXJ2aWNlLnN0YXR1c0NoYW5nZWQkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuc3RhdHVzU2VydmljZS5yZXF1ZXN0KCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuV2Vic29ja2V0KHN0YXR1c1NldHRpbmdzOiBTdGF0dXNTZXR0aW5ncyk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy53ZWJzb2NrZXRTdGF0dXNTZXJ2aWNlLmNoZWNrU3RhdHVzV2l0aFdlYlNvY2tldChcbiAgICAgIHN0YXR1c1NldHRpbmdzLndlYlNvY2tldFVybCxcbiAgICAgIHN0YXR1c1NldHRpbmdzLndlYlNvY2tldENoYW5uZWxOYW1lLFxuICAgICAgc3RhdHVzU2V0dGluZ3Mud2ViU29ja2V0Q2xpZW50VHlwZVxuICAgICk7XG4gICAgdGhpcy53ZWJzb2NrZXRPcGVuZWRTdWJqZWN0Lm5leHQoc3RhdHVzU2V0dGluZ3MpO1xuICB9XG59XG4iXX0=
|