@xsolla/payment-client-core 0.2.21 → 0.2.23
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 +73 -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/esm2022/lib/core/payment/actions/show-qr-code/show-qr-code.action.class.mjs +27 -0
- package/{esm2020 → esm2022}/lib/core/payment/actions/show-qr-code/show-qr-code.action.type.mjs +1 -1
- 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/{esm2020 → esm2022}/lib/core/payment/form-messages/form-messages.service.mjs +5 -5
- 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/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.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/{esm2020 → esm2022}/lib/core-library.service.mjs +5 -5
- 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/{fesm2020 → fesm2022}/xsolla-payment-client-core.mjs +458 -455
- package/fesm2022/xsolla-payment-client-core.mjs.map +1 -0
- package/lib/core/payment/actions/show-qr-code/show-qr-code.action.type.d.ts +2 -0
- package/package.json +10 -16
- package/xsolla-payment-client-core-0.2.23.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/show-qr-code/show-qr-code.action.class.mjs +0 -25
- 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/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 -369
- 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/shared/pipes/unescape-html/unescape-html.pipe.mjs +0 -23
- package/fesm2015/xsolla-payment-client-core.mjs +0 -8138
- 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.21.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/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/payment.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-button-color.type.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}/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/xsolla-payment-client-core.mjs +0 -0
|
@@ -1,369 +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.getInitializeMessages());
|
|
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
|
-
getSubmitButtonText() {
|
|
154
|
-
if (this.data instanceof SubmitResponse) {
|
|
155
|
-
return this.data.parameters.buyData.value;
|
|
156
|
-
}
|
|
157
|
-
if (this.data instanceof InitializeResponse) {
|
|
158
|
-
return this.data.paymentForm?.buyData.value ?? null;
|
|
159
|
-
}
|
|
160
|
-
return null;
|
|
161
|
-
}
|
|
162
|
-
async validate(field) {
|
|
163
|
-
const syncErrors = this.syncService.getSyncValidationErrors(field);
|
|
164
|
-
if (syncErrors) {
|
|
165
|
-
return Promise.resolve(syncErrors);
|
|
166
|
-
}
|
|
167
|
-
return this.syncService.validate(field);
|
|
168
|
-
}
|
|
169
|
-
runThreeDs() {
|
|
170
|
-
if (!isSubmitResponse(this.data)) {
|
|
171
|
-
throw new Error('Should submit form first');
|
|
172
|
-
}
|
|
173
|
-
this.threeDsService.checkThreeDs(this.data);
|
|
174
|
-
}
|
|
175
|
-
getFinanceDetails() {
|
|
176
|
-
return this.financeDetails;
|
|
177
|
-
}
|
|
178
|
-
updateFieldFormState(fieldName, formState) {
|
|
179
|
-
if (this.form) {
|
|
180
|
-
this.formService.updateFieldFormState(this.form, this.fields, fieldName, formState);
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
getFieldFormState(fieldName) {
|
|
184
|
-
return this.formService.getFieldFormState(fieldName);
|
|
185
|
-
}
|
|
186
|
-
async getStatus() {
|
|
187
|
-
if (!isSubmitResponse(this.data)) {
|
|
188
|
-
throw new Error('Should submit form first');
|
|
189
|
-
}
|
|
190
|
-
const params = {
|
|
191
|
-
pid: this.config.paymentMethodId,
|
|
192
|
-
invoice: parseInt(this.data.fixInvoice ?? ''),
|
|
193
|
-
signature: this.data.signature ?? '',
|
|
194
|
-
locale: this.data.fields.find((field) => field.name === 'locale')?.value ??
|
|
195
|
-
'en',
|
|
196
|
-
isSavePaymentAccount: this.isSavingMethodMode
|
|
197
|
-
? "1" /* XpsBoolean.true */
|
|
198
|
-
: "0" /* XpsBoolean.false */,
|
|
199
|
-
};
|
|
200
|
-
return this.statusService.getStatus(params);
|
|
201
|
-
}
|
|
202
|
-
async listenFinalStatus() {
|
|
203
|
-
const { invoice } = await this.getStatus();
|
|
204
|
-
this.statusService
|
|
205
|
-
.listenFinalStatus(invoice)
|
|
206
|
-
.pipe(take(1))
|
|
207
|
-
.subscribe(() => {
|
|
208
|
-
this.nextActionService.emitFlowUpdates(this.checkStatusActionCreator.getActionData());
|
|
209
|
-
});
|
|
210
|
-
}
|
|
211
|
-
getFieldConfig(field) {
|
|
212
|
-
return this.controlConfigService.getConfig(field);
|
|
213
|
-
}
|
|
214
|
-
changeFieldValue(name, value) {
|
|
215
|
-
const formControl = this.form?.get(name);
|
|
216
|
-
formControl?.setValue(value);
|
|
217
|
-
}
|
|
218
|
-
changeFieldState(name, state) {
|
|
219
|
-
const formControl = this.form?.get(name);
|
|
220
|
-
if (!this.form || !formControl) {
|
|
221
|
-
return;
|
|
222
|
-
}
|
|
223
|
-
switch (state) {
|
|
224
|
-
case InputEventName.blur: {
|
|
225
|
-
formControl.markAsTouched();
|
|
226
|
-
this.focusFieldName = null;
|
|
227
|
-
break;
|
|
228
|
-
}
|
|
229
|
-
case InputEventName.focus: {
|
|
230
|
-
formControl.markAsUntouched();
|
|
231
|
-
this.focusFieldName = name;
|
|
232
|
-
break;
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
this.emitFormFieldsStatus(this.form);
|
|
236
|
-
}
|
|
237
|
-
addExtraField(name, value) {
|
|
238
|
-
const isHaveField = this.fields.find((field) => {
|
|
239
|
-
return field.name === name;
|
|
240
|
-
});
|
|
241
|
-
if (isHaveField) {
|
|
242
|
-
this.fields = this.fields.map((field) => {
|
|
243
|
-
if (field.name === name) {
|
|
244
|
-
field.value = value;
|
|
245
|
-
}
|
|
246
|
-
return field;
|
|
247
|
-
});
|
|
248
|
-
return;
|
|
249
|
-
}
|
|
250
|
-
const field = {
|
|
251
|
-
name: name,
|
|
252
|
-
value: value,
|
|
253
|
-
title: '',
|
|
254
|
-
type: 'text',
|
|
255
|
-
example: '',
|
|
256
|
-
isMandatory: "1" /* XpsBoolean.true */,
|
|
257
|
-
isVisible: "0" /* XpsBoolean.false */,
|
|
258
|
-
};
|
|
259
|
-
this.fields.push(field);
|
|
260
|
-
}
|
|
261
|
-
destroy() {
|
|
262
|
-
this.data = null;
|
|
263
|
-
this.financeDetails = null;
|
|
264
|
-
this.form = null;
|
|
265
|
-
this.fields = [];
|
|
266
|
-
this.formDestroy$.next();
|
|
267
|
-
this.destroy$.next();
|
|
268
|
-
this.threeDsService.stopChecking();
|
|
269
|
-
}
|
|
270
|
-
emitFinanceDetails(summary) {
|
|
271
|
-
this.financeDetailsService.emitWithSummary(summary);
|
|
272
|
-
}
|
|
273
|
-
emitCreditCardState(idCardType) {
|
|
274
|
-
this.creditCardStateService.emit({ idCardType });
|
|
275
|
-
}
|
|
276
|
-
emitFormFieldsStatus(form) {
|
|
277
|
-
const formFieldsStatus = {};
|
|
278
|
-
Object.keys(form.controls).forEach((name) => {
|
|
279
|
-
const control = form.controls[name];
|
|
280
|
-
formFieldsStatus[name] = {
|
|
281
|
-
name: name,
|
|
282
|
-
validationStatus: control.status,
|
|
283
|
-
errors: control.errors,
|
|
284
|
-
isFocused: this.focusFieldName === name,
|
|
285
|
-
isTouched: control.touched,
|
|
286
|
-
};
|
|
287
|
-
});
|
|
288
|
-
this.formFieldsStatusSubject.next(formFieldsStatus);
|
|
289
|
-
}
|
|
290
|
-
emitFormMessages(messages) {
|
|
291
|
-
this.formMessagesService.emitOnResponse(messages);
|
|
292
|
-
}
|
|
293
|
-
setupSyncService(form, fields) {
|
|
294
|
-
this.syncService.setup(form, fields);
|
|
295
|
-
this.syncService.data$
|
|
296
|
-
.pipe(takeUntil(this.destroy$))
|
|
297
|
-
.subscribe((response) => {
|
|
298
|
-
this.emitFinanceDetails(response.summary);
|
|
299
|
-
this.emitFormMessages(response.messages);
|
|
300
|
-
this.emitFormResponse(response);
|
|
301
|
-
});
|
|
302
|
-
this.syncService.fieldAsyncValidation$
|
|
303
|
-
.pipe(takeUntil(this.destroy$))
|
|
304
|
-
.subscribe((fieldAsyncValidation) => {
|
|
305
|
-
switch (fieldAsyncValidation.field.name) {
|
|
306
|
-
case FieldNames.cardNumber:
|
|
307
|
-
this.emitCreditCardState(fieldAsyncValidation.response.parameters.idCardType);
|
|
308
|
-
}
|
|
309
|
-
});
|
|
310
|
-
}
|
|
311
|
-
listenFinanceDetails() {
|
|
312
|
-
this.financeDetailsService.data$
|
|
313
|
-
.pipe(takeUntil(this.destroy$))
|
|
314
|
-
.subscribe((financeDetails) => (this.financeDetails = financeDetails));
|
|
315
|
-
}
|
|
316
|
-
listenFormStatusChanges(form) {
|
|
317
|
-
form.statusChanges
|
|
318
|
-
.pipe(takeUntil(this.formDestroy$))
|
|
319
|
-
.subscribe((status) => {
|
|
320
|
-
this.emitFormFieldsStatus(form);
|
|
321
|
-
this._paymentForm$.next(status);
|
|
322
|
-
});
|
|
323
|
-
}
|
|
324
|
-
/*
|
|
325
|
-
* in case the form pid changes despite the one passed during initialization
|
|
326
|
-
* */
|
|
327
|
-
updatePidConfig() {
|
|
328
|
-
const currentPid = this.getPid();
|
|
329
|
-
if (currentPid) {
|
|
330
|
-
this.config.paymentMethodId = currentPid;
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
emitFormResponse(data) {
|
|
334
|
-
let type;
|
|
335
|
-
if (data instanceof InitializeResponse) {
|
|
336
|
-
type = 'initialize';
|
|
337
|
-
}
|
|
338
|
-
else if (data instanceof SubmitResponse) {
|
|
339
|
-
type = 'submit';
|
|
340
|
-
}
|
|
341
|
-
else {
|
|
342
|
-
type = 'sync';
|
|
343
|
-
}
|
|
344
|
-
this._formResponse$.next({
|
|
345
|
-
type,
|
|
346
|
-
data,
|
|
347
|
-
token: this.settingsService.token,
|
|
348
|
-
isSandbox: this.settingsService.isSandboxMode(),
|
|
349
|
-
});
|
|
350
|
-
}
|
|
351
|
-
getInitializeMessages() {
|
|
352
|
-
const messages = this.data.paymentForm?.messages;
|
|
353
|
-
const koreaNotification = this.data.paymentForm
|
|
354
|
-
?.koreaNotification;
|
|
355
|
-
if (koreaNotification) {
|
|
356
|
-
messages?.push({ code: '0', message: koreaNotification?.title });
|
|
357
|
-
}
|
|
358
|
-
return messages ?? [];
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
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 });
|
|
362
|
-
PaymentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: PaymentService, providedIn: 'root' });
|
|
363
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: PaymentService, decorators: [{
|
|
364
|
-
type: Injectable,
|
|
365
|
-
args: [{
|
|
366
|
-
providedIn: 'root',
|
|
367
|
-
}]
|
|
368
|
-
}], 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 }]; } });
|
|
369
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGF5bWVudC1jbGllbnQtY29yZS9zcmMvbGliL2NvcmUvcGF5bWVudC9wYXltZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGVBQWUsRUFFZixPQUFPLEVBQ1AsTUFBTSxFQUNOLFNBQVMsRUFDVCxJQUFJLEdBQ0wsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUV6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQWVyRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUlqRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQWNoRCxNQUFNLE9BQU8sY0FBYztJQUd6QixJQUFXLGlCQUFpQjtRQUMxQixPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELElBQVcsWUFBWTtRQUNyQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELElBQVcsaUJBQWlCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLGNB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QUFkLGNBQWMsY0FGYixNQUFNOzJGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBPYnNlcnZhYmxlLFxuICBTdWJqZWN0LFxuICBmaWx0ZXIsXG4gIHRha2VVbnRpbCxcbiAgdGFrZSxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbFN0YXR1cywgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1Ym1pdFJlc3BvbnNlIH0gZnJvbSAnLi9zdWJtaXQvcmVzcG9uc2Uvc3VibWl0LXJlc3BvbnNlLmNsYXNzJztcbmltcG9ydCB7IEZvcm1TZXJ2aWNlIH0gZnJvbSAnLi9mb3JtL2Zvcm0uc2VydmljZSc7XG5pbXBvcnQgeyBJbml0aWFsaXplUmVzcG9uc2UgfSBmcm9tICcuL2luaXRpYWxpemUvcmVzcG9uc2UvaW5pdGlhbGl6ZS1yZXNwb25zZS5jbGFzcyc7XG5pbXBvcnQgeyBJbml0aWFsaXplU2VydmljZSB9IGZyb20gJy4vaW5pdGlhbGl6ZS9pbml0aWFsaXplLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RhdHVzIH0gZnJvbSAnLi9zdGF0dXMvc3RhdHVzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTdWJtaXRTZXJ2aWNlIH0gZnJvbSAnLi9zdWJtaXQvc3VibWl0LnNlcnZpY2UnO1xuaW1wb3J0IHsgU3luY1NlcnZpY2UgfSBmcm9tICcuL3N5bmMvc3luYy5zZXJ2aWNlJztcbmltcG9ydCB7IFN0YXR1c1NlcnZpY2UgfSBmcm9tICcuL3N0YXR1cy9zdGF0dXMuc2VydmljZSc7XG5pbXBvcnQgeyBOZXh0QWN0aW9uU2VydmljZSB9IGZyb20gJy4vYWN0aW9ucy9uZXh0LWFjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRyb2xDb25maWcgfSBmcm9tICcuL2Zvcm0vY29udHJvbHMvY29udHJvbC1jb25maWcnO1xuaW1wb3J0IHsgQ29udHJvbENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL2Zvcm0vY29udHJvbHMvY29udHJvbC1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBGaW5hbmNlRGV0YWlscyB9IGZyb20gJy4vZmluYW5jZS1kZXRhaWxzL2ZpbmFuY2UtZGV0YWlscy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmluYW5jZURldGFpbHNTZXJ2aWNlIH0gZnJvbSAnLi9maW5hbmNlLWRldGFpbHMvZmluYW5jZS1kZXRhaWxzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmV4dEFjdGlvbiB9IGZyb20gJy4vYWN0aW9ucy9uZXh0LWFjdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgWHBzU3VtbWFyeSB9IGZyb20gJy4veHBzLXN1bW1hcnkuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZpZWxkIH0gZnJvbSAnLi9maWVsZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUGF5bWVudENvbmZpZyB9IGZyb20gJy4vcGF5bWVudC1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IGlzU3VibWl0UmVzcG9uc2UgfSBmcm9tICcuL3N1Ym1pdC9yZXNwb25zZS9pcy1zdWJtaXQtcmVzcG9uc2UuZnVuY3Rpb24nO1xuaW1wb3J0IHsgWHBzQm9vbGVhbiB9IGZyb20gJy4uL3hwcy1ib29sZWFuLmVudW0nO1xuaW1wb3J0IHsgU3RhdHVzUmVxdWVzdFBhcmFtcyB9IGZyb20gJy4vc3RhdHVzL3N0YXR1cy1yZXF1ZXN0L3N0YXR1cy1yZXF1ZXN0LXBhcmFtcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJy4vZm9ybS92YWxpZGF0b3JzL3ZhbGlkYXRpb24tZXJyb3JzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJbnB1dEV2ZW50TmFtZSB9IGZyb20gJy4vZm9ybS9pbnB1dC1ldmVudC5lbnVtJztcbmltcG9ydCB7IEZvcm1GaWVsZHNTdGF0dXMgfSBmcm9tICcuL2Zvcm0vZm9ybS1maWVsZHMtc3RhdHVzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBUaHJlZURzU2VydmljZSB9IGZyb20gJy4vdGhyZWUtZHMvdGhyZWUtZHMuc2VydmljZSc7XG5pbXBvcnQgeyBYcHNDb21tYW5kIH0gZnJvbSAnLi94cHMtY29tYW5kLmVudW0nO1xuaW1wb3J0IHsgQ3JlZGl0Q2FyZFN0YXRlU2VydmljZSB9IGZyb20gJy4vY3JlZGl0LWNhcmQtc3RhdGUvY3JlZGl0LWNhcmQtc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBGaWVsZE5hbWVzIH0gZnJvbSAnLi9maWVsZC1uYW1lcy5lbnVtJztcbmltcG9ydCB7IEZvcm1TdGF0ZSB9IGZyb20gJy4vZm9ybS9mb3JtLXN0YXRlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGb3JtTWVzc2FnZXNTZXJ2aWNlIH0gZnJvbSAnLi9mb3JtLW1lc3NhZ2VzL2Zvcm0tbWVzc2FnZXMuc2VydmljZSc7XG5pbXBvcnQgeyBYcHNNZXNzYWdlIH0gZnJvbSAnLi94cHMtbWVzc2FnZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vc2V0dGluZ3Mvc2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBDb3VudHJ5U2VydmljZSB9IGZyb20gJy4uL2NvdW50cnkvY291bnRyeS5zZXJ2aWNlJztcbmltcG9ydCB7IFNka1BheW1lbnRTeXN0ZW1zSW5pdGlhbERhdGEgfSBmcm9tICcuLi9zZGstcGF5bWVudC1zeXN0ZW1zL3Nkay1wYXltZW50LXN5c3RlbXMtaW5pdGlhbC1kYXRhLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGb3JtUmVzcG9uc2UgfSBmcm9tICcuL2Zvcm0tcmVzcG9uc2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IENoZWNrU3RhdHVzQWN0aW9uQ3JlYXRvciB9IGZyb20gJy4vYWN0aW9ucy9jaGVjay1zdGF0dXMvY2hlY2stc3RhdHVzLmFjdGlvbi5jbGFzcyc7XG5pbXBvcnQgeyBDb250cm9sU3RhdHVzIH0gZnJvbSAnLi9mb3JtL2NvbnRyb2wtc3RhdHVzLmludGVyZmFjZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBQYXltZW50U2VydmljZSB7XG4gIHB1YmxpYyBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwIHwgbnVsbCA9IG51bGw7XG5cbiAgcHVibGljIGdldCBmb3JtRmllbGRzU3RhdHVzJCgpOiBPYnNlcnZhYmxlPEZvcm1GaWVsZHNTdGF0dXM+IHtcbiAgICByZXR1cm4gdGhpcy5mb3JtRmllbGRzU3RhdHVzU3ViamVjdC5hc09ic2VydmFibGUoKS5waXBlKGZpbHRlcihCb29sZWFuKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBheW1lbnRGb3JtJCgpOiBPYnNlcnZhYmxlPEZvcm1Db250cm9sU3RhdHVzIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9wYXltZW50Rm9ybSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZvcm1SZXNwb25zZSQoKTogT2JzZXJ2YWJsZTxGb3JtUmVzcG9uc2UgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1SZXNwb25zZSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZvcm1SZXNwb25zZVZhbHVlKCk6IEZvcm1SZXNwb25zZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9mb3JtUmVzcG9uc2UkLmdldFZhbHVlKCk7XG4gIH1cblxuICBwcml2YXRlIGRhdGE6IEluaXRpYWxpemVSZXNwb25zZSB8IFN1Ym1pdFJlc3BvbnNlIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgZmluYW5jZURldGFpbHM6IEZpbmFuY2VEZXRhaWxzIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgZm9jdXNGaWVsZE5hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGZpZWxkczogRmllbGRbXSA9IFtdO1xuICBwcml2YXRlIGNvbmZpZyE6IFBheW1lbnRDb25maWc7XG5cbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgZm9ybURlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGF5bWVudEZvcm0kID1cbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PEZvcm1Db250cm9sU3RhdHVzIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZm9ybUZpZWxkc1N0YXR1c1N1YmplY3QgPVxuICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8Rm9ybUZpZWxkc1N0YXR1cyB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9mb3JtUmVzcG9uc2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGb3JtUmVzcG9uc2UgfCBudWxsPihcbiAgICBudWxsXG4gICk7XG5cbiAgcHJpdmF0ZSBpc1NhdmluZ01ldGhvZE1vZGUgPSBmYWxzZTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbml0aWFsaXplU2VydmljZTogSW5pdGlhbGl6ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdWJtaXRTZXJ2aWNlOiBTdWJtaXRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3luY1NlcnZpY2U6IFN5bmNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybVNlcnZpY2U6IEZvcm1TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RhdHVzU2VydmljZTogU3RhdHVzU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZpbmFuY2VEZXRhaWxzU2VydmljZTogRmluYW5jZURldGFpbHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY3JlZGl0Q2FyZFN0YXRlU2VydmljZTogQ3JlZGl0Q2FyZFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5leHRBY3Rpb25TZXJ2aWNlOiBOZXh0QWN0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnRyb2xDb25maWdTZXJ2aWNlOiBDb250cm9sQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRocmVlRHNTZXJ2aWNlOiBUaHJlZURzU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1NZXNzYWdlc1NlcnZpY2U6IEZvcm1NZXNzYWdlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZXR0aW5nc1NlcnZpY2U6IFNldHRpbmdzU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvdW50cnlTZXJ2aWNlOiBDb3VudHJ5U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNoZWNrU3RhdHVzQWN0aW9uQ3JlYXRvcjogQ2hlY2tTdGF0dXNBY3Rpb25DcmVhdG9yXG4gICkge31cblxuICBwdWJsaWMgYXN5bmMgaW5pdGlhbGl6ZShjb25maWc6IFBheW1lbnRDb25maWcpOiBQcm9taXNlPEZpZWxkW10+IHtcbiAgICB0aGlzLmRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICB0aGlzLmZvcm1EZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICB0aGlzLmxpc3RlbkZpbmFuY2VEZXRhaWxzKCk7XG5cbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLmRhdGEgPSBhd2FpdCB0aGlzLmluaXRpYWxpemVTZXJ2aWNlLnJlcXVlc3QoY29uZmlnKTtcbiAgICB0aGlzLmVtaXRGb3JtUmVzcG9uc2UodGhpcy5kYXRhKTtcblxuICAgIHRoaXMuZmllbGRzID0gdGhpcy5nZXRGaWVsZHMoKTtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1TZXJ2aWNlLmNyZWF0ZUZvcm0odGhpcy5maWVsZHMpO1xuXG4gICAgdGhpcy51cGRhdGVQaWRDb25maWcoKTtcbiAgICB0aGlzLnNldHVwU3luY1NlcnZpY2UodGhpcy5mb3JtLCB0aGlzLmZpZWxkcyk7XG4gICAgdGhpcy5saXN0ZW5Gb3JtU3RhdHVzQ2hhbmdlcyh0aGlzLmZvcm0pO1xuXG4gICAgdGhpcy5lbWl0RmluYW5jZURldGFpbHModGhpcy5kYXRhLnBheW1lbnRGb3JtPy5zdW1tYXJ5KTtcbiAgICB0aGlzLmVtaXRGb3JtRmllbGRzU3RhdHVzKHRoaXMuZm9ybSk7XG5cbiAgICB0aGlzLmVtaXRGb3JtTWVzc2FnZXModGhpcy5nZXRJbml0aWFsaXplTWVzc2FnZXMoKSk7XG5cbiAgICByZXR1cm4gdGhpcy5maWVsZHMuZmlsdGVyKFxuICAgICAgKGZpZWxkOiBGaWVsZCkgPT4gZmllbGQ/LmlzVmlzaWJsZSA9PT0gWHBzQm9vbGVhbi50cnVlXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzdWJtaXQoKTogUHJvbWlzZTxOZXh0QWN0aW9uIHwgbnVsbCB8IHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuZm9ybSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdmb3JtIGlzIGVtcHR5IScpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5mb3JtLnZhbGlkKSB7XG4gICAgICB0aGlzLmZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgICAgdGhpcy5lbWl0Rm9ybUZpZWxkc1N0YXR1cyh0aGlzLmZvcm0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaXNTYXZpbmdNZXRob2RNb2RlID0gdGhpcy5maWVsZHMuc29tZShcbiAgICAgICh7IG5hbWUsIHZhbHVlIH0pID0+XG4gICAgICAgIG5hbWUgPT09ICdzYXZlUHNBY2NvdW50T25seScgJiYgdmFsdWUgPT09IFhwc0Jvb2xlYW4udHJ1ZVxuICAgICk7XG4gICAgY29uc3Qgc3VibWl0UmVzcG9uc2UgPSBhd2FpdCB0aGlzLnN1Ym1pdFNlcnZpY2UucmVxdWVzdChcbiAgICAgIHRoaXMuZmllbGRzLFxuICAgICAgdGhpcy5mb3JtXG4gICAgKTtcblxuICAgIHRoaXMuZGF0YSA9IHN1Ym1pdFJlc3BvbnNlO1xuICAgIHRoaXMuZW1pdEZvcm1SZXNwb25zZSh0aGlzLmRhdGEpO1xuXG4gICAgaWYgKCF0aGlzLmlzU2F2aW5nTWV0aG9kTW9kZSkge1xuICAgICAgdGhpcy5lbWl0RmluYW5jZURldGFpbHMoc3VibWl0UmVzcG9uc2Uuc3VtbWFyeSk7XG4gICAgfVxuICAgIHRoaXMuZW1pdEZvcm1NZXNzYWdlcyhzdWJtaXRSZXNwb25zZS5tZXNzYWdlcyk7XG5cbiAgICAvLyBIYW5kbGUgM2RzIGZsb3dcbiAgICBpZiAoXG4gICAgICBzdWJtaXRSZXNwb25zZS5jdXJyZW50Q29tbWFuZCA9PT0gWHBzQ29tbWFuZC5jcmVhdGUgJiZcbiAgICAgIHN1Ym1pdFJlc3BvbnNlLnBhcmFtZXRlcnMudGhyZWVEU0Zvcm1cbiAgICApIHtcbiAgICAgIHRoaXMucnVuVGhyZWVEcygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZmllbGRzID0gdGhpcy5nZXRGaWVsZHMoKTtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1TZXJ2aWNlLmNyZWF0ZUZvcm0odGhpcy5maWVsZHMpO1xuXG4gICAgdGhpcy5zeW5jU2VydmljZS5zZXR1cCh0aGlzLmZvcm0sIHRoaXMuZmllbGRzKTtcblxuICAgIHJldHVybiB0aGlzLm5leHRBY3Rpb25TZXJ2aWNlLmdldE5leHRBY3Rpb24oc3VibWl0UmVzcG9uc2UpO1xuICB9XG5cbiAgcHVibGljIGdldEZpZWxkcygpOiBGaWVsZFtdIHtcbiAgICBpZiAodGhpcy5kYXRhIGluc3RhbmNlb2YgU3VibWl0UmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGEuZmllbGRzID8/IFtdO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmRhdGE/LnBheW1lbnRGb3JtPy5maWVsZHMgPz8gW107XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29udHJvbFN0YXR1cyhuYW1lOiBGaWVsZE5hbWVzKTogQ29udHJvbFN0YXR1cyB8IG51bGwge1xuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm0/LmdldChuYW1lKTtcbiAgICBpZiAoIWNvbnRyb2wpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBuYW1lLFxuICAgICAgZXJyb3JzOiBjb250cm9sLmVycm9ycyxcbiAgICAgIHN0YXR1czogY29udHJvbC5zdGF0dXMsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRJbml0aWFsRGF0YUZvclNka1BheW1lbnRTeXN0ZW1zKCk6IFNka1BheW1lbnRTeXN0ZW1zSW5pdGlhbERhdGEge1xuICAgIGlmICghaXNTdWJtaXRSZXNwb25zZSh0aGlzLmRhdGEpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Nob3VsZCBzdWJtaXQgZm9ybSBmaXJzdCcpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkYXRhOiB0aGlzLmRhdGEucGFyYW1ldGVycy5jaGVja291dC5kYXRhLmRhdGEsXG4gICAgICBzYW5kYm94OiB0aGlzLnNldHRpbmdzU2VydmljZS5pc1NhbmRib3hNb2RlKClcbiAgICAgICAgPyBYcHNCb29sZWFuLnRydWVcbiAgICAgICAgOiBYcHNCb29sZWFuLmZhbHNlLFxuICAgICAgY291bnRyeTogdGhpcy5jb3VudHJ5U2VydmljZS5nZXRDb3VudHJ5KCksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRRckNvZGUoKTogc3RyaW5nIHtcbiAgICBpZiAoIWlzU3VibWl0UmVzcG9uc2UodGhpcy5kYXRhKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTaG91bGQgc3VibWl0IGZvcm0gZmlyc3QnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5kYXRhLnBhcmFtZXRlcnMuZm9ybS5xci50aXRsZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRQaWQoKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMuZGF0YSBpbnN0YW5jZW9mIFN1Ym1pdFJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBOdW1iZXIoXG4gICAgICAgICAgdGhpcy5kYXRhLmZpZWxkcy5maW5kKChmaWVsZCkgPT4gZmllbGQubmFtZSA9PT0gJ2ZpeF9waWQnKT8udmFsdWVcbiAgICAgICAgKSB8fCBudWxsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRhdGEgaW5zdGFuY2VvZiBJbml0aWFsaXplUmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIE51bWJlcihcbiAgICAgICAgICB0aGlzLmRhdGEucGF5bWVudEZvcm0/LmZpZWxkcy5maW5kKFxuICAgICAgICAgICAgKGZpZWxkKSA9PiBmaWVsZC5uYW1lID09PSAnZml4X3BpZCdcbiAgICAgICAgICApPy52YWx1ZVxuICAgICAgICApIHx8IG51bGxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwdWJsaWMgZ2V0U3VibWl0QnV0dG9uVGV4dCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAodGhpcy5kYXRhIGluc3RhbmNlb2YgU3VibWl0UmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGEucGFyYW1ldGVycy5idXlEYXRhLnZhbHVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRhdGEgaW5zdGFuY2VvZiBJbml0aWFsaXplUmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGEucGF5bWVudEZvcm0/LmJ1eURhdGEudmFsdWUgPz8gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB2YWxpZGF0ZShmaWVsZDogRmllbGQpOiBQcm9taXNlPFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPiB7XG4gICAgY29uc3Qgc3luY0Vycm9ycyA9IHRoaXMuc3luY1NlcnZpY2UuZ2V0U3luY1ZhbGlkYXRpb25FcnJvcnMoZmllbGQpO1xuXG4gICAgaWYgKHN5bmNFcnJvcnMpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoc3luY0Vycm9ycyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3luY1NlcnZpY2UudmFsaWRhdGUoZmllbGQpO1xuICB9XG5cbiAgcHVibGljIHJ1blRocmVlRHMoKTogdm9pZCB7XG4gICAgaWYgKCFpc1N1Ym1pdFJlc3BvbnNlKHRoaXMuZGF0YSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU2hvdWxkIHN1Ym1pdCBmb3JtIGZpcnN0Jyk7XG4gICAgfVxuXG4gICAgdGhpcy50aHJlZURzU2VydmljZS5jaGVja1RocmVlRHModGhpcy5kYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGaW5hbmNlRGV0YWlscygpOiBGaW5hbmNlRGV0YWlscyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmZpbmFuY2VEZXRhaWxzO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUZpZWxkRm9ybVN0YXRlKGZpZWxkTmFtZTogc3RyaW5nLCBmb3JtU3RhdGU6IEZvcm1TdGF0ZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZvcm0pIHtcbiAgICAgIHRoaXMuZm9ybVNlcnZpY2UudXBkYXRlRmllbGRGb3JtU3RhdGUoXG4gICAgICAgIHRoaXMuZm9ybSxcbiAgICAgICAgdGhpcy5maWVsZHMsXG4gICAgICAgIGZpZWxkTmFtZSxcbiAgICAgICAgZm9ybVN0YXRlXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRGaWVsZEZvcm1TdGF0ZShmaWVsZE5hbWU6IEZpZWxkTmFtZXMpOiBGb3JtU3RhdGUgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtU2VydmljZS5nZXRGaWVsZEZvcm1TdGF0ZShmaWVsZE5hbWUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFN0YXR1cygpOiBQcm9taXNlPFN0YXR1cz4ge1xuICAgIGlmICghaXNTdWJtaXRSZXNwb25zZSh0aGlzLmRhdGEpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Nob3VsZCBzdWJtaXQgZm9ybSBmaXJzdCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmFtczogU3RhdHVzUmVxdWVzdFBhcmFtcyA9IHtcbiAgICAgIHBpZDogdGhpcy5jb25maWcucGF5bWVudE1ldGhvZElkLFxuICAgICAgaW52b2ljZTogcGFyc2VJbnQodGhpcy5kYXRhLmZpeEludm9pY2UgPz8gJycpLFxuICAgICAgc2lnbmF0dXJlOiB0aGlzLmRhdGEuc2lnbmF0dXJlID8/ICcnLFxuICAgICAgbG9jYWxlOlxuICAgICAgICB0aGlzLmRhdGEuZmllbGRzLmZpbmQoKGZpZWxkKSA9PiBmaWVsZC5uYW1lID09PSAnbG9jYWxlJyk/LnZhbHVlID8/XG4gICAgICAgICdlbicsXG4gICAgICBpc1NhdmVQYXltZW50QWNjb3VudDogdGhpcy5pc1NhdmluZ01ldGhvZE1vZGVcbiAgICAgICAgPyBYcHNCb29sZWFuLnRydWVcbiAgICAgICAgOiBYcHNCb29sZWFuLmZhbHNlLFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuc3RhdHVzU2VydmljZS5nZXRTdGF0dXMocGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsaXN0ZW5GaW5hbFN0YXR1cygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGludm9pY2UgfSA9IGF3YWl0IHRoaXMuZ2V0U3RhdHVzKCk7XG5cbiAgICB0aGlzLnN0YXR1c1NlcnZpY2VcbiAgICAgIC5saXN0ZW5GaW5hbFN0YXR1cyhpbnZvaWNlIGFzIHVua25vd24gYXMgbnVtYmVyKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLm5leHRBY3Rpb25TZXJ2aWNlLmVtaXRGbG93VXBkYXRlcyhcbiAgICAgICAgICB0aGlzLmNoZWNrU3RhdHVzQWN0aW9uQ3JlYXRvci5nZXRBY3Rpb25EYXRhKClcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldEZpZWxkQ29uZmlnKGZpZWxkOiBGaWVsZCk6IENvbnRyb2xDb25maWcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sQ29uZmlnU2VydmljZS5nZXRDb25maWcoZmllbGQpO1xuICB9XG5cbiAgcHVibGljIGNoYW5nZUZpZWxkVmFsdWUobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLmZvcm0/LmdldChuYW1lKTtcbiAgICBmb3JtQ29udHJvbD8uc2V0VmFsdWUodmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGNoYW5nZUZpZWxkU3RhdGUobmFtZTogc3RyaW5nLCBzdGF0ZTogSW5wdXRFdmVudE5hbWUpOiB2b2lkIHtcbiAgICBjb25zdCBmb3JtQ29udHJvbCA9IHRoaXMuZm9ybT8uZ2V0KG5hbWUpO1xuXG4gICAgaWYgKCF0aGlzLmZvcm0gfHwgIWZvcm1Db250cm9sKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3dpdGNoIChzdGF0ZSkge1xuICAgICAgY2FzZSBJbnB1dEV2ZW50TmFtZS5ibHVyOiB7XG4gICAgICAgIGZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgdGhpcy5mb2N1c0ZpZWxkTmFtZSA9IG51bGw7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBJbnB1dEV2ZW50TmFtZS5mb2N1czoge1xuICAgICAgICBmb3JtQ29udHJvbC5tYXJrQXNVbnRvdWNoZWQoKTtcbiAgICAgICAgdGhpcy5mb2N1c0ZpZWxkTmFtZSA9IG5hbWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZW1pdEZvcm1GaWVsZHNTdGF0dXModGhpcy5mb3JtKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRFeHRyYUZpZWxkKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGlzSGF2ZUZpZWxkID0gdGhpcy5maWVsZHMuZmluZCgoZmllbGQpID0+IHtcbiAgICAgIHJldHVybiBmaWVsZC5uYW1lID09PSBuYW1lO1xuICAgIH0pO1xuXG4gICAgaWYgKGlzSGF2ZUZpZWxkKSB7XG4gICAgICB0aGlzLmZpZWxkcyA9IHRoaXMuZmllbGRzLm1hcCgoZmllbGQpID0+IHtcbiAgICAgICAgaWYgKGZpZWxkLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgICAgICBmaWVsZC52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZmllbGQgPSB7XG4gICAgICBuYW1lOiBuYW1lLFxuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgdGl0bGU6ICcnLFxuICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgZXhhbXBsZTogJycsXG4gICAgICBpc01hbmRhdG9yeTogWHBzQm9vbGVhbi50cnVlLFxuICAgICAgaXNWaXNpYmxlOiBYcHNCb29sZWFuLmZhbHNlLFxuICAgIH0gYXMgRmllbGQ7XG5cbiAgICB0aGlzLmZpZWxkcy5wdXNoKGZpZWxkKTtcbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGF0YSA9IG51bGw7XG4gICAgdGhpcy5maW5hbmNlRGV0YWlscyA9IG51bGw7XG4gICAgdGhpcy5mb3JtID0gbnVsbDtcbiAgICB0aGlzLmZpZWxkcyA9IFtdO1xuICAgIHRoaXMuZm9ybURlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcblxuICAgIHRoaXMudGhyZWVEc1NlcnZpY2Uuc3RvcENoZWNraW5nKCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRGaW5hbmNlRGV0YWlscyhzdW1tYXJ5PzogWHBzU3VtbWFyeSk6IHZvaWQge1xuICAgIHRoaXMuZmluYW5jZURldGFpbHNTZXJ2aWNlLmVtaXRXaXRoU3VtbWFyeShzdW1tYXJ5KTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdENyZWRpdENhcmRTdGF0ZShpZENhcmRUeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmNyZWRpdENhcmRTdGF0ZVNlcnZpY2UuZW1pdCh7IGlkQ2FyZFR5cGUgfSk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRGb3JtRmllbGRzU3RhdHVzKGZvcm06IFVudHlwZWRGb3JtR3JvdXApOiB2b2lkIHtcbiAgICBjb25zdCBmb3JtRmllbGRzU3RhdHVzOiBGb3JtRmllbGRzU3RhdHVzID0ge307XG5cbiAgICBPYmplY3Qua2V5cyhmb3JtLmNvbnRyb2xzKS5mb3JFYWNoKChuYW1lKSA9PiB7XG4gICAgICBjb25zdCBjb250cm9sID0gZm9ybS5jb250cm9sc1tuYW1lXTtcbiAgICAgIGZvcm1GaWVsZHNTdGF0dXNbbmFtZV0gPSB7XG4gICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgIHZhbGlkYXRpb25TdGF0dXM6IGNvbnRyb2wuc3RhdHVzLFxuICAgICAgICBlcnJvcnM6IGNvbnRyb2wuZXJyb3JzLFxuICAgICAgICBpc0ZvY3VzZWQ6IHRoaXMuZm9jdXNGaWVsZE5hbWUgPT09IG5hbWUsXG4gICAgICAgIGlzVG91Y2hlZDogY29udHJvbC50b3VjaGVkLFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHRoaXMuZm9ybUZpZWxkc1N0YXR1c1N1YmplY3QubmV4dChmb3JtRmllbGRzU3RhdHVzKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdEZvcm1NZXNzYWdlcyhtZXNzYWdlcz86IFhwc01lc3NhZ2VbXSk6IHZvaWQge1xuICAgIHRoaXMuZm9ybU1lc3NhZ2VzU2VydmljZS5lbWl0T25SZXNwb25zZShtZXNzYWdlcyk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwU3luY1NlcnZpY2UoZm9ybTogVW50eXBlZEZvcm1Hcm91cCwgZmllbGRzOiBGaWVsZFtdKTogdm9pZCB7XG4gICAgdGhpcy5zeW5jU2VydmljZS5zZXR1cChmb3JtLCBmaWVsZHMpO1xuICAgIHRoaXMuc3luY1NlcnZpY2UuZGF0YSRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRoaXMuZW1pdEZpbmFuY2VEZXRhaWxzKHJlc3BvbnNlLnN1bW1hcnkpO1xuICAgICAgICB0aGlzLmVtaXRGb3JtTWVzc2FnZXMocmVzcG9uc2UubWVzc2FnZXMpO1xuICAgICAgICB0aGlzLmVtaXRGb3JtUmVzcG9uc2UocmVzcG9uc2UpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLnN5bmNTZXJ2aWNlLmZpZWxkQXN5bmNWYWxpZGF0aW9uJFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoZmllbGRBc3luY1ZhbGlkYXRpb24pID0+IHtcbiAgICAgICAgc3dpdGNoIChmaWVsZEFzeW5jVmFsaWRhdGlvbi5maWVsZC5uYW1lKSB7XG4gICAgICAgICAgY2FzZSBGaWVsZE5hbWVzLmNhcmROdW1iZXI6XG4gICAgICAgICAgICB0aGlzLmVtaXRDcmVkaXRDYXJkU3RhdGUoXG4gICAgICAgICAgICAgIGZpZWxkQXN5bmNWYWxpZGF0aW9uLnJlc3BvbnNlLnBhcmFtZXRlcnMuaWRDYXJkVHlwZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlbkZpbmFuY2VEZXRhaWxzKCk6IHZvaWQge1xuICAgIHRoaXMuZmluYW5jZURldGFpbHNTZXJ2aWNlLmRhdGEkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKChmaW5hbmNlRGV0YWlscykgPT4gKHRoaXMuZmluYW5jZURldGFpbHMgPSBmaW5hbmNlRGV0YWlscykpO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5Gb3JtU3RhdHVzQ2hhbmdlcyhmb3JtOiBVbnR5cGVkRm9ybUdyb3VwKTogdm9pZCB7XG4gICAgZm9ybS5zdGF0dXNDaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5mb3JtRGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoc3RhdHVzOiBGb3JtQ29udHJvbFN0YXR1cykgPT4ge1xuICAgICAgICB0aGlzLmVtaXRGb3JtRmllbGRzU3RhdHVzKGZvcm0pO1xuICAgICAgICB0aGlzLl9wYXltZW50Rm9ybSQubmV4dChzdGF0dXMpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKlxuICAgKiBpbiBjYXNlIHRoZSBmb3JtIHBpZCBjaGFuZ2VzIGRlc3BpdGUgdGhlIG9uZSBwYXNzZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uXG4gICAqICAqL1xuICBwcml2YXRlIHVwZGF0ZVBpZENvbmZpZygpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50UGlkID0gdGhpcy5nZXRQaWQoKTtcbiAgICBpZiAoY3VycmVudFBpZCkge1xuICAgICAgdGhpcy5jb25maWcucGF5bWVudE1ldGhvZElkID0gY3VycmVudFBpZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGVtaXRGb3JtUmVzcG9uc2UoZGF0YTogRm9ybVJlc3BvbnNlWydkYXRhJ10pOiB2b2lkIHtcbiAgICBsZXQgdHlwZTogRm9ybVJlc3BvbnNlWyd0eXBlJ107XG4gICAgaWYgKGRhdGEgaW5zdGFuY2VvZiBJbml0aWFsaXplUmVzcG9uc2UpIHtcbiAgICAgIHR5cGUgPSAnaW5pdGlhbGl6ZSc7XG4gICAgfSBlbHNlIGlmIChkYXRhIGluc3RhbmNlb2YgU3VibWl0UmVzcG9uc2UpIHtcbiAgICAgIHR5cGUgPSAnc3VibWl0JztcbiAgICB9IGVsc2Uge1xuICAgICAgdHlwZSA9ICdzeW5jJztcbiAgICB9XG4gICAgdGhpcy5fZm9ybVJlc3BvbnNlJC5uZXh0KHtcbiAgICAgIHR5cGUsXG4gICAgICBkYXRhLFxuICAgICAgdG9rZW46IHRoaXMuc2V0dGluZ3NTZXJ2aWNlLnRva2VuLFxuICAgICAgaXNTYW5kYm94OiB0aGlzLnNldHRpbmdzU2VydmljZS5pc1NhbmRib3hNb2RlKCksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldEluaXRpYWxpemVNZXNzYWdlcygpOiBYcHNNZXNzYWdlW10ge1xuICAgIGNvbnN0IG1lc3NhZ2VzID0gKHRoaXMuZGF0YSBhcyBJbml0aWFsaXplUmVzcG9uc2UpLnBheW1lbnRGb3JtPy5tZXNzYWdlcztcbiAgICBjb25zdCBrb3JlYU5vdGlmaWNhdGlvbiA9ICh0aGlzLmRhdGEgYXMgSW5pdGlhbGl6ZVJlc3BvbnNlKS5wYXltZW50Rm9ybVxuICAgICAgPy5rb3JlYU5vdGlmaWNhdGlvbjtcbiAgICBpZiAoa29yZWFOb3RpZmljYXRpb24pIHtcbiAgICAgIG1lc3NhZ2VzPy5wdXNoKHsgY29kZTogJzAnLCBtZXNzYWdlOiBrb3JlYU5vdGlmaWNhdGlvbj8udGl0bGUgfSk7XG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlcyA/PyBbXTtcbiAgfVxufVxuIl19
|
|
@@ -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=
|