@xsolla/payment-client-core 0.2.20 → 0.2.21
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/{esm2022 → esm2020}/lib/core/combined-payment-methods/combined-payment-methods.service.mjs +5 -5
- package/{esm2022 → esm2020}/lib/core/countries-api/countries-api.service.mjs +5 -5
- package/{esm2022 → esm2020}/lib/core/country/country.service.mjs +5 -5
- package/{esm2022 → esm2020}/lib/core/credit-card/credit-card.service.mjs +4 -4
- package/esm2020/lib/core/device-finger-print/device-finger-print.service.mjs +67 -0
- package/{esm2022 → esm2020}/lib/core/edit-saved-methods/edit-saved-methods.service.mjs +5 -5
- package/esm2020/lib/core/encrypt-credit-card/encrypt-credit-card.service.mjs +72 -0
- package/esm2020/lib/core/errors-mapping/xps-response-errors-mapping.service.mjs +52 -0
- package/esm2020/lib/core/exceptions-handling/elk/elk-logger.service.mjs +120 -0
- package/esm2020/lib/core/exceptions-handling/errors/http-error.class.mjs +40 -0
- package/esm2020/lib/core/exceptions-handling/errors/tagged-error.class.mjs +16 -0
- package/{esm2022 → esm2020}/lib/core/exceptions-handling/http-interceptor/http-exceptions.interceptor.mjs +5 -5
- package/esm2020/lib/core/http/secure-api/secure-api.service.mjs +55 -0
- package/{esm2022 → esm2020}/lib/core/legal/disclaimer.service.mjs +4 -4
- package/{esm2022 → esm2020}/lib/core/legal/legal.service.mjs +5 -5
- package/esm2020/lib/core/legal/refund-policy.service.mjs +30 -0
- package/esm2020/lib/core/legal/secure-connection.service.mjs +31 -0
- package/{esm2022 → esm2020}/lib/core/payment/actions/check-status/check-status.action.class.mjs +4 -4
- package/esm2020/lib/core/payment/actions/next-action.service.mjs +61 -0
- package/esm2020/lib/core/payment/actions/redirect/redirect.action.class.mjs +60 -0
- package/{esm2022 → esm2020}/lib/core/payment/actions/show-errors/show-errors.action.class.mjs +4 -4
- package/esm2020/lib/core/payment/actions/show-fields/show-fields.action.class.mjs +37 -0
- package/{esm2022 → esm2020}/lib/core/payment/actions/show-mobile-payment-screen/show-mobile-payment-screen.action.class.mjs +4 -4
- package/{esm2022 → esm2020}/lib/core/payment/actions/show-qr-code/show-qr-code.action.class.mjs +4 -4
- package/{esm2022 → esm2020}/lib/core/payment/actions/special-button/special-button.action.class.mjs +4 -4
- package/esm2020/lib/core/payment/actions/status-updated/status-updated.action.class.mjs +38 -0
- package/{esm2022 → esm2020}/lib/core/payment/actions/three-ds/three-ds.action.class.mjs +4 -4
- package/esm2020/lib/core/payment/config/config.service.mjs +37 -0
- package/{esm2022 → esm2020}/lib/core/payment/credit-card-state/credit-card-state.service.mjs +4 -4
- package/esm2020/lib/core/payment/finance-details/finance-details.service.mjs +38 -0
- package/{esm2022 → esm2020}/lib/core/payment/finance-details/status/status-finance-details-adapter.service.mjs +5 -5
- package/esm2020/lib/core/payment/finance-details/summary/summary-finance-details-adapter.service.mjs +264 -0
- package/esm2020/lib/core/payment/form/controls/control-config.service.mjs +46 -0
- package/{esm2022 → esm2020}/lib/core/payment/form/converters/birth-date/birth-date.converter.mjs +5 -5
- package/{esm2022 → esm2020}/lib/core/payment/form/converters/card-month/card-month.converter.mjs +5 -5
- package/{esm2022 → esm2020}/lib/core/payment/form/converters/card-number/card-number.converter.mjs +5 -5
- package/{esm2022 → esm2020}/lib/core/payment/form/converters/card-year/card-year.converter.mjs +5 -5
- package/{esm2022 → esm2020}/lib/core/payment/form/converters/cardholder-name/cardholder-name.converter.mjs +5 -5
- package/esm2020/lib/core/payment/form/converters/checkbox/checkbox.converter.mjs +33 -0
- package/esm2020/lib/core/payment/form/converters/converter.abstract.mjs +76 -0
- package/{esm2022 → esm2020}/lib/core/payment/form/converters/coupon/coupon.converter.mjs +5 -5
- package/{esm2022 → esm2020}/lib/core/payment/form/converters/cpf-name/cpf-name.converter.mjs +5 -5
- package/{esm2022 → esm2020}/lib/core/payment/form/converters/cpf-number/cpf-number.converter.mjs +5 -5
- package/esm2020/lib/core/payment/form/converters/cvv/cvv.converter.mjs +72 -0
- package/{esm2022 → esm2020}/lib/core/payment/form/converters/email/email.converter.mjs +5 -5
- package/{esm2022 → esm2020}/lib/core/payment/form/converters/phone.converter.mjs +5 -5
- package/{esm2022 → esm2020}/lib/core/payment/form/converters/pin/pin.converter.mjs +5 -5
- package/{esm2022 → esm2020}/lib/core/payment/form/converters/pricepoint/pricepoint.converter.mjs +5 -5
- package/{esm2022 → esm2020}/lib/core/payment/form/converters/radio-group/radio-group.converter.mjs +5 -5
- package/{esm2022 → esm2020}/lib/core/payment/form/converters/select/select.converter.mjs +5 -5
- package/esm2020/lib/core/payment/form/converters/street-number/street-number.converter.mjs +28 -0
- package/{esm2022 → esm2020}/lib/core/payment/form/converters/text/text.converter.mjs +5 -5
- package/esm2020/lib/core/payment/form/converters/zip/zip.converter.mjs +64 -0
- package/{esm2022 → esm2020}/lib/core/payment/form/form.module.mjs +33 -33
- package/esm2020/lib/core/payment/form/form.service.mjs +49 -0
- package/esm2020/lib/core/payment/form/validators/birth-date/birth-date.validator.mjs +37 -0
- package/esm2020/lib/core/payment/form/validators/card-month/card-month.validator.mjs +37 -0
- package/esm2020/lib/core/payment/form/validators/card-year/card-year.validator.mjs +34 -0
- package/esm2020/lib/core/payment/form/validators/convert.function.mjs +15 -0
- package/esm2020/lib/core/payment/form/validators/credit-card-length/credit-card-min-length.validator.mjs +32 -0
- package/esm2020/lib/core/payment/form/validators/luhn-formula-validator/luhn-formula.validator.mjs +40 -0
- package/{esm2022 → esm2020}/lib/core/payment/form/validators/validators.module.mjs +5 -5
- package/esm2020/lib/core/payment/form-messages/form-messages.service.mjs +23 -0
- package/esm2020/lib/core/payment/initialize/initialize.service.mjs +85 -0
- package/esm2020/lib/core/payment/initialize/response/initialize-response.class.mjs +43 -0
- package/esm2020/lib/core/payment/payment.service.mjs +369 -0
- package/{esm2022 → esm2020}/lib/core/payment/status/check-status/check-status.service.mjs +6 -6
- package/{esm2022 → esm2020}/lib/core/payment/status/check-status/request/check-status-request.class.mjs +1 -1
- package/esm2020/lib/core/payment/status/listen-status/listen-status.service.mjs +124 -0
- package/{esm2022 → esm2020}/lib/core/payment/status/save-payment-method-status/api/saved-payment-account-changes.service.mjs +5 -5
- package/esm2020/lib/core/payment/status/save-payment-method-status/save-payment-method-status.service.mjs +121 -0
- package/esm2020/lib/core/payment/status/status-request/request/status-request.class.mjs +22 -0
- package/esm2020/lib/core/payment/status/status-request/response/status-response.class.mjs +98 -0
- package/{esm2022 → esm2020}/lib/core/payment/status/status-request/status-request.service.mjs +6 -6
- package/esm2020/lib/core/payment/status/status.service.mjs +75 -0
- package/esm2020/lib/core/payment/status/websocket-status/websocket-status.service.mjs +76 -0
- package/esm2020/lib/core/payment/submit/request/submit-request.class.mjs +24 -0
- package/esm2020/lib/core/payment/submit/response/submit-response.class.mjs +31 -0
- package/esm2020/lib/core/payment/submit/submit.service.mjs +78 -0
- package/esm2020/lib/core/payment/sync/request/sync-request.class.mjs +31 -0
- package/esm2020/lib/core/payment/sync/response/sync-response.class.mjs +17 -0
- package/esm2020/lib/core/payment/sync/sync.service.mjs +157 -0
- package/esm2020/lib/core/payment/three-ds/api/notify-dfp-status/notify-dfp-status.service.mjs +49 -0
- package/esm2020/lib/core/payment/three-ds/api/status-three-ds/status-three-ds.service.mjs +60 -0
- package/esm2020/lib/core/payment/three-ds/dfp-collect/dfp-collect.service.mjs +105 -0
- package/esm2020/lib/core/payment/three-ds/reinsurance-check/reinsurance-check.service.mjs +41 -0
- package/esm2020/lib/core/payment/three-ds/three-ds-20/three-ds20.service.mjs +109 -0
- package/esm2020/lib/core/payment/three-ds/three-ds.service.mjs +42 -0
- package/esm2020/lib/core/payment/xps-api/xps-api.service.mjs +85 -0
- package/esm2020/lib/core/payment/xps-api-part-request.abstract.mjs +8 -0
- package/esm2020/lib/core/payment-methods/payment-methods.service.mjs +75 -0
- package/esm2020/lib/core/performance/performance.service.mjs +111 -0
- package/esm2020/lib/core/performance/xhr-action.service.mjs +114 -0
- package/esm2020/lib/core/saved-methods/saved-methods.service.mjs +54 -0
- package/esm2020/lib/core/sdk-payment-systems/apple-pay/apple-pay.service.mjs +268 -0
- package/esm2020/lib/core/sdk-payment-systems/google-pay/google-pay.service.mjs +177 -0
- package/esm2020/lib/core/sdk-payment-systems/payment-systems/payment-system-processing.service.mjs +84 -0
- package/esm2020/lib/core/session/session.service.mjs +57 -0
- package/esm2020/lib/core/settings/settings.service.mjs +92 -0
- package/esm2020/lib/core/url/url.service.mjs +34 -0
- package/esm2020/lib/core/user-agent/user-agent.service.mjs +211 -0
- package/esm2020/lib/core/user-balance/user-balance.service.mjs +53 -0
- package/esm2020/lib/core/user-behaviour-analytics/event-builder/event-builder.service.mjs +144 -0
- package/esm2020/lib/core/user-behaviour-analytics/user-behaviour-analytics.service.mjs +158 -0
- package/esm2020/lib/core/web-socket/centrifugo-web-socket.service.mjs +200 -0
- package/esm2020/lib/core/web-socket/nchan-web-socket.service.mjs +116 -0
- package/esm2020/lib/core/web-socket/web-socket.factory.mjs +28 -0
- package/esm2020/lib/core-library.module.mjs +92 -0
- package/{esm2022 → esm2020}/lib/core-library.service.mjs +5 -5
- package/{esm2022 → esm2020}/lib/shared/pipes/pipes.module.mjs +5 -5
- package/esm2020/lib/shared/pipes/unescape-html/unescape-html.pipe.mjs +23 -0
- package/fesm2015/xsolla-payment-client-core.mjs +8138 -0
- package/fesm2015/xsolla-payment-client-core.mjs.map +1 -0
- package/{fesm2022 → fesm2020}/xsolla-payment-client-core.mjs +460 -460
- package/fesm2020/xsolla-payment-client-core.mjs.map +1 -0
- package/package.json +16 -10
- package/xsolla-payment-client-core-0.2.21.tgz +0 -0
- package/esm2022/lib/core/device-finger-print/device-finger-print.service.mjs +0 -67
- package/esm2022/lib/core/encrypt-credit-card/encrypt-credit-card.service.mjs +0 -72
- package/esm2022/lib/core/errors-mapping/xps-response-errors-mapping.service.mjs +0 -52
- package/esm2022/lib/core/exceptions-handling/elk/elk-logger.service.mjs +0 -120
- package/esm2022/lib/core/exceptions-handling/errors/http-error.class.mjs +0 -40
- package/esm2022/lib/core/exceptions-handling/errors/tagged-error.class.mjs +0 -16
- package/esm2022/lib/core/http/secure-api/secure-api.service.mjs +0 -55
- package/esm2022/lib/core/legal/refund-policy.service.mjs +0 -30
- package/esm2022/lib/core/legal/secure-connection.service.mjs +0 -31
- package/esm2022/lib/core/payment/actions/next-action.service.mjs +0 -61
- package/esm2022/lib/core/payment/actions/redirect/redirect.action.class.mjs +0 -60
- package/esm2022/lib/core/payment/actions/show-fields/show-fields.action.class.mjs +0 -34
- package/esm2022/lib/core/payment/actions/status-updated/status-updated.action.class.mjs +0 -38
- package/esm2022/lib/core/payment/config/config.service.mjs +0 -37
- package/esm2022/lib/core/payment/finance-details/finance-details.service.mjs +0 -38
- package/esm2022/lib/core/payment/finance-details/summary/summary-finance-details-adapter.service.mjs +0 -264
- package/esm2022/lib/core/payment/form/controls/control-config.service.mjs +0 -46
- package/esm2022/lib/core/payment/form/converters/checkbox/checkbox.converter.mjs +0 -33
- package/esm2022/lib/core/payment/form/converters/converter.abstract.mjs +0 -76
- package/esm2022/lib/core/payment/form/converters/cvv/cvv.converter.mjs +0 -72
- package/esm2022/lib/core/payment/form/converters/street-number/street-number.converter.mjs +0 -28
- package/esm2022/lib/core/payment/form/converters/zip/zip.converter.mjs +0 -64
- package/esm2022/lib/core/payment/form/form.service.mjs +0 -49
- package/esm2022/lib/core/payment/form/validators/birth-date/birth-date.validator.mjs +0 -37
- package/esm2022/lib/core/payment/form/validators/card-month/card-month.validator.mjs +0 -37
- package/esm2022/lib/core/payment/form/validators/card-year/card-year.validator.mjs +0 -34
- package/esm2022/lib/core/payment/form/validators/convert.function.mjs +0 -15
- package/esm2022/lib/core/payment/form/validators/credit-card-length/credit-card-min-length.validator.mjs +0 -32
- package/esm2022/lib/core/payment/form/validators/luhn-formula-validator/luhn-formula.validator.mjs +0 -40
- package/esm2022/lib/core/payment/form-messages/form-messages.service.mjs +0 -26
- package/esm2022/lib/core/payment/initialize/initialize.service.mjs +0 -85
- package/esm2022/lib/core/payment/initialize/response/initialize-response.class.mjs +0 -43
- package/esm2022/lib/core/payment/payment.service.mjs +0 -369
- package/esm2022/lib/core/payment/status/listen-status/listen-status.service.mjs +0 -124
- package/esm2022/lib/core/payment/status/save-payment-method-status/save-payment-method-status.service.mjs +0 -121
- package/esm2022/lib/core/payment/status/status-request/request/status-request.class.mjs +0 -22
- package/esm2022/lib/core/payment/status/status-request/response/status-response.class.mjs +0 -98
- package/esm2022/lib/core/payment/status/status.service.mjs +0 -75
- package/esm2022/lib/core/payment/status/websocket-status/websocket-status.service.mjs +0 -76
- package/esm2022/lib/core/payment/submit/request/submit-request.class.mjs +0 -24
- package/esm2022/lib/core/payment/submit/response/submit-response.class.mjs +0 -31
- package/esm2022/lib/core/payment/submit/submit.service.mjs +0 -78
- package/esm2022/lib/core/payment/sync/request/sync-request.class.mjs +0 -31
- package/esm2022/lib/core/payment/sync/response/sync-response.class.mjs +0 -17
- package/esm2022/lib/core/payment/sync/sync.service.mjs +0 -157
- package/esm2022/lib/core/payment/three-ds/api/notify-dfp-status/notify-dfp-status.service.mjs +0 -49
- package/esm2022/lib/core/payment/three-ds/api/status-three-ds/status-three-ds.service.mjs +0 -60
- package/esm2022/lib/core/payment/three-ds/dfp-collect/dfp-collect.service.mjs +0 -105
- package/esm2022/lib/core/payment/three-ds/reinsurance-check/reinsurance-check.service.mjs +0 -41
- package/esm2022/lib/core/payment/three-ds/three-ds-20/three-ds20.service.mjs +0 -109
- package/esm2022/lib/core/payment/three-ds/three-ds.service.mjs +0 -42
- package/esm2022/lib/core/payment/xps-api/xps-api.service.mjs +0 -85
- package/esm2022/lib/core/payment/xps-api-part-request.abstract.mjs +0 -8
- package/esm2022/lib/core/payment-methods/payment-methods.service.mjs +0 -75
- package/esm2022/lib/core/performance/performance.service.mjs +0 -111
- package/esm2022/lib/core/performance/xhr-action.service.mjs +0 -114
- package/esm2022/lib/core/saved-methods/saved-methods.service.mjs +0 -54
- package/esm2022/lib/core/sdk-payment-systems/apple-pay/apple-pay.service.mjs +0 -268
- package/esm2022/lib/core/sdk-payment-systems/google-pay/google-pay.service.mjs +0 -177
- package/esm2022/lib/core/sdk-payment-systems/payment-systems/payment-system-processing.service.mjs +0 -84
- package/esm2022/lib/core/session/session.service.mjs +0 -57
- package/esm2022/lib/core/settings/settings.service.mjs +0 -92
- package/esm2022/lib/core/url/url.service.mjs +0 -34
- package/esm2022/lib/core/user-agent/user-agent.service.mjs +0 -211
- package/esm2022/lib/core/user-balance/user-balance.service.mjs +0 -53
- package/esm2022/lib/core/user-behaviour-analytics/event-builder/event-builder.service.mjs +0 -144
- package/esm2022/lib/core/user-behaviour-analytics/user-behaviour-analytics.service.mjs +0 -158
- package/esm2022/lib/core/web-socket/centrifugo-web-socket.service.mjs +0 -200
- package/esm2022/lib/core/web-socket/nchan-web-socket.service.mjs +0 -116
- package/esm2022/lib/core/web-socket/web-socket.factory.mjs +0 -28
- package/esm2022/lib/core-library.module.mjs +0 -92
- package/esm2022/lib/shared/pipes/unescape-html/unescape-html.pipe.mjs +0 -23
- package/fesm2022/xsolla-payment-client-core.mjs.map +0 -1
- package/xsolla-payment-client-core-0.2.20.tgz +0 -0
- /package/{esm2022 → esm2020}/lib/core/agreementsGroup.const.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/boolean-number.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/combined-payment-methods/combined-payment-methods.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/countries-api/country-response.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/countries-api/country.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/country/country-iso-code.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/credit-card/credit-card-settings.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/credit-card/credit-card-types.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/credit-card/credit-card.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/credit-card/credit-cards-map.const.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/credit-card/default-mask.const.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/credit-card/four-block-mask.const.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/credit-card/ordered-cards-settings.const.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/credit-card/types/american-express.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/credit-card/types/aura.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/credit-card/types/china-union-pay.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/credit-card/types/dankort.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/credit-card/types/default-card.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/credit-card/types/diners-clubs.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/credit-card/types/discover.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/credit-card/types/elo.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/credit-card/types/hipercard.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/credit-card/types/jcb.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/credit-card/types/maestro.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/credit-card/types/mastercard.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/credit-card/types/mir.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/credit-card/types/naranja.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/credit-card/types/postepay.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/credit-card/types/visa.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/deep-readonly.type.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/device-finger-print/hash.type.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/edit-saved-methods/delete-method-response.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/encrypt-credit-card/encrypted-card.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/encrypt-credit-card/open-card.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/errors-mapping/card-number-sanction-error-codes.const.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/errors-mapping/field-special-errors-map.const.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/exceptions-handling/elk/additional-info.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/exceptions-handling/elk/error-without-meta-fields.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/exceptions-handling/elk/log-message.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/exceptions-handling/errors/api-error.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/exceptions-handling/errors/app-error.class.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/exceptions-handling/errors/elk-error-types.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/exceptions-handling/errors/encrypt-card-error.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/exceptions-handling/errors/response-error.class.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/exceptions-handling/errors/terminal-error.class.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/exceptions-handling/errors/token-error.class.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/exceptions-handling/errors/ws-error.class.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/exceptions-handling/http-interceptor/http-error-data.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/exceptions-handling/http-interceptor/http-error-response-data.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/extended-window.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/http/secure-api/api-url.const.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/http/secure-api/options.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/legal/legal.component.config.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/actions/action.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/actions/check-status/check-status.action.type.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/actions/next-action.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/actions/next-actions.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/actions/redirect/pay-station4-url.const.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/actions/redirect/ps4-pages/pages-payment-methods-id.const.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/actions/redirect/ps4-pages/pages-routes.const.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/actions/redirect/redirect.action.type.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/actions/show-errors/show-errors.action.type.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/actions/show-fields/show-fields.action.type.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/actions/show-mobile-payment-screen/show-mobile-payment-screen.action.type.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/actions/show-qr-code/show-qr-code.action.type.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/actions/special-button/special-button.action.type.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/actions/status-updated/status-updated.action.type.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/actions/three-ds/three-ds.action.type.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/checkout-item.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/credit-card-payment-methods-id.variable.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/credit-card-state/credit-card-state.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/emit-data.service.abstract.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/field-names.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/field.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/finance-details/cart-item.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/finance-details/cart-line.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/finance-details/cart-summary.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/finance-details/finance-details.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/finance-details/price.helpers.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/finance-details/price.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/finance-details/status/field-with-amount-and-currency.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/finance-details/status/fields-with-currency.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/finance-details/status/finance-info.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/finance-details/summary/default-image-patterns.const.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/finance-details/summary/sales-tax-details-key.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/finance-details/vat-details-key.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/form/common-control-config.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/form/control-status.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/form/controls/card-number/card-number-control.config.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/form/controls/checkbox/checkbox-control.config.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/form/controls/control-config.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/form/controls/control-type.type.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/form/controls/coupon/coupon-control.config.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/form/controls/phone-control.config.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/form/controls/radio-control/radio-control.config.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/form/controls/radio-control/radio-option.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/form/controls/search-select/search-select-option.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/form/controls/search-select/select-control.config.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/form/controls/search-select/select-option.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/form/controls/text-control.config.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/form/converters/converters-map.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/form/converters/converters-map.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/form/converters/cpf-name/cpf-name-regex.variable.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/form/converters/cvv/cvv-form-state.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/form/converters/street-number/street-number-from-state.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/form/field-form-states.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/form/field-status.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/form/form-fields-status.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/form/form-state.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/form/input-event.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/form/validators/async-validator-fn.type.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/form/validators/coupon/coupon-validator.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/form/validators/email/email-validator.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/form/validators/is-empty-input-value.function.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/form/validators/max-length-validator.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/form/validators/min-length-validator.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/form/validators/phone-validator.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/form/validators/required/required.validator.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/form/validators/restricted-value/restricted-value.validator.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/form/validators/validation-error.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/form/validators/validation-errors.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/form/validators/validator-fn.type.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/form-response.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/initialize/initialize-request-params.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/initialize/response/initialize-response.token.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/invoice.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/payment-config.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/payment-form.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/payment.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/status/check-status/request/check-status-request.token.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/status/check-status/response/check-status-response.class.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/status/check-status/response/check-status-response.token.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/status/finance-info-field.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/status/line-item.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/status/save-payment-method-status/api/saved-payment-account-changes.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/status/save-payment-method-status/api/saved-payment-account.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/status/save-payment-method-status/save-payment-method-status.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/status/status-finance-info.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/status/status-groups.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/status/status-order.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/status/status-request/request/status-request.token.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/status/status-request/required-status-search-params.const.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/status/status-request/response/status-response.token.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/status/status-request/status-request-params.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/status/status-request/status-search-param.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/status/status-request/status-search-params.map.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/status/status-settings.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/status/status-updated.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/status/status.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/status/status.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/status/title-class.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/status/web-socket-client-type.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/status/websocket-status/websocket-status.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/submit/request/submit-request.token.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/submit/response/is-submit-response.function.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/submit/response/submit-response.token.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/sync/field-async-validation.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/sync/field-sync-state.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/sync/request/sync-request.token.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/sync/response/sync-response.token.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/three-ds/api/notify-dfp-status/request/notify-dfp-status-request.class.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/three-ds/api/notify-dfp-status/request/notify-dfp-status-request.token.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/three-ds/api/status-three-ds/request/status-three-ds-request.class.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/three-ds/api/status-three-ds/request/status-three-ds-request.token.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/three-ds/api/status-three-ds/response/status-three-ds-response.class.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/three-ds/api/status-three-ds/response/status-three-ds-response.token.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/three-ds/api/status-three-ds/status-three-ds-response.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/three-ds/api/status-three-ds/status-types.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/three-ds/api/status-three-ds/three-ds-checkout-form.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/three-ds/reinsurance-check/timer.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/three-ds/three-ds-20/status-update.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/three-ds/three-ds-form.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/three-ds/three-ds-status-websocket-types.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/virtual-currency.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/xps-api-part.abstract.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/xps-checkout.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/xps-comand.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/xps-error.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/xps-finance.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/xps-message.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/xps-purchase.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/xps-request-params.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/xps-request.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/xps-response.error.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/xps-response.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment/xps-summary.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment-methods/payment-method-api.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment-methods/payment-method.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment-methods/payment-methods-api.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment-methods/payment-methods-request-params.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment-methods/payment-methods-response.class.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment-methods/payment-methods-response.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/payment-methods/payment-methods-response.token.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/performance/xhr-action.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/properties.type.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/saved-methods/saved-method-api.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/saved-methods/saved-method.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/saved-methods/saved-methods-request-params.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/saved-methods/saved-methods-response.class.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/saved-methods/saved-methods-response.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/saved-methods/saved-methods-response.token.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/sdk-payment-systems/apple-pay/apple-pay-integration.type.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/sdk-payment-systems/apple-pay/apple-pay-params.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/sdk-payment-systems/apple-pay/apple-pay.const.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/sdk-payment-systems/apple-pay/apple-pay.errors.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/sdk-payment-systems/apple-pay/checkout-params.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/sdk-payment-systems/google-pay/google-pay-button-color.type.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/sdk-payment-systems/google-pay/google-pay-checkout.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/sdk-payment-systems/google-pay/google-pay-init-params.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/sdk-payment-systems/google-pay/google-pay-library.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/sdk-payment-systems/sdk-payment-methods.const.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/sdk-payment-systems/sdk-payment-systems-initial-data.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/sdk-payment-systems/sdk-payment-systems.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/settings/auto-redirect-on-status.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/settings/balance.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/settings/bonus.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/settings/configuration.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/settings/empty-utils-response.error.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/settings/header-type.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/settings/offer.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/settings/project.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/settings/purchase.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/settings/settings-mode.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/settings/settings.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/settings/status-back-show.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/settings/tracking-info.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/settings/user.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/settings/utils-response.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/type-guards/is-null.function.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/type-guards/is-string.function.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/type-guards/is-undefined.function.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/url/search-params.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/user-agent/browserInfo.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/user-agent/browsers.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/user-agent/device.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/user-agent/os.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/user-agent/user-agent-data.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/user-balance/user-balance-api.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/user-balance/user-balance-request-params.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/user-balance/user-balance-response.class.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/user-balance/user-balance-response.token.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/user-behaviour-analytics/event-builder/event-parameter-types.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/user-behaviour-analytics/event-builder/invoice.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/user-behaviour-analytics/event-builder/purchase.type.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/user-behaviour-analytics/event-builder/user-behaviour-event.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/user-behaviour-analytics/one-time-analytics-events.const.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/user-behaviour-analytics/user-behaviour-analytics.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/user-behaviour-analytics/user-behaviour-event/user-behaviour-event-categories.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/user-behaviour-analytics/user-behaviour-event/user-behaviour-event-types.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/user-behaviour-analytics/user-behaviour-event-name.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/user-behaviour-analytics/user-session-options.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/web-socket/web-socket-client-type.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/web-socket/web-socket.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/window.token.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/core/xps-boolean.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/public-api.mjs +0 -0
- /package/{esm2022 → esm2020}/xsolla-payment-client-core.mjs +0 -0
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import { Inject, Injectable } from '@angular/core';
|
|
2
|
-
import { interval, of, Subject } from 'rxjs';
|
|
3
|
-
import { debounce, filter, map } from 'rxjs/operators';
|
|
4
|
-
import { windowToken } from '../window.token';
|
|
5
|
-
import { defaultApiUrl, sandboxApiUrl } from '../http/secure-api/api-url.const';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
export class XhrActionService {
|
|
8
|
-
constructor(window) {
|
|
9
|
-
this.window = window;
|
|
10
|
-
this.pauseTime = 1000;
|
|
11
|
-
this.userInputEventNames = ['click', 'change'];
|
|
12
|
-
this.isXhrActionStarted = false;
|
|
13
|
-
this.apiRequestEntries = [];
|
|
14
|
-
this.cdnRequestEntries = [];
|
|
15
|
-
this.entriesSubject = new Subject();
|
|
16
|
-
}
|
|
17
|
-
getXhrAction() {
|
|
18
|
-
if (!this.window.performance || !this.window.PerformanceObserver) {
|
|
19
|
-
return of();
|
|
20
|
-
}
|
|
21
|
-
this.getUserInput().subscribe(() => this.window.performance.mark('userInput'));
|
|
22
|
-
this.getPerformance().subscribe((entry) => this.processEntry(entry));
|
|
23
|
-
return this.getPauseEvent().pipe(map(() => {
|
|
24
|
-
const event = {
|
|
25
|
-
name: this.getApiRequestName(),
|
|
26
|
-
duration: this.getDuration([
|
|
27
|
-
...this.apiRequestEntries,
|
|
28
|
-
...this.cdnRequestEntries,
|
|
29
|
-
]),
|
|
30
|
-
apiRequestCount: this.apiRequestEntries.length,
|
|
31
|
-
apiRequestDuration: this.getDuration(this.apiRequestEntries),
|
|
32
|
-
cdnRequestCount: this.cdnRequestEntries.length,
|
|
33
|
-
cdnRequestDuration: this.getDuration(this.cdnRequestEntries),
|
|
34
|
-
};
|
|
35
|
-
this.stopXhrAction();
|
|
36
|
-
return event;
|
|
37
|
-
}));
|
|
38
|
-
}
|
|
39
|
-
processEntry(entry) {
|
|
40
|
-
const isApiRequest = entry.name.includes(defaultApiUrl || sandboxApiUrl);
|
|
41
|
-
const cdnUrl = '';
|
|
42
|
-
const isCdnRequest = !isApiRequest && entry.name.startsWith(cdnUrl);
|
|
43
|
-
if (this.isXhrActionStarted && isApiRequest) {
|
|
44
|
-
this.apiRequestEntries.push(entry);
|
|
45
|
-
}
|
|
46
|
-
if (this.isXhrActionStarted && isCdnRequest) {
|
|
47
|
-
this.cdnRequestEntries.push(entry);
|
|
48
|
-
}
|
|
49
|
-
if (isApiRequest && !this.isXhrActionStarted) {
|
|
50
|
-
const userInputEntries = this.window.performance.getEntriesByName('userInput', 'mark');
|
|
51
|
-
const userInputEntry = userInputEntries[userInputEntries.length - 1];
|
|
52
|
-
if (userInputEntry) {
|
|
53
|
-
this.startXhrAction(entry);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
if (isApiRequest || isCdnRequest) {
|
|
57
|
-
this.entriesSubject.next(entry);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
startXhrAction(xhrEntry) {
|
|
61
|
-
this.isXhrActionStarted = true;
|
|
62
|
-
this.apiRequestEntries.push(xhrEntry);
|
|
63
|
-
}
|
|
64
|
-
stopXhrAction() {
|
|
65
|
-
this.isXhrActionStarted = false;
|
|
66
|
-
this.apiRequestEntries = [];
|
|
67
|
-
this.cdnRequestEntries = [];
|
|
68
|
-
}
|
|
69
|
-
getUserInput() {
|
|
70
|
-
const userInputSubject = new Subject();
|
|
71
|
-
this.userInputEventNames.forEach((eventName) => {
|
|
72
|
-
this.window.addEventListener(eventName, () => userInputSubject.next());
|
|
73
|
-
});
|
|
74
|
-
return userInputSubject;
|
|
75
|
-
}
|
|
76
|
-
getPerformance() {
|
|
77
|
-
const performanceSubject = new Subject();
|
|
78
|
-
if (this.window.PerformanceObserver) {
|
|
79
|
-
const observer = new this.window.PerformanceObserver((list) => {
|
|
80
|
-
list.getEntries().forEach((entry) => {
|
|
81
|
-
return performanceSubject.next(entry);
|
|
82
|
-
});
|
|
83
|
-
});
|
|
84
|
-
observer.observe({ entryTypes: ['resource'] });
|
|
85
|
-
}
|
|
86
|
-
return performanceSubject;
|
|
87
|
-
}
|
|
88
|
-
getApiRequestName() {
|
|
89
|
-
return this.apiRequestEntries[0].name.split(defaultApiUrl)[1].split('?')[0];
|
|
90
|
-
}
|
|
91
|
-
getDuration(entries) {
|
|
92
|
-
if (!entries.length) {
|
|
93
|
-
return 0;
|
|
94
|
-
}
|
|
95
|
-
const firstApiRequestEntry = entries.reduce((prev, current) => (prev.startTime < current.startTime ? prev : current));
|
|
96
|
-
const lastApiRequestEntry = entries.reduce((prev, current) => prev.responseEnd > current.responseEnd ? prev : current);
|
|
97
|
-
return Math.round(lastApiRequestEntry.responseEnd - firstApiRequestEntry.startTime);
|
|
98
|
-
}
|
|
99
|
-
getPauseEvent() {
|
|
100
|
-
return this.entriesSubject.pipe(debounce(() => interval(this.pauseTime)), filter(() => this.isXhrActionStarted));
|
|
101
|
-
}
|
|
102
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: XhrActionService, deps: [{ token: windowToken }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
103
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: XhrActionService, providedIn: 'root' }); }
|
|
104
|
-
}
|
|
105
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: XhrActionService, decorators: [{
|
|
106
|
-
type: Injectable,
|
|
107
|
-
args: [{
|
|
108
|
-
providedIn: 'root',
|
|
109
|
-
}]
|
|
110
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
111
|
-
type: Inject,
|
|
112
|
-
args: [windowToken]
|
|
113
|
-
}] }] });
|
|
114
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieGhyLWFjdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGF5bWVudC1jbGllbnQtY29yZS9zcmMvbGliL2NvcmUvcGVyZm9ybWFuY2UveGhyLWFjdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFLaEYsTUFBTSxPQUFPLGdCQUFnQjtJQVEzQixZQUVtQixNQUFzQjtRQUF0QixXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQVR4QixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLHdCQUFtQixHQUFhLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzdELHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUMzQixzQkFBaUIsR0FBZ0MsRUFBRSxDQUFDO1FBQ3BELHNCQUFpQixHQUFnQyxFQUFFLENBQUM7UUFDM0MsbUJBQWMsR0FBRyxJQUFJLE9BQU8sRUFBNkIsQ0FBQztJQUt4RSxDQUFDO0lBRUcsWUFBWTtRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDakUsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUNkLENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxFQUFFLENB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YmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbnRlcnZhbCwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlLCBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFhockFjdGlvbiB9IGZyb20gJy4veGhyLWFjdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRXh0ZW5kZWRXaW5kb3cgfSBmcm9tICcuLi9leHRlbmRlZC13aW5kb3cuaW50ZXJmYWNlJztcbmltcG9ydCB7IHdpbmRvd1Rva2VuIH0gZnJvbSAnLi4vd2luZG93LnRva2VuJztcbmltcG9ydCB7IGRlZmF1bHRBcGlVcmwsIHNhbmRib3hBcGlVcmwgfSBmcm9tICcuLi9odHRwL3NlY3VyZS1hcGkvYXBpLXVybC5jb25zdCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBYaHJBY3Rpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBwYXVzZVRpbWUgPSAxMDAwO1xuICBwcml2YXRlIHJlYWRvbmx5IHVzZXJJbnB1dEV2ZW50TmFtZXM6IHN0cmluZ1tdID0gWydjbGljaycsICdjaGFuZ2UnXTtcbiAgcHJpdmF0ZSBpc1hockFjdGlvblN0YXJ0ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBhcGlSZXF1ZXN0RW50cmllczogUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZ1tdID0gW107XG4gIHByaXZhdGUgY2RuUmVxdWVzdEVudHJpZXM6IFBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmdbXSA9IFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IGVudHJpZXNTdWJqZWN0ID0gbmV3IFN1YmplY3Q8UGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZz4oKTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgQEluamVjdCh3aW5kb3dUb2tlbilcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdpbmRvdzogRXh0ZW5kZWRXaW5kb3dcbiAgKSB7fVxuXG4gIHB1YmxpYyBnZXRYaHJBY3Rpb24oKTogT2JzZXJ2YWJsZTxYaHJBY3Rpb24+IHtcbiAgICBpZiAoIXRoaXMud2luZG93LnBlcmZvcm1hbmNlIHx8ICF0aGlzLndpbmRvdy5QZXJmb3JtYW5jZU9ic2VydmVyKSB7XG4gICAgICByZXR1cm4gb2YoKTtcbiAgICB9XG5cbiAgICB0aGlzLmdldFVzZXJJbnB1dCgpLnN1YnNjcmliZSgoKSA9PlxuICAgICAgdGhpcy53aW5kb3cucGVyZm9ybWFuY2UubWFyaygndXNlcklucHV0JylcbiAgICApO1xuXG4gICAgdGhpcy5nZXRQZXJmb3JtYW5jZSgpLnN1YnNjcmliZSgoZW50cnk6IFBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcpID0+XG4gICAgICB0aGlzLnByb2Nlc3NFbnRyeShlbnRyeSlcbiAgICApO1xuXG4gICAgcmV0dXJuIHRoaXMuZ2V0UGF1c2VFdmVudCgpLnBpcGUoXG4gICAgICBtYXA8UGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZywgWGhyQWN0aW9uPigoKSA9PiB7XG4gICAgICAgIGNvbnN0IGV2ZW50OiBYaHJBY3Rpb24gPSB7XG4gICAgICAgICAgbmFtZTogdGhpcy5nZXRBcGlSZXF1ZXN0TmFtZSgpLFxuICAgICAgICAgIGR1cmF0aW9uOiB0aGlzLmdldER1cmF0aW9uKFtcbiAgICAgICAgICAgIC4uLnRoaXMuYXBpUmVxdWVzdEVudHJpZXMsXG4gICAgICAgICAgICAuLi50aGlzLmNkblJlcXVlc3RFbnRyaWVzLFxuICAgICAgICAgIF0pLFxuICAgICAgICAgIGFwaVJlcXVlc3RDb3VudDogdGhpcy5hcGlSZXF1ZXN0RW50cmllcy5sZW5ndGgsXG4gICAgICAgICAgYXBpUmVxdWVzdER1cmF0aW9uOiB0aGlzLmdldER1cmF0aW9uKHRoaXMuYXBpUmVxdWVzdEVudHJpZXMpLFxuICAgICAgICAgIGNkblJlcXVlc3RDb3VudDogdGhpcy5jZG5SZXF1ZXN0RW50cmllcy5sZW5ndGgsXG4gICAgICAgICAgY2RuUmVxdWVzdER1cmF0aW9uOiB0aGlzLmdldER1cmF0aW9uKHRoaXMuY2RuUmVxdWVzdEVudHJpZXMpLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuc3RvcFhockFjdGlvbigpO1xuXG4gICAgICAgIHJldHVybiBldmVudDtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc0VudHJ5KGVudHJ5OiBQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nKTogdm9pZCB7XG4gICAgY29uc3QgaXNBcGlSZXF1ZXN0OiBib29sZWFuID0gZW50cnkubmFtZS5pbmNsdWRlcyhcbiAgICAgIGRlZmF1bHRBcGlVcmwgfHwgc2FuZGJveEFwaVVybFxuICAgICk7XG5cbiAgICBjb25zdCBjZG5VcmwgPSAnJztcbiAgICBjb25zdCBpc0NkblJlcXVlc3Q6IGJvb2xlYW4gPVxuICAgICAgIWlzQXBpUmVxdWVzdCAmJiBlbnRyeS5uYW1lLnN0YXJ0c1dpdGgoY2RuVXJsKTtcblxuICAgIGlmICh0aGlzLmlzWGhyQWN0aW9uU3RhcnRlZCAmJiBpc0FwaVJlcXVlc3QpIHtcbiAgICAgIHRoaXMuYXBpUmVxdWVzdEVudHJpZXMucHVzaChlbnRyeSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNYaHJBY3Rpb25TdGFydGVkICYmIGlzQ2RuUmVxdWVzdCkge1xuICAgICAgdGhpcy5jZG5SZXF1ZXN0RW50cmllcy5wdXNoKGVudHJ5KTtcbiAgICB9XG5cbiAgICBpZiAoaXNBcGlSZXF1ZXN0ICYmICF0aGlzLmlzWGhyQWN0aW9uU3RhcnRlZCkge1xuICAgICAgY29uc3QgdXNlcklucHV0RW50cmllczogUGVyZm9ybWFuY2VFbnRyeVtdID1cbiAgICAgICAgdGhpcy53aW5kb3cucGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5TmFtZSgndXNlcklucHV0JywgJ21hcmsnKTtcbiAgICAgIGNvbnN0IHVzZXJJbnB1dEVudHJ5OiBQZXJmb3JtYW5jZUVudHJ5ID1cbiAgICAgICAgdXNlcklucHV0RW50cmllc1t1c2VySW5wdXRFbnRyaWVzLmxlbmd0aCAtIDFdO1xuXG4gICAgICBpZiAodXNlcklucHV0RW50cnkpIHtcbiAgICAgICAgdGhpcy5zdGFydFhockFjdGlvbihlbnRyeSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGlzQXBpUmVxdWVzdCB8fCBpc0NkblJlcXVlc3QpIHtcbiAgICAgIHRoaXMuZW50cmllc1N1YmplY3QubmV4dChlbnRyeSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGFydFhockFjdGlvbih4aHJFbnRyeTogUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZyk6IHZvaWQge1xuICAgIHRoaXMuaXNYaHJBY3Rpb25TdGFydGVkID0gdHJ1ZTtcbiAgICB0aGlzLmFwaVJlcXVlc3RFbnRyaWVzLnB1c2goeGhyRW50cnkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdG9wWGhyQWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuaXNYaHJBY3Rpb25TdGFydGVkID0gZmFsc2U7XG4gICAgdGhpcy5hcGlSZXF1ZXN0RW50cmllcyA9IFtdO1xuICAgIHRoaXMuY2RuUmVxdWVzdEVudHJpZXMgPSBbXTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VXNlcklucHV0KCk6IFN1YmplY3Q8dm9pZD4ge1xuICAgIGNvbnN0IHVzZXJJbnB1dFN1YmplY3Q6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgdGhpcy51c2VySW5wdXRFdmVudE5hbWVzLmZvckVhY2goKGV2ZW50TmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICB0aGlzLndpbmRvdy5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgKCkgPT4gdXNlcklucHV0U3ViamVjdC5uZXh0KCkpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHVzZXJJbnB1dFN1YmplY3Q7XG4gIH1cblxuICBwcml2YXRlIGdldFBlcmZvcm1hbmNlKCk6IFN1YmplY3Q8UGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZz4ge1xuICAgIGNvbnN0IHBlcmZvcm1hbmNlU3ViamVjdDogU3ViamVjdDxQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nPiA9XG4gICAgICBuZXcgU3ViamVjdCgpO1xuXG4gICAgaWYgKHRoaXMud2luZG93LlBlcmZvcm1hbmNlT2JzZXJ2ZXIpIHtcbiAgICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IHRoaXMud2luZG93LlBlcmZvcm1hbmNlT2JzZXJ2ZXIoXG4gICAgICAgIChsaXN0OiBQZXJmb3JtYW5jZU9ic2VydmVyRW50cnlMaXN0KSA9PiB7XG4gICAgICAgICAgbGlzdC5nZXRFbnRyaWVzKCkuZm9yRWFjaCgoZW50cnk6IFBlcmZvcm1hbmNlRW50cnkpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIHJldHVybiBwZXJmb3JtYW5jZVN1YmplY3QubmV4dChlbnRyeSBhcyBQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZSh7IGVudHJ5VHlwZXM6IFsncmVzb3VyY2UnXSB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGVyZm9ybWFuY2VTdWJqZWN0O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBcGlSZXF1ZXN0TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmFwaVJlcXVlc3RFbnRyaWVzWzBdLm5hbWUuc3BsaXQoZGVmYXVsdEFwaVVybClbMV0uc3BsaXQoJz8nKVswXTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RHVyYXRpb24oZW50cmllczogUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZ1tdKTogbnVtYmVyIHtcbiAgICBpZiAoIWVudHJpZXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBjb25zdCBmaXJzdEFwaVJlcXVlc3RFbnRyeTogUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZyA9IGVudHJpZXMucmVkdWNlKFxuICAgICAgKHByZXYsIGN1cnJlbnQpID0+IChwcmV2LnN0YXJ0VGltZSA8IGN1cnJlbnQuc3RhcnRUaW1lID8gcHJldiA6IGN1cnJlbnQpXG4gICAgKTtcbiAgICBjb25zdCBsYXN0QXBpUmVxdWVzdEVudHJ5OiBQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nID0gZW50cmllcy5yZWR1Y2UoXG4gICAgICAocHJldiwgY3VycmVudCkgPT5cbiAgICAgICAgcHJldi5yZXNwb25zZUVuZCA+IGN1cnJlbnQucmVzcG9uc2VFbmQgPyBwcmV2IDogY3VycmVudFxuICAgICk7XG5cbiAgICByZXR1cm4gTWF0aC5yb3VuZChcbiAgICAgIGxhc3RBcGlSZXF1ZXN0RW50cnkucmVzcG9uc2VFbmQgLSBmaXJzdEFwaVJlcXVlc3RFbnRyeS5zdGFydFRpbWVcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXVzZUV2ZW50KCk6IE9ic2VydmFibGU8UGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZz4ge1xuICAgIHJldHVybiB0aGlzLmVudHJpZXNTdWJqZWN0LnBpcGUoXG4gICAgICBkZWJvdW5jZSgoKSA9PiBpbnRlcnZhbCh0aGlzLnBhdXNlVGltZSkpLFxuICAgICAgZmlsdGVyKCgpID0+IHRoaXMuaXNYaHJBY3Rpb25TdGFydGVkKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { HttpHeaders } from '@angular/common/http';
|
|
2
|
-
import { Inject, Injectable } from '@angular/core';
|
|
3
|
-
import { lastValueFrom, map } from 'rxjs';
|
|
4
|
-
import { ResponseError } from '../exceptions-handling/errors/response-error.class';
|
|
5
|
-
import { savedMethodsResponseFactoryToken, } from './saved-methods-response.token';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "../settings/settings.service";
|
|
8
|
-
import * as i2 from "../http/secure-api/secure-api.service";
|
|
9
|
-
export class SavedMethodsService {
|
|
10
|
-
constructor(responseFactory, settingsService, secureApi) {
|
|
11
|
-
this.responseFactory = responseFactory;
|
|
12
|
-
this.settingsService = settingsService;
|
|
13
|
-
this.secureApi = secureApi;
|
|
14
|
-
this.apiRoute = 'savedmethods';
|
|
15
|
-
this.cache = new Map();
|
|
16
|
-
}
|
|
17
|
-
async getList(needResetCache = false) {
|
|
18
|
-
if (needResetCache) {
|
|
19
|
-
this.cache.clear();
|
|
20
|
-
}
|
|
21
|
-
const response = await this.request();
|
|
22
|
-
return response.list;
|
|
23
|
-
}
|
|
24
|
-
async request() {
|
|
25
|
-
const requestParams = {
|
|
26
|
-
access_token: this.settingsService.token,
|
|
27
|
-
};
|
|
28
|
-
const cacheKey = JSON.stringify(requestParams);
|
|
29
|
-
if (!this.cache.has(cacheKey)) {
|
|
30
|
-
this.cache.set(cacheKey, lastValueFrom(this.secureApi
|
|
31
|
-
.post(this.apiRoute, new URLSearchParams({ ...requestParams }), {
|
|
32
|
-
headers: new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8'),
|
|
33
|
-
responseType: 'json',
|
|
34
|
-
})
|
|
35
|
-
.pipe(map((response) => this.responseFactory(response)))).catch((error) => {
|
|
36
|
-
throw new ResponseError(error.message);
|
|
37
|
-
}));
|
|
38
|
-
}
|
|
39
|
-
// @ts-expect-error the map already has the cache with key
|
|
40
|
-
return this.cache.get(cacheKey);
|
|
41
|
-
}
|
|
42
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: SavedMethodsService, deps: [{ token: savedMethodsResponseFactoryToken }, { token: i1.SettingsService }, { token: i2.SecureApiClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
43
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: SavedMethodsService, providedIn: 'root' }); }
|
|
44
|
-
}
|
|
45
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: SavedMethodsService, decorators: [{
|
|
46
|
-
type: Injectable,
|
|
47
|
-
args: [{
|
|
48
|
-
providedIn: 'root',
|
|
49
|
-
}]
|
|
50
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
51
|
-
type: Inject,
|
|
52
|
-
args: [savedMethodsResponseFactoryToken]
|
|
53
|
-
}] }, { type: i1.SettingsService }, { type: i2.SecureApiClient }] });
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZWQtbWV0aG9kcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGF5bWVudC1jbGllbnQtY29yZS9zcmMvbGliL2NvcmUvc2F2ZWQtbWV0aG9kcy9zYXZlZC1tZXRob2RzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUtuRixPQUFPLEVBRUwsZ0NBQWdDLEdBQ2pDLE1BQU0sZ0NBQWdDLENBQUM7Ozs7QUFPeEMsTUFBTSxPQUFPLG1CQUFtQjtJQUs5QixZQUVtQixlQUE0QyxFQUM1QyxlQUFnQyxFQUNoQyxTQUEwQjtRQUYxQixvQkFBZSxHQUFmLGVBQWUsQ0FBNkI7UUFDNUMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBUjVCLGFBQVEsR0FBRyxjQUFjLENBQUM7UUFFMUIsVUFBSyxHQUFHLElBQUksR0FBRyxFQUF5QyxDQUFDO0lBT3ZFLENBQUM7SUFFRyxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQWMsR0FBRyxLQUFLO1FBQ3pDLElBQUksY0FBYyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNyQixDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDdEMsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQ3ZCLENBQUM7SUFFTyxLQUFLLENBQUMsT0FBTztRQUNuQixNQUFNLGFBQWEsR0FBOEI7WUFDL0MsWUFBWSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSztTQUN6QyxDQUFDO1FBQ0YsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUUvQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FDWixRQUFRLEVBQ1IsYUFBYSxDQUNYLElBQUksQ0FBQyxTQUFTO2lCQUNYLElBQUksQ0FDSCxJQUFJLENBQUMsUUFBUSxFQUNiLElBQUksZUFBZSxDQUFDLEVBQUUsR0FBRyxhQUFhLEVBQUUsQ0FBQyxFQUN6QztnQkFDRSxPQUFPLEVBQUUsSUFBSSxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQzVCLGNBQWMsRUFDZCxrREFBa0QsQ0FDbkQ7Z0JBQ0QsWUFBWSxFQUFFLE1BQU07YUFDckIsQ0FDRjtpQkFDQSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FDM0QsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFZLEVBQUUsRUFBRTtnQkFDdkIsTUFBTSxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDekMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUM7UUFFRCwwREFBMEQ7UUFDMUQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQyxDQUFDOzhHQXBEVSxtQkFBbUIsa0JBTXBCLGdDQUFnQztrSEFOL0IsbUJBQW1CLGNBRmxCLE1BQU07OzJGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQU9JLE1BQU07MkJBQUMsZ0NBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGxhc3RWYWx1ZUZyb20sIG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUmVzcG9uc2VFcnJvciB9IGZyb20gJy4uL2V4Y2VwdGlvbnMtaGFuZGxpbmcvZXJyb3JzL3Jlc3BvbnNlLWVycm9yLmNsYXNzJztcbmltcG9ydCB7IFNlY3VyZUFwaUNsaWVudCB9IGZyb20gJy4uL2h0dHAvc2VjdXJlLWFwaS9zZWN1cmUtYXBpLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vc2V0dGluZ3Mvc2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBTYXZlZE1ldGhvZHNSZXF1ZXN0UGFyYW1zIH0gZnJvbSAnLi9zYXZlZC1tZXRob2RzLXJlcXVlc3QtcGFyYW1zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTYXZlZE1ldGhvZHNSZXNwb25zZUFwaSB9IGZyb20gJy4vc2F2ZWQtbWV0aG9kcy1yZXNwb25zZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgU2F2ZWRNZXRob2RzUmVzcG9uc2VGYWN0b3J5LFxuICBzYXZlZE1ldGhvZHNSZXNwb25zZUZhY3RvcnlUb2tlbixcbn0gZnJvbSAnLi9zYXZlZC1tZXRob2RzLXJlc3BvbnNlLnRva2VuJztcbmltcG9ydCB7IFNhdmVkTWV0aG9kc1Jlc3BvbnNlIH0gZnJvbSAnLi9zYXZlZC1tZXRob2RzLXJlc3BvbnNlLmNsYXNzJztcbmltcG9ydCB7IFNhdmVkTWV0aG9kIH0gZnJvbSAnLi9zYXZlZC1tZXRob2QuaW50ZXJmYWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNhdmVkTWV0aG9kc1NlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGFwaVJvdXRlID0gJ3NhdmVkbWV0aG9kcyc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBQcm9taXNlPFNhdmVkTWV0aG9kc1Jlc3BvbnNlPj4oKTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChzYXZlZE1ldGhvZHNSZXNwb25zZUZhY3RvcnlUb2tlbilcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlc3BvbnNlRmFjdG9yeTogU2F2ZWRNZXRob2RzUmVzcG9uc2VGYWN0b3J5LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2V0dGluZ3NTZXJ2aWNlOiBTZXR0aW5nc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZWN1cmVBcGk6IFNlY3VyZUFwaUNsaWVudFxuICApIHt9XG5cbiAgcHVibGljIGFzeW5jIGdldExpc3QobmVlZFJlc2V0Q2FjaGUgPSBmYWxzZSk6IFByb21pc2U8U2F2ZWRNZXRob2RbXT4ge1xuICAgIGlmIChuZWVkUmVzZXRDYWNoZSkge1xuICAgICAgdGhpcy5jYWNoZS5jbGVhcigpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5yZXF1ZXN0KCk7XG4gICAgcmV0dXJuIHJlc3BvbnNlLmxpc3Q7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlcXVlc3QoKTogUHJvbWlzZTxTYXZlZE1ldGhvZHNSZXNwb25zZT4ge1xuICAgIGNvbnN0IHJlcXVlc3RQYXJhbXM6IFNhdmVkTWV0aG9kc1JlcXVlc3RQYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IHRoaXMuc2V0dGluZ3NTZXJ2aWNlLnRva2VuLFxuICAgIH07XG4gICAgY29uc3QgY2FjaGVLZXkgPSBKU09OLnN0cmluZ2lmeShyZXF1ZXN0UGFyYW1zKTtcblxuICAgIGlmICghdGhpcy5jYWNoZS5oYXMoY2FjaGVLZXkpKSB7XG4gICAgICB0aGlzLmNhY2hlLnNldChcbiAgICAgICAgY2FjaGVLZXksXG4gICAgICAgIGxhc3RWYWx1ZUZyb20oXG4gICAgICAgICAgdGhpcy5zZWN1cmVBcGlcbiAgICAgICAgICAgIC5wb3N0PFNhdmVkTWV0aG9kc1Jlc3BvbnNlQXBpPihcbiAgICAgICAgICAgICAgdGhpcy5hcGlSb3V0ZSxcbiAgICAgICAgICAgICAgbmV3IFVSTFNlYXJjaFBhcmFtcyh7IC4uLnJlcXVlc3RQYXJhbXMgfSksXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJyxcbiAgICAgICAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9dXRmLTgnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnBpcGUobWFwKChyZXNwb25zZSkgPT4gdGhpcy5yZXNwb25zZUZhY3RvcnkocmVzcG9uc2UpKSlcbiAgICAgICAgKS5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICAgICAgdGhyb3cgbmV3IFJlc3BvbnNlRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgdGhlIG1hcCBhbHJlYWR5IGhhcyB0aGUgY2FjaGUgd2l0aCBrZXlcbiAgICByZXR1cm4gdGhpcy5jYWNoZS5nZXQoY2FjaGVLZXkpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,268 +0,0 @@
|
|
|
1
|
-
import { Subject } from 'rxjs';
|
|
2
|
-
import { Inject, Injectable } from '@angular/core';
|
|
3
|
-
import { applePayVersion, safariVersionForIframeIntegration, } from './apple-pay.const';
|
|
4
|
-
import { agreementsGroup } from '../../agreementsGroup.const';
|
|
5
|
-
import { windowToken } from '../../window.token';
|
|
6
|
-
import { FieldNames } from '../../payment/field-names.enum';
|
|
7
|
-
import { ApplePayErrors } from './apple-pay.errors.enum';
|
|
8
|
-
import { pagesRoutes } from '../../payment/actions/redirect/ps4-pages/pages-routes.const';
|
|
9
|
-
import { applePayId } from '../../payment/actions/redirect/ps4-pages/pages-payment-methods-id.const';
|
|
10
|
-
import { payStation4Url, sandboxPayStationUrl, } from '../../payment/actions/redirect/pay-station4-url.const';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
import * as i1 from "../../user-agent/user-agent.service";
|
|
13
|
-
import * as i2 from "../../payment/finance-details/summary/summary-finance-details-adapter.service";
|
|
14
|
-
export class ApplePayService {
|
|
15
|
-
get paymentParameters() {
|
|
16
|
-
return this.applePayParams;
|
|
17
|
-
}
|
|
18
|
-
get payment$() {
|
|
19
|
-
return this.payment.asObservable();
|
|
20
|
-
}
|
|
21
|
-
get error$() {
|
|
22
|
-
return this.error.asObservable();
|
|
23
|
-
}
|
|
24
|
-
get integrationType$() {
|
|
25
|
-
return this.integrationType.asObservable();
|
|
26
|
-
}
|
|
27
|
-
constructor(window, userAgentService, summaryFinanceDetailsAdapterService) {
|
|
28
|
-
this.window = window;
|
|
29
|
-
this.userAgentService = userAgentService;
|
|
30
|
-
this.summaryFinanceDetailsAdapterService = summaryFinanceDetailsAdapterService;
|
|
31
|
-
this.agreementFieldsNames = agreementsGroup;
|
|
32
|
-
this.payment = new Subject();
|
|
33
|
-
this.error = new Subject();
|
|
34
|
-
this.integrationType = new Subject();
|
|
35
|
-
this.paymentClient = null;
|
|
36
|
-
this.applePayParams = null;
|
|
37
|
-
this.order = null;
|
|
38
|
-
this.api = this.loadBraintree();
|
|
39
|
-
}
|
|
40
|
-
setApplePayParams(data) {
|
|
41
|
-
const formFields = data?.paymentForm?.fields;
|
|
42
|
-
const summary = data?.paymentForm?.summary;
|
|
43
|
-
if (!formFields || !summary) {
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
const fields = formFields.reduce((acc, field) => {
|
|
47
|
-
if (this.agreementFieldsNames.includes(field.name) &&
|
|
48
|
-
field.isVisible === '1') {
|
|
49
|
-
acc[field.name] = field.title;
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
acc[field.name] = field.value;
|
|
53
|
-
}
|
|
54
|
-
return acc;
|
|
55
|
-
}, {});
|
|
56
|
-
const agreements = this.agreementFieldsNames
|
|
57
|
-
.map((fieldName) => fields[fieldName])
|
|
58
|
-
.filter(Boolean);
|
|
59
|
-
this.applePayParams = {
|
|
60
|
-
tokenKey: this.getAppleToken(formFields),
|
|
61
|
-
totalLabel: fields['label_applePay'] ?? '',
|
|
62
|
-
totalAmount: this.getTotalAmount(summary),
|
|
63
|
-
currencyCode: this.getTotalCurrency(summary),
|
|
64
|
-
countryCode: fields['countryCode'] ?? '',
|
|
65
|
-
merchantCapabilities: this.getJsonValueFromField(fields, 'merchantCapabilities'),
|
|
66
|
-
supportedNetworks: this.getJsonValueFromField(fields, 'supportedNetworks'),
|
|
67
|
-
agreements: agreements,
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
async initLibrary(tokenKey) {
|
|
71
|
-
try {
|
|
72
|
-
const api = await this.api;
|
|
73
|
-
const clientInstance = await api.client.create({
|
|
74
|
-
authorization: tokenKey,
|
|
75
|
-
});
|
|
76
|
-
this.paymentClient = await api.applePay.create({
|
|
77
|
-
client: clientInstance,
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
catch (error) {
|
|
81
|
-
console.error('apple pay: initialize failed', error);
|
|
82
|
-
}
|
|
83
|
-
this.emitIntegrationType();
|
|
84
|
-
if (!this.paymentClient || !this.isDeviceCapable()) {
|
|
85
|
-
this.emitError(ApplePayErrors.deviceIsNotCapableError);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
redirectToPaymentPage(parameters, token, isSandbox) {
|
|
89
|
-
const route = pagesRoutes.get(applePayId);
|
|
90
|
-
if (!route) {
|
|
91
|
-
return;
|
|
92
|
-
}
|
|
93
|
-
const query = new URLSearchParams({
|
|
94
|
-
...parameters,
|
|
95
|
-
merchantCapabilities: JSON.stringify(parameters.merchantCapabilities),
|
|
96
|
-
supportedNetworks: JSON.stringify(parameters.supportedNetworks),
|
|
97
|
-
token,
|
|
98
|
-
agreements: JSON.stringify(parameters.agreements),
|
|
99
|
-
});
|
|
100
|
-
if (this.order) {
|
|
101
|
-
query.append('order', this.order);
|
|
102
|
-
}
|
|
103
|
-
const payStationUrl = isSandbox ? sandboxPayStationUrl : payStation4Url;
|
|
104
|
-
return `${payStationUrl}/en${route}?${query.toString()}`;
|
|
105
|
-
}
|
|
106
|
-
setOrder(data) {
|
|
107
|
-
const summary = data?.paymentForm?.summary;
|
|
108
|
-
if (!summary) {
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
|
-
const financeDetails = this.summaryFinanceDetailsAdapterService.getFinanceDetails(summary);
|
|
112
|
-
if (financeDetails?.purchase && financeDetails?.finance) {
|
|
113
|
-
const cartItems = financeDetails.cartItems;
|
|
114
|
-
this.order = cartItems?.reduce((curr, item) => {
|
|
115
|
-
if (curr) {
|
|
116
|
-
return curr + `; ${item.title}`;
|
|
117
|
-
}
|
|
118
|
-
return curr + item.title;
|
|
119
|
-
}, '');
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
proceedCheckout(parameters) {
|
|
123
|
-
if (!parameters) {
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
if (!this.paymentClient || !this.isDeviceCapable()) {
|
|
127
|
-
console.warn('apple pay: device is not capable', this.paymentClient);
|
|
128
|
-
this.emitError(ApplePayErrors.deviceIsNotCapableError);
|
|
129
|
-
return;
|
|
130
|
-
}
|
|
131
|
-
try {
|
|
132
|
-
const paymentRequest = this.paymentClient.createPaymentRequest({
|
|
133
|
-
total: {
|
|
134
|
-
label: parameters.totalLabel,
|
|
135
|
-
amount: parameters.totalAmount,
|
|
136
|
-
},
|
|
137
|
-
currencyCode: parameters.currencyCode,
|
|
138
|
-
countryCode: parameters.countryCode,
|
|
139
|
-
merchantCapabilities: parameters.merchantCapabilities,
|
|
140
|
-
supportedNetworks: parameters.supportedNetworks,
|
|
141
|
-
});
|
|
142
|
-
const session = new this.window.ApplePaySession(applePayVersion, paymentRequest);
|
|
143
|
-
session.onvalidatemerchant = (event) => {
|
|
144
|
-
console.info('apple pay: merchant validation', event);
|
|
145
|
-
this.paymentClient
|
|
146
|
-
?.performValidation({
|
|
147
|
-
validationURL: event.validationURL,
|
|
148
|
-
displayName: parameters?.totalLabel,
|
|
149
|
-
})
|
|
150
|
-
.then((merchantSession) => {
|
|
151
|
-
session.completeMerchantValidation(merchantSession);
|
|
152
|
-
})
|
|
153
|
-
.catch((error) => {
|
|
154
|
-
console.error('apple pay: merchant validation error', error);
|
|
155
|
-
this.emitError(ApplePayErrors.paymentError);
|
|
156
|
-
session.abort();
|
|
157
|
-
});
|
|
158
|
-
};
|
|
159
|
-
session.onpaymentauthorized = (event) => {
|
|
160
|
-
console.info('apple pay: payment authorization', event);
|
|
161
|
-
this.paymentClient
|
|
162
|
-
?.tokenize({
|
|
163
|
-
token: event.payment.token,
|
|
164
|
-
})
|
|
165
|
-
.then((authorizationResponse) => {
|
|
166
|
-
this.payment.next(authorizationResponse?.nonce ?? '');
|
|
167
|
-
session.completePayment(this.window.ApplePaySession.STATUS_SUCCESS);
|
|
168
|
-
})
|
|
169
|
-
.catch((error) => {
|
|
170
|
-
console.error('apple pay: payment authorization error', error);
|
|
171
|
-
this.emitError(ApplePayErrors.paymentError);
|
|
172
|
-
session.completePayment(this.window.ApplePaySession.STATUS_FAILURE);
|
|
173
|
-
});
|
|
174
|
-
};
|
|
175
|
-
session.oncancel = (event) => {
|
|
176
|
-
this.emitError(ApplePayErrors.paymentError);
|
|
177
|
-
console.error('apple pay: user cancel payment', event);
|
|
178
|
-
};
|
|
179
|
-
session.begin();
|
|
180
|
-
}
|
|
181
|
-
catch (error) {
|
|
182
|
-
console.error('apple pay: checkout error', error);
|
|
183
|
-
this.emitError(ApplePayErrors.paymentError);
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
isDeviceCapable() {
|
|
187
|
-
try {
|
|
188
|
-
return Boolean(this.window.ApplePaySession?.supportsVersion(applePayVersion) &&
|
|
189
|
-
this.window.ApplePaySession?.canMakePayments());
|
|
190
|
-
}
|
|
191
|
-
catch (error) {
|
|
192
|
-
return false;
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
getTokenNonceFieldData(tokenNonce) {
|
|
196
|
-
const name = FieldNames.tokenApplePay;
|
|
197
|
-
const value = btoa(tokenNonce);
|
|
198
|
-
return { name, value };
|
|
199
|
-
}
|
|
200
|
-
updateApplePayParams(data) {
|
|
201
|
-
const summary = data?.summary;
|
|
202
|
-
if (!this.applePayParams || !summary) {
|
|
203
|
-
return;
|
|
204
|
-
}
|
|
205
|
-
this.applePayParams.totalAmount = this.getTotalAmount(summary);
|
|
206
|
-
this.applePayParams.currencyCode = this.getTotalCurrency(summary);
|
|
207
|
-
}
|
|
208
|
-
async loadBraintree() {
|
|
209
|
-
const api = await import('braintree-web');
|
|
210
|
-
return api;
|
|
211
|
-
}
|
|
212
|
-
getAppleToken(formFields) {
|
|
213
|
-
const appleTokenField = formFields.find((field) => {
|
|
214
|
-
return field.name === 'token_key';
|
|
215
|
-
});
|
|
216
|
-
if (!appleTokenField) {
|
|
217
|
-
return '';
|
|
218
|
-
}
|
|
219
|
-
return appleTokenField.value;
|
|
220
|
-
}
|
|
221
|
-
getTotalAmount(summary) {
|
|
222
|
-
const finance = summary?.finance;
|
|
223
|
-
const total = finance?.grand_total?.amount ?? finance?.total.amount;
|
|
224
|
-
return total?.toString() ?? '';
|
|
225
|
-
}
|
|
226
|
-
getTotalCurrency(summary) {
|
|
227
|
-
const finance = summary?.finance;
|
|
228
|
-
return finance?.grand_total?.currency ?? finance?.total?.currency ?? '';
|
|
229
|
-
}
|
|
230
|
-
getJsonValueFromField(fields, fieldName) {
|
|
231
|
-
const field = fields[fieldName];
|
|
232
|
-
try {
|
|
233
|
-
return field ? JSON.parse(field) : undefined;
|
|
234
|
-
}
|
|
235
|
-
catch (error) {
|
|
236
|
-
return undefined;
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
emitError(error) {
|
|
240
|
-
this.error.next(error);
|
|
241
|
-
}
|
|
242
|
-
emitIntegrationType() {
|
|
243
|
-
let integrationType;
|
|
244
|
-
if (this.paymentClient && this.isDeviceCapable()) {
|
|
245
|
-
integrationType = 'redirect';
|
|
246
|
-
}
|
|
247
|
-
else {
|
|
248
|
-
integrationType = 'none';
|
|
249
|
-
}
|
|
250
|
-
this.integrationType.next(integrationType);
|
|
251
|
-
}
|
|
252
|
-
canUseSdk() {
|
|
253
|
-
return !!(this.userAgentService.safariVersion &&
|
|
254
|
-
this.userAgentService.safariVersion >= safariVersionForIframeIntegration);
|
|
255
|
-
}
|
|
256
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ApplePayService, deps: [{ token: windowToken }, { token: i1.UserAgentService }, { token: i2.SummaryFinanceDetailsAdapterService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
257
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ApplePayService, providedIn: 'root' }); }
|
|
258
|
-
}
|
|
259
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ApplePayService, decorators: [{
|
|
260
|
-
type: Injectable,
|
|
261
|
-
args: [{
|
|
262
|
-
providedIn: 'root',
|
|
263
|
-
}]
|
|
264
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
265
|
-
type: Inject,
|
|
266
|
-
args: [windowToken]
|
|
267
|
-
}] }, { type: i1.UserAgentService }, { type: i2.SummaryFinanceDetailsAdapterService }] });
|
|
268
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGUtcGF5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wYXltZW50LWNsaWVudC1jb3JlL3NyYy9saWIvY29yZS9zZGstcGF5bWVudC1zeXN0ZW1zL2FwcGxlLXBheS9hcHBsZS1wYXkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFDTCxlQUFlLEVBQ2YsaUNBQWlDLEdBQ2xDLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBSTlELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUMxRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUVBQXlFLENBQUM7QUFHckcsT0FBTyxFQUNMLGNBQWMsRUFDZCxvQkFBb0IsR0FDckIsTUFBTSx1REFBdUQsQ0FBQzs7OztBQUsvRCxNQUFNLE9BQU8sZUFBZTtJQWdCMUIsSUFBVyxpQkFBaUI7UUFDMUIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFXLE1BQU07UUFDZixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJ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QWMsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDO0lBRU8sU0FBUyxDQUFDLEtBQXFCO1FBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFTyxtQkFBbUI7UUFDekIsSUFBSSxlQUFvQyxDQUFDO1FBRXpDLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQztZQUNqRCxlQUFlLEdBQUcsVUFBVSxDQUFDO1FBQy9CLENBQUM7YUFBTSxDQUFDO1lBQ04sZUFBZSxHQUFHLE1BQU0sQ0FBQztRQUMzQixDQUFDO1FBRUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVPLFNBQVM7UUFDZixPQUFPLENBQUMsQ0FBQyxDQUNQLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhO1lBQ25DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLElBQUksaUNBQWlDLENBQ3pFLENBQUM7SUFDSixDQUFDOzhHQXJVVSxlQUFlLGtCQWlDaEIsV0FBVztrSEFqQ1YsZUFBZSxjQUZkLE1BQU07OzJGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFrQ0ksTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwbGVQYXksIGFwcGxlUGF5LCBjbGllbnQgfSBmcm9tICdicmFpbnRyZWUtd2ViJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgYXBwbGVQYXlWZXJzaW9uLFxuICBzYWZhcmlWZXJzaW9uRm9ySWZyYW1lSW50ZWdyYXRpb24sXG59IGZyb20gJy4vYXBwbGUtcGF5LmNvbnN0JztcbmltcG9ydCB7IGFncmVlbWVudHNHcm91cCB9IGZyb20gJy4uLy4uL2FncmVlbWVudHNHcm91cC5jb25zdCc7XG5pbXBvcnQgeyBBcHBsZVBheVBhcmFtcyB9IGZyb20gJy4vYXBwbGUtcGF5LXBhcmFtcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmllbGQgfSBmcm9tICcuLi8uLi9wYXltZW50L2ZpZWxkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBFeHRlbmRlZFdpbmRvdyB9IGZyb20gJy4uLy4uL2V4dGVuZGVkLXdpbmRvdy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgd2luZG93VG9rZW4gfSBmcm9tICcuLi8uLi93aW5kb3cudG9rZW4nO1xuaW1wb3J0IHsgWHBzUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9wYXltZW50L3hwcy1yZXNwb25zZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmllbGROYW1lcyB9IGZyb20gJy4uLy4uL3BheW1lbnQvZmllbGQtbmFtZXMuZW51bSc7XG5pbXBvcnQgeyBBcHBsZVBheUVycm9ycyB9IGZyb20gJy4vYXBwbGUtcGF5LmVycm9ycy5lbnVtJztcbmltcG9ydCB7IFVzZXJBZ2VudFNlcnZpY2UgfSBmcm9tICcuLi8uLi91c2VyLWFnZW50L3VzZXItYWdlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBsZVBheUludGVncmF0aW9uIH0gZnJvbSAnLi9hcHBsZS1wYXktaW50ZWdyYXRpb24udHlwZSc7XG5pbXBvcnQgeyBwYWdlc1JvdXRlcyB9IGZyb20gJy4uLy4uL3BheW1lbnQvYWN0aW9ucy9yZWRpcmVjdC9wczQtcGFnZXMvcGFnZXMtcm91dGVzLmNvbnN0JztcbmltcG9ydCB7IGFwcGxlUGF5SWQgfSBmcm9tICcuLi8uLi9wYXltZW50L2FjdGlvbnMvcmVkaXJlY3QvcHM0LXBhZ2VzL3BhZ2VzLXBheW1lbnQtbWV0aG9kcy1pZC5jb25zdCc7XG5pbXBvcnQgeyBJbml0aWFsaXplUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9wYXltZW50L2luaXRpYWxpemUvcmVzcG9uc2UvaW5pdGlhbGl6ZS1yZXNwb25zZS5jbGFzcyc7XG5pbXBvcnQgeyBTdW1tYXJ5RmluYW5jZURldGFpbHNBZGFwdGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3BheW1lbnQvZmluYW5jZS1kZXRhaWxzL3N1bW1hcnkvc3VtbWFyeS1maW5hbmNlLWRldGFpbHMtYWRhcHRlci5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIHBheVN0YXRpb240VXJsLFxuICBzYW5kYm94UGF5U3RhdGlvblVybCxcbn0gZnJvbSAnLi4vLi4vcGF5bWVudC9hY3Rpb25zL3JlZGlyZWN0L3BheS1zdGF0aW9uNC11cmwuY29uc3QnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQXBwbGVQYXlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBhZ3JlZW1lbnRGaWVsZHNOYW1lczogc3RyaW5nW10gPSBhZ3JlZW1lbnRzR3JvdXA7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGF5bWVudDogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBlcnJvcjogU3ViamVjdDxBcHBsZVBheUVycm9ycz4gPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IGludGVncmF0aW9uVHlwZTogU3ViamVjdDxBcHBsZVBheUludGVncmF0aW9uPiA9XG4gICAgbmV3IFN1YmplY3QoKTtcblxuICBwcml2YXRlIHBheW1lbnRDbGllbnQ6IEFwcGxlUGF5IHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBhcGk6IFByb21pc2U8e1xuICAgIGFwcGxlUGF5OiB0eXBlb2YgYXBwbGVQYXk7XG4gICAgY2xpZW50OiB0eXBlb2YgY2xpZW50O1xuICB9PjtcbiAgcHJpdmF0ZSBhcHBsZVBheVBhcmFtczogQXBwbGVQYXlQYXJhbXMgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBvcmRlcj86IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyBnZXQgcGF5bWVudFBhcmFtZXRlcnMoKTogQXBwbGVQYXlQYXJhbXMgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5hcHBsZVBheVBhcmFtcztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGF5bWVudCQoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5wYXltZW50LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBlcnJvciQoKTogT2JzZXJ2YWJsZTxBcHBsZVBheUVycm9ycz4ge1xuICAgIHJldHVybiB0aGlzLmVycm9yLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBpbnRlZ3JhdGlvblR5cGUkKCk6IE9ic2VydmFibGU8QXBwbGVQYXlJbnRlZ3JhdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmludGVncmF0aW9uVHlwZS5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KHdpbmRvd1Rva2VuKSBwcml2YXRlIHJlYWRvbmx5IHdpbmRvdzogRXh0ZW5kZWRXaW5kb3csXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyQWdlbnRTZXJ2aWNlOiBVc2VyQWdlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3VtbWFyeUZpbmFuY2VEZXRhaWxzQWRhcHRlclNlcnZpY2U6IFN1bW1hcnlGaW5hbmNlRGV0YWlsc0FkYXB0ZXJTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuYXBpID0gdGhpcy5sb2FkQnJhaW50cmVlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0QXBwbGVQYXlQYXJhbXMoZGF0YTogdW5rbm93bik6IHZvaWQge1xuICAgIGNvbnN0IGZvcm1GaWVsZHMgPSAoZGF0YSBhcyBJbml0aWFsaXplUmVzcG9uc2UpPy5wYXltZW50Rm9ybT8uZmllbGRzO1xuICAgIGNvbnN0IHN1bW1hcnkgPSAoZGF0YSBhcyBJbml0aWFsaXplUmVzcG9uc2UpPy5wYXltZW50Rm9ybT8uc3VtbWFyeTtcblxuICAgIGlmICghZm9ybUZpZWxkcyB8fCAhc3VtbWFyeSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmaWVsZHMgPSBmb3JtRmllbGRzLnJlZHVjZShcbiAgICAgIChhY2M6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0sIGZpZWxkKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLmFncmVlbWVudEZpZWxkc05hbWVzLmluY2x1ZGVzKGZpZWxkLm5hbWUpICYmXG4gICAgICAgICAgZmllbGQuaXNWaXNpYmxlID09PSAnMSdcbiAgICAgICAgKSB7XG4gICAgICAgICAgYWNjW2ZpZWxkLm5hbWVdID0gZmllbGQudGl0bGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWNjW2ZpZWxkLm5hbWVdID0gZmllbGQudmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSxcbiAgICAgIHt9XG4gICAgKTtcblxuICAgIGNvbnN0IGFncmVlbWVudHMgPSB0aGlzLmFncmVlbWVudEZpZWxkc05hbWVzXG4gICAgICAubWFwKChmaWVsZE5hbWUpID0+IGZpZWxkc1tmaWVsZE5hbWUgYXMga2V5b2YgdHlwZW9mIGZpZWxkc10gYXMgc3RyaW5nKVxuICAgICAgLmZpbHRlcihCb29sZWFuKTtcblxuICAgIHRoaXMuYXBwbGVQYXlQYXJhbXMgPSB7XG4gICAgICB0b2tlbktleTogdGhpcy5nZXRBcHBsZVRva2VuKGZvcm1GaWVsZHMpLFxuICAgICAgdG90YWxMYWJlbDogZmllbGRzWydsYWJlbF9hcHBsZVBheSddID8/ICcnLFxuICAgICAgdG90YWxBbW91bnQ6IHRoaXMuZ2V0VG90YWxBbW91bnQoc3VtbWFyeSksXG4gICAgICBjdXJyZW5jeUNvZGU6IHRoaXMuZ2V0VG90YWxDdXJyZW5jeShzdW1tYXJ5KSxcbiAgICAgIGNvdW50cnlDb2RlOiBmaWVsZHNbJ2NvdW50cnlDb2RlJ10gPz8gJycsXG4gICAgICBtZXJjaGFudENhcGFiaWxpdGllczogdGhpcy5nZXRKc29uVmFsdWVGcm9tRmllbGQoXG4gICAgICAgIGZpZWxkcyxcbiAgICAgICAgJ21lcmNoYW50Q2FwYWJpbGl0aWVzJ1xuICAgICAgKSxcbiAgICAgIHN1cHBvcnRlZE5ldHdvcmtzOiB0aGlzLmdldEpzb25WYWx1ZUZyb21GaWVsZChcbiAgICAgICAgZmllbGRzLFxuICAgICAgICAnc3VwcG9ydGVkTmV0d29ya3MnXG4gICAgICApLFxuICAgICAgYWdyZWVtZW50czogYWdyZWVtZW50cyxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGluaXRMaWJyYXJ5KHRva2VuS2V5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYXBpID0gYXdhaXQgdGhpcy5hcGk7XG4gICAgICBjb25zdCBjbGllbnRJbnN0YW5jZSA9IGF3YWl0IGFwaS5jbGllbnQuY3JlYXRlKHtcbiAgICAgICAgYXV0aG9yaXphdGlvbjogdG9rZW5LZXksXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5wYXltZW50Q2xpZW50ID0gYXdhaXQgYXBpLmFwcGxlUGF5LmNyZWF0ZSh7XG4gICAgICAgIGNsaWVudDogY2xpZW50SW5zdGFuY2UsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgY29uc29sZS5lcnJvcignYXBwbGUgcGF5OiBpbml0aWFsaXplIGZhaWxlZCcsIGVycm9yKTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXRJbnRlZ3JhdGlvblR5cGUoKTtcblxuICAgIGlmICghdGhpcy5wYXltZW50Q2xpZW50IHx8ICF0aGlzLmlzRGV2aWNlQ2FwYWJsZSgpKSB7XG4gICAgICB0aGlzLmVtaXRFcnJvcihBcHBsZVBheUVycm9ycy5kZXZpY2VJc05vdENhcGFibGVFcnJvcik7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlZGlyZWN0VG9QYXltZW50UGFnZShcbiAgICBwYXJhbWV0ZXJzOiBBcHBsZVBheVBhcmFtcyxcbiAgICB0b2tlbjogc3RyaW5nLFxuICAgIGlzU2FuZGJveD86IGJvb2xlYW5cbiAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCByb3V0ZSA9IHBhZ2VzUm91dGVzLmdldChhcHBsZVBheUlkKTtcbiAgICBpZiAoIXJvdXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcXVlcnkgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHtcbiAgICAgIC4uLnBhcmFtZXRlcnMsXG4gICAgICBtZXJjaGFudENhcGFiaWxpdGllczogSlNPTi5zdHJpbmdpZnkocGFyYW1ldGVycy5tZXJjaGFudENhcGFiaWxpdGllcyksXG4gICAgICBzdXBwb3J0ZWROZXR3b3JrczogSlNPTi5zdHJpbmdpZnkocGFyYW1ldGVycy5zdXBwb3J0ZWROZXR3b3JrcyksXG4gICAgICB0b2tlbixcbiAgICAgIGFncmVlbWVudHM6IEpTT04uc3RyaW5naWZ5KHBhcmFtZXRlcnMuYWdyZWVtZW50cyksXG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5vcmRlcikge1xuICAgICAgcXVlcnkuYXBwZW5kKCdvcmRlcicsIHRoaXMub3JkZXIpO1xuICAgIH1cblxuICAgIGNvbnN0IHBheVN0YXRpb25VcmwgPSBpc1NhbmRib3ggPyBzYW5kYm94UGF5U3RhdGlvblVybCA6IHBheVN0YXRpb240VXJsO1xuICAgIHJldHVybiBgJHtwYXlTdGF0aW9uVXJsfS9lbiR7cm91dGV9PyR7cXVlcnkudG9TdHJpbmcoKX1gO1xuICB9XG5cbiAgcHVibGljIHNldE9yZGVyKGRhdGE6IHVua25vd24pOiB2b2lkIHtcbiAgICBjb25zdCBzdW1tYXJ5ID0gKGRhdGEgYXMgSW5pdGlhbGl6ZVJlc3BvbnNlKT8ucGF5bWVudEZvcm0/LnN1bW1hcnk7XG4gICAgaWYgKCFzdW1tYXJ5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGZpbmFuY2VEZXRhaWxzID1cbiAgICAgIHRoaXMuc3VtbWFyeUZpbmFuY2VEZXRhaWxzQWRhcHRlclNlcnZpY2UuZ2V0RmluYW5jZURldGFpbHMoc3VtbWFyeSk7XG5cbiAgICBpZiAoZmluYW5jZURldGFpbHM/LnB1cmNoYXNlICYmIGZpbmFuY2VEZXRhaWxzPy5maW5hbmNlKSB7XG4gICAgICBjb25zdCBjYXJ0SXRlbXMgPSBmaW5hbmNlRGV0YWlscy5jYXJ0SXRlbXM7XG4gICAgICB0aGlzLm9yZGVyID0gY2FydEl0ZW1zPy5yZWR1Y2UoKGN1cnIsIGl0ZW0pID0+IHtcbiAgICAgICAgaWYgKGN1cnIpIHtcbiAgICAgICAgICByZXR1cm4gY3VyciArIGA7ICR7aXRlbS50aXRsZX1gO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGN1cnIgKyBpdGVtLnRpdGxlO1xuICAgICAgfSwgJycpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBwcm9jZWVkQ2hlY2tvdXQocGFyYW1ldGVycz86IEFwcGxlUGF5UGFyYW1zKTogdm9pZCB7XG4gICAgaWYgKCFwYXJhbWV0ZXJzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnBheW1lbnRDbGllbnQgfHwgIXRoaXMuaXNEZXZpY2VDYXBhYmxlKCkpIHtcbiAgICAgIGNvbnNvbGUud2FybignYXBwbGUgcGF5OiBkZXZpY2UgaXMgbm90IGNhcGFibGUnLCB0aGlzLnBheW1lbnRDbGllbnQpO1xuICAgICAgdGhpcy5lbWl0RXJyb3IoQXBwbGVQYXlFcnJvcnMuZGV2aWNlSXNOb3RDYXBhYmxlRXJyb3IpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXltZW50UmVxdWVzdCA9IHRoaXMucGF5bWVudENsaWVudC5jcmVhdGVQYXltZW50UmVxdWVzdCh7XG4gICAgICAgIHRvdGFsOiB7XG4gICAgICAgICAgbGFiZWw6IHBhcmFtZXRlcnMudG90YWxMYWJlbCxcbiAgICAgICAgICBhbW91bnQ6IHBhcmFtZXRlcnMudG90YWxBbW91bnQsXG4gICAgICAgIH0sXG4gICAgICAgIGN1cnJlbmN5Q29kZTogcGFyYW1ldGVycy5jdXJyZW5jeUNvZGUsXG4gICAgICAgIGNvdW50cnlDb2RlOiBwYXJhbWV0ZXJzLmNvdW50cnlDb2RlLFxuICAgICAgICBtZXJjaGFudENhcGFiaWxpdGllczogcGFyYW1ldGVycy5tZXJjaGFudENhcGFiaWxpdGllcyxcbiAgICAgICAgc3VwcG9ydGVkTmV0d29ya3M6IHBhcmFtZXRlcnMuc3VwcG9ydGVkTmV0d29ya3MsXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgc2Vzc2lvbiA9IG5ldyB0aGlzLndpbmRvdy5BcHBsZVBheVNlc3Npb24oXG4gICAgICAgIGFwcGxlUGF5VmVyc2lvbixcbiAgICAgICAgcGF5bWVudFJlcXVlc3RcbiAgICAgICk7XG5cbiAgICAgIHNlc3Npb24ub252YWxpZGF0ZW1lcmNoYW50ID0gKGV2ZW50OiB7IHZhbGlkYXRpb25VUkw6IHN0cmluZyB9KSA9PiB7XG4gICAgICAgIGNvbnNvbGUuaW5mbygnYXBwbGUgcGF5OiBtZXJjaGFudCB2YWxpZGF0aW9uJywgZXZlbnQpO1xuICAgICAgICB0aGlzLnBheW1lbnRDbGllbnRcbiAgICAgICAgICA/LnBlcmZvcm1WYWxpZGF0aW9uKHtcbiAgICAgICAgICAgIHZhbGlkYXRpb25VUkw6IGV2ZW50LnZhbGlkYXRpb25VUkwsXG4gICAgICAgICAgICBkaXNwbGF5TmFtZTogcGFyYW1ldGVycz8udG90YWxMYWJlbCxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC50aGVuKChtZXJjaGFudFNlc3Npb24pID0+IHtcbiAgICAgICAgICAgIHNlc3Npb24uY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24obWVyY2hhbnRTZXNzaW9uKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ2FwcGxlIHBheTogbWVyY2hhbnQgdmFsaWRhdGlvbiBlcnJvcicsIGVycm9yKTtcbiAgICAgICAgICAgIHRoaXMuZW1pdEVycm9yKEFwcGxlUGF5RXJyb3JzLnBheW1lbnRFcnJvcik7XG4gICAgICAgICAgICBzZXNzaW9uLmFib3J0KCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9O1xuXG4gICAgICBzZXNzaW9uLm9ucGF5bWVudGF1dGhvcml6ZWQgPSAoZXZlbnQ6IHsgcGF5bWVudDogeyB0b2tlbjogc3RyaW5nIH0gfSkgPT4ge1xuICAgICAgICBjb25zb2xlLmluZm8oJ2FwcGxlIHBheTogcGF5bWVudCBhdXRob3JpemF0aW9uJywgZXZlbnQpO1xuICAgICAgICB0aGlzLnBheW1lbnRDbGllbnRcbiAgICAgICAgICA/LnRva2VuaXplKHtcbiAgICAgICAgICAgIHRva2VuOiBldmVudC5wYXltZW50LnRva2VuLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnRoZW4oKGF1dGhvcml6YXRpb25SZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wYXltZW50Lm5leHQoYXV0aG9yaXphdGlvblJlc3BvbnNlPy5ub25jZSA/PyAnJyk7XG4gICAgICAgICAgICBzZXNzaW9uLmNvbXBsZXRlUGF5bWVudCh0aGlzLndpbmRvdy5BcHBsZVBheVNlc3Npb24uU1RBVFVTX1NVQ0NFU1MpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignYXBwbGUgcGF5OiBwYXltZW50IGF1dGhvcml6YXRpb24gZXJyb3InLCBlcnJvcik7XG4gICAgICAgICAgICB0aGlzLmVtaXRFcnJvcihBcHBsZVBheUVycm9ycy5wYXltZW50RXJyb3IpO1xuICAgICAgICAgICAgc2Vzc2lvbi5jb21wbGV0ZVBheW1lbnQodGhpcy53aW5kb3cuQXBwbGVQYXlTZXNzaW9uLlNUQVRVU19GQUlMVVJFKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIHNlc3Npb24ub25jYW5jZWwgPSAoZXZlbnQ6IHVua25vd24pID0+IHtcbiAgICAgICAgdGhpcy5lbWl0RXJyb3IoQXBwbGVQYXlFcnJvcnMucGF5bWVudEVycm9yKTtcbiAgICAgICAgY29uc29sZS5lcnJvcignYXBwbGUgcGF5OiB1c2VyIGNhbmNlbCBwYXltZW50JywgZXZlbnQpO1xuICAgICAgfTtcblxuICAgICAgc2Vzc2lvbi5iZWdpbigpO1xuICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdhcHBsZSBwYXk6IGNoZWNrb3V0IGVycm9yJywgZXJyb3IpO1xuICAgICAgdGhpcy5lbWl0RXJyb3IoQXBwbGVQYXlFcnJvcnMucGF5bWVudEVycm9yKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNEZXZpY2VDYXBhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gQm9vbGVhbihcbiAgICAgICAgdGhpcy53aW5kb3cuQXBwbGVQYXlTZXNzaW9uPy5zdXBwb3J0c1ZlcnNpb24oYXBwbGVQYXlWZXJzaW9uKSAmJlxuICAgICAgICAgIHRoaXMud2luZG93LkFwcGxlUGF5U2Vzc2lvbj8uY2FuTWFrZVBheW1lbnRzKClcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0VG9rZW5Ob25jZUZpZWxkRGF0YSh0b2tlbk5vbmNlOiBzdHJpbmcpOiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gIH0ge1xuICAgIGNvbnN0IG5hbWUgPSBGaWVsZE5hbWVzLnRva2VuQXBwbGVQYXk7XG4gICAgY29uc3QgdmFsdWUgPSBidG9hKHRva2VuTm9uY2UpO1xuICAgIHJldHVybiB7IG5hbWUsIHZhbHVlIH07XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQXBwbGVQYXlQYXJhbXMoZGF0YTogdW5rbm93bik6IHZvaWQge1xuICAgIGNvbnN0IHN1bW1hcnkgPSAoZGF0YSBhcyBYcHNSZXNwb25zZSk/LnN1bW1hcnk7XG4gICAgaWYgKCF0aGlzLmFwcGxlUGF5UGFyYW1zIHx8ICFzdW1tYXJ5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5hcHBsZVBheVBhcmFtcy50b3RhbEFtb3VudCA9IHRoaXMuZ2V0VG90YWxBbW91bnQoc3VtbWFyeSk7XG4gICAgdGhpcy5hcHBsZVBheVBhcmFtcy5jdXJyZW5jeUNvZGUgPSB0aGlzLmdldFRvdGFsQ3VycmVuY3koc3VtbWFyeSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWRCcmFpbnRyZWUoKTogUHJvbWlzZTx7XG4gICAgYXBwbGVQYXk6IHR5cGVvZiBhcHBsZVBheTtcbiAgICBjbGllbnQ6IHR5cGVvZiBjbGllbnQ7XG4gIH0+IHtcbiAgICBjb25zdCBhcGkgPSBhd2FpdCBpbXBvcnQoJ2JyYWludHJlZS13ZWInKTtcblxuICAgIHJldHVybiBhcGk7XG4gIH1cblxuICBwcml2YXRlIGdldEFwcGxlVG9rZW4oZm9ybUZpZWxkczogRmllbGRbXSk6IHN0cmluZyB7XG4gICAgY29uc3QgYXBwbGVUb2tlbkZpZWxkID0gZm9ybUZpZWxkcy5maW5kKChmaWVsZCkgPT4ge1xuICAgICAgcmV0dXJuIGZpZWxkLm5hbWUgPT09ICd0b2tlbl9rZXknO1xuICAgIH0pO1xuXG4gICAgaWYgKCFhcHBsZVRva2VuRmllbGQpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICByZXR1cm4gYXBwbGVUb2tlbkZpZWxkLnZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUb3RhbEFtb3VudChzdW1tYXJ5OiBYcHNSZXNwb25zZVsnc3VtbWFyeSddKTogc3RyaW5nIHtcbiAgICBjb25zdCBmaW5hbmNlID0gc3VtbWFyeT8uZmluYW5jZTtcbiAgICBjb25zdCB0b3RhbCA9IGZpbmFuY2U/LmdyYW5kX3RvdGFsPy5hbW91bnQgPz8gZmluYW5jZT8udG90YWwuYW1vdW50O1xuXG4gICAgcmV0dXJuIHRvdGFsPy50b1N0cmluZygpID8/ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUb3RhbEN1cnJlbmN5KHN1bW1hcnk6IFhwc1Jlc3BvbnNlWydzdW1tYXJ5J10pOiBzdHJpbmcge1xuICAgIGNvbnN0IGZpbmFuY2UgPSBzdW1tYXJ5Py5maW5hbmNlO1xuICAgIHJldHVybiBmaW5hbmNlPy5ncmFuZF90b3RhbD8uY3VycmVuY3kgPz8gZmluYW5jZT8udG90YWw/LmN1cnJlbmN5ID8/ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRKc29uVmFsdWVGcm9tRmllbGQoXG4gICAgZmllbGRzOiB7XG4gICAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gICAgfSxcbiAgICBmaWVsZE5hbWU6IHN0cmluZ1xuICApOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZmllbGQgPSBmaWVsZHNbZmllbGROYW1lXTtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZmllbGQgPyAoSlNPTi5wYXJzZShmaWVsZCkgYXMgc3RyaW5nW10pIDogdW5kZWZpbmVkO1xuICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZW1pdEVycm9yKGVycm9yOiBBcHBsZVBheUVycm9ycyk6IHZvaWQge1xuICAgIHRoaXMuZXJyb3IubmV4dChlcnJvcik7XG4gIH1cblxuICBwcml2YXRlIGVtaXRJbnRlZ3JhdGlvblR5cGUoKTogdm9pZCB7XG4gICAgbGV0IGludGVncmF0aW9uVHlwZTogQXBwbGVQYXlJbnRlZ3JhdGlvbjtcblxuICAgIGlmICh0aGlzLnBheW1lbnRDbGllbnQgJiYgdGhpcy5pc0RldmljZUNhcGFibGUoKSkge1xuICAgICAgaW50ZWdyYXRpb25UeXBlID0gJ3JlZGlyZWN0JztcbiAgICB9IGVsc2Uge1xuICAgICAgaW50ZWdyYXRpb25UeXBlID0gJ25vbmUnO1xuICAgIH1cblxuICAgIHRoaXMuaW50ZWdyYXRpb25UeXBlLm5leHQoaW50ZWdyYXRpb25UeXBlKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FuVXNlU2RrKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIShcbiAgICAgIHRoaXMudXNlckFnZW50U2VydmljZS5zYWZhcmlWZXJzaW9uICYmXG4gICAgICB0aGlzLnVzZXJBZ2VudFNlcnZpY2Uuc2FmYXJpVmVyc2lvbiA+PSBzYWZhcmlWZXJzaW9uRm9ySWZyYW1lSW50ZWdyYXRpb25cbiAgICApO1xuICB9XG59XG4iXX0=
|